Nvm, I'm dumb lol. Finally got around to testing this and I see what you mean. Nice work! Anyway could you make something like this to bypass the ESRB Rating Screen on the RMCE game? That would be very useful for american players.
Btw try this source out You will only need the C2 ASM for the code.
stw r4, 0x178 (r3) #Default Instruction
.set region, '' #Set e, p, j, or k for compilation region
.if (region == 'E' || region == 'e') # RMCE
lis r5, 0x805D
.elseif (region == 'P' || region == 'p') # RMCP
lis r5, 0x805F #Add 0x1 to 0x805E cuz 2nd half address exceeds 0x7FFF
.elseif (region == 'J' || region == 'j') # RMCJ
lis r5, 0x805F #Add 0x1 to 0x805E cuz 2nd half address exceeds 0x7FFF
.elseif (region == 'K' || region == 'k') # RMCK
lis r5, 0x805E #Add 0x1 to 0x805D cuz 2nd half address exceeds 0x7FFF
.else # Invalid Region
.err
.endif
li r11, 0x0018 #Set 2nd half of instruction (branching offset amount)
cmpwi r4, 3
beq- branch_instruction
oris r11, r11, 0x4182 #For beq- instruction
b update_static_mem
branch_instruction:
oris r11, r11, 0x4800 #For b instruction
update_static_mem: #Write in new instruction
.if (region == 'E' || region == 'e') # RMCE
stw r11, 0x44E8 (r5)
.elseif (region == 'P' || region == 'p') # RMCP
stw r11, 0xFFFFEFBC (r5)
.elseif (region == 'J' || region == 'j') # RMCJ
stw r11, 0xFFFFE898 (r5)
.elseif (region == 'K' || region == 'k') # RMCK
stw r11, 0xFFFFD3DC (r5)
.else # Invalid Region
.err
.endif
Btw try this source out You will only need the C2 ASM for the code.
stw r4, 0x178 (r3) #Default Instruction
.set region, '' #Set e, p, j, or k for compilation region
.if (region == 'E' || region == 'e') # RMCE
lis r5, 0x805D
.elseif (region == 'P' || region == 'p') # RMCP
lis r5, 0x805F #Add 0x1 to 0x805E cuz 2nd half address exceeds 0x7FFF
.elseif (region == 'J' || region == 'j') # RMCJ
lis r5, 0x805F #Add 0x1 to 0x805E cuz 2nd half address exceeds 0x7FFF
.elseif (region == 'K' || region == 'k') # RMCK
lis r5, 0x805E #Add 0x1 to 0x805D cuz 2nd half address exceeds 0x7FFF
.else # Invalid Region
.err
.endif
li r11, 0x0018 #Set 2nd half of instruction (branching offset amount)
cmpwi r4, 3
beq- branch_instruction
oris r11, r11, 0x4182 #For beq- instruction
b update_static_mem
branch_instruction:
oris r11, r11, 0x4800 #For b instruction
update_static_mem: #Write in new instruction
.if (region == 'E' || region == 'e') # RMCE
stw r11, 0x44E8 (r5)
.elseif (region == 'P' || region == 'p') # RMCP
stw r11, 0xFFFFEFBC (r5)
.elseif (region == 'J' || region == 'j') # RMCJ
stw r11, 0xFFFFE898 (r5)
.elseif (region == 'K' || region == 'k') # RMCK
stw r11, 0xFFFFD3DC (r5)
.else # Invalid Region
.err
.endif