-==-
!
ASM - Dpad left/right toggles music on CSS
[Punkline]
Revision ---- DOL Offset ---- Hex to Replace ---------- ASM Code -
NTSC 1.02 --- 0x802608E8 ---- 8803001A -> Branch
# compile option:
.set onlyPlayer1, 1
# if true, then only player 1 may toggle music
# if false, then all players can toggle music
# registers:
.set rPadID, 4
.set rPad, 28
.set bDPadRight, 30
.set bDPadLeft, 31
.ifne onlyPlayer1
cmpwi rPadID, 0
bne+ _return # return if not player 1
.endif
# this .if block only compiles if the setting "onlyPlayer1" is TRUE
mtcrf 0b00000001, rPad
# dpad bools are now in cr7
_check_dleft:
bf+ bDPadLeft, _check_dright
li r12, 0
li r11, 0x7F
b _store_music_settings
# if dPadLeft,
# then Music:SFX ratio is set to 0 (in range -100...100)
# and Music volume is instantly set to 100
_check_dright:
bf+ bDPadRight, _return
li r12, 100
li r11, 0x00
# if dPadRight,
# then Music:SFX ratio is set to 100
# and music volume is instantly muted
_store_music_settings:
stw r11, -0x7E1C(r13) # 1.02
##stw r11, -0x7E04(r13) # PAL
##stw r11, -0x7E1C(r13) # 1.01
##stw r11, -0x7E1C(r13) # 1.00
lwz r10, -0x77C0(r13) # 1.02
##lwz r10, -0x77A8(r13) # PAL
##lwz r10, -0x77C0(r13) # 1.01
##lwz r10, -0x77C0(r13) # 1.00
stb r12, 0x1CC4(r10)
##stb r12, 0x1CCC(r10) # PAL
##stb r12, 0x1CC4(r10) # 1.01
##stb r12, 0x1CBC(r10) # 1.00
# settings have been stored, and will persist for game runtime
_return:
lbz r0, 0x001A (r3)
.long 0
PAL 1.00 --- 0x80261088 ---- 8803001A -> Branch
.set onlyPlayer1, 1
.set rPadID, 4
.set rPad, 28
.set bDPadRight, 30
.set bDPadLeft, 31
.ifne onlyPlayer1
cmpwi rPadID, 0
bne+ _return
.endif
mtcrf 0b00000001, rPad
_check_dleft:
bf+ bDPadLeft, _check_dright
li r12, 0
li r11, 0x7F
b _store_music_settings
_check_dright:
bf+ bDPadRight, _return
li r12, 100
li r11, 0x00
_store_music_settings:
##stw r11, -0x7E1C(r13) # 1.02
stw r11, -0x7E04(r13) # PAL
##stw r11, -0x7E1C(r13) # 1.01
##stw r11, -0x7E1C(r13) # 1.00
##lwz r10, -0x77C0(r13) # 1.02
lwz r10, -0x77A8(r13) # PAL
##lwz r10, -0x77C0(r13) # 1.01
##lwz r10, -0x77C0(r13) # 1.00
##stb r12, 0x1CC4(r10)
stb r12, 0x1CCC(r10) # PAL
##stb r12, 0x1CC4(r10) # 1.01
##stb r12, 0x1CBC(r10) # 1.00
_return:
lbz r0, 0x001A (r3)
.long 0
NTSC 1.01 --- 0x8026014C ---- 8803001A -> Branch
.set onlyPlayer1, 1
.set rPadID, 4
.set rPad, 28
.set bDPadRight, 30
.set bDPadLeft, 31
.ifne onlyPlayer1
cmpwi rPadID, 0
bne+ _return
.endif
mtcrf 0b00000001, rPad
_check_dleft:
bf+ bDPadLeft, _check_dright
li r12, 0
li r11, 0x7F
b _store_music_settings
_check_dright:
bf+ bDPadRight, _return
li r12, 100
li r11, 0x00
_store_music_settings:
##stw r11, -0x7E1C(r13) # 1.02
##stw r11, -0x7E04(r13) # PAL
stw r11, -0x7E1C(r13) # 1.01
##stw r11, -0x7E1C(r13) # 1.00
##lwz r10, -0x77C0(r13) # 1.02
##lwz r10, -0x77A8(r13) # PAL
lwz r10, -0x77C0(r13) # 1.01
##lwz r10, -0x77C0(r13) # 1.00
##stb r12, 0x1CC4(r10)
##stb r12, 0x1CCC(r10) # PAL
stb r12, 0x1CC4(r10) # 1.01
##stb r12, 0x1CBC(r10) # 1.00
_return:
lbz r0, 0x001A (r3)
.long 0
NTSC 1.00 --- 0x8025F5DC ---- 8803001A -> Branch
.set onlyPlayer1, 1
.set rPadID, 4
.set rPad, 28
.set bDPadRight, 30
.set bDPadLeft, 31
.ifne onlyPlayer1
cmpwi rPadID, 0
bne+ _return
.endif
mtcrf 0b00000001, rPad
_check_dleft:
bf+ bDPadLeft, _check_dright
li r12, 0
li r11, 0x7F
b _store_music_settings
_check_dright:
bf+ bDPadRight, _return
li r12, 100
li r11, 0x00
_store_music_settings:
##stw r11, -0x7E1C(r13) # 1.02
##stw r11, -0x7E04(r13) # PAL
##stw r11, -0x7E1C(r13) # 1.01
stw r11, -0x7E1C(r13) # 1.00
##lwz r10, -0x77C0(r13) # 1.02
##lwz r10, -0x77A8(r13) # PAL
##lwz r10, -0x77C0(r13) # 1.01
lwz r10, -0x77C0(r13) # 1.00
##stb r12, 0x1CC4(r10)
##stb r12, 0x1CCC(r10) # PAL
##stb r12, 0x1CC4(r10) # 1.01
stb r12, 0x1CBC(r10) # 1.00
_return:
lbz r0, 0x001A (r3)
.long 0