Hold 'em for Flipper Zero
March 20, 2026 ยท View on GitHub
Native single-player Texas Hold'em built specifically for Flipper Zero.
Play a full table of compact, readable Hold 'em against up to four bots with real betting rounds, side-pot-aware showdowns, save/load, and a UI tuned for the actual device screen.
Screenshots
On-device flow at a glance:
| Startup | Main Table |
![]() |
![]() |
| Controls | Game Menu |
![]() |
![]() |
| Edit Blinds (1) | Edit Blinds (2) |
![]() |
![]() |
| Edit Bots | Hand Ranks |
![]() |
![]() |
| Big Win | Showdown |
![]() |
![]() |
| Hand Result | Game Win |
![]() |
![]() |
Features
- Full on-device Texas Hold'em from preflop through showdown
- Heads-up play or full five-player tables with up to four bots
- Side-pot-aware payouts and split-pot handling for real multi-way hands
- Four bot difficulty levels: Easy, Medium, Hard, and Extreme
- Blind editor with optional progressive blinds
- Save/load for full game state and table settings
Build
ufbt update
ufbt
Build output:
dist/holdem.fap
Install
- Connect Flipper Zero over USB.
- Build locally with
ufbt updateandufbt. - Copy
dist/holdem.fapto/ext/apps/Games/. - Launch from
Apps -> Games -> Hold 'em.
Changelog
Controls
In Hand
Left: FoldOK: Commit the current action (Check,Call, orRaise)Up/Down: Increase or decrease the current bet amountRight: Reset the current bet amount to the default call/check valueHold Right: Set the current bet to all in- After folding,
OKcan fast-forward through the remaining autoplayed bot action
Global
Backshort:- From the game screen: open Controls Help
- From menu screens: close or cancel the current menu
Backhold: openExit Hold 'em
Exit Menu
OK: Save and exitBackshort: CancelBackhold: Exit without saving
Save Behavior
Save path:
/ext/apps_data/holdem/save.bin
Startup behavior when a save exists:
OK: Load saveBack: Start a new game without loading the previous save
There is only one save slot by design.
A fresh unsaved game does not delete the existing save until a later save overwrites it.
Gameplay settings such as bot difficulty, fixed blind configuration, and progressive blinds are included in the saved state.
Saved progressive-blind timing state is also preserved so future increases still trigger on the correct hand after load.
If progressive blinds are active, the underlying base SB/BB used for future fresh games is saved separately from the current in-hand blind level.
Fairness and RNG
Card dealing fairness is based on:
- Hardware RNG via
furi_hal_random_fill_buf - Fisher-Yates shuffle across all 52 cards before each hand
Current bounded random selection uses modulo reduction (value % upper_bound).
What this guarantees:
- No duplicate cards in a hand
- A full-deck shuffle every hand
- No AI influence over card distribution
What remains open for future improvement:
- Replace modulo reduction with rejection sampling to eliminate modulo bias entirely
AI
Bot difficulty is exposed as Easy, Medium, Hard, and Extreme, with Medium as the default table setting.
At the top end, Extreme goes beyond the baseline heuristic bot by:
- reacting more carefully to real betting pressure
- valuing strong broadway and connector structures more accurately preflop
- factoring in draw development postflop instead of playing only made hands
- tightening bluff frequency while pushing harder for value with credible strength
- avoiding weak stack-off lines more aggressively when pots get large
Firmware Notes
Target/API:
- Target 7
- API 87.1
The app is intended for official firmware and compatible forks, including Momentum, as long as they preserve external-app API compatibility.
Repository Layout
holdem.c: top-level app bootstrap, lifecycle, and main loop orchestrationholdem_engine.c/.h: gameplay flow, pot handling, and showdown logicholdem_ai.c/.h: bot decision logicholdem_eval.c/.h: hand evaluation and card formatting helpersholdem_storage.c/.h: save/load managementholdem_app_internal.h: shared internal interfaces for the split UI/controller modulesholdem_ui_common.c: shared glyphs, centering helpers, and app-state display helpersholdem_ui_render.c: all screen rendering and table-layout codeholdem_ui_flow.c: menu/input flow, edit-state commits, startup, and back-button handlingholdem_gameplay.c: result/interstitial flow and betting-round plus hand orchestrationholdem_types.h: shared types and constantsapplication.fam: app metadataholdem.png: app icondocs/architecture.md: architecture and extension notesdocs/roadmap.md: release follow-up and deferred workdocs/changelog.md: release history and pending changesdocs/pre-release-tests.md: high-risk validation checklist for payout, showdown, and rules edge casesdocs/screenshots/: padded screenshots for GitHub README presentation.catalog/: Flipper catalog submission description, changelog, and raw screenshot assetsCONTRIBUTING.md: contributor workflow
Acknowledgements
- The compact bitmap suit presentation was inspired by flipper_blackjack.
Contributing
Contributions are welcome.
For the smoothest review path and the fewest merge conflicts, contribute from the most recent active feature branch rather than main.
Please read:
CONTRIBUTING.md
License
MIT











