Widescreen Menu fix, fixed frame counter

This commit is contained in:
ekeeke31 2008-12-12 14:21:23 +00:00
parent 7b8984f729
commit 4613223510
5 changed files with 26 additions and 11 deletions

View File

@ -26,7 +26,7 @@ Genesis Plus for Gamecube
- removed embedded font, (re)enabled IPL font support: now should works for Qoob users too (thanks to emukiddid)
- fixed "Reset" button behavior, now acts more like Genesis Reset button ;-)
- patched libfat for faster SDCARD accesses (thanks to svpe)
- SRAM and SaveState files are now based on the ROM filename
- SRAM and SaveState filenames are now based on the ROM filename (for FAT devices only)
- various bugfixes, menu tweaks and code cleanup
[NGC only]
@ -36,6 +36,7 @@ Genesis Plus for Gamecube
- implemented fast scrolling in menu using Wiimote D-PAD
- added "Power" button support
- added USB Storage support
- Widescreen menu fix
- *new* libogc 1.7.0 features: SDHC support, Wiimote shutdown button support

View File

@ -25,9 +25,9 @@
#include <sys/dir.h>
#ifdef HW_RVL
#define CONFIG_VERSION "GENPLUS 1.2.3W"
#define CONFIG_VERSION "GENPLUS 1.3.0W"
#else
#define CONFIG_VERSION "GENPLUS 1.2.3G"
#define CONFIG_VERSION "GENPLUS 1.3.0G"
#endif
void config_save()

View File

@ -1216,6 +1216,10 @@ void MainMenu ()
#endif
/*** Reinitialize GX ***/
VIDEO_ClearFrameBuffer(vmode, xfb[whichfb], COLOR_BLACK);
VIDEO_Flush();
VIDEO_WaitVSync();
VIDEO_WaitVSync();
ogc_video__reset();
odd_frame = 1;

View File

@ -212,7 +212,7 @@ int main (int argc, char *argv[])
{
/* Delay */
while (diff_usec(prev, now) < usBetweenFrames) now = gettime();
/* Render Frame */
prev = now;
system_frame(0);
@ -232,11 +232,11 @@ int main (int argc, char *argv[])
{
/* Delay */
while (!frameticker) usleep(10);
system_frame (0);
RenderedFrameCount++;
}
frameticker--;
}
@ -264,7 +264,6 @@ int main (int argc, char *argv[])
ConfigRequested = 0;
/* reset frame timings */
frameticker = 0;
prev = gettime();
FrameCount = 0;
RenderedFrameCount = 0;

View File

@ -532,12 +532,14 @@ void ogc_video__reset()
/* Configure VI */
VIDEO_Configure (rmode);
VIDEO_ClearFrameBuffer(rmode, xfb[whichfb], COLOR_BLACK);
VIDEO_Flush();
VIDEO_WaitVSync();
if (rmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync();
else while (VIDEO_GetNextField()) VIDEO_WaitVSync();
/* reset frame counter */
frameticker = 0;
/* Configure GX */
GX_SetViewport (0.0F, 0.0F, rmode->fbWidth, rmode->efbHeight, 0.0F, 1.0F);
GX_SetScissor (0, 0, rmode->fbWidth, rmode->efbHeight);
@ -582,7 +584,7 @@ void ogc_video__update()
if (bitmap.viewport.changed)
{
bitmap.viewport.changed = 0;
/* update texture size */
vwidth = bitmap.viewport.w + 2 * bitmap.viewport.x;
vheight = bitmap.viewport.h + 2 * bitmap.viewport.y;
@ -696,7 +698,16 @@ void ogc_video__init(void)
config.tv_mode = 2;
break;
}
#ifdef HW_RVL
/* Widescreen fix */
if( CONF_GetAspectRatio() )
{
vmode->viWidth = 678;
vmode->viXOrigin = (VI_MAX_WIDTH_NTSC - 678)/2;
}
#endif
/* Configure video mode */
VIDEO_Configure (vmode);
@ -719,7 +730,7 @@ void ogc_video__init(void)
/* Enable Video Interface */
VIDEO_SetBlack (FALSE);
/* Update video settings for next VBlank */
VIDEO_Flush ();