Files
Microtransactions64/enhancements/instantinput.patch
2021-05-18 00:31:54 +01:00

37 lines
1.3 KiB
Diff

diff --git a/src/game/game_init.c b/src/game/game_init.c
index b633468..da65e01 100644
--- a/src/game/game_init.c
+++ b/src/game/game_init.c
@@ -300,7 +300,10 @@ void rendering_init(void) {
end_master_display_list();
send_display_list(&gGfxPool->spTask);
- frameBufferIndex++;
+ // Skip incrementing the initial framebuffer index on emulators so that they display immediately as the Gfx task finishes
+ if ((*(volatile u32 *)0xA4100010) != 0) { // Read RDP Clock Register, has a value of zero on emulators
+ frameBufferIndex++;
+ }
gGlobalTimer++;
}
@@ -326,11 +329,14 @@ void display_and_vsync(void) {
osViSwapBuffer((void *) PHYSICAL_TO_VIRTUAL(gPhysicalFrameBuffers[sCurrFBNum]));
profiler_log_thread5_time(THREAD5_END);
osRecvMesg(&gGameVblankQueue, &D_80339BEC, OS_MESG_BLOCK);
- if (++sCurrFBNum == 3) {
- sCurrFBNum = 0;
- }
- if (++frameBufferIndex == 3) {
- frameBufferIndex = 0;
+ // Skip swapping buffers on emulator so that they display immediately as the Gfx task finishes
+ if ((*(volatile u32 *)0xA4100010) != 0) { // Read RDP Clock Register, has a value of zero on emulators
+ if (++sCurrFBNum == 3) {
+ sCurrFBNum = 0;
+ }
+ if (++frameBufferIndex == 3) {
+ frameBufferIndex = 0;
+ }
}
gGlobalTimer++;
}