Sindibad: Chitei no Daimakyuu/RAM map

From Data Crystal
< Sindibad: Chitei no Daimakyuu
Revision as of 02:47, 21 February 2024 by Lelegofrog (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Chip tiny.png The following article is a RAM map for Sindibad: Chitei no Daimakyuu.

Zero Page

 - 00-0D: Scratch locations used for various purposes.
 - 10-14: Current controller input status
   - Controller statuses are a bitmask.  The two nybbles correspond to
     the values read from the external port.
   - Bit 0 is I, Bit 1 is II, Bit 2 is SELECT, bit 3 is RUN, bit 4 is
     UP, bit 5 is RIGHT, bit 6 is DOWN, bit 7 is LEFT.
 - 15-19: Previous controller input status
   - Same layout as for $10-$14 and $1a-$1e.
 - 1A-1E: Controller buttons newly down since last read
   - Same layout as for $10-$14 and $15-$19.
 - 1F: Congtiuous bitmask of controllers (starting from bit 0) to
   check for reset.  Initialized to 7 (the first three controllers),
   and never changed.
 - 20: ???
 - 24: ??? (set $04.6407, $04.640C)
   - Seems to be used as a flag while reading a password, but once a
     password is entered is some game state used by the backup memory
     logic??
 - 25: ??? Zero if in the new-game intro sequence?
 - 38: STA absolute instruction.
 - 39.W: STA absolute address.
 - 3B: RTS instruction
 - 3C: LDA absolute instruction.
 - 3D.W: LDA absolute address.
 - 3F: RTS instruction.
 - 40: Text(?) window horizontal cursor position.
 - 41: Text(?) window vertical cursor position.
 - 42: Text(?) window left border position.
 - 43: Text(?) window top border position.
 - 44: Text(?) window width, including borders.
 - 45: Text(?) window height, including borders.
 - 46: Text(?) window right border position.
 - 47: Text(?) window bottom border position.
 - 48: ??? paired with $49, input to routines in bank $12?
 - 49: ??? paired with $48, input to routines in bank $12?
 - 4A: ???
 - 4B: ??? (tested for #$88 by $13.792f?)
 - 4E: ??? possibly paired with $4f? (see $01.4a91 and $01.4aa2)
 - 4F: ??? possibly paired with $4e? (see $01.4a91 and $01.4aa2)
 - 51.W: ??? some sort of upper bound? (see $04.68a6-$04.68ca)
 - 53: Text(?) window BAT entry high byte (palette and top four bits
   of character code).
 - 54.W: Text-printer read pointer.
 - 56: Text-printer End-Of-Text escape code.
 - 57: Text-printer End-Of-Line escape code.
 - 58: Text-printer Wait-For-Input escape code.
 - 59: Text-printer CLear-Window escape code.
 - 5A: Dakuten diacritic "character" code.
 - 5B: Handakuten diacritic "character" code.
 - 5C: Text-printer diacritic position offsets as 4/4 fields, initialized to $11.
 - 5D: Text(?) window horizontal cursor start position
 - 5E: Text(?) window vertical cursor start position.
 - 63.W: VRAM address, set and used in $12.7106 from result of
   $00.e518.
 - 65-6A: decimal-print formatting buffer? (see $12.73bb, $12.7587)
 - 6B: ??? (see $03.75ab, $12.75af)
 - 6C: ??? text-printer (?) variable, initialized to $A0 (sword?), set
   to $9C (right-pointing triangle) for menu interaction ?? read
   $12.75a3, used as a tile id ??
 - 6D: ??? per-character output delay to use for combat messaging ??
   for message speed generally ??
 - 6E.W: ???
 - 70.W: ???
 - 72: ??? (see $41.7451, $04.685b, $04.6865)
 - 73.W: ??? sprite coordinate for comparison? (see $01.5262, $01.52bb)
 - 75.W: ??? sprite coordinate for comparison? (see $01.5262, $01.52bb)
 - 77: ??? (see $01.5262)
 - 78: ??? (see $01.5262)
 - 79: Text-printer 4-SPace escape code.
 - 7A: Text-printer 4-SPace space count (initialized to $04).
 - 80: ??? Sprite animation frame, maybe?  Only ever $00 or $01, see
   $00.e3b6, $01.4576, and $04.7e40
 - 81: ??? First party character facing? (copy of controller input?)
 - 82: ??? First party character X position?
 - 83: ??? First party character Y position?
 - 84: ??? Second party character facing?
 - 87: ??? Third party character facing?
 - 8A: ??? Fourth party character facing?
 - 8D.W: X scroll position. ??? referenced by $00.e26e, $00.e518, bank $43?
 - 8F.W: Y scroll position. ??? referenced by $00.e26e, $00.e518, bank $43?
 - 91.W: First party member base sprite tile ID
 - 93.W: Second party member base sprite tile ID
 - 95.W: Third party member base sprite tile ID
 - 97.W: Fourth party member base sprite tile ID
 - 99: ??? #$ff if starting a "designated" encounter?  #$00 if combat
   is disabled for an area?  Has actual semantics (see $02.6043)
   otherwise ??
 - 9A: ??? combat result (0=in-progress, 1=victory, 2=party-wipe,
   other=ran-away)
 - 9B: ??? used in script search? Search start pointer low?  (set by
   $12.717C, referenced by $12.7207)
 - 9C: ??? used in script search? Search start pointer high?  (set by
   $12.7182, referenced by $12.720C)
 - 9D: Script ID marker (set to $FA from $12.71F8, referenced by $12.723C).
 - 9E: ?? map data starting bank? (see $01.51e2, $12.70bb, $12.7134)
 - 9F: Map set ID ($00 = world, $01 = outdoor/town, $02 = indoor/dungeon).
 - A0: ??? municipality ID, range 0-9 (see $03.71a6) ??  May be 0-F
   (see $45.70f3 and associated table) ??
   - 00: Baghdad
   - 01: Basra
   - 02: Mecca
   - 03: Cairo
   - 04: Buhara
   - 05: Byzantine port (?)
   - 06: Uganjo(?)
   - 07: Persian town (?)
   - 08: Parugia (?)
   - 09: Bagwaji (?)
   - 0A: Mountain town (unnamed?)
   - 0B: unused?
   - 0C: Baghdad Palace
   - 0D: Byzantine Palace
   - 0E: Oasis
   - 0F: Darius' Outpost
 - A1: ??? something to do with cave/dungeon areas, range 0-7 ??
   range 0-3 ??
   - $01.5188 (select area bgm) checks for specific values of 2, 3,
     and 5.
   - $02.759d (??), does an indexed lookup of $05.9138.  This sets an
     upper limit of 8, as $05.9141 is accounted for elsewhere.
   - $08.799c, $08.79a0, $08.79a4, and $08.79a8 supply values of 0, 1,
     7, and 3, respectively.
   - $41.7675-$787C supplies values 2 and 3.
   - Bank 47 is all 3s and 5s.
   - $04.7f40 only attests to 0-3 before it runs into something else,
     with the specific caveat that this is for NPC interactions.
   - $04.7909 appears to be a table of coordinate pairs attesting to
     0-5 and 7.
   - $04.7919 appears to be a table of coordinate pairs attesting to
     0-3.
 - A2: Second party member id? (zero, one=Ali Baba)
 - A3: Third party member id? (zero, two=Scheherazade, or
   three=Cherubim)
 - A4: Fourth party member id? (zero, three=Cherubim, or four=Goku)
 - A6: Map BAT high byte (palette + 8k VRAM section selector).
 - A7: ??? designated-encounter monster id if $99 is #$ff ??
 - A8.W: ??? Set to $2500 at $01.5428, never modified(?), points to a
   sprite count ??
 - AA: ??? person in area being talked to (see bank $13) ??
 - AB: ???
 - AC: ??? paired with $AD, used with $48 to set $82?
 - AD: ??? paired with $AC, used with $49 to set $83?
 - AE: ???
 - AF: ???
 - B0: ??? affects chance of entering combat (zeroed $47.73a0, set to
   #$01 or zeroed, multiple places in bank $03, tested $02.6038) ??
 - B1: ??? (read $08.7625)
 - B2: ??? monster frozen turns counter (set #$02 at $45.7959,
   something to do with ice?, decremented $02.624a) ??
 - B3: ??? (set to #$02 by $04.6d99, set to zero by $04.6daa, read
   $02.7227)
 - C8.W: ??? Seems to be used as a scratch variable?
 - CA: ??? Seems to be used as a scratch variable?
 - CC.W: ??? Sprite X coordinate ?? scratch variable?
 - CE.W: ??? Sprite Y coordinate ?? scratch variable?
 - D0.W: ???
 - D8.W: ???
 - E0-ED: Audio driver memory.
   - E0.W: ??? pointer ??
   - E2.W: ??? pointer ??
   - E4.W: ??? pointer ??
   - E6.W: ??? pointer ??
   - E8: ???
   - E9: ???
   - EA: ???
   - EB: TMA or TAM instruction (see $00.f1f7 and $00.f20d).
   - EC: TMA or TAM instruction operand.
   - ED: RTS instruction.
 - F0-F1: Audio driver configuration.
   - F0: Bank ID for (most?) audio data (set to #$06 by $01.45a9).
   - F1: MPR for audio driver to use (set to 6 by $01.45a9).
 - F2.W: ??? pointer?
 - F4.W: ??? pointer?
 - F6: ???
 - F7.W: ??? pointer? Window geometry pointer ??
 - FB-FF: ?? possibly unused ??

RAM

 - 2200-22A4: ??? initialized-data section ?? possibly save-game state
   image ??
   - 2200: Sinbad's current HP.
   - 2201: Sinbad's current MP.
   - 2202: Sinbad's maximum HP.
   - 2203: Sinbad's maximum MP.
   - 2204: Sinbad's AT (attack strength)
   - 2205: Sinbad's DF (defensive strength) (decremented by $221b at
     end of each combat round?)
   - 2206: Sinbad's SP (speed), determines combat turn order
     (higher=sooner) and combat hit chance (relative to opponent
     value) ??
   - 2207: Sinbad's equipped weapon ??
   - 2208: Sinbad's equipped headgear ??
   - 2209: Sinbad's equipped shield ??
   - 220A: Sinbad's equipped armor ??
   - 220B[8]: ??? spell table (8 bytes) ??
   - 2213[8]: Sinbad's inventory ??
   - 221B: ??? defensive strength boost from defensive action (cleared
     at start of each combat round, subtracted from defense and
     cleared again at end of each combat round?)
   - 221C: ??? non-zero if magic has been sealed ??
   - 221D-221F: ??? poss. unused ??
   - 2220: Ali Baba's current HP, or $ff if not in the party.
   - 2221: Ali Baba's current MP.
   - 2222: Ali Baba's maximum HP.
   - 2223: Ali Baba's maximum MP.
   - 2225: ??? (decremented by $223b at end of each combat round?)
   - 2226: ???
   - 2227: Ali Baba's equipped weapon ??
   - 2228: Ali Baba's equipped headgear ??
   - 2229: Ali Baba's equipped shield ??
   - 222A: Ali Baba's equipped armor ??
   - 222B[8]: ??? spell table (8 bytes) ??
   - 2233-223A: Ali Baba's inventory ??
   - 223B: ???
   - 223C: ???
   - 2240: Scheherazade's current HP, or $ff if not in the party.
   - 2241: Scheherazade's current MP.
   - 2242: Scheherazade's maximum HP.
   - 2243: Scheherazade's maximum MP.
   - 2245: ??? (decremented by $225b at end of each combat round?)
   - 2246: ???
   - 2247: Scheherazade's equipped weapon ??
   - 2248: Scheherazade's equipped headgear ??
   - 2249: Scheherazade's equipped shield ??
   - 224A: Scheherazade's equipped armor ??
   - 224B[8]: ??? spell table (8 bytes) ??
   - 2253-225A: Scheherazade's inventory ??
   - 225B: ???
   - 225C: ???
   - 2260: Cherubim's current HP, or $ff if not in the party.
   - 2261: Cherubim's current MP.
   - 2262: Cherubim's maximum HP.
   - 2263: Cherubim's maximum MP.
   - 2265: ??? (decremented by $227b at end of each combat round?)
   - 2266: ???
   - 2267: Cherubim's equipped weapon ??
   - 2268: Cherubim's equipped headgear ??
   - 2269: Cherubim's equipped shield ??
   - 226A: Cherubim's equipped armor ??
   - 226B[8]: ??? spell table (8 bytes) ??
   - 227B: ???
   - 227C: ???
   - 2280: Goku's current HP, or $ff if not in the party.
   - 2281: Goku's current MP.
   - 2282: Goku's maximum HP.
   - 2283: Goku's maximum MP.
   - 2285: ??? (decremented by $229b at end of each combat round?)
   - 2286: ???
   - 2287: Goku's equipped weapon ??
   - 2288: Goku's equipped headgear ??
   - 2289: Goku's equipped shield ??
   - 228A: Goku's equipped armor ??
   - 228B[8]: ??? spell table (8 bytes) ??
   - 2293-229A: Goku's inventory ??
   - 229B: ???
   - 229C: ???
   - 22A0.W: Party experience
   - 22A2.W: Party gold
   - 22A4: Party level
 - 2300-231F: Party-character sprite table entries?
 - 2304: ??? initialized to $80 ??
 - 2305: ??? initialized to $02 ??
 - 230C.W: ??? Sprite tile ID?
 - 2314.W: ??? Sprite tile ID?
 - 231C.W: ??? Sprite tile ID?
 - 2400-241F: enemy data records (four) ?? First 12 ($0c) bytes of
   each record are copied from templates in bank $05, the rest are
   initialized by code, if at all.
   - 2400: Enemy 0 name tag (in section 30).
   - 2401.W: Enemy 0 ?? (HP?)
   - 2403: Enemy 0 ?? (MP?)
   - 2404: Enemy 0 AT (attack) ??
   - 2405: Enemy 0 DF (defense) ??
   - 2406: Enemy 0 SP (speed) determines combat turn order
     (higher=sooner) and combat hit chance (relative to opponent
     value) ??
   - 2407: Enemy 0 ??? (only zero if MP is zero, spell set ??)
   - 2408.W: Enemy 0 gold.
   - 240A: Enemy 0 experience.
   - 240B: Enemy 0 droppable item ID.
   - 240C: Enemy 0 flag, non-zero if magic sealed ??
   - 240D.W: Enemy 0 ?? (HP? Max HP?)
   - 2416: Enemy 1 SP (speed) determines combat turn order
     (higher=sooner) and combat hit chance (relative to opponent
     value) ??
   - 2418.W: Enemy 1 gold.
   - 241A: Enemy 1 experience.
   - 241B: Enemy 1 droppable item ID.
   - 241D.W: Enemy 1 ?? (HP? Max HP?)
   - 2426: Enemy 2 SP (speed) determines combat turn order
     (higher=sooner) and combat hit chance (relative to opponent
     value) ??
   - 2428.W: Enemy 2 gold.
   - 242A: Enemy 2 experience.
   - 242B: Enemy 2 droppable item ID.
   - 242D.W: Enemy 2 ?? (HP? Max HP?)
   - 2436: Enemy 3 SP (speed) determines combat turn order
     (higher=sooner) and combat hit chance (relative to opponent
     value) ??
   - 2438.W: Enemy 3 gold.
   - 243A: Enemy 3 experience.
   - 243B: Enemy 3 droppable item ID.
   - 243D.W: Enemy 3 ?? (HP? Max HP?)
 - 2440[$15]: ??? queued combat commands ?? (cleared $02.6127, indexed
   by party member id * 4 $02.6428)
   - 2442, 2446, 244A, 244E, 2452: Target (monster?) id? (see
     $02.644f)
 - 2500-26FF: ??? (see $01.5430)
 - 2501-???: ??? (has 8-byte stride, see $01.5afc)
   - In-memory SATB copy?
 - 2700-273F: Animated tile pattern data, tile pair "A0".
 - 2740-277F: Animated tile pattern data, tile pair "A1".
 - 2780-27BF: Animated tile pattern data, tile pair "A2".
 - 27C0-27FF: Animated tile pattern data, tile pair "A3".
 - 2800-283F: Animated tile pattern data, tile pair "B0".
 - 2840-287F: Animated tile pattern data, tile pair "B1".
 - 2880-28BF: Animated tile pattern data, tile pair "B2".
 - 28C0-28FF: Animated tile pattern data, tile pair "B3".
 - 2900-2911: Code fragment (see $01.5b1b-$5b58, esp. $01.5b3f)
 - 2912-2923: Code fragment (see $01.5b59-$5b96, esp. $01.5b7d)
 - 2A00-2A3C: ??? (see $43.7713) poss. table of spell MP costs??
 - 2A00: ???
 - 2A01: ???
 - 2A2D: ??? (written with constant #$14, $43.77ba.  read $03.6d82,
   $03.70f0), something to do with casting magic, possibly "return"
   specifically ??
 - 2A35: ??? write-only by $45.7738 (?), a copy of $303b ??
 - 2B00[$52]: ??? something to do with savegame password (see
   $04.6006) ??
 - 2B50[$50]: ??? something to do with savegame password (see
   $04.6283) ??
 - 2BE0: ??? (modified $04.6c2d)
 - 2BE2: ??? (read $04.68de, written $04.6c00)
 - 2BE4: ???
 - 2BE9: ??? (written $04.6bfc)
 - 2C00.W: ??? dungeon/cave step counter (see $04.6895) ??
 - 2C02.W: ??? BG tile data read from VRAM (see $01.4e1c-$4f36) ??
 - 2C04.W: ??? BG tile data read from VRAM (see $01.4e1c-$4f36) ??
 - 2C06.W: ??? BG tile data read from VRAM (see $01.4e1c-$4f36) ??
 - 2C08.W: ??? BG tile data read from VRAM (see $01.4e1c-$4f36) ??
 - 2C0A: ??? (see $00.e32d, $13.631d, $13.6334, $13.78e6)
 - 2C0B: ??? text-printer variable?  Per-character output delay?
 - 2C0C: ??? (tested for zero by $13.760c?)
 - 2C0D: ??? (tested for zero by $13.78ee, set to #$01 by $13.792c?)
 - 2C10: ??? flag, non-zero if (?? end of game condition met ??) ??
 - 2C11: ??? flag, non-zero if saved the princess a second time ??
   - Non-zero if yeeted the teribura egg into the fire?
 - 2C12: Flag, non-zero ($01) if Gorotsuki(?) has been paid off in
   Baghdad.
 - 2C13: ??? flag, non-zero if seen Aladdin enter the bandit cave ??
 - 2C14: ??? flag, non-zero if Omar has been given coffee ??
 - 2C15: ??? flag, non-zero if saved the princess the first time ??
 - 2C16: ??? (set to #$01 by $13.6344, when Hasan leaves Baghdad?)
 - 2C17: Flag, non-zero ($01) if talked to northeast sage in Mecca.
 - 2C18: ??? (tested for zero by $04.7f33, $13.6454?)
   - $03.6943, ??? checks for non-zero.
   - $03.6fe9, trying to use the clay seal (ねんどばん), sets value to
     #$02.
   - $04.69ce, ??? checks specifically for value of #$02 ??
   - $04.7aee, cherubim joining party, sets value to #$01?
   - $04.7f33, cave/dungeon sprite setup, checks for non-zero.
   - $13.6454, Basra dialogue test, checks for non-zero.
   - $47.752e, ??? checks for non-zero.
 - 2C19: ??? (tested for zero by $13.6d9a, $13.6df3?)
 - 2C1A: Flag, non-zero ($01) if talked to Sanzo in Cairo.
 - 2C1B: Flag, non-zero ($01) if ??? in Cairo.
 - 2C1C: ??? (tested for zero by $13.68f6, $13.695f, $13.697c?,
   defeated-Incubus flag?)
 - 2C1D: Flag, non-zero ($01) if talked to old man of the mountain
   without Cherubim in the party.
 - 2C1F: ??? (set to #$01 by $13.695b, ??)
 - 2C1F[]: ??? (indices used are $02, $04, and $05, see $2c4b)
 - 2C20: Flag, non-zero ($01) if Darius' boat is available for use.
   - This is set by $13.7ac4, and cleared again by $47.76c8.
 - 2C21: ??? (see $2c1f[])
 - 2C22: Flag, non-zero ($01) if talked to Hasan in Basra while
   holding the Sea Chart.
 - 2C23: ??? (see $2c1f[])
 - 2C24: ??? (see $2c1f[])
 - 2C25: ???
 - 2C26: ???
 - 2C27: ???
 - 2C28: ???
 - 2C29: ??? (set to #$01 by $13.651d?)
 - 2C40: ??? (see $00.e305)
 - 2C42.W: ??? (see $02.745c-$7490, and $43.73b2-$73f6) poss. VRAM
   address (see $42.73f7-$7418) ??
 - 2C44.W: ??? (see $03.77bc-$77df, and $02.???)
 - 2C46: Currently selected menu item index.
 - 2C47: ??? (set $08.7a21)
 - 2C4B: ??? (see $13.6490, $13.64a1, $13.6508, $13.6be7, $13.6bf8,
   $13.6c5f, $13.6f95, $13.6fa6, $13.700d), takes values $02, $04, and
   $05, used to index $2c1f[]?
 - 2C4E: ??? (used to set $99, see $08.7a52)
 - 2C4F: ??? (used to set $99, see $08.7848)
 - 2F00: ??? (paired with $2f01, something to do with party movement?)
 - 2F01: ??? (paired with $2f00, something to do with party movement?)
 - 2F02: ??? (paired with $2f03, something to do with party movement?)
 - 2F03: ??? (paired with $2f02, something to do with party movement?)
 - 2F04: ??? (paired with $2f05, something to do with party movement?)
 - 2F05: ??? (paired with $2f04, something to do with party movement?)
 - 2F0C.W: ??? (see $00.e28a)
 - 2F0E.W: ??? (see $00.e1a0)
 - 2F10.W: ??? (used only within $00.e831-$e8d0)
 - 2F12: ???
 - 2F13: ???
 - 2F14: ???
 - 2F15: ???
 - 2F16: ???
 - 2F20.W: ??? pointer ?? v. temporary stash, written and read within
   $01.540a through $01.5437.
 - 2F26.W: ??? pointer ??
 - 2F2E-2F3E: Password entry variables.
   - 2F2E: ??? password entry edit index ??
   - 2F2F: ??? boundary for $2f2e (see $04.626d) ?? accumulated
     password length ??
   - 2F30: ??? saved text cursor X coordinate (for pw entry) ??
   - 2F31: ??? saved text cursor Y coordinate (for pw entry) ??
   - 2F32: ??? coordinate ?? password entry saved cursor X ??
   - 2F33: ??? coordinate ?? password entry saved cursor Y ??
   - 2F34: ??? coordinate of some sort ?? password entry cursor X
     coordinate ??
   - 2F35: ??? coordinate of some sort ?? password entry cursor Y
     coordinate ??
   - 2F36: ???
   - 2F37: Space or dakuten tile ID used during password text display
     (see $04.61c2-$61ef).
   - 2F38: ??? something with password entry ?? (set at $04.6056,
     $04.6142, read at $04.6111).
     - Set to one when buttons have been seen to have been released?
     - Cleared to zero when ??
 - 2F40.W: ??? video buffer pointer?
 - 2F42: ??? paired with $2F43, used in bank $12?
 - 2F43: ??? paired with $2F42, used in bank $12?
 - 2F44: ??? used in bank $12? $2f40 buffer length / fixed output
   length?
 - 2F45: ??? used in bank $12?
 - 2F46: ??? used in bank $12?
 - 2F47: ??? used in bank $12?
 - 2F48: ??? used in script search? Search pointer?
 - 2F49: ??? used in script search?
 - 2F4A: Script ID low (second) byte, set at $12.7201, read at $12.7279.
 - 2F4B: Script ID high (first) byte, set at $12.7204, read at $12.725A.
 - 2F4C: ??? fixed video tile ID if non-zero? (see $12.711f)
 - 2F4D.W: Current RNG state (see $12.72d7-$7321 and $12.7322-$732c).
 - 2F4F: ??? (see $12.75b1)
 - 2F51[]: ?? backup memory file metadata buffer ??
 - 2F60.W: ???
 - 2F62.W: Experience to next level ?? General word temporary ??
 - 2F64: ??? X coordinate of something ??
 - 2F65: ??? Y coordinate of something ??
 - 2F66: ???
 - 2F68: ???
 - 2F69: ??? saved /stack pointer/ for non-local exit in bank $03 ??
 - 2F6B: ???
 - 2F6C: Shopkeeper type (2, 3, or 4, corresponding to the indexed
   message ID of their opening salutation).
   - 2: weapon store
   - 3: armor store
   - 3: item store
 - 2F6D: ??? general temporary storage for the menuing code ??
 - 2F6E: ???
 - 2F6F: ???
 - 2F70: ??? menu item count ?? (see $03.71d9)
 - 2F71: menu item vertical spacing
 - 2F72: menu item horizontal spacing
 - 2F73: menu vertical entry count
 - 2F74: menu horizontal entry count
 - 2F75.W[]: ??? Array of script section/tag pairs, for menu display use?
 - 2F85.W[]: ??? Array of ??? for menu display use?
 - 2F97: ???
 - 2F98: ??? target party member id (compare $2fa6) ??
 - 2F9A.W: ??? code pointer of some sort ??
 - 2F9C: ??? twice $2fa3, for indexing word data ??
 - 2F9D: ??? some kind of flag, either $00 or $01 ??
 - 2F9E-2FA0: ??? code fragment (see $03.703c) ??
 - 2FA1: ???
 - 2FA2: ???
 - 2FA3: ??? range 2-7 ?? command ID ??
   - This drives much of the shopkeeper and main non-combat menu
     logic.
   - Value $00: buy item from shopkeeper.
   - Value $01: sell item to shopkeeper.
   - Value $02: "equip" items.
   - Value $03: "give" items from one party member to another.
   - Value $04: "use" items.
   - Value $05: cast "magic" spells.
   - Value $06: "drop" items.
   - Value $07: "search", not handled via the same mechanism as other
     commands.
 - 2FA4: ???
 - 2FA5: ??? selected item id ??
 - 2FA6: ??? selected party member ID ??
 - 2FA7: ??? menu action result?  Appears to be $00 for an accepted
   menu choice, $01 for a cancelled menu choice, $ff under some
   circumstances.  May also have other values.
   - Attempting to select Cherubim in non-combat menus tends to set
     this to $ff (see $03.753a).
   - Attempting to select an "invalid" inventory item in non-combat
     menus also tends to set this to $ff.
   - Notably, $03.7186 tests for a value of $80.
 - 2FA9-2FAC: ??? window geometry ??
 - 2FAD: ??? zeroed at $03.6804 ??
 - 2FAE: ??? last opened indexed window? (written $03.7609, read
   $03.7a47)
 - 2FAF: ??? a window ID (written $03.7cfc, ignored otherwise?) ??
 - 2FB0: ??? temporary stash, either $00 or $01, controls if a message
   is displayed at some point (written $03.74d8, read $03.7530)??
   - Message is "ケルビムは ものを もてない", something about
     Cherubim not being a valid choice?
 - 2FB1: ??? temporary stash (written $03.7d6a, mutated $03.7d81),
   used as a loop index for how many lines of a window to erase.
 - 2FBE: World-map tile animation frame (0-3, will treat values over 3
   as 3, see $08.7bf7).
 - 2FBF: ??? A stack pointer value, specific to bank $08 (written
   $08.7786, read $08.79d3) ??
 - 2FC4: Palace/city/town/oasis-map tile animation frame (0-3, will
   treat values over 3 as 3, see $41.78e3).
 - 2FC6: ???
 - 2FC7: ???
 - 2FC8: ??? (dungeon/cave id?)
 - 2FD3-2FDF: ?? map2 (dungeon?) variables (specific to bank $04) ??
   - 2FD7: ???
   - 2FD9: ??? A stack pointer value, specific to bank $04 (written
     $04.67de) ??
   - 2FDA: ???
   - 2FDB: ??? (used to set $99, see $04.764c, $04.7b18, $04.7baa)
   - 2FDE: ??? script tag id or zero?
   - 2FDF: ??? script tag id or zero?
 - 2FF6: ??? local to $02.64f3-$65a6 party member defends routine.
 - 2FF7: ??? local to $02.64f3-$65a6 party member defends routine.
 - 2FF8: ??? (set $02.613c)
 - 2FF9: ??? tried/failed to escape flag? (set $02.6131, $02.6f7b,
   read $02.6225 and several other places)
 - 2FFB: Combat event index? local to $02.621a-$62fb one round of
   combat routine.
 - 2FFC.W[9]: ??? combat event records? (initialized $02.62fc, parsed
   $02.6255)
 - 300E: "did-something" flag, local to $02.6363-$63a1 sort routine.
 - 300F.W: Empty inventory slot address, local to $02.67e2-$683b.
 - $3011: Combat item drop, local to $02.67e2-$683b.
 - 3012: ??? encounter table id (see $02.75a2) ??
 - 3013: ?? Section 24 tag IDs for critical strike type, or zero for
   no critical (written $02.6422, $02.64c3, $02.6871, $02.691c, read
   $02.6a20, $02.6a27, values are $00, $1b (27), and $1c (28)) ??
 - 301C.W: ??? something with enemy animation (written $43.726c,
   $43.727a, read $43.7402, $43.7424, $43.7451, $43.747a) ??
 - 3023.W: ??? VRAM address ??
 - 3039.W: Pointer to monster ??? data, local to $45.771c-$7794.
 - 303B: ??? local to $45.771c-$7794.
 - 3A00-3A9F: ??? VRAM data(?), see $04.7862 ??
 - 3B00.W: ??? pointer ?? random encounter data (written
   $02.75b1-$75cc, read $02.72d9-$02.72e7) ??
 - 3B02.W: ??? pointer ?? monster data ??
 - 3B04.W: ??? pointer ??
 - 3B06: ??? (monster record id?) ??
 - 3B07.W: ??? pointer (lowest address $8c00), monster data template,
   12-byte ($0c-byte) stride ??
 - 3B09: ??? number of enemies minus one ??
 - 3B0A: ??? character id ?? combat-only ??
 - 3B0C[8]: ???
 - 3B16: ???
 - 3B17: ??? character id ?? combat-only ??
 - 3B18.W: ??? character data pointer ?? combat-only ??
 - 3B1A.W: ???
   - 3B1B: ???
 - 3B1C-3B3B: ??? copied character data record ??
   - 3B1C: current HP.
   - 3B1D: current MP.
   - 3B1E: maximum HP.
   - 3B1F: maximum MP.
   - 3B20: Attack power.
   - 3B21: Defense power.
   - 3B22: Speed; determines combat turn order (higher=sooner) and
     combat hit chance (relative to opponent value) ??
   - 3B23: equipped weapon.
   - 3B24: equipped headgear.
   - 3B25: equipped shield.
   - 3B26: equipped armor.
   - 3B27[8]: spell table.
   - 3B2F[8]: inventory.
   - 3B37: ??? defense strength boost ??
   - 3B38: ??? non-zero if magic has been sealed ??
 - 3B3C-3B4B: ??? copied monster data record ??
   - 3B3C: name tag (in section 30).
   - 3B3D.W: ?? (HP?)
   - 3B3F: ?? (MP?)
   - 3B40: Attack ??
   - 3B41: Defense ??
   - 3B42: Speed; determines combat turn order (higher=sooner) and
     combat hit chance (relative to opponent value) ??
   - 3B43: ??? (only zero if MP is zero, spell set ??)
   - 3B44.W: gold.
   - 3B46: experience.
   - 3B47: droppable item ID.
   - 3B48: ??? (ref. banks $45 and $47, poss. magic being sealed?)
   - 3B49.W: ?? (HP? Max HP?)
   - 3B4B: ?? unused ??
 - 3C00: ???
 - 3C12: ???
 - 3C19: ???
 - 3D00[$52]: ??? something to do with savegame passwords (see
   $04.6611) ??
 - 3D50[$50]: ??? something to do with savegame passwords (see
   $04.6604) ??
 - 3E00-3FC8(?): Audio driver memory.
   - 3E00: ??? (see $01.5188-$51e1) sound effect to play ?? BGM track
     to play ??
   - 3E01[6]: ??? See $00.f000 ??
   - 3E07[2]: ??? See $00.f00c ??
   - 3E0D: ??? bank ID of some sort ??
   - 3E0E: ??? bank ID of some sort ??
 - 3FC9-3FFF: ?? possibly unused ??