Mask Voodoo depth buffer accesses and SGRAM fills correctly.
Bad CMDFIFO packets are now ignored instead of killing the emulator. NFS III now works on V2 in 1024x768.
This commit is contained in:
parent
e6b4f88065
commit
577d37b2af
1 changed files with 3 additions and 3 deletions
|
|
@ -2716,7 +2716,7 @@ static void voodoo_half_triangle(voodoo_t *voodoo, voodoo_params_t *params, vood
|
|||
goto next_line;
|
||||
|
||||
state->fb_mem = fb_mem = &voodoo->fb_mem[params->draw_offset + (real_y * voodoo->row_width)];
|
||||
state->aux_mem = aux_mem = &voodoo->fb_mem[params->aux_offset + (real_y * voodoo->row_width)];
|
||||
state->aux_mem = aux_mem = &voodoo->fb_mem[(params->aux_offset + (real_y * voodoo->row_width)) & voodoo->fb_mask];
|
||||
|
||||
if (voodoo_output)
|
||||
pclog("%03i: x=%08x x2=%08x xstart=%08x xend=%08x dx=%08x start_x2=%08x\n", state->y, x, x2, state->xstart, state->xend, dx, start_x2);
|
||||
|
|
@ -3857,7 +3857,7 @@ skip_pixel_fill:
|
|||
size_x = voodoo->bltSizeX & 0x1ff;
|
||||
}
|
||||
|
||||
dst = (uint64_t *)&voodoo->fb_mem[dst_y*512*8 + dst_x*8];
|
||||
dst = (uint64_t *)&voodoo->fb_mem[(dst_y*512*8 + dst_x*8) & voodoo->fb_mask];
|
||||
|
||||
for (x = 0; x <= size_x; x++)
|
||||
dst[x] = dat64;
|
||||
|
|
@ -6303,7 +6303,7 @@ static void fifo_thread(void *param)
|
|||
break;
|
||||
|
||||
default:
|
||||
fatal("Bad CMDFIFO packet %08x %08x\n", header, voodoo->cmdfifo_rp);
|
||||
pclog("Bad CMDFIFO packet %08x %08x\n", header, voodoo->cmdfifo_rp);
|
||||
}
|
||||
|
||||
end_time = timer_read();
|
||||
|
|
|
|||
Loading…
Reference in a new issue