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.
Castlevania (NES, Famicom Disk System)/RAM map: Difference between revisions
Jump to navigation
Jump to search
Mariofan2468 (talk | contribs) No edit summary |
Lelegofrog (talk | contribs) m (Lelegofrog moved page Castlevania (NES)/RAM map to Castlevania (NES, Famicom Disk System)/RAM map: title consistency with TCRF) |
||
(61 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{rammap|game=Castlevania}} | {{rammap|game=Castlevania}} | ||
Address Size Description | |||
-------- ---- ----------- | |||
$0012 02 Various | |||
CHR Data Pointer | |||
''Points to CHR data, stored as follows:'' | |||
''byte 0 = value for $0027; byte 1-2 = CHR data RAM address;'' | |||
''byte 3-4 = PPU write address; byte 5-6 = data size'' | |||
$0018 System State | |||
00 = Booting; 01 = Title Screen; 02 = Demo Mode; 03 = Start Game; | |||
04 = Introduction; 05 = Gameplay; 06 = Respawning; 07 = Game Over; | |||
08 = Door Transition; 09 = Autowalk; 0a = Entering Castle; 0b = Autoclimb; | |||
0c = Scoring & Map; 0d = Continue; 0e = Falling; 0f = Ending | |||
$0019 System Substate | |||
$001A Frame Counter ''(resets to 01 when changing rooms)'' | |||
$001B Graphics Enabled | |||
$001D Transition Timer ''(used for autowalk sequences, death animation, and loading rooms)'' | |||
$001E Title Screen Bat State | |||
$001F Fade-in Timer | |||
$0020 Tile Data Pointer | |||
$0022 User Paused | |||
$0024 Current ROM Bank | |||
$0027 Previous ROM Bank | |||
$0028 Stage | |||
$0029 Previous Stage | |||
$002A Lives ''(01 = last life, can be set to #ff but displays as 99 max)'' | |||
$002B Difficulty | |||
$002C Score Target ''(grants 1Up when equal to $07FE, then increments by 3)'' | |||
$002D View Position Subpixel | |||
$002E 02 View Position | |||
$0035 Rightmost Tile Section | |||
$0036 Leftmost Tile Section | |||
$0037 02 Tile Map 1 Address | |||
$0039 02 Tile Map 2 Address | |||
$003B Tile Refresh Cutoff ''(toggles #20 every 32 pixels view moves)'' | |||
$003C Scroll State | |||
bit 0 = scroll right; bit 1 = scroll left; bit 2 = at room edge | |||
$003D Scroll Speed Subpixel | |||
$003E Off Stairs ''(always 00 at start of frame)'' | |||
$003F Simon Real Y-Coordinate | |||
$0040 02 Simon X-Coordinate Copy ''(for solid collisions)'' | |||
$0042 02 Timer | |||
$0044 Simon Display Health ''(adjusts every 4 frames to match $0045)'' | |||
$0045 Simon Real Health | |||
$0046 Floor ''(for stages with stair transitions)'' | |||
$0047 Stun Timer ''(when hit by enemies)'' | |||
$0048 Boss Screen ''(locks scrolling)'' | |||
$0049 Rightward Scroll Speed | |||
$004A Music Continuity ''(00 = load new BGM after stair & gate transitions)'' | |||
$004B Various | |||
Y-coordinate offset for solid collision | |||
Whip Collision Object | |||
Sprite Mirrored copy for rendering | |||
Subweapon ID ''($015B - #08)'' | |||
Display Health copy for adjusting health bars gradually | |||
Crusher Y-Offset | |||
$004C Various | |||
X-coordinate offset for solid collision | |||
Sprite Data Low Byte | |||
Enemy Drops Low Byte ''(indexed by [Stage-1]/3)'' | |||
Collision Width ''(max horizontal distance in collision check)'' | |||
Tile Solidity | |||
40 = #5F<Tile ID<#6C; 80 = Tile ID is #66 | |||
$004D Various | |||
Sprite Data High Byte | |||
Enemy Drops High Byte | |||
Collision Height ''(max vertical distance in collision check)'' | |||
$004E Various | |||
Tile Position Iterator ''(when loading new tiles)'' | |||
Current Instance ID | |||
Current Crusher ID | |||
$004F Various | |||
Potential Spawner Pointer | |||
Off-screen Attribute Overflow | |||
Crusher Sequence ''($001A - $004E)'' | |||
$0051 Scroll Attribute Mask ''(ref. $0300)'' | |||
00 = scrolled right; ff = scrolled left | |||
$0052 Scroll Speed | |||
$0053 Scroll Speed subpixel | |||
$005B Wounded Timer ''(for iFrames)'' | |||
$005F Simon Height | |||
$0063 Ghoul Counter ''(spaces Ghouls apart in Stages 01 & 20)'' | |||
$0064 Weapon Multiplier | |||
$006D Spawn Area To Load ''($0075-5 or $0076+5)'' | |||
$006F Randomizer | |||
$0070 Whip Level | |||
$0071 Hearts | |||
$0072 Subweapon Dropped ''(prevents multiple subweapons dropping)'' | |||
$0073 Whip Length | |||
$0074 Whip Height | |||
$0075 Leftward Stage Spawn Zone | |||
$0076 Rightward Stage Spawn Zone | |||
$0079 Subweapon Kills ''(until Multiplier drop)'' | |||
$007B Enemy Drops ''($007B & 3 determines item, ref. $004C)'' | |||
$007D Invincibility Potion Timer ''(unused, game uses $005B instead) | |||
$007F Ignore Sound Effect Request | |||
$0080 Square Wave 1 Duration | |||
$0081 Square Wave 1 Octave | |||
$0082 Square Wave 1 Track | |||
$0083 02 Square Wave 1 Note Address | |||
$0085 Square Wave 1 Volume Envelope | |||
$0087 Square Wave 1 Volume Write | |||
$0088 Square Wave 1 Halt | |||
$0089 Square Wave 1 Next Duration | |||
$008A Square Wave 1 Timbre | |||
$008B Square Wave 1 Fade Delay | |||
$008C Square Wave 1 Fade | |||
$008D Square Wave 1 Fade Speed | |||
$008E 02 Square Wave 1 Loop Address | |||
$0090 Square Wave 2 Duration | |||
$0091 Square Wave 2 Octave | |||
$0092 Square Wave 2 Track | |||
$0093 02 Square Wave 2 Note Address | |||
$0095 Square Wave 2 Volume Envelope | |||
$0097 Square Wave 2 Volume Write | |||
$0098 Square Wave 2 Halt | |||
$0099 Square Wave 2 Next Duration | |||
$009A Square Wave 2 Timbre | |||
$009B Square Wave 2 Fade Delay | |||
$009C Square Wave 2 Fade | |||
$009D Square Wave 2 Fade Speed | |||
$009E 02 Square Wave 2 Loop Address | |||
$00A0 Triangle Wave Duration | |||
$00A1 Triangle Wave Octave | |||
$00A2 Triangle Wave Track | |||
$00A3 02 Triangle Wave Note Address | |||
$00A5 Triangle Wave Linear Counter | |||
$00A7 Audio Timer Low copy 1 | |||
$00A9 Triangle Wave Next Duration | |||
$00AB Audio Channel Index | |||
80 = Square 1; 90 = Square 2; A0 = Triangle | |||
B0 = Noise; C0 = Square 1 SFX; D0 = Square 2 SFX | |||
$00AC Audio Channel Offset | |||
$00AE 02 Triangle Wave Loop Address | |||
$00B0 Noise Duration | |||
$00B1 Noise Octave? | |||
$00B2 Noise Track | |||
$00B3 02 Noise Note Address | |||
$00B7 Noise Volume | |||
$00B8 Audio Timer Low copy 2 | |||
$00BA 02 Working Note Address ''(used by all channels)'' | |||
$00BC Audio Timer Hi | |||
$00BD Audio Timer Low | |||
$00BE 02 Updated Note Address ''(same as $0083, $0093, $00A3, and $00B3)'' | |||
$00C0 Square Wave 1 SFX Duration | |||
$00C1 Square Wave 1 SFX Octave | |||
$00C2 Square Wave 1 SFX Track | |||
$00C3 02 Square Wave 1 SFX Note Address | |||
$00C5 Square Wave 1 SFX Volume Envelope | |||
$00C7 Square Wave 1 SFX Volume Write | |||
$00C8 Square Wave 1 SFX Halt | |||
$00C9 Square Wave 1 SFX Next Duration | |||
$00CA Square Wave 1 SFX Timbre | |||
$00CB Square Wave 1 SFX Fade Delay | |||
$00CC Square Wave 1 SFX Fade | |||
$00CD Square Wave 1 SFX Fade Speed | |||
$00CE 02 Square Wave 1 SFX Loop Address | |||
$00D0 Square Wave 2 SFX Duration | |||
$00D1 Square Wave 2 SFX Octave | |||
$00D2 Square Wave 2 SFX Track | |||
$00D3 02 Square Wave 2 SFX Note Address | |||
$00D5 Square Wave 2 SFX Volume Envelope | |||
$00D7 Square Wave 2 SFX Volume Write | |||
$00D8 Square Wave 2 SFX Halt | |||
$00D9 Square Wave 2 SFX Next Duration | |||
$00DA Square Wave 2 SFX Timbre | |||
$00DB Square Wave 2 SFX Fade Delay | |||
$00DC Square Wave 2 SFX Fade | |||
$00DD Square Wave 2 SFX Fade Speed | |||
$00DE 02 Square Wave 2 SFX Loop Address | |||
$00E0 02 Audio Track Address | |||
$00E2 Audio Fade-Out | |||
$00E3 Audio Fade-Out Timer | |||
$00E4 Audio Track Offset | |||
$00E5 Audio Track | |||
$00E6 Channel Pointer Alternate | |||
$00E7 Channel Pointer | |||
$00EE Stopwatch Mute | |||
$00EF Pause Music | |||
$00F1 02 Demo Behavior Address | |||
$00F3 Demo Cycle ''(determines stage and behavior)'' | |||
$00F4 Demo Mode | |||
$00F5 Gamepad 1 Input Pressed | |||
$00F6 Gamepad 2 Input Pressed | |||
$00F7 Gamepad 1 Input Held | |||
$00F8 Gamepad 2 Input Held | |||
$00FC 02 PPU Scroll | |||
$00FE PPU Mask ''(to change colors or disable sprites)'' | |||
$00FF PPU Control | |||
$0143 Fall Distance ''(stuns if greater than 7 when landing)'' | |||
$0144 Secrets Found ''(per stage)'' | |||
$0145 Secret Timer ''(how long Simon stands still)'' | |||
$0146 Blocks Broken | |||
$014A 03 Crusher State | |||
bit 0 = active; bit 2 = pause all crushers; bit 3 = falling | |||
$014D 03 Crusher Y-Coordinate ''(top of chain)'' | |||
$0150 03 Crusher X-Coordinate Low | |||
$0153 03 Crusher X-Coordinate High | |||
$0156 03 Crusher Position | |||
bits 0-3 = vertical-offset, multiplied by 8; | |||
bits 4-7 = return position ''($0156 >> 4 = $004B)'' | |||
$015B Subweapon | |||
08 = Dagger; 09 = Boomerang; 0A = Rosary ''(cut)''; | |||
0B = Holy Water; 0D = Axe; 0F = Stopwatch | |||
$015C Subweapons Locked | |||
$015D Rosary Flash | |||
'''''Spawners indexed by position in room, modulo 06''''' | |||
$0160 06 Spawner Disabled | |||
$0166 06 Spawner Object | |||
$016C 06 Spawner State | |||
$0172 06 Spawner X-Coordinate | |||
$017E 06 Spawner Y-Coordinate | |||
$0184 06 Spawner Timer | |||
$0190 0f Candle Status | |||
0f = upper floor destroyed; f0 = lower floor destroyed | |||
$01A9 Boss Real Health | |||
$01AA Boss Display Health | |||
$0200 ff OAM Data | |||
'''''Instances typically ordered as follows:''''' | |||
''Gameplay:'' | |||
''00 = Simon; 01-02 = Whip; 03-0d = Enemies; 0e-13 = Candles;'' | |||
''14-16 = Subweapons; 17 = Hidden Treasure; 17-18 = Moving Platforms;'' | |||
''18-1b = Debris (deliberately handled even while game is paused)'' | |||
''Title Screen:'' | |||
''00 = Bat; 01 = "C" Top; 02 = "C" Bottom'' | |||
''Gate Screen:'' | |||
''00 = Simon; 01 = Cloud; 02 = Left Bat; 03 = Right Bat'' | |||
''Map Screen:'' | |||
''00 = Simon; 17 = Map Position; 18 = Target Position;'' | |||
$0300 1c Attributes | |||
bit 0 = In-view; bit 7 = Invisible | |||
$031C 1c Sprite Frame | |||
$0338 1c Pallet Offset | |||
$0354 1c Y-Coordinate | |||
$0370 1c Y-Coordinate Subpixel | |||
$038C 1c X-Coordinate | |||
$03A8 1c X-Coordinate Subpixel | |||
$03C4 1c Vertical Speed | |||
$03E0 1c Vertical Speed Subpixel | |||
$03FC 1c Horizontal Speed | |||
$0418 1c Horizontal Speed Subpixel | |||
$0434 1c Object Index | |||
''Simon's Objects (just another state machine):'' | |||
00 = Passive; 01 = Standing Whip (and on stairs); 02 = Ducking Whip; | |||
03 = Jumping Whip; 81 = Standing Subweapon; 83 = Jumping Subweapon | |||
$0450 1c Sprite Mirrored | |||
$046C 1c State | |||
''Simon's States:'' | |||
00 = Walking; 01 = Jumping (and Air Attack); 02 = Ground Attack; | |||
03 = Ducking; 04 = Climbing Stairs; 05 = Knocked Back; | |||
06 = Approach Stairs; 07 = Dropping; 08 = Dead; 09 = Stunned; | |||
$0488 Jump State | |||
$0489 1b Animation Time | |||
$049F Moving Platform Speed ''(doubles per speed)'' | |||
$04A4 Simon Step Count ''(determines walking sprite frame)'' | |||
$04A5 1b Animation Frame | |||
$04C0 1c Sprite Index | |||
$04C2 Gate Bats Animation Timer ''(changes image every 4 frames)'' | |||
$04C3 Gate Right Bat Bob Timing | |||
$04DC Vertical Vector Address Low Byte | |||
$04DF 0b Various | |||
Bat & Medusae Base Focal Y-coordinate | |||
Simon above enemy | |||
Skeleton Motion Substate | |||
Fishman walking | |||
Bone Dragon Part Motion Substate | |||
Axe Armor Axe ID | |||
$04DF Gate Right Bat Bob Offset ''(add to $0533)'' | |||
$04EA 06 Candle Index ''(for $0190,Y writes)'' | |||
$04F0 03 Subweapon Collision ID | |||
$04F8 Vertical Vector Address High Byte | |||
$04FB 11 Various | |||
Movement Direction ''for moving backward'' | |||
00 = right; 01 = left; | |||
Bone Dragon Part Vertical Offset | |||
Drop Pickup Delay ''(pointless)'' | |||
$050C 03 Individual Subweapon Kills | |||
$050F 04 Moving Platform X-Coordinate Subpixel | |||
$0514 Vertical Direction | |||
$0517 11 Various | |||
Small Heart Focal X-coordinate | |||
Bone Dragon Part Vertical Offset Subpixel | |||
$052B Moving Platform Left Edge | |||
$0530 Simon Attack State ''(same as $046C)'' | |||
$0531 15 Spawner ID ''(based on 6 room positions)'' | |||
$0533 Gate Right Bat Y-Origin | |||
$054C In-Air Attack | |||
$054F 0d Generic Timer | |||
$0568 Whip Timer ''(counts up to #16)'' | |||
$056B 11 Extinguish Timer ''(duration of flare and drop)'' | |||
''For subweapons:'' | |||
''Boomerang = return time; Holy Water = burn duration'' | |||
$057F 02 Moving Platform Y-coordinate Subpixel | |||
$0582 Hidden Treasure Object | |||
00 = Coins; 01 = 1UP; 02 = Crown; 03 = Chest; 04 = Moai | |||
$0584 Gamepad 1 Input Held Copy | |||
$0587 11 Item Drop | |||
$059B 02 Moving Platform Y-Coordinate | |||
$05A0 160 Collision Map | |||
$0700 c0 Tile Data Dump | |||
$07F5 Previous Y Register ''(when audio loaded)'' | |||
$07F6 Next Sound Effect | |||
$07F8 Demo Gamepad Input Delay | |||
$07F9 Demo Gamepad Input Pressed | |||
$07FA Demo Gamepad Input Held | |||
$07FC 03 Score ''($07FE used for 1UP checks)'' | |||
<br> | <br> | ||
{{Internal Data|game=Castlevania}} | {{Internal Data|game=Castlevania (NES)}} |
Latest revision as of 15:35, 15 June 2024
The following article is a RAM map for Castlevania (NES, Famicom Disk System).
Address Size Description -------- ---- ----------- $0012 02 Various CHR Data Pointer Points to CHR data, stored as follows: byte 0 = value for $0027; byte 1-2 = CHR data RAM address; byte 3-4 = PPU write address; byte 5-6 = data size $0018 System State 00 = Booting; 01 = Title Screen; 02 = Demo Mode; 03 = Start Game; 04 = Introduction; 05 = Gameplay; 06 = Respawning; 07 = Game Over; 08 = Door Transition; 09 = Autowalk; 0a = Entering Castle; 0b = Autoclimb; 0c = Scoring & Map; 0d = Continue; 0e = Falling; 0f = Ending $0019 System Substate $001A Frame Counter (resets to 01 when changing rooms) $001B Graphics Enabled $001D Transition Timer (used for autowalk sequences, death animation, and loading rooms) $001E Title Screen Bat State $001F Fade-in Timer $0020 Tile Data Pointer $0022 User Paused $0024 Current ROM Bank $0027 Previous ROM Bank $0028 Stage $0029 Previous Stage $002A Lives (01 = last life, can be set to #ff but displays as 99 max) $002B Difficulty $002C Score Target (grants 1Up when equal to $07FE, then increments by 3) $002D View Position Subpixel $002E 02 View Position $0035 Rightmost Tile Section $0036 Leftmost Tile Section $0037 02 Tile Map 1 Address $0039 02 Tile Map 2 Address $003B Tile Refresh Cutoff (toggles #20 every 32 pixels view moves) $003C Scroll State bit 0 = scroll right; bit 1 = scroll left; bit 2 = at room edge $003D Scroll Speed Subpixel $003E Off Stairs (always 00 at start of frame) $003F Simon Real Y-Coordinate $0040 02 Simon X-Coordinate Copy (for solid collisions) $0042 02 Timer $0044 Simon Display Health (adjusts every 4 frames to match $0045) $0045 Simon Real Health $0046 Floor (for stages with stair transitions) $0047 Stun Timer (when hit by enemies) $0048 Boss Screen (locks scrolling) $0049 Rightward Scroll Speed $004A Music Continuity (00 = load new BGM after stair & gate transitions) $004B Various Y-coordinate offset for solid collision Whip Collision Object Sprite Mirrored copy for rendering Subweapon ID ($015B - #08) Display Health copy for adjusting health bars gradually Crusher Y-Offset $004C Various X-coordinate offset for solid collision Sprite Data Low Byte Enemy Drops Low Byte (indexed by [Stage-1]/3) Collision Width (max horizontal distance in collision check) Tile Solidity 40 = #5F<Tile ID<#6C; 80 = Tile ID is #66 $004D Various Sprite Data High Byte Enemy Drops High Byte Collision Height (max vertical distance in collision check) $004E Various Tile Position Iterator (when loading new tiles) Current Instance ID Current Crusher ID $004F Various Potential Spawner Pointer Off-screen Attribute Overflow Crusher Sequence ($001A - $004E) $0051 Scroll Attribute Mask (ref. $0300) 00 = scrolled right; ff = scrolled left $0052 Scroll Speed $0053 Scroll Speed subpixel $005B Wounded Timer (for iFrames) $005F Simon Height $0063 Ghoul Counter (spaces Ghouls apart in Stages 01 & 20) $0064 Weapon Multiplier $006D Spawn Area To Load ($0075-5 or $0076+5) $006F Randomizer $0070 Whip Level $0071 Hearts $0072 Subweapon Dropped (prevents multiple subweapons dropping) $0073 Whip Length $0074 Whip Height $0075 Leftward Stage Spawn Zone $0076 Rightward Stage Spawn Zone $0079 Subweapon Kills (until Multiplier drop) $007B Enemy Drops ($007B & 3 determines item, ref. $004C) $007D Invincibility Potion Timer (unused, game uses $005B instead) $007F Ignore Sound Effect Request $0080 Square Wave 1 Duration $0081 Square Wave 1 Octave $0082 Square Wave 1 Track $0083 02 Square Wave 1 Note Address $0085 Square Wave 1 Volume Envelope $0087 Square Wave 1 Volume Write $0088 Square Wave 1 Halt $0089 Square Wave 1 Next Duration $008A Square Wave 1 Timbre $008B Square Wave 1 Fade Delay $008C Square Wave 1 Fade $008D Square Wave 1 Fade Speed $008E 02 Square Wave 1 Loop Address $0090 Square Wave 2 Duration $0091 Square Wave 2 Octave $0092 Square Wave 2 Track $0093 02 Square Wave 2 Note Address $0095 Square Wave 2 Volume Envelope $0097 Square Wave 2 Volume Write $0098 Square Wave 2 Halt $0099 Square Wave 2 Next Duration $009A Square Wave 2 Timbre $009B Square Wave 2 Fade Delay $009C Square Wave 2 Fade $009D Square Wave 2 Fade Speed $009E 02 Square Wave 2 Loop Address $00A0 Triangle Wave Duration $00A1 Triangle Wave Octave $00A2 Triangle Wave Track $00A3 02 Triangle Wave Note Address $00A5 Triangle Wave Linear Counter $00A7 Audio Timer Low copy 1 $00A9 Triangle Wave Next Duration $00AB Audio Channel Index 80 = Square 1; 90 = Square 2; A0 = Triangle B0 = Noise; C0 = Square 1 SFX; D0 = Square 2 SFX $00AC Audio Channel Offset $00AE 02 Triangle Wave Loop Address $00B0 Noise Duration $00B1 Noise Octave? $00B2 Noise Track $00B3 02 Noise Note Address $00B7 Noise Volume $00B8 Audio Timer Low copy 2 $00BA 02 Working Note Address (used by all channels) $00BC Audio Timer Hi $00BD Audio Timer Low $00BE 02 Updated Note Address (same as $0083, $0093, $00A3, and $00B3) $00C0 Square Wave 1 SFX Duration $00C1 Square Wave 1 SFX Octave $00C2 Square Wave 1 SFX Track $00C3 02 Square Wave 1 SFX Note Address $00C5 Square Wave 1 SFX Volume Envelope $00C7 Square Wave 1 SFX Volume Write $00C8 Square Wave 1 SFX Halt $00C9 Square Wave 1 SFX Next Duration $00CA Square Wave 1 SFX Timbre $00CB Square Wave 1 SFX Fade Delay $00CC Square Wave 1 SFX Fade $00CD Square Wave 1 SFX Fade Speed $00CE 02 Square Wave 1 SFX Loop Address $00D0 Square Wave 2 SFX Duration $00D1 Square Wave 2 SFX Octave $00D2 Square Wave 2 SFX Track $00D3 02 Square Wave 2 SFX Note Address $00D5 Square Wave 2 SFX Volume Envelope $00D7 Square Wave 2 SFX Volume Write $00D8 Square Wave 2 SFX Halt $00D9 Square Wave 2 SFX Next Duration $00DA Square Wave 2 SFX Timbre $00DB Square Wave 2 SFX Fade Delay $00DC Square Wave 2 SFX Fade $00DD Square Wave 2 SFX Fade Speed $00DE 02 Square Wave 2 SFX Loop Address $00E0 02 Audio Track Address $00E2 Audio Fade-Out $00E3 Audio Fade-Out Timer $00E4 Audio Track Offset $00E5 Audio Track $00E6 Channel Pointer Alternate $00E7 Channel Pointer $00EE Stopwatch Mute $00EF Pause Music $00F1 02 Demo Behavior Address $00F3 Demo Cycle (determines stage and behavior) $00F4 Demo Mode $00F5 Gamepad 1 Input Pressed $00F6 Gamepad 2 Input Pressed $00F7 Gamepad 1 Input Held $00F8 Gamepad 2 Input Held $00FC 02 PPU Scroll $00FE PPU Mask (to change colors or disable sprites) $00FF PPU Control $0143 Fall Distance (stuns if greater than 7 when landing) $0144 Secrets Found (per stage) $0145 Secret Timer (how long Simon stands still) $0146 Blocks Broken $014A 03 Crusher State bit 0 = active; bit 2 = pause all crushers; bit 3 = falling $014D 03 Crusher Y-Coordinate (top of chain) $0150 03 Crusher X-Coordinate Low $0153 03 Crusher X-Coordinate High $0156 03 Crusher Position bits 0-3 = vertical-offset, multiplied by 8; bits 4-7 = return position ($0156 >> 4 = $004B) $015B Subweapon 08 = Dagger; 09 = Boomerang; 0A = Rosary (cut); 0B = Holy Water; 0D = Axe; 0F = Stopwatch $015C Subweapons Locked $015D Rosary Flash Spawners indexed by position in room, modulo 06 $0160 06 Spawner Disabled $0166 06 Spawner Object $016C 06 Spawner State $0172 06 Spawner X-Coordinate $017E 06 Spawner Y-Coordinate $0184 06 Spawner Timer $0190 0f Candle Status 0f = upper floor destroyed; f0 = lower floor destroyed $01A9 Boss Real Health $01AA Boss Display Health $0200 ff OAM Data Instances typically ordered as follows: Gameplay: 00 = Simon; 01-02 = Whip; 03-0d = Enemies; 0e-13 = Candles; 14-16 = Subweapons; 17 = Hidden Treasure; 17-18 = Moving Platforms; 18-1b = Debris (deliberately handled even while game is paused) Title Screen: 00 = Bat; 01 = "C" Top; 02 = "C" Bottom Gate Screen: 00 = Simon; 01 = Cloud; 02 = Left Bat; 03 = Right Bat Map Screen: 00 = Simon; 17 = Map Position; 18 = Target Position; $0300 1c Attributes bit 0 = In-view; bit 7 = Invisible $031C 1c Sprite Frame $0338 1c Pallet Offset $0354 1c Y-Coordinate $0370 1c Y-Coordinate Subpixel $038C 1c X-Coordinate $03A8 1c X-Coordinate Subpixel $03C4 1c Vertical Speed $03E0 1c Vertical Speed Subpixel $03FC 1c Horizontal Speed $0418 1c Horizontal Speed Subpixel $0434 1c Object Index Simon's Objects (just another state machine): 00 = Passive; 01 = Standing Whip (and on stairs); 02 = Ducking Whip; 03 = Jumping Whip; 81 = Standing Subweapon; 83 = Jumping Subweapon $0450 1c Sprite Mirrored $046C 1c State Simon's States: 00 = Walking; 01 = Jumping (and Air Attack); 02 = Ground Attack; 03 = Ducking; 04 = Climbing Stairs; 05 = Knocked Back; 06 = Approach Stairs; 07 = Dropping; 08 = Dead; 09 = Stunned; $0488 Jump State $0489 1b Animation Time $049F Moving Platform Speed (doubles per speed) $04A4 Simon Step Count (determines walking sprite frame) $04A5 1b Animation Frame $04C0 1c Sprite Index $04C2 Gate Bats Animation Timer (changes image every 4 frames) $04C3 Gate Right Bat Bob Timing $04DC Vertical Vector Address Low Byte $04DF 0b Various Bat & Medusae Base Focal Y-coordinate Simon above enemy Skeleton Motion Substate Fishman walking Bone Dragon Part Motion Substate Axe Armor Axe ID $04DF Gate Right Bat Bob Offset (add to $0533) $04EA 06 Candle Index (for $0190,Y writes) $04F0 03 Subweapon Collision ID $04F8 Vertical Vector Address High Byte $04FB 11 Various Movement Direction for moving backward 00 = right; 01 = left; Bone Dragon Part Vertical Offset Drop Pickup Delay (pointless) $050C 03 Individual Subweapon Kills $050F 04 Moving Platform X-Coordinate Subpixel $0514 Vertical Direction $0517 11 Various Small Heart Focal X-coordinate Bone Dragon Part Vertical Offset Subpixel $052B Moving Platform Left Edge $0530 Simon Attack State (same as $046C) $0531 15 Spawner ID (based on 6 room positions) $0533 Gate Right Bat Y-Origin $054C In-Air Attack $054F 0d Generic Timer $0568 Whip Timer (counts up to #16) $056B 11 Extinguish Timer (duration of flare and drop) For subweapons: Boomerang = return time; Holy Water = burn duration $057F 02 Moving Platform Y-coordinate Subpixel $0582 Hidden Treasure Object 00 = Coins; 01 = 1UP; 02 = Crown; 03 = Chest; 04 = Moai $0584 Gamepad 1 Input Held Copy $0587 11 Item Drop $059B 02 Moving Platform Y-Coordinate $05A0 160 Collision Map $0700 c0 Tile Data Dump $07F5 Previous Y Register (when audio loaded) $07F6 Next Sound Effect $07F8 Demo Gamepad Input Delay $07F9 Demo Gamepad Input Pressed $07FA Demo Gamepad Input Held $07FC 03 Score ($07FE used for 1UP checks)
Internal Data for Castlevania (NES)
| |
---|---|