On this page
  1. How it plays
  2. Where the boards come from
  3. Across the series
  4. Related
  5. Mechanics
  6. References
  7. Sources

Yoshi’s Cookie is a puzzle game in which the player slides the rows and columns of a board of cookies until a whole row or column shows one kind, which then clears1. A stage ends when the board is empty1, and the boards grow from 4×4 cookies of two kinds in Round 1 to 6×6 of five, the first of them on Round 5 Stage 62.

:::gap{internal}[History and reception] Its release, its versions for the SNES and the Game Boy, and how it was received need secondary sources. :::

#How it plays

The player moves a cursor over the board and pushes its row or column one cookie along. The cookie pushed off one edge comes back on the other1. A push slides for 7 frames3. A row or column that is then all one kind clears. The rows above it drop, the columns to its right close up, and a line that forms clears in turn, so one push can clear twice1. Rows are checked first, and columns only when no row matched4.

A line always spans the board, so the board stays a rectangle. Rows count only on a board at least two cookies wide, and columns only on one at least two tall4. A sixth kind of cookie counts as any kind4. Without one, a board that holds a single cookie of some kind can’t be emptied by pushes, since no line of two or more can be all that kind5.

New cookies come in from the edges on a timer. Round 1 Stage 1, at the default settings, gives the player 226 frames6 of play before the first ones arrive6. The timer runs only during play: each push costs its seven frames, and it stands still while lines clear7. In Round 1 Stage 1, holding B cuts the time left to a quarter, and holding it again later in the stage does nothing more8. The incoming cookies are of 3 kinds in Round 1, 4 in Rounds 2 and 3, and 5 in Rounds 4 to 109.

#Where the boards come from

Every board comes from one random number generator, a byte stepped as x←5x+17mod25610. It starts at $C311 at power-on11. A stage’s setup draws the kinds of cookie it uses, then fills the board from the bottom left, row by row, drawing again whenever a cookie would match the one to its left or the one below12. A kind is a step of the generator mod 5, and never the same as the kind picked before it13. With n kinds in play, a cookie’s kind counts how many of n − 1 steps have their top bit set, so the middle kinds of the list come up more often than the ends14. With two kinds and no neighbor alike, the first board of Round 1 is always a checkerboard15.

The title screen leaves the generator alone, but the setup menu, where the player picks a round, a speed, and music, steps it once a frame16. That makes the first board a matter of RNG manipulation. With the menu’s defaults, which start on Round 1 Stage 1, it depends only on how many frames the player spends in the menu, counted mod 256. A model of the setup gives 1915 different boards over the 256 counts, and the game matches the model for the 715 counts tested15. Starting a game sets the board up twice, once under the round banner and again when play begins, and only the second is played17.

The attract demo plays from its own fixed seed and puts the player’s generator back when it ends18.

:::gap{internal}[Timings and formulas] How long a clear’s animation runs, the formula behind the time to each batch of new cookies, how the incoming row is drawn, and where the Yoshi cookie first appears have no claims yet. :::

#Across the series

:::gap{internal}[Versions] How the SNES and Game Boy versions differ from the NES release isn’t covered yet. :::

Mechanics

MechanicKindHow
Random number generatorFormulaone byte stepped as 5x + 17 mod 256, so it repeats every 256 steps
RNG manipulationFrame countthe setup menu steps the generator every frame, so the time spent there picks the first board
Clearinga whole row or column of one kind clears, rows first; the line runs the full width or height of the board
ChainCascadethe rows above a clear drop, the columns to its right close up, and a line that forms clears in turn
Demo playbackthe attract demo plays from a fixed seed and gives the generator back afterwards
Every claim about this game, by concept (18)
generalA 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.Code
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.Code
Starting a game sets up the first board twice: once under the round banner, then again when the player presses a button to play, from where the generator stopped; the banner's board is never played.Verified
A shift slides for 7 frames, the frame of the input included.Verified
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.Verified
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.Verified
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.Verified
ClearingOn 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.Verified
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.Code
A board that holds a single cookie of some kind and no cookie of kind 5 (tile $1A, which counts as any kind) can't be emptied by shifts, since every line that clears is two or more cookies of one kind. Only incoming cookies can rescue it.Code
Demo playbackThe attract-mode demo saves the generator, plays from the fixed seed $FB, and puts the saved value back when it ends.Code
Random number generatorYoshi'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.Verified
The power-on code sets the generator to $C3.Verified
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.Verified
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.Verified
With n kinds in play, a cookie's kind is the list entry at the count of generator steps with bit 7 set among n − 1 steps, so the middle kinds of the list come up more often than the ends.Verified
RNG manipulationThe title screen leaves the generator alone; the 1P setup menu (round, speed, music) steps it once per frame, from the frame it opens to the frame Start leaves it.Verified
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.Verified

References

  1. ^ abcdOn 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.Verified“Yoshi's Cookie (USA)” · King_O's run, replayed in FCEUXrevised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): $D0F0, play: jsr $EC47 (line-check), then matched rows ($63) go to mode $17, matched columns ($6C) to mode $19. We don't reproduce the bytes.

    each shift's board before and after

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  2. ^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.Code“Yoshi's Cookie (USA)”revised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): fixed bank $EB0C: 7 rounds × 10 stages × (columns, rows, kinds); $E93B: the round capped at 7 (after taking 10 off from round 11), the stage at 10, then $EB0C,y into $00, $01, $02. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  3. ^A shift slides for 7 frames, the frame of the input included.Verified“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): 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 play. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  4. ^ abcEach 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.Code“Yoshi's Cookie (USA)”revised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): 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 $1A; $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 $1A. We don't reproduce the bytes.

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  5. ^A board that holds a single cookie of some kind and no cookie of kind 5 (tile $1A, which counts as any kind) can't be emptied by shifts, since every line that clears is two or more cookies of one kind. Only incoming cookies can rescue it.Code“Yoshi's Cookie (USA)” · King_O's run, replayed in FCEUXrevised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): fixed bank $EC47: rows only on a board at least 2 wide, each all one tile or the Yoshi cookie's $1A; $ECCD: columns only on a board at least 2 tall, likewise. We don't reproduce the bytes.

    each stage's first board, and the stages where a batch came in

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  6. ^ abWith 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.Verified“Yoshi's Cookie (USA)” · King_O's run, replayed in FCEUXrevised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): 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 1; $E715, a stage's start: add the interval from $A8CD to the timer. We don't reproduce the bytes.

    every write to the incoming row and every generator step, per stage

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  7. ^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.Verified“Yoshi's Cookie (USA)” · King_O's run, replayed in FCEUXrevised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): 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); $D2AB, a shift starting: lda #$06, sta $03FE (the slide's countdown) and sta $03FD (the charge). We don't reproduce the bytes.

    each clear's modes and frames

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  8. ^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.Verified“Yoshi's Cookie (USA)”revised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): 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 twice; $E724, a stage's start: clear $049A. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  9. ^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.Code“Yoshi's Cookie (USA)”revised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): bank 3 $A9EE, indexed by round (entry 0 unused); bank 3 $A045: adds new kinds to the list until it holds the table's count. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  10. ^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.Verified“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): 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 itself; bank 2 $9FA4-$9FE3, the same step in the kind picker. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  11. ^ abThe power-on code sets the generator to $C3.Verified“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): fixed bank $C0E4: lda #$C3, sta $0424. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  12. ^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.Verified“Yoshi's Cookie (USA)”revised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): fixed bank $E9DA-$EB0B: kinds, one generator step, then the fill; the redraw tests read $01FE,y (left) and $0220,y (below); bank 3 $A01B: the list of kinds, each new. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  13. ^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.Verified“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): bank 2 $9FA4: step, cmp $0427, sta $0427; $9FBF takes mod 5 by subtracting 5; $9FCA turns the kind into its tiles; fixed bank $E8D0: lda #$00 ... sta $0427 in the stage's start. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  14. ^With n kinds in play, a cookie's kind is the list entry at the count of generator steps with bit 7 set among n − 1 steps, so the middle kinds of the list come up more often than the ends.Verified“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): bank 2 $9FE4: ldx $0481 (the count), dex; per step bpl skips iny; then lda $0481,y. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  15. ^ abcdWith 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.Verified“Yoshi's Cookie (USA)”revised
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): the menu's step (menu-step); the board setup (board-setup). We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  16. ^The title screen leaves the generator alone; the 1P setup menu (round, speed, music) steps it once per frame, from the frame it opens to the frame Start leaves it.Verified“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): fixed bank $C7CE: lda $03D9 (the mode), jsr $F573, then the mode table; entry $12 is $C923; $C923: one step, then the menu handler (bank pair 3, $8109). We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  17. ^Starting a game sets up the first board twice: once under the round banner, then again when the player presses a button to play, from where the generator stopped; the banner's board is never played.Verified“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): the setup that runs both times. We don't reproduce the bytes.

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on Yoshi's Cookie (USA) (SHA-1 b19b67e59dd6…). It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

  18. ^The attract-mode demo saves the generator, plays from the fixed seed $FB, and puts the saved value back when it ends.Code“Yoshi's Cookie (USA)”
    How we know

    In the cartridge (“Yoshi's Cookie (USA)”): fixed bank $C4AA: lda $0424, sta $0425, lda #$FB, sta $0424, beside setting the demo flag $04A0; $CDE2: lda $0425, sta $0424, then the demo flag cleared. We don't reproduce the bytes.

    Checked against the evidence by its author, an AI model, 2026-10-25.

    Checked by a second AI model, 2026-10-25.

    In the claim ledger

Sources

Code

Primary