Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Bubble Bobble (NES)/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
m (Fixed formatting.)
 
(4 intermediate revisions by 3 users not shown)
Line 2: Line 2:


== Global Variables ==
== Global Variables ==
*'''0401''' - Current Level (Level 1 = $01)
 
*'''001F''' - Permanent Frame Counter
*'''0401''' - Current Level (01 = Level 1)
*'''045D''' - Super Bubble Bobble switch
*'''045D''' - Super Bubble Bobble switch
*'''04C4''' - Altering this changes the enemy sprites. Probably an offset position for reading data from the pattern image.


== Menu Variables ==


== Menu Variables ==
*'''0402''' - Option selected on main menu
*'''0402''' - Option selected on main menu
*'''0502-0506''' - Password letters (A-J = $00-$09)
*'''0502-0506''' - Password letters (A-J = 00-09)


== Player Variables ==


== Player Variables ==
*'''002E''' - P1 remaining lives
*'''002E''' - P1 remaining lives
*'''003F''' - P1 invincibility timer (odd = invisible, even = visible)
*'''003F''' - P1 invincibility timer (odd = invisible, even = visible)
*'''0042''' - P2 remaining lives
*'''0042''' - P2 remaining lives
*'''0053''' - P2 invincibility timer (odd = invisible, even = visible)
*'''0053''' - P2 invincibility timer (odd = invisible, even = visible)


== Counter Variables ==
== Counter Variables ==
These are the combined total for both players.


*'''0435''' - Counter for bubbles blown (E5DF)
Counter variables determine what kind of special item will appear at the start of the next level, according to specific player actions. When a counter reaches a certain threshold (from a table in ROM), the corresponding item code is loaded in $040B and the counter is reset to 0. If more than one counter reach their threshold, the lowest in the list has priority.
*'''0436''' - Counter for empty bubbles popped (E5E0)
*'''043A''' - Counter for number of times fallen through floor
*'''043B''' - Counter for fruits eaten
*'''0476''' - Counter for filled bubbles popped


Here's a list of arcade counters for anyone who is curious; I'm not sure how many are in the NES version or what order they're in.
*'''435''' - Bubbles Blown
<pre>
*'''436''' - Empty Bubbles Popped
E5DF = Bubbles Blown (0435 NES)
*'''437''' - Jumps on Bubble
E5E0 = Empty Bubbles Popped (0436 NES)
*'''438''' - Fire Bubbles Popped
E5E1 = Lightning Bubbles Popped
*'''439''' - Water Bubbles Popped
E5E2 = Fire bubbles popped
*'''43A''' - Times Fallen Through Floor
E5E3 = Water bubbles popped
*'''43B''' - Enemy Items Taken
E5E4 = Jumps
*'''43C''' - Enemies Killed by Water
E5E5 = Distance run
*'''43D''' - Enemies Killed by Lightning
E5E6 = Distance run 2
*'''43E''' - Enemies Killed by Fire
E5E7 = Wraparounds
*'''43F''' - Special Items Taken
E5E8 = Monster fruits (043B)
*'''440''' - Lightning Bubbles Popped
E5E9 = Fast sweeties
*'''441''' - Enemy Combo Kills (2 or more)
E5EA = rapid fire
*'''442''' - Point Items Taken
E5EB = long range
*'''443''' - Letter Bubbles Popped
e5ec = umbrellas
e5ed = clocks
e5ee = monsters drowned
e5ef = p1 joins
e5f0 = p2 joins
e5f3 = kills by fire bubble
e5f4 = kills by lightning
e5f6 = special items eaten
e5f7 = special fruits eaten
e5f8 = E
e5f9 = X
e5fa = T
e5fb = E
e5fc = N
e5fd = D
e5fe = hurry up
e5ff = yellow/red crosses
e600 = water cross
e601 = books
e602 = purple lanterns
e604 = "JAX" on high score table
e605 = flamingo
e606 = kit
e607 = ...
e608 = entries of 'I.F', 'MTJ', 'NSO', 'KIM' or 'YSH' into high score table
e609 = crown
e60a = 777 levels
e60d = level 19, no deaths
e60e = level 29, no deaths
e60f = level 39, no deaths
e610 = level 49, no deaths
e611 = skel
</pre>


== Bonus Round Variables ==
== Bonus Round Variables ==
*'''042F''' - Amount of remaining treasures during Bonus Game
*'''042F''' - Amount of remaining treasures during Bonus Game
*'''0430''' - Bonus Round timer
*'''0430''' - Bonus Round timer
*'''0431''' - P1 treasures collected in Bonus Round
*'''0431''' - P1 treasures collected in Bonus Round
*'''0433''' - P2 treasures collected in Bonus Round
*'''0433''' - P2 treasures collected in Bonus Round
*'''045F''' - Bonus Round switch (set to $01+ to activate the bonus game, as if picking up the bottle)
*'''045F''' - Bonus Round Switch (01 = Bonus Round Activated)


== Level Variables ==


== Level Variables ==
*'''0405''' - Queue for EXTEND letters (Only 3 will come per level, any queue excess will be cleared at the beginning of the next level with openings)
*'''0405''' - Queue for EXTEND letters (Only 3 will come per level, any queue excess will be cleared at the beginning of the next level with openings)
*'''040D''' - Timer countdown until "Hurry!" appears. This set to 040E at the beginning of each level.  
*'''040B''' - Special Item Code
*'''040D''' - Timer countdown until "Hurry Up!" appears. This set to 040E at the beginning of each level.  
*'''040E''' - What the "Hurry!" timer countdown (040D) is set to at the beginning of a level. Varies from level to level.
*'''040E''' - What the "Hurry!" timer countdown (040D) is set to at the beginning of a level. Varies from level to level.
*'''044D''' - Remaining levels to be skipped by an umbrella. If > 0 when all the enemies on the level are defeated, you will being skipping levels. You can only skip 31 levels max. If the variable is set above $1F(31), skipping will occur again after the defeat of the enemies. This will continue until the variable = 0.
*'''044D''' - Remaining levels to be skipped by an umbrella. If > 0 when all the enemies on the level are defeated, you will begin skipping levels. You can only skip 31 levels max. If the variable is set above 1F (31), skipping will occur again after the defeat of the enemies. This will continue until the variable = 0.
*'''045E''' - Timer going up (Item appearances/disappearances may be relative to it)
*'''045E''' - Timer for Items (ascending, counts seconds)
*'''04CD''' - Point Item position [on Level 1, it positions the item diagonally from the upper-left corner ($00) to the lower-right corner ($FF)]
*'''0492''' - Enemy Anger Level Code
*'''04CE''' - Appearance of Elemental Bubbles ($00-$1F = Nothing/????, $20-$3F = Water Bubbles, $40-$5F = Fire Bubbles, $60+ Fire Bubbles over Water Bubbles and other odd combinations)
*'''04CC''' - Special Item Position
*'''04CD''' - Point Item Position
*'''04CE''' - Appearance of Elemental Bubbles (bits 5-7)


== End Boss Variables ==


== End Boss Variables ==
*'''006F''' - Super Drunk's HP
*'''006F''' - Super Drunk's HP


== Miscellaneous Variables ==


== Miscellaneous Variables ==
*'''445''' - Score Digit x..... (1,000,000s)
*'''0445-044B''' - Variables representing each digit of the last scorer's score. <br>
*'''446''' - Score Digit .x....
- 0445 is millions <br>
*'''447''' - Score Digit ..x...
- 0446 is hundred thousands <br>
*'''448''' - Score Digit ...x..
- 0447 is ten thousands <br>
*'''449''' - Score Digit ....x.
- 0448 is thousands <br>
*'''44A''' - Score Digit .....x (10s)
- 0449 is hundreds <br>
 
- 044A is tens <br>
{{Internal Data}}
- 044B is ones <br>
$27 seems to represent a blank space. These reset to $27 (36) at the beginning of each level. Could possibly be related to how the on-screen score information is redrawn.

Latest revision as of 21:06, 28 January 2024

Chip tiny.png The following article is a RAM map for Bubble Bobble (NES).

Global Variables

  • 001F - Permanent Frame Counter
  • 0401 - Current Level (01 = Level 1)
  • 045D - Super Bubble Bobble switch

Menu Variables

  • 0402 - Option selected on main menu
  • 0502-0506 - Password letters (A-J = 00-09)

Player Variables

  • 002E - P1 remaining lives
  • 003F - P1 invincibility timer (odd = invisible, even = visible)
  • 0042 - P2 remaining lives
  • 0053 - P2 invincibility timer (odd = invisible, even = visible)

Counter Variables

Counter variables determine what kind of special item will appear at the start of the next level, according to specific player actions. When a counter reaches a certain threshold (from a table in ROM), the corresponding item code is loaded in $040B and the counter is reset to 0. If more than one counter reach their threshold, the lowest in the list has priority.

  • 435 - Bubbles Blown
  • 436 - Empty Bubbles Popped
  • 437 - Jumps on Bubble
  • 438 - Fire Bubbles Popped
  • 439 - Water Bubbles Popped
  • 43A - Times Fallen Through Floor
  • 43B - Enemy Items Taken
  • 43C - Enemies Killed by Water
  • 43D - Enemies Killed by Lightning
  • 43E - Enemies Killed by Fire
  • 43F - Special Items Taken
  • 440 - Lightning Bubbles Popped
  • 441 - Enemy Combo Kills (2 or more)
  • 442 - Point Items Taken
  • 443 - Letter Bubbles Popped

Bonus Round Variables

  • 042F - Amount of remaining treasures during Bonus Game
  • 0430 - Bonus Round timer
  • 0431 - P1 treasures collected in Bonus Round
  • 0433 - P2 treasures collected in Bonus Round
  • 045F - Bonus Round Switch (01 = Bonus Round Activated)

Level Variables

  • 0405 - Queue for EXTEND letters (Only 3 will come per level, any queue excess will be cleared at the beginning of the next level with openings)
  • 040B - Special Item Code
  • 040D - Timer countdown until "Hurry Up!" appears. This set to 040E at the beginning of each level.
  • 040E - What the "Hurry!" timer countdown (040D) is set to at the beginning of a level. Varies from level to level.
  • 044D - Remaining levels to be skipped by an umbrella. If > 0 when all the enemies on the level are defeated, you will begin skipping levels. You can only skip 31 levels max. If the variable is set above 1F (31), skipping will occur again after the defeat of the enemies. This will continue until the variable = 0.
  • 045E - Timer for Items (ascending, counts seconds)
  • 0492 - Enemy Anger Level Code
  • 04CC - Special Item Position
  • 04CD - Point Item Position
  • 04CE - Appearance of Elemental Bubbles (bits 5-7)

End Boss Variables

  • 006F - Super Drunk's HP

Miscellaneous Variables

  • 445 - Score Digit x..... (1,000,000s)
  • 446 - Score Digit .x....
  • 447 - Score Digit ..x...
  • 448 - Score Digit ...x..
  • 449 - Score Digit ....x.
  • 44A - Score Digit .....x (10s)