KAZIK/docs/native-coin-scene.md
Artvasil09 4f8ae0893b Implement native slots, coin toss, European roulette and hall furniture
Add native assembly scenes and assets for Slots (777), Coin flip, and European Roulette; add 3D hall furniture packs and prompts; improve Russian UI strings in CP1251; update launcher hash and rebuild shipping binaries.
2026-10-10 14:43:30 +03:00

45 lines
2.4 KiB
Markdown

# Native coin table
Coin toss now stays inside the graphical MASM executable. Its first-person
table, two readable coin faces and sixteen hand poses are separate packed assets.
The dealer is a static background character, not an animated rig.
## Controls and settlement
- Choose heads/tails with the buttons or 1/2.
- Change the stake with +/- buttons or W/S and Up/Down (50 through 5000).
- Start with TOSS, Space or Enter. The stake is debited once at this point.
- A winning flip returns twice the stake, including the original stake.
- The result stays visible until AGAIN, Space or Enter returns to selection.
- EXIT or Escape during a paid toss queues departure until settlement.
- Missing art blocks paid play, and insufficient funds never reduce the stake automatically.
Progress is saved through the existing native profile path on debit and settlement.
This is the current local save model, not a crash-recovery journal for unfinished bets.
## Animation
The 1700 ms timeline has a 300 ms thumb preparation, a 720 ms ballistic flight,
two small landing bounces and a final resting pose. In the first five poses the
coin and supporting fingers are one sprite, aligned to the launch point (414,266).
There is no separate, floating coin layer before release. Airborne rotation has
constant angular speed, rather than slowing into a hover. Rotation ends on the
actual chosen result. Position, face, squash, withdrawal and shadow are derived from
elapsed milliseconds rather than frame counts. Rendering does not consume RNG
or alter the wager/outcome. This is an authored toss animation, not rigid-body physics.
## Assets and checks
Source images and complete built-in image-generation prompts:
`assets/sprites/coin/{table,faces}-v1.png`, `hands-v2.png`,
`prompts-v1.json` and `prompts-v2.json`.
The offline Python packer is `tools/generators/pack_coin_assets.py`;
the game loads only ANM1 packs from `assets/animations/coin/`.
No Python or C/C++ runtime was added.
Native assertions live in `tools/tests/coin_test.inc` and run inside the real
assembly action-test executable. The checker `tools/tests/check_coin_scene.py`
validates assets and captured framebuffers, with optional tested/shipping COFF parity.
The launch-path asset probe also loads these packs from the root and from an
unrelated working directory. Run those checks after building; this document does
not itself certify a particular build.