Files
RP412/BUILD.md
T
CydandClaude Opus 4.8 2229f154d1 Clean solution, un-hardcode DirectX SDK path, add build docs
- WinTesla.sln: remove 6 dangling project references (BT410_L4, TextureExp,
  MeshExp, SphereExp, DetailExp, MatReplaceExp) that are not present in the
  repo, plus their config entries. Solution now builds the 4 present projects:
  Munga_L4, RP_L4, RPL4TOOL, DivLoader.
- Munga_L4.vcproj / RP_L4.vcproj: replace hardcoded
  "C:\Program Files (x86)\Microsoft DirectX SDK (March 2009)\" include/lib
  paths with the installer-provided $(DXSDK_DIR) variable, matching the
  existing VS2008 project variants.
- Add BUILD.md (toolchain/SDK requirements and build steps) and
  docs/BUILD-NOTES.md (findings, cleanup history, orphaned files).
- .gitignore: ignore *.sln.cache.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 09:12:29 -05:00

119 lines
4.9 KiB
Markdown

# Building Red Planet (v4.10, Win32)
This is the Win32 source for the pod-racing game **Red Planet**, built on the
in-house **MUNGA** engine and its **L4** (Win32 / DirectX 9) platform layer.
The code targets the Visual Studio 2005/2008 era and the legacy DirectX SDK.
---
## 1. Requirements
You must supply the toolchain — none of it is checked into this repo.
| Component | Required version | Notes |
|-----------|------------------|-------|
| **Visual Studio** | 2005 (v8) or 2008 (v9) | Project files are the legacy `.vcproj` format. Modern MSBuild **cannot** build `.vcproj` directly — it needs `VCBuild.exe`, which only ships with VS 2005/2008. A newer VS (2022) can build these but will first *upgrade* the projects to `.vcxproj`. |
| **DirectX SDK** | March 2009 (June 2010 also works) | Provides `d3d9.lib`, `d3dx9.lib`, `dinput8.lib`, `dxguid.lib`, `dxerr.lib` and headers. |
| **Windows SDK / Platform SDK** | Matching your VS | Provides `WS2_32.lib`, `dbghelp.lib`, etc. |
| **`DXSDK_DIR` environment variable** | — | The DirectX SDK installer sets this automatically (includes a trailing backslash). The projects reference the SDK **only** through this variable — see §4. |
### Bundled third-party libraries (already in the repo)
These are committed under [lib/](lib/) and do **not** need to be installed:
- `OpenAL32.lib` — OpenAL audio
- `libsndfile-1.lib` — sound-file loading
Their headers live in [MUNGA_L4/openal/](MUNGA_L4/openal/) and
[MUNGA_L4/sndfile.h](MUNGA_L4/sndfile.h). You will still need the matching
runtime DLLs (`OpenAL32.dll`, `libsndfile-1.dll`) next to the built `.exe` to run it.
---
## 2. Solution / project layout
The solution is [WinTesla.sln](WinTesla.sln). It builds four projects:
| Project | File | Type | Output | Depends on |
|---------|------|------|--------|------------|
| **Munga_L4** | [MUNGA_L4/Munga_L4.vcproj](MUNGA_L4/Munga_L4.vcproj) | Static lib | `lib\Munga_l4.lib` | — |
| **RP_L4** | [RP_L4/RP_L4.vcproj](RP_L4/RP_L4.vcproj) | Application (exe) | `rpl4opt.exe` | Munga_L4 |
| **RPL4TOOL** | [RP_L4/RPL4TOOL.vcproj](RP_L4/RPL4TOOL.vcproj) | Application (exe) | tool exe | Munga_L4 |
| **DivLoader** | [DivLoader/DivLoader.vcproj](DivLoader/DivLoader.vcproj) | Static lib | `lib\*.lib` | — |
**Build order:** `Munga_L4` → then `RP_L4` / `RPL4TOOL` (the dependency is
declared in the solution, so a solution-level build resolves it automatically).
`RP_L4` is the game itself. Its release output is **`rpl4opt.exe`**
(subsystem: Windows GUI).
### VS2008 project variants
Each of the three main projects also ships a `... VS2008.vcproj` variant
(format 9.00) alongside the original 8.00 files:
- `MUNGA_L4/Munga_L4 VS2008.vcproj`
- `RP_L4/RP_L4 VS2008.vcproj`
- `RP_L4/RPL4TOOL VS2008.vcproj`
The `.sln` references the **8.00** files. If you open in VS 2008, either let it
upgrade the 8.00 projects, or repoint the solution at the `VS2008` variants.
---
## 3. Build steps
1. Install VS 2005/2008 (with the C++ workload) and the DirectX SDK.
Confirm the SDK set `DXSDK_DIR`:
```powershell
echo $env:DXSDK_DIR
```
2. Open `WinTesla.sln` in Visual Studio.
- If prompted to upgrade the projects (newer VS), accept — this rewrites the
`.vcproj` files to `.vcxproj`. Keep those changes on a branch.
3. Select a configuration: **Debug | Win32** or **Release | Win32**.
(`x64` is not configured — this is a 32-bit build.)
4. Build the solution (`Ctrl+Shift+B`). `Munga_l4.lib` is produced first into
`lib\`, then the executables link against it.
### Command-line build (only with VS 2005/2008 installed)
```powershell
# From a "Visual Studio 2008 Command Prompt":
vcbuild WinTesla.sln "Release|Win32"
```
> Do **not** use `C:\Windows\Microsoft.NET\Framework\...\MSBuild.exe` on this
> solution — it fails with `MSB3428: Could not load the Visual C++ component
> "VCBuild.exe"` because the legacy C++ toolset is not present.
---
## 4. DirectX SDK path (no longer hardcoded)
Originally `Munga_L4.vcproj` and `RP_L4.vcproj` hardcoded the absolute path
`C:\Program Files (x86)\Microsoft DirectX SDK (March 2009)\...`. These have been
changed to use the standard installer-provided variable, matching what the
VS2008 variants already did:
- Include dir → `"$(DXSDK_DIR)Include"`
- Library dir → `"$(DXSDK_DIR)Lib\x86"`
So any DirectX SDK version installed to any location will work, as long as
`DXSDK_DIR` is set. If you build in an environment where it is not set, either
set it manually or pass it to the build, e.g.:
```powershell
$env:DXSDK_DIR = "C:\DXSDK\" # note the trailing backslash
```
---
## 5. Known caveats
- **32-bit only.** No `x64` configuration exists.
- **`Remote Debug|Win32`** configuration is present but is a debugging target,
not a normal build config.
- Requires the OpenAL and libsndfile **runtime DLLs** at run time (see §1).
- See [docs/BUILD-NOTES.md](docs/BUILD-NOTES.md) for the repository cleanup
history, orphaned files, and the full findings behind this document.