GAME NOTES

Designing Hanabi: a slot whose free spins build ×1, ×2, ×3, ×5 — and what its source file admits

Illustration for “Designing Hanabi: a slot whose free spins build ×1, ×2, ×3, ×5 — and what its source file admits”
Hanabi (花火) is a 5×3, ten-line festival slot whose every reel stop is one weighted draw from the committed seed pair. The nine symbols carry weights of 3, 2, 4, 5, 6, 8, 9, 12, 12 (61 in total), so a 祭 scatter lands on any given cell with probability 2/61 and three or more of them on a base spin — the free-spin trigger — happens on about 1 spin in 84, which is the “≈ 1 in 83” the engine header measured. The feature starts at 10 free spins, retriggers add 4 up to a cap of 22, and the win multiplier climbs through the feature: spins 1–2 pay ×1, 3–4 pay ×2, 5–7 pay ×3, and every spin from the eighth onward pays ×5. A round can never return more than ×2,000 the total bet. The header states the calibrated return as 96.1% with a 33.5% hit rate; those two figures come from the engine’s own three-million-round simulation, not from this article.
BETKYO RESEARCHPUBLISHED 2026-09-03UPDATED 2026-09-039 MIN READ

Nine numbers decide everything

A video slot is a claim about probability dressed as a machine. On most of them the claim cannot be inspected: the reel strips are proprietary, the weights are proprietary, and the return figure on the help screen is something you take on trust. Hanabi is built the other way round. Its reels are not strips at all — every one of the fifteen cells is an independent weighted draw — and the weights sit in a table at the top of the engine file.

ENGINE-VERIFIEDhanabi/engine.ts, HANABI_SYMBOLS: 玉 SHELL (wild) weight 3; 祭 MATSURI (scatter) weight 2; 金魚 KINGYO weight 4, pays ×3 / ×10 / ×40 the total bet for 3 / 4 / 5 of a kind (pay100 = [300, 1000, 4000]); 提灯 CHOCHIN weight 5, ×2 / ×6 / ×25; 団扇 UCHIWA weight 6, ×1.5 / ×4 / ×15; 氷 KAKIGORI weight 8, ×1 / ×3 / ×10; 風鈴 FURIN weight 9, ×0.8 / ×2.5 / ×8; 麺 YAKISOBA weight 12, ×0.6 / ×1.6 / ×5; 鈴 SUZU weight 12, ×0.5 / ×1.2 / ×4. WEIGHT_TOTAL is the sum of the weights, 61; symAt(u) walks the table subtracting weights from u × 61.
What each symbol is worth and how often a cell shows it — straight from the weight table
SYMBOLWEIGHTCHANCE PER CELL3 / 4 / 5 OF A KIND (× TOTAL BET)
玉 Shell (wild)34.92%substitutes for any paying symbol
祭 Matsuri (scatter)23.28%×2 / ×5 / ×20 anywhere, and 3+ start free spins
金魚 Kingyo46.56%×3 / ×10 / ×40
提灯 Chōchin58.20%×2 / ×6 / ×25
団扇 Uchiwa69.84%×1.5 / ×4 / ×15
氷 Kakigōri813.11%×1 / ×3 / ×10
風鈴 Fūrin914.75%×0.8 / ×2.5 / ×8
麺 Yakisoba1219.67%×0.6 / ×1.6 / ×5
鈴 Suzu1219.67%×0.5 / ×1.2 / ×4

Chance per cell is weight ÷ 61. Line pays are read left to right on ten fixed lines; the wild counts as any paying symbol and the scatter breaks a line.

Two things follow from the table that a help screen would never tell you. The rarest paying symbol is not the rarest thing on the reels — the scatter is, at two parts in sixty-one — and the two cheapest symbols together fill almost forty percent of every cell. That is the shape of every slot ever built; the difference is only that here the shape is printed.

One spin in eighty-four

Because every cell is independent, the free-spin trigger has a closed form. A cell is a scatter with probability 2/61; a base spin has fifteen cells; the feature starts when three or more of them are scatters. That is a binomial count, and it comes to 1.193% of spins, or one in 83.8.

Scatter counts on a single base spin, 15 independent cells at p = 2/61
SCATTERSPROBABILITYROUGHLYWHAT HAPPENS
060.7%3 spins in 5nothing
130.9%1 in 3nothing
27.3%1 in 14nothing — two scatters pay nothing here
31.075%1 in 93×2 the bet, and 10 free spins
40.109%1 in 915×5 the bet, and 10 free spins
5 or more0.0086%1 in 11,600×20 the bet, and 10 free spins

The three feature rows sum to 1.193%, one spin in 83.8.

ENGINE-VERIFIEDhanabi/engine.ts header: “Math calibrated by Monte Carlo (3M rounds, scratch harness mirrored this file): RTP 96.1%, hit rate 33.5%, free spins ≈ 1 in 83, win cap ×2000.” The 1-in-83 the engine measured and the 1-in-83.8 derived above from its own weights are the same number; the return and hit-rate figures are quoted from the header and were not recomputed for this article.

It is worth pausing on that agreement. The engine’s author tuned the game by simulation and wrote the result in a comment. The weights that produced the simulation are in the same file. Anyone with a calculator can check that the two agree, and they do — which is the only reason this article is allowed to repeat the 96.1%. The Journal does not print a return figure the engine does not state, and it does not print one it cannot see the inputs for.

The ladder: why the feature is shaped like a firework

A free-spin feature in most slots is a flat bonus: ten spins, maybe a fixed multiplier. Hanabi’s is shaped. The multiplier applied to each free spin depends on which spin it is, and it climbs.

ENGINE-VERIFIEDhanabi/engine.ts: HANABI_FS_START = 10, HANABI_FS_RETRIG = 4, HANABI_FS_CAP = 22; hanabiFsMult(i) = i < 2 ? 1 : i < 4 ? 2 : i < 7 ? 3 : 5, where i is the 0-based free-spin index; each free spin’s paid100 is its win100 × mult. A spin with three or more scatters inside the feature adds HANABI_FS_RETRIG spins, never past HANABI_FS_CAP.
The multiplier by free spin, and what a feature is worth in multiplier terms
FREE SPIN1–23–45–78 and later
Multiplier on that spin×1×2×3×5
Sum over a plain 10-spin feature24915 — total 30, an average of ×3.0 per spin
Sum over a fully retriggered 22-spin feature24975 — total 90, an average of ×4.1 per spin

A retrigger adds four spins to the end of the feature, where every spin already pays ×5. Retriggers are therefore worth far more than their spin count suggests.

This is the design decision the game is named for. A firework does not deliver its payload evenly; it climbs, hangs, and ends in the finale. The ladder makes the last spins of a feature the ones that matter, so a feature that runs long is not merely longer but steeper — and a retrigger, which lands in the ×5 zone by construction, is the game’s real jackpot mechanism. A plain feature averages three times a base spin per spin. A maxed one averages more than four, with its last fifteen spins all at five.

The same ladder is also what makes the feature honest to look at. Because the multiplier is a function of the spin index and nothing else, it cannot be steered: the engine does not decide to be generous, it applies a rule that is printed in one line. That is the same argument Pagoda’s ladder was built on — a climb that is a schedule, not a mood.

The ceiling, and why it is there

ENGINE-VERIFIEDhanabi/engine.ts: HANABI_WIN_CAP100 = 200_000 (“×2000 total-bet ceiling”); the round’s totalMult100 is Math.min(total, HANABI_WIN_CAP100) and the round is flagged capped when the raw total exceeded it.

A ×5 multiplier on a five-of-a-kind kingyo line is already ×200 the bet from one line of one spin, and a fully retriggered feature has fifteen such spins on ten lines. The theoretical top of the distribution is therefore enormous and the cap of ×2,000 exists to make the game’s liability finite. A capped round is rare by construction — it needs the feature, the retriggers and several premium lines to coincide — but the flag is in the settlement so that a player who hits it can see that the cap, not the reels, set the number.

The cap is the one place where the printed paytable and the paid amount can legitimately disagree, and the engine records the disagreement rather than hiding it. It is also the reason the return figure is quoted as a calibrated 96.1% rather than an exact one: the cap and the retrigger loop make a closed-form return impractical, so the author measured it.

What you can check, and what you still cannot

Every round of Hanabi replays from three values: the server seed committed before the bet, your client seed, and the round nonce. Cell k of the base spin is cursor k; free spin j reads cursors 15 + 15j through 29 + 15j. Feed those into the same weighted draw and you get the same grid, the same lines and the same feature, which is what the verification walkthrough does for a simpler game.

  • You can check the grid. Every symbol on every spin of every round is recomputable, and the weight table that produced it is public.
  • You can check the trigger rate. One in 83.8 is a binomial count from the weight table; it does not depend on trusting the header.
  • You cannot cheaply check the return. The 96.1% is a simulation result. The inputs to that simulation are all in the file, so the figure can be reproduced by anyone willing to run three million rounds — but it is a reproduction, not a proof, and the Journal quotes it as the engine’s number.

That last line is the honest boundary of a design note like this one. A slot can publish its weights, its lines, its ladder and its cap and still owe the player one measured number. Hanabi’s author measured it, wrote it down next to the weights that produced it, and left both where they can be read. Tairyō’s paytable made the same bargain. It is a smaller promise than “fair”, and it is one that can be kept.

Hanabi, with the weights in the source
Ten lines, a ladder that climbs ×1 to ×5, and every reel stop recomputable from the committed seed
Hanabi →
FAQ

What is the RTP of Hanabi?

The engine header states 96.1%, calibrated by a three-million-round simulation of the same file, with a 33.5% hit rate. The Journal quotes that figure from the source and does not compute its own.

How often do Hanabi free spins trigger?

On about one base spin in 84. Each of the fifteen cells is a 祭 scatter with probability 2/61, and three or more scatters on a spin start the feature; that binomial count is 1.193%, matching the engine’s measured “≈ 1 in 83”.

How does the free-spin multiplier work?

It depends only on which free spin it is: spins 1–2 pay ×1, 3–4 pay ×2, 5–7 pay ×3, and every spin from the eighth onward pays ×5. A plain ten-spin feature averages ×3 per spin; a fully retriggered 22-spin feature averages ×4.1 with its last fifteen spins all at ×5.

How many free spins can you get?

Ten to start; each retrigger (three or more scatters inside the feature) adds four, up to a cap of 22.

What is the maximum win on Hanabi?

×2,000 the total bet. The engine settles the round at the smaller of the raw total and the cap, and flags a round that was capped.

Can I verify a Hanabi spin?

Yes. Every cell is one weighted draw from the committed server seed, your client seed and the nonce — base spin cursors 0–14, free spin j cursors 15+15j to 29+15j — using the public weight table, so the whole round replays from those three values.

SOURCES & REFERENCES
  • Betkyo engine source: hanabi/engine.ts — HANABI_SYMBOLS weights and pays, HANABI_LINES, HANABI_SCATTER_PAY100, HANABI_FS_START / RETRIG / CAP, hanabiFsMult, HANABI_WIN_CAP100, and the header’s Monte Carlo calibration (RTP 96.1%, hit rate 33.5%, free spins ≈ 1 in 83, cap ×2000)
  • Scatter-trigger and per-cell probabilities in this article are exact binomial counts from the weight table (p = 2/61 over 15 cells); the return and hit-rate figures are the engine’s own and were not recomputed
THE GAMES IN THIS ARTICLE
Betkyo Research — written by the team that builds these games. Every probability quoted in the Journal is derived from our engine source or a cited reference, never copied from another site. Figures are re-checked whenever the engines change.

18+ · PLAY RESPONSIBLY · THE JOURNAL IS EDITORIAL CONTENT, NOT BETTING ADVICE