Ignore odd/even mode when loading VGA latches on memory read. Fixes Jazz Jackrabbit.
This commit is contained in:
parent
6602a32304
commit
25ac41fbde
1 changed files with 14 additions and 5 deletions
|
|
@ -921,6 +921,7 @@ uint8_t svga_read(uint32_t addr, void *p)
|
||||||
{
|
{
|
||||||
svga_t *svga = (svga_t *)p;
|
svga_t *svga = (svga_t *)p;
|
||||||
uint8_t temp, temp2, temp3, temp4;
|
uint8_t temp, temp2, temp3, temp4;
|
||||||
|
uint32_t latch_addr;
|
||||||
int readplane = svga->readplane;
|
int readplane = svga->readplane;
|
||||||
|
|
||||||
cycles -= video_timing_b;
|
cycles -= video_timing_b;
|
||||||
|
|
@ -931,6 +932,8 @@ uint8_t svga_read(uint32_t addr, void *p)
|
||||||
addr &= svga->banked_mask;
|
addr &= svga->banked_mask;
|
||||||
addr += svga->read_bank;
|
addr += svga->read_bank;
|
||||||
|
|
||||||
|
latch_addr = (addr << 2) & 0x7fffff;
|
||||||
|
|
||||||
// pclog("%05X %i %04X:%04X %02X %02X %i\n",addr,svga->chain4,CS,pc, vram[addr & 0x7fffff], vram[(addr << 2) & 0x7fffff], svga->readmode);
|
// pclog("%05X %i %04X:%04X %02X %02X %i\n",addr,svga->chain4,CS,pc, vram[addr & 0x7fffff], vram[(addr << 2) & 0x7fffff], svga->readmode);
|
||||||
// pclog("%i\n", svga->readmode);
|
// pclog("%i\n", svga->readmode);
|
||||||
if (svga->chain4 || svga->fb_only)
|
if (svga->chain4 || svga->fb_only)
|
||||||
|
|
@ -953,11 +956,17 @@ uint8_t svga_read(uint32_t addr, void *p)
|
||||||
|
|
||||||
if (addr >= svga->vram_limit)
|
if (addr >= svga->vram_limit)
|
||||||
return 0xff;
|
return 0xff;
|
||||||
|
|
||||||
svga->la = svga->vram[addr];
|
if (latch_addr < svga->vram_limit)
|
||||||
svga->lb = svga->vram[addr | 0x1];
|
{
|
||||||
svga->lc = svga->vram[addr | 0x2];
|
svga->la = svga->vram[latch_addr];
|
||||||
svga->ld = svga->vram[addr | 0x3];
|
svga->lb = svga->vram[latch_addr | 0x1];
|
||||||
|
svga->lc = svga->vram[latch_addr | 0x2];
|
||||||
|
svga->ld = svga->vram[latch_addr | 0x3];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
svga->la = svga->lb = svga->lc = svga->ld = 0xff;
|
||||||
|
|
||||||
if (svga->readmode)
|
if (svga->readmode)
|
||||||
{
|
{
|
||||||
temp = (svga->colournocare & 1) ? 0xff : 0;
|
temp = (svga->colournocare & 1) ? 0xff : 0;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue