Use FB_R_SOF2 only to detect direct FB writes
Fixes flashing video in Virtua Fighter 3tb
This commit is contained in:
parent
74844c8940
commit
05f461c3c5
|
@ -88,10 +88,8 @@ cResetEvent rs, re;
|
|||
int max_idx,max_mvo,max_op,max_pt,max_tr,max_vtx,max_modt, ovrn;
|
||||
|
||||
static bool render_called = false;
|
||||
u32 fb1_watch_addr_start;
|
||||
u32 fb1_watch_addr_end;
|
||||
u32 fb2_watch_addr_start;
|
||||
u32 fb2_watch_addr_end;
|
||||
u32 fb_watch_addr_start;
|
||||
u32 fb_watch_addr_end;
|
||||
bool fb_dirty;
|
||||
|
||||
TA_context* _pvrrc;
|
||||
|
@ -558,10 +556,8 @@ void rend_vblank()
|
|||
void check_framebuffer_write()
|
||||
{
|
||||
u32 fb_size = (FB_R_SIZE.fb_y_size + 1) * (FB_R_SIZE.fb_x_size + FB_R_SIZE.fb_modulus) * 4;
|
||||
fb1_watch_addr_start = FB_R_SOF1 & VRAM_MASK;
|
||||
fb1_watch_addr_end = fb1_watch_addr_start + fb_size;
|
||||
fb2_watch_addr_start = FB_R_SOF2 & VRAM_MASK;
|
||||
fb2_watch_addr_end = fb2_watch_addr_start + fb_size;
|
||||
fb_watch_addr_start = FB_R_SOF2 & VRAM_MASK;
|
||||
fb_watch_addr_end = fb_watch_addr_start + fb_size;
|
||||
}
|
||||
|
||||
void rend_cancel_emu_wait()
|
||||
|
|
|
@ -61,10 +61,8 @@ Renderer* rend_GL4();
|
|||
Renderer* rend_norend();
|
||||
Renderer* rend_softrend();
|
||||
|
||||
extern u32 fb1_watch_addr_start;
|
||||
extern u32 fb1_watch_addr_end;
|
||||
extern u32 fb2_watch_addr_start;
|
||||
extern u32 fb2_watch_addr_end;
|
||||
extern u32 fb_watch_addr_start;
|
||||
extern u32 fb_watch_addr_end;
|
||||
extern bool fb_dirty;
|
||||
|
||||
void check_framebuffer_write();
|
||||
|
|
|
@ -233,9 +233,7 @@ void DYNACALL pvr_write_area1_8(u32 addr,u8 data)
|
|||
void DYNACALL pvr_write_area1_16(u32 addr,u16 data)
|
||||
{
|
||||
u32 vaddr = addr & VRAM_MASK;
|
||||
if (!fb_dirty
|
||||
&& ((vaddr >= fb1_watch_addr_start && vaddr < fb1_watch_addr_end)
|
||||
|| (vaddr >= fb2_watch_addr_start && vaddr < fb2_watch_addr_end)))
|
||||
if (!fb_dirty && vaddr >= fb_watch_addr_start && vaddr < fb_watch_addr_end)
|
||||
{
|
||||
fb_dirty = true;
|
||||
}
|
||||
|
@ -244,9 +242,7 @@ void DYNACALL pvr_write_area1_16(u32 addr,u16 data)
|
|||
void DYNACALL pvr_write_area1_32(u32 addr,u32 data)
|
||||
{
|
||||
u32 vaddr = addr & VRAM_MASK;
|
||||
if (!fb_dirty
|
||||
&& ((vaddr >= fb1_watch_addr_start && vaddr < fb1_watch_addr_end)
|
||||
|| (vaddr >= fb2_watch_addr_start && vaddr < fb2_watch_addr_end)))
|
||||
if (!fb_dirty && vaddr >= fb_watch_addr_start && vaddr < fb_watch_addr_end)
|
||||
{
|
||||
fb_dirty = true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue