; NAME: Warp Reverse Fix
; GAMES: MP3_USA
; EXECUTION: Direct

ADDIU SP SP -80
SW RA 76(SP)
SW S0 72(SP) ;holds Character Variable address
SW S1 68(SP) ;holds status flags
SW S2 64(SP) ;holds different values

LUI S0 hi(p1_status_flags)
ADDIU S0 S0 lo(p1_status_flags) ; Loading address of Character Variable

LI A0 0x38
JAL GetCurrentPlayerIndex ; Player Index located at V0
NOP
mult V0,A0
mflo S2
add S2, S0, S2
LBU S1 0(S2) ; Get the corresponding status flag

;=============================START CHECK==============================

LI A0 0x81 ; If the player is going backward in reverse
BEQ A0 S1 ChangeFlag ; Make them go forward in reverse
NOP

J exit
NOP

;========================CHANGING THE STATUS FLAG=====================
ChangeFlag:
LI S1 0x80 ;Give the new status flag to S1
SB S1 0(S2) ;And send it to S0's address
J exit
NOP

exit:
LW RA 76(SP)
LW S0 72(SP)
LW S1 68(SP)
LW S2 64(SP)
JR RA
ADDIU SP SP 80