Yoshi's Cookie
Bullet-Proof Software's 1992 puzzle game, in which rows and columns of cookies slide until a line shows one kind.
On this page
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 10. 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
| Mechanic | Kind | How |
|---|---|---|
| Random number generator | Formula | one byte stepped as 5x + 17 mod 256, so it repeats every 256 steps |
| RNG manipulation | Frame count | the setup menu steps the generator every frame, so the time spent there picks the first board |
| Clearing | a whole row or column of one kind clears, rows first; the line runs the full width or height of the board | |
| Chain | Cascade | the rows above a clear drop, the columns to its right close up, and a line that forms clears in turn |
| Demo playback | the attract demo plays from a fixed seed and gives the generator back afterwards |
Every claim about this game, by concept (18)
References
- ^ 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.
- ^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.
- ^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.
- ^ 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)”revisedHow 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.
- ^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 FCEUXrevisedHow 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.
- ^ 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.
- ^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 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.
- ^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.
- ^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.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.
- ^ 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.
- ^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.
- ^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.
- ^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.
- ^ 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.
- ^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.
- ^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.
- ^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.