09-17-2020, 09:59 PM
(09-17-2020, 06:00 AM)JoshuaMK Wrote: its updating an instruction, try flushing the cache on that address and it should fix the bug
Ty Josh.
here's a new version for anyone to try
Code:
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
#Address ports
#80530930 = NTSC-U
#80535478 = PAL
#80534DF8 = NTSC-J
#805234D0 = NTSC-K
#Values per Region
.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