KAZIK/docs/native-startup.md
Artvasil09 3ad5bf4c9d Develop assembly-only casino scenes and native games
Add native Durak, poker, blackjack, roulette, Buckshot and billiards scenes with animation assets and regression tests. Improve arrival, city, hall, profiles, shops, audio and exit handling; remove the portable C game core and refresh shipping executables.
2026-10-08 22:39:19 +03:00

3 KiB

Graphical Startup

The production MASM entry point opens one borderless fullscreen window on the monitor containing its initial window position. It preserves a centered windowed rectangle for F11 / Alt+Enter. No console or second game window is created by the graphical startup.

Startup always enters MODE_INTRO, plays the original Eblan Games animation, and waits for Enter or Space. Escape also skips the ident. All held and pending input is cleared before entering the existing casino hall. Russian roulette is entered only by interacting with its table, never by a production startup/test define.

The original 100-frame sequence is preserved: 36 opening frames and a 64-frame color/glitch loop at 45 milliseconds per frame. Unicode box/block glyphs and ANSI colors are compiled offline to native font masks, a palette and cell frames. Rendering and animation are assembly code; Python only packs the offline assets. No terminal, Python process or second window is used. F2 on the ident selects the additional illustrated logo variant with scan reveal and a moving light band. The default is always the original animation. Intro memory is freed when entering the hall and on shutdown. Missing or invalid art uses a branded fallback instead of blocking gameplay. Rendering retains the original 4:3 aspect ratio rather than distorting the hall on widescreen displays.

Assets

  • Source: assets/sprites/intro/eblan-games-v1.png
  • Runtime: assets/animations/intro/eblan-games.bin
  • Format: EBG1, little-endian width/height/payload size, then top-down 640x480 BGRA.
  • Repack: python tools/generators/pack_startup.py
  • Original animation: assets/animations/casino_intro.ans (unchanged).
  • Compiled sequence: assets/animations/intro/eblan-sequence.bin (about 300 KB).
  • Sequence repack: python tools/generators/pack_intro_sequence.py.

The source was created with the built-in image generation tool. Prompt: a full-bleed 4:3 EBLAN GAMES studio ident, dimensional chrome/cyan arcade lettering, casino felt, brass roulette rim, ivory/crimson chips and ace cards; crisp retro PC cinematic art, no other text or UI. The original ANSI intro remains untouched.

Verification

After tests and tools/tests/build_graphics.ps1, run tools/tests/publish_graphics.ps1. This publishes the same binary to the root and bin, synchronizes the existing launcher's integrity hash, and rebuilds its existing icon-equipped EXE. The development launcher in dist also resolves the project root. The installer is a separate release artifact and is not repackaged by this command.

powershell -File tools/tests/test_casino_actions.ps1 tests the actual hidden native window geometry and fullscreen restoration, startup state, the original sequence's opening/loop boundary, F2 variant selection, Enter/Space transitions, input clearing, RNG stability, missing-asset fallback, and exports startup frames from the actual MASM renderer. It also reruns the dice/roulette and sound-routing regression checks. Test builds never write player progress.