Castlevania III:RAM map: Difference between revisions
Jump to navigation
Jump to search
Mariofan2468 (talk | contribs) No edit summary |
TheouAegis (talk | contribs) (Sypha freeze and parallax fog variables) |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
Address Size Description | 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 | ||
$001D X Register Backup | |||
$ | $001F Randomizer | ||
$ | $0020 OAM Batch | ||
$ | $0021 Current PROM Bank | ||
$ | $0022 Previous PROM Bank | ||
$ | $0023 PROM Bank Backup ''(used by some functions)'' | ||
$ | $0024 Bank Changed ''(for debugging probably)'' | ||
$0025 Nametable Mapping | |||
$0026 #02 Controller Buttons Pressed | |||
$0200 $100 | ''01 = right; 02 = left; 04 = down; 08 = up; | ||
''10 = start; 20 = select; 40 = B; 80 = A'' | |||
$05D8 Timer | $0028 #02 Controller Buttons Held | ||
$002A Game State ''(set $006B to 00 before changing)'' | |||
$0790 $ | ''00 = initialize room; 01 = initialize nametables; 02 = load horizontal room; | ||
$ | ''03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay; | ||
$07F8 | ''06 = stair transition start; 07 = stair transition fade; 08 = door transition; | ||
''09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap; | |||
''0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs; | |||
''10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>; | |||
''13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room; | |||
''16 = flood room gameplay; 17 = map transition; 18 = autowalk to door; | |||
''19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape; | |||
''1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit | |||
$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) | |||
$0040 Scanline IRQ | |||
$0041 Scanline Target | |||
$0043 Scanline Next Target | |||
$0044 #02 Draw State Address | |||
$0046 #08 CHR Banks | |||
$004E Hard Mode CHR Bank ''(overwrites $0049) | |||
$0050 #02 Tile Assembly Starting Address | |||
$0052 #02 Tile Assembly Left Address | |||
$0054 #02 Tile Assembly Right Address | |||
$0056 #02 View Position ''(little endian) | |||
$0058 View Subpixel Position | |||
$0059 Left Spawn Area | |||
$005A Right Spawn Area | |||
$005B Tile Assembly Count Left | |||
$005C Tile Assembly Count Right | |||
$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 Game Substate | |||
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/Effect on Player | |||
$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 | |||
$0089 Scanline Start | |||
$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) | |||
$00A4 Map Transition Checkpoint | |||
$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) | |||
$00B2 Rosary Flash Timer | |||
$00B6 Tile Assembly Count Vertical ''(only for vertical rooms)'' | |||
$00B7 Power Up ''(used for weapon upgrade)'' | |||
$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) | |||
$00C7 Thaw Timer ''(for frozen water)'' | |||
$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) | |||
$00D2 Cogwheel ID Copy | |||
$00D4 Cogwheel ID | |||
$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 Track Base Address | |||
$00E8 #02 Audio Track 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 Track 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 3, 5, or 7)'' | |||
''00 = BGM Square 1; 021 = BGM Square 2; 02 = BGM Triangle;'' | |||
''03 = SFX Square 1; 04 = SFX Square 2;'' | |||
''05 = Drums (DCM & Noise); 06 = Noise'' | |||
$0100 #07 Audio Channel Note Duration | |||
$0107 #07 Audio Channel Song ID | |||
$010E #07 Audio Channel Next Note Duration | |||
$0115 #07 Audio Channel Behavior | |||
''bit 0 = SFX (ignore ritenuto); bits 1-2 = init/decay/sustain/release;'' | |||
''bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope;'' | |||
$011C #07 Audio Channel Loop Count | |||
$0123 #07 Audio Channel Note Address Low Byte | |||
$012A #07 Audio Channel Note Address High Byte | |||
$0131 #07 Audio Channel Al Segno Address Low Byte | |||
$0138 #07 Audio Channel Al Segno Address High Byte | |||
$013F #07 Audio Channel Coda Address Low Byte | |||
$0146 #07 Audio Channel Coda Address High Byte | |||
$014D #07 Audio Channel Previous Period High Byte | |||
$0152 Audio Global Dampening ''(lowers volume for all channels)'' | |||
$0154 #07 Audio Channel Volume | |||
$0159 Audio Global Fade Timer ''(decreases $017C after 2b steps)'' | |||
$015B #07 Audio Channel Next Control Value / Channel Dampening Placeholder | |||
$0160 Audio Global Fade Delay | |||
$0162 #07 Audio Channel Default Duty Cycle | |||
$0167 Audio Global Mute for Pause | |||
$0169 #05 Audio Channel Dampening ''(lowers volume for specific channel)'' | |||
$016E #05 Audio Channel Attributes | |||
''bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled'' '''needs more info''' | |||
$0173 #05 Audio Channel Pitch Bend Amount | |||
$0178 #05 Audio Channel Period Low Byte Backup ''(useless?) | |||
$017D #03 Audio Channel Octave (''raises octave by 5-n)'' | |||
$0180 #03 Audio Channel Note Offset | |||
''(adds signed value to note ID to look up period)'' | |||
$0183 #03 Audio Channel Period Low | |||
$0186 #03 Audio Channel Period High | |||
$0189 #03 Audio Channel Volume Envelope | |||
''(if bit 7 set, fade out instead based on bits 0-3)'' | |||
$018C Audio SFX Register Offset | |||
$018D Audio Global Ritenuto Delay ''(counts up to $018E)'' | |||
$018E Audio Global Ritenuto Cutoff ''(frames until $018F set)'' | |||
$018F Audio Global Ritenuto ''(prolongs BGM note duration when set)'' | |||
$0190 #02 Audio SFX Square Sweep | |||
$0192 Audio Current DPCM | |||
$0193 Audio Triangle Staccato Timer | |||
$0194 Audio Triangle Linear Counter ''(only used with $193)'' | |||
$0195 #07 Audio Channel PROM Bank | |||
$019C Audio SFX Square 1 Sweep ''(write to $4001)'' | |||
$0200 #100 OAM Data | |||
$0300 #a0 Tile Data | |||
$03C0 #03 Audio Channel Volume Envelope Duration | |||
$03C3 #03 Audio Channel Volume Envelope Position | |||
$03C6 #03 Audio Channel Volume Envelope Loop Count | |||
$03C9 #03 Audio Channel Volume Envelope Loop Point | |||
$03CC #03 Audio Channel Fadeout Point ''(fades out when equal to $100,X)'' | |||
$03CF #03 Audio Channel Volume Envelope | |||
''(bits 0-3 = value; $03CC = duration*value >> 4)'' | |||
$03D2 #03 Audio Channel Next Fade Duration | |||
$03D5 #03 Audio Channel Fade Duration | |||
$03D8 #03 Audio Channel Alternate Duty Cycle | |||
$03DB #03 Audio Channel Next Pitchbend Duration | |||
$03DE #03 Audio Channel Pitchbend Duration | |||
$03E1 #03 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 and Multikill Count | |||
$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 #03 Audio Channel Pitch Envelope Loop Start | |||
$06A3 #03 Audio Channel Pitch Envelope ID | |||
$06A6 #03 Audio Channel Pitch Envelope Position | |||
$06A9 #03 Audio Channel Pitch Envelope Loop Count | |||
$06AC #03 Audio Channel Sustain State ''(80 = disabled)'' | |||
$06AF #03 Audio Channel Sustain Position ''(from 0 to 3)'' | |||
$06B2 #03 Audio Channel Sustain Dampen | |||
$06B5 #04 Audio BGM Square 1 Sustain Period Low Bytes | |||
$06B9 #04 Audio BGM Square 2 Sustain Period Low Bytes | |||
$06BD #04 Audio BGM Square 1 Sustain Period High Bytes | |||
$06C1 #04 Audio BGM Square 2 Sustain Period High Bytes | |||
$06C8 Boss Scream Time ''(stops DPCM at f0)'' | |||
$06C9 Music Paused | |||
$06E0 #90 Collision Map | |||
''00 = empty; 01 = mud; 02 = convey right; 03 = convey left; | |||
''04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike; | |||
''08 = ice; 0c-0f = cracking'' | |||
$0770 #08 CHR5 Solid Definitions | |||
''Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;'' | |||
''Byte 4 = fragile; 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 #40 Fog Parallax Positions | |||
''32 rows of parallax with 2 bytes per row:'' | |||
''Byte 0 = subpixel offset; Byte 1 = pixel offset'' | |||
$0782 Previous Selector Column | |||
$0782 Map Timer | |||
$0782 Epilogue Ally | |||
$0782 Sypha's Frozen Tile Column | |||
$0783 Previous Selector Row | |||
$0783 Map Horizontal Speed Subpixel | |||
$0783 Epilogue State | |||
$0783 Sypha's Frozen Tile Row | |||
$0784 Name Cursor Position | |||
$0784 Map Horizontal Speed | |||
$0784 Castle Shake Direction | |||
$0784 Leftmost Frozen Tile Column | |||
$0785 Map Vertical Speed Subpixel | |||
$0785 Epilogue Text Page | |||
$0785 Leftmost Frozen Tile Row | |||
$0786 Password Icon | |||
$0786 Map Vertical Speed | |||
$0786 Rightmost Frozen Tile Column | |||
$0787 Previous Password Icon | |||
$0787 Map Scroll Timer | |||
$0787 Rightmost Frozen Tile Row | |||
$0788 #02 Password Decryption Dump | |||
$0788 Map X-coordinate Subpixel | |||
$0788 Epilogue Scroll Timer | |||
$0788 Water Freeze Counter | |||
$0789 Map Y-coordinate Subpixel | |||
$0789 Frozen Water Room Type | |||
$078A Epilogue Timer | |||
$078A Map Path PPU Scroll | |||
$078B Map Path PPU Control | |||
$078B Password Errors ''(used for debugging) | |||
$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 | |||
Line 32: | Line 412: | ||
Address Size Description | 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) | ||
$ | $0022 OAM Batch | ||
$0023 Current PROM Bank | |||
$0024 Previous PROM Bank | |||
$0025 PROM Bank Backup ''(used by some functions)'' | |||
$0026 Bank Changed ''(for debugging probably)'' | |||
$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 ''(set $0068 to 00 before changing)'' | |||
''00 = initialize room; 01 = initialize nametables; 02 = load horizontal room; | |||
''03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay; | |||
''06 = stair transition start; 07 = stair transition fade; 08 = door transition; | |||
''09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap; | |||
''0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs; | |||
''10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>; | |||
''13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room; | |||
''16 = flood room gameplay; 17 = map transition; 18 = autowalk to door; | |||
''19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape; | |||
''1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit | |||
$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) | |||
$004D #02 Tile Assembly Room Address | |||
$004F #02 Tile Assembly Left Address | |||
$0051 #02 Tile Assembly Right Address | |||
$0053 #02 View Position | |||
$0055 View Subpixel Position | |||
$0056 Left Spawn Area | |||
$0057 Right Spawn Area | |||
$0058 Tile Assembly Count Left | |||
$0059 Tile Assembly Count Right | |||
$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 Game Substate | |||
$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/Effect On Player | |||
$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; | 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 | 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) | |||
$00A1 Map Transition Checkpoint | |||
$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) | |||
$00AF Rosary Flash Timer | |||
$00B3 Tile Assembly Count Vertical ''(only for vertical rooms)'' | |||
$00B4 Power Up ''(used for weapon upgrade)'' | |||
$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) | |||
$00C4 Thaw Timer ''(for frozen waters)'' | |||
$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) | |||
$00CF Cogwheel ID Copy | |||
$00D1 Cogwheel ID | |||
$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 Track Base Address | |||
$00E8 #02 Audio Track 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 Track 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 ritenuto); bits 1-2 = init/decay/sustain/release;'' | |||
''bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope;'' | |||
$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 Al Segno Address Low Byte | |||
$0148 #09 Audio Channel Al Segno Address High Byte | |||
$0151 #09 Audio Channel Coda Address Low Byte | |||
$015A #09 Audio Channel Coda 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 Control Value / Channel Dampening Placeholder | |||
$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 #02 Audio SFX Square Sweep | |||
$019E Audio DPCM ID | |||
$019F #02 Audio Square Period Low Byte ''(write to $4002/$4006)'' | |||
$01A3 #05 Audio Channel Octave ''(raises octave by 5-n)'' | |||
$01A8 #05 Audio Channel Note Offset | |||
''(adds signed value to note ID to look up period)'' | |||
$01AD #05 Audio Channel Period Low | |||
$01B2 #05 Audio Channel Period High | |||
$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)'' | |||
$0200 #100 OAM Data | |||
$0300 #a0 Tile Data | |||
$03C0 #05 Audio Channel Volume Envelope Duration | |||
$03C5 #05 Audio Channel Volume Envelope Position | |||
$03CA #05 Audio Channel Volume Envelope Loop Count | |||
$03CF #05 Audio Channel Volume Envelope Loop Point | |||
$03D4 #05 Audio Channel Fadeout 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 Duration | |||
$03E3 #05 Audio Channel Fade Duration | |||
$03E8 #05 Audio Channel Alternate Duty Cycle | |||
$03ED #05 Audio Channel Next Pitchbend Duration | |||
$03F2 #05 Audio Channel Pitchbend 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) | |||
Freezing Rivers | |||
Turning Into Bat | |||
$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 and Multikill Count | |||
$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 Start | |||
$06A5 #05 Audio Channel Pitch Envelope ID | |||
$06AA #05 Audio Channel Pitch Envelope Position | |||
$06AF #05 Audio Channel Pitch Envelope Loop Count | |||
$06B4 #05 Audio Channel Sustain State | |||
$06B9 #05 Audio Channel Sustain Position ''(from 0 to 3)'' | |||
$06BE #05 Audio Channel Sustain Dampen | |||
$06C3 #04 Audio BGM Square 1 Sustain Period Low Bytes | |||
$06C7 #04 Audio BGM Square 2 Sustain Period Low Bytes | |||
$06CB #04 Audio BGM Square 1 Sustain Period High Bytes | |||
$06CF #04 Audio BGM Square 2 Sustain Period High Bytes | |||
$06D3 #09 Audio Channel PROM Bank | |||
$06DC Music Paused | |||
$06DD Boss Scream Duration ''stops DPCM playback'' | |||
$06E0 #90 Collision Map | |||
''00 = empty; 01 = mud; 02 = convey right; 03 = convey left; | |||
''04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike; | |||
''08 = ice; 0c-0f = cracking'' | |||
$0770 #08 CHR5 Solid Definitions | |||
''Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;'' | |||
''Byte 4 = fragile; 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 #40 Fog Parallax Positions | |||
''32 rows of parallax with 2 bytes per row:'' | |||
''Byte 0 = subpixel offset; Byte 1 = pixel offset'' | |||
$0782 Previous Selector Column | |||
$0782 Map Timer | |||
$0782 Epilogue Ally | |||
$0782 Sypha's Frozen Tile Column | |||
$0783 Previous Selector Row | |||
$0783 Map Horizontal Speed Subpixel | |||
$0783 Epilogue State | |||
$0783 Sypha's Frozen Tile Row | |||
$0784 Name Cursor Position | |||
$0784 Map Horizontal Speed | |||
$0784 Castle Shake Direction | |||
$0784 Leftmost Frozen Tile Column | |||
$0785 Map Vertical Speed Subpixel | |||
$0785 Epilogue Text Page | |||
$0785 Leftmost Frozen Tile Row | |||
$0786 Password Icon | |||
$0786 Map Vertical Speed | |||
$0786 Rightmost Frozen Tile Column | |||
$0787 Previous Password Icon | |||
$0787 Map Scroll Timer | |||
$0787 Rightmost Frozen Tile Row | |||
$0788 #02 Password Decryption Dump | |||
$0788 Map X-coordinate Subpixel | |||
$0788 Epilogue Scroll Timer | |||
$0788 Water Freeze Counter | |||
$0789 Map Y-coordinate Subpixel | |||
$0789 Frozen Water Room Type | |||
$078A Epilogue Timer | |||
$078A Map Path PPU Scroll | |||
$078B Map Path PPU Control | |||
$078B Password Errors ''(used for debugging) | |||
$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|game=Castlevania III}} | {{Internal Data|game=Castlevania III}} |
Revision as of 19:39, 13 September 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 $001D X Register Backup $001F Randomizer $0020 OAM Batch $0021 Current PROM Bank $0022 Previous PROM Bank $0023 PROM Bank Backup (used by some functions) $0024 Bank Changed (for debugging probably) $0025 Nametable Mapping $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 (set $006B to 00 before changing) 00 = initialize room; 01 = initialize nametables; 02 = load horizontal room; 03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay; 06 = stair transition start; 07 = stair transition fade; 08 = door transition; 09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap; 0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs; 10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>; 13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room; 16 = flood room gameplay; 17 = map transition; 18 = autowalk to door; 19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape; 1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit $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) $0040 Scanline IRQ $0041 Scanline Target $0043 Scanline Next Target $0044 #02 Draw State Address $0046 #08 CHR Banks $004E Hard Mode CHR Bank (overwrites $0049) $0050 #02 Tile Assembly Starting Address $0052 #02 Tile Assembly Left Address $0054 #02 Tile Assembly Right Address $0056 #02 View Position (little endian) $0058 View Subpixel Position $0059 Left Spawn Area $005A Right Spawn Area $005B Tile Assembly Count Left $005C Tile Assembly Count Right $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 Game Substate 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/Effect on Player $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 $0089 Scanline Start $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) $00A4 Map Transition Checkpoint $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) $00B2 Rosary Flash Timer $00B6 Tile Assembly Count Vertical (only for vertical rooms) $00B7 Power Up (used for weapon upgrade) $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) $00C7 Thaw Timer (for frozen water) $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) $00D2 Cogwheel ID Copy $00D4 Cogwheel ID $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 Track Base Address $00E8 #02 Audio Track 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 Track 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 3, 5, or 7) 00 = BGM Square 1; 021 = BGM Square 2; 02 = BGM Triangle; 03 = SFX Square 1; 04 = SFX Square 2; 05 = Drums (DCM & Noise); 06 = Noise $0100 #07 Audio Channel Note Duration $0107 #07 Audio Channel Song ID $010E #07 Audio Channel Next Note Duration $0115 #07 Audio Channel Behavior bit 0 = SFX (ignore ritenuto); bits 1-2 = init/decay/sustain/release; bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope; $011C #07 Audio Channel Loop Count $0123 #07 Audio Channel Note Address Low Byte $012A #07 Audio Channel Note Address High Byte $0131 #07 Audio Channel Al Segno Address Low Byte $0138 #07 Audio Channel Al Segno Address High Byte $013F #07 Audio Channel Coda Address Low Byte $0146 #07 Audio Channel Coda Address High Byte $014D #07 Audio Channel Previous Period High Byte $0152 Audio Global Dampening (lowers volume for all channels) $0154 #07 Audio Channel Volume $0159 Audio Global Fade Timer (decreases $017C after 2b steps) $015B #07 Audio Channel Next Control Value / Channel Dampening Placeholder $0160 Audio Global Fade Delay $0162 #07 Audio Channel Default Duty Cycle $0167 Audio Global Mute for Pause $0169 #05 Audio Channel Dampening (lowers volume for specific channel) $016E #05 Audio Channel Attributes bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled needs more info $0173 #05 Audio Channel Pitch Bend Amount $0178 #05 Audio Channel Period Low Byte Backup (useless?) $017D #03 Audio Channel Octave (raises octave by 5-n) $0180 #03 Audio Channel Note Offset (adds signed value to note ID to look up period) $0183 #03 Audio Channel Period Low $0186 #03 Audio Channel Period High $0189 #03 Audio Channel Volume Envelope (if bit 7 set, fade out instead based on bits 0-3) $018C Audio SFX Register Offset $018D Audio Global Ritenuto Delay (counts up to $018E) $018E Audio Global Ritenuto Cutoff (frames until $018F set) $018F Audio Global Ritenuto (prolongs BGM note duration when set) $0190 #02 Audio SFX Square Sweep $0192 Audio Current DPCM $0193 Audio Triangle Staccato Timer $0194 Audio Triangle Linear Counter (only used with $193) $0195 #07 Audio Channel PROM Bank $019C Audio SFX Square 1 Sweep (write to $4001) $0200 #100 OAM Data $0300 #a0 Tile Data $03C0 #03 Audio Channel Volume Envelope Duration $03C3 #03 Audio Channel Volume Envelope Position $03C6 #03 Audio Channel Volume Envelope Loop Count $03C9 #03 Audio Channel Volume Envelope Loop Point $03CC #03 Audio Channel Fadeout Point (fades out when equal to $100,X) $03CF #03 Audio Channel Volume Envelope (bits 0-3 = value; $03CC = duration*value >> 4) $03D2 #03 Audio Channel Next Fade Duration $03D5 #03 Audio Channel Fade Duration $03D8 #03 Audio Channel Alternate Duty Cycle $03DB #03 Audio Channel Next Pitchbend Duration $03DE #03 Audio Channel Pitchbend Duration $03E1 #03 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 and Multikill Count $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 #03 Audio Channel Pitch Envelope Loop Start $06A3 #03 Audio Channel Pitch Envelope ID $06A6 #03 Audio Channel Pitch Envelope Position $06A9 #03 Audio Channel Pitch Envelope Loop Count $06AC #03 Audio Channel Sustain State (80 = disabled) $06AF #03 Audio Channel Sustain Position (from 0 to 3) $06B2 #03 Audio Channel Sustain Dampen $06B5 #04 Audio BGM Square 1 Sustain Period Low Bytes $06B9 #04 Audio BGM Square 2 Sustain Period Low Bytes $06BD #04 Audio BGM Square 1 Sustain Period High Bytes $06C1 #04 Audio BGM Square 2 Sustain Period High Bytes $06C8 Boss Scream Time (stops DPCM at f0) $06C9 Music Paused $06E0 #90 Collision Map 00 = empty; 01 = mud; 02 = convey right; 03 = convey left; 04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike; 08 = ice; 0c-0f = cracking $0770 #08 CHR5 Solid Definitions Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left; Byte 4 = fragile; 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 #40 Fog Parallax Positions 32 rows of parallax with 2 bytes per row: Byte 0 = subpixel offset; Byte 1 = pixel offset $0782 Previous Selector Column $0782 Map Timer $0782 Epilogue Ally $0782 Sypha's Frozen Tile Column $0783 Previous Selector Row $0783 Map Horizontal Speed Subpixel $0783 Epilogue State $0783 Sypha's Frozen Tile Row $0784 Name Cursor Position $0784 Map Horizontal Speed $0784 Castle Shake Direction $0784 Leftmost Frozen Tile Column $0785 Map Vertical Speed Subpixel $0785 Epilogue Text Page $0785 Leftmost Frozen Tile Row $0786 Password Icon $0786 Map Vertical Speed $0786 Rightmost Frozen Tile Column $0787 Previous Password Icon $0787 Map Scroll Timer $0787 Rightmost Frozen Tile Row $0788 #02 Password Decryption Dump $0788 Map X-coordinate Subpixel $0788 Epilogue Scroll Timer $0788 Water Freeze Counter $0789 Map Y-coordinate Subpixel $0789 Frozen Water Room Type $078A Epilogue Timer $078A Map Path PPU Scroll $078B Map Path PPU Control $078B Password Errors (used for debugging) $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) $0022 OAM Batch $0023 Current PROM Bank $0024 Previous PROM Bank $0025 PROM Bank Backup (used by some functions) $0026 Bank Changed (for debugging probably) $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 (set $0068 to 00 before changing) 00 = initialize room; 01 = initialize nametables; 02 = load horizontal room; 03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay; 06 = stair transition start; 07 = stair transition fade; 08 = door transition; 09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap; 0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs; 10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>; 13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room; 16 = flood room gameplay; 17 = map transition; 18 = autowalk to door; 19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape; 1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit $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) $004D #02 Tile Assembly Room Address $004F #02 Tile Assembly Left Address $0051 #02 Tile Assembly Right Address $0053 #02 View Position $0055 View Subpixel Position $0056 Left Spawn Area $0057 Right Spawn Area $0058 Tile Assembly Count Left $0059 Tile Assembly Count Right $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 Game Substate $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/Effect On Player $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) $00A1 Map Transition Checkpoint $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) $00AF Rosary Flash Timer $00B3 Tile Assembly Count Vertical (only for vertical rooms) $00B4 Power Up (used for weapon upgrade) $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) $00C4 Thaw Timer (for frozen waters) $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) $00CF Cogwheel ID Copy $00D1 Cogwheel ID $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 Track Base Address $00E8 #02 Audio Track 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 Track 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 ritenuto); bits 1-2 = init/decay/sustain/release; bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope; $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 Al Segno Address Low Byte $0148 #09 Audio Channel Al Segno Address High Byte $0151 #09 Audio Channel Coda Address Low Byte $015A #09 Audio Channel Coda 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 Control Value / Channel Dampening Placeholder $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 #02 Audio SFX Square Sweep $019E Audio DPCM ID $019F #02 Audio Square Period Low Byte (write to $4002/$4006) $01A3 #05 Audio Channel Octave (raises octave by 5-n) $01A8 #05 Audio Channel Note Offset (adds signed value to note ID to look up period) $01AD #05 Audio Channel Period Low $01B2 #05 Audio Channel Period High $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) $0200 #100 OAM Data $0300 #a0 Tile Data $03C0 #05 Audio Channel Volume Envelope Duration $03C5 #05 Audio Channel Volume Envelope Position $03CA #05 Audio Channel Volume Envelope Loop Count $03CF #05 Audio Channel Volume Envelope Loop Point $03D4 #05 Audio Channel Fadeout 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 Duration $03E3 #05 Audio Channel Fade Duration $03E8 #05 Audio Channel Alternate Duty Cycle $03ED #05 Audio Channel Next Pitchbend Duration $03F2 #05 Audio Channel Pitchbend 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) Freezing Rivers Turning Into Bat $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 and Multikill Count $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 Start $06A5 #05 Audio Channel Pitch Envelope ID $06AA #05 Audio Channel Pitch Envelope Position $06AF #05 Audio Channel Pitch Envelope Loop Count $06B4 #05 Audio Channel Sustain State $06B9 #05 Audio Channel Sustain Position (from 0 to 3) $06BE #05 Audio Channel Sustain Dampen $06C3 #04 Audio BGM Square 1 Sustain Period Low Bytes $06C7 #04 Audio BGM Square 2 Sustain Period Low Bytes $06CB #04 Audio BGM Square 1 Sustain Period High Bytes $06CF #04 Audio BGM Square 2 Sustain Period High Bytes $06D3 #09 Audio Channel PROM Bank $06DC Music Paused $06DD Boss Scream Duration stops DPCM playback $06E0 #90 Collision Map 00 = empty; 01 = mud; 02 = convey right; 03 = convey left; 04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike; 08 = ice; 0c-0f = cracking $0770 #08 CHR5 Solid Definitions Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left; Byte 4 = fragile; 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 #40 Fog Parallax Positions 32 rows of parallax with 2 bytes per row: Byte 0 = subpixel offset; Byte 1 = pixel offset $0782 Previous Selector Column $0782 Map Timer $0782 Epilogue Ally $0782 Sypha's Frozen Tile Column $0783 Previous Selector Row $0783 Map Horizontal Speed Subpixel $0783 Epilogue State $0783 Sypha's Frozen Tile Row $0784 Name Cursor Position $0784 Map Horizontal Speed $0784 Castle Shake Direction $0784 Leftmost Frozen Tile Column $0785 Map Vertical Speed Subpixel $0785 Epilogue Text Page $0785 Leftmost Frozen Tile Row $0786 Password Icon $0786 Map Vertical Speed $0786 Rightmost Frozen Tile Column $0787 Previous Password Icon $0787 Map Scroll Timer $0787 Rightmost Frozen Tile Row $0788 #02 Password Decryption Dump $0788 Map X-coordinate Subpixel $0788 Epilogue Scroll Timer $0788 Water Freeze Counter $0789 Map Y-coordinate Subpixel $0789 Frozen Water Room Type $078A Epilogue Timer $078A Map Path PPU Scroll $078B Map Path PPU Control $078B Password Errors (used for debugging) $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 |