an interesting example of where the code evolved between dian shi ma li (left) and shui guo li (right, older).
there's nothing particularly notable about this screenshot; the biggest changes are below this and involve adding credits. but it's fun to line them up together.
dian shi ma li seems to have been compiled in one block, from $8000 to $C570-ish. while this isn't all used data, the unused data is still meaningful; unreferenced stuff that was stripped out, or code that was stubbed or never used. code and data smoothly transition over x000-address thresholds.
shui guo li (and jackpot) very much weren't. to start, $8000-$9FFF is entirely* unused, and is actually a copy of $a000-bfff! (the "entirely" part is that technically shui gui li writes to this, but i feel like that is an error on their part.)
all of the code and data in shui guo li is assembled neatly into $1000-byte blocks, often with garbage or other things filling the remainder.
in addition, most (if not all) "external" routines -- that is, jumps to code that aren't in the same $1000-byte block -- are done to fixed points at the start of the destination block; basically, an export table / etc. this is pretty unusual (and completely unnecessary) for a 32KB game that fits entirely within the NES's address space.
mostly, it just means that everything is one layer indirect, which is just enough that i can't really make use of ida's hover-tooltip explorer.
