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

53 lines
3 KiB
Markdown

# 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.