06-22-2021, 10:13 AM
(This post was last modified: 06-22-2021, 10:37 AM by CLF78.
Edit Reason: Clarified hint
)
This code disables channel switching for track music, removing the requirement of multi-channel BRSTMs in the slots that previously needed it. Hint: You can disable channel switching altogether by inserting a single BLR instead.
NTSC-U
C26F5BC4 00000004
3CC08071 60C695F0
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
PAL
C26FAB2C 00000004
3CC08071 60C61724
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
NTSC-J
C26FA198 00000004
3CC08071 60C68C5C
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
NTSC-K
C26E8ED4 00000004
3CC08070 60C67998
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
Source:
Code created by: CLF78
NTSC-U
C26F5BC4 00000004
3CC08071 60C695F0
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
PAL
C26FAB2C 00000004
3CC08071 60C61724
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
NTSC-J
C26FA198 00000004
3CC08071 60C68C5C
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
NTSC-K
C26E8ED4 00000004
3CC08070 60C67998
7CE802A6 7CE63850
28071464 4CA10020
9421FFE0 00000000
Source:
Code:
# Address ports
.set REGION, ''
.if (REGION == 'P' || REGION == 'p')
.set FirstCall, 0x807195F0
.elseif (REGION == 'U' || REGION == 'u' || REGION == 'E' || REGION == 'e')
.set FirstCall, 0x80711724
.elseif (REGION == 'J' || REGION == 'j')
.set FirstCall, 0x80718C5C
.elseif (REGION == 'K' || REGION == 'k')
.set FirstCall, 0x80707998
.else
.err
.endif
# Get address of earliest call in memory we want to kill
lis r6, FirstCall@h
ori r6, r6, FirstCall@l
# Get caller
mflr r7
# Exit function if the caller is in the range FirstCall+0x1464
sub r7, r7, r6
cmplwi r7, 0x1464
blelr+
# Original instruction
stwu sp, -0x20(sp)
Code created by: CLF78