Fork the vendored engine into the playable replica
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.
This commit is contained in:
1 parent
f7c9b7a02d
commit
214789fe87
667 files changed
+1490
-279572
No files matched your search
@@ -1,54 +1,37 @@
|
||||
# RaptorReplica — Raptor: Call of the Shadows
|
||||
|
||||
## Status: PLAYABLE — original engine, original data, original soundtrack
|
||||
**Status: PLAYABLE** — original engine, original data, extracted into a
|
||||
modern asset tree. Full documentation lives in [`docs/`](docs/README.md):
|
||||
|
||||
A faithful replica built **on the actual Raptor source code** (pivot from a
|
||||
from-scratch engine, approved by project owner).
|
||||
- [docs/README.md](docs/README.md) — overview, layout, quick start
|
||||
- [docs/architecture.md](docs/architecture.md) — startup flow, asset handles, subsystems
|
||||
- [docs/glb-format.md](docs/glb-format.md) — reverse-engineered GLB archive format + cipher
|
||||
- [docs/asset-pipeline.md](docs/asset-pipeline.md) — data/ tree, INDEX catalog, editing content
|
||||
- [docs/building.md](docs/building.md) — dependencies, build, config/save paths
|
||||
- [docs/upstream-patches.md](docs/upstream-patches.md) — every diff against the vendored engine
|
||||
|
||||
## Architecture (post-pivot)
|
||||
|
||||
| Path | What it is |
|
||||
|-------------|------------|
|
||||
| `raptor/` | Vendored upstream: nukeykt's reconstructed Raptor source (skynettx/raptor), GPLv2+. Original game logic, GLB asset loading, OPL2 music emulation (`i_oplmusic.cpp`), AdLib SFX. |
|
||||
| `original/` | User-supplied original game data (GLB v1.2+ registered, 5 mission packs). **Gitignored — copyrighted.** |
|
||||
| `game/` | Runtime dir: GLB symlinks + built binary. **Gitignored.** |
|
||||
| `src/`, `tests/`, `Makefile`, `ui_render.inc` | Legacy from-scratch prototype (X11+ALSA engine). Superseded by the pivot; preserved on branch `prototype-engine`. Scheduled for removal from main. |
|
||||
| `play.sh` | One-command launcher: links assets, builds if needed, runs. |
|
||||
|
||||
## Running
|
||||
|
||||
```sh
|
||||
./play.sh # builds on first run, then launches fullscreen 1080p
|
||||
```
|
||||
|
||||
Requirements: SDL2 (installed user-local at `~/.local` if not in distro),
|
||||
ALSA/PipeWire for sound. Config: `~/.local/share/Raptor/SETUP.INI`
|
||||
(`fullscreen=1` set for 1920×1080 desktop resolution).
|
||||
|
||||
## Verified working (this machine, 2026-08-25)
|
||||
|
||||
- Builds clean with gcc + CMake (user-local CMake 3.30.3, SDL2 2.28.2).
|
||||
- Registered v1.2 detected; original title screen, menus, intro cinematics.
|
||||
- **Original OPL2 soundtrack + Sound Blaster SFX audible** (PulseAudio/PipeWire
|
||||
sink connected; required one-time `pactl set-card-profile` cycle to restore
|
||||
the real audio sink after a session-manager glitch).
|
||||
- **In-mission gameplay verified by screenshot**: player fire, enemy fighters,
|
||||
credit pickups, scrolling terrain, score counter — at 1920×1080.
|
||||
Run with `./play.sh`.
|
||||
|
||||
## The 5 mission packs
|
||||
|
||||
The registered v1.2 GLB data contains the original 5 campaign mission packs
|
||||
(each mission: mountain → valley → sky phases + boss). These are the packs the
|
||||
replica ships with — loaded from `original/` at runtime.
|
||||
The registered data ships 5 campaign packs (each mission: mountain → valley
|
||||
→ sky phases + boss). Pack presence is detected from catalog slots at boot;
|
||||
slot 2 or 3 present flips the engine to registered mode.
|
||||
|
||||
## Expansion roadmap (on top of the source)
|
||||
## Roadmap (on top of the source)
|
||||
|
||||
1. Extra mission packs authored as new wave-table data in the original formats.
|
||||
2. QoL patches kept as minimal diffs against upstream: resolution options,
|
||||
audio device selection, keybind config surface.
|
||||
3. Track upstream (skynettx/raptor) and rebase the diff regularly.
|
||||
1. Extra mission packs authored as new cataloged assets in the original
|
||||
formats.
|
||||
2. QoL patches kept as documented diffs against upstream (see
|
||||
[docs/upstream-patches.md](docs/upstream-patches.md)): resolution options,
|
||||
audio device selection, keybind config surface. Landed so far: decoupled
|
||||
interpolated rendering (presentation at display rate, simulation at the
|
||||
original 70/3 Hz), borderless window mode (`Video/borderless`), removal
|
||||
of menu cursor snapping.
|
||||
3. Track upstream (skynettx/raptor) and rebase the documented diffs.
|
||||
|
||||
## Legal
|
||||
|
||||
- `raptor/` is GPLv2+; this project inherits GPL for anything built on it.
|
||||
- `original/` game data is never committed; users must supply their own copy.
|
||||
- `data/` is derived from the user's own purchased copy (copyrighted);
|
||||
it is gitignored and never committed.
|
||||
Reference in new issue
Block a user