; NAME: Revert Rainhook
; GAMES: MP3_USA
; EXECUTION: Direct

; Set this event as "After turn".

ADDIU SP SP -32
SW RA 28(SP)

;===Check Turn Count===
LUI T0 hi(current_turn)
ADDIU T0 T0 lo(current_turn)
LBU T0 0(T0) ; Load current turn

LUI T1 hi(total_turns)
ADDIU T1 T1 lo(total_turns)
LBU T1 0(T1) ; Load total turns

BNE T0 T1 exit ; If it's not the last turn, exit
NOP
; else, revert Rainhook

;===Revert Rainhook===
.align 16
Main:
LUI T0 hi(OriginalData)
ADDIU T0 T0 lo(OriginalData)
LW V0 0(T0) ; Load OriginalData operation
LUI V1 0x8000 ; 0x8000000
ORI V1 V1 0xE7F0 ; 0x8000E7F0, address in main game loop
SW V0 0(V1) ; Insert original code in main game loop

exit:
LW RA 28(SP)
JR RA
ADDIU SP SP 32

;===Original Data===
.align 16
OriginalData:
J 0x8000E7C0 ; Original code