data/claims/yoshis-cookie.yamlYoshi'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 , 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
}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.mjsAn 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.mjsCited 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
}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.mjsRound 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.mjsWhat 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.mjsCited 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 ] ] ]
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.mjsCited 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 ]
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.mjsCited 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 disassemblyNot 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.mjsWhich 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 disassemblyTile $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.mjsFCEUX 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.mjsThe 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
}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.mjsIn 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
}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.mjsThe 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