Good day community.
This is the deal.
I've been trying lately to hack the RAM names that appear in the credits sequence for EarthBound.
The names that appear here are the ones you input at the very beginning of the game, like Ness, Paula, Jeff, Poo and King.
However, there are certain Credits that combine both RAM names and normal text.
Those are Paula's mom, Paula's dad and Poo's Master.
What I want to do with those three is modify the RAM text call (Paula) and just leave 's mom, 's dad and 's Master.
These are the addresses where that bare text is found in the ROM:
Bare text addresses:
0xC4E796 (0×04E996) = " ’s dad"
0xC4E79D (0×04E99D) = " ’s mom"
0xC4E7A4 (0×04E9A4) = " ’s Master"
Pointers:
0xC4E915 (0×04EB15) = [A9 96 E7 85 12 A9 C4 00 85 14]
Text it points to = " ’s dad"
0xC4E9B7 (0×04EBB7) = [A9 9D E7 85 12 A9 C4 00 85 14]
text it points to = " ’s mom"
0xC4EA60 (0×04EC60) = [A9 A4 E7 85 12 A9 C4 00 85 14]
Text it points to = " ’s Master"
As for the RAM address, all of the names are written in $7E1E60 right before the Credits sequence begins and after you have talked to Ness' mom at the end of the game.
Here's a save state for Snes9x Debugger, if you want to test the breakpoint out or perhaps get some other useful information:http://www.bwass.org/bucket/EarthBound Credits Save State.rarWhen the credits begin, ALL of the RAM stored names (Ness, Paula, Jeff, Poo, King, Paula’s dad, Paula’s mom and Poo’s Master IN THAT EXACT ORDER) appear in that very same address and then the address stays at “Poo’s Master” once the credits start rolling. You can check it out by decreasing the speed in Snes9x Debugger with "-" when the screen starts to fade to black just before the credits. You will see that each one of those names start appearing in order at $7E1E60 (RAM).
With that we can try to trace what ASM code loads such RAM addresses and then stores them somewhere else.
The main names are grabbed from the following RAM addresses:
Ness = $7E99CE
Paula = $7E9A2D
Jeff = $7E9A8C
Poo = $7E9AEB
(King is there too but it's not important for the end result).
So, I set a breakpoint at $7E1E60 and I got the following output in the Debugger:
NOTE: You must set the Write Breakpoint AFTER you talk to Ness' mom!
$C2/D3B9 84 1E STY $1E [$00:1E60] A:0240 X:AE20 Y:ADE0 P:eNvmxdIzc
$C2/D481 86 1E STX $1E [$00:1E60] A:0000 X:AE4B Y:0061 P:eNvmxdIzc
$C0/8F0C 9D 00 00 STA $0000,x[$7E:1E60] A:0000 X:1E60 Y:0007 P:envmxdIzc
$C0/8F0C 9D 00 00 STA $0000,x[$7E:1E60] A:0000 X:1E60 Y:0007 P:envmxdIzc
$C0/8F0C 9D 00 00 STA $0000,x[$7E:1E60] A:0000 X:1E60 Y:0007 P:envmxdIzc
$C0/8F0C 9D 00 00 STA $0000,x[$7E:1E60] A:0000 X:1E60 Y:0007 P:envmxdIzc
$C0/8F0C 9D 00 00 STA $0000,x[$7E:1E60] A:0000 X:1E60 Y:0007 P:envmxdIzc
$C0/8F1B 97 0E STA [$0E],y[$7E:1E60] A:0000 X:0010 Y:0000 P:envMxdIZc
$C0/8F1B 97 0E STA [$0E],y[$7E:1E60] A:0000 X:0010 Y:0000 P:envMxdIZc
$C0/8F1B 97 0E STA [$0E],y[$7E:1E60] A:0000 X:0010 Y:0000 P:envMxdIZc
(I don't understand the STX, STY nor STA_x/y variants, nor what does $1E and $0E mean for that.)
So, the desired result is the following:
- Remove POO from "Poo's Master" to leave only 's Master, that way I want rename it to something else without having the RAM name appear in there.
- Move the position of PAULA in Paula's mom and Paula's dad. What I want here is to make 's dad and 's mom appear BEFORE the name for translation purposes (same thing could apply to Poo's Master in this regard).
I've been scratching my head over this for the past month and can't figure out a way to do so.
Can anyone please give some insight/a hand for this?
It'll be GREATLY appreciated!