Starting the MR port, since the pods want it too. Four changes, and one correction of my own making. A release Fail now says what failed. It expanded to a bare abort() that threw the message away, and because the compiler merges identical cold paths, every Fail in a function became one anonymous stub - a crash named the function and nothing else. It now prints message, file and line. It also writes that line to rpl4-fail.log and closes the file. rpl4.log is std::cout with an ofstream's streambuf swapped in, and the text written there did NOT survive the exit however it was flushed; rather than guess where it stopped, the one line that matters goes to its own file, and fclose is a promise it reached the disk. Its own file because rpl4.log is already open for writing and Windows will not share it. -pb plays a spool back without recording a new one. Mode 2 has been in RPL4.CPP all along - one spool file instead of two, no spooling application - with no way to ask for it. -mr starts a recorder alongside the playback and that recorder is the half that cannot cope away from a pod bay. Which is the third fix: L4SpoolingNetworkManager::StartConnecting walks the hosts named in the egg, and called host->GetHostID() on whatever FindHost returned. FindHost answers NULL for a host that is in the egg but not connected - impossible in an arcade, ordinary everywhere else - and it crashed before the mission could start. The table is read back one pair per egg host in egg order, so a missing host cannot be skipped without shifting every entry after it; it writes the pair, says so, and carries on. And RPL4.CPP chose between the playback application and an idle one in silence. For the first few seconds those look identical from outside, so a spool that failed to load was indistinguishable from one that had not started yet. It now says which, and why not. The correction: I reported a failure in L4AudioRenderer::Initialize on audiomr.ini's clipping_radius. That was mine. I was running cdb from the source tree, so the game looked for audio\audiomr.ini beside the debugger rather than beside itself and found nothing. With the working directory right, audio initialises fine and always did. Where it stands: -pb loads last.spl - "2973012 bytes to play" - creates RPL4PlaybackApplication and runs without crashing. Whether it puts the race on the screen is the next thing to look at, and that wants eyes rather than a log. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
105 lines
2.3 KiB
Plaintext
105 lines
2.3 KiB
Plaintext
# Visual Studio build artifacts
|
|
[Dd]ebug/
|
|
[Rr]elease/
|
|
[Dd]ebug*/
|
|
[Rr]elease*/
|
|
x64/
|
|
x86/
|
|
[Bb]in/
|
|
[Oo]bj/
|
|
ipch/
|
|
*.aps
|
|
*.ncb
|
|
*.opensdf
|
|
*.sdf
|
|
*.suo
|
|
*.user
|
|
*.cachefile
|
|
*.sln.cache
|
|
*.vspscc
|
|
*.vssscc
|
|
*.pch
|
|
*.ilk
|
|
*.tlog
|
|
*.lastbuildstate
|
|
*.idb
|
|
*.pdb
|
|
*.obj
|
|
*.o
|
|
*.exe
|
|
*.dll
|
|
*.exp
|
|
*.map
|
|
|
|
# Visual Studio per-user / IDE state
|
|
.vs/
|
|
*.VC.db
|
|
*.VC.opendb
|
|
|
|
# Runtime / generated output
|
|
*.log
|
|
rpl4.log
|
|
|
|
# Where the game window and the exploded view's panes were last dragged
|
|
# to (RP412MFDLAYOUT). Per-machine by nature - it is screen coordinates
|
|
# on somebody's desk.
|
|
mfd_layout.cfg
|
|
|
|
# The pilot's callsign, remembered between sessions. Whoever is sitting
|
|
# at this machine, which is not the repo's business.
|
|
pilot.cfg
|
|
|
|
# Generated by stamp-version.ps1 as RP_L4's pre-build step. The patch
|
|
# number in it IS this repository's commit count, so a committed copy
|
|
# would be stale the moment it was committed.
|
|
/RP_L4/rpl4build.h
|
|
|
|
# Build-output static libs that land in lib/ (the two committed dependency
|
|
# libs, OpenAL32.lib and libsndfile-1.lib, stay tracked).
|
|
/lib/Munga_L4.lib
|
|
/lib/DivLoader.lib
|
|
|
|
# Stale Subversion metadata
|
|
.svn/
|
|
|
|
# OS cruft
|
|
Thumbs.db
|
|
desktop.ini
|
|
.DS_Store
|
|
|
|
# Packaged runnable game (pack-dist.ps1 output)
|
|
/dist/
|
|
|
|
# Local cockpit-launcher experiments — deliberately untracked
|
|
assets/RP411/startrp-800x600.bat
|
|
assets/RP411/startrp-800x600.ps1
|
|
|
|
# Bundled game working copy: committed wholesale as runtime data (see
|
|
# docs/ASSETS.md). Re-include the binaries the global rules above would skip.
|
|
!assets/**/*.exe
|
|
!assets/**/*.dll
|
|
# ...but never the spool runtime output or Windows thumbnail caches.
|
|
assets/**/*.spl
|
|
assets/**/last.spl
|
|
|
|
# packaged releases (attached to Gitea releases, not tracked)
|
|
RedPlanet-*.zip
|
|
|
|
# Crash dumps sent in by testers. Read them with cdb against the matching
|
|
# Release\rpl4opt.pdb - the PE timestamp in the dump says which build, and
|
|
# the symbols only mean anything if it matches. They are not ours to keep
|
|
# in the history: a minidump carries process memory and the sender's own
|
|
# file paths.
|
|
/Crashdmp/
|
|
|
|
# Runtime files the game writes beside itself when run from the tree.
|
|
# environ.ini in particular is GENERATED from the template in
|
|
# RP_L4/RPL4ENVIRON.cpp - a copy committed here would be a second source
|
|
# of truth that nothing updates.
|
|
bindings.txt
|
|
environ.ini
|
|
rpl4.log
|
|
rpl4-fail.log
|
|
last.spl
|
|
SPOOLS/
|