From 2229f154d19fb81fdf55d572c5b68de2ba282560 Mon Sep 17 00:00:00 2001 From: Cyd Date: Wed, 1 Jul 2026 09:12:29 -0500 Subject: [PATCH] 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 --- .gitignore | 1 + BUILD.md | 118 ++++++++++++++++++++++++++++++++ MUNGA_L4/Munga_L4.vcproj | 12 ++-- RP_L4/RP_L4.vcproj | 12 ++-- WinTesla.sln | 74 -------------------- docs/BUILD-NOTES.md | 143 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 274 insertions(+), 86 deletions(-) create mode 100644 BUILD.md create mode 100644 docs/BUILD-NOTES.md diff --git a/.gitignore b/.gitignore index a76d193..c59cf68 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ ipch/ *.suo *.user *.cachefile +*.sln.cache *.vspscc *.vssscc *.pch diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..ff94f13 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,118 @@ +# 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. diff --git a/MUNGA_L4/Munga_L4.vcproj b/MUNGA_L4/Munga_L4.vcproj index 332ea5e..ddd0c88 100644 --- a/MUNGA_L4/Munga_L4.vcproj +++ b/MUNGA_L4/Munga_L4.vcproj @@ -40,7 +40,7 @@ The 6 missing projects appear to be model/texture exporter tools and a sister +> game project (`BT410` — a different pod title) that live in other +> repositories. If you obtain them, re-add them to the solution. + +### 2.3 DirectX SDK path un-hardcoded + +`Munga_L4.vcproj` and `RP_L4.vcproj` (the VS2005 / v8.00 files) hardcoded: + +``` +C:\Program Files (x86)\Microsoft DirectX SDK (March 2009)\Include +C:\Program Files (x86)\Microsoft DirectX SDK (March 2009)\Lib\x86 +``` + +Both were replaced (6 occurrences each) with the installer-provided variable, +matching what the existing `... VS2008.vcproj` variants already used: + +``` +$(DXSDK_DIR)Include +$(DXSDK_DIR)Lib\x86 +``` + +`DXSDK_DIR` is set by the DirectX SDK installer and ends in a trailing +backslash, so `$(DXSDK_DIR)Include` resolves correctly. + +--- + +## 3. Project reference data + +Collected from the `.vcproj` files for quick reference. + +### Configuration types +- `ConfigurationType="1"` → Application (exe): `RP_L4`, `RPL4TOOL` +- `ConfigurationType="4"` → Static library: `Munga_L4`, `DivLoader` + +### Link dependencies +- **Munga_L4:** `OpenAL32.lib D3D9.lib D3DX9.lib DXERR.lib` +- **RP_L4:** `WS2_32.lib Munga_l4.lib dinput8.lib dxguid.lib openal32.lib + libsndfile-1.lib d3dx9.lib d3d9.lib dbghelp.lib` +- **RPL4TOOL:** `Munga_l4.lib libsndfile-1.lib WS2_32.lib dinput8.lib dxguid.lib` + +### Preprocessor definitions (RP_L4) +- Debug: `WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE` +- Release: `WIN32;_WINDOWS;_CRT_SECURE_NO_DEPRECATE` + +### Character set +- `Munga_L4`, `RP_L4`, `RPL4TOOL`: `CharacterSet="1"` (Unicode) +- `DivLoader`: `CharacterSet="2"` (MBCS) + +--- + +## 4. Orphaned / non-build files (informational) + +These files are present but are **not referenced by any project**, so they do +not affect the build. Left in place for historical completeness: + +- `MUNGA_L4/JOYSTICK.asm` — MASM source, **not** in any `.vcproj`. No MASM + toolchain is required to build. (`L4JOYSTK.h` exists but the `.asm` is unused.) +- `MUNGA_L4/sos/SOSMAWE.C` and the `sos/bc4`, `sos/wc` header trees — SOS audio + middleware for old Borland/Watcom compilers; headers only. +- `RP_L4/TEST.EGG`, `RP_L4/last.egg` — `.egg` data blobs. `last.egg` is likely + runtime-generated ("last loaded"); kept in tracking pending confirmation. +- `docs/audionotes.rtf` — design notes. + +--- + +## 5. Open questions for the owner + +1. Are the 6 removed projects (BT410_L4, *Exp tools) needed here, or do they + belong to separate repos? +2. Is `RP_L4/last.egg` a real asset or generated output? If generated, add it to + `.gitignore` and untrack it. +3. Which VS version is the target going forward — keep VS2005/2008 `.vcproj`, or + upgrade to `.vcxproj` for a modern VS + Windows SDK (dropping the legacy + DirectX SDK in favor of the Windows SDK's Direct3D)?