02-17-2025, 12:17 AM
I've made the code! I don't know if I can improve it and shorten it by at least two instructions or one line, but it works great enough and does the job!
C25971F8 00000011
889D009C 48000015
199A0001 1ED20002
240A0003 00000000
7D8802A6 894C0003
2C0A0000 41820050
7C0A2000 40820020
3D608034 A14C0000
7D6B522E 716B1000
40820014 39600000
997D03D0 398C0004
4BFFFFCC 897D03D0
2C0B0000 40820018
899D03D1 698C0001
999D03D1 39600001
997D03D0 899D03D1
718C0001 41820008
38800000 00000000
Source:
lbz r4, 0x9C(r29)
bl controllerAddr_playerID
.long 0x199A0001
.long 0x1ED20002
.long 0x240A0003
.long 0
controllerAddr_playerID:
mflr r12
isEndOfTable:
lbz r10, 3 (r12)
cmpwi r10, 0
beq isTargetP1Cam
isTargettedPlayerID:
cmpw r10, r4
bne nextTableAddr
isThatPlayerPressingMinus:
lis r11, 0x8034
lhz r10, 0 (r12)
lhzx r11, r11, r10
andi. r11, r11, 0x1000
bne isPressing
setNotPressing:
li r11, 0
stb r11, 0x3D0 (r29)
nextTableAddr:
addi r12, r12, 0x4
b isEndOfTable
isPressing:
lbz r11, 0x3D0 (r29)
cmpwi r11, 0
bne isTargetP1Cam
toggleTargetP1Cam:
lbz r12, 0x3D1 (r29)
xori r12, r12, 1
stb r12, 0x3D1 (r29)
setPressing:
li r11, 1
stb r11, 0x3D0 (r29)
isTargetP1Cam:
lbz r12, 0x3D1 (r29)
andi. r12, r12, 1
beq end
setP1Cam:
li r4, 0
end:
C25971F8 00000011
889D009C 48000015
199A0001 1ED20002
240A0003 00000000
7D8802A6 894C0003
2C0A0000 41820050
7C0A2000 40820020
3D608034 A14C0000
7D6B522E 716B1000
40820014 39600000
997D03D0 398C0004
4BFFFFCC 897D03D0
2C0B0000 40820018
899D03D1 698C0001
999D03D1 39600001
997D03D0 899D03D1
718C0001 41820008
38800000 00000000
Source:
lbz r4, 0x9C(r29)
bl controllerAddr_playerID
.long 0x199A0001
.long 0x1ED20002
.long 0x240A0003
.long 0
controllerAddr_playerID:
mflr r12
isEndOfTable:
lbz r10, 3 (r12)
cmpwi r10, 0
beq isTargetP1Cam
isTargettedPlayerID:
cmpw r10, r4
bne nextTableAddr
isThatPlayerPressingMinus:
lis r11, 0x8034
lhz r10, 0 (r12)
lhzx r11, r11, r10
andi. r11, r11, 0x1000
bne isPressing
setNotPressing:
li r11, 0
stb r11, 0x3D0 (r29)
nextTableAddr:
addi r12, r12, 0x4
b isEndOfTable
isPressing:
lbz r11, 0x3D0 (r29)
cmpwi r11, 0
bne isTargetP1Cam
toggleTargetP1Cam:
lbz r12, 0x3D1 (r29)
xori r12, r12, 1
stb r12, 0x3D1 (r29)
setPressing:
li r11, 1
stb r11, 0x3D0 (r29)
isTargetP1Cam:
lbz r12, 0x3D1 (r29)
andi. r12, r12, 1
beq end
setP1Cam:
li r4, 0
end: