make swap_buffers parameter take effect for subsequent frame, instead of previous frame, contrary to intuition and good sense. fixes some dual screen games which have been w/z broken for ages
This commit is contained in:
parent
ccff2d3149
commit
08714ea7f2
|
@ -25,6 +25,12 @@
|
|||
|
||||
//#define FLUSHMODE_HACK
|
||||
|
||||
//---------------
|
||||
//TODO TODO TODO TODO
|
||||
//make up mind once and for all whether fog, toon, etc. should reside in memory buffers (for easier handling in MMU)
|
||||
//if they do, then we need to copy them out in doFlush!!!
|
||||
//---------------
|
||||
|
||||
#include <algorithm>
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
|
@ -1944,8 +1950,7 @@ void gfx3d_execute3D()
|
|||
void gfx3d_glFlush(u32 v)
|
||||
{
|
||||
//printf("-------------FLUSH------------- (vcount=%d\n",nds.VCount);
|
||||
gfx3d.state.sortmode = BIT0(v);
|
||||
gfx3d.state.wbuffer = BIT1(v);
|
||||
gfx3d.state.pendingFlushCommand = v;
|
||||
#if 0
|
||||
if (isSwapBuffers)
|
||||
{
|
||||
|
@ -2007,8 +2012,12 @@ static void gfx3d_doFlush()
|
|||
gfx3d.state.enableFog = BIT7(control);
|
||||
gfx3d.state.enableClearImage = BIT14(control);
|
||||
gfx3d.state.fogShift = (control>>8)&0xF;
|
||||
gfx3d.state.sortmode = BIT0(gfx3d.state.activeFlushCommand);
|
||||
gfx3d.state.wbuffer = BIT1(gfx3d.state.activeFlushCommand);
|
||||
|
||||
gfx3d.renderState = gfx3d.state;
|
||||
|
||||
gfx3d.state.activeFlushCommand = gfx3d.state.pendingFlushCommand;
|
||||
|
||||
int polycount = polylist->count;
|
||||
|
||||
|
@ -2308,6 +2317,8 @@ SFORMAT SF_GFX3D[]={
|
|||
{ "GST3", 4, 32, gfx3d.state.rgbToonTable},
|
||||
{ "GSST", 4, 128, &gfx3d.state.shininessTable[0]},
|
||||
{ "GSSI", 4, 1, &shininessInd},
|
||||
{ "GSAF", 4, 1, &gfx3d.state.activeFlushCommand},
|
||||
{ "GSPF", 4, 1, &gfx3d.state.pendingFlushCommand},
|
||||
//------------------------
|
||||
{ "GTST", 4, 1, &triStripToggle},
|
||||
{ "GTVC", 4, 1, &tempVertInfo.count},
|
||||
|
|
|
@ -311,6 +311,8 @@ struct GFX3D_State
|
|||
, fogOffset(0)
|
||||
, fogShift(0)
|
||||
, invalidateToon(true)
|
||||
, activeFlushCommand(0)
|
||||
, pendingFlushCommand(0)
|
||||
{
|
||||
for(u32 i=0;i<ARRAY_SIZE(shininessTable);i++)
|
||||
shininessTable[i] = 0;
|
||||
|
@ -328,6 +330,8 @@ struct GFX3D_State
|
|||
|
||||
BOOL wbuffer, sortmode;
|
||||
u8 alphaTestRef;
|
||||
u32 activeFlushCommand;
|
||||
u32 pendingFlushCommand;
|
||||
|
||||
u32 clearDepth;
|
||||
u32 clearColor;
|
||||
|
|
Loading…
Reference in New Issue