Dragon Quest III:ROM map
All values given are ROM offsets. They assume that a 512-byte copier header is not present. If there is a header present, you will have to add 512 ($200) to each offset lister here to get the correct offset in the ROM file.
Note that the ROM is mapped into the SNES address space starting at $C00000. Therefore, if you want to use one of these ROM offsets as a breakpoint, you should add $C00000 to it.
Menu Size Data
Almost every menu has a 16-bit (2-byte) value that determines its starting position (X/Y coordinates) and its width. Menu size data is stored in the following binary format:
%1WWW WWYY YYYX XXXX
- WWWWW = menu width (not just usable space, this includes the edge characters)
- YYYYY = vertical tile offset from top of screen
- XXXXX = horizontal tile offset from left of screen
There is no value to determine the height of a menu. This is done internally by the drawing code for each individual menu.
Like almost everything else on the SNES, this data is in low-endian format. Thus, the YYYX XXXX byte comes first in the ROM, then the 1WWW WWYY byte.
Here are a few menu size values that I have found. Note again that this controls only menu width and position. Menu content string pointers are stored elsewhere.
- $30348-$30349: Introductory menu (contains Begin a New Quest, Continue Quest, Copy Quest, etc., etc.)
- $30024-$30025: Main walkabout menu (contains Talk, Spell, Item, Search, Status, Tactics)