mirror of
https://github.com/CrazyRedMachine/popnhax.git
synced 2024-11-27 23:40:50 +01:00
quick retire/retry sram sound cooldown
This commit is contained in:
parent
4f501cdd51
commit
eea48f2432
@ -1386,6 +1386,8 @@ void patch_eval_timing() {
|
|||||||
real_eval_timing();
|
real_eval_timing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t g_last_playsram = 0;
|
||||||
|
|
||||||
void (*real_result_loop)();
|
void (*real_result_loop)();
|
||||||
void quickexit_result_loop()
|
void quickexit_result_loop()
|
||||||
{
|
{
|
||||||
@ -1423,6 +1425,21 @@ void quickexit_result_loop()
|
|||||||
|
|
||||||
g_return_to_options = true; //transition screen hook will catch it
|
g_return_to_options = true; //transition screen hook will catch it
|
||||||
|
|
||||||
|
__asm("push eax\n");
|
||||||
|
__asm("push ecx\n");
|
||||||
|
__asm("push edx\n");
|
||||||
|
__asm("call _timeGetTime@0\n");
|
||||||
|
__asm("sub eax, [_g_last_playsram]\n");
|
||||||
|
__asm("cmp eax, 10000\n"); //10sec cooldown
|
||||||
|
__asm("pop edx\n");
|
||||||
|
__asm("pop ecx\n");
|
||||||
|
__asm("ja play_soundfx_retry\n"); //skip playing sound if cooldown value not reached
|
||||||
|
__asm("pop eax\n");
|
||||||
|
__asm("jmp call_real_result\n");
|
||||||
|
|
||||||
|
__asm("play_soundfx_retry:\n");
|
||||||
|
__asm("add [_g_last_playsram], eax"); // place curr_time in g_last_playsram (cancel sub eax, [_g_last_playsram])
|
||||||
|
__asm("pop eax\n");
|
||||||
/* play sound fx (retry song) */
|
/* play sound fx (retry song) */
|
||||||
__asm("push eax\n");
|
__asm("push eax\n");
|
||||||
__asm("push ecx\n");
|
__asm("push ecx\n");
|
||||||
@ -1446,6 +1463,21 @@ void quickexit_result_loop()
|
|||||||
__asm("mov ebx, %0\n": :"b"(g_transition_addr));
|
__asm("mov ebx, %0\n": :"b"(g_transition_addr));
|
||||||
__asm("mov dword ptr[ebx], 0xFFFFFFFC\n"); //quit session
|
__asm("mov dword ptr[ebx], 0xFFFFFFFC\n"); //quit session
|
||||||
|
|
||||||
|
__asm("push eax\n");
|
||||||
|
__asm("push ecx\n");
|
||||||
|
__asm("push edx\n");
|
||||||
|
__asm("call _timeGetTime@0\n");
|
||||||
|
__asm("sub eax, [_g_last_playsram]\n");
|
||||||
|
__asm("cmp eax, 10000\n"); //10sec cooldown
|
||||||
|
__asm("pop edx\n");
|
||||||
|
__asm("pop ecx\n");
|
||||||
|
__asm("ja play_soundfx_exit\n"); //skip playing sound if cooldown value not reached
|
||||||
|
__asm("pop eax\n");
|
||||||
|
__asm("jmp call_real_result\n");
|
||||||
|
|
||||||
|
__asm("play_soundfx_exit:\n");
|
||||||
|
__asm("add [_g_last_playsram], eax"); // place curr_time in g_last_playsram (cancel sub eax, [_g_last_playsram])
|
||||||
|
__asm("pop eax\n");
|
||||||
/* play sound fx (end session) */
|
/* play sound fx (end session) */
|
||||||
__asm("push eax\n");
|
__asm("push eax\n");
|
||||||
__asm("push ecx\n");
|
__asm("push ecx\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user