-
Notifications
You must be signed in to change notification settings - Fork 0
Start Menu
Updated for v1.1.126. The data scanner reuses cached results, and multiple verified game versions open a localized selection popup before launch.
The start menu is the first screen presented when OpenCaptive launches. It provides game selection, data verification, settings, and information screens.
The menu renders at a fixed 960x600 pixel canvas. The layout is organized as a 2-column, 4-row navigation grid containing 8 items:
| Column 1 | Column 2 |
|---|---|
| Captive (game card) | Liberation (game card) |
| Continue Captive | Continue Liberation |
| Settings | About |
| Controls | Quit |
Each game card is 390x280 pixels with a 30-pixel gap between columns. The cards feature animated procedural dungeon/city scenes with torch flicker effects, driven by the anim_tick counter.
- Arrow keys move between menu items in the grid.
- Enter activates the selected item.
- Mouse click directly selects and activates items.
- D key opens the Data Scanner.
The main-menu footer also documents F10: In-game options. F10 is active after a game starts and opens the localized runtime popup; it is not a start-menu navigation command.
Each game card displays a status indicator showing whether game data has been verified:
- Green checkmark (checkmark): all SHA-256 content hashes verified.
- Red cross (cross): one or more files missing or hash mismatch.
Verification is content-addressed (SHA-256 hashes of file contents, no filenames trusted):
- Captive requires 12 verified files.
- Liberation requires 7 verified files.
The start_menu_check_data function performs verification at startup and after data path changes.
Continue buttons only appear when save files exist. The menu checks for:
-
opencaptive.savandopencaptive_slot0.sav(Captive) -
liberation.sav(Liberation)
Loading the most recent save is automatic when Continue is selected.
Pressing D opens the Data Scanner overlay, which:
- Scans the configured data path for game files.
- Reports the number of ZIP archives found (
scanner_zip_count). - Shows per-game verification results: files found vs. files required for both Captive and Liberation.
- Sets
scanner_donewhen the scan completes.
The settings panel contains 24 items with vertical scrolling (settings_scroll offset). Items in order:
| # | Setting | Values |
|---|---|---|
| 1 | Renderer | Auto / GPU / Software |
| 2 | Window Size | Preset dimensions |
| 3 | Scale | 1x - 5x |
| 4 | Fullscreen | On/Off |
| 5 | Integer Scale | On/Off |
| 6 | VSync | On/Off |
| 7 | FPS Limit | 0 (unlimited), 30, 60, 120 |
| 8 | Filtering | Nearest / Bilinear |
| 9 | Scanlines | On/Off |
| 10 | CRT Curve | On/Off |
| 11 | Brightness | 0 - 100 |
| 12 | Contrast | 0 - 100 |
| 13 | Gamma | 0 - 100 |
| 14 | Volume | 0 - 100 |
| 15 | Music | On/Off |
| 16 | SFX | On/Off |
| 17 | Reverb | On/Off |
| 18 | Sample Rate | 22050 / 44100 / 48000 |
| 19 | Game Speed | 50 - 200% |
| 20 | Mouse Sensitivity | 1 - 10 |
| 21 | Data Path | Editable text field |
| 22 | Language | 19 languages, cycle left/right |
| 23 | Enhanced | On/Off |
| 24 | Back | Returns to main menu |
Defaults: scale 3x, music on, SFX on, VSync on, integer scaling on, brightness 50, contrast 50, gamma 50, volume 80, FPS limit 60, sample rate 44100, game speed 100%, mouse sensitivity 5.
The data path is an editable text field (up to 512 characters). Press Enter to confirm or Escape to cancel editing. The data_path_editing flag tracks edit mode, and data_path_cursor tracks the cursor position within the field.
Cycles through 19 languages using Left/Right arrows. The current selection is stored as lang_index. See Internationalization for the full language list.
Displays:
- OpenCaptive version number
- Original game credits (Tony Crowther / Mindscape)
- Technology stack information
Displays a full keyboard reference for gameplay controls.
The Controls screen includes F10 as Runtime options: graphics and cheats. The popup has live scanline, CRT, bilinear, texture-filter and dynamic-lighting controls, plus minimap/debug overlays and optional God Mode, Infinite Energy, Reveal Map and Complete Objective actions. God Mode and Infinite Energy work in both games; Complete Objective is Captive-only. Runtime cheats are not stored in save files.
-
Logo: loaded from
captivelogo.pngif present (logo_imgwith dimensionslogo_img_wxlogo_img_h). -
Game card images: separate
captive_imgandliberation_imgbitmaps. -
TTF font rendering: DejaVu Sans Mono Bold at three sizes:
- Title: 36pt (
font_title) - Body: 18pt (
font_body) - Small: 14pt (
font_small)
- Title: 36pt (
The ttf_ready flag indicates whether TTF fonts loaded successfully.
- Header:
include/start_menu.h - Implementation:
src/engine/start_menu.c
For a repeatable authentic-data test, use:
tools/run_captive_dosbox_x.sh /path/to/original/captive
The helper mounts the supplied directory as DOS drive C: and runs the original CAPTIVE.BAT 1 chain. Choose VGA, click inside the DOSBox-X viewport, and let the original intro finish. Do not launch CAPPO.EXE directly.
The full procedure, including stale-window recovery and the ORBIT to arrival to LAND sequence, is documented in Captive DOSBox-X Startup. The start menu must not create a replacement planet, landing point, dungeon or runtime state.