If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Arcana/ROM map
< Arcana
Jump to navigation
Jump to search
(Back to Main page)
Bank $00: Common functions; Event handling
$00/89F1 Sub: RNG, can take a value ("5") and roll a range ("0-4"), or can provide a random 2 byte number through $1E0A. $00/902B Sub: Reads the event opcode from $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/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/9527 Event Opcode 07 - Call subroutine (3 bytes) (Runs code, returns with RTL) $00/954D Event Opcode 0B - Jump if false (2 bytes) $00/9562 Event Opcode 0C - Jump if true (2 bytes) $00/9577 Event Opcode 11 - Switch-case: jump based on return value (varied inputs) $00/96CD Event Opcode 0E - Compares RAM to a value using a comparator (5 bytes) $00/974A Event Opcode 13 - Set RAM address (2 bytes) to value (1 byte) $00/975F Event Opcode 16 - Set RAM address (2 bytes) to value (2 bytes) $00/97B6 Event Opcode 1E - Load value (2 bytes) $00/97C5 Event Opcode 1F - Load value at address (2 bytes) $00/9847 Event Opcode 24 - Load a value from 1 of 4 arrays (1 byte input) $00/9C3C Sub: Set/Get Music (1 byte) $00/9C44 Sub: Set/Get SFX (1 byte) $00/9B07 Sub: Main event handler $00/A00F Sub: Check $31 for button press (2 bytes: button) $00/A022 Sub: Check $21 for button press (2 bytes: button) $00/A0AC Sub: Load text to be read (3 byte location) $00/A0BD Sub: Call RNG (1 byte), something with screen $00/A0CB Sub: Unfade from black $00/A0DB Sub: Fade to black 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/A8C2 Text Opcode 05 - Text delay? $00/A8DE Text Opcode 06 - Sets text color (white/gray or white/yellow depending on context) $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/AA04 Text Opcode 08 - Move cursor to X position $00/A9A8 Text Opcode 1C - Sets text scroll speed $00/A9E1 Text Opcode 1B - Draws dialogue portraits $00/BE07 Sub: Clears the screen of text $00/C055 Sub: Hit calculation start $00/C07C Sub: Unknown mod; probably adds 0 to $00 $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
Bank $01: Game setup, gameplay, ending
$01/8001 Game start $01/8053 A bunch of initialization/zeroing functions $01/8913 Game over $01/8C85 Event: Handle dungeon movement $01/9584 Event: Item handling outside of battle $01/9BB6 Pointer: Draw status screen ($08/C93E)
Bank $02: Battles
$02/8CF3 Event: Status handling $02/8FC9 Tbl: Boss animations $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/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: Graphics
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: Stage select
$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/A932 Sub: Loads a card name from ROM $07/A9D4 Sub: Adds a card to the inventory $07/A872 Sub: Item treasure type $07/A95C Sub: Loads an item name from ROM $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/A87E Sub: Equipment treasure type $07/A986 Sub: Loads an equipment name from ROM $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/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/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 $0C: Main script
(Text is in plaintext, so it's easy to search for in the ROM.) $0C/A010 Script 000: Rooks' introduction $0C/F703 Script 117: Prelude to the final battle
Bank $0D: Compressed data
$0D/9590 Weapons menu
Bank $0E: Compressed gfx
$0E/92F9 Rooks gfx $0E/95A3 Sylph gfx $0E/A12C Marid gfx $0E/AC91 Dao gfx $0E/B715 Efrite gfx $0E/C292 Teefa gfx $0E/D25E Salah gfx
Bank $0F: Battle animations?
$0F/817A Really long pointer table
Bank $10: Compressed gfx
$10/8001 Balnea Temple/Reused brick gfx $10/C58D Balnea Temple gfx end
Bank $11: Compressed gfx
$11/8A91 Forest of Doubt gfx $11/FBA7 Forest of Doubt gfx end
Bank $12: Compressed gfx
$12/8571 Bintel Castle gfx $12/E35E Bintel Castle gfx end
Bank $13: Graphics and Maps
$13/8001 Draven Pass gfx $13/DACA Draven Pass gfx end $13/EBF7 Balnea Temple 1F map (These are all preceded by FF E4. Read break on $7FFC42 or similar and follow the DMA address given.) $13/ECFF Balnea Temple 2F map $13/F764 Bintel Castle map
Bank $15: Compressed sprites
$15/B4F1 The Seven McGuffins gfx (ends at B87A)
Bank $16: Compressed sprites
$16/B8EC Final fight gfx
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/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/9270 Table: Pointers to RNG seeds $18/947C RNG seed "10" from offset 0A $18/947D Entry size $18/94D9 RNG seed "01" from offset 0B (Chapter 2?) $18/C551 Red and Blue Guardian event $18/C6D1 Tiamat event $18/D019 Epilogue text setup
Bank $19-1D: Unknown or compressed data
Bank $1E, 1F: Sound and Music
Internal Data for Arcana
| |
---|---|