Claim set · data/claims/yoshis-cookie.yaml

Yoshi's Cookie (USA) (the ROM, read and measured in Mesen)

Game: Yoshi's Cookie.

Yoshi's Cookie keeps its random number generator in one byte, $0424, and steps it as x←5x+17mod256, written out in place at each call site, so the sequence runs through all 256 values before it repeats. yoshis-cookie/rng

About: Yoshi's Cookie Random number generator

Value
{
 "multiplier": 5,
 "increment": 17,
 "modulus": 256,
 "period": 256
}
VerifiedYoshi's Cookie (USA) · 0x1C933-0x1C948 — fixed bank $C923-$C938, the setup menu's step: lda $0424, asl, asl, clc, adc $0424, clc, adc #$11, sta $0424, then a far call to the menu itselfYoshi's Cookie (USA) · 0x5FB4-0x5FF3 — bank 2 $9FA4-$9FE3, the same step in the kind pickerChecked by claude, 2026-10-25 — read the step at both sites in a private disassembly; the probe counts the period and checks every menu frame in Mesen against one stepProbe: probes/yoshis-cookie/yoshis-cookie.mjs

An increment that is odd and a multiplier one more than a multiple of 4 give the full period (Hull-Dobell). The step appears in at least 15 places across the banks.

Cited by: Yoshi's Cookie

The power-on code sets the generator to $C3. yoshis-cookie/boot-seed

About: Yoshi's Cookie Random number generator

Value: 195

VerifiedYoshi's Cookie (USA) · 0x1C0F4-0x1C0F8 — fixed bank $C0E4: lda #$C3, sta $0424Checked by claude, 2026-10-25 — read the boot code; the probe reads $0424 on the title screen in MesenProbe: probes/yoshis-cookie/yoshis-cookie.mjs

Cited by: Yoshi's Cookie

With the setup menu's defaults, which start on Round 1 Stage 1, a 4×4 board of two kinds, the first board played depends only on how many frames the player spends in the menu, counted mod 256. The model of the setup gives 19 different boards over the 256 counts, each a checkerboard; Mesen matches the model for the seven counts the probe plays. yoshis-cookie/first-board

About: Yoshi's Cookie RNG manipulation

Value
{
 "states": 256,
 "boards": 19,
 "checked": 7
}
VerifiedYoshi's Cookie (USA) · 0x1C933-0x1C948 — the menu's step (menu-step)Yoshi's Cookie (USA) · 0x1E9EA-0x1EB1B — the board setup (board-setup)Checked by claude, 2026-10-25 — the probe runs the model of the setup over all 256 generator states and checks it against Mesen for seven menu waits, two of them 256 frames apartProbe: probes/yoshis-cookie/yoshis-cookie.mjs

Round 1 Stage 1 is 4×4 with two kinds (board-sizes), and a cookie may match neither its left nor its lower neighbour, so two kinds can only make a checkerboard; the menu count picks the two kinds and which goes in the corner. In FCEUX, pressing Start in the menu on each of 256 consecutive frames gave the model's board every time.

Cited by: Yoshi's Cookie

Each stage's board comes from the generator: it picks the stage's kinds of cookie, then fills the board from the bottom left, row by row, redrawing any cookie that matches the one to its left or the one below. yoshis-cookie/board-setup

About: Yoshi's Cookie Random number generator

VerifiedYoshi's Cookie (USA) · 0x1E9EA-0x1EB1B — fixed bank $E9DA-$EB0B: kinds, one generator step, then the fill; the redraw tests read $01FE,y (left) and $0220,y (below)Yoshi's Cookie (USA) · 0x602B-0x6054 — bank 3 $A01B: the list of kinds, each newChecked by claude, 2026-10-25 — read the setup in a private disassembly; the probe checks the model's boards against MesenProbe: probes/yoshis-cookie/yoshis-cookie.mjs

What the one step between the kinds and the fill is for isn't worked out here.

Cited by: Yoshi's Cookie

A cookie kind is a generator step mod 5, drawn again while it equals the previous pick; the previous pick is reset to 0 at each stage's start, so the first kind picked is never kind 0. yoshis-cookie/kind-pick

About: Yoshi's Cookie Random number generator

VerifiedYoshi's Cookie (USA) · 0x5FB4-0x5FF3 — bank 2 $9FA4: step, cmp $0427, sta $0427; $9FBF takes mod 5 by subtracting 5; $9FCA turns the kind into its tilesYoshi's Cookie (USA) · 0x1E8E0-0x1E8ED — fixed bank $E8D0: lda #$00 ... sta $0427 in the stage's startChecked by claude, 2026-10-25 — read both sites; the model built on them matches Mesen's boards (board-setup)Probe: probes/yoshis-cookie/yoshis-cookie.mjs

Cited by: Yoshi's Cookie

A table gives each stage's board width, height, and kinds of cookie: Round 1 opens on a 4×4 board of two kinds, the first 6×6 board with all five kinds is Round 5 Stage 6, and from Round 6 Stage 2 on every board is one; Rounds 8 to 10 reuse Round 7's row. yoshis-cookie/board-sizes

Value
[
 [
  [
   4,
   4,
   2
  ],
  [
   3,
   3,
   2
  ],
  [
   5,
   4,
   2
  ],
  [
   5,
   5,
   2
  ],
  [
   3,
   3,
   3
  ],
  [
   4,
   4,
   3
  ],
  [
   5,
   4,
   3
  ],
  [
   5,
   5,
   3
  ],
  [
   5,
   5,
   3
  ],
  [
   5,
   5,
   3
  ]
 ],
 [
  [
   4,
   4,
   3
  ],
  [
   5,
   4,
   3
  ],
  [
   5,
   5,
   3
  ],
  [
   6,
   5,
   3
  ],
  [
   4,
   3,
   4
  ],
  [
   4,
   4,
   4
  ],
  [
   5,
   4,
   4
  ],
  [
   5,
   5,
   4
  ],
  [
   5,
   5,
   4
  ],
  [
   6,
   5,
   4
  ]
 ],
 [
  [
   6,
   5,
   3
  ],
  [
   6,
   6,
   3
  ],
  [
   5,
   5,
   4
  ],
  [
   5,
   5,
   4
  ],
  [
   6,
   5,
   4
  ],
  [
   6,
   5,
   4
  ],
  [
   6,
   5,
   4
  ],
  [
   6,
   6,
   4
  ],
  [
   6,
   6,
   4
  ],
  [
   6,
   6,
   4
  ]
 ],
 [
  [
   4,
   4,
   4
  ],
  [
   5,
   4,
   4
  ],
  [
   5,
   5,
   4
  ],
  [
   6,
   5,
   4
  ],
  [
   6,
   6,
   4
  ],
  [
   4,
   4,
   5
  ],
  [
   5,
   4,
   5
  ],
  [
   5,
   4,
   5
  ],
  [
   5,
   5,
   5
  ],
  [
   5,
   5,
   5
  ]
 ],
 [
  [
   5,
   4,
   5
  ],
  [
   5,
   5,
   5
  ],
  [
   6,
   5,
   5
  ],
  [
   6,
   5,
   5
  ],
  [
   6,
   5,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ]
 ],
 [
  [
   6,
   5,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ]
 ],
 [
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ],
  [
   6,
   6,
   5
  ]
 ]
]
CodeYoshi's Cookie (USA) · 0x1EB1C-0x1EBED — fixed bank $EB0C: 7 rounds × 10 stages × (columns, rows, kinds)Yoshi's Cookie (USA) · 0x1E94B-0x1E99B — $E93B: the round capped at 7 (after taking 10 off from round 11), the stage at 10, then $EB0C,y into $00, $01, $02Checked by claude, 2026-10-25 — read the index code; the probe reads the table's bytes from the ROM and compares them with this valueProbe: probes/yoshis-cookie/yoshis-cookie.mjs

Cited by: Yoshi's Cookie

The cookies that come in from the edges are of 3 kinds in Round 1, 4 in Rounds 2 and 3, and 5 in Rounds 4 to 10. yoshis-cookie/incoming-kinds

Value
[
 3,
 4,
 4,
 5,
 5,
 5,
 5,
 5,
 5,
 5
]
CodeYoshi's Cookie (USA) · 0x69FE-0x6A08 — bank 3 $A9EE, indexed by round (entry 0 unused)Yoshi's Cookie (USA) · 0x6055-0x60A8 — bank 3 $A045: adds new kinds to the list until it holds the table's countChecked by claude, 2026-10-25 — read the routine; the probe reads the table's bytes from the ROMProbe: probes/yoshis-cookie/yoshis-cookie.mjs

Cited by: Yoshi's Cookie

The attract-mode demo saves the generator, plays from the fixed seed $FB, and puts the saved value back when it ends. yoshis-cookie/demo-seed

About: Yoshi's Cookie Demo playback

CodeYoshi's Cookie (USA) · 0x1C4BA-0x1C4C4 — fixed bank $C4AA: lda $0424, sta $0425, lda #$FB, sta $0424, beside setting the demo flag $04A0Yoshi's Cookie (USA) · 0x1CDF2-0x1CDF7 — $CDE2: lda $0425, sta $0424, then the demo flag clearedChecked by claude, 2026-10-25 — read both sites in a private disassembly

Not measured.

Cited by: Yoshi's Cookie

On the first stages of Round 1, a shift slides the cursor's row or column one cell, wrapping around. A row or column that is all one kind then clears, the rows above drop, the columns to its right close up, and any line that forms clears in turn. The stage ends when the board is empty. yoshis-cookie/rules

About: Yoshi's Cookie Clearing

VerifiedYoshi's Cookie (USA) · 0x1D100-0x1D16B — $D0F0, play: jsr $EC47 (line-check), then matched rows ($63) go to mode $17, matched columns ($6C) to mode $19Yoshi's Cookie (USA): King_O's work in progress replayed in FCEUX 2.6.6 · each shift's board before and afterChecked by claude, 2026-10-25 — the probe plays Round 1 Stages 1 to 3 in Mesen with the model's plans and checks all 37 settled boards against the model: 8 shifts clear rows, 21 clear columns, and 7 set off a second clear. In King_O's run, replayed in FCEUX, the model gives the next board for all 1,472 shifts made outside the three stages where new cookies came in; counting those stages too, it gives 1,490 of the 1,494Probe: probes/yoshis-cookie/yoshis-cookie.mjs

Which lines the game checks, and in what order, is read in the code (line-check). A board one cookie wide can't clear by shifting, since no row is checked and turning its column doesn't change what's in it: in the probe, a single shift on Round 1 Stage 2 clears two of its three columns and leaves the third standing.

Cited by: Yoshi's Cookie

Each pass of the line check tests the rows first, and the columns only if no row matched. Rows are tested only on a board at least two cookies wide, columns only on one at least two tall, and both scans pass over tile $1A, kind 5, so a cookie of that kind counts as any kind; the atlas takes it to be the Yoshi cookie. Only whole rows and whole columns clear, so the board stays a rectangle. yoshis-cookie/line-check

About: Yoshi's Cookie Clearing

CodeYoshi's Cookie (USA) · 0x1EC57-0x1ECDC — fixed bank $EC47: jsr $EC57 (rows), and only if $63 is 0, jsr $ECCD (columns); $EC57 returns at once when the first and last columns ($03E6, $03E7) are the same, and its scan steps over tile $1AYoshi's Cookie (USA) · 0x1ECDD-0x1ED55 — $ECCD, the columns: returns at once when the top and bottom rows ($03E4, $03E5) are the same; each column's scan, a row ($20) at a time, steps over tile $1AChecked by claude, 2026-10-25 — read $EC47-$ED45 in a private disassembly

Tile $1A is the top-left tile of kind 5, past the five kinds of cookie, which the atlas takes to be the Yoshi cookie. Where in the game it first appears isn't worked out here.

Cited by: Yoshi's Cookie

A shift slides for 7 frames, the frame of the input included. yoshis-cookie/shift-frames

Value: 7 frames

VerifiedYoshi's Cookie (USA) · 0x1D2BB-0x1D2F6 — fixed bank $D2AB: inc $03D9 (play to shift), lda #$06, sta $03FE; $D2BA: while $03FE is above 0, dec it, else finish the shift and set the mode back to playChecked by claude, 2026-10-25 — read the shift's countdown (fixed bank $D2AB sets $03FE to 6; $D2BA counts it down, then returns to play); the probe counts the frames in MesenProbe: probes/yoshis-cookie/yoshis-cookie.mjs

FCEUX gives the same 7, and in FCEUX the game takes the next input on the 8th frame after the shift's: the frame after the slide returns to play without reading the pad.

Cited by: Yoshi's Cookie

With the menu's default settings, the first new cookies for Round 1 Stage 1 are drawn after 226 frames of play from the board's setup, counted as the batch timer counts them; a stage cleared sooner leaves the generator where the setup left it. yoshis-cookie/first-batch

Value: 226 frames

VerifiedYoshi's Cookie (USA) · 0x1D1D3-0x1D231 — fixed bank $D1C3, play with nothing to clear: when the 16-bit timer $0416 reaches 0, start a batch (bank pair 1, $9886); else count it down by 1Yoshi's Cookie (USA) · 0x1E725-0x1E733 — $E715, a stage's start: add the interval from $A8CD to the timerYoshi's Cookie (USA): King_O's work in progress replayed in FCEUX 2.6.6 · every write to the incoming row and every generator step, per stageChecked by claude, 2026-10-25 — the probe waits in Mesen with no input; FCEUX gives 226 too. In King_O's run, replayed in FCEUX, 97 of the 100 stages end before any batch is drawnProbe: probes/yoshis-cookie/yoshis-cookie.mjs

The wait comes from a timer at $0416 that the stage's start sets from the elapsed counters, the speed, and the board's area (bank 3 $A8CD); its formula is not worked out here.

Cited by: Yoshi's Cookie

The timer to the next batch of cookies counts down one per frame of play, and six more on the first frame of play after a shift, so a shift costs its seven frames. It stands still while lines clear, and the shift that empties the board is never charged its six. yoshis-cookie/batch-timer

Value
{
 "shift": 6
}
VerifiedYoshi's Cookie (USA) · 0x1D1D3-0x1D231 — fixed bank $D1C3, in the play handler: subtract the pending charge $03FD from the timer $0416, then count it down by 1 (or start a batch at 0)Yoshi's Cookie (USA) · 0x1D2BB-0x1D2F6 — $D2AB, a shift starting: lda #$06, sta $03FE (the slide's countdown) and sta $03FD (the charge)Yoshi's Cookie (USA): King_O's work in progress replayed in FCEUX 2.6.6 · each clear's modes and framesChecked by claude, 2026-10-25 — read the play handler's timer step and the shift's setup; over each stage the probe plays in Mesen, the timer's drop equals the frames the play handler ran plus six per shift but the last, and the timer never moves on a slide's or a clear's frameProbe: probes/yoshis-cookie/yoshis-cookie.mjs

In King_O's run, replayed in FCEUX, the clears that hand back to play take 48 to 216 frames, all free on the timer, so a solver can price a plan by its play and shift frames alone.

Cited by: Yoshi's Cookie

In Round 1 Stage 1, holding B during play divides the time left to the next batch by four; holding it again later in the stage only counts the frame down. yoshis-cookie/hurry

Value
{
 "divisor": 4
}
VerifiedYoshi's Cookie (USA) · 0x1CF80-0x1CF9D — fixed bank $CF70: if B is held ($CE bit 6) and the flag $049A is 0, set it and shift the timer $0416/$0417 right twiceYoshi's Cookie (USA) · 0x1E734-0x1E738 — $E724, a stage's start: clear $049AChecked by claude, 2026-10-25 — read the B check; the probe holds B 20 frames into Round 1 Stage 1 in Mesen (205 left becomes 51), then again 10 frames later (41 becomes 40). FCEUX gives the sameProbe: probes/yoshis-cookie/yoshis-cookie.mjs

The flag $049A that the first press sets is cleared at every stage's start, so the code allows one press a stage; only Round 1 Stage 1 is measured. The same press also halves twice a second timer at $0418, under its own flag $049B; what that timer paces is not worked out here.

Cited by: Yoshi's Cookie