; NAME: Limit Movement Rolls (MP2)
; GAMES: MP2_USA
; EXECUTION: Direct

main:
LI t0, 0x80046C38 //hook location
LI t1, customDiceRollHook
LW t1, 0 (t1) //load jump instruction
SW t1, 0 (t0) //store jump instruction
SW r0, 4 (t0) //store NOP after jump instruction
JR RA
NOP

customDiceRollHook:
J customDiceRoll

customDiceRoll: //mod 6, dice rolls will be 1-6 now
LB a1, 8 (s0)
ADDU a1, s0, a1
lui     v1,0x2aaa
ori     v1,v1,0xaaab
mult v0, v1
sra     a0,v0,0x1f
mfhi    a2
subu    v1,a2,a0
move    a3,v1
sll a0, a3, 1
addu a0, a0, v1
sll a3, a0, 1
subu v1, v0, a3
addiu v1, v1, 1
move v0, v1
J 0x80046CB4
SB v0, 0005 (a1) //store result to player dice roll

customDiceRoll2:
LB a1, 8 (s0) //load current dice roll index (0 through 2)
ADDU a1, s0, a1
//this math is doing modulo 10 with the random byte result
ANDI v0, v0, 0x00FF
LUI v1, 0xCCCC
ORI v1, v1, 0xCCCD
MULTU v0, v1
MFHI a2
SRL a0, a2, 3
SLL v1, a0, 2
ADDU v1, v1, a0
SLL v1, v1, 1
SUBU v0, v0, v1
ADDIU v0, v0, 1 //mod 10 completed, now add 1 for 1-10 result
J 0x80046CB4
SB v0, 0005 (a1) //store result to player dice roll