Malenko
Established Member
Last update for the guide was 09/29/2024
First off, MASSSSSSIVE thanks to @bbayles for holding my hand through this. This is basically his guide but written by me, showing you the steps I followed to get results.
Here is his Saturn Blog: Rings of Saturn | Bo | Substack
Prerequisites:
Basic computing skills
Understand hexadecimal
Knowing this isnt as hard as you think it is.
Lastly Mednafen Ghidra and JDK installed
A hex editor and byte_search
This tutorial will deal with the Japanese game “Gensou Suikoden” by Konami. It won't cover setting up or installing Mednafen, Mednaffe, or Ghidra. Honestly if getting those up is a struggle, the rest of this will likely be a bit much.
To follow this tutorial you must have *some* data to look for. Finding the data is not covered by this tutorial. I am just going to give a brief overview of what the data is, so the rest of this tutorial makes sense.
For this game I found Theo’s name. You can see his name in this screenshot.
テ オ in terms of the games data , this is A8 9A 0F ; I found the data (A8 9A) and the control for for end of read (0F) here, in the 0 file
0x05AFC4
With the prefix out of the way here's the tutorial!
Download and install Mednafen, Mednaffe, and Ghidra make sure you have a hex editor and byte_search as well (it just makes finding stuff go so much faster)
Mednaffe is kinda optional but convenient to not have to type commands or run bat files to use Mednafen.
once you have the game running, pause the emulation (Alt+P) and take a save state (F5)
Open the debugger (Alt+D), change to RAM mode (Alt+3) and page over to High Work RAM (> key)
(Alt+D gets you this, the debugger)
on that screen hit Alt+3 to get to the memory screen:
Then hit > until you are on high work RAM (other games may use Low Work RAM but for this game we use high)
Pressing D on this screen will prompt you to dump the memory, enter 0 fffff NameOfFile
I named it HiRAMDump.bin
Dumping from LowRAM is exactly the same but you do it from the LowRAM screen.
Open Ghidra and start a new project, it does not matter what you name it.
Next, import the file through the file drop down menu, or hit I
The file you saved from RAM will be in the root of your Mednafen folder
Import the file into Ghidra with language set to SH-2 and base address set to 06000000 (set the base address to 02000000 for LowRAM)
After you hit ok, a file import screen will come up that should look similar to this:
Open the file in Ghidra by double clicking it (in Ghidra 11.2 a weird dragon animation plays)
Select No to the analyze pop up:
Open the Python/Jython console (Window > Python or Jython )
11.1 calls it Python and it was changed to Jython in 11.2 but they are functionally the same AFAIK
Paste in BoBayles's script from here: Mark pointers in Low & High Work RAM for Saturn in Ghidra

I hit enter twice then close Jython.
First off, MASSSSSSIVE thanks to @bbayles for holding my hand through this. This is basically his guide but written by me, showing you the steps I followed to get results.
Here is his Saturn Blog: Rings of Saturn | Bo | Substack
Prerequisites:
Basic computing skills
Understand hexadecimal
Knowing this isnt as hard as you think it is.
Lastly Mednafen Ghidra and JDK installed
A hex editor and byte_search
This tutorial will deal with the Japanese game “Gensou Suikoden” by Konami. It won't cover setting up or installing Mednafen, Mednaffe, or Ghidra. Honestly if getting those up is a struggle, the rest of this will likely be a bit much.
To follow this tutorial you must have *some* data to look for. Finding the data is not covered by this tutorial. I am just going to give a brief overview of what the data is, so the rest of this tutorial makes sense.
For this game I found Theo’s name. You can see his name in this screenshot.
テ オ in terms of the games data , this is A8 9A 0F ; I found the data (A8 9A) and the control for for end of read (0F) here, in the 0 file
0x05AFC4
With the prefix out of the way here's the tutorial!
Download and install Mednafen, Mednaffe, and Ghidra make sure you have a hex editor and byte_search as well (it just makes finding stuff go so much faster)
Mednaffe is kinda optional but convenient to not have to type commands or run bat files to use Mednafen.
once you have the game running, pause the emulation (Alt+P) and take a save state (F5)
Open the debugger (Alt+D), change to RAM mode (Alt+3) and page over to High Work RAM (> key)
(Alt+D gets you this, the debugger)
on that screen hit Alt+3 to get to the memory screen:
Then hit > until you are on high work RAM (other games may use Low Work RAM but for this game we use high)
Pressing D on this screen will prompt you to dump the memory, enter 0 fffff NameOfFile
I named it HiRAMDump.bin
Dumping from LowRAM is exactly the same but you do it from the LowRAM screen.
Open Ghidra and start a new project, it does not matter what you name it.
Next, import the file through the file drop down menu, or hit I
The file you saved from RAM will be in the root of your Mednafen folder
Import the file into Ghidra with language set to SH-2 and base address set to 06000000 (set the base address to 02000000 for LowRAM)
After you hit ok, a file import screen will come up that should look similar to this:
Open the file in Ghidra by double clicking it (in Ghidra 11.2 a weird dragon animation plays)
Select No to the analyze pop up:
Open the Python/Jython console (Window > Python or Jython )
11.1 calls it Python and it was changed to Jython in 11.2 but they are functionally the same AFAIK
Paste in BoBayles's script from here: Mark pointers in Low & High Work RAM for Saturn in Ghidra
I hit enter twice then close Jython.
Last edited: