Post subject: Need help with SNES disassembly
qflame
He/Him
Player (12)
Joined: 11/19/2017
Posts: 6
Hello, I'm working on reverse engineering a SNES game to produce a TAS, but I've ran into an issue. A lot of the game's code is within a set range of addresses, specifically 800000 - 9FFFFF. I've loaded up the ROM in IDA and it has found all of those subroutines. However, after taking a look at the disassembler in bizhawk, sometimes the program counter is at much lower addresses like 1984A3, 93B0, 1B978, etc. The disassembler can show me a small window of the assembly code in that range, but there appears to be no way to navigate through, save the code to a file, etc. Normally this wouldn't be a problem as I'm doing a lot of the work in IDA, but IDA does not pick anything up in these ranges and I can't seem to get it to recognize any additional code. Is there some way to get the disassembler in bizhawk to navigate around the code? Is there a better way of doing this in general? Any help is appreciated.
Masterjun
He/Him
Site Developer, Expert player (2047)
Joined: 10/12/2010
Posts: 1185
Location: Germany
Not really an answer but keep in mind that the SNES has a lot of address mirrors, meaning for example the $0093B0 you see is the same as $8093B0. Take a look at a memory map.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
qflame
He/Him
Player (12)
Joined: 11/19/2017
Posts: 6
I think that does answer my question, thank you!
Site Admin, Skilled player (1255)
Joined: 4/17/2010
Posts: 11495
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Bizhawk's debugger is a joke, all bizhawk can actually do is trace logging. If you want to seriously dig into reversing a snes game, pick lsnes. Or MAME? O_O
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.