From 51fee95cd75127f8a88e212217328511cb181c8f Mon Sep 17 00:00:00 2001 From: pagefault <> Date: Mon, 21 May 2001 21:34:39 +0000 Subject: [PATCH] Added alternative timer --- zsnes/src/link.win32 | 2 +- zsnes/src/win/winlink.cpp | 52 +++++++++++++++++++++++++++++++++------ 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/zsnes/src/link.win32 b/zsnes/src/link.win32 index 827ee5c0..a6c060ba 100644 --- a/zsnes/src/link.win32 +++ b/zsnes/src/link.win32 @@ -1 +1 @@ -/Fezsnesw.exe chips\dsp1proc.obj dos\sw.obj dos\gppro.obj dos\vesa12.obj dos\zsipx.obj dos\modemrtn.obj dos\joy.obj dos\debug.obj dos\vesa2.obj dos\initvid.obj cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj video\procvid.obj win\copyvwin.obj win\winintrf.obj win\winlink.obj win\zloaderw.obj win\ztcp.obj win\zfilew.obj win\zipxw.obj video\makev16b.obj video\makev16t.obj video\makevid.obj video\mode716.obj video\mode716b.obj video\mode716d.obj video\mode716e.obj video\mode716t.obj video\mode7.obj video\mode7ext.obj video\mv16tms.obj video\newg162.obj video\newgfx16.obj video\newgfx2.obj video\newgfx.obj video\m716text.obj video\2xsaiw.obj gui\gui.obj gui\menu.obj cpu\addrni.obj cpu\dma.obj cpu\dsp.obj cpu\dspproc.obj cpu\execute.obj cpu\irq.obj cpu\memory.obj cpu\spc700.obj cpu\stable.obj cpu\table.obj cpu\tableb.obj cpu\tablec.obj chips\dsp1emu.obj chips\fxemu2.obj chips\fxemu2b.obj chips\fxemu2c.obj chips\fxtable.obj chips\sa1proc.obj chips\sa1regs.obj chips\sfxproc.obj zip\unzip.obj zip\zzip.obj zip\zpng.obj obj\libpng.lib zlib.lib wsock32.lib user32.lib gdi32.lib shell32.lib ddraw.lib dsound.lib dinput8.lib d3dx.lib /link /section:.text,erw +/Fezsnesw.exe chips\dsp1proc.obj dos\sw.obj dos\gppro.obj dos\vesa12.obj dos\zsipx.obj dos\modemrtn.obj dos\joy.obj dos\debug.obj dos\vesa2.obj dos\initvid.obj cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj video\procvid.obj win\copyvwin.obj win\winintrf.obj win\winlink.obj win\zloaderw.obj win\ztcp.obj win\zfilew.obj win\zipxw.obj video\makev16b.obj video\makev16t.obj video\makevid.obj video\mode716.obj video\mode716b.obj video\mode716d.obj video\mode716e.obj video\mode716t.obj video\mode7.obj video\mode7ext.obj video\mv16tms.obj video\newg162.obj video\newgfx16.obj video\newgfx2.obj video\newgfx.obj video\m716text.obj video\2xsaiw.obj gui\gui.obj gui\menu.obj cpu\addrni.obj cpu\dma.obj cpu\dsp.obj cpu\dspproc.obj cpu\execute.obj cpu\irq.obj cpu\memory.obj cpu\spc700.obj cpu\stable.obj cpu\table.obj cpu\tableb.obj cpu\tablec.obj chips\dsp1emu.obj chips\fxemu2.obj chips\fxemu2b.obj chips\fxemu2c.obj chips\fxtable.obj chips\sa1proc.obj chips\sa1regs.obj chips\sfxproc.obj zip\unzip.obj zip\zzip.obj zip\zpng.obj obj\libpng.lib zlib.lib wsock32.lib user32.lib gdi32.lib shell32.lib winmm.lib ddraw.lib dsound.lib dinput8.lib d3dx.lib /link /section:.text,erw diff --git a/zsnes/src/win/winlink.cpp b/zsnes/src/win/winlink.cpp index 66d559f0..a14fcca7 100644 --- a/zsnes/src/win/winlink.cpp +++ b/zsnes/src/win/winlink.cpp @@ -24,6 +24,7 @@ extern "C" { #include #include #include + #include } #include #include @@ -128,6 +129,8 @@ DWORD MouseButton; _int64 start, end, freq, update_ticks_pc, start2, end2, update_ticks_pc2; +BYTE AlternateTimer=0; + extern "C" { void drawscreenwin(void); @@ -1219,8 +1222,18 @@ void Start60HZ(void) { update_ticks_pc = UPDATE_TICKS_GAME * freq / 1000; } - QueryPerformanceCounter((LARGE_INTEGER*)&start); - QueryPerformanceCounter((LARGE_INTEGER*)&start2); + + if (AlternateTimer == 0) + { + QueryPerformanceCounter((LARGE_INTEGER*)&start); + QueryPerformanceCounter((LARGE_INTEGER*)&start2); + } + else + { + start = timeGetTime(); + start2 = timeGetTime(); + } + T36HZEnabled=0; T60HZEnabled=1; } @@ -1234,8 +1247,18 @@ void Start36HZ(void) { update_ticks_pc2 = UPDATE_TICKS_UDP * freq / 1000; update_ticks_pc = UPDATE_TICKS_GUI * freq / 1000; - QueryPerformanceCounter((LARGE_INTEGER*)&start); - QueryPerformanceCounter((LARGE_INTEGER*)&start2); + + if (AlternateTimer == 0) + { + QueryPerformanceCounter((LARGE_INTEGER*)&start); + QueryPerformanceCounter((LARGE_INTEGER*)&start2); + } + else + { + start = timeGetTime(); + start2 = timeGetTime(); + } + T60HZEnabled=0; T36HZEnabled=1; } @@ -1431,7 +1454,16 @@ void initwinvideo(void) else { FirstVid=0; - if (!QueryPerformanceFrequency((LARGE_INTEGER*)&freq)) return; + + if (AlternateTimer == 0) + { + if (!QueryPerformanceFrequency((LARGE_INTEGER*)&freq)) return; + } + else + { + freq = CLOCKS_PER_SEC; + } + // hInst=GetModuleHandle(0); if ( !RegisterWinClass() ); // { return; } X=(GetSystemMetrics( SM_CXSCREEN ) - WindowWidth) / 2; @@ -1499,7 +1531,9 @@ extern int CounterB; void CheckTimers(void) { - QueryPerformanceCounter((LARGE_INTEGER*)&end2); + if (AlternateTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end2); + else end2 = timeGetTime(); + while ((end2 - start2) >= update_ticks_pc2) { if (CounterA>0) CounterA--; @@ -1515,7 +1549,8 @@ void CheckTimers(void) if(T60HZEnabled) { - QueryPerformanceCounter((LARGE_INTEGER*)&end); + if (AlternateTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end); + else end = timeGetTime(); while ((end - start) >= update_ticks_pc) { @@ -1530,7 +1565,8 @@ void CheckTimers(void) if(T36HZEnabled) { - QueryPerformanceCounter((LARGE_INTEGER*)&end); + if (AlternateTimer == 0) QueryPerformanceCounter((LARGE_INTEGER*)&end); + else end = timeGetTime(); while ((end - start) >= update_ticks_pc) {