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.
53 lines
3 KiB
Markdown
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.
|