Files
BT411/players/joyconfig.bat
T
arcattackandClaude Opus 5 39cb8647c7 launcher logs: rotate, never delete -- and solo/joyconfig must stop destroying the MULTIPLAYER log
Prompted by "does the steam path still generate our logs?".  Answer: yes --
play_steam.bat sets BT_LOG=steam.log with append, and matchlogs arm because both
Steam launch paths pass -net (the default trigger).  But the audit found two
evidence-destroying bugs on the way:

1. play_steam.bat DELETED the previous steam.log at every launch -- the same
   pattern fixed in join.bat/join_lan.bat last night.  A Steam player who
   crashes and relaunches loses the stack.  Now rotates to steam.old.log.

2. WORSE: play_solo.bat and joyconfig.bat deleted content\join.log -- the
   MULTIPLAYER log, not theirs.  A player who crashed in MP and then ran solo
   to investigate (or ran the joystick wizard) DESTROYED THEIR OWN CRASH
   EVIDENCE.  That is a very plausible part of how Conn Man's owens-laser stack
   vanished (#35) -- he had every reason to poke around after crashing.  Each
   bat now writes its OWN log (solo.log / joyconfig.log), rotates it, and never
   touches join.log.  Their launch-forensics + "send the operator" lines are
   repointed to match.

VERIFIED in the zip layout (the bats need build\ + content\ beside them, so a
repo-relative test is meaningless -- my first two attempts hit the badpath
guard and proved nothing):
  solo.log     = [boot] btl4 4.11.599 ... (the NEW run)
  solo.old.log = OLD-SOLO-CONTENT        (rotated, not deleted)
  join.log     = SEEDED-MP-EVIDENCE      (untouched by the solo run)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 09:18:37 -05:00

52 lines
2.4 KiB
Batchfile

@echo off
rem BT411 -- one-time JOYSTICK / HOTAS / pedals setup.
rem A console wizard asks you to move each control (stick, twist/rudder,
rem throttle, fire buttons); it detects what you moved and writes the
rem joystick section of content\bindings.txt. When it finishes the game
rem continues into the solo menu so you can try the bindings immediately.
rem Xbox-class controllers need NO setup -- they work out of the box.
rem Re-run this any time to redo the bindings.
cd /d %~dp0
set BT_PLATFORM=glass
if not exist "build\Release\btl4.exe" goto badpath
if not exist "content\OPERATOR.EGG" goto badpath
set BT_JOYCONFIG=1
set BT_START_INSIDE=1
set BT_DEV_GAUGES=1
rem one fresh log per bat run; the menu->game relaunch chain APPENDS
rem so every generation's lines survive (0-byte logs = killed pre-start)
rem KEEP the previous run's log (a crash report died 2026-07-26 because a
rem re-run deleted the only evidence). Rotate, never delete.
rem ...and do NOT touch join.log (the MULTIPLAYER log) -- the wizard used to
rem delete a player's MP crash evidence. The wizard writes joyconfig.log.
if exist content\joyconfig.old.log del content\joyconfig.old.log
if exist content\joyconfig.log ren content\joyconfig.log joyconfig.old.log
set BT_LOG=joyconfig.log
set BT_LOG_APPEND=1
set BT_FE_SOLO=1
cd content
rem LAUNCH FORENSICS (#41): bracket the exe from outside -- if it dies
rem before it can write its own log, this report still records when it
rem ran, how it exited, and whether it ever created its log at all.
echo [%DATE% %TIME%] launching btl4.exe > launch_report.txt
..\build\Release\btl4.exe
set BT_EXITCODE=%ERRORLEVEL%
echo [%DATE% %TIME%] btl4.exe exited with code %BT_EXITCODE% >> launch_report.txt
if not exist joyconfig.log echo joyconfig.log WAS NEVER CREATED: the exe was blocked before it could run (loader failure or antivirus) >> launch_report.txt
if exist joyconfig.log for %%A in (joyconfig.log) do echo joyconfig.log size: %%~zA bytes >> launch_report.txt
exit /b
:badpath
echo.
echo ==================================================
echo ERROR: this file is not in the right place.
echo.
echo It must sit in the EXTRACTED game folder, next to
echo the 'content' and 'build' folders.
echo.
echo Fix: right-click the .zip - Extract All, open the
echo extracted folder, and run this file from THERE.
echo (Do NOT run it from inside the zip.)
echo ==================================================
echo.
pause