View Single Post
  #979    
Old September 3rd, 2011, 06:59 PM
IIMarckus's Avatar
IIMarckus
J946@5488AA97464
 
Join Date: Oct 2007
Gender:
Quote:
Originally Posted by Sawakita View Post
Actually I was referring to SHARP z80 (even though that's not a big difference, for the topic itself).

I have to disagree: if the code is well written, it's pretty easy to find where is the part one's interested in (I gave a look at Gambatte's source, and finding the part I need to edit was pretty fast). Adding a tracing/logging funtion shouldn't take too much time.

Anyway what I really meant was not a program that simply dumps the code in "mnemonics" (BGB and a Pokeanalysis ".c/.h" module do it as well). I was thinking of a program that can actually label every address the code refers to (routines' beginnings, jumps' offsets, and so on), and can format data as "Define Byte", "Define Word" (or in structured macros, but that would be too much, probably), if you get what I mean.

Because, the problem with disassembling code "by hand" is not the difficulty of finding where the stuff is located or figuring out how it works (by the way, I find it the most entertaining part); the problem is instead arranging it in the format that the assembler needs in order to assemble it correctly.
Of course, it would be impossible to get things perfect. But here are some ideas:
  • Nothing has to be disassembled in order; precede each line with its address so you can sort it later. (Better idea: precede it with address × 2. Then you can precede labels with address × 2 − 1.
  • Keep around a boolean true/false for each value in memory, so you don’t get in an infinite loop.
  • Here’s an example of properly labeling things: when you encounter loads to a and hl, put them in a queue before printing them out. If they’re followed by a call to $35CD, replace the constants with the appropriate labels and BANK() macros, then flush the queue.
__________________
iimarck.us / hax.iimarck.us

If you want me, please contact me by email. [email protected]

If you want to hack Pokémon RBY or GSC, read, read, and read some more. This has tons of valuable information.

Pokémon Red disassembly project

Rules that should be rethought: 25charlimit, bumping.
Bad posts are bad posts, regardless of how many words are in them or how old the thread is.
Good posts are good posts, regardless of how old the thread is—and brevity is underrated.