Verified full build with VC++ 2008 Express SP1 + Windows SDK v6.0A + DirectX SDK (June 2010): 4 Projects succeeded, 0 failed (Release|Win32). Outputs: Release\rpl4opt.exe, Release\RPL4TOOL.exe, lib\Munga_L4.lib, lib\DivLoader.lib. Two projects referenced DirectX but were never repointed at $(DXSDK_DIR) (they had no hardcoded path to replace earlier): - DivLoader.vcproj: add "$(DXSDK_DIR)Include" to both compiler configs (was failing on D3DX9.h). - RPL4TOOL.vcproj / RPL4TOOL VS2008.vcproj: add "$(DXSDK_DIR)Lib\x86" to the linker search path (was failing with LNK1181 on dinput8.lib). .gitignore: ignore the build-output static libs that land in lib/ (Munga_L4.lib, DivLoader.lib); the dependency libs OpenAL32.lib and libsndfile-1.lib stay tracked. BUILD.md / docs/BUILD-NOTES.md: record the verified build, the CLI recipe, and the DXSDK_DIR stale-environment gotcha. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8.4 KiB
Repository & Build Findings
Notes from the initial git import and build assessment of the Red Planet v4.10 Win32 source. See BUILD.md for the practical build instructions; this file records what was found and what was changed, and why.
1. What this repository is
- Win32 source for the game Red Planet v4.10 (string confirmed in
RP_L4/rpl4.log:Red Planet v4.10). - Engine: MUNGA (
MUNGA/) — a cross-platform C++ game/sim engine. - Platform layer: MUNGA_L4 (
MUNGA_L4/) — Win32 + DirectX 9 backend (Direct3D 9, DirectInput 8, OpenAL audio, SOS audio middleware headers). - Game code: RP (
RP/) and RP_L4 (RP_L4/). - Support projects: DivLoader (asset/DIV loader), Setup1 (installer).
- ~551 tracked files, ~9 MB.
Toolchain detected on the import machine
At import time the build machine had no usable C++ toolchain:
- No Visual Studio, no
cl.exe, noVCBuild.exe, novswhere. - Only .NET Framework
MSBuild.exe(v2–v4) — which cannot build.vcproj. - MinGW gcc/g++ (unusable for this MSVC/DirectX codebase).
- The required DirectX SDK (March 2009) was not installed.
A build attempt confirmed the blocker:
error MSB3428: Could not load the Visual C++ component "VCBuild.exe".
Building therefore requires installing VS 2005/2008 + the DirectX SDK (the user is sourcing these separately).
2. Changes made during preparation
2.1 Git hygiene (initial import commit)
- Removed stale Subversion metadata (
Setup1/.svn/) that pointed at a dead server (https://dev.vgcorps.com/svn/WinTesla). - Added
.gitignore— VS build artifacts, IDE state,*.log, OS cruft. This excludes the runtime logRP_L4/rpl4.log. - Added
.gitattributes— normalizes line endings, forces CRLF on Win32 source, marks.lib/.res/.egg/.rtfas binary.
2.2 Solution cleanup (WinTesla.sln)
The original solution referenced 10 projects, but only 4 exist in the repo. The 6 dangling references were removed so the solution loads cleanly:
| Removed project | Path referenced | Present? |
|---|---|---|
| BT410_L4 | BT410_L4\BT410_L4.vcproj |
❌ missing |
| TextureExp | TextureExp\TextureExp.vcproj |
❌ missing |
| MeshExp | MeshExp\MeshExp.vcproj |
❌ missing |
| SphereExp | SphereExp\SphereExp.vcproj |
❌ missing |
| DetailExp | DetailExp\DetailExp.vcproj |
❌ missing |
| MatReplaceExp | MatReplaceExp\MatReplaceExp.vcproj |
❌ missing |
Remaining (present) projects: RP_L4, Munga_L4, RPL4TOOL, DivLoader.
Their GlobalSection(ProjectConfigurationPlatforms) entries were pruned to
match. SolutionConfigurationPlatforms (Debug/Release/Remote Debug | Win32)
were left unchanged.
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.
Status update: the DirectX SDK (June 2010) is now installed at
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\, andDXSDK_DIRis set machine-wide to that path. All required headers (d3d9.h,d3dx9.h,dinput.h) and libs (d3d9.lib,d3dx9.lib,dxerr.lib,dxguid.lib) are present. The un-hardcoded projects resolve to it automatically.
2.4 ATL removed (enables VC++ Express)
The Express editions of Visual C++ ship without ATL. The codebase's only ATL
usage was in MUNGA_L4/L4APP.cpp — <atlbase.h> / <atlconv.h> and the
USES_CONVERSION / W2A macros (28 references, all in that one file), used
purely to convert wide command-line arguments to ANSI in the arg parser. No
COM, no CComPtr, no ATL windows.
Changes:
- Replaced the ATL includes with a self-contained
L4WideToAnsihelper class (aWideCharToMultiBytewrapper) plus localUSES_CONVERSION/W2Amacros that reproduce ATL'sW2Asemantics — each use yields an independent buffer valid until the end of the enclosing full-expression. Every call site consumes the result immediately (compare viastricmp, assign to MUNGA'sCString, or pass toatoi/atol), so the behaviour is identical. - Set
UseOfATL="0"inMunga_L4.vcproj,RP_L4.vcproj, and the twoVS2008variants.
CString in this file is MUNGA's own class (MUNGA/CSTR.h), not ATL's, so
dropping the ATL headers does not affect it.
2.5 Wire remaining DirectX SDK paths (build now succeeds)
The first real build attempt surfaced two projects that referenced DirectX but
were never repointed at $(DXSDK_DIR) (they had no hardcoded path to replace in
§2.3):
- DivLoader failed to compile (
VGCDivLoader.h: cannot openD3DX9.h). AddedAdditionalIncludeDirectories="$(DXSDK_DIR)Include"to both compiler configurations. - RPL4TOOL failed to link (
LNK1181: cannot open input file 'dinput8.lib'). Added$(DXSDK_DIR)Lib\x86toAdditionalLibraryDirectoriesin bothRPL4TOOL.vcprojandRPL4TOOL VS2008.vcproj.
After these edits: 4 Projects succeeded, 0 Projects failed for
Release|Win32.
Environment gotcha: the DirectX SDK installer sets
DXSDK_DIRat machine scope, but any shell already running when it was set won't inherit it. The first build failed onD3DX9.hpurely because the build shell had an emptyDXSDK_DIR; setting it explicitly in the build script fixed it. See the CLI recipe in BUILD.md §7.
2.6 Build outputs kept out of git
The Release build writes Munga_L4.lib and DivLoader.lib into the tracked
lib/ directory (that is their configured output path). These are build
artifacts — Munga_L4.lib alone is ~200 MB — and are now git-ignored by name.
The two genuine dependency libs in lib/ (OpenAL32.lib, libsndfile-1.lib)
remain tracked. Executables and per-project Release//Debug/ intermediate
folders were already covered by .gitignore.
3. Project reference data
Collected from the .vcproj files for quick reference.
Configuration types
ConfigurationType="1"→ Application (exe):RP_L4,RPL4TOOLConfigurationType="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.hexists but the.asmis unused.)MUNGA_L4/sos/SOSMAWE.Cand thesos/bc4,sos/wcheader trees — SOS audio middleware for old Borland/Watcom compilers; headers only.RP_L4/TEST.EGG,RP_L4/last.egg—.eggdata blobs.last.eggis likely runtime-generated ("last loaded"); kept in tracking pending confirmation.docs/audionotes.rtf— design notes.
5. Open questions for the owner
- Are the 6 removed projects (BT410_L4, *Exp tools) needed here, or do they belong to separate repos?
- Is
RP_L4/last.egga real asset or generated output? If generated, add it to.gitignoreand untrack it. - Which VS version is the target going forward — keep VS2005/2008
.vcproj, or upgrade to.vcxprojfor a modern VS + Windows SDK (dropping the legacy DirectX SDK in favor of the Windows SDK's Direct3D)?