# Startup presentation and hall briefing All runtime presentation, text, timing, input and drawing are MASM32. No browser, video player, Python runtime or additional graphics dependency is introduced. ## Startup order 1. Existing Eblan Games animated logo (7 seconds; its F2 variant is retained). 2. Russian AI-use disclosure (10 seconds): artificial intelligence technologies were used to create some game textures; third-party resources retain their authors and licences. 3. Code fact (11 seconds): side-by-side editor-style C++ and MASM panels for clearing the same 640×480 framebuffer. C++ is explicitly an illustrative equivalent, not a second game runtime. MASM shows the actual clear operation from `src_graphics/startup_sequence.inc`. 4. Existing first-person city opening, guards and profile selection. Pages advance automatically. **Enter/Space** advances one page, clearing held input so it cannot skip several screens at once. **Escape** skips the startup pages and begins the existing city scene. Starting again resets all pages. Existing missing-logo fallback still works; the two new pages need no art files. ## Post-entry briefing After a guest/existing/new profile is admitted and the player enters the hall, the jukebox starts **Bolden - Art Deco** on repeat at **50% user volume** (5/10). Existing distance/floor attenuation still applies, so it sounds quieter away from the cabinet. Volume is applied before playback, avoiding a full-volume startup burst. No jukebox music plays during startup/profile selection. Closing the briefing does not restart the track or reset volume; the existing jukebox controls and +/- volume keys remain available after closing it. At the same entry point, the centred panel deploys from a point: horizontal expansion for 200 ms, then vertical ease-out for 400 ms. Cyan/magenta rails and a scanning marker frame the dark panel. The hall is rendered by the normal ASM renderer and dimmed beneath it; movement, interactions and camera input do not run until the modal closes. After deployment, Russian text types at one character per 18 ms with a blinking cursor: version **4.0 / Windows x86**, engine, activities, controls and profile persistence. Version follows the existing 4.0 build identity; this change does not introduce a new release/version bump or alter save formats. - **Enter/Space**: complete the text; press again to close. - **Escape**: close immediately, without opening pause. - **Enter game** button: same complete/close behaviour, with mouse input. - No automatic dismissal; the information remains readable. - Shown once per admission on each launch, not on returning from tables or Hell. The core remains assembly-only; the pre-existing C# packaging tools and the approved C++ fortune inference worker are separate from the game engine. ## Copy and implementation - `tools/generators/make_presentation_text.py`: editable Russian copy; emits numeric CP1251 declarations into `src_graphics/presentation_text.inc`. - `src_graphics/presentation_data.inc`: timings, page/briefing state and API. - `src_graphics/presentation_code.inc`: native bitmap text, code windows, unfolding modal and typewriter. - `src_graphics/startup_code.inc`: three-page sequencing. - `src_graphics/arrival_scene.inc`: briefing starts after admission/entry only. - `casino3d.inc`: modal input gate, mouse unlock and Escape handling. ## Verification ```powershell python tools/generators/make_presentation_text.py python tools/tests/check_presentation.py python tools/tests/check_presentation.py --window ``` Tests compile the production procedures with an isolated ASM entry point. They check automatic and key transitions, restart/reset, existing city-scene handoff, guest admission, delayed modal trigger, deployment, typing and manual completion, button/close input cleanup, and unchanged bank, RNG and player save files. They also query actual MCI playback and gain after entry, verify silence before admission, retain a changed volume and playback position across modal closure, then exercise manual track selection and Stop. MCI gain assertions allow device rounding (four units out of 1000); both success and failure close `jboxmusic`. `--window` also presents 150 real Win32 frames. Outputs: `build/scratch/presentation-00..11.png`, `presentation-contact.png` and `presentation-window.png`. Existing action/arrival tests also check the revised startup order and the new admission trigger.