The pack
bubbleCave
function bubbleCave(): Pack<{ bubbleCave: typeof api }>
Install the bubble-cave preset API (game.bubbleCave).
Helpers
BUBBLE_BOBBLE_FRUIT_ROUNDS
const BUBBLE_BOBBLE_FRUIT_ROUNDS: readonly number[]
Rounds on which leftover bubbles always turn into fruit when the last monster dies (Chris Moore's list).
BUBBLE_BOBBLE_LEGEND
const BUBBLE_BOBBLE_LEGEND: { readonly ".": {}; readonly W: { readonly solid: true; }; readonly "#": { readonly solid: true; readonly through: true; }; }
Bubble Bobble's legend: 'W' walls, ceiling and floor (solid); '#' platforms and inner walls (through blocks); '.' air.
BUBBLE_BOBBLE_POINTS_ITEMS
const BUBBLE_BOBBLE_POINTS_ITEMS: { item: string; value: number }[]
Bubble Bobble's 60 points items (Chris Moore's table): value by item number.
BUBBLE_BOBBLE_ROUND_DATA
const BUBBLE_BOBBLE_ROUND_DATA: readonly string[]
Compact Bubble Bobble round records; decode with bubbleBobbleRound(n).
BUBBLE_BOBBLE_SHOTS
const BUBBLE_BOBBLE_SHOTS: Record<string, ShotSpec>
Bubble Bobble's enemy projectiles (estimates from play).
BUBBLE_BOBBLE_SPECIAL_ITEMS
const BUBBLE_BOBBLE_SPECIAL_ITEMS: CaptureSpecialItem[]
The special items this preset implements, in item-number order (the highest earned one wins). Thresholds AA BB CC DD from the ROM.
bubbleBobbleKinds
function bubbleBobbleKinds(o: { bossHp?: number } = {}): Record<string, CaptureEnemyKind>
Bubble Bobble's monsters as capture-game kinds (8-unit tiles). Speeds are estimates from play footage.
bubbleBobblePointsPick
function bubbleBobblePointsPick(ctx: PointsPickContext): number
Bubble Bobble's points item, as the ROM picks it (Chris Moore's notes): round 1 draws from items 0x15-0x24; after a round with Baron von Blubba from the first ten; after a hurry-up from 0x0a-0x13; after an umbrella skip from every third; otherwise by the previous round's time, quicker paying better (49 down for one player, 59 for two).
bubbleBobblePreset
function bubbleBobblePreset(o: BubbleBobbleOptions = {}): CaptureConfig
The arcade Bubble Bobble as a capture-game config.
bubbleBobbleRound
function bubbleBobbleRound(n: number): CaptureRound
The round data decoded: a 32 x 26 map at 8 units per tile (the arcade's 256 x 208 playfield).
Types
BubbleBobbleOptions
interface BubbleBobbleOptions
Options for bubbleBobblePreset.
difficulty?: CaptureDifficultyName— Difficulty. Default 'normal'.startRound?: number— First round (1-100). Default 1.players?: number— Players (1 or 2, as in the arcade; the session takes up to 4). Default 1.lives?: number— Starting lives (the DIP offers 1, 2, 3, 5). Default 3.extraLives?: number[]— Extra life thresholds (DIP: 30k/100k/400k, 20k/80k/300k, 40k/200k/500k, 50k/250k/500k). Default 30k, 100k, 400k.rounds?: number[]— Only these rounds, in order (e.g. a short set for a demo). Default all 100.seed?: number— Seed. Default 1986.invulnerable?: boolean— Players never die.


