Skip to content

Start Menu

Daniel Nylander edited this page Aug 13, 2026 · 8 revisions

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.

Resolution and Layout

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.

Navigation

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

Game Data Status

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

Continue buttons only appear when save files exist. The menu checks for:

  • opencaptive.sav and opencaptive_slot0.sav (Captive)
  • liberation.sav (Liberation)

Loading the most recent save is automatic when Continue is selected.

Data Scanner

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_done when the scan completes.

Settings Panel

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.

Data Path

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.

Language Selector

Cycles through 19 languages using Left/Right arrows. The current selection is stored as lang_index. See Internationalization for the full language list.

About Screen

Displays:

  • OpenCaptive version number
  • Original game credits (Tony Crowther / Mindscape)
  • Technology stack information

Controls Screen

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.

Visual Assets

  • Logo: loaded from captivelogo.png if present (logo_img with dimensions logo_img_w x logo_img_h).
  • Game card images: separate captive_img and liberation_img bitmaps.
  • TTF font rendering: DejaVu Sans Mono Bold at three sizes:
    • Title: 36pt (font_title)
    • Body: 18pt (font_body)
    • Small: 14pt (font_small)

The ttf_ready flag indicates whether TTF fonts loaded successfully.

Source Files

  • Header: include/start_menu.h
  • Implementation: src/engine/start_menu.c

Captive emulator startup

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.

Clone this wiki locally