Arcana/ROM map

From Data Crystal
< Arcana(Redirected from Arcana:ROM map)
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Arcana.

(Back to Main page)

FOREWORD: How to read Arcana's event code

The majority of Arcana's subroutines are through opcodes, which is like reading another assembly language. (See this page's Bank 00 section for command details.) The code uses a set of commands, the animations use a different set of commands, and drawing text to the screen uses a third set. They are very difficult to follow with just a standard tracelog. Predominantly when tracing or breakpointing code, you'll see a lot of the 00/902B command "LDA [$10]". (This is SNES for: read the address stored in the variable $xx10, read the value at that address, and store that value in the accumulator.) After 902B reads an opcode [byte], it goes to a pointer table and calls the code for that command. (For instance if 902B reads a "07", the table tells it to call 00/9527. 9527 reads the next 3 bytes after the 07, then jumps execution there. In other words, it's a subroutine call.)

Since many commands read adjacent data, it is *much* easier to follow along if you can read ahead a few bytes too. So, it is highly recommended to follow along in a hex editor when tracing. Reminder that this is a LoROM game, so something the emulator says is at 01/9260 will be at byte 9260 in your separate hex editor. Something at 02/8000 will be at byte 10000. A tool like Lunar Address can easily convert between PC addresses and SNES LoROM addresses, it's a good idea to double check before digging around in the wrong area. 

Also keep in mind that the SNES is little-endian, so a 3-byte pointer 07/B220 is read in reverse as 20 B2 07.

So here's an example. This is the event handling for the "Look" command that checks for treasure chests. These show the ROM location being read, the bytes being read (the opcode is spaced separately from the parameters for clarity), and a summary of what happens there.
01/9260: 30  FF                     Clear the animation ID
01/9262: 07  20 B2 07               Call subroutine 07/B220, which returns 1 if in a dungeon or 0 if in a town
01/9266: 0B  72 92                  If false/0, jump to 9272 (don't open a treasure chest if in town)
01/9269: 07  16 A8 07  80 00        Call subroutine 07/A816, compare current floor tile to 0080 (treasure chest tile). Return 1 if true.
01/926F: 0C  7D 92                  If true, jump to 927D
01/9272: 07  AC A0 00  BD 8F 08 00  Call subroutine 00/A0AC to display text at 08/8FBD "Nothing here !" (the 00 parameter is used by the text parser)
01/927A: 1A  8A 92                  Jump always to 928A (waits for an A press, then closes the menu)

01/927D: 07  27 A8 07               Call subroutine 07/A827 (looks up and saves the treasure chest contents, and animates the chest opening)
01/9281: 06  1E                     Wait 30 frames (for the chest to finish opening)
01/9283: 07  3D A8 07               Call subroutine 07/A83D (get treasure contents, add money/item/equipment to inventory)(returns 1 if the chest is a trap)
01/9287: 0C  A5 92                  If true (trapped chest), jump to 92A5 to start a random encounter (this is dummied out)
01/928A: 06  01                     Wait 1 frame
01/928C: 07  03 BA 07  00           Call subroutine 07/BA03 (wait for an A press) (the 00 parameter is related to the pause status)
01/9291: 0B  8A 92                  If false (the player hasn't pressed A) loop back to 928A.
01/9294: 06  0A                     Wait 10 frames
01/9297: 07  07 9D 00  74 B6 01     Call subroutine 00/9D07 to read formatted data from 01/B674 (related to closing the text box)
01/929D: 06  01                     Wait 1 frame
01/929F: 16  7B 15  01 00           Set RAM address $157B to 0001 (display the compass again)
01/92A4: 1C                         Return from subroutine (return to wherever the code was when 01/9260 was called)

This example is about standard in length. It's much easier to read this kind of code this way, but it's a laborious process by hand. *Most* opcodes read a set number of bytes, with the exception of subroutines and switch-case statements. So with the habit of seeing a 07 followed by a 3 byte pointer, or 0B followed by a 2 byte pointer, it's much easier to spot where the code is going next.


Now for something different, an example of text opcodes. The breakpoint for these is 00/A7B5 "LDA [$06]", where $06 is the current character or command.
This is from SCRIPT_003, where Rooks meets Ariel. The subroutines are shown to give a sense of how often the game calls the same commands.
0C/A27A: 10  C2 F7 0C               Read text subroutine 0C/F7C2 (MACRO_118)

MACRO_118:                          (This initializes the dialogue box)
0C/F7C2: 06  0D                     Set the text color to white
0C/F7C4: 0C                         Clear the dialogue box
0C/F7C5: 01  00 06                  Move the cursor to (00,06) (the top left of the dialogue box)
0C/F7C8: 03  0E                     Use normal vertical spacing
0C/F7CA: 00                         Return from text subroutine

0C/A27E: 10  E3 F7 0C               Read text subroutine 0C/F7E3 (PROMPT_ROOKS)

PROMPT_ROOKS:                       (This is a subroutine to write Rooks' name and a newline, since he talks a lot)
0C/F7E3: 05  FF 14                  Wait 14 frames
0C/F7E6: 0C                         Clear the dialogue box
0C/F7E7: 0D                         Newline (for some reason this is required for the wait to work)
0C/F7E8: 01  00 06                  Move the cursor to (00,06) (the top left of the dialogue box)
0C/F7EB: Rooks                      Rooks
0C/F7F0: 05  01 01                  Text speed 1 character per frame (fastest)
0C/F7F3: 0D                         Newline
0C/F7F4: 00                         Return from text subroutine

0C/A282: "Ariel, is that Ariel?"
0C/A299: 10  A5 FA 0C               Read text subroutine 0C/FAA5 (WAIT_CLEAR)

WAIT_CLEAR:                         (This waits for an A press, and clears anyone's face who's speaking)
0C/FAA5: 1B  00 FE                  Stop moving lips
0C/FAA8: 7F                         Pause for user input
0C/FAA9: 1B  00 FF                  Clear portrait
0C/FAAC: 0D                         Newline
0C/FAAD: 00                         Return from text subroutine

0C/A29D: 10  F5 F7 0C               Read text subroutine 0C/F7F5 (DISPLAY_ARIEL)

DISPLAY_ARIEL:                      (Loads Ariel's face, prints his name without moving his mouth, then starts moving his mouth.)
0C/F7F5: 1B  00 01                  Show Ariel's face (not speaking)
0C/F7F8: 05  FF 14                  Wait 14 frames
0C/F7FB: 0C                         Clear the dialogue box
0C/F7FC: 0D                         Newline (for some reason this is required for the wait to work)
0C/F7FD: 01  00 06                  Move the cursor to (00,06) (the top left of the dialogue box)
0C/F800: Ariel                      Ariel
0C/F805: 05  01 01                  Text speed 1 character per frame (fastest)
0C/F808: 0D                         Newline
0C/F809: 1B  00 00                  Show Ariel's face (start moving Ariel's mouth so the text coming up looks like he's talking)
0C/F80C: 00                         Return from text subroutine

0C/A2A1: "I haven't seen you "
0C/A2B5: 0D                         Newline
0C/A2B6: " since you were a boy."
0C/A2CD: 10  A5 FA 0C               Read subroutine WAIT_CLEAR
0C/A2D1: 10  E3 F7 0C               Read subroutine PROMPT_ROOKS
0C/A2D5: "Yes."

As you can see, while code opcodes called actual ASM, text opcodes only call more text opcodes. But that's a general rundown of what things look like internally.

Bank $00: Common functions; Event handling

$00/8153	Sub: NMI disable
$00/8167	Sub: NMI enable
$00/817B	Sub: Display Force Blanking
$00/818F	Sub: Set Display
$00/81BF	Sub: Set BG mode (1 byte parameter)
$00/81D8	Sub: Set OBJ Address (1 byte parameter)
$00/8208	Sub: Set OBJ Size (1 byte parameter)
$00/826E	Sub: Graphics dungeon stuff
$00/8327	Sub: Update screen
$00/8400	Sub: Update background scroll
$00/8465	Sub: Video stuff
$00/84B9	Table: DMA Control
$00/84D0	Table: DMA Destination
$00/84E7	Table: Videoport Control
$00/84FE	Sub: RAM Decomp80 (1 byte)
$00/8521	Sub: Decomp80 setup - Decompressor helper function. Reads a data entry that looks like "80 00 xx [xx/xxxx] xx xx" and passes the pointer to the decompressor.
$00/8766	Sub: Decompression. Similar to Run Length Encoding.
$00/88E2	Sub: Wait for VBLANK
$00/89F1	Sub: RNG (1 byte parameter) - can take a value ("5") and roll a range ("0-4"), or can provide a random 2 byte number through $1E0A.
$00/8A3D	Sub: Multiply to $1E00
$00/8B11	Sub: Set Mode7
$00/8BE4	Table: Bitwise1
$00/8BF4	Table: Bitwise2
$00/8C04	Table: HDMA channels (an AND table where all but 1 bit is set)
$00/8C34	Table: Bit flags
$00/9008	Sub: Main loop, pointer setup
$00/902B	Sub: Read Event Code. Reads the event opcode from program counter $1E10. (Very important line! Uses a jump table to run opcodes as code.)

Events: These opcodes run over half of the game. Most commonly you'll find code 07 for long calling a subroutine.
$00/90E7	Event Opcode 00 - This one is complicated, it's similar to a return
$00/90FA	Event Opcode 01 - Loops a number of times (1 byte input)
$00/911E	Event Opcode 02 - Loop end: jumps back to opcode 01
$00/9140	Event Opcode 1A - Jump always (2 bytes)
$00/9148	Event Opcode 03 - Jump long   (3 bytes)
$00/915A	Event Opcode 1B - Call subroutine (2 bytes)
$00/9177	Event Opcode 1C - Return from short subroutine/1B
$00/918D	Event Opcode 04 - Call subroutine (3 bytes)
$00/91BB	Event Opcode 05 - Return from long subroutine/04
$00/91DA	Event Opcode 06 - Delay x frames (1 byte)
$00/91EA	Animation Opcodes 30-37 (1 byte) - Sets or zeros the animation ID $0A7B,x
$00/9202	Animation Opcodes 38-3F (2 bytes) - Sets the cursor X position
$00/9250	Animation Opcodes 40-47 (2 bytes) - Sets the cursor Y position
$00/929E	Animation Opcodes E0-E7 (2 bytes)
$00/92D7	Animation Opcodes 58-5F (2 bytes)
$00/92F8	Animation Opcodes 60-67 (2 bytes)
$00/9319	Animation Opcodes F0-F7 (2 bytes)
$00/933A	Animation Opcodes 68-6F (2 bytes)
$00/9362	Animation Opcodes 70-77 (2 bytes)
$00/938A	Animation Opcodes F8-FF (2 bytes)
$00/93B2	Animation Opcodes 78-7F (3 bytes) - Reads an x offset, then stores 2bytes in $0FEF,x and zeros $0FFF,x (?)
$00/93CA	Animation Opcodes 80-87 (3 bytes)
$00/93E2	Animation Opcodes 88-8F (3 bytes)
$00/9409	Animation Opcodes 90-97 (3 bytes)
$00/9430	Animation Opcodes 98-9F (3 bytes)
$00/945E	Animation Opcodes A0-A7 (3 bytes)
$00/948C	Animation Opcodes 48-4F (2 bytes) - Adds to a total at $0937,x
$00/949F	Animation Opcodes 50-57 (2 bytes) - Adds to a total at $095B,x
$00/94B2	Animation Opcodes E8-EF (2 bytes) - Adds to a total at $097F,x
$00/94C5	Animation Opcodes C0-C7 (3 bytes)
$00/94F7	Animation Opcodes D0-D7 (0 bytes) - Zeros some stuff
$00/950F	Animation Opcodes D8-DF (1 byte)  - Takes an offset and zeros some stuff
$00/9527	Event Opcode 07 (3 bytes) - Call a subroutine. (Runs code, returns with RTL)
$00/954D	Event Opcode 0B (2 bytes) - Jump if false
$00/9562	Event Opcode 0C (2 bytes) - Jump if true
$00/9577	Event Opcode 11 (? bytes) - Switch-case: jump based on return value. Takes 1 byte (# of entries) plus 2 bytes per entry for the jump pointers.
$00/959D	Event Opcode 12 (? bytes) - Similar to 11, a switch-case
$00/95C7	Event Opcode 0D (0 bytes) - Similar to 00, some kind of return.
$00/95DF	Event Opcode 08 (2 bytes) - Similar to 1B, some kind of branch to a 2 byte pointer. Clears the animation loop.
$00/960C	Event Opcode 14 (1 byte)
$00/963F	Event Opcode 09 (3 bytes) - Similar to 04, some kind of long pointer jump.
$00/9655	Event Opcode 0A (0 bytes) - Clears the current animation loop.
$00/965F	Animation Opcodes A8-AF (0 bytes) - Increment animation ID (A8 = high speed, AF = low speed)
$00/9668	Animation Opcodes B0-B7 (0 bytes) - Decrement animation ID
$00/9671	Animation Opcodes B8-BF (1 byte)  - Adds (amount) to the animation ID
$00/968D	Event Opcode 19 (5 bytes?)- Similar to 0E, compares values
$00/96B8	Event Opcode 15 (4 bytes) - Compares an actor ID with a value.
$00/96CD	Event Opcode 0E (5 bytes) - Compares RAM to a value using a comparator (RAM Operations table)
$00/96F2	Table: RAM Operations (has pointers to functions for AND, OR, add, and XOR)
$00/9717	Event Opcode 0F (3 bytes) - Set actor (1 byte) to value (2 bytes). See Actor Arrays table.
$00/9739	Table: Actor Arrays - Pointers to RAM 09A3, 09C7, 09EB, 0A0F. These are used with an X offset to track various information. AKA var0, var1, var2, var3.
$00/9741	Event Opcode 10
$00/974A	Event Opcode 13 (3 bytes) - Set RAM address (2 bytes) to value (1 byte)
$00/975F	Event Opcode 16 (4 bytes) - Set RAM address (2 bytes) to value (2 bytes)
$00/9772	Event Opcode 17
$00/9791	Event Opcode 18
$00/97A0	Event Opcode 1D (3 bytes) - Stores a 2 byte pointer to $0A9F,x and the bank to $0AC3,x
$00/97B6	Event Opcode 1E (2 bytes) - Load value
$00/97C5	Event Opcode 1F (2 bytes) - Load value at address
$00/97D8	Event Opcode 20
$00/97F5	Event Opcode 21
$00/9814	Event Opcode 22
$00/982A	Event Opcode 23
$00/9847	Event Opcode 24 (1 byte)  - Load a value from 1 of 4 arrays
$00/9864	Event Opcode 25 (1 byte)  - Similar to 24 but sets the loop variable $0B9F,y
$00/9AF0	Sub: Get Event Code (1 byte) - Reads the next event opcode from the program counter $1E10
$00/9AF8	Sub: Get Event Code (1 byte) (returns long)
$00/9B00	Sub: Get Event Code (2 bytes)
$00/9B07	Sub: Get Event Code (2 bytes) (returns long)
$00/9C3C	Sub: Set/Get Music (1 byte)
$00/9C44	Sub: Set/Get SFX (1 byte)
$00/9CAE	Sub: Load sprite (14 bytes)
$00/9CBC	Sub: Character join (13 bytes)
$00/9CF9	Sub: Decomp80 Setup (3 bytes)
$00/9D34	Sub: Setup Display Stuff (8 bytes)
$00/9D69	Sub: Read BG mode (1 byte)
$00/9D6F	Sub: Display brancher (6 bytes) - byte0: 0-3 (function to call), byte1: A register, byte2-3: X register, byte4-5: Y register
$00/9D8B	Table: Display functions (used with 9D6F)
$00/9D93	Sub: Set sprite mode (4 bytes)
$00/9DA8	Sub: Main Screen add (1 byte)
$00/9DB6	Sub: Main Screen remove (1 byte)
$00/9DC6	Sub: Sub Screen add (1 byte)
$00/9DD7	Sub: Sub Screen remove (1 byte)
$00/9E79	Sub: Mosaic BG enable (1 byte)
$00/9E8A	Sub: Mosaic clear (1 byte)
$00/9E9D	Sub: Set Mosaic Size (1 byte)
$00/9EB8	Sub: Increase mosaic size
$00/9ECC	Sub: Decrease mosaic size
$00/9EE0	Sub: DMA Transfer (6 bytes)
$00/9F1F	Sub: Remove HDMA channel (1 byte)
$00/9F31	Sub: HDMA disable
$00/9F35	Sub: HDMA enable
$00/9F3C	Sub: Color Add Select (2 bytes)
$00/9F4F	Sub: Color Math Designation (2 bytes)
$00/9F83	Sub: Set RGB (3 bytes)
$00/9FA1	Sub: Set color planes
$00/9FE2	Sub: Add RGB (3 bytes)
$00/A00F	Sub: Check $31 for button press (2 bytes: button)
$00/A022	Sub: Check $21 for button press (2 bytes: button)
$00/A051	Sub: Loop until RAM is value (4 bytes: 2b RAM, 2b value)
$00/A0AC	Sub: Setup Text Parser (3 byte ptr) - Load text and text opcodes to be read
$00/A0BD	Sub: Call RNG (1 byte), something with screen
$00/A0C4	Sub: Update screen (1 byte)
$00/A0CB	Sub: Unfade from black
$00/A0DB	Sub: Fade to black
$00/A1D6	Pointer Table: 8DAD (Seems to govern animations throughout the game)
$00/A20C	Pointer Table: Event Brancher
$00/A31A	Pointer Table: 8DFA (Also seems to govern animations)
$00/A688	Sub: Set Text Parser (returns long)
$00/A68C	Sub: Set Text Parser
$00/A7B5	Sub: Read Text Opcode

Text opcodes: These control formatting in-between the plaintext before it's written to RAM.
$00/A858	Text Opcode 00 - Null terminator/stop reading
$00/A881	Text Opcode 01 - Move cursor to X,Y position
$00/A898	Text Opcode 02 - Used drawing the menus
$00/A8A8	Text Opcode 03 - Sets vertical spacing (03 0E = default)
$00/A8B5	Text Opcode 04 - Similar to 03, uncommon
$00/A8C2	Text Opcode 05 - Determines text delay, the # of frames it takes to write a letter to the screen.
$00/A8DE	Text Opcode 06 - Sets text color (white/gray or white/yellow depending on context)
$00/A8EC	Text Opcode 0C - Clears the screen and does some other stuff
$00/A902	Text Opcode 0D - Newline
$00/A919	Text Opcode 14 - Writes text in RAM to the screen(2 byte address)
$00/A943	Text Opcode 10 - Writes text in RAM/ROM to the screen(3 byte address)
$00/A969	Text Opcode 11 - Converts number to text(3 byte address)
$00/A9A8	Text Opcode 1C - Sets text scroll speed
$00/A9BD	Text Opcode 1D - Sets text scroll speed (1 line at a time)
$00/A9C5	Text Opcode 1E - Sets text scroll speed (fast)
$00/A9CD	Text Opcode 7F - Wait for A press
$00/A9E1	Text Opcode 1B - Draws portraits
$00/A9F7	Text Opcode 0F - Sets offset 26 (?)
$00/AA04	Text Opcode 08 - Move cursor to X position
$00/AA11	Text Opcode Text - Reads text if it isn't an opcode.
$00/AC34	Table: Variable Width Font, letter widths
$00/AD14	Graphics: Font tiles - Each letter is eighteen bytes and 12x12 pixels. The first entry is $20 (space) and the last is $7F (reserved).
$00/B3D3	Graphics: Font tiles (end)
$00/BCC8	Sub: Get VWF Length
$00/BCFD	Sub: Draw font tile
$00/BE07	Sub: Clears the screen of text

$00/C055	Sub: Hit calculation start
$00/C07C	Sub: Get row bonus
$00/C0B9	Sub: Miss check/crit check
$00/C132	Sub: No-element handling
$00/C2D4	Sub: Check if damage is over 999
$00/C30C	Sub: Load attacking Element
$00/C3CA	Sub: More element handling
$00/C431	Sub: Attack vs. Defense
$00/C585	Sub: Load stat boost modifier
$00/C5B1	Sub: Check for dead/removed actors, more
$00/C658	Sub: Load Strength modifier
$00/C66A	Sub: Load Endurance modifier
$00/C676	Sub: Load Alertness modifier
$00/C68A	Sub: Load Intelligence
$00/C6A7	Sub: Load Intelligence
$00/C6C4	Sub: Load Intelligence
$00/C6DC	Sub: Lots of branching. Returns crit chance or other variables
$00/C781	Sub: Load Armor defense
$00/C856	Sub: Loads spell power/element
$00/C88B	Sub: Multiplication (A * X)
$00/C8A1	Sub: Multiplication (AA * X)
$00/C8C2	Sub: Division (Returns A remainder, X result)
$00/D137	Sub: Checks if loaded music is $33 (must be SPC commands)
$00/D1AA	Sub: Loads HAL Logo theme
$00/D20B	Table: Song locations (these point to the song data in banks 1E and 1F)
$00/E01C	$FF padding (and deleted data)
$00/FFB0	ROM header

Bank $01: Game setup, gameplay, ending

$01/8001	Game start
$01/8053	A bunch of initialization/zeroing functions
$01/8913	Game over
$01/8A73	Event: Idling - Seems to run and roll RNG while standing in town
$01/8C85	Event: Loop: Draw Next Step - Listens for up/down/left/right press, calls a sub to check if moving there is valid, rolls for an encounter if on an encounter tile.
$01/8D04	Event: Encounter check
$01/8D24	Event: Check for map exit
$01/8DAE	Event: Random encounter - animates a screen flash, checks if it's a normal or back attack, then calls Roll_Encounter $18/8210 to determine the fight contents.
$01/9226	Event: Dungeon menu options - This loads the selected option and reads the pointer table at $19226 for that menu option event.
$01/923B	Event: Open the menu (checks if you're in a dungeon before loading the proper menu)
$01/9260	Event: Menu option: Look
$01/92DE	Event: Menu option: Inventory
$01/9584	Event: (Inventory) Item handling outside of battle
$01/9739	Event: Menu option: Color
$01/9838	Event: Menu option: Magic
$01/9AE7	Event: Menu option: Ability (Status screen)
$01/9BB6	Pointer: Draw status screen ($08/C93E)
$01/9BE5	Event: Menu option: Map
$01/9C77	Event: Menu option: Equipment
$01/9DA4	Event: Input loop: Equipment Menu
$01/9F30	Event: Menu option: Order (Switching party positions)
$01/9FEC	Event: Menu option: Call (Switching spirits)
$01/A126	Event: Turning step - this has four branches for determining how far the compass turns at once on a dungeon left turn, dungeon right turn, town left turn and town right turn.
$01/BBCA	Event: Draw blank spinny
$01/BBD4	Event: Loop/Scroll Credits
$01/BBEF	Event: Load The_End - animation commands for making The End pause midscreen
$01/BC0A	Sub: Update Credits Distance - Reads the Credits Distance for the next credit and updates its animation loop variable.
$01/BC1B	Table: Credits Distance - determines how far to space apart each credit.
$01/BC49	Sub: End Credits Check - Draws "The End" if $2E credits have been drawn
$01/BC5F	Sub: Advance Credits - Counts each time a new credit appears and increments $1927 Credits_Progress
$01/BC85	Table: Credits Animation IDs - A list of bytes that determines what order the credits are presented in
$01/BCB3	More Decomp80 entries - Probably credits related
$01/BD4D	Table: Decomp80 entries
$01/F98C	$FF padding (and deleted data)

Bank $02: Battles

$02/8001	Event: Load data, Enemy 00
$02/8137	Event: Load data, Enemy 01
$02/8C59	Event: Load data, Enemy 0C
$02/8CF3	Event: Status handling
$02/8D03	Event: Enemy paralyzed
$02/8D0E	Event: Enemy petrified
$02/8D19	Event: Enemy confused
$02/8D27	Event: Enemy asleep
$02/8D50	Event: Enemy's target select
$02/8D65	Event: Enemy's confusion targeting
$02/8D8A	Event: Check if Rooks is targetable
$02/8DB3	Event: Check if Spirit is targetable
$02/8DDC	Event: Check if Guest1 is targetable
$02/8E05	Event: Check if Guest2 is targetable
$02/8E2E	Event: Check if Enemies 1-8 are targetable
$02/8E63	Event: Enemy death check
$02/8E8A	Event: Enemy spell attack
$02/8EB6	Event: Enemy physical attack
$02/8EE2	Event: Enemy self-confusion damage
$02/8F24	Event: Enemy death animation
$02/8F65	Event: (Subroutine) Pause for user input
$02/8F79	Event: (Subroutine) Enemy attack animation
$02/8FC9	Pointer Table: Boss animations
$02/8FEA	Animation: Attack, Stone Guardian
$02/8FFC	Animation: Attack, Iron Guardian
$02/900E	Animation: Attack, Cyclops
$02/901A	Animation: Attack, Efrite
$02/90B9	Animation: Attack, Rimsala 2
$02/90FE	Event: Add enemy loot to total
$02/913D	Sub: Initializes a character/monster's stats from ROM at battle start

Bank $03: Event handling, towns

$03/A457	Sub: Load current tile's encounter value
$03/A499	Sub: Update dungeon progress?
$03/A52A	Dungeon BGM (See Music tab for ID list)
$03/A5EB	Pointer Table: Map, stairs logic
$03/D5BF	Item inventory limit (shops). Default $60 = $30 slots (48 items @ 8 per page) (see $07/AA28)
$03/DDD6	Item slots -1 x2, used after selling an item in town to check when to stop rearranging. (see $07/AA28)(should be $5E?)
$03/DF27	Bar prices (you know, the Alchemist guy)
		(NOTE: His prices are also plaintext in his dialogue and need to be edited separately)
$03/DFA2	Bar option 2 HP gain
$03/DFA4	Bar option 3 HP gain
$03/DFA6	Bar option 4 HP gain
$03/DFA8	Bar option 2 MP gain
$03/DFAA	Bar option 3 MP gain
$03/DFAC	Bar option 4 MP gain
$03/E052	Card prices (see Inventory)
$03/E2A8	Set up dialogue cursor

Bank $04: Town Graphics

$04/8001	Graphics: Town
$04/AC14	Graphics: Galia 1
$04/B379	Graphics: Galia 2
$04/B6E4	Graphics: Galia 3
$04/B7E4	Graphics: Castle 1
$04/C1D4	Graphics: Castle 2
$04/C583	Graphics: Castle 3
$04/C675	Graphics: Doraf 1
$04/CF7D	Graphics: Doraf 2
$04/D292	Graphics: Doraf 3
$04/D383	Graphics: Elf Village 1
$04/D9BF	Graphics: Elf Village 2
$04/DEB4	Graphics: Elf Village 3

Bank $05: Battles

$05/9F7B	Names, Characters ($0A bytes per entry + 00 delimeter)
$05/9FE9	Names, Enemies ($10 bytes per entry + 00 delimeter)
$05/A539	Enemy postfixes A-H (I forget what 81 40 means though)
$05/A554	Classes, Characters ($10 bytes per entry + 00 delimeter) NOTE: Using too long a name will result in a blank line.
$05/A5FE	Names, Areas ($10 bytes per entry + 00 delimeter)
$05/A895	Names, Elements ($06 bytes per entry + 00 delimeter)
$05/A8BF	Names, Status effects ($0C bytes per entry + 00 delimeter)
$05/A91A	EXP to next level, Rooks?
$05/A992	EXP to next level, Sylph?
$05/AA0A	EXP to next level, Dao?
$05/AA82	EXP to next level, Marid?
$05/AAFA	EXP to next level, Efrite?
$05/AB72	EXP to next level, Teefa
$05/ABEA	EXP to next level, Salah?
$05/AC62	EXP to next level, Darwin?
$05/ACDA	EXP to next level, Axs? (60 entries x 2 bytes)
$05/AD6A	Level-up stats, Rooks (HP, MP, Str, End, Int, Alt) (2 bytes per entry)
$05/B03A	Level-up stats, Sylph
$05/B2FD	Level-up stats, Dao
$05/B5CE	Level-up stats, Marid
$05/B89E	Level-up stats, Efrite
$05/BB7A	Level-up stats, Teefa
$05/BE4A	Level-up stats, Salah
$05/C11A	Level-up stats, Darwin
$05/C3EA	Level-up stats, Axs
$05/C6A3	A bunch of 0's and 1's
$05/C8D4	Level-up spells, Rooks
$05/C8E2	Level-up spells, Sylph
$05/C8F2	Level-up spells, Dao
$05/C8F2	Level-up spells, Marid
$05/C8FB	Level-up spells, Efrite
$05/C904	Level-up spells, Teefa
$05/C911	Level-up spells, Salah
$05/C91F	Level-up spells, Darwin
$05/C929	Level-up spells, Axs
$05/C92D	Monster race/element (2 bytes per entry) (ends at 2C9CB)
$05/C9CD	Monster Equipment stats, several unknown (start)
$05/CE54	Monster Equipment stats (end)
$05/CE55	Monster HP
$05/CEF5	Monster EXP
$05/CF95	Monster GP
$05/D035	Monster Lvl
$05/D0D5	Monster ?? stat - $20 entries of 00 through 05. No idea what this is.
$05/D195	Monster boss music (00 none, 01 Boss1, 03 Boss2, 02 Rimsala)
$05/D1E5	Monster boss flag (00-0F are bosses, FF are not bosses)
$05/D235	Monster spell. (If nonzero, there's a random chance they'll use that spell instead of attacking.) (see Spells page)
$05/D285	Monster ?? stat
$05/D405	Monster Armor Def table (bugged?): offset = Armor * 2
$05/D445	Monster Accessory Def table: offset = Accessory * 2
$05/D4A5	Possible monster stat
$05/D565	Possible monster stat
$05/DE88	Equipment prices (see Equipment tab)
$05/DF79	Equipment "can be equipped by" data (see Equipment tab)
$05/DFF3	Equipment power/defense
$05/E0E3	Equipment race bonus/element (2 bytes per item)
$05/E1D5	Equipment: weapon crit rate
$05/E226	Equipment: shield mag def ($05/E1D5)
$05/E24E	Equipment: weapon damage penalty
$05/E2C8	Equipment - spell cast in battle
$05/E356	Spells' names
$05/EA4D	Spells’ “battle only flag” (01: out of battle only, 02: battle only, 03: either)
$05/EA9F	Spells’ “single/multi target flag” (00: single, 01: multi); Change Attribute is broken as ST
$05/EAF1	Spells’ accuracy
$05/EB4D	Spells' power
$05/EC04	Spells' element (paired with an unknown byte, so skip a byte for each entry) (see Magic tab)
$05/ECA6	Spells' MP cost
$05/ECF8	Spells' color palette (see Magic tab)
$05/ED57	Spells’ sfx
$05/EE9A	Item names (look for LDA $05/EE9A,x or "BF 9A EE 05")
$05/F038	Card names (look for LDA $05/F038,x or "BF 38 F0 05")
$05/F17E	Sleeping Bag HP heal amount (200 HP) (Heals everyone but the spirits)
$05/F180	Sleeping Bag MP heal amount (25 MP)
$05/F194	Tent HP heal amount (999 MP) (Heals everyone but the spirits)
$05/F196	Tent MP heal amount (999 MP)
$05/F20A	Herbs heal amount (70 HP)
$05/F21F	Medicine heal amount (200 HP)
$05/F234	Silver Flask heal amount (15 MP)
$05/F249	Gold Flask heal amount (40 MP)

Bank $06: Graphics (Shops, world map, travel sprites); Stage select data

$06/928E	Compressed Graphics: Shop, Weapons
$06/9418	Compressed Graphics: Shop, Inn
$06/9626	Compressed Graphics: Shop, Spirit Healer
$06/97C0	Compressed Graphics: Shop, Alchemist
$06/98F6	Compressed Graphics: World Map 1
$06/C646	Compressed Graphics: World Map 2
$06/C971	Compressed Graphics: World Map 3
$06/CB33	Compressed Graphics: World Map 4
$06/CFC0	Compressed Graphics: World Map 5
$06/D2DB	Compressed Graphics: Travel Sprites, Rooks
$06/D4F6	Compressed Graphics: Travel Sprites, Teefa
$06/D744	Compressed Graphics: Travel Sprites, Salah
$06/D99F	Compressed Graphics: Travel Sprites, Darwin
$06/DB1F	Compressed Graphics: Travel Sprites, Axs
$06/DDBD	Stage select: Chapter 2 (These are essentially pre-made save files)
$06/E2BD	Stage select: Chapter 3
$06/E7BD	Stage select: Chapter 4
$06/ECBD	Stage select: Chapter 5

Bank $07: Dungeons and gameplay

$07/8001	Sub: Fighting final boss?
$07/80F2	Tbl: Levelup spells
$07/8CC4	Sub: Deducts HP from target
$07/8EDF	FINIS (tile bytes) (appears 2x for some reason)
$07/8F6E	SLEEP (appears 3x for some reason)
$07/8FEC	ROOKS
$07/9020	EFRITE
$07/903A	SALAH
$07/906A	End of names' sprite values
$07/A83D	Sub: Branches based on treasure chest contents
$07/A866	Sub: Card treasure type
$07/A872	Sub: Item treasure type
$07/A87E	Sub: Equipment treasure type
$07/A88A	Sub: GP treasure type
$07/A896	Sub: Monster treasure type (unused)
$07/A8AF	Sub: FFFF treasure type (unused???) (returns failure)
$07/A8BB	Sub: Empty treasure type (returns failure)
$07/A932	Sub: Loads a card name from ROM
$07/A95C	Sub: Loads an item name from ROM
$07/A986	Sub: Loads an equipment name from ROM
$07/A9D4	Sub: Adds a card to the inventory
$07/AA18	Sub: Adds an item to the inventory
$07/AA27	Item inventory limit (chests). Default $60 = $30 slots (48 items @ 8 per page)
$07/AA3D	Sub: Adds a weapon to the inventory
$07/AA4D	Equipment inventory limit (chests). Default $40 = $20 slots (32 items @ 8 per page)
$07/AA65	Sub: Adds GP to total
$07/AA6B	Max GP (FFFF)
$07/B234	Sub: Levelup check
$07/B2DB	Sub: When Teefa/Axs join, assigns them Rooks' LV
$07/B2E2	Sub: When Salah joins, assigns her Rooks' LV-3
$07/B2F5	Sub: When Darwin joins, assigns him Rooks' LV+3
$07/BBEA	Pointer table for character stats in RAM
$07/BBF6	Honey stat boost amounts (Str, Int, End, Alt, HP, MP)
$07/BC7C	Sub: Recovers MP, sets to full MP if more than max
$07/BCF1	Sub: Loop for full party healing; ends when X=08
$07/BF3A	Sub: Related to running
$07/BF54	Sub: Deducts MP from a spell
$07/C355	Pointer table for spell effects
$07/C8DE	SFX for Healing (See Music tab for values)
$07/C8E5	SFX for Change Attribute
$07/C8E4	SFX for Buffs

Bank $08: Small scripts

$08/8000	Script, Battle/Towns/Items/Magic
$08/9650	Spell descriptions
$08/C93E	Status screen (184 bytes)
$08/C9F6	Status screen, current spirit (161 bytes)
$08/D3C3	Alchemist conversations

Bank $09: Unknown data

$09/80D3	Pointer table
$09/8215	Pointer table
$09/835D	Pointer table
$09/83D3	Pointer table
$09/843B	Pointer table
$09/84FD	Pointer table
$09/85C5	Pointer table
$09/868D	Pointer table
$09/98FB	Pointer table

Bank $0A: Extended font

(This is data left in from the Japanese version - they're 12x12 pixels in 1bpp format)
$0A/8000	Graphics: Punctuation, a different font alphabet, yen
$0A/86E4	Graphics: Symbols
$0A/9560	Graphics: Numbers
$0A/9692	Graphics: Latin upper case
$0A/98D2	Graphics: Latin lower case
$0A/9B12	Graphics: Hiragana
$0A/A1D2	Graphics: Katakana
$0A/A892	Graphics: Greek upper case
$0A/AAC0	Graphics: Greek lower case
$0A/AF52	Graphics: Cyrillic upper case
$0A/B2B2	Graphics: Cyrillic lower case
$0A/BCD2	Graphics: Kana half-width
$0A/C812	Graphics: Kanji

Bank $0B: Kanji

Bank $0C: Kanji, Main story

(Text is in plaintext, so it's easy to search for in the ROM.)
$0C/9CF9	Graphics: Kanji (end)
$0C/A010	Script 001: Rooks' introduction
$0C/A23A	Script 002: You look healthy
$0C/A7A6	Script 003: Something stung me
$0C/F703	Script 117: Prelude to the final battle
$0C/F7C2	Script Sub: MACRO 118
$0C/F7E3	Script Sub: PROMPT_ROOKS
$0C/FA1B	Script Sub: WAIT_NEWLINE
$0C/FAA5	Script Sub: WAIT_CLEAR

Bank $0D: Compressed graphics

$0D/8042	HUD graphics
$0D/833F	Font for character cards
$0D/91EF	Font for character cards (end)
$0D/9590	Weapons menu
$0D/95F2	Spell data MVN1
$0D/9712	Spell data MVN10
$0D/B711	Compass graphics

Bank $0E: VRAM data and graphics

$0E/8048	Tile Data: Something1 - Loaded after a continue through DMA[1] to VRAM 0061
$0E/8052	Tile Data: Something2 - Loaded after a continue through DMA[1] to VRAM 0081
$0E/805C	Tile Data: Something3 - Loaded after a continue through DMA[1] to VRAM 00A1
$0E/809B	Tile Data: Something12 - Loads tile #s 28-2C into VRAM 009A
$0E/8191	Graphics: Card, Rooks, Idle
$0E/8551	Graphics: Card, Rooks, Battle
$0E/88E5	Graphics: Card, Rooks, Attack
$0E/8C1F	Graphics: Card, Grim Reaper
$0E/8FCC	Graphics: Card, torn
$0E/92F9	Graphics: Card, skull
$0E/95A3	Graphics: Card, Sylph, Idle
$0E/99D9	Graphics: Card, Sylph, Battle
$0E/9D79	Graphics: Card, Sylph, Attack
$0E/A12C	Graphics: Card, Dao, Idle
$0E/A4DF	Graphics: Card, Dao, Battle
$0E/A8CD	Graphics: Card, Dao, Attack
$0E/AC91	Graphics: Card, Marid, Idle
$0E/B08D	Graphics: Card, Marid, Battle
$0E/B3D1	Graphics: Card, Marid, Attack
$0E/B715	Graphics: Card, Efrite, Idle
$0E/BB0E	Graphics: Card, Efrite, Battle
$0E/BEA9	Graphics: Card, Efrite, Attack
$0E/C292	Graphics: Card, BadTeefa, Idle
$0E/C6AB	Graphics: Card, GoodTeefa, Idle
$0E/CAC5	Graphics: Card, Teefa, Battle
$0E/CE75	Graphics: Card, Teefa, Attack
$0E/D25C	Graphics: Card, Salah, Idle
$0E/D66F	Graphics: Card, Salah, Battle
$0E/DA31	Graphics: Card, Salah, Attack
$0E/DDF8	Graphics: Card, Darwin, Idle
$0E/E1D3	Graphics: Card, Darwin, Battle
$0E/E518	Graphics: Card, Darwin, Attack
$0E/E863	Graphics: Card, Axs, Idle
$0E/EC0F	Graphics: Card, Axs, Battle
$0E/EF6B	Graphics: Card, Axs, Attack

Bank $0F: Battle animations

$0F/807C	Animation: Small attack
$0F/808C	Animation: Medium attack
$0F/809C	Animation: Large attack
$0F/817A	Pointer table: Animation data? (This is called by Pointer Table 8DFA)
$0F/CB2B	Event: Spell animation
$0F/CC01	Animation: Lightning
$0F/CC06	Animation: Smash
$0F/CC0B	Animation: Water
$0F/CC10	Animation: Flame
$0F/CC1F	Animation: Attribute 1
$0F/CC9D	Animation: Attribute 11
$0F/CCB1	Animation: Call Wind Spirit
$0F/CCC5	Animation: Dummied
$0F/CCC6	Animation: Swirly
$0F/CEB9	Animation: 5D: Rooks Unpetrify cutscene
$0F/CF00	Animation: 5E: Ariel Attribute 11 cutscene
$0F/CF2B	Event: Single spell animation

Bank $10: Compressed gfx

$10/8001	Graphics: Balnea Temple/Reused bricks
$10/C58D	Graphics: Balnea Temple (end)

Bank $11: Compressed gfx

$11/8A91	Graphics: Forest of Doubt
$11/FBA7	Graphics: Forest of Doubt (end)

Bank $12: Compressed gfx

$12/8571	Graphics: Bintel Castle
$12/E35E	Graphics: Bintel Castle (end)

Bank $13: Graphics and Maps

$13/8001	Graphics: Draven Pass
$13/DACA	Graphics: Draven Pass (end)
$13/EBF6	Map: Balnea Temple 1F
$13/ECFE	Map: Balnea Temple 2F
$13/EE08	Map: Draven Pass
$13/EE8C	Map: Crimson Valley
$13/EEF2	Map: Forest of Doubt
$13/F763	Map: Bintel Castle
$13/F9A6	Map: Stavery Tower (Chapter 5)

Bank $14: Compressed sprites

(This bank starts with a bunch of Decomp80 entries that are basically pointers elsewhere.)
$14/8001	Decomp80: Location of Ariel graphics
$14/8009	Decomp80: Location of Teefa graphics
$14/8012	Decomp80: Location of Crystal Room 1 graphics
$14/801A	Decomp80: Location of Crystal Room 2 graphics
$14/8022	Decomp80: Location of Crystal Room 3 graphics
$14/91D1	Graphics: Stoned Axs
$14/F25A	Graphics: Darwin NPC

Bank $15: Compressed sprites

$15/B4F1	Graphics: The Seven MacGuffins (ends at B87A)
$15/EE8D	Graphics: Ariel kneeling

Bank $16: Compressed sprites

$16/B8EC	Graphics: Final fight
$16/BE83	Graphics: The Three MacGuffins

Credits text is 5 bytes per letter, in reverse order.
Byte0: 00 normally, or 02 for the final (first) letter.
Byte1: X position - 00 is center screen, 43 is center right, B5 is center left. So negative numbers are left of center.
Byte2: Y position - Usually 01
Byte3: The tile to display. 00="A", 02="B", 04="C", ... 0E="H", 20="I", 22="J", 24="K"... 2E="P", 40="Q", 42="R", ...64-68="KOBY"... 80="ER"
Byte4: Font color - 3C for orange text (headers), 3E for white text (names)
$16/D883	Credits Text 00: "Character Designers"
$16/D8D8	Credits Text 01: "Executive Producer"
$16/EE3B	Credits Text 42: "Ami Hashikura"
$16/EEDB	Credits Text 44: "THE END"
$16/EF17	Pointer Table: Credit Text locations

Bank $17: Initialization

$17/8130	Intro script ("This is an historic land")
$17/833F	Sub: Stage Select (logs your inputs and compares them to the right codes)
$17/840E	Sound test
$17/8417	Sub: Load sound test
$17/874E	Text: Intro crawl 1 "According to the ancient legends..."
$17/87BC	Text: Intro crawl 2 "Disputes broke out constantly..."
$17/8A6D	Text: Intro crawl 7 "King Wagnall was killed..."
$17/9285	HAL logo gfx header

Bank $18: Treasures, encounters, events

$18/802E	Sub: Random encounter logic
$18/8044	Encounter rate (higher = fewer encounters) (Default $0C)
$18/8056	Sub: Random encounter
$18/80DB	Sub: Normal (returns 3)/back attack (returns 2)?
$18/8210	Sub: Formations
$18/826A	Snip: Loads the proper battle music ID
$18/82B6	Snip: Loads monster ID from formation
$18/82E2	Table: Battle music IDs (normal, boss, goddess, final)
$18/85AB	Sub: Returns treasure data (A: item type, X: value)
$18/85D2	Sub: Updates treasure tracker ($18E3) after opening a chest
$18/8A99	Table: Pointers for chapter treasures tables
$18/8AA3	Table: Treasure data Ch1 (12 bytes per entry)
$18/8B1D	Table: Treasure data Ch2 (12 bytes per entry)
$18/8CB7	Table: Treasure data Ch3 (12 bytes per entry)
$18/8EBD	Table: Treasure data Ch4 (12 bytes per entry)
$18/8FEB	Table: Treasure data Ch5 (12 bytes per entry)
Ch5 examples:
$18/9001	Location of Robe of Valor in Bintel Castle first room
$18/900D	Location of Gold Flask in Bintel Castle first room ^_^
$18/9079	Location of Grand Shield
$18/9023	Desiree data (02 0C = Equipment id 0C)
$18/9047	Return Ring data in "A Tunnel".
$18/9101	Table: Pointers to boss locations by chapter (Ch1: +0, Ch2: +2 etc)
$18/910B	Table: Ch1 boss fights (8 bytes/entry): 00 01-> Map 00 Balnea 1F; 0F00 0600 -> (0F, 06); 0600 -> Encounter #6)
$18/911D	Table: Ch2 boss fights (8 bytes/entry)
$18/912F	Table: Ch3 boss fights (8 bytes/entry)
$18/9139	Table: Ch4 boss fights (8 bytes/entry) empty, needs research
$18/913B	Table: Ch5 boss fights (8 bytes/entry) empty, needs research
$18/913D	Table: Pointers to encounters by chapter (Ch1: +2, Ch2: +4 etc)
$18/9147	Table: Ch1 encounters
$18/9177	Table: Ch2 encounters
$18/91AA	Table: Ch3 encounters
Ch3 example:
$18/91B3	Encounter data (1C 1D 1E 1A 1B -> 5 monsters in Ice Cave)
$18/91DD	Table: Ch4 encounters
$18/9229	Table: Ch5 encounters
$18/964F	Pointer Table: Every story scene - logic handling
$18/968F	Pointer Table: Every story scene - event code
$18/96CC	Story Event 00: Rooks' intro
$18/C551	Story Event 1A: Red and Blue Guardian
$18/C6D1	Story Event 1B: Tiamat
$18/D019	Epilogue text setup

Bank $19: Enemy graphics

$19/8001	Pointer Table: Enemy Palette data
$19/80A1	Bank Table: Enemy Palette data (the entries are all bank 19)

Each of these entries pointed to by the Enemy Palette Data table have the same format.
A header: A word (unknown use), then another word (the number of bytes in the palette, usually 20 (thirty two)).
Then the palette for that individual monster, and finally a 24-bit pointer to the enemy graphics getting colored. For instance, the Goblin and Ogre will have the same pointer but different palette data.
$19/80F1	Palette Header: Goblin
$19/8118	Palette Header: Ogre
$19/813F	Palette Header: Slime
$19/8166	Palette Header: Jell
$19/818D	Palette Header: Pilferer
$19/81B4	Palette Header: Thief
$19/8D3E	Palette Header: Karul
$19/8D85	Palette Header: Galneon 1
$19/8DEC	Palette Header: Galneon 2
$19/8E53	Palette Header: Rimsala 1
$19/8EBA	Palette Header: Rimsala 2
$19/8F21	Pointer Table: SourceData 1 - Called after enemy attack animations. The first and second table are used together (1st entry of each, etc)
$19/8F31	Pointer Table: SourceData 2
$19/8F41	Data: SourceData1 Attack, Swords
$19/9311	Data: SourceData1 Attack, Bite
$19/961C	Data: SourceData1 Attack, Sploosh
$19/9955	Data: SourceData1 Attack, Claws
$19/9D22	Data: SourceData1 Attack, Sting
$19/A0D8	Data: SourceData1 Attack, Punch
$19/A3F5	Data: SourceData1 Attack, ???
$19/A7A1	Data: SourceData1 Attack, Damage star
$19/AF4B	Compressed Graphics: Slime
$19/B3B5	Compressed Graphics: Thief
$19/B834	Compressed Graphics: Dog
$19/BF36	Compressed Graphics: Saurian
$19/C414	Compressed Graphics: Lizardman
$19/CACD	Compressed Graphics: Chimera
$19/D1B6	Compressed Graphics: Goblin
$19/D8EA	Compressed Graphics: Guardian
$19/E391	Compressed Graphics: Tree
$19/EAB2	Compressed Graphics: Flytrap

Bank $1A: Enemy graphics

$1A/8003	Compressed Graphics: Bee
$1A/85C7	Compressed Graphics: Zerel
$1A/936F	Compressed Graphics: Cyclops
$1A/9B65	Compressed Graphics: Efrite
$1A/AB44	Compressed Graphics: Mage
$1A/B1AA	Compressed Graphics: Zombie
$1A/B823	Compressed Graphics: Skeleton
$1A/BF23	Compressed Graphics: Medusa
$1A/C63A	Compressed Graphics: Troll
$1A/CE3C	Compressed Graphics: Mimic
$1A/D460	Compressed Graphics: Fighter
$1A/DB45	Compressed Graphics: Sauza
$1A/E79F	Compressed Graphics: Hydra
$1A/F18C	Compressed Graphics: Ghost
$1A/F843	Compressed Graphics: Shaman

Bank $1B: Enemy graphics

$1B/8003	Compressed Graphics: Minotaur
$1B/880D	Compressed Graphics: Giant
$1B/9005	Compressed Graphics: Dragon
$1B/9C58	Compressed Graphics: Darah and Barah
$1B/B0EC	Compressed Graphics: Ariel
$1B/BD89	Compressed Graphics: Teefa
$1B/CB84	Compressed Graphics: Karul
$1B/D912	Compressed Graphics: Galneon 1 and 2

Bank $1C: Enemy graphics

$1C/C21F	Compressed Graphics: Rimsala 1
$1C/D56A	Compressed Graphics: Rimsala 2
$1C/F297	Compressed Graphics: Rimsala 2 part 2

Bank $1D: Unknown or compressed data

Bank $1E: Sound and Music

$1E/97B0	Instrument data (6 bytes per entry)
$1E/9899	Instrument data (end)
$1E/A4D6	Sound effects (end)
$1E/A4D8	Song 33: Symphony of Elemen
$1E/BADC	Song 34: HAL logo theme
$1E/BBF4	Song 35: Our Story's Name
$1E/C04A	Song 36: Prologue to the Tale
$1E/C997	Song 37: Death Of A Loved One
$1E/CC55	Song 38: A New Chapter
$1E/D0A9	Song 39: Two Beautiful Princesses
$1E/D31C	Song 3A: (Rimsala being unsealed)
$1E/D469	Song 3B: (Rimsala being sealed)
$1E/D660	Song 3C: (Rimsala being sealed, seen from outside the tower)
$1E/D7DF	Song 3D: (Rimsala just sitting there... menacingly)
$1E/D86A	Song 3E: Reinoll ~ Generous Hermit
$1E/DE50	Song 3F: Ariel ~ Soldier of Betrayal (uh, spoilers.)
$1E/E133	Song 40: The Legend
$1E/E603	Song 42: Trickery
$1E/EC78	Song 43: Darwin ~ Treasure Hunter
$1E/F11A	Song 44: Alchemist's Workshop
$1E/F3DB	Song 45: Crystal Sword
$1E/F5B3	Song 46: Fanatical Warlock Galneon
$1E/FE40	Song 56: Trusted Circle
$1E/FF32	Song 58: Magician's Tent

Bank $1F: Music

$1F/8001	Song 41: (Rimsala awakens from the egg)
$1F/80FC	Song 47: Rooks ~ The Card Master
$1F/830B	Song 48: Birth Of A Hero
$1F/8442	Song 49: Journey
$1F/8537	Song 4A: Draven's Valley Pass
$1F/8A6F	Song 4B: Shrine for the Worship of Chaos
$1F/9234	Song 4C: Cavern of Ice
$1F/96FF	Song 4D: Silent Forest of Doubt
$1F/9A2E	Song 4E: Dark Castle Bintel
$1F/A7F3	Song 4F: Conflict
$1F/B0E6	Song 50: Decisive Battle
$1F/BA47	Song 51: Second Armageddon
$1F/C42D	Song 52: The Goddess
$1F/C8D0	Song 53: Grass Flute
$1F/C969	Song 54: Got Item
$1F/CAEB	Song 55: Fanfare
$1F/CF72	Song 57: Resting
$1F/D04A	Song 59: Town
$1F/D620	Song 5A: Weapon Shop (ends at $1F/D7D7)
$1F/D7D9	Shop-Related Data, Compressed (Called from $03/D0F4 Decomp_a_bunch. A hardcoded pointer to $1F/D7D9 is loaded before calling the compressor at $00/8762.)
$1F/FB2E	$FF padding