Engine changes vs the vendored upstream (full ledger in docs/upstream-patches.md): - Assets: replace the encrypted FILE000N.GLB archives with a catalog of pre-decrypted loose files (data/INDEX); GLB_SlotItems() drives mission-pack / registered-version detection; payloads never run the GLB cipher at runtime. - Platform: Linux/SDL2/ALSA only; Android, MSVC/MinGW, macOS packaging, bundled Windows SDL2 SDKs and the ENDOOM exit screen are gone; EXIT_Error now prints before exiting. - Rendering: decouple presentation from simulation -- sim stays at the original 70/3 Hz, frames render interpolated at display rate (player, map scroll, enemies, shots, bonuses, anims, shadows); menus keep 70 Hz pacing; vsync with a delay-guard fallback. - QoL: borderless window mode (Video/borderless), no menu cursor snapping onto default buttons. Fix four regressions from the render split: - Shield bars never redrew: RAP_ThinkStats latches g_oldshield each sim step before RAP_DisplayStats' dirty check could fire. Bars now draw unconditionally per rendered frame; g_oldsuper deleted, g_oldshield kept as sim-side damage-detection state only. - Dying ships despawned without exploding: the render loop never called ANIMS_DisplayHigh(); most air-death explosions register HIGH_AIR. Restored between the player and enemy shots, as upstream orders it. - Laser turret broke: reusing doneflag as a draw marker (it is hit/retire game state, and the turret retire path never frees its shot) hid the beam on hitting ticks and leaked one SHOTS pool slot per fire until no weapon could shoot. S_LINE tracers now carry an age counter: one Think pass, every render of their birth step, purged at the top of the next Think. - Muzzle flash was cleared per rendered frame, making it invisible at display refresh rates; now cleared once per simulation step.
75 lines
2.3 KiB
Markdown
75 lines
2.3 KiB
Markdown
# Building and running
|
|
|
|
## Requirements
|
|
|
|
- Linux with X11 (developed and verified on Arch, Cinnamon)
|
|
- GCC or Clang with C++11
|
|
- CMake >= 3.10
|
|
- SDL2 development libraries (a user-local build in `~/.local` works —
|
|
`play.sh` extends `LD_LIBRARY_PATH` accordingly)
|
|
- ALSA (PipeWire's ALSA bridge is what this machine actually uses)
|
|
|
|
## Build and run
|
|
|
|
```sh
|
|
./play.sh
|
|
```
|
|
|
|
`play.sh` checks `data/INDEX`, builds `raptor/build/bin/raptor` on first run
|
|
(`cmake -DCMAKE_BUILD_TYPE=Release`, then `make -j$(nproc)`), and executes
|
|
the engine with `data/` as the working directory — the engine resolves the
|
|
catalog and assets relative to the CWD.
|
|
|
|
Manual equivalent:
|
|
|
|
```sh
|
|
cmake -E make_directory raptor/build
|
|
cmake -S raptor -B raptor/build -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build raptor/build -j$(nproc)
|
|
cd data && ../raptor/build/bin/raptor
|
|
```
|
|
|
|
Targets:
|
|
|
|
- `raptor` — the game
|
|
- `raptorsetup` — the original text-mode setup tool (audio/input settings)
|
|
|
|
## Runtime files
|
|
|
|
| File | Location |
|
|
|------|----------|
|
|
| `SETUP.INI` | `~/.local/share/Raptor/` |
|
|
| Save games | `~/.local/share/Raptor/` |
|
|
| High scores | `~/.local/share/Raptor/` |
|
|
|
|
Useful `SETUP.INI` settings (created on first exit): `fullscreen=1` for
|
|
borderless 1080p, `aspect_ratio_correct`, `txt_fullscreen` (obsolete here —
|
|
the text-mode exit screen was removed).
|
|
|
|
## Command-line options
|
|
|
|
The engine accepts the original demo flags:
|
|
|
|
```sh
|
|
raptor REC demo.dmo # record a demo
|
|
raptor PLAY demo.dmo # play one back
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
- **"All game data files NOT FOUND"** — `data/INDEX` missing or empty;
|
|
restore the asset tree (see [asset-pipeline.md](asset-pipeline.md)).
|
|
- **No audio** — check the ALSA/PipeWire sink; the original mixer expects a
|
|
working default ALSA device. If a session-manager glitch leaves the wrong
|
|
card profile active, `pactl set-card-profile` back to the real one.
|
|
- **Silent early exit** — since the local patch, engine errors print to
|
|
stderr before exiting; run from a terminal and read the message.
|
|
|
|
## Build layout
|
|
|
|
- `raptor/CMakeLists.txt` — Linux-only (Windows/Android/OSX support was
|
|
stripped; see [upstream-patches.md](upstream-patches.md))
|
|
- `raptor/build/` — gitignored build tree
|
|
- `raptor/include/textscreen/` — text UI library (used by `raptorsetup`)
|
|
- `raptor/include/TinySoundFont/` — SF2 MIDI fallback synth
|