Hi people, I'm part of a little team trying to translate Super Robot Wars GC. We've already located most of the text in the ISO's files and some hacking has been done. Now we're turning our attention to implementing a VWF routine to make the translated text look nice, which implies ASM hacking, and... we've run into some trouble.
The first step for making a VWF routine is finding the font in memory. That's done. After dumping the memory (MRAM), we found it going from 0x0081baa0 to 0x008b757f.
The second step is finding the routine that reads the characters from that location. We got our hands on a DebugFast build of Dolphin 4.0 and set some memory checks at the beginning of the font block and the beginning of a specific character, but the breakpoints were never triggered.
After some googling, we learned that Dolphin's debugger doesn't work very well with memory checks, and we found an old post where skid suggested a way around this issue: rebuild the emulator with a modified ReadFromHardware function that produces a break when the wanted memory address is accessed (here's that post: https://forums.dolphin-emu.org/Thread-how-do-i-use-memory-breakpoints-in-dolphin )
I've downloaded the project's files following the steps given without any issues, but the file MemoryFunctions.cpp is nowhere to be seen. Considering that post is 4 years old, I assume there's a lot of things that have changed in the code.
So, my question is: what do I have to add and where to trigger a break when a specific memory address is accessed?
Oh, also I'm a bit confused as to which address is the one I should be using. I used the disassembler VDAPPC (from this page: http://hitmen.c02.at/html/gc_tools.html ) on the memory dump and found that the character I was monitoring was present at a different address. In Dolphin's memory viewer it would be 0x008b0028, but in the disassembled memory dump it's located at 0x808b3128. Which one should I use?
Thank you for your time.
The first step for making a VWF routine is finding the font in memory. That's done. After dumping the memory (MRAM), we found it going from 0x0081baa0 to 0x008b757f.
The second step is finding the routine that reads the characters from that location. We got our hands on a DebugFast build of Dolphin 4.0 and set some memory checks at the beginning of the font block and the beginning of a specific character, but the breakpoints were never triggered.
After some googling, we learned that Dolphin's debugger doesn't work very well with memory checks, and we found an old post where skid suggested a way around this issue: rebuild the emulator with a modified ReadFromHardware function that produces a break when the wanted memory address is accessed (here's that post: https://forums.dolphin-emu.org/Thread-how-do-i-use-memory-breakpoints-in-dolphin )
I've downloaded the project's files following the steps given without any issues, but the file MemoryFunctions.cpp is nowhere to be seen. Considering that post is 4 years old, I assume there's a lot of things that have changed in the code.
So, my question is: what do I have to add and where to trigger a break when a specific memory address is accessed?
Oh, also I'm a bit confused as to which address is the one I should be using. I used the disassembler VDAPPC (from this page: http://hitmen.c02.at/html/gc_tools.html ) on the memory dump and found that the character I was monitoring was present at a different address. In Dolphin's memory viewer it would be 0x008b0028, but in the disassembled memory dump it's located at 0x808b3128. Which one should I use?
Thank you for your time.