; NAME: Blue Space Ruleset
; GAMES: MP3_USA
; EXECUTION: Direct

ADDIU SP SP -80
SW RA 76(SP)
SW S1 72(SP) ;holds addresses
SW S2 68(SP) ;holds test values
SW S0 64(SP) ;holds test values
SW S3 60(SP) ;holds addresses values

;====================================================================
; Made by Spongyoshi, feel free to use for your own boards!!
; Part of the last five turns custom event, put it on every blue space
; Last place will get a random hidden block upon landing
; Thanks to Airsola and the Mario Party Legacy Discord as always!!
;===================================================================
;TESTING 1 BEGIN;
LUI S3 hi(0x800CD0A1)
ADDIU S3 S3 lo(0x800CD0A1) ; Loading ram address
LBU S3 0(S3)
LI S2 4
BEQ S3 S2 TestAgain ; If rule 2 is active then second test
NOP
J exit ;else, exit
NOP
;TESTING 1 END;
;TESTING 2 BEGIN;
TestAgain:
JAL GetCurrentPlayerIndex
NOP
JAL GetPlayerPlacement
MOVE A0 V0
MOVE S3 V0
LI S2 3
BEQ S3 S2 START ; If player is last then begin
NOP
J exit ;else, exit
NOP
;TESTING 2 END;
;RANDOM BEGIN;
START:
JAL GetRandomByte ; Random Int at V0
NOP
SLTI S0 V0 100 ; Is the number less than 100?
BNE S0 R0 GetItemBlock
NOP
SLTI S0 V0 200 ; Is the number less than 200?
BNE S0 R0 GetCoinBlock
NOP
J GetStarBlock
NOP
;RANDOM END;
;SPACE BLOCK GET BEGIN;
GetItemBlock:
LUI S3 hi(0x800CC4E5)
ADDIU S3 S3 lo(0x800CC4E5) ; Loading item block address
JAL GetCurrentSpaceIndex
NOP
SB V0 0(S3) ; Send CurrentSpaceIndex as new value
J exit
NOP
GetCoinBlock:
LUI S3 hi(0x800CE1C5)
ADDIU S3 S3 lo(0x800CE1C5) ; Loading coin block address
JAL GetCurrentSpaceIndex
NOP
SB V0 0(S3) ; Send CurrentSpaceIndex as new value
J exit
NOP
GetStarBlock:
LUI S3 hi(0x800D124F)
ADDIU S3 S3 lo(0x800D124F) ; Loading star block address
JAL GetCurrentSpaceIndex
NOP
SB V0 0(S3) ; Send CurrentSpaceIndex as new value
J exit
NOP
;SPACE BLOCK END;
exit:
LW RA 76(SP)
LW S1 72(SP)
LW S2 68(SP)
LW S0 64(SP)
LW S3 60(SP)
JR RA
ADDIU SP SP 80