Illusion of Gaia:RAM map
Jump to navigation
Jump to search
The following article is a RAM map for Illusion of Gaia.
Bank $7e 0000-???? Scratch space. 0036-0037 Frame counter. Increased by 1 every NMI. 0038-0039 ? 003A-003D Map header data table address (hardcoded as $8D8000) 003E-0041 Scratch variable for addresses of assets during map transitions 0042-0045 Scratch variable for addresses of assets during map transitions 0046-0049 Address of currently playing music 004E-0051 Long pointer to next available RAM address for new actors 0052-0055 Long pointer to next available RAM address for new thinkers 0056-0057 Base address of first actor in actor list 0058-0059 Base address of last actor in actor list 005A-005B Base address of first thinker in thinker list 005C-005D Base address of last thinker in thinker list 0066-0067 Bitwise flags: DMA channels which are ready to be queued 0068-0069 Next available DMA channel's bitwise flag, for COP #$01-02 006A-006B Next available DMA channel * #$10, i.e. offset for $43xx writes 0072-007B Scratch variables for graphics decompression 0080-0082 Base RAM address of CollisionLayer (hardcoded as #$7FC000) 0096-00A5 Staging memory for map rearrangement 00B4-00B5 Name of map has been shown and dismissed 00B6-00CD Mode7 variables for world map movement 00D8-00D9 Next available manual OAM index 00E4-00E5 Timer used by end credits sequence 00E6-00E9 Unused (but modified during end credits sequence) 00F0-00FF Room-specific memory: Castoth hand states, scratch space for Vamps and credits, maybe other uses 0100-01FF Stack 0200-0401 Actor position table for collision detection 0402-0407 PHB; MVN $xx,$yy; PLB; RTS : rewritable mass memory mover, write banks at $0404 and JSR to here 0408-040B XX,YY signed displacement added to Player this frame (for wind etc.) 040C-040D Running-allowed timer: Player runs if they move while this is > 0; set to #$0D by D-pad input 040E-040F ? (Set every frame, but never used?) 0410-0421 Pseudo-random bytes; access RNG with COP #$23/24 0422-0621 OAM Low Table buffer 0622-0641 OAM High Table buffer 0642-0643 Index for the next map to load (checks multiple times a second to see if new value is in here which triggers next level load) 0644-0645 ID of the current map (high byte should always be 0) 0646-0647 2*ID of the current map 0648-064B Map transition fade-out type, fade-in type, fade-out time modifier, fade-in time modifier 064C-064F Player spawn position on new map 0650-0653 Facing direction, map size, and camera settings for new map 0654-0655 Working variable for screen settings during map transition 0656-0657 Joypad bits: ABST on attack frame, others on attack and hold frames 0658-0659 Working variable for ABST joypad button processing 065a-065b Bitmask for disabling joypad buttons, e.g. when Will is hurt 065c-065d Bitmask for disabling joypad buttons, e.g. on item screen 065e-065f Joypad bits (IOG format), all buttons on attack and hold frames 0660-0661 Like $065e but in SNES format at start of frame, then converted to IOG 0662-0663 Direction button held timer for menu screens 0675-0677 Current map's sprite graphics data source address 0678-067A Current map's tileset data source address (Layer 1?) 067B-067D Current map's tileset data source address (Layer 2?) 067E-0680 Current map's BG1 arrangement data source address 0681-0683 Current map's BG2 arrangement data source address 0684-0686 Current map's sprite data (0x10 map header) source address 0687-0689 Current map's music address 068A-0691 MapLayerX/EffectLayerX/MapLayerY/EffectLayerY camera position, for rendering engine use 0692-0699 MapLayerX/EffectLayerX/MapLayerY/EffectLayerY dimensions 069A-069D MapLayer/EffectLayer total size 069E-06A1 MapLayer/EffectLayer base RAM addresses, bank $7E, hardcoded $A000 and $C000 06AE-06BD Hardcoded RAM addresses (bank $7E) of RAM->VRAM mapping and staging tables 06BE-06C5 MapLayerX/EffectLayerX/MapLayerY/EffectLayerY (?) camera position, editable copy for actors to write 06D6-06D9 Current camera offset XX,YY 06DA-06DD Current camera bounds XX,YY 06EF-06EF Bitwise flags? $08 = "Push Mode-7 data to PPU at top of frame" 06F0-06F1 Default actor parameter/properties 06F2-06F3 Current map's music track ID 06F4-06F5 During map transition, new map's music group 06F6-06F7 Current map's music group 06F8-06F9 Small buffer for writing bytes to APU channel 2 (plays sounds) 06FA-06FB ? 06FC-06FE OAM1 player data ROM source address, base 06FF-0714 OAM1 ROM source addresses; copies #$40 bytes from each 0720-074F BG relative scroll/parallax workspace, e.g. for item screen and Inca clouds. 0800-08FF VRAM data write list, used e.g. during map rearrangement to change the VRAM tilemap 099E-099F BG3 tilemap drawing: default tile mask 09A0-09A1 BG3 tilemap drawing: target address 09A2-09A3 Player's X position (left side of sprite, center height, in pixels) 09A4-09A5 Player's Y position (left side of sprite, center height, in pixels) 09A6-09A7 Player's X Position (left side of sprite, center height, in tiles) 09A8-09A9 Player's Y Position (left side of sprite, center height, in tiles) 09AA-09AB Current address of Player actor in actor tables 09AC-09AD ? 09AE-09AF Player attack and control flags & $0001 Attack button pressed & $0002 Player's body destroys obstacles & $0004 ? & $0008 Attack disabled & $0010 Quake used, freeze world & $0020 Player doesn't die at 0 HP & $0040 ? & $0080 ? & $0100 ? & $0200 Death in progress & $0400 ? & $0800 Special move pattern, e.g. Aura Ball or ladder & $1000 ? & $2000 Action in progress, can't walk & $4000 ? & $8000 Special sprite instead of normal Body 09B0-09B1 Unused (would have been: tile type that animates player stuck on it, if using cop #$96-8) 09B2-09B3 Current running speed if running east (positive) or west (negative) 09B4-09B5 Current running speed if running south (positive) or north (negative) 09CC-09CF Long-address of player sprite data in previous frame ($7F100C-D,8) 09D0-09DF Psycho Dash position tracker, for symmetric movement 09E0-09E1 Current attack damage bonus 09E2-09E3 Additional ranged attack damage bonus 09E4-09E5 Working variable for enemy damage processing 09E6-09E7 Target's current HP 09E8-09E9 Unused? 09EA-09EB If set, show enemy health bar for up to 31 more frames? 09EC-09ED Rendering flags for BG3/HUD/text, almost entirely unknown purposes 09EE-09EF Direction of player's most recent attack (SNWE = 0123) 09F0-09F3 Working variables for vampire boss coordinated attack 09F4-09F5 Actor ID to tether camera to (usually Player, #$1000) 09F6-09FF Unused? [Save file: $0a00 - $0bfb] 0A00-0A1F Game flags $00-$FF 0A20-0A3F Game flags $100 and up, this section mostly map rearrangement / BG changes 0A40-0A4F Chest opened flags 0A50-0A5F More flags; 0-1 are Red Jewels, others are probably unused 0A60-0A7F Room clear reward obtained flags 0A80-0A9F Dungeon-level enemy-defeated flags 0AA0-0AA1 Boss-defeated flags 0AA2-0AA3 Special ability flags (0x01: Psycho Dash, 0x02: Psycho Slide, 0x04: Spin Dash, 0x10: Dark Friar, 0x20: Aura Barrier, 0x40: Earth Quaker) 0AA4-0AAD Temp state tracking, e.g. raft progress, Ishtar progress, snake game counter, placed hieroglyph type, active Dark Space type 0AAE-0AAF Unused? 0AB0-0AB1 Number of Collected Red Jewels (BCD-FORMAT!) 0AB2-0AB3 ? 0AB4-0AC3 Item Menu Slots, item index for every slot $00: Nothing $01: Red Jewel $02: Edward Castle Prison Key $03: Inca Statue A $04: Inca Statue B $05: Inca Melody (unused) $06: Herb $07: Diamond: Shaped Block $08: Wind Melody $09: Lola's Melody $0A: Large Roast $0B: Mine Key A $0C: Mine Key B $0D: Memory Melody $0E: Crystal Ball $0F: Elevator Key $10: Mu Palace Key $11: Purification Stone $12: Statue of Hope $13: Rama Statue $14: Magic Dust $15: Blue Journal (unused) $16: Lance's Letter $17: Necklace Stones $18: Will $19: Teapot $1A: Mushroom Drops $1B: Bag of Gold (unused) $1C: Black glasses $1D: Gorgon Flower $1E: Hieroglyph Plate 1 $1F: Hieroglyph Plate 2 $20: Hieroglyph Plate 3 $21: Hieroglyph Plate 4 $22: Hieroglyph Plate 5 $23: Hieroglyph Plate 6 $24: Aura $25: Lola's Melody $26: Father's Journal $27: Crystal Ring $28: Apple 0AC4-0AC5 Number of the equipped Item Slot (valid values: 0x00 to 0x0F, or FFFF for none) 0AC6-0AC7 Type of equipped item 0AC8-0AC9 Player's special sprite index (e.g. if in Psycho Dash or other stopping actions) 0ACA-0ACB Max HP 0ACC-0ACD Max HP (scratch value for rendering?) 0ACE-0ACF Current HP 0AD0-0AD1 Current HP (scratch value for rendering?) 0AD2-0AD3 ? 0AD4-0AD5 Player's current Body (0x00: Will, 0x01: Freedan, 0x02: Shadow, others: transformations) 0AD6-0AD7 Number of DP 0AD8-0AD9 Number of hundreds of DP 0ADA-0ADB Number of DP (scratch value for rendering?) 0ADC-0ADD Player DEF 0ADE-0ADF Player STR 0AE0-0AE1 Max HP of hit enemy, for drawing health bar 0AE2-0AE3 Current HP of hit enemy, for drawing health bar 0AE4-0AE5 Timer until enemy health bar stops being rendered (default #$003c frames) 0AE6-0AE7 Item screen BG tilemap selector 0AE8-0AE9 Type of item currently active 0AEA-0AEB ? 0AEC-0AED Number of enemies on the current map (hexadecimal) 0AEE-0AEF Number of enemies on the current map (decimal) 0AF0-0AF3 Death Warp: Address of eight "COP #$26" parameters for new map after death 0AF4-0AF7 Death Warp with DP: Address of parameters used if at least 100 DP are available 0AF8-0AF9 If nonzero, show death message on next screen transition 0B02-0B03 Difficulty level; can't be set in-game; affects a few projectile attacks 0B04-0B05 Default text speed (delay before each character) 0B06-0B07 ? 0B08-0B09 X position of Dark Space in outside map 0B0A-0B0B X size of Dark Space in outside map 0B0C-0B0D Y position of Dark Space in outside map 0B0E-0B0F Y size of Dark Space in outside map 0B10-0B11 Camera settings for outside map when leaving Dark Space 0B12-0B13 Map ID outside of current Dark Space 0B14-0B15 ? 0B16-0B17 Psycho Dash upgrade level 0B18-0B19 Psycho Slider upgrade level (does more damage) 0B1A-0B1B Spin Dash upgrade level (lasts twice as long and does more damage) 0B1C-0B1D Dark Friar upgrade level (0, 1, 2) 0B1E-0B1F Aura Barrier upgrade level (creates 4 shields; should do more damage but a bug prevents this) 0B20-0B21 Earthquaker upgrade level (no in-game effect) 0B22-0B22 Amount of HP to heal 0B23-0B23 ? 0B24-0B25 Active sound style, 0-1 0B26-0B27 Active control style, 0-1 0B28-0B33 Hieroglyph types currently set in Pyramid wall, 2 bytes each (#$FFFF = slot empty) 0BFC-0BFF Unused (placeholder for save file checksum) 0C00-0CB1 Table of on-screen objects that might need rendering or collision detection 0D52-0D53 Trigger for world map movement, then copied to $0D54 0D54-0D55 X coordinate of world map movement start point 0D56-0D57 Y coordinate of world map movement start point 0D58-0D59 Map movement text box index 0D5A-0D5B Forced map movement, movement ID 0D60-0D6B Sprite IDs for world map movement 0D6C-0D6D Screen size and camera settings for new map after map movement 0D6E-0D6E World map: preset destination map ID (if any) 0D6F-0D6F World map: previous map ID 0D72-0D73 Is music playing? 1 = Yes, 0 = No 0D74-0D79 Place on map to show as the save point for each save file 0D7A-0D7F HP to display for each save file 0D80-0D85 DEF to display for each save file 0D86-0D8B STR to display for each save file 0D8C-0D8D Active (currently being played) save file, 0-2 0D8E-0D8F Control style selected on menu; 0 = Type1, 1 = Type2 0D90-0D91 Sound style selected on menu; 0 = Stereo, 1 = Mono 0D92-0D93 Save file selected on menu, 0-2 0D94-0D95 Save file clicked most recently, 0-2 0D96-0D97 Empty save file selected for copying over on the menu, 0-2 0D98-0D99 Main menu option selected, 0-3 0D9A-0D9F HP,STR,DEF of one save file in BCD format; filled only when drawing the file menu 0DA0-0DA5 Unused? 0DA6-0DA7 Controller bit mask for IOG format, R button 0DA8-0DA9 Controller bit mask for IOG format, L button 0DAA-0DAB Controller bit mask for IOG format, B button (set by control style) 0DAC-0DAD Controller bit mask for IOG format, A button (set by control style) 0DAE-0DAF Controller bit mask for IOG format, Y button (set by control style) 0DB0-0DB1 Controller bit mask for IOG format, X button 0DB2-0DB3 Controller bit mask for IOG format, sTart button 0DB4-0DB5 Controller bit mask for IOG format, Select button 0DBC-0DBD Number of active actors 0E00-0EFF Table of available RAM addresses for new actors 0F00-0FFF Main thinker table, in #$10-byte chunks 1000-1FBF Main actor table, in #$30-byte chunks 1FC0-1FFF Unused 2000-27FF MapLayer tilemap RAM->VRAM mapping: maps RAM tiles $00-$FF to eight VRAM bytes 2800-2FFF EffectLayer tilemap RAM->VRAM mapping 3000-3021 Table of available RAM addresses for new thinkers 3100-340F BG tilemap RAM->VRAM staging area 3490-358F Item screen's backup of $0E00 - $0EFF 3590-368F Item screen's backup of $3000 - $30FF 3690-378F Item screen's backup of $0F00 - $0FFF 3790-388F Item screen's backup of $7F0F00 - $7F0FFF 3890-389B Item screen's backup of $06BE - $06C9 389C-38AB Item screen's backup of $004E - $005D 38AC-38B1 Item screen's backup of $0656 - $065B 38B2-38B3 ? 38B4-3AB6 Item screen's backup of $7F0A00 - $7F0C02 4000-6FFF Decompressed spritesets, sprite data; possibly other map load data too 7000-9FFF During map load, contains sprite and BG tiles before they are pushed into VRAM. After map load, this memory is free. Some actors put HDMA tables here. A000-BFFF MapLayer tilemap; $B000 and above are also the map screen (mode 7) tilemap C000-DFFF EffectLayer tilemap and map screen (mode 7) tilemap E000-EFFF Map screen (mode 7) tilemap Bank $7f 0000-00FF Tile properties (passable, wall, etc.) of every type of MapLayer tile; used during map load 0100-01FF Tile properties of every type of EffectLayer tile; used during map load 0200-09FF BG3 tilemap (pause screen, status bar, etc.) 0A00-0BFF Palette data 0C00-0C02 Color data for palette arithmetic (e.g. translucency) 0C03-0C06 Source address for optional DMA during VBlank ($0C06 is ignored) 0C07-0C08 Target VRAM word-address for optional DMA during VBlank 0C09-0C0A DMA transfer size 0F00-0FFF Additional thinker data, in #$10-byte chunks 1000-1FBF Additional actor data, in #$30-byte chunks 1FC0-1FFF Unused 2000-2FBF Additional actor data, in #$30-byte chunks 2FC0-2FFF Unused 3100-???? Manual OAM table, renders sprite tiles without needing an actor C000-DFFF CollisionLayer tilemap (base address stored at $7E0080 but hardcoded elsewhere) E000-EFFF Item screen's backup of $7E1000 - $7E1FFF F000-FFFF Item screen's backup of $7F1000 - $7F1FFF
Internal Data for Illusion of Gaia |
---|
ROM Map • RAM Map • Text Table • Notes • Tutorials |