mirror of
https://github.com/dborth/snes9xgx.git
synced 2025-01-12 19:29:08 +01:00
- video patch 4
- new render mode: unfiltered - keeps preferred video mode but turns off AA and texture filtering
This commit is contained in:
parent
0c6743e4f7
commit
d7c0d42004
@ -240,8 +240,12 @@ PreferencesMenu ()
|
|||||||
sprintf (prefmenu[11], "C-Stick Zoom %s",
|
sprintf (prefmenu[11], "C-Stick Zoom %s",
|
||||||
GCSettings.NGCZoom == true ? " ON" : "OFF");
|
GCSettings.NGCZoom == true ? " ON" : "OFF");
|
||||||
|
|
||||||
sprintf (prefmenu[12], "Render Mode %s",
|
if ( GCSettings.render == 0 )
|
||||||
GCSettings.render == true ? "Filtered" : "Original");
|
sprintf (prefmenu[12], "Render Mode Original");
|
||||||
|
if ( GCSettings.render == 1 )
|
||||||
|
sprintf (prefmenu[12], "Render Mode Filtered");
|
||||||
|
if ( GCSettings.render == 2 )
|
||||||
|
sprintf (prefmenu[12], "Render Mode Unfiltered");
|
||||||
|
|
||||||
sprintf (prefmenu[13], "Widescreen %s",
|
sprintf (prefmenu[13], "Widescreen %s",
|
||||||
GCSettings.widescreen == true ? "ON" : "OFF");
|
GCSettings.widescreen == true ? "ON" : "OFF");
|
||||||
@ -301,12 +305,16 @@ PreferencesMenu ()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 12:
|
case 12:
|
||||||
GCSettings.render ^= 1;
|
GCSettings.render++;
|
||||||
|
if (GCSettings.render > 2 ) GCSettings.render = 0;
|
||||||
|
|
||||||
|
extern bool progressive;
|
||||||
|
if (GCSettings.render==0 && progressive) GCSettings.render++; // don't do original render mode if progressive video mode detected
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 13:
|
case 13:
|
||||||
GCSettings.widescreen ^= 1;
|
GCSettings.widescreen ^= 1;
|
||||||
if (!GCSettings.render) GCSettings.widescreen = 0; // don't allow on original render modes
|
//if (!GCSettings.render) GCSettings.widescreen = 0; // don't allow on original render modes
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 14:
|
case 14:
|
||||||
|
@ -51,7 +51,7 @@ struct SGCSettings{
|
|||||||
char smbshare[20];
|
char smbshare[20];
|
||||||
int NGCZoom; // 0 - off, 1 - on
|
int NGCZoom; // 0 - off, 1 - on
|
||||||
int VerifySaves;
|
int VerifySaves;
|
||||||
int render; // 0 - original, 1 - filtered
|
int render; // 0 - original, 1 - filtered, 2 - unfiltered
|
||||||
int Superscope;
|
int Superscope;
|
||||||
int Mouse;
|
int Mouse;
|
||||||
int Justifier;
|
int Justifier;
|
||||||
|
@ -52,6 +52,7 @@ int vwidth, vheight, oldvwidth, oldvheight;
|
|||||||
u32 FrameTimer = 0;
|
u32 FrameTimer = 0;
|
||||||
|
|
||||||
u8 vmode_60hz = 0;
|
u8 vmode_60hz = 0;
|
||||||
|
bool progressive = 0;
|
||||||
|
|
||||||
#define HASPECT 320
|
#define HASPECT 320
|
||||||
#define VASPECT 240
|
#define VASPECT 240
|
||||||
@ -463,78 +464,36 @@ InitGCVideo ()
|
|||||||
|
|
||||||
|
|
||||||
// get default video mode
|
// get default video mode
|
||||||
|
|
||||||
vmode = VIDEO_GetPreferredMode(NULL);
|
vmode = VIDEO_GetPreferredMode(NULL);
|
||||||
|
|
||||||
switch (vmode->viTVMode >> 2)
|
switch (vmode->viTVMode >> 2)
|
||||||
{
|
{
|
||||||
case VI_PAL: /* 576 lines (PAL 50Hz) */
|
case VI_PAL:
|
||||||
|
// 576 lines (PAL 50Hz)
|
||||||
// set video signal mode
|
// display should be centered vertically (borders)
|
||||||
TV_239p.viTVMode = VI_TVMODE_PAL_DS;
|
|
||||||
TV_478i.viTVMode = VI_TVMODE_PAL_INT;
|
|
||||||
TV_224p.viTVMode = VI_TVMODE_PAL_DS;
|
|
||||||
TV_448i.viTVMode = VI_TVMODE_PAL_INT;
|
|
||||||
// set VI sizing
|
|
||||||
//TV_239p.viWidth = TV_478i.viWidth = TV_224p.viWidth = TV_448i.viWidth = 640;
|
|
||||||
//TV_239p.viHeight = TV_478i.viHeight = TV_224p.viHeight = TV_448i.viHeight = 480;
|
|
||||||
TV_239p.viXOrigin = TV_478i.viXOrigin = TV_224p.viXOrigin = TV_448i.viXOrigin = (VI_MAX_WIDTH_PAL - 640)/2;
|
|
||||||
TV_239p.viYOrigin = TV_478i.viYOrigin = (VI_MAX_HEIGHT_PAL/2 - 478/2)/2;
|
|
||||||
TV_224p.viYOrigin = TV_448i.viYOrigin = (VI_MAX_HEIGHT_PAL/2 - 448/2)/2;
|
|
||||||
|
|
||||||
vmode_60hz = 0;
|
|
||||||
|
|
||||||
/* display should be centered vertically (borders) */
|
|
||||||
vmode = &TVPal574IntDfScale;
|
vmode = &TVPal574IntDfScale;
|
||||||
vmode->xfbHeight = 480;
|
vmode->xfbHeight = 480;
|
||||||
vmode->viYOrigin = (VI_MAX_HEIGHT_PAL - 480)/2;
|
vmode->viYOrigin = (VI_MAX_HEIGHT_PAL - 480)/2;
|
||||||
vmode->viHeight = 480;
|
vmode->viHeight = 480;
|
||||||
|
|
||||||
|
vmode_60hz = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VI_NTSC: /* 480 lines (NTSC 60hz) */
|
case VI_NTSC:
|
||||||
|
// 480 lines (NTSC 60hz)
|
||||||
// set video signal mode
|
|
||||||
TV_239p.viTVMode = VI_TVMODE_NTSC_DS;
|
|
||||||
TV_478i.viTVMode = VI_TVMODE_NTSC_INT;
|
|
||||||
TV_224p.viTVMode = VI_TVMODE_NTSC_DS;
|
|
||||||
TV_448i.viTVMode = VI_TVMODE_NTSC_INT;
|
|
||||||
// set VI sizing
|
|
||||||
//TV_239p.viWidth = TV_478i.viWidth = TV_224p.viWidth = TV_448i.viWidth = 640;
|
|
||||||
//TV_239p.viHeight = TV_478i.viHeight = TV_224p.viHeight = TV_448i.viHeight = 480;
|
|
||||||
TV_239p.viXOrigin = TV_224p.viXOrigin = TV_478i.viXOrigin = TV_448i.viXOrigin = (VI_MAX_WIDTH_NTSC - 640)/2;
|
|
||||||
TV_239p.viYOrigin = TV_478i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 478/2)/2;
|
|
||||||
TV_224p.viYOrigin = TV_448i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 448/2)/2;
|
|
||||||
|
|
||||||
vmode_60hz = 1;
|
vmode_60hz = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* 480 lines (PAL 60Hz) */
|
default:
|
||||||
|
// 480 lines (PAL 60Hz)
|
||||||
// set video signal mode
|
|
||||||
TV_239p.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_NON_INTERLACE);
|
|
||||||
TV_478i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE);
|
|
||||||
TV_224p.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_NON_INTERLACE);
|
|
||||||
TV_448i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE);
|
|
||||||
// set VI sizing
|
|
||||||
//TV_239p.viWidth = TV_478i.viWidth = TV_224p.viWidth = TV_448i.viWidth = 640;
|
|
||||||
//TV_239p.viHeight = TV_478i.viHeight = TV_224p.viHeight = TV_448i.viHeight = 480;
|
|
||||||
TV_239p.viXOrigin = TV_224p.viXOrigin = TV_478i.viXOrigin = TV_448i.viXOrigin = (VI_MAX_WIDTH_NTSC - 640)/2;
|
|
||||||
TV_239p.viYOrigin = TV_478i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 478/2)/2;
|
|
||||||
TV_224p.viYOrigin = TV_448i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 448/2)/2;
|
|
||||||
|
|
||||||
vmode_60hz = 1;
|
vmode_60hz = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for progressive scan
|
// check for progressive scan
|
||||||
if (vmode->viTVMode == VI_TVMODE_NTSC_PROG) {
|
if (vmode->viTVMode == VI_TVMODE_NTSC_PROG)
|
||||||
TV_239p.viTVMode = TV_478i.viTVMode = TV_224p.viTVMode = TV_448i.viTVMode = VI_TVMODE_NTSC_PROG;
|
progressive = true;
|
||||||
TV_239p.xfbMode = TV_478i.xfbMode = TV_224p.xfbMode = TV_448i.xfbMode = VI_XFBMODE_SF;
|
|
||||||
TV_239p.xfbHeight = TV_478i.xfbHeight = TV_224p.xfbHeight = TV_448i.xfbHeight = 480;
|
|
||||||
TV_239p.viHeight = TV_478i.viHeight = TV_224p.viHeight = TV_448i.viHeight = 480;
|
|
||||||
TV_239p.viYOrigin = TV_478i.viYOrigin = TV_224p.viYOrigin = TV_448i.viYOrigin = (VI_MAX_HEIGHT_PAL/2 - 480/2)/2;
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_Configure (vmode);
|
VIDEO_Configure (vmode);
|
||||||
|
|
||||||
@ -586,20 +545,78 @@ ResetVideo_Emu ()
|
|||||||
GXRModeObj *rmode;
|
GXRModeObj *rmode;
|
||||||
Mtx p;
|
Mtx p;
|
||||||
|
|
||||||
if (!GCSettings.render) // original render mode
|
switch (vmode->viTVMode >> 2)
|
||||||
|
{
|
||||||
|
case VI_PAL: /* 576 lines (PAL 50Hz) */
|
||||||
|
|
||||||
|
// set video signal mode
|
||||||
|
TV_239p.viTVMode = VI_TVMODE_PAL_DS;
|
||||||
|
TV_478i.viTVMode = VI_TVMODE_PAL_INT;
|
||||||
|
TV_224p.viTVMode = VI_TVMODE_PAL_DS;
|
||||||
|
TV_448i.viTVMode = VI_TVMODE_PAL_INT;
|
||||||
|
// set VI sizing
|
||||||
|
//TV_239p.viWidth = TV_478i.viWidth = TV_224p.viWidth = TV_448i.viWidth = 640;
|
||||||
|
//TV_239p.viHeight = TV_478i.viHeight = TV_224p.viHeight = TV_448i.viHeight = 480;
|
||||||
|
TV_239p.viXOrigin = TV_478i.viXOrigin = TV_224p.viXOrigin = TV_448i.viXOrigin = (VI_MAX_WIDTH_PAL - 640)/2;
|
||||||
|
TV_239p.viYOrigin = TV_478i.viYOrigin = (VI_MAX_HEIGHT_PAL/2 - 478/2)/2;
|
||||||
|
TV_224p.viYOrigin = TV_448i.viYOrigin = (VI_MAX_HEIGHT_PAL/2 - 448/2)/2;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VI_NTSC: /* 480 lines (NTSC 60hz) */
|
||||||
|
|
||||||
|
// set video signal mode
|
||||||
|
TV_239p.viTVMode = VI_TVMODE_NTSC_DS;
|
||||||
|
TV_478i.viTVMode = VI_TVMODE_NTSC_INT;
|
||||||
|
TV_224p.viTVMode = VI_TVMODE_NTSC_DS;
|
||||||
|
TV_448i.viTVMode = VI_TVMODE_NTSC_INT;
|
||||||
|
// set VI sizing
|
||||||
|
//TV_239p.viWidth = TV_478i.viWidth = TV_224p.viWidth = TV_448i.viWidth = 640;
|
||||||
|
//TV_239p.viHeight = TV_478i.viHeight = TV_224p.viHeight = TV_448i.viHeight = 480;
|
||||||
|
TV_239p.viXOrigin = TV_224p.viXOrigin = TV_478i.viXOrigin = TV_448i.viXOrigin = (VI_MAX_WIDTH_NTSC - 640)/2;
|
||||||
|
TV_239p.viYOrigin = TV_478i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 478/2)/2;
|
||||||
|
TV_224p.viYOrigin = TV_448i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 448/2)/2;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* 480 lines (PAL 60Hz) */
|
||||||
|
|
||||||
|
// set video signal mode
|
||||||
|
TV_239p.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_NON_INTERLACE);
|
||||||
|
TV_478i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE);
|
||||||
|
TV_224p.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_NON_INTERLACE);
|
||||||
|
TV_448i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE);
|
||||||
|
// set VI sizing
|
||||||
|
//TV_239p.viWidth = TV_478i.viWidth = TV_224p.viWidth = TV_448i.viWidth = 640;
|
||||||
|
//TV_239p.viHeight = TV_478i.viHeight = TV_224p.viHeight = TV_448i.viHeight = 480;
|
||||||
|
TV_239p.viXOrigin = TV_224p.viXOrigin = TV_478i.viXOrigin = TV_448i.viXOrigin = (VI_MAX_WIDTH_NTSC - 640)/2;
|
||||||
|
TV_239p.viYOrigin = TV_478i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 478/2)/2;
|
||||||
|
TV_224p.viYOrigin = TV_448i.viYOrigin = (VI_MAX_HEIGHT_NTSC/2 - 448/2)/2;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (GCSettings.render == 0) // original render mode
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<4; i++) {
|
for (i=0; i<4; i++) {
|
||||||
if (tvmodes[i]->efbHeight == vheight) {
|
if (tvmodes[i]->efbHeight == vheight) {
|
||||||
// FIX: fix this fix ...
|
// FIX: ok?
|
||||||
tvmodes[i]->fbWidth = vwidth; // update width - some games are 512x224 (super pang)
|
tvmodes[i]->fbWidth = vwidth; // update width - some games are 512x224 (super pang)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rmode = tvmodes[i];
|
rmode = tvmodes[i];
|
||||||
}
|
}
|
||||||
else
|
else if (GCSettings.render == 2) // unfiltered
|
||||||
|
{
|
||||||
|
rmode = vmode;
|
||||||
|
}
|
||||||
|
else // filtered
|
||||||
|
{
|
||||||
rmode = vmode; // same mode as menu
|
rmode = vmode; // same mode as menu
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
VIDEO_Configure (rmode);
|
VIDEO_Configure (rmode);
|
||||||
@ -616,7 +633,7 @@ ResetVideo_Emu ()
|
|||||||
|
|
||||||
GX_SetDispCopySrc (0, 0, rmode->fbWidth, rmode->efbHeight);
|
GX_SetDispCopySrc (0, 0, rmode->fbWidth, rmode->efbHeight);
|
||||||
GX_SetDispCopyDst (rmode->fbWidth, rmode->xfbHeight);
|
GX_SetDispCopyDst (rmode->fbWidth, rmode->xfbHeight);
|
||||||
GX_SetCopyFilter (rmode->aa, rmode->sample_pattern, GCSettings.render ? GX_TRUE : GX_FALSE, rmode->vfilter);
|
GX_SetCopyFilter (rmode->aa, rmode->sample_pattern, (GCSettings.render == 1) ? GX_TRUE : GX_FALSE, rmode->vfilter); // AA on only for filtered mode
|
||||||
|
|
||||||
GX_SetFieldMode (rmode->field_rendering, ((rmode->viHeight == 2 * rmode->xfbHeight) ? GX_ENABLE : GX_DISABLE));
|
GX_SetFieldMode (rmode->field_rendering, ((rmode->viHeight == 2 * rmode->xfbHeight) ? GX_ENABLE : GX_DISABLE));
|
||||||
GX_SetPixelFmt (GX_PF_RGB8_Z24, GX_ZC_LINEAR);
|
GX_SetPixelFmt (GX_PF_RGB8_Z24, GX_ZC_LINEAR);
|
||||||
@ -626,8 +643,6 @@ ResetVideo_Emu ()
|
|||||||
guOrtho(p, rmode->efbHeight/2, -(rmode->efbHeight/2), -(rmode->fbWidth/2), rmode->fbWidth/2, 10, 1000); // matrix, t, b, l, r, n, f
|
guOrtho(p, rmode->efbHeight/2, -(rmode->efbHeight/2), -(rmode->fbWidth/2), rmode->fbWidth/2, 10, 1000); // matrix, t, b, l, r, n, f
|
||||||
GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC);
|
GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC);
|
||||||
|
|
||||||
// clear snes9x render screen
|
|
||||||
//memset (snes9xgfx, 0, 1024 * 512 * 2);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// DEBUG
|
// DEBUG
|
||||||
@ -733,7 +748,7 @@ update_video (int width, int height)
|
|||||||
vheight = height;
|
vheight = height;
|
||||||
|
|
||||||
#ifdef VIDEO_THREADING
|
#ifdef VIDEO_THREADING
|
||||||
/* Ensure previous vb has complete */
|
// Ensure previous vb has complete
|
||||||
while ((LWP_ThreadIsSuspended (vbthread) == 0) || (copynow == GX_TRUE))
|
while ((LWP_ThreadIsSuspended (vbthread) == 0) || (copynow == GX_TRUE))
|
||||||
#else
|
#else
|
||||||
while (copynow == GX_TRUE)
|
while (copynow == GX_TRUE)
|
||||||
@ -755,19 +770,18 @@ update_video (int width, int height)
|
|||||||
ResetVideo_Emu (); // reset video to emulator rendering settings
|
ResetVideo_Emu (); // reset video to emulator rendering settings
|
||||||
|
|
||||||
/** Update scaling **/
|
/** Update scaling **/
|
||||||
if (!GCSettings.render)
|
if (GCSettings.render == 0) // original render mode
|
||||||
{
|
{
|
||||||
// original render modes
|
|
||||||
xscale = vwidth / 2;
|
xscale = vwidth / 2;
|
||||||
yscale = vheight / 2;
|
yscale = vheight / 2;
|
||||||
} else {
|
} else { // unfiltered and filtered mode
|
||||||
xscale = 320;
|
xscale = vmode->fbWidth / 2;
|
||||||
yscale = (vmode_60hz) ? 240 : 287; // ntsc, pal scaling
|
yscale = vmode->efbHeight / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// aspect ratio scaling (change width scale)
|
// aspect ratio scaling (change width scale)
|
||||||
// yes its pretty cheap and ugly, but its easy!
|
// yes its pretty cheap and ugly, but its easy!
|
||||||
if (GCSettings.widescreen && GCSettings.render) // don't allow this on original render modes because its ugly.
|
if (GCSettings.widescreen)
|
||||||
xscale -= (4.0*yscale)/9;
|
xscale -= (4.0*yscale)/9;
|
||||||
|
|
||||||
square[6] = square[3] = xscale + xshift;
|
square[6] = square[3] = xscale + xshift;
|
||||||
@ -775,24 +789,22 @@ update_video (int width, int height)
|
|||||||
square[4] = square[1] = yscale + yshift;
|
square[4] = square[1] = yscale + yshift;
|
||||||
square[7] = square[10] = -yscale + yshift;
|
square[7] = square[10] = -yscale + yshift;
|
||||||
|
|
||||||
GX_InvVtxCache ();
|
GX_InvVtxCache (); // update vertex cache
|
||||||
|
|
||||||
//draw_init ();
|
GX_InitTexObj (&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); // initialize the texture obj we are going to use
|
||||||
|
|
||||||
GX_InvalidateTexAll ();
|
if (GCSettings.render == 0 || GCSettings.render == 2)
|
||||||
GX_InitTexObj (&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,2.5,9.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); // original/unfiltered video mode: force texture filtering OFF
|
||||||
|
|
||||||
/* original video mode: force filtering OFF */
|
|
||||||
if (!GCSettings.render)
|
|
||||||
GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,2.5,9.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1);
|
|
||||||
|
|
||||||
|
GX_LoadTexObj (&texobj, GX_TEXMAP0); // load texture object so its ready to use
|
||||||
|
|
||||||
|
/*
|
||||||
// DEBUG
|
// DEBUG
|
||||||
char* msg = (char*) malloc(256*sizeof(char));
|
char* msg = (char*) malloc(256*sizeof(char));
|
||||||
sprintf (msg, (char*)"xscale: %d, yscale: %d", xscale, yscale);
|
sprintf (msg, (char*)"xscale: %d, yscale: %d", xscale, yscale);
|
||||||
S9xMessage (0, 0, msg);
|
S9xMessage (0, 0, msg);
|
||||||
free(msg);
|
free(msg);
|
||||||
|
*/
|
||||||
|
|
||||||
oldvwidth = vwidth;
|
oldvwidth = vwidth;
|
||||||
oldvheight = vheight;
|
oldvheight = vheight;
|
||||||
@ -808,15 +820,12 @@ update_video (int width, int height)
|
|||||||
GX_LoadPosMtxImm (view, GX_PNMTX0);
|
GX_LoadPosMtxImm (view, GX_PNMTX0);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
MakeTexture ((char *) GFX.Screen, (char *) texturemem, vwidth, vheight); // convert image to texture
|
||||||
|
|
||||||
|
DCFlushRange (texturemem, TEX_WIDTH * TEX_HEIGHT * 2); // update the texture memory
|
||||||
GX_InvalidateTexAll ();
|
GX_InvalidateTexAll ();
|
||||||
|
|
||||||
MakeTexture ((char *) GFX.Screen, (char *) texturemem, vwidth, vheight);
|
draw_square (view); // draw the quad
|
||||||
|
|
||||||
DCFlushRange (texturemem, TEX_WIDTH * TEX_HEIGHT * 2);
|
|
||||||
|
|
||||||
GX_LoadTexObj (&texobj, GX_TEXMAP0);
|
|
||||||
|
|
||||||
draw_square (view);
|
|
||||||
|
|
||||||
GX_DrawDone ();
|
GX_DrawDone ();
|
||||||
VIDEO_SetNextFramebuffer (xfb[whichfb]);
|
VIDEO_SetNextFramebuffer (xfb[whichfb]);
|
||||||
@ -824,7 +833,7 @@ update_video (int width, int height)
|
|||||||
copynow = GX_TRUE;
|
copynow = GX_TRUE;
|
||||||
|
|
||||||
#ifdef VIDEO_THREADING
|
#ifdef VIDEO_THREADING
|
||||||
/* Return to caller, don't waste time waiting for vb */
|
// Return to caller, don't waste time waiting for vb
|
||||||
LWP_ResumeThread (vbthread);
|
LWP_ResumeThread (vbthread);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user