01-06-2019, 05:54 PM
Checkpoint Region Display [Vega]
This code will display (via the milliseconds section of the timer) the current checkpoint region that you are in. Works in Solo TT and Online only.
NTSC-U
C2530930 00000005
A0DE000A 3D808053
64CB38A0 956C10A0
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
PAL
C2535478 00000005
A0DE000A 3D808053
64CB38A0 956C5BE8
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
NTSC-J
C2534DF8 00000005
A0DE000A 3D808053
64CB38A0 956C5568
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
NTSC-K
C25234D0 00000005
A0DE000A 3D808052
64CB38A0 956C3C40
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
Source:
#Address ports
#80530930 = NTSC-U
#80535478 = PAL
#80534DF8 = NTSC-J
#805234D0 = NTSC-K
.set region, '' #Must set region value, or else source will not compile
.if (region == 'E' || region == 'e') # RMCE
.set _1sthalf, 0x8053
.set _2ndhalf, 0x10A0
.elseif (region == 'P' || region == 'p') # RMCP
.set _1sthalf, 0x8053
.set _2ndhalf, 0x5BE8
.elseif (region == 'J' || region == 'j') # RMCJ
.set _1sthalf, 0x8053
.set _2ndhalf, 0x5568
.elseif (region == 'K' || region == 'k') # RMCK
.set _1sthalf, 0x8052
.set _2ndhalf, 0x3C40
.else # Invalid Region
.err
.endif
#Default Instruction, r6 holds checkpoint region value
lhz r6, 0x000A (r30)
#Set Address upper bits, Or in ckpt value
lis r12, _1sthalf
oris r11, r6, 0x38A0 #Or 0x38A00000 to r6
#Write new instruction in memory, store data cache, invalidate instruction cache
stwu r11, _2ndhalf (r12)
dcbst 0, r12
sync
icbi 0, r12
isync
Code creator: Vega
Code credits: SwareJonge (Used his original code to help find the checkpoint value in dynamic/high Mem80, which helped setup a read breakpoint); Bully (Millisecond Display Modifier Code creator); mdmwii (subroutine founder for Millisecond Display)
This code will display (via the milliseconds section of the timer) the current checkpoint region that you are in. Works in Solo TT and Online only.
NTSC-U
C2530930 00000005
A0DE000A 3D808053
64CB38A0 956C10A0
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
PAL
C2535478 00000005
A0DE000A 3D808053
64CB38A0 956C5BE8
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
NTSC-J
C2534DF8 00000005
A0DE000A 3D808053
64CB38A0 956C5568
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
NTSC-K
C25234D0 00000005
A0DE000A 3D808052
64CB38A0 956C3C40
7C00606C 7C0004AC
7C0067AC 4C00012C
60000000 00000000
Source:
#Address ports
#80530930 = NTSC-U
#80535478 = PAL
#80534DF8 = NTSC-J
#805234D0 = NTSC-K
.set region, '' #Must set region value, or else source will not compile
.if (region == 'E' || region == 'e') # RMCE
.set _1sthalf, 0x8053
.set _2ndhalf, 0x10A0
.elseif (region == 'P' || region == 'p') # RMCP
.set _1sthalf, 0x8053
.set _2ndhalf, 0x5BE8
.elseif (region == 'J' || region == 'j') # RMCJ
.set _1sthalf, 0x8053
.set _2ndhalf, 0x5568
.elseif (region == 'K' || region == 'k') # RMCK
.set _1sthalf, 0x8052
.set _2ndhalf, 0x3C40
.else # Invalid Region
.err
.endif
#Default Instruction, r6 holds checkpoint region value
lhz r6, 0x000A (r30)
#Set Address upper bits, Or in ckpt value
lis r12, _1sthalf
oris r11, r6, 0x38A0 #Or 0x38A00000 to r6
#Write new instruction in memory, store data cache, invalidate instruction cache
stwu r11, _2ndhalf (r12)
dcbst 0, r12
sync
icbi 0, r12
isync
Code creator: Vega
Code credits: SwareJonge (Used his original code to help find the checkpoint value in dynamic/high Mem80, which helped setup a read breakpoint); Bully (Millisecond Display Modifier Code creator); mdmwii (subroutine founder for Millisecond Display)