Frankenstein'd this up really quick, try this out. untested. In PAL, too lazy to port.
X = slot that code effects, make sure both X values match
PAL
C252F538 00000004
2C1A000X 801E0018
40A20010 2C000000
40820008 38000001
60000000 00000000
C272625C 00000002
5460063E 5464063E
60000000 00000000
C272627C 00000003
2C04000X 5403D97E
40A20008 38600001
60000000 00000000
X = slot that code effects, make sure both X values match
PAL
C252F538 00000004
2C1A000X 801E0018
40A20010 2C000000
40820008 38000001
60000000 00000000
C272625C 00000002
5460063E 5464063E
60000000 00000000
C272627C 00000003
2C04000X 5403D97E
40A20008 38600001
60000000 00000000
Code:
#PAL
#8052F538
#r26 always = slot
cmpwi r26, 0
lwz r0, 0x0018 (r30) #OG instruction, 0 = Human? 1 = CPU? 3 = idk?
bne+ end
cmpwi r0, 0 #Just incase r0 is 3, we don't wanna change 3 to 1 for w/e reason???
bne- end
li r0, 1 #Force to CPU?
end:
=============
#8072625C
#Original Instruction
#Slot in r3, extract byte and place in r0
rlwinm r0, r3, 0, 24, 31
#Also Save Slot in r4 (safe, preserved til next ASM code)
rlwinm r4, r3, 0, 24, 31
=============
#8072627C
#Appears that r3 is suppose to return some sort of bool? Idk
#Check slot (r4)
cmpwi r4, 0
rlwinm r3, r0, 27, 5, 31
bne+ 0x8
li r3, 1 #When slot is met, force return of True