Castlevania III:RAM map: Difference between revisions
Jump to navigation
Jump to search
TheouAegis (talk | contribs) No edit summary |
TheouAegis (talk | contribs) (Added audio engine mappings for AkuDen. Some bytes still missing or incorrect, in all honesty. Better than nothing!) |
||
Line 141: | Line 141: | ||
$00FE PPU Mask (for hue shifts and greyscale) | $00FE PPU Mask (for hue shifts and greyscale) | ||
$00FF PPU Control | $00FF PPU Control | ||
$0200 | $0200 #100 OAM Data | ||
$0300 #a0 Tile Data | |||
$0400 #1c Sprite Frame Index | $0400 #1c Sprite Frame Index | ||
$041C #1c Y-Coordinate | $041C #1c Y-Coordinate | ||
Line 284: | Line 284: | ||
-------- ---- ----------- | -------- ---- ----------- | ||
$0018 System State | $0018 System State | ||
00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game; | ''00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;'' | ||
05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug; | ''05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug;'' | ||
08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry; | ''08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry;'' | ||
0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug | ''0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug'' | ||
$0019 System Substate | $0019 System Substate | ||
$001B System Step Counter | $001B System Step Counter | ||
Line 294: | Line 294: | ||
$0021 PPU Bank (write to $B003) | $0021 PPU Bank (write to $B003) | ||
$0028 #02 Controller Buttons Pressed | $0028 #02 Controller Buttons Pressed | ||
01 = right; 02 = left; 04 = down; 08 = up; | ''01 = right; 02 = left; 04 = down; 08 = up;'' | ||
10 = start; 20 = select; 40 = B; 80 = A | ''10 = start; 20 = select; 40 = B; 80 = A'' | ||
$002A #02 Controller Buttons Held | $002A #02 Controller Buttons Held | ||
$002C Game State | $002C Game State | ||
Line 313: | Line 313: | ||
$0044 #03 Score | $0044 #03 Score | ||
$0048 Partner | $0048 Partner | ||
00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None | ''00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None'' | ||
$0049 Partner Active | $0049 Partner Active | ||
$004A Player's Health | $004A Player's Health | ||
40 = full | ''40 = full'' | ||
$004B Boss Health | $004B Boss Health | ||
$004C Score Target (for extra life) | $004C Score Target (for extra life) | ||
Line 329: | Line 329: | ||
$0061 Transition Timer | $0061 Transition Timer | ||
$0062 Scroll Direction | $0062 Scroll Direction | ||
00 = left; 01 = right; 02 = unchanged | ''00 = left; 01 = right; 02 = unchanged'' | ||
$0063 View Refreshed Position | $0063 View Refreshed Position | ||
$0064 Update View | $0064 Update View | ||
$0065 Room Orientation | $0065 Room Orientation | ||
00 = horizontal; 80 or 81 = vertical; 82 = scroll up; | ''00 = horizontal; 80 or 81 = vertical; 82 = scroll up;'' | ||
83 = scroll down; 84 = collapse up; 85 = collapse down | ''83 = scroll down; 84 = collapse up; 85 = collapse down'' | ||
$0066 #02 Stair Map Address | $0066 #02 Stair Map Address | ||
$0068 Player Animation State (for transitions) | $0068 Player Animation State (for transitions) | ||
Line 343: | Line 343: | ||
$006E Room Size | $006E Room Size | ||
$006F CHR Write Mode | $006F CHR Write Mode | ||
00 or 03 = all CHR banks; 01 = status bar banks; 02 = clear NPC banks | ''00 or 03 = all CHR banks; 01 = status bar banks; 02 = clear NPC banks'' | ||
$0070 Previous Room Orientation | $0070 Previous Room Orientation | ||
$0071 Music Loaded | $0071 Music Loaded | ||
Line 354: | Line 354: | ||
$0078 Spawner Count | $0078 Spawner Count | ||
$007A Room Type | $007A Room Type | ||
10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork; | ''10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork;'' | ||
50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge | ''50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge'' | ||
Note: lower 4 bits alter behavior | ''Note: lower 4 bits alter behavior'' | ||
$007B #02 Time | $007B #02 Time | ||
$007D Wounded Timer (invincibility frames) | $007D Wounded Timer (invincibility frames) | ||
$007E Damage Received | $007E Damage Received | ||
$007F PC Height | $007F PC Height | ||
00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing; | ''00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing;'' | ||
04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat | ''04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat'' | ||
$0081 Hearts | $0081 Hearts | ||
$0082 Trevor Subweapon | $0082 Trevor Subweapon | ||
Line 368: | Line 368: | ||
06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock | 06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock | ||
$0083 Partner Subweapon | $0083 Partner Subweapon | ||
$0084 Trevor Subweapon Multiplier 00 = none; 01 = [II]; 02 = [III] | $0084 Trevor Subweapon Multiplier | ||
''00 = none; 01 = [II]; 02 = [III]'' | |||
$0085 Partner Subweapon Multiplier | $0085 Partner Subweapon Multiplier | ||
$0088 Conveyance | $0088 Conveyance | ||
01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter; | ''01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter;'' | ||
06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current; | ''06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current;'' | ||
0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk | ''0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk'' | ||
$0089 Whip Spark Timer | $0089 Whip Spark Timer | ||
$008A Room Initialized | $008A Room Initialized | ||
$008B Trevor Weapon Level | $008B Trevor Weapon Level | ||
00 = short; 01 = medium; 02 = long | ''00 = short; 01 = medium; 02 = long'' | ||
$008C Partner Weapon Level | $008C Partner Weapon Level | ||
00 = one orb; 01 = two orbs; 03 = three orbs | ''00 = one orb; 01 = two orbs; 03 = three orbs'' | ||
$008D Knockback Direction | $008D Knockback Direction | ||
00 = left; 01 = right | ''00 = left; 01 = right'' | ||
$008E Conveyor (see $0088) | $008E Conveyor (see $0088) | ||
$0090 Cog Proximity | $0090 Cog Proximity | ||
00 = none; 01 = right OR below; 02 = right AND below | ''00 = none; 01 = right OR below; 02 = right AND below'' | ||
$0091 Cog ID | $0091 Cog ID | ||
$0092 Cogwheel Size | $0092 Cogwheel Size | ||
00 = small; 01 = large | ''00 = small; 01 = large'' | ||
$0099 Subweapon Kill Count (affects multiplier drops) | $0099 Subweapon Kill Count (affects multiplier drops) | ||
$009A Variable Jump (for Grant) | $009A Variable Jump (for Grant) | ||
Line 412: | Line 413: | ||
$00CC Previous Conveyance (backup of $0088) | $00CC Previous Conveyance (backup of $0088) | ||
$00CD Vertical Ceiling (lowest y-coordinate in vertical room) | $00CD Vertical Ceiling (lowest y-coordinate in vertical room) | ||
$00EF Audio | $00E0 #02 Audio Current Note Address | ||
$00E2 #02 Audio Redirect Address | |||
$00E2 Audio Data Temporary Variable | |||
$00E4 #02 Audio Data 16-bit Variable | |||
$00E6 #02 Audio Song Base Address | |||
$00E8 #02 Audio Song Address | |||
$00EA Audio Channels to Load | |||
$00EB Audio Routine PROM Bank | |||
$00EC #02 Audio Current Period (i.e., pitch) | |||
$00EE Audio Current Channel | |||
$00EF Audio Song ID | |||
$00F0 #04 Candle Status (32-bit mask) | $00F0 #04 Candle Status (32-bit mask) | ||
$00F4 #04 Breakable Wall Status | $00F4 #04 Breakable Wall Status | ||
00 = unused/unbroken; ff = broken | ''00 = unused/unbroken; ff = broken'' | ||
$00F8 #02 Previous Controller Buttons Pressed | $00F8 #02 Previous Controller Buttons Pressed | ||
$00FA #02 Previous Controller Buttons Held | $00FA #02 Previous Controller Buttons Held | ||
Line 421: | Line 432: | ||
$00FE PPU Mask (for hue shifts and greyscale) | $00FE PPU Mask (for hue shifts and greyscale) | ||
$00FF PPU Control | $00FF PPU Control | ||
'''''Audio channels:''' (grouped by 5, 7, or 9)'' | |||
''00 = Pulse 1; 01 = Pulse 2; 02 = Sawtooth; 03 = BGM Square 1; 04 = BGM Square 2'' | |||
''05 = SFX Square 1; 06 = SFX Square 2;'' | |||
''07 = Drums (DCM & Noise); 08 = Noise'' | |||
$0100 #09 Audio Channel Note Duration | |||
$0109 #09 Audio Channel Song ID | |||
$0112 #09 Audio Channel Next Note Duration | |||
$011B #09 Audio Channel Behavior | |||
''bit 0 = SFX (ignore $01BF); bits 1-2 = playback state; bit 3 = pattern loop;'' | |||
''bit 6 = ignore envelope;'' '''needs more info''' | |||
$0124 #09 Audio Channel Loop Count | |||
$012D #09 Audio Channel Note Address Low Byte | |||
$0136 #09 Audio Channel Note Address High Byte | |||
$013F #09 Audio Channel Pattern Loop Address Low Byte | |||
$0148 #09 Audio Channel Pattern Loop Address High Byte | |||
$0151 #09 Audio Channel Repeat Address Low Byte | |||
$015A #09 Audio Channel Repeat Address High Byte | |||
$0163 #09 Audio Channel Previous Period High Byte | |||
$016A Audio Global Dampening ''(lowers volume for all channels)'' | |||
$016C #09 Audio Channel Volume | |||
$0173 Audio Global Fade Timer ''(decreases $017C after 2b steps)'' | |||
$0175 #09 Audio Channel Next Volume | |||
$017C Audio Global Fade Delay | |||
$017E #09 Audio Channel Default Duty Cycle | |||
$0185 Audio Global Mute for Pause | |||
$0187 #07 Audio Channel Dampening ''(lowers volume for specific channel)'' | |||
$018E #07 Audio Channel Attributes | |||
''bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled'' '''needs more info''' | |||
$0195 #07 Audio Channel Pitch Bend Amount | |||
$019C Audio SFX Square 1 Sweep ''(write to $4001)'' | |||
$019E Audio DPCM ID | |||
$019F #02 Audio Square Period Low Byte ''(write to $4002/$4006)'' | |||
$01A3 #05 Audio Channel Downshift ''(doubles period of default note '''n''' times)'' | |||
$01A8 #05 Audio Channel Note Offset | |||
''(adds signed value to note ID to look up period)'' | |||
$01AD #05 Audio Channel Period Low ''(usually write to each channel's period register)'' | |||
$01B2 #05 Audio Channel Period High ''(usually write to each channel's period register)'' | |||
$01B7 #05 Audio Channel Volume Envelope | |||
''(if bit 7 set, fade out instead based on bits 0-3)'' | |||
$01BC Audio SFX Square Register Offset | |||
$01BD Audio Global Ritenuto Delay ''(counts up to $01BE)'' | |||
$01BE Audio Global Ritenuto Cutoff ''(frames until $01BF set)'' | |||
$01BF Audio Global Ritenuto ''(prolongs BGM note duration when set)'' | |||
$01C0 #40 The Stack | |||
$0200 #100 OAM Data | |||
$0300 #a0 Tile Data | |||
$03C0 #05 Audio Channel Volume Duration | |||
$03C5 #05 Audio Channel Fade Duration | |||
$03D4 #05 Audio Channel Fade Out Point ''(fades out when equal to $100,X)'' | |||
$03D9 #05 Audio Channel Volume Envelope | |||
''(bits 0-3 = value; $03D4 = duration*value >> 4)'' | |||
$03DE #05 Audio Channel Next Fade Delay | |||
$03E3 #05 Audio Channel Fade Delay | |||
$03E8 #05 Audio Channel Alternate Duty Cycle | |||
$03ED #05 Audio Channel Next Envelope Duration | |||
$03F2 #05 Audio Channel Envelope Duration | |||
$03F7 #05 Audio Channel Sweep Rate | |||
$0400 #1c Sprite Frame Index | $0400 #1c Sprite Frame Index | ||
$041C #1c Y-Coordinate | $041C #1c Y-Coordinate | ||
Line 426: | Line 494: | ||
$0454 #1c Pallet Offset | $0454 #1c Pallet Offset | ||
$0470 #1c Attributes | $0470 #1c Attributes | ||
''01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker;'' | |||
''10 = illusory; 20 = inanimate; 40 = moving; 80 = invisible'' | |||
$048C #1c Animation Batch (even numbers) | $048C #1c Animation Batch (even numbers) | ||
''00-06 = Player; 08-12 = NPCs; 14 = Epilogue; 16-1C = Doppelganger'' | |||
$04A8 #1C Sprite Mirrored | $04A8 #1C Sprite Mirrored | ||
$04C4 #17 X-Coordinate Subpixel | $04C4 #17 X-Coordinate Subpixel | ||
Line 450: | Line 518: | ||
$05D5 #03 Subweapon Throw Delay | $05D5 #03 Subweapon Throw Delay | ||
$05D8 Player Jump State | $05D8 Player Jump State | ||
00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant | ''00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant'' | ||
$05D9 #0c Boss Use | $05D9 #0c Boss Use | ||
$05E5 #06 Candle Drop | $05E5 #06 Candle Drop | ||
83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch; | ''83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch;'' | ||
88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger; | ''88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger;'' | ||
8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat; | ''8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat; '' | ||
91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP; | ''91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP; '' | ||
9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers | ''9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers'' | ||
$05EB Stair Stun Timer | $05EB Stair Stun Timer | ||
$05EF Stair Direction | $05EF Stair Direction | ||
Line 480: | Line 548: | ||
$067B #12 NPC Hitpoints | $067B #12 NPC Hitpoints | ||
$068E #12 Weapons Impact | $068E #12 Weapons Impact | ||
01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3 | ''01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3'' | ||
$06A0 #05 Audio Channel Pitch Envelope Loop | |||
$06A5 #05 Audio Channel Pitch Envelope | |||
$06AA #05 Audio Channel Pitch Envelope Position | |||
$06AF #05 Audio Channel Pitch Envelope Loop Count | |||
$06B4 #05 Audio Channel Pitch Envelope State | |||
$06B9 #05 Audio Channel Arpeggio Position | |||
$06C3 #04 Audio BGM Square 1 Arpeggio Low Bytes | |||
$06C7 #04 Audio BGM Square 2 Arpeggio Low Bytes | |||
$06CB #04 Audio BGM Square 1 Arpeggio High Bytes | |||
$06CF #04 Audio BGM Square 2 Apreggio High Bytes | |||
$06D3 #09 Audio Channel PROM Bank | |||
$06DC Music Paused | $06DC Music Paused | ||
$06DD Boss Scream Cutoff | $06DD Boss Scream Cutoff | ||
$06E0 #90 Collision Map | $06E0 #90 Collision Map | ||
$0770 #08 CHR5 Solid Definitions | $0770 #08 CHR5 Solid Definitions | ||
Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left; | ''Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;'' | ||
Byte 4 = crumbling; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike | ''Byte 4 = crumbling; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike'' | ||
$0778 #08 CHR6 Solid Definitions | $0778 #08 CHR6 Solid Definitions | ||
$0780 Background Animation Frame | $0780 Background Animation Frame | ||
Line 497: | Line 576: | ||
$0780 Entry Selector Column | $0780 Entry Selector Column | ||
$0780 Map Clipping | $0780 Map Clipping | ||
00 = To Grant; 01 = To Syfa; 02 = From Alucard | ''00 = To Grant; 01 = To Syfa; 02 = From Alucard'' | ||
$0781 Background Animation Timer | $0781 Background Animation Timer | ||
$0781 Entry Selector Row | $0781 Entry Selector Row | ||
Line 527: | Line 606: | ||
$078C Update Selector | $078C Update Selector | ||
$0790 #10 Entered Password | $0790 #10 Entered Password | ||
00 = empty; 01 = whip; 02 = cross; 03 = heart | ''00 = empty; 01 = whip; 02 = cross; 03 = heart'' | ||
$0790 Map Screen Platform | $0790 Map Screen Platform | ||
00 = full; 01 = short west; 02 = bottom east; | ''00 = full; 01 = short west; 02 = bottom east;'' | ||
03 = top west; 04 = middle west; 05 = bottom west | ''03 = top west; 04 = middle west; 05 = bottom west'' | ||
$07A0 #0a Generated Password | $07A0 #0a Generated Password | ||
$07B1 #02 Stacked Breakable Wall | $07B1 #02 Stacked Breakable Wall | ||
Line 548: | Line 627: | ||
Giant Bat Leader | Giant Bat Leader | ||
Dracula Phase | Dracula Phase | ||
00 = Dracula; 01 = demon; 02 = Pazuzu | ''00 = Dracula; 01 = demon; 02 = Pazuzu'' | ||
$07ED Victory State | $07ED Victory State | ||
Bone Dragon Mirrored | Bone Dragon Mirrored | ||
Line 557: | Line 636: | ||
$07EF Bone Dragon Attacking | $07EF Bone Dragon Attacking | ||
$07F3 Boss Phase | $07F3 Boss Phase | ||
00 = boss fight; 01 = boss defeat; 02 = crystal drop; | ''00 = boss fight; 01 = boss defeat; 02 = crystal drop;'' | ||
03 = battle over; 80 = boss waiting | ''03 = battle over; 80 = boss waiting'' | ||
Victory Delay (timer after battle over) | Victory Delay (timer after battle over) | ||
$07F6 Hard Mode | $07F6 Hard Mode |
Revision as of 00:34, 30 July 2022
The following article is a RAM map for Castlevania III.
Address Size Description -------- ---- ----------- $0017 Repeat Counter $0018 System State 00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game; 05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug; 08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry; 0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug $0019 System Substate $001A Step Counter $001C Blackout Delay $001F Randomizer $0026 #02 Controller Buttons Pressed 01 = right; 02 = left; 04 = down; 08 = up; 10 = start; 20 = select; 40 = B; 80 = A $0028 #02 Controller Buttons Held $002A Game State $002B User Paused (toggled by Start button) $002C Boss Defeated $002E Checkpoint $002F Grant Defeated $0030 #02 System Effect Timer $0032 Stage $0033 Block $0034 Room $0035 Lives $0036 #03 Score $003A Partner 00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None $003B Partner Active $003C Player's Health 40 = full $003D Boss Health $003E Score Target (for extra life) $003F Default Drawing State (write to $006D) $0046 #08 CHR Banks $004E Hard Mode CHR Bank (overwrites $0049) $0056 #02 View Position (little endian) $0058 View Subpixel Position $0059 Left Spawn Area $005A Right Spawn Area $005C Tile Assembly Row Iterator $005D #02 Tile Assembly Pointer $005F #02 Pallet Map Pointer $0061 #02 Nametable Write Address $0063 Tile Assembly ID $0064 Transition Timer $0065 Scroll Direction 00 = left; 01 = right; 02 = unchanged $0066 View Refreshed Position $0067 Update View $0068 Room Orientation 00 = horizontal; 80 or 81 = vertical; 82 = scroll up; 83 = scroll down; 84 = collapse up; 85 = collapse down $0069 #02 Stair Map Address $006B Player Animation State (for transitions) and menu selections $006C Current Instance (saves X register) $006D Drawing State $006E View Speed $006F #02 PPU Scroll $0071 Room Size $0072 CHR Write Mode 00 or 03 = all CHR banks; 01 = status bar banks; 02 = clear NPC banks $0073 Previous Room Orientation $0074 Music Loaded $0075 Transition Nametable (nametable to use after door closes) $0076 Horizontal Spawner Block $0077 First Spawner Block $0078 Boss Scroll Lock $0079 Vertical Spawner Block $007A Vertical Spawner Previous (?) $007B Spawner Count $007D Room Type 10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork; 50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge Note: lower 4 bits alter behavior $007E #02 Time $0080 Wounded Timer (invincibility frames) $0081 Damage Received $0082 PC Height 00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing; 04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat $0084 Hearts $0085 Trevor Subweapon 00 = none; 01 = axe; 02 = boomerang; 03 = knife/book; 04 = holy water; 05 = fireball; 06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock $0086 Partner Subweapon $0087 Trevor Subweapon Multiplier 00 = none; 01 = [II]; 02 = [III] $0088 Partner Subweapon Multiplier $008B Conveyance 01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter; 06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current; 0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk $008C Whip Spark Timer $008D Room Initialized $008E Trevor Weapon Level 00 = short; 01 = medium; 02 = long $008F Partner Weapon Level 00 = one orb; 01 = two orbs; 03 = three orbs $0090 Knockback Direction 00 = left; 01 = right $0091 Conveyor (see $008B) $0093 Cog Proximity 00 = none; 01 = right OR below; 02 = right AND below $0094 Cog ID $0095 Cogwheel Size 00 = small; 01 = large $009C Subweapon Kill Count (affects multiplier drops) $009D Variable Jump (for Grant) $009E Subweapon Iterator $009F Previous Game State $00A0 Recent Player Direction (copy of $009E) $00A1 Previous Player Direction (copy of $0062) $00A3 Game Step Counter (only increments while game not paused) $00A5 Check Right Tile $00AB Stopwatch Active $00AC Stopwatch Timer $00AD Invincibility Potion Timer $00AE Alucard Bat Timer (drains 1 heart when decreased to 0) $00AF Landing Delay (prevents walking between elevators) $00B0 Load Doppelganger Sprites (forces CHR updates) $00B1 Current Instance (backup for X register) $00B8 Current Platform (ID of elevator or frozen enemy) $00B9 Crash Timer (stuns Player after falling too far) $00BA Boss Fight $00BF Faint Pause (pauses game when killed or time runs out) $00C8 Horizontal Scroll Lock (used by crumbling bridge) $00CA Flood Height $00CE Weapon Kill Count (affects item drops) $00CF Previous Conveyance (backup of $0088) $00D0 Vertical Ceiling (lowest y-coordinate in vertical room) $00EF Audio Sample $00F0 #04 Candle Status (32-bit mask) $00F4 #04 Breakable Wall Status 00 = unused/unbroken; ff = broken $00F8 #02 Previous Controller Buttons Pressed $00FA #02 Previous Controller Buttons Held $00FC #02 PPU Scroll $00FE PPU Mask (for hue shifts and greyscale) $00FF PPU Control $0200 #100 OAM Data $0300 #a0 Tile Data $0400 #1c Sprite Frame Index $041C #1c Y-Coordinate $0438 #1c X-Coordinate $0454 #1c Pallet Offset $0470 #1c Attributes 01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker; 10 = illusory; 20 = inanimate; 40 = moving; 80 = invisible $048C #1c Animation Batch (even numbers) 00-06 = Player; 08-12 = NPCs; 14 = Epilogue; 16-1C = Doppelganger $04A8 #1C Sprite Mirrored $04C4 #17 X-Coordinate Subpixel $04DB #17 Y-Coordinate Subpixel $04F2 #17 Horizontal Speed $0509 #17 Horizontal Speed Subpixel $0520 #17 Vertical Speed $0537 #17 Vertical Speed Subpixel $054E #17 Object Index $0565 Player State $0566 #11 Stun Timer $0578 Weapon State $0579 #03 Subweapon State $057C #17 Animation Timer $0593 #17 Sprite Frame (used to calculate $0400,X) $05AA #17 Sprite Index $05C1 Moving Down $05C2 #12 NPC State $05D4 Player Stunned State $05D5 #03 Subweapon Throw Delay $05D8 Player Jump State 00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant $05D9 #0c Boss Use $05E5 #06 Candle Drop 83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch; 88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger; 8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat; 91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP; 9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers $05EB Stair Stun Timer $05EF Stair Direction Grant Jump State Fraction (functions like speed variables) $05F0 #12 AI Class (determines behavior) $0602 Stair Stun (decreases $05EB) $0606 Grant Gravity Subpixel (increases $05EF for Grant) $0607 #12 State Timer (time between state changes for most NPCs) Sinusoid Center Axis $0619 Ally Swap Y-Coordinate $061A #03 Subweapon Damage $061D Stair Timer (time to climb one step) Grant Gravity (increases $05D8 for Grant) $061E #12 Miscellaneous Ticker (usually timer or counter for NPCs) $0630 Weapon Damage $0631 #03 Subweapon Deflection (copy of $0658,X on Cross hit) $0634 #17 Miscellaneous Use (used by a couple NPCs) $0646 #12 Spawner Index $0658 #0d NPC Damage $0664 #06 Candle Active $066A #12 Applied Effect (copy of $061A,X on subweapon hit) $067B #12 NPC Hitpoints $068E #12 Weapons Impact 01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3 $06DC Music Paused $06DD Boss Scream Cutoff $06E0 #90 Collision Map $0770 #08 CHR5 Solid Definitions Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left; Byte 4 = crumbling; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike $0778 #08 CHR6 Solid Definitions $0780 Background Animation Frame $0780 Entry Selector Column $0780 Map Clipping 00 = To Grant; 01 = To Syfa; 02 = From Alucard $0781 Background Animation Timer $0781 Entry Selector Row $0781 Map Fade-out Value $0782 Previous Selector Column $0782 Map Timer $0782 Epilogue Ally $0783 Previous Selector Row $0783 Map Horizontal Speed Subpixel $0783 Epilogue State $0784 Name Cursor Position $0784 Map Horizontal Speed $0784 Castle Shake Direction $0785 Map Vertical Speed Subpixel $0785 Epilogue Text Page $0786 Password Icon $0786 Map Vertical Speed $0787 Previous Password Icon $0787 Map Scroll Timer $0788 #02 Password Decryption Dump $0788 Map X-coordinate Subpixel $0788 Epilogue Scroll Timer $0789 Map Y-coordinate Subpixel $078A Epilogue Timer $078A Map Path PPU Scroll $078B Password Errors (used for debugging) $088B Map Path PPU Control $078C #02 Map Path PPU Address $078C Update Selector $0790 #10 Entered Password 00 = empty; 01 = whip; 02 = cross; 03 = heart $0790 Map Screen Platform 00 = full; 01 = short west; 02 = bottom east; 03 = top west; 04 = middle west; 05 = bottom west $07A0 #0a Generated Password $07B1 #02 Stacked Breakable Wall $07B3 #02 Lower Block Broken $07B5 #02 Upper Block Broken $07B7 #02 Wall ID (points to $00F4,X) $07C2 #06 Spawner Type $07C8 #06 Spawner State $07CE #06 Spawner Timer $07D4 #06 Spawner Y-Coordinate $07DA #06 Spawner x-Coordinate $07E0 #06 Spawner Offscreen $07E6 #06 Spawner NPC Object $07EC #06 Bone Dragon King Frames (two ribs per byte) $07EC Cyclops Lightning State Bone Dragon Cycle Giant Bat Leader Dracula Phase 00 = Dracula; 01 = demon; 02 = Pazuzu $07ED Victory State Bone Dragon Mirrored Collapsing Bridge Length Giant Bat State $07EE Bone Dragon Fireball Timer Death Scythe Count $07EF Bone Dragon Attacking $07F3 Boss Phase 00 = boss fight; 01 = boss defeat; 02 = crystal drop; 03 = battle over; 80 = boss waiting Victory Delay (timer after battle over) $07F6 Hard Mode $07F8 #08 Player Name
The following article is a RAM map for Akumajou Densetsu.
Address Size Description -------- ---- ----------- $0018 System State 00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game; 05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug; 08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry; 0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug $0019 System Substate $001B System Step Counter $001D Blackout Delay $0020 Randomizer $0021 PPU Bank (write to $B003) $0028 #02 Controller Buttons Pressed 01 = right; 02 = left; 04 = down; 08 = up; 10 = start; 20 = select; 40 = B; 80 = A $002A #02 Controller Buttons Held $002C Game State $002D User Paused (toggled by Start button) $002E Boss Defeated $0030 Checkpoint (used for Password Entry) $0031 Grant Defeated $0032 #02 System Effect Timer $0034 Stage $0035 Block $0036 Room $0037 Lives $0038 #08 CHR Banks $0040 IRQ Control $0041 #02 IRQ Latch $0043 Default Drawing State (write to $006A) $0044 #03 Score $0048 Partner 00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None $0049 Partner Active $004A Player's Health 40 = full $004B Boss Health $004C Score Target (for extra life) $0053 #02 View Position $0055 View Subpixel Position $0056 Left Spawn Area $0057 Right Spawn Area $005A #02 Tile Assembly Pointer $005C #02 Pallet Map Pointer $005E #02 Nametable Write Address $0060 Tile Assembly ID $0061 Transition Timer $0062 Scroll Direction 00 = left; 01 = right; 02 = unchanged $0063 View Refreshed Position $0064 Update View $0065 Room Orientation 00 = horizontal; 80 or 81 = vertical; 82 = scroll up; 83 = scroll down; 84 = collapse up; 85 = collapse down $0066 #02 Stair Map Address $0068 Player Animation State (for transitions) $0069 Current Instance (saves X register) $006A Drawing State $006B View Speed $006C #02 PPU Write Position $006E Room Size $006F CHR Write Mode 00 or 03 = all CHR banks; 01 = status bar banks; 02 = clear NPC banks $0070 Previous Room Orientation $0071 Music Loaded $0072 Transition Nametable (nametable to use after door closes) $0073 Horizontal Spawner Block $0074 First Spawner Block $0075 Boss Scroll Lock $0076 Vertical Spawner Block $0077 Vertical Spawner Previous (?) $0078 Spawner Count $007A Room Type 10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork; 50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge Note: lower 4 bits alter behavior $007B #02 Time $007D Wounded Timer (invincibility frames) $007E Damage Received $007F PC Height 00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing; 04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat $0081 Hearts $0082 Trevor Subweapon 00 = none; 01 = axe; 02 = boomerang; 03 = knife/book; 04 = holy water; 05 = fireball; 06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock $0083 Partner Subweapon $0084 Trevor Subweapon Multiplier 00 = none; 01 = [II]; 02 = [III] $0085 Partner Subweapon Multiplier $0088 Conveyance 01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter; 06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current; 0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk $0089 Whip Spark Timer $008A Room Initialized $008B Trevor Weapon Level 00 = short; 01 = medium; 02 = long $008C Partner Weapon Level 00 = one orb; 01 = two orbs; 03 = three orbs $008D Knockback Direction 00 = left; 01 = right $008E Conveyor (see $0088) $0090 Cog Proximity 00 = none; 01 = right OR below; 02 = right AND below $0091 Cog ID $0092 Cogwheel Size 00 = small; 01 = large $0099 Subweapon Kill Count (affects multiplier drops) $009A Variable Jump (for Grant) $009B Subweapon Iterator $009C Previous Game State $009D Recent Player Direction (copy of $009E) $009E Previous Player Direction (copy of $0062) $00A0 Game Step Counter (only increments while game not paused) $00A2 Check Right Tile $00A8 Stopwatch Active $00A9 Stopwatch Timer $00AA Invincibility Potion Timer $00AB Alucard Bat Timer (drains 1 heart when decreased to 0) $00AC Landing Delay (prevents walking between elevators) $00AD Load Doppelganger Sprites (forces CHR updates) $00AE Current Instance (backup for X register) $00B5 Current Platform (ID of elevator or frozen enemy) $00B6 Crash Timer (stuns Player after falling too far) $00B7 Boss Fight $00BC Faint Pause (pauses game when killed or time runs out) $00C5 Horizontal Scroll Lock (used by crumbling bridge) $00C7 Flood Height $00CB Weapon Kill Count (affects item drops) $00CC Previous Conveyance (backup of $0088) $00CD Vertical Ceiling (lowest y-coordinate in vertical room) $00E0 #02 Audio Current Note Address $00E2 #02 Audio Redirect Address $00E2 Audio Data Temporary Variable $00E4 #02 Audio Data 16-bit Variable $00E6 #02 Audio Song Base Address $00E8 #02 Audio Song Address $00EA Audio Channels to Load $00EB Audio Routine PROM Bank $00EC #02 Audio Current Period (i.e., pitch) $00EE Audio Current Channel $00EF Audio Song ID $00F0 #04 Candle Status (32-bit mask) $00F4 #04 Breakable Wall Status 00 = unused/unbroken; ff = broken $00F8 #02 Previous Controller Buttons Pressed $00FA #02 Previous Controller Buttons Held $00FC #02 PPU Scroll $00FE PPU Mask (for hue shifts and greyscale) $00FF PPU Control Audio channels: (grouped by 5, 7, or 9) 00 = Pulse 1; 01 = Pulse 2; 02 = Sawtooth; 03 = BGM Square 1; 04 = BGM Square 2 05 = SFX Square 1; 06 = SFX Square 2; 07 = Drums (DCM & Noise); 08 = Noise $0100 #09 Audio Channel Note Duration $0109 #09 Audio Channel Song ID $0112 #09 Audio Channel Next Note Duration $011B #09 Audio Channel Behavior bit 0 = SFX (ignore $01BF); bits 1-2 = playback state; bit 3 = pattern loop; bit 6 = ignore envelope; needs more info $0124 #09 Audio Channel Loop Count $012D #09 Audio Channel Note Address Low Byte $0136 #09 Audio Channel Note Address High Byte $013F #09 Audio Channel Pattern Loop Address Low Byte $0148 #09 Audio Channel Pattern Loop Address High Byte $0151 #09 Audio Channel Repeat Address Low Byte $015A #09 Audio Channel Repeat Address High Byte $0163 #09 Audio Channel Previous Period High Byte $016A Audio Global Dampening (lowers volume for all channels) $016C #09 Audio Channel Volume $0173 Audio Global Fade Timer (decreases $017C after 2b steps) $0175 #09 Audio Channel Next Volume $017C Audio Global Fade Delay $017E #09 Audio Channel Default Duty Cycle $0185 Audio Global Mute for Pause $0187 #07 Audio Channel Dampening (lowers volume for specific channel) $018E #07 Audio Channel Attributes bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled needs more info $0195 #07 Audio Channel Pitch Bend Amount $019C Audio SFX Square 1 Sweep (write to $4001) $019E Audio DPCM ID $019F #02 Audio Square Period Low Byte (write to $4002/$4006) $01A3 #05 Audio Channel Downshift (doubles period of default note n times) $01A8 #05 Audio Channel Note Offset (adds signed value to note ID to look up period) $01AD #05 Audio Channel Period Low (usually write to each channel's period register) $01B2 #05 Audio Channel Period High (usually write to each channel's period register) $01B7 #05 Audio Channel Volume Envelope (if bit 7 set, fade out instead based on bits 0-3) $01BC Audio SFX Square Register Offset $01BD Audio Global Ritenuto Delay (counts up to $01BE) $01BE Audio Global Ritenuto Cutoff (frames until $01BF set) $01BF Audio Global Ritenuto (prolongs BGM note duration when set) $01C0 #40 The Stack $0200 #100 OAM Data $0300 #a0 Tile Data $03C0 #05 Audio Channel Volume Duration $03C5 #05 Audio Channel Fade Duration $03D4 #05 Audio Channel Fade Out Point (fades out when equal to $100,X) $03D9 #05 Audio Channel Volume Envelope (bits 0-3 = value; $03D4 = duration*value >> 4) $03DE #05 Audio Channel Next Fade Delay $03E3 #05 Audio Channel Fade Delay $03E8 #05 Audio Channel Alternate Duty Cycle $03ED #05 Audio Channel Next Envelope Duration $03F2 #05 Audio Channel Envelope Duration $03F7 #05 Audio Channel Sweep Rate $0400 #1c Sprite Frame Index $041C #1c Y-Coordinate $0438 #1c X-Coordinate $0454 #1c Pallet Offset $0470 #1c Attributes 01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker; 10 = illusory; 20 = inanimate; 40 = moving; 80 = invisible $048C #1c Animation Batch (even numbers) 00-06 = Player; 08-12 = NPCs; 14 = Epilogue; 16-1C = Doppelganger $04A8 #1C Sprite Mirrored $04C4 #17 X-Coordinate Subpixel $04DB #17 Y-Coordinate Subpixel $04F2 #17 Horizontal Speed $0509 #17 Horizontal Speed Subpixel $0520 #17 Vertical Speed $0537 #17 Vertical Speed Subpixel $054E #17 Object Index $0565 Player State $0566 #11 Stun Timer $0578 Weapon State $0579 #03 Subweapon State $057C #17 Animation Timer $0593 #17 Sprite Frame (used to calculate $0400,X) $05AA #17 Sprite Index $05C1 Moving Down $05C2 #12 NPC State $05D4 Player Stunned State $05D5 #03 Subweapon Throw Delay $05D8 Player Jump State 00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant $05D9 #0c Boss Use $05E5 #06 Candle Drop 83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch; 88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger; 8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat; 91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP; 9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers $05EB Stair Stun Timer $05EF Stair Direction Grant Jump State Fraction (functions like speed variables) $05F0 #12 AI Class (determines behavior) $0602 Stair Stun (decreases $05EB) $0606 Grant Gravity Subpixel (increases $05EF for Grant) $0607 #12 State Timer (time between state changes for most NPCs) Sinusoid Center Axis $0619 Ally Swap Y-Coordinate $061A #03 Subweapon Damage $061D Stair Timer (time to climb one step) Grant Gravity (increases $05D8 for Grant) $061E #12 Miscellaneous Ticker (usually timer or counter for NPCs) $0630 Weapon Damage $0631 #03 Subweapon Deflection (copy of $0658,X on Cross hit) $0634 #17 Miscellaneous Use (used by a couple NPCs) $0646 #12 Spawner Index $0658 #0d NPC Damage $0664 #06 Candle Active $066A #12 Applied Effect (copy of $061A,X on subweapon hit) $067B #12 NPC Hitpoints $068E #12 Weapons Impact 01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3 $06A0 #05 Audio Channel Pitch Envelope Loop $06A5 #05 Audio Channel Pitch Envelope $06AA #05 Audio Channel Pitch Envelope Position $06AF #05 Audio Channel Pitch Envelope Loop Count $06B4 #05 Audio Channel Pitch Envelope State $06B9 #05 Audio Channel Arpeggio Position $06C3 #04 Audio BGM Square 1 Arpeggio Low Bytes $06C7 #04 Audio BGM Square 2 Arpeggio Low Bytes $06CB #04 Audio BGM Square 1 Arpeggio High Bytes $06CF #04 Audio BGM Square 2 Apreggio High Bytes $06D3 #09 Audio Channel PROM Bank $06DC Music Paused $06DD Boss Scream Cutoff $06E0 #90 Collision Map $0770 #08 CHR5 Solid Definitions Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left; Byte 4 = crumbling; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike $0778 #08 CHR6 Solid Definitions $0780 Background Animation Frame $0781 Background Animation Timer $0782 Epilogue Ally $0783 Epilogue State $0784 Castle Shake $0785 Epilogue Text Page $0780 Entry Selector Column $0780 Entry Selector Column $0780 Map Clipping 00 = To Grant; 01 = To Syfa; 02 = From Alucard $0781 Background Animation Timer $0781 Entry Selector Row $0781 Map Fade-out Value $0782 Previous Selector Column $0782 Map Timer $0782 Epilogue Ally $0783 Previous Selector Row $0783 Map Horizontal Speed Subpixel $0783 Epilogue State $0784 Name Cursor Position $0784 Map Horizontal Speed $0784 Castle Shake Direction $0785 Map Vertical Speed Subpixel $0785 Epilogue Text Page $0786 Password Icon $0786 Map Vertical Speed $0787 Previous Password Icon $0787 Map Scroll Timer $0788 #02 Password Decryption Dump $0788 Map X-coordinate Subpixel $0788 Epilogue Scroll Timer $0789 Map Y-coordinate Subpixel $078A Epilogue Timer $078A Map Path PPU Scroll $078B Password Errors (used for debugging) $088B Map Path PPU Control $078C #02 Map Path PPU Address $078C Update Selector $0790 #10 Entered Password 00 = empty; 01 = whip; 02 = cross; 03 = heart $0790 Map Screen Platform 00 = full; 01 = short west; 02 = bottom east; 03 = top west; 04 = middle west; 05 = bottom west $07A0 #0a Generated Password $07B1 #02 Stacked Breakable Wall $07B3 #02 Lower Block Broken $07B5 #02 Upper Block Broken $07B7 #02 Wall ID (points to $00F4,X) $07C2 #06 Spawner Type $07C8 #06 Spawner State $07CE #06 Spawner Timer $07D4 #06 Spawner Y-Coordinate $07DA #06 Spawner x-Coordinate $07E0 #06 Spawner Offscreen $07E6 #06 Spawner NPC Object $07EC #06 Bone Dragon King Frames (two ribs per byte) $07EC Cyclops Lightning State Bone Dragon Cycle Giant Bat Leader Dracula Phase 00 = Dracula; 01 = demon; 02 = Pazuzu $07ED Victory State Bone Dragon Mirrored Collapsing Bridge Length Giant Bat State $07EE Bone Dragon Fireball Timer Death Scythe Count $07EF Bone Dragon Attacking $07F3 Boss Phase 00 = boss fight; 01 = boss defeat; 02 = crystal drop; 03 = battle over; 80 = boss waiting Victory Delay (timer after battle over) $07F6 Hard Mode $07F8 #08 Player Name
Internal Data for Castlevania III |
---|
ROM Map • RAM Map • Text Table • Notes • Tutorials |