From 8231bee58cb0aede8399533d9ddd4b19da105a46 Mon Sep 17 00:00:00 2001 From: Cyd Date: Wed, 29 Jul 2026 14:41:52 -0500 Subject: [PATCH] BT410 5.3.68: THE LIVE-RIO FAULT IS FIXED -- it and the TM crash were one defect The [map] audit named it in one run: subsystem 17 = Torso, attribute ids 12/13 unresolved. The donor's decompiled torso.hpp carries the authentic enum with binary offsets -- ids 3..15, including StickPosition(9), TorsoUp/Down/ Left/Right(10-13), TorsoCenter(14), MotionState(15). Our table stopped at seven entries with MotionState at id 9, on the strength of a comment claiming the rest were messages. The streamed control mappings bind BY ID as direct WRITE destinations, so the truncation produced two different crashes from one cause: in TM mode the button ids 12/13 resolved NULL (the boot write-fault the moment the joystick polled), and in RIO mode the analog id 9 resolved to our motionState StateIndicator -- every analog packet from a live vRIO wrote raw floats over a watcher-socketed object, and the corrupted chains walked into unmapped memory ~30-40s later. That was the 'intermittent' pod fault at the fixed DPMI-host address. vRIO down = no analog = no corruption, which is why the norio conf launched: every observation from the whole hunt drops out of this mechanism. Fix: the full 13-entry donor table; five int command members carved from the dynamicsState reserve (class size unchanged); ctor zeros them. Verified, two agreeing runs each way: TM mode launches with a clean audit and the Thrustmaster joystick driving the torso (stickY=0.907 -> torsoElev 0.349); RIO mode with vRIO STREAMING launches, zero faults, weapons cycling. pod_render_rec is no longer poisoned and the norio workaround is obsolete. The audit-before-the-archive-call pattern (BT_MAP_LOG walks the same streamed table CreateStreamedMappings consumes, naming what will not resolve) turned a two-day intermittent-corruption hunt into a one-run lookup. The streamed RES tables are binding contracts on our attribute enums. Co-Authored-By: Claude Fable 5 --- emulator/render-bridge/dosboxlog.txt | 39 +- emulator/render-bridge/logs/035-dosbox.txt | 93 +++ emulator/render-bridge/logs/035-prev.txt | 26 + emulator/render-bridge/logs/037-dosbox.txt | 74 +++ emulator/render-bridge/logs/037-prev.txt | 29 + emulator/render-bridge/logs/039-dosbox.txt | 74 +++ emulator/render-bridge/logs/039-prev.txt | 176 +++++ emulator/render-bridge/logs/041-dosbox.txt | 88 +++ emulator/render-bridge/logs/041-prev.txt | 287 ++++++++ emulator/render-bridge/logs/043-dosbox.txt | 86 +++ emulator/render-bridge/logs/043-prev.txt | 628 ++++++++++++++++++ emulator/render-bridge/pod_render_norio.conf | 1 + emulator/render-bridge/pod_render_tm.conf | 3 + emulator/render-bridge/podlog.txt | 537 ++++++++++++++- restoration/source410/BT/DAMAGE-MODEL.md | 197 ++++++ restoration/source410/BT/TORSO.CPP | 30 + restoration/source410/BT/TORSO.HPP | 46 +- restoration/source410/BT_L4/BTL4APP.CPP | 70 ++ restoration/source410/RENDER-ROADMAP.NOTES.md | 54 ++ 19 files changed, 2473 insertions(+), 65 deletions(-) create mode 100644 emulator/render-bridge/logs/035-dosbox.txt create mode 100644 emulator/render-bridge/logs/035-prev.txt create mode 100644 emulator/render-bridge/logs/037-dosbox.txt create mode 100644 emulator/render-bridge/logs/037-prev.txt create mode 100644 emulator/render-bridge/logs/039-dosbox.txt create mode 100644 emulator/render-bridge/logs/039-prev.txt create mode 100644 emulator/render-bridge/logs/041-dosbox.txt create mode 100644 emulator/render-bridge/logs/041-prev.txt create mode 100644 emulator/render-bridge/logs/043-dosbox.txt create mode 100644 emulator/render-bridge/logs/043-prev.txt create mode 100644 restoration/source410/BT/DAMAGE-MODEL.md diff --git a/emulator/render-bridge/dosboxlog.txt b/emulator/render-bridge/dosboxlog.txt index b7ad71d0..4c60fd41 100644 --- a/emulator/render-bridge/dosboxlog.txt +++ b/emulator/render-bridge/dosboxlog.txt @@ -1,5 +1,5 @@ LOG: Early LOG Init complete -LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_tm.conf +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_rec.conf LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src LOG: Logging init: beginning logging proper. This is the end of the early init logging LOG: Logging: No logfile was given. All further logging will be discarded. @@ -54,40 +54,3 @@ LOG: ISA Plug & Play BIOS enabled LOG: VGA ROM BIOS init callback LOG: pixratio 1.000, dw false, dh false LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 -LOG: WARNING: No translation support (to host) for code page 0 -LOG: DOS keyboard layout loaded with main language code US for layout us -LOG: XMS: 50 handles allocated for use by the DOS environment -LOG: EMS page frame at 0xe000-0xefff -LOG: COMMAND.COM env size: 720 bytes -LOG: COMMAND.COM environment block: 0x0701 sz=0x002d -LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a -LOG: COMMAND.COM stack: 0x0749 -LOG: pixratio 1.350, dw false, dh false -LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 -LOG: SHELL:Redirect output to COM3 -LOG: VPXLOG: fifosock client connected -VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) -LOG: 237273074 ERROR MOUSE:Unhandled videomode 79 on reset -LOG: pixratio 1.000, dw false, dh false -LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 -VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]00311d60/4.51048e-39 [44]00326744/4.62882e-39 [48]ffffffff/nan -LOG: 684478479 ERROR INT10:PutPixel unhandled mode type 7 -LOG: SHELL:Redirect output to RC.TXT -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:12 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 -LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 diff --git a/emulator/render-bridge/logs/035-dosbox.txt b/emulator/render-bridge/logs/035-dosbox.txt new file mode 100644 index 00000000..b7ad71d0 --- /dev/null +++ b/emulator/render-bridge/logs/035-dosbox.txt @@ -0,0 +1,93 @@ +LOG: Early LOG Init complete +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_tm.conf +LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src +LOG: Logging init: beginning logging proper. This is the end of the early init logging +LOG: Logging: No logfile was given. All further logging will be discarded. +LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit) +LOG: Prevent capture: 0 +LOG: SDL: version 2.32.10, Video windows, Audio directsound +LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended. +LOG: Windows keyboard layout ID is 0x0409 +LOG: Host keyboard layout is now us (US English) +LOG: Mapper keyboard layout is now us (US English) +LOG: SDL2 reports desktop display mode 3440 x 1440 +LOG: OpenGL Version : 4.6.0 NVIDIA 610.47 +LOG: Configured windowposition: - +LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888 +LOG: SDL: You are running in 24 bpp mode, this will slow down things! +LOG: Releasing keyboard +LOG: SDL: Windows 11 round corners will be disabled. +LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI) +LOG: ISA BCLK: 8333333.333Hz (25000000/3) +LOG: monopal: green, +LOG: Active save slot: 1 [Empty] +LOG: USING AVI+ZMBV +LOG: Pentium CMPXCHG8B emulation is enabled +LOG: Max 1073741824 sz 32768 +LOG: Final 32768 +LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB +LOG: VPXLOG: fifosock listening on 127.0.0.1:8621 +LOG: VPXLOG: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: Serial1: BASE 3f8h +LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16) +LOG: Serial1: namedpipe connected to \\.\pipe\vrio +LOG: Serial2: BASE 2f8h +LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1) +LOG: Serial2: namedpipe connected to \\.\pipe\vplasma +LOG: Serial3: BASE 3e8h +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Parallel1: BASE 378h +LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h +LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false. +LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true. +LOG: Allocated APM BIOS pm entry point at f000:ce40 +LOG: Writing code to fce40 +LOG: Writing code to fce60 +LOG: Windows: IID_ITaskbarList3 is available +LOG: ISA Plug & Play BIOS enabled +LOG: VGA ROM BIOS init callback +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +LOG: WARNING: No translation support (to host) for code page 0 +LOG: DOS keyboard layout loaded with main language code US for layout us +LOG: XMS: 50 handles allocated for use by the DOS environment +LOG: EMS page frame at 0xe000-0xefff +LOG: COMMAND.COM env size: 720 bytes +LOG: COMMAND.COM environment block: 0x0701 sz=0x002d +LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a +LOG: COMMAND.COM stack: 0x0749 +LOG: pixratio 1.350, dw false, dh false +LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 +LOG: SHELL:Redirect output to COM3 +LOG: VPXLOG: fifosock client connected +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 237273074 ERROR MOUSE:Unhandled videomode 79 on reset +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]00311d60/4.51048e-39 [44]00326744/4.62882e-39 [48]ffffffff/nan +LOG: 684478479 ERROR INT10:PutPixel unhandled mode type 7 +LOG: SHELL:Redirect output to RC.TXT +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:12 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:6 (IF0:0), TX:0, Break 0 diff --git a/emulator/render-bridge/logs/035-prev.txt b/emulator/render-bridge/logs/035-prev.txt new file mode 100644 index 00000000..1ba3e2e6 --- /dev/null +++ b/emulator/render-bridge/logs/035-prev.txt @@ -0,0 +1,26 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_lmissle not found +ColorMapperArmor warning: damage zone dz_rmissle not found +ColorMapperArmor warning: damage zone dz_ftorso not found +ColorMapperArmor warning: damage zone dz_btorso not found + +32loader runtime error: Unhandled exception + + Exception 0E at 00FF:00485E1A error code 00000006 + + CS=00FF DS=0107 ES=0107 SS=0107 FS=011F GS=0000 + EAX=00000000 EBX=009CFDE0 ECX=0012DDC8 EDX=00000044 + EBP=0012DDAC ESP=0012DDAC EDI=0012DE3C ESI=00050421 + + The invalid instruction was executed at 00485E1A + +Module 'C:\REL410\BT\BTL4REC.EXE' section 'CODE' offset 00075E1A + +[00485E12]: 8B 40 1C 8B 55 0C 8B 12 - 89 10 5D C3 55 8B EC 53 + + The instruction referenced illegal address 00000000 + diff --git a/emulator/render-bridge/logs/037-dosbox.txt b/emulator/render-bridge/logs/037-dosbox.txt new file mode 100644 index 00000000..e5e754a0 --- /dev/null +++ b/emulator/render-bridge/logs/037-dosbox.txt @@ -0,0 +1,74 @@ +LOG: Early LOG Init complete +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_tm.conf +LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src +LOG: Logging init: beginning logging proper. This is the end of the early init logging +LOG: Logging: No logfile was given. All further logging will be discarded. +LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit) +LOG: Prevent capture: 0 +LOG: SDL: version 2.32.10, Video windows, Audio directsound +LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended. +LOG: Windows keyboard layout ID is 0x0409 +LOG: Host keyboard layout is now us (US English) +LOG: Mapper keyboard layout is now us (US English) +LOG: SDL2 reports desktop display mode 3440 x 1440 +LOG: OpenGL Version : 4.6.0 NVIDIA 610.47 +LOG: Configured windowposition: - +LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888 +LOG: SDL: You are running in 24 bpp mode, this will slow down things! +LOG: Releasing keyboard +LOG: SDL: Windows 11 round corners will be disabled. +LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI) +LOG: ISA BCLK: 8333333.333Hz (25000000/3) +LOG: monopal: green, +LOG: Active save slot: 1 [Empty] +LOG: USING AVI+ZMBV +LOG: Pentium CMPXCHG8B emulation is enabled +LOG: Max 1073741824 sz 32768 +LOG: Final 32768 +LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB +LOG: VPXLOG: fifosock listening on 127.0.0.1:8621 +LOG: VPXLOG: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: Serial1: BASE 3f8h +LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16) +LOG: Serial1: namedpipe connected to \\.\pipe\vrio +LOG: Serial2: BASE 2f8h +LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1) +LOG: Serial2: namedpipe connected to \\.\pipe\vplasma +LOG: Serial3: BASE 3e8h +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Parallel1: BASE 378h +LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h +LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false. +LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true. +LOG: Allocated APM BIOS pm entry point at f000:ce40 +LOG: Writing code to fce40 +LOG: Writing code to fce60 +LOG: Windows: IID_ITaskbarList3 is available +LOG: ISA Plug & Play BIOS enabled +LOG: VGA ROM BIOS init callback +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +LOG: WARNING: No translation support (to host) for code page 0 +LOG: DOS keyboard layout loaded with main language code US for layout us +LOG: XMS: 50 handles allocated for use by the DOS environment +LOG: EMS page frame at 0xe000-0xefff +LOG: COMMAND.COM env size: 720 bytes +LOG: COMMAND.COM environment block: 0x0701 sz=0x002d +LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a +LOG: COMMAND.COM stack: 0x0749 +LOG: pixratio 1.350, dw false, dh false +LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 +LOG: SHELL:Redirect output to COM3 +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 581083667 ERROR MOUSE:Unhandled videomode 79 on reset +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]00000000/0 [44]00000000/0 [48]ffffffff/nan +LOG: 996907071 ERROR INT10:PutPixel unhandled mode type 7 +LOG: SHELL:Redirect output to RC.TXT diff --git a/emulator/render-bridge/logs/037-prev.txt b/emulator/render-bridge/logs/037-prev.txt new file mode 100644 index 00000000..fb3ec704 --- /dev/null +++ b/emulator/render-bridge/logs/037-prev.txt @@ -0,0 +1,29 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +[map] 9 streamed mappings for 'Thrustmaster' +[map] BAD direct: idx=1 group=3 elem=68 subsysID=17 attrID=12 (attr NULL) +[map] BAD direct: idx=2 group=3 elem=67 subsysID=17 attrID=13 (attr NULL) +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_lmissle not found +ColorMapperArmor warning: damage zone dz_rmissle not found +ColorMapperArmor warning: damage zone dz_ftorso not found +ColorMapperArmor warning: damage zone dz_btorso not found + +32loader runtime error: Unhandled exception + + Exception 0E at 00FF:00485E1A error code 00000006 + + CS=00FF DS=0107 ES=0107 SS=0107 FS=011F GS=0000 + EAX=00000000 EBX=009B4518 ECX=0012DDC8 EDX=00000044 + EBP=0012DDAC ESP=0012DDAC EDI=0012DE3C ESI=00050421 + + The invalid instruction was executed at 00485E1A + +Module 'C:\REL410\BT\BTL4REC.EXE' section 'CODE' offset 00075E1A + +[00485E12]: 8B 40 1C 8B 55 0C 8B 12 - 89 10 5D C3 55 8B EC 53 + + The instruction referenced illegal address 00000000 + diff --git a/emulator/render-bridge/logs/039-dosbox.txt b/emulator/render-bridge/logs/039-dosbox.txt new file mode 100644 index 00000000..8ddf5547 --- /dev/null +++ b/emulator/render-bridge/logs/039-dosbox.txt @@ -0,0 +1,74 @@ +LOG: Early LOG Init complete +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_tm.conf +LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src +LOG: Logging init: beginning logging proper. This is the end of the early init logging +LOG: Logging: No logfile was given. All further logging will be discarded. +LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit) +LOG: Prevent capture: 0 +LOG: SDL: version 2.32.10, Video windows, Audio directsound +LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended. +LOG: Windows keyboard layout ID is 0x0409 +LOG: Host keyboard layout is now us (US English) +LOG: Mapper keyboard layout is now us (US English) +LOG: SDL2 reports desktop display mode 3440 x 1440 +LOG: OpenGL Version : 4.6.0 NVIDIA 610.47 +LOG: Configured windowposition: - +LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888 +LOG: SDL: You are running in 24 bpp mode, this will slow down things! +LOG: Releasing keyboard +LOG: SDL: Windows 11 round corners will be disabled. +LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI) +LOG: ISA BCLK: 8333333.333Hz (25000000/3) +LOG: monopal: green, +LOG: Active save slot: 1 [Empty] +LOG: USING AVI+ZMBV +LOG: Pentium CMPXCHG8B emulation is enabled +LOG: Max 1073741824 sz 32768 +LOG: Final 32768 +LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB +LOG: VPXLOG: fifosock listening on 127.0.0.1:8621 +LOG: VPXLOG: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: Serial1: BASE 3f8h +LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16) +LOG: Serial1: namedpipe connected to \\.\pipe\vrio +LOG: Serial2: BASE 2f8h +LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1) +LOG: Serial2: namedpipe connected to \\.\pipe\vplasma +LOG: Serial3: BASE 3e8h +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Parallel1: BASE 378h +LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h +LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false. +LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true. +LOG: Allocated APM BIOS pm entry point at f000:ce40 +LOG: Writing code to fce40 +LOG: Writing code to fce60 +LOG: Windows: IID_ITaskbarList3 is available +LOG: ISA Plug & Play BIOS enabled +LOG: VGA ROM BIOS init callback +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +LOG: WARNING: No translation support (to host) for code page 0 +LOG: DOS keyboard layout loaded with main language code US for layout us +LOG: XMS: 50 handles allocated for use by the DOS environment +LOG: EMS page frame at 0xe000-0xefff +LOG: COMMAND.COM env size: 720 bytes +LOG: COMMAND.COM environment block: 0x0701 sz=0x002d +LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a +LOG: COMMAND.COM stack: 0x0749 +LOG: pixratio 1.350, dw false, dh false +LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 +LOG: SHELL:Redirect output to COM3 +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 290054624 ERROR MOUSE:Unhandled videomode 79 on reset +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]c800df05/-131964 [44]c800df05/-131964 [48]ffffffff/nan +LOG: 2060686879 ERROR INT10:PutPixel unhandled mode type 7 +LOG: SHELL:Redirect output to RC.TXT diff --git a/emulator/render-bridge/logs/039-prev.txt b/emulator/render-bridge/logs/039-prev.txt new file mode 100644 index 00000000..c2970957 --- /dev/null +++ b/emulator/render-bridge/logs/039-prev.txt @@ -0,0 +1,176 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +[exp] master player experience=2 simLive=1 heatModelOn=1 advDamage=1 +[role] 'Role::Default' lives=1000 killBonus=500 dmgMod=1 +[torso] horizJoint 'jointtorso' -> 0x00a05144 type=1 enabled=1 +[weap] 'AFC100' seg=13 mount=sitelgunport rear=0 +[proj] 'AFC100' ammoBinIndex=21 -> AmmoBinAFC100 (rounds=20) +[weap] 'ERLLaser' seg=7 mount=siterugunport rear=0 +[weap] 'ERSLaser_1' seg=13 mount=sitelgunport rear=0 +[weap] 'ERSLaser_2' seg=8 mount=siterdgunport rear=0 +[weap] 'LRM15_1' seg=18 mount=sitelmissleport rear=0 +[proj] 'LRM15_1' ammoBinIndex=26 -> AmmoBinLRM15_1 (rounds=16) +[weap] 'LRM15_2' seg=19 mount=sitermissleport rear=0 +[proj] 'LRM15_2' ammoBinIndex=28 -> AmmoBinLRM15_2 (rounds=16) +[mech] segment walk done: subsystemCount=32 weaponCount=6 +[skel] jointSubsystem=0x009e5044 jointCount=25 +[skel] seg[0] name=ROOT jointIdx=-1 +[skel] seg[1] name=jointlocal jointIdx=0 +[skel] seg[2] name=jointhip jointIdx=1 +[skel] seg[3] name=jointtorso jointIdx=2 +[skel] seg[4] name=jointshakey jointIdx=3 +[skel] seg[5] name=jointrshoulder jointIdx=4 +[skel] seg[6] name=jointrgun jointIdx=5 +[skel] seg[7] name=siterugunport jointIdx=-1 +[skel] seg[8] name=siterdgunport jointIdx=-1 +[skel] seg[9] name=siteedz_rgun jointIdx=-1 +[skel] seg[10] name=siteedz_rarm jointIdx=-1 +[skel] seg[11] name=jointlshoulder jointIdx=6 +[skel] seg[12] name=jointlgun jointIdx=7 +[skel] seg[13] name=sitelgunport jointIdx=-1 +[skel] seg[14] name=sitelugunport jointIdx=-1 +[skel] seg[15] name=siteldgunport jointIdx=-1 +[skel] seg[16] name=siteedz_lgun jointIdx=-1 +[skel] seg[17] name=siteedz_larm jointIdx=-1 +[skel] seg[18] name=sitelmissleport jointIdx=-1 +[skel] seg[19] name=sitermissleport jointIdx=-1 +[skel] seg[20] name=sitelight jointIdx=-1 +[skel] seg[21] name=siterutorsoport jointIdx=-1 +[skel] seg[22] name=siterdtorsoport jointIdx=-1 +[skel] seg[23] name=sitelutorsoport jointIdx=-1 +[skel] seg[24] name=siteldtorsoport jointIdx=-1 +[skel] seg[25] name=jointlmissledoor jointIdx=8 +[skel] seg[26] name=siteedz_ldoor jointIdx=-1 +[skel] seg[27] name=jointrmissledoor jointIdx=9 +[skel] seg[28] name=siteedz_rdoor jointIdx=-1 +[skel] seg[29] name=siteedz_rtorso jointIdx=-1 +[skel] seg[30] name=siteedz_ltorso jointIdx=-1 +[skel] seg[31] name=siteedz_utorso jointIdx=-1 +[skel] seg[32] name=siteedz_dtorso jointIdx=-1 +[skel] seg[33] name=siteedz_rearutorso jointIdx=-1 +[skel] seg[34] name=siteedz_reardtorso jointIdx=-1 +[skel] seg[35] name=siteedz_rearrtorso jointIdx=-1 +[skel] seg[36] name=siteedz_rearltorso jointIdx=-1 +[skel] seg[37] name=siteedz_searchlight jointIdx=-1 +[skel] seg[38] name=siteedz_hip jointIdx=-1 +[skel] seg[39] name=jointlthigh jointIdx=10 +[skel] seg[40] name=jointlknee jointIdx=11 +[skel] seg[41] name=jointlankle jointIdx=12 +[skel] seg[42] name=jointlbacktoe jointIdx=13 +[skel] seg[43] name=jointloutertoe jointIdx=14 +[skel] seg[44] name=jointlinnertoe jointIdx=15 +[skel] seg[45] name=siteedz_lfoot jointIdx=-1 +[skel] seg[46] name=siteedz_ldleg jointIdx=-1 +[skel] seg[47] name=siteedz_luleg jointIdx=-1 +[skel] seg[48] name=jointrthigh jointIdx=16 +[skel] seg[49] name=jointrknee jointIdx=17 +[skel] seg[50] name=jointrankle jointIdx=18 +[skel] seg[51] name=jointrbacktoe jointIdx=19 +[skel] seg[52] name=jointrinnertoe jointIdx=20 +[skel] seg[53] name=jointroutertoe jointIdx=21 +[skel] seg[54] name=siteedz_rfoot jointIdx=-1 +[skel] seg[55] name=siteedz_rdleg jointIdx=-1 +[skel] seg[56] name=siteedz_ruleg jointIdx=-1 +[skel] seg[57] name=jointshadow jointIdx=22 +[skel] seg[58] name=jointtshadow jointIdx=23 +[skel] seg[59] name=jointeye jointIdx=24 +[skel] segments=60 +[roster] slot 2 = HeatSink +[roster] slot 3 = Reservoir +[roster] slot 4 = Condenser1 +[roster] slot 5 = Condenser2 +[roster] slot 6 = Condenser3 +[roster] slot 7 = Condenser4 +[roster] slot 8 = Condenser5 +[roster] slot 9 = Condenser6 +[roster] slot 10 = GeneratorA +[roster] slot 11 = GeneratorB +[roster] slot 12 = GeneratorC +[roster] slot 13 = GeneratorD +[roster] slot 14 = Avionics +[roster] slot 15 = Myomers +[roster] slot 16 = Gyroscope +[roster] slot 17 = Torso +[roster] slot 18 = HUD +[roster] slot 19 = Searchlight +[roster] slot 20 = ThermalSight +[roster] slot 21 = AmmoBinAFC100 +[roster] slot 22 = AFC100 +[roster] slot 23 = ERLLaser +[roster] slot 24 = ERSLaser_1 +[roster] slot 25 = ERSLaser_2 +[roster] slot 26 = AmmoBinLRM15_1 +[roster] slot 27 = LRM15_1 +[roster] slot 28 = AmmoBinLRM15_2 +[roster] slot 29 = LRM15_2 +[roster] slot 30 = MessageManager +[roster] slot 31 = MechTech +[mech] model params: walkTR=65 runTR=40 maxAcc=20 throttleAdj=0.8 (deg,deg,u/s^2,scale) +[mech] look angles: L=50 R=-50 F=-15 B=0 (deg) +[zone] 0 'dz_dtorso' pts=122 seg=4 crit=5 redirect=0 VITAL +[zone] 1 'dz_hip' pts=122 seg=2 crit=4 redirect=0 VITAL +[zone] 2 'dz_larm' pts=77 seg=11 crit=2 redirect=0 DESCEND +[zone] 3 'dz_ldleg' pts=90 seg=40 crit=2 redirect=0 VITAL LEG +[zone] 4 'dz_ldoor' pts=1 seg=25 crit=0 redirect=0 +[zone] 5 'dz_lfoot' pts=81 seg=41 crit=1 redirect=0 VITAL LEG +[zone] 6 'dz_lgun' pts=68 seg=12 crit=4 redirect=0 DESCEND +[zone] 7 'dz_ltorso' pts=117 seg=4 crit=6 redirect=0 VITAL +[zone] 8 'dz_luleg' pts=90 seg=39 crit=2 redirect=0 VITAL LEG +[zone] 9 'dz_rarm' pts=77 seg=5 crit=1 redirect=0 DESCEND +[zone] 10 'dz_rdleg' pts=90 seg=49 crit=2 redirect=0 VITAL LEG +[zone] 11 'dz_rdoor' pts=1 seg=27 crit=0 redirect=0 +[zone] 12 'dz_reardtorso' pts=81 seg=4 crit=5 redirect=0 VITAL +[zone] 13 'dz_rearltorso' pts=117 seg=4 crit=4 redirect=0 VITAL +[zone] 14 'dz_rearrtorso' pts=117 seg=4 crit=4 redirect=0 VITAL +[zone] 15 'dz_rearutorso' pts=113 seg=4 crit=5 redirect=0 VITAL +[zone] 16 'dz_rfoot' pts=81 seg=50 crit=1 redirect=0 VITAL LEG +[zone] 17 'dz_rgun' pts=68 seg=6 crit=3 redirect=0 DESCEND +[zone] 18 'dz_rtorso' pts=117 seg=4 crit=6 redirect=0 VITAL +[zone] 19 'dz_ruleg' pts=90 seg=48 crit=2 redirect=0 VITAL LEG +[zone] 20 'dz_searchlight' pts=50 seg=4 crit=4 redirect=0 +[zone] 21 'dz_utorso' pts=185 seg=4 crit=6 redirect=0 VITAL +[mech] damage zones streamed: 22 [dz_dtorso,dz_hip,dz_larm,dz_ldleg,dz_ldoor,dz_lfoot,dz_lgun,dz_ltorso,dz_luleg,dz_rarm,dz_rdleg,dz_rdoor,dz_reardtorso,dz_rearltorso,dz_rearrtorso,dz_rearutorso,dz_rfoot,dz_rgun,dz_rtorso,dz_ruleg,dz_searchlight,dz_utorso] +[cyl] table 'madcat' LOADED rows=7 +[valve] 'Condenser1' valve=1 flow=0.166667 +[valve] 'Condenser2' valve=1 flow=0.166667 +[valve] 'Condenser3' valve=1 flow=0.166667 +[valve] 'Condenser4' valve=1 flow=0.166667 +[valve] 'Condenser5' valve=1 flow=0.166667 +[valve] 'Condenser6' valve=1 flow=0.166667 +[mapper] ctor id=0 throttleAttr=0x001a9fc8 controlModeAttr=0x001aa004 +[map] 9 streamed mappings for 'Thrustmaster' +[map] BAD direct: idx=1 group=3 elem=68 subsysID=17 attrID=12 (attr NULL) +[map] BAD direct: idx=2 group=3 elem=67 subsysID=17 attrID=13 (attr NULL) +[gau2] cluster slot=14 classID=3011 auxScreen=5 name=Avionics +[gau2] cluster slot=15 classID=3014 auxScreen=6 name=Myomers +[gau2] cluster slot=22 classID=3021 auxScreen=1 name=AFC100 +[gau2] cluster slot=23 classID=3016 auxScreen=10 name=ERLLaser +[gau2] cluster slot=24 classID=3016 auxScreen=3 name=ERSLaser_1 +[gau2] cluster slot=25 classID=3016 auxScreen=12 name=ERSLaser_2 +[gau2] cluster slot=27 classID=3024 auxScreen=2 name=LRM15_1 +[gau2] cluster slot=29 classID=3024 auxScreen=9 name=LRM15_2 +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_lmissle not found +ColorMapperArmor warning: damage zone dz_rmissle not found +ColorMapperArmor warning: damage zone dz_ftorso not found +ColorMapperArmor warning: damage zone dz_btorso not found +[link] InitializePlayerLink -> vehicle playerLink=0x00ac1830 + +32loader runtime error: Unhandled exception + + Exception 0E at 00FF:00485E1A error code 00000006 + + CS=00FF DS=0107 ES=0107 SS=0107 FS=011F GS=0000 + EAX=00000000 EBX=001AA1EC ECX=0012DDC8 EDX=00000044 + EBP=0012DDAC ESP=0012DDAC EDI=0012DE3C ESI=00050421 + + The invalid instruction was executed at 00485E1A + +Module 'C:\REL410\BT\BTL4REC.EXE' section 'CODE' offset 00075E1A + +[00485E12]: 8B 40 1C 8B 55 0C 8B 12 - 89 10 5D C3 55 8B EC 53 + + The instruction referenced illegal address 00000000 + diff --git a/emulator/render-bridge/logs/041-dosbox.txt b/emulator/render-bridge/logs/041-dosbox.txt new file mode 100644 index 00000000..81fbcfaa --- /dev/null +++ b/emulator/render-bridge/logs/041-dosbox.txt @@ -0,0 +1,88 @@ +LOG: Early LOG Init complete +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_tm.conf +LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src +LOG: Logging init: beginning logging proper. This is the end of the early init logging +LOG: Logging: No logfile was given. All further logging will be discarded. +LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit) +LOG: Prevent capture: 0 +LOG: SDL: version 2.32.10, Video windows, Audio directsound +LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended. +LOG: Windows keyboard layout ID is 0x0409 +LOG: Host keyboard layout is now us (US English) +LOG: Mapper keyboard layout is now us (US English) +LOG: SDL2 reports desktop display mode 3440 x 1440 +LOG: OpenGL Version : 4.6.0 NVIDIA 610.47 +LOG: Configured windowposition: - +LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888 +LOG: SDL: You are running in 24 bpp mode, this will slow down things! +LOG: Releasing keyboard +LOG: SDL: Windows 11 round corners will be disabled. +LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI) +LOG: ISA BCLK: 8333333.333Hz (25000000/3) +LOG: monopal: green, +LOG: Active save slot: 1 [Empty] +LOG: USING AVI+ZMBV +LOG: Pentium CMPXCHG8B emulation is enabled +LOG: Max 1073741824 sz 32768 +LOG: Final 32768 +LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB +LOG: VPXLOG: fifosock listening on 127.0.0.1:8621 +LOG: VPXLOG: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: Serial1: BASE 3f8h +LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16) +LOG: Serial1: namedpipe connected to \\.\pipe\vrio +LOG: Serial2: BASE 2f8h +LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1) +LOG: Serial2: namedpipe connected to \\.\pipe\vplasma +LOG: Serial3: BASE 3e8h +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Parallel1: BASE 378h +LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h +LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false. +LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true. +LOG: Allocated APM BIOS pm entry point at f000:ce40 +LOG: Writing code to fce40 +LOG: Writing code to fce60 +LOG: Windows: IID_ITaskbarList3 is available +LOG: ISA Plug & Play BIOS enabled +LOG: VGA ROM BIOS init callback +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +LOG: WARNING: No translation support (to host) for code page 0 +LOG: pixratio 1.350, dw false, dh false +LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 +LOG: DOS keyboard layout loaded with main language code US for layout us +LOG: XMS: 50 handles allocated for use by the DOS environment +LOG: EMS page frame at 0xe000-0xefff +LOG: COMMAND.COM env size: 720 bytes +LOG: COMMAND.COM environment block: 0x0701 sz=0x002d +LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a +LOG: COMMAND.COM stack: 0x0749 +LOG: SHELL:Redirect output to COM3 +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 256654343 ERROR MOUSE:Unhandled videomode 79 on reset +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]c800df05/-131964 [44]c800df05/-131964 [48]ffffffff/nan +VPX lights@f121: type6=2 typeE=6 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f241: type6=2 typeE=6 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f361: type6=2 typeE=9 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f481: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f601: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f721: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f841: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f961: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) diff --git a/emulator/render-bridge/logs/041-prev.txt b/emulator/render-bridge/logs/041-prev.txt new file mode 100644 index 00000000..af0e109a --- /dev/null +++ b/emulator/render-bridge/logs/041-prev.txt @@ -0,0 +1,287 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +[exp] master player experience=2 simLive=1 heatModelOn=1 advDamage=1 +[role] 'Role::Default' lives=1000 killBonus=500 dmgMod=1 +[torso] horizJoint 'jointtorso' -> 0x00aae61c type=1 enabled=1 +[weap] 'AFC100' seg=13 mount=sitelgunport rear=0 +[proj] 'AFC100' ammoBinIndex=21 -> AmmoBinAFC100 (rounds=20) +[weap] 'ERLLaser' seg=7 mount=siterugunport rear=0 +[weap] 'ERSLaser_1' seg=13 mount=sitelgunport rear=0 +[weap] 'ERSLaser_2' seg=8 mount=siterdgunport rear=0 +[weap] 'LRM15_1' seg=18 mount=sitelmissleport rear=0 +[proj] 'LRM15_1' ammoBinIndex=26 -> AmmoBinLRM15_1 (rounds=16) +[weap] 'LRM15_2' seg=19 mount=sitermissleport rear=0 +[proj] 'LRM15_2' ammoBinIndex=28 -> AmmoBinLRM15_2 (rounds=16) +[mech] segment walk done: subsystemCount=32 weaponCount=6 +[skel] jointSubsystem=0x009f8148 jointCount=25 +[skel] seg[0] name=ROOT jointIdx=-1 +[skel] seg[1] name=jointlocal jointIdx=0 +[skel] seg[2] name=jointhip jointIdx=1 +[skel] seg[3] name=jointtorso jointIdx=2 +[skel] seg[4] name=jointshakey jointIdx=3 +[skel] seg[5] name=jointrshoulder jointIdx=4 +[skel] seg[6] name=jointrgun jointIdx=5 +[skel] seg[7] name=siterugunport jointIdx=-1 +[skel] seg[8] name=siterdgunport jointIdx=-1 +[skel] seg[9] name=siteedz_rgun jointIdx=-1 +[skel] seg[10] name=siteedz_rarm jointIdx=-1 +[skel] seg[11] name=jointlshoulder jointIdx=6 +[skel] seg[12] name=jointlgun jointIdx=7 +[skel] seg[13] name=sitelgunport jointIdx=-1 +[skel] seg[14] name=sitelugunport jointIdx=-1 +[skel] seg[15] name=siteldgunport jointIdx=-1 +[skel] seg[16] name=siteedz_lgun jointIdx=-1 +[skel] seg[17] name=siteedz_larm jointIdx=-1 +[skel] seg[18] name=sitelmissleport jointIdx=-1 +[skel] seg[19] name=sitermissleport jointIdx=-1 +[skel] seg[20] name=sitelight jointIdx=-1 +[skel] seg[21] name=siterutorsoport jointIdx=-1 +[skel] seg[22] name=siterdtorsoport jointIdx=-1 +[skel] seg[23] name=sitelutorsoport jointIdx=-1 +[skel] seg[24] name=siteldtorsoport jointIdx=-1 +[skel] seg[25] name=jointlmissledoor jointIdx=8 +[skel] seg[26] name=siteedz_ldoor jointIdx=-1 +[skel] seg[27] name=jointrmissledoor jointIdx=9 +[skel] seg[28] name=siteedz_rdoor jointIdx=-1 +[skel] seg[29] name=siteedz_rtorso jointIdx=-1 +[skel] seg[30] name=siteedz_ltorso jointIdx=-1 +[skel] seg[31] name=siteedz_utorso jointIdx=-1 +[skel] seg[32] name=siteedz_dtorso jointIdx=-1 +[skel] seg[33] name=siteedz_rearutorso jointIdx=-1 +[skel] seg[34] name=siteedz_reardtorso jointIdx=-1 +[skel] seg[35] name=siteedz_rearrtorso jointIdx=-1 +[skel] seg[36] name=siteedz_rearltorso jointIdx=-1 +[skel] seg[37] name=siteedz_searchlight jointIdx=-1 +[skel] seg[38] name=siteedz_hip jointIdx=-1 +[skel] seg[39] name=jointlthigh jointIdx=10 +[skel] seg[40] name=jointlknee jointIdx=11 +[skel] seg[41] name=jointlankle jointIdx=12 +[skel] seg[42] name=jointlbacktoe jointIdx=13 +[skel] seg[43] name=jointloutertoe jointIdx=14 +[skel] seg[44] name=jointlinnertoe jointIdx=15 +[skel] seg[45] name=siteedz_lfoot jointIdx=-1 +[skel] seg[46] name=siteedz_ldleg jointIdx=-1 +[skel] seg[47] name=siteedz_luleg jointIdx=-1 +[skel] seg[48] name=jointrthigh jointIdx=16 +[skel] seg[49] name=jointrknee jointIdx=17 +[skel] seg[50] name=jointrankle jointIdx=18 +[skel] seg[51] name=jointrbacktoe jointIdx=19 +[skel] seg[52] name=jointrinnertoe jointIdx=20 +[skel] seg[53] name=jointroutertoe jointIdx=21 +[skel] seg[54] name=siteedz_rfoot jointIdx=-1 +[skel] seg[55] name=siteedz_rdleg jointIdx=-1 +[skel] seg[56] name=siteedz_ruleg jointIdx=-1 +[skel] seg[57] name=jointshadow jointIdx=22 +[skel] seg[58] name=jointtshadow jointIdx=23 +[skel] seg[59] name=jointeye jointIdx=24 +[skel] segments=60 +[roster] slot 2 = HeatSink +[roster] slot 3 = Reservoir +[roster] slot 4 = Condenser1 +[roster] slot 5 = Condenser2 +[roster] slot 6 = Condenser3 +[roster] slot 7 = Condenser4 +[roster] slot 8 = Condenser5 +[roster] slot 9 = Condenser6 +[roster] slot 10 = GeneratorA +[roster] slot 11 = GeneratorB +[roster] slot 12 = GeneratorC +[roster] slot 13 = GeneratorD +[roster] slot 14 = Avionics +[roster] slot 15 = Myomers +[roster] slot 16 = Gyroscope +[roster] slot 17 = +[roster] slot 18 = HUD +[roster] slot 19 = Searchlight +[roster] slot 20 = ThermalSight +[roster] slot 21 = AmmoBinAFC100 +[roster] slot 22 = AFC100 +[roster] slot 23 = ERLLaser +[roster] slot 24 = ERSLaser_1 +[roster] slot 25 = ERSLaser_2 +[roster] slot 26 = AmmoBinLRM15_1 +[roster] slot 27 = LRM15_1 +[roster] slot 28 = AmmoBinLRM15_2 +[roster] slot 29 = LRM15_2 +[roster] slot 30 = MessageManager +[roster] slot 31 = MechTech +[mech] model params: walkTR=65 runTR=40 maxAcc=20 throttleAdj=0.8 (deg,deg,u/s^2,scale) +[mech] look angles: L=50 R=-50 F=-15 B=0 (deg) +[zone] 0 'dz_dtorso' pts=122 seg=4 crit=5 redirect=0 VITAL +[zone] 1 'dz_hip' pts=122 seg=2 crit=4 redirect=0 VITAL +[zone] 2 'dz_larm' pts=77 seg=11 crit=2 redirect=0 DESCEND +[zone] 3 'dz_ldleg' pts=90 seg=40 crit=2 redirect=0 VITAL LEG +[zone] 4 'dz_ldoor' pts=1 seg=25 crit=0 redirect=0 +[zone] 5 'dz_lfoot' pts=81 seg=41 crit=1 redirect=0 VITAL LEG +[zone] 6 'dz_lgun' pts=68 seg=12 crit=4 redirect=0 DESCEND +[zone] 7 'dz_ltorso' pts=117 seg=4 crit=6 redirect=0 VITAL +[zone] 8 'dz_luleg' pts=90 seg=39 crit=2 redirect=0 VITAL LEG +[zone] 9 'dz_rarm' pts=77 seg=5 crit=1 redirect=0 DESCEND +[zone] 10 'dz_rdleg' pts=90 seg=49 crit=2 redirect=0 VITAL LEG +[zone] 11 'dz_rdoor' pts=1 seg=27 crit=0 redirect=0 +[zone] 12 'dz_reardtorso' pts=81 seg=4 crit=5 redirect=0 VITAL +[zone] 13 'dz_rearltorso' pts=117 seg=4 crit=4 redirect=0 VITAL +[zone] 14 'dz_rearrtorso' pts=117 seg=4 crit=4 redirect=0 VITAL +[zone] 15 'dz_rearutorso' pts=113 seg=4 crit=5 redirect=0 VITAL +[zone] 16 'dz_rfoot' pts=81 seg=50 crit=1 redirect=0 VITAL LEG +[zone] 17 'dz_rgun' pts=68 seg=6 crit=3 redirect=0 DESCEND +[zone] 18 'dz_rtorso' pts=117 seg=4 crit=6 redirect=0 VITAL +[zone] 19 'dz_ruleg' pts=90 seg=48 crit=2 redirect=0 VITAL LEG +[zone] 20 'dz_searchlight' pts=50 seg=4 crit=4 redirect=0 +[zone] 21 'dz_utorso' pts=185 seg=4 crit=6 redirect=0 VITAL +[mech] damage zones streamed: 22 [dz_dtorso,dz_hip,dz_larm,dz_ldleg,dz_ldoor,dz_lfoot,dz_lgun,dz_ltorso,dz_luleg,dz_rarm,dz_rdleg,dz_rdoor,dz_reardtorso,dz_rearltorso,dz_rearrtorso,dz_rearutorso,dz_rfoot,dz_rgun,dz_rtorso,dz_ruleg,dz_searchlight,dz_utorso] +[cyl] table 'madcat' LOADED rows=7 +[valve] 'Condenser1' valve=1 flow=0.166667 +[valve] 'Condenser2' valve=1 flow=0.166667 +[valve] 'Condenser3' valve=1 flow=0.166667 +[valve] 'Condenser4' valve=1 flow=0.166667 +[valve] 'Condenser5' valve=1 flow=0.166667 +[valve] 'Condenser6' valve=1 flow=0.166667 +[mapper] ctor id=0 throttleAttr=0x00bece74 controlModeAttr=0x00beceb0 +[map] 9 streamed mappings for 'Thrustmaster' +[gau2] cluster slot=14 classID=3011 auxScreen=5 name=Avionics +[gau2] cluster slot=15 classID=3014 auxScreen=6 name=Myomers +[gau2] cluster slot=22 classID=3021 auxScreen=1 name=AFC100 +[gau2] cluster slot=23 classID=3016 auxScreen=10 name=ERLLaser +[gau2] cluster slot=24 classID=3016 auxScreen=3 name=ERSLaser_1 +[gau2] cluster slot=25 classID=3016 auxScreen=12 name=ERSLaser_2 +[gau2] cluster slot=27 classID=3024 auxScreen=2 name=LRM15_1 +[gau2] cluster slot=29 classID=3024 auxScreen=9 name=LRM15_2 +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_lmissle not found +ColorMapperArmor warning: damage zone dz_rmissle not found +ColorMapperArmor warning: damage zone dz_ftorso not found +ColorMapperArmor warning: damage zone dz_btorso not found +ColorMapperCritical warning: subsystem Torso does not exist +ColorMapperHeat warning: subsystem Torso does not exist +[link] InitializePlayerLink -> vehicle playerLink=0x00beebf0 +[skl] video\mad.skl -> 26 nodes, 19 objects +MapDisplay: operating=1 static=4 moving=0 +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +[tick] roster live (first Sensor frame), radarPercent=1 voltState=4 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.87728 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(54.6477,20,-653.02) yaw=-0.0740094 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[fire] 'ERSLaser_1' LOADED (level=7920.02 T=76.8869) +[fire] 'ERSLaser_2' LOADED (level=7936.72 T=76.8453) +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.888889 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(56.2174,20,-638.607) yaw=-0.141754 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.864013 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(58.765,20,-624.305) yaw=-0.20963 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.895522 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(62.269,20,-610.237) yaw=-0.277378 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.850746 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(66.7172,20,-596.438) yaw=-0.345117 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[fire] 'ERLLaser' LOADED (level=7928.62 T=76.0944) +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.873964 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(72.0892,20,-582.972) yaw=-0.412857 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.824212 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(78.3603,20,-569.901) yaw=-0.480597 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.892206 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(85.5019,20,-557.284) yaw=-0.548337 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.930348 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(93.4811,20,-545.179) yaw=-0.616077 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.87728 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(102.261,20,-533.642) yaw=-0.683817 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.890547 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(111.802,20,-522.726) yaw=-0.751558 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.860696 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(122.061,20,-512.48) yaw=-0.819297 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.890547 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(132.989,20,-502.953) yaw=-0.887036 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.870647 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(144.536,20,-494.187) yaw=-0.954774 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.913765 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(156.651,20,-486.223) yaw=-1.02251 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.915423 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(169.277,20,-479.097) yaw=-1.09025 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.887231 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(182.356,20,-472.842) yaw=-1.15799 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.86733 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(195.829,20,-467.487) yaw=-1.22573 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.835821 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(209.634,20,-463.056) yaw=-1.29347 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.907131 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(223.706,20,-459.57) yaw=-1.36121 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.827529 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(238.011,20,-457.04) yaw=-1.42908 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.897181 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(252.426,20,-455.488) yaw=-1.49682 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.905473 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(266.912,20,-454.915) yaw=-1.5708 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.958541 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(281.405,20,-455.324) yaw=-1.50929 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.892206 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(295.836,20,-456.713) yaw=-1.44156 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.873964 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(310.14,20,-459.076) yaw=-1.37382 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.907131 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(324.252,20,-462.402) yaw=-1.30608 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.81592 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(338.105,20,-466.675) yaw=-1.23834 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.932007 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(351.638,20,-471.876) yaw=-1.1706 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.792703 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(364.788,20,-477.981) yaw=-1.10286 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.865672 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(377.495,20,-484.963) yaw=-1.03512 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.905473 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(389.7,20,-492.788) yaw=-0.967383 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.860696 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(401.347,20,-501.421) yaw=-0.899644 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.837479 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(412.383,20,-510.823) yaw=-0.831906 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.885572 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(422.757,20,-520.951) yaw=-0.764167 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.893864 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(432.422,20,-531.757) yaw=-0.696428 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.85738 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(441.334,20,-543.193) yaw=-0.628689 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.882255 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(449.451,20,-555.206) yaw=-0.56095 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.844113 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(456.736,20,-567.741) yaw=-0.493212 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.897181 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(463.168,20,-580.766) yaw=-0.425338 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.85738 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(468.691,20,-594.17) yaw=-0.357599 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.820895 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(473.295,20,-607.918) yaw=-0.28986 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.922056 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(476.958,20,-621.946) yaw=-0.222122 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.882255 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(479.662,20,-636.189) yaw=-0.154383 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.849088 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(481.397,20,-650.583) yaw=-0.0866441 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.915423 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(482.153,20,-665.061) yaw=-0.0189053 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.900497 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(481.927,20,-679.558) yaw=0.0488334 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.849088 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(480.721,20,-694.006) yaw=0.116572 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.913765 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(478.539,20,-708.338) yaw=0.184311 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.941957 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(475.393,20,-722.491) yaw=0.25205 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.923715 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(471.296,20,-736.398) yaw=0.319789 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.897181 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(466.267,20,-749.995) yaw=0.387527 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.925373 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(460.328,20,-763.221) yaw=0.455266 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.893864 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(453.509,20,-776.015) yaw=0.523005 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.855721 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(445.839,20,-788.318) yaw=0.590744 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.897181 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(437.353,20,-800.074) yaw=0.658482 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.844113 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(428.092,20,-811.228) yaw=0.726221 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.888889 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(418.097,20,-821.73) yaw=0.79396 spd=14.4 eyePitch=0.349066 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0.887231 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0.349066 +[sim] pos=(407.414,20,-831.532) yaw=0.861698 spd=14.4 eyePitch=0.349066 eyeYaw=0 diff --git a/emulator/render-bridge/logs/043-dosbox.txt b/emulator/render-bridge/logs/043-dosbox.txt new file mode 100644 index 00000000..177d14dd --- /dev/null +++ b/emulator/render-bridge/logs/043-dosbox.txt @@ -0,0 +1,86 @@ +LOG: Early LOG Init complete +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_rec.conf +LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src +LOG: Logging init: beginning logging proper. This is the end of the early init logging +LOG: Logging: No logfile was given. All further logging will be discarded. +LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit) +LOG: Prevent capture: 0 +LOG: SDL: version 2.32.10, Video windows, Audio directsound +LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended. +LOG: Windows keyboard layout ID is 0x0409 +LOG: Host keyboard layout is now us (US English) +LOG: Mapper keyboard layout is now us (US English) +LOG: SDL2 reports desktop display mode 3440 x 1440 +LOG: OpenGL Version : 4.6.0 NVIDIA 610.47 +LOG: Configured windowposition: - +LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888 +LOG: SDL: You are running in 24 bpp mode, this will slow down things! +LOG: Releasing keyboard +LOG: SDL: Windows 11 round corners will be disabled. +LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI) +LOG: ISA BCLK: 8333333.333Hz (25000000/3) +LOG: monopal: green, +LOG: Active save slot: 1 [Empty] +LOG: USING AVI+ZMBV +LOG: Pentium CMPXCHG8B emulation is enabled +LOG: Max 1073741824 sz 32768 +LOG: Final 32768 +LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB +LOG: VPXLOG: fifosock listening on 127.0.0.1:8621 +LOG: VPXLOG: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: Serial1: BASE 3f8h +LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16) +LOG: Serial1: namedpipe connected to \\.\pipe\vrio +LOG: Serial2: BASE 2f8h +LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1) +LOG: Serial2: namedpipe connected to \\.\pipe\vplasma +LOG: Serial3: BASE 3e8h +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Parallel1: BASE 378h +LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h +LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false. +LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true. +LOG: Allocated APM BIOS pm entry point at f000:ce40 +LOG: Writing code to fce40 +LOG: Writing code to fce60 +LOG: Windows: IID_ITaskbarList3 is available +LOG: ISA Plug & Play BIOS enabled +LOG: VGA ROM BIOS init callback +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +LOG: WARNING: No translation support (to host) for code page 0 +LOG: DOS keyboard layout loaded with main language code US for layout us +LOG: XMS: 50 handles allocated for use by the DOS environment +LOG: EMS page frame at 0xe000-0xefff +LOG: COMMAND.COM env size: 720 bytes +LOG: COMMAND.COM environment block: 0x0701 sz=0x002d +LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a +LOG: COMMAND.COM stack: 0x0749 +LOG: pixratio 1.350, dw false, dh false +LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 +LOG: SHELL:Redirect output to COM3 +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 315553612 ERROR MOUSE:Unhandled videomode 79 on reset +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]cd00d703/-1.35098e+08 [44]cb00d809/-8.44391e+06 [48]ffffffff/nan +VPX lights@f121: type6=2 typeE=6 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f241: type6=2 typeE=9 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f361: type6=2 typeE=9 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f481: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f601: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f721: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f841: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) diff --git a/emulator/render-bridge/logs/043-prev.txt b/emulator/render-bridge/logs/043-prev.txt new file mode 100644 index 00000000..7cdc963b --- /dev/null +++ b/emulator/render-bridge/logs/043-prev.txt @@ -0,0 +1,628 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +RIO never came back from test mode! +GaugeInterpreter: undefined label 'Initialization' +[exp] master player experience=2 simLive=1 heatModelOn=1 advDamage=1 +[role] 'Role::Default' lives=1000 killBonus=500 dmgMod=1 +[torso] horizJoint 'jointtorso' -> 0x00bfb27c type=1 enabled=1 +[weap] 'AFC100' seg=13 mount=sitelgunport rear=0 +[proj] 'AFC100' ammoBinIndex=21 -> AmmoBinAFC100 (rounds=20) +[weap] 'ERLLaser' seg=7 mount=siterugunport rear=0 +[weap] 'ERSLaser_1' seg=13 mount=sitelgunport rear=0 +[weap] 'ERSLaser_2' seg=8 mount=siterdgunport rear=0 +[weap] 'LRM15_1' seg=18 mount=sitelmissleport rear=0 +[proj] 'LRM15_1' ammoBinIndex=26 -> AmmoBinLRM15_1 (rounds=16) +[weap] 'LRM15_2' seg=19 mount=sitermissleport rear=0 +[proj] 'LRM15_2' ammoBinIndex=28 -> AmmoBinLRM15_2 (rounds=16) +[mech] segment walk done: subsystemCount=32 weaponCount=6 +[skel] jointSubsystem=0x00bf4450 jointCount=25 +[mech] model params: walkTR=65 runTR=40 maxAcc=20 throttleAdj=0.8 (deg,deg,u/s^2,scale) +[mech] look angles: L=50 R=-50 F=-15 B=0 (deg) +[mech] damage zones streamed: 22 [dz_dtorso,dz_hip,dz_larm,dz_ldleg,dz_ldoor,dz_lfoot,dz_lgun,dz_ltorso,dz_luleg,dz_rarm,dz_rdleg,dz_rdoor,dz_reardtorso,dz_rearltorso,dz_rearrtorso,dz_rearutorso,dz_rfoot,dz_rgun,dz_rtorso,dz_ruleg,dz_searchlight,dz_utorso] +[cyl] table 'madcat' LOADED rows=7 +[valve] 'Condenser1' valve=1 flow=0.166667 +[valve] 'Condenser2' valve=1 flow=0.166667 +[valve] 'Condenser3' valve=1 flow=0.166667 +[valve] 'Condenser4' valve=1 flow=0.166667 +[valve] 'Condenser5' valve=1 flow=0.166667 +[valve] 'Condenser6' valve=1 flow=0.166667 +[mapper] ctor id=0 throttleAttr=0x009b1144 controlModeAttr=0x009b1180 +[gau2] cluster slot=14 classID=3011 auxScreen=5 name=Avionics +[gau2] cluster slot=15 classID=3014 auxScreen=6 name=Myomers +[gau2] cluster slot=22 classID=3021 auxScreen=1 name=AFC100 +[gau2] cluster slot=23 classID=3016 auxScreen=10 name=ERLLaser +[gau2] cluster slot=24 classID=3016 auxScreen=3 name=ERSLaser_1 +[gau2] cluster slot=25 classID=3016 auxScreen=12 name=ERSLaser_2 +[gau2] cluster slot=27 classID=3024 auxScreen=2 name=LRM15_1 +[gau2] cluster slot=29 classID=3024 auxScreen=9 name=LRM15_2 +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_lmissle not found +ColorMapperArmor warning: damage zone dz_rmissle not found +ColorMapperArmor warning: damage zone dz_ftorso not found +ColorMapperArmor warning: damage zone dz_btorso not found +ColorMapperCritical warning: subsystem Torso does not exist +ColorMapperHeat warning: subsystem Torso does not exist +[link] InitializePlayerLink -> vehicle playerLink=0x00acfaf8 +[launch] state=11 minPriorityEmpty=0 ticks=15417 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=416 +[launch] state=11 minPriorityEmpty=0 ticks=16430 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=502 +[launch] state=11 minPriorityEmpty=0 ticks=17441 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=18451 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=19461 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 1 class=3035 view=0 res=0 +[mer] 2 class=42 view=0 res=1 +[mer] 3 class=42 view=0 res=1 +[mer] 4 class=42 view=0 res=1 +[mer] 5 class=42 view=0 res=1 +[mer] 6 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=20545 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 7 class=42 view=0 res=1 +[mer] 8 class=42 view=0 res=1 +[mer] 9 class=42 view=0 res=1 +[mer] 10 class=42 view=0 res=1 +[mer] 11 class=42 view=0 res=1 +[mer] 12 class=42 view=0 res=1 +[mer] 13 class=42 view=0 res=1 +[mer] 14 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=21553 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 15 class=42 view=0 res=1 +[mer] 16 class=42 view=0 res=1 +[mer] 17 class=42 view=0 res=1 +[mer] 18 class=42 view=0 res=1 +[mer] 19 class=42 view=0 res=1 +[mer] 20 class=42 view=0 res=1 +[mer] 21 class=42 view=0 res=1 +[mer] 22 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=22561 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 23 class=42 view=0 res=1 +[mer] 24 class=42 view=0 res=1 +[mer] 25 class=42 view=0 res=1 +[mer] 26 class=42 view=0 res=1 +[mer] 27 class=42 view=0 res=1 +[mer] 28 class=42 view=0 res=1 +[mer] 29 class=42 view=0 res=1 +[mer] 30 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=23569 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 31 class=42 view=0 res=1 +[mer] 32 class=42 view=0 res=1 +[mer] 33 class=42 view=0 res=1 +[mer] 34 class=42 view=0 res=1 +[mer] 35 class=42 view=0 res=1 +[mer] 36 class=42 view=0 res=1 +[mer] 37 class=42 view=0 res=1 +[mer] 38 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=24577 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 39 class=94 view=0 res=1 +[mer] 40 class=42 view=0 res=1 +[mer] 41 class=94 view=0 res=1 +[mer] 42 class=94 view=0 res=1 +[mer] 43 class=94 view=0 res=1 +[mer] 44 class=94 view=0 res=1 +[mer] 45 class=94 view=0 res=1 +[mer] 46 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=25585 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 47 class=94 view=0 res=1 +[mer] 48 class=94 view=0 res=1 +[mer] 49 class=42 view=0 res=1 +[mer] 50 class=42 view=0 res=1 +[mer] 51 class=42 view=0 res=1 +[mer] 52 class=42 view=0 res=1 +[mer] 53 class=42 view=0 res=1 +[mer] 54 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=26591 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 55 class=94 view=0 res=1 +[mer] 56 class=94 view=0 res=1 +[mer] 57 class=94 view=0 res=1 +[mer] 58 class=42 view=0 res=1 +[mer] 59 class=42 view=0 res=1 +[mer] 60 class=42 view=0 res=1 +[mer] 61 class=42 view=0 res=1 +[mer] 62 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=27599 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 63 class=94 view=0 res=1 +[mer] 64 class=94 view=0 res=1 +[mer] 65 class=94 view=0 res=1 +[mer] 66 class=94 view=0 res=1 +[mer] 67 class=94 view=0 res=1 +[mer] 68 class=42 view=0 res=1 +[mer] 69 class=94 view=0 res=1 +[mer] 70 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=28607 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 71 class=94 view=0 res=1 +[mer] 72 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=28867 pump=352/1499 +[mer] 73 class=94 view=0 res=1 +[mer] 74 class=94 view=0 res=1 +[mer] 75 class=94 view=0 res=1 +[mer] 76 class=42 view=0 res=1 +[mer] 77 class=94 view=0 res=1 +[mer] 78 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=29617 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 79 class=94 view=0 res=1 +[mer] 80 class=94 view=0 res=1 +[mer] 81 class=94 view=0 res=1 +[mer] 82 class=94 view=0 res=1 +[mer] 83 class=94 view=0 res=1 +[mer] 84 class=94 view=0 res=1 +[mer] 85 class=42 view=0 res=1 +[mer] 86 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=30625 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 87 class=42 view=0 res=1 +[mer] 88 class=42 view=0 res=1 +[mer] 89 class=42 view=0 res=1 +[mer] 90 class=42 view=0 res=1 +[mer] 91 class=94 view=0 res=1 +[mer] 92 class=94 view=0 res=1 +[mer] 93 class=42 view=0 res=1 +[mer] 94 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=31633 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 95 class=94 view=0 res=1 +[mer] 96 class=94 view=0 res=1 +[mer] 97 class=94 view=0 res=1 +[mer] 98 class=94 view=0 res=1 +[mer] 99 class=42 view=0 res=1 +[mer] 100 class=42 view=0 res=1 +[mer] 101 class=42 view=0 res=1 +[mer] 102 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=32641 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 103 class=42 view=0 res=1 +[mer] 104 class=42 view=0 res=1 +[mer] 105 class=42 view=0 res=1 +[mer] 106 class=42 view=0 res=1 +[mer] 107 class=42 view=0 res=1 +[mer] 108 class=42 view=0 res=1 +[mer] 109 class=42 view=0 res=1 +[mer] 110 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=33649 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 111 class=42 view=0 res=1 +[mer] 112 class=42 view=0 res=1 +[mer] 113 class=42 view=0 res=1 +[mer] 114 class=42 view=0 res=1 +[mer] 115 class=42 view=0 res=1 +[mer] 116 class=42 view=0 res=1 +[mer] 117 class=42 view=0 res=1 +[mer] 118 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=34657 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 119 class=42 view=0 res=1 +[mer] 120 class=94 view=0 res=1 +[mer] 121 class=42 view=0 res=1 +[mer] 122 class=42 view=0 res=1 +[mer] 123 class=42 view=0 res=1 +[mer] 124 class=42 view=0 res=1 +[mer] 125 class=42 view=0 res=1 +[mer] 126 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=35665 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 127 class=42 view=0 res=1 +[mer] 128 class=42 view=0 res=1 +[mer] 129 class=42 view=0 res=1 +[mer] 130 class=42 view=0 res=1 +[mer] 131 class=42 view=0 res=1 +[mer] 132 class=42 view=0 res=1 +[mer] 133 class=42 view=0 res=1 +[mer] 134 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=36673 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 135 class=42 view=0 res=1 +[mer] 136 class=42 view=0 res=1 +[mer] 137 class=42 view=0 res=1 +[mer] 138 class=42 view=0 res=1 +[mer] 139 class=42 view=0 res=1 +[mer] 140 class=42 view=0 res=1 +[mer] 141 class=42 view=0 res=1 +[mer] 142 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=37681 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 143 class=94 view=0 res=1 +[mer] 144 class=94 view=0 res=1 +[mer] 145 class=94 view=0 res=1 +[mer] 146 class=42 view=0 res=1 +[mer] 147 class=94 view=0 res=1 +[mer] 148 class=42 view=0 res=1 +[mer] 149 class=94 view=0 res=1 +[mer] 150 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=38689 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 151 class=94 view=0 res=1 +[mer] 152 class=42 view=0 res=1 +[mer] 153 class=42 view=0 res=1 +[mer] 154 class=42 view=0 res=1 +[mer] 155 class=94 view=0 res=1 +[mer] 156 class=42 view=0 res=1 +[mer] 157 class=42 view=0 res=1 +[mer] 158 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=39699 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 159 class=94 view=0 res=1 +[mer] 160 class=42 view=0 res=1 +[mer] 161 class=42 view=0 res=1 +[mer] 162 class=42 view=0 res=1 +[mer] 163 class=42 view=0 res=1 +[mer] 164 class=94 view=0 res=1 +[mer] 165 class=94 view=0 res=1 +[mer] 166 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=40707 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 167 class=94 view=0 res=1 +[mer] 168 class=42 view=0 res=1 +[mer] 169 class=94 view=0 res=1 +[mer] 170 class=94 view=0 res=1 +[mer] 171 class=42 view=0 res=1 +[mer] 172 class=42 view=0 res=1 +[mer] 173 class=42 view=0 res=1 +[mer] 174 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=41715 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 175 class=42 view=0 res=1 +[mer] 176 class=42 view=0 res=1 +[mer] 177 class=94 view=0 res=1 +[mer] 178 class=94 view=0 res=1 +[mer] 179 class=94 view=0 res=1 +[mer] 180 class=42 view=0 res=1 +[mer] 181 class=42 view=0 res=1 +[mer] 182 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=42723 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 183 class=94 view=0 res=1 +[mer] 184 class=94 view=0 res=1 +[mer] 185 class=42 view=0 res=1 +[mer] 186 class=94 view=0 res=1 +[mer] 187 class=94 view=0 res=1 +[mer] 188 class=94 view=0 res=1 +[mer] 189 class=42 view=0 res=1 +[mer] 190 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=43731 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 191 class=94 view=0 res=1 +[mer] 192 class=94 view=0 res=1 +[mer] 193 class=42 view=0 res=1 +[mer] 194 class=42 view=0 res=1 +[mer] 195 class=42 view=0 res=1 +[mer] 196 class=42 view=0 res=1 +[mer] 197 class=94 view=0 res=1 +[mer] 198 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=44739 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 199 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=44887 pump=495/2643 +[mer] 200 class=94 view=0 res=1 +[mer] 201 class=94 view=0 res=1 +[mer] 202 class=94 view=0 res=1 +[mer] 203 class=94 view=0 res=1 +[mer] 204 class=42 view=0 res=1 +[mer] 205 class=94 view=0 res=1 +[mer] 206 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=45748 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 207 class=48 view=0 res=0 +[mer] 208 class=3001 view=1 res=1 + [vid] type=1 file='mad.skl' +[skl] video\mad.skl -> 26 nodes, 19 objects +[launch] state=2 minPriorityEmpty=0 ticks=46754 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=47757 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=48868 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=49981 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=51092 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=52203 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=53316 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=54427 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=55537 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=56652 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=57762 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=58873 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=59985 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[stack] frame at 0x12dee7 drift=0 over 3003 frames ticks=60797 pump=638/3787 +[launch] state=2 minPriorityEmpty=0 ticks=61097 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=62207 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=63319 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=64430 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=65540 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=66652 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=67763 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=68873 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=69986 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=71097 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 209 class=48 view=0 res=0 +[mer] 210 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=72209 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 211 class=48 view=0 res=0 +[mer] 212 class=48 view=0 res=0 +[mer] 213 class=48 view=0 res=0 +[mer] 214 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=73213 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 215 class=48 view=0 res=0 +[mer] 216 class=48 view=0 res=0 +[mer] 217 class=94 view=0 res=1 +[mer] 218 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=74221 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 219 class=94 view=0 res=1 +[mer] 220 class=94 view=0 res=1 +[mer] 221 class=94 view=0 res=1 +[mer] 222 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=75229 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 223 class=94 view=0 res=1 +[mer] 224 class=94 view=0 res=1 +[mer] 225 class=94 view=0 res=1 +[mer] 226 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=76233 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 227 class=94 view=0 res=1 +[mer] 228 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 4004 frames ticks=76715 pump=781/4931 +[mer] 229 class=94 view=0 res=1 +[mer] 230 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=77239 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 231 class=94 view=0 res=1 +[mer] 232 class=94 view=0 res=1 +[mer] 233 class=94 view=0 res=1 +[mer] 234 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=78244 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 235 class=94 view=0 res=1 +[mer] 236 class=94 view=0 res=1 +[mer] 237 class=94 view=0 res=1 +[mer] 238 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=79249 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 239 class=94 view=0 res=1 +[mer] 240 class=94 view=0 res=1 +[mer] 241 class=94 view=0 res=1 +[mer] 242 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=80253 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 243 class=94 view=0 res=1 +[mer] 244 class=94 view=0 res=1 +[mer] 245 class=94 view=0 res=1 +[mer] 246 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=81257 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 247 class=94 view=0 res=1 +MapDisplay: operating=1 static=4 moving=0 +[mer] 248 class=94 view=0 res=1 +[mer] 249 class=94 view=0 res=1 +[mer] 250 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=82262 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 251 class=94 view=0 res=1 +[mer] 252 class=94 view=0 res=1 +[mer] 253 class=94 view=0 res=1 +[mer] 254 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=83266 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 255 class=94 view=0 res=1 +[mer] 256 class=94 view=0 res=1 +[mer] 257 class=94 view=0 res=1 +[mer] 258 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=84270 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 259 class=94 view=0 res=1 +[mer] 260 class=94 view=0 res=1 +[mer] 261 class=94 view=0 res=1 +[mer] 262 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=85274 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 263 class=48 view=0 res=0 +[mer] 264 class=48 view=0 res=0 +[mer] 265 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=1 ticks=86277 +[queues] p0=- p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +[tick] roster live (first Sensor frame), radarPercent=1 voltState=4 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 1 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-130.068,0,253.875) yaw=0.0739806 spd=14.4 eyePitch=0 eyeYaw=0 +[fire] 'ERSLaser_1' LOADED (level=7957.71 T=76.8845) +[fire] 'ERSLaser_2' LOADED (level=7940.83 T=76.8449) +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 2 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-131.632,0,239.491) yaw=0.141585 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 3 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-134.174,0,225.203) yaw=0.209391 spd=14.4 eyePitch=0 eyeYaw=0 +[stack] frame at 0x12dee7 drift=0 over 5005 frames ticks=92813 pump=867/6075 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 4 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-137.67,0,211.147) yaw=0.277063 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 5 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-142.104,0,197.374) yaw=0.344668 spd=14.4 eyePitch=0 eyeYaw=0 +[fire] 'ERLLaser' LOADED (level=7926.59 T=76.0947) +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 6 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-147.464,0,183.919) yaw=0.41234 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 7 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-153.721,0,170.857) yaw=0.480012 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 8 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-160.84,0,158.26) yaw=0.547617 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 9 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-168.802,0,146.161) yaw=0.615289 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 10 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-177.564,0,134.628) yaw=0.682961 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 11 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-187.085,0,123.714) yaw=0.750634 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 12 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-197.312,0,113.479) yaw=0.818238 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-208.207,0,103.957) yaw=0.885843 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-219.721,0,95.1941) yaw=0.953449 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-231.8,0,87.2286) yaw=1.02105 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-244.403,0,80.0906) yaw=1.08873 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-257.446,0,73.8269) yaw=1.15633 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-270.883,0,68.4587) yaw=1.22394 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-284.651,0,64.0104) yaw=1.29154 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-298.731,0,60.4934) yaw=1.35935 spd=14.4 eyePitch=0 eyeYaw=0 +[stack] frame at 0x12dee7 drift=0 over 6006 frames ticks=109591 pump=867/7219 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-312.989,0,57.9425) yaw=1.42703 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-327.371,0,56.3627) yaw=1.49464 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-341.842,0,55.758) yaw=1.5708 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-356.321,0,56.1332) yaw=1.51162 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-370.741,0,57.4867) yaw=1.44395 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-385.009,0,59.8065) yaw=1.37641 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-399.087,0,63.084) yaw=1.30887 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-412.912,0,67.3041) yaw=1.24133 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-426.421,0,72.4476) yaw=1.17379 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-439.552,0,78.491) yaw=1.10625 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-452.232,0,85.3996) yaw=1.03878 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-464.419,0,93.1473) yaw=0.971302 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-476.066,0,101.708) yaw=0.903761 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-487.109,0,111.035) yaw=0.83622 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-497.497,0,121.087) yaw=0.768677 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-507.183,0,131.816) yaw=0.701135 spd=14.4 eyePitch=0 eyeYaw=0 +[stack] frame at 0x12dee7 drift=0 over 7007 frames ticks=126346 pump=867/8363 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-516.132,0,143.186) yaw=0.633524 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-524.291,0,155.135) yaw=0.565913 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-531.612,0,167.583) yaw=0.498435 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-538.082,0,180.509) yaw=0.43089 spd=14.4 eyePitch=0 eyeYaw=0 diff --git a/emulator/render-bridge/pod_render_norio.conf b/emulator/render-bridge/pod_render_norio.conf index beb1e87c..cba54482 100644 --- a/emulator/render-bridge/pod_render_norio.conf +++ b/emulator/render-bridge/pod_render_norio.conf @@ -65,6 +65,7 @@ set TEMP=c:\ rem arena1 city mission (TESTARN.EGG: map=arena1, time=day) with the RIO rem attached; stdout redirected so mission-load progress survives kills. set BT_MECH_LOG=1 +set BT_MAP_LOG=1 set BT_MER_LOG=1 set BT_VID_LOG=1 set BT_LAUNCH_LOG=1 diff --git a/emulator/render-bridge/pod_render_tm.conf b/emulator/render-bridge/pod_render_tm.conf index c1aeeab7..0a823a7e 100644 --- a/emulator/render-bridge/pod_render_tm.conf +++ b/emulator/render-bridge/pod_render_tm.conf @@ -71,6 +71,9 @@ set BT_FORCE_THROTTLE=0.6 set BT_FORCE_TURN=0.25 set HEAPSIZE=15000000 set L4GAUGE=640x480x16 +set BT_MAP_LOG=1 +set BT_SKEL_DUMP=1 +set BT_MECH_LOG=1 call setenv.bat t s n p 32rtm.exe -x BTL4REC.EXE -egg testarn.egg > COM3 diff --git a/emulator/render-bridge/podlog.txt b/emulator/render-bridge/podlog.txt index 1ba3e2e6..b757937e 100644 --- a/emulator/render-bridge/podlog.txt +++ b/emulator/render-bridge/podlog.txt @@ -1,26 +1,529 @@ BattleTech v4.10 BTL4Application::BTL4Application GaugeInterpreter: undefined label 'Initialization' +[exp] master player experience=2 simLive=1 heatModelOn=1 advDamage=1 +[role] 'Role::Default' lives=1000 killBonus=500 dmgMod=1 +[torso] horizJoint 'jointtorso' -> 0x00be7968 type=1 enabled=1 +[weap] 'AFC100' seg=13 mount=sitelgunport rear=0 +[proj] 'AFC100' ammoBinIndex=21 -> AmmoBinAFC100 (rounds=20) +[weap] 'ERLLaser' seg=7 mount=siterugunport rear=0 +[weap] 'ERSLaser_1' seg=13 mount=sitelgunport rear=0 +[weap] 'ERSLaser_2' seg=8 mount=siterdgunport rear=0 +[weap] 'LRM15_1' seg=18 mount=sitelmissleport rear=0 +[proj] 'LRM15_1' ammoBinIndex=26 -> AmmoBinLRM15_1 (rounds=16) +[weap] 'LRM15_2' seg=19 mount=sitermissleport rear=0 +[proj] 'LRM15_2' ammoBinIndex=28 -> AmmoBinLRM15_2 (rounds=16) +[mech] segment walk done: subsystemCount=32 weaponCount=6 +[skel] jointSubsystem=0x00bf4450 jointCount=25 +[mech] model params: walkTR=65 runTR=40 maxAcc=20 throttleAdj=0.8 (deg,deg,u/s^2,scale) +[mech] look angles: L=50 R=-50 F=-15 B=0 (deg) +[mech] damage zones streamed: 22 [dz_dtorso,dz_hip,dz_larm,dz_ldleg,dz_ldoor,dz_lfoot,dz_lgun,dz_ltorso,dz_luleg,dz_rarm,dz_rdleg,dz_rdoor,dz_reardtorso,dz_rearltorso,dz_rearrtorso,dz_rearutorso,dz_rfoot,dz_rgun,dz_rtorso,dz_ruleg,dz_searchlight,dz_utorso] +[cyl] table 'madcat' LOADED rows=7 +[valve] 'Condenser1' valve=1 flow=0.166667 +[valve] 'Condenser2' valve=1 flow=0.166667 +[valve] 'Condenser3' valve=1 flow=0.166667 +[valve] 'Condenser4' valve=1 flow=0.166667 +[valve] 'Condenser5' valve=1 flow=0.166667 +[valve] 'Condenser6' valve=1 flow=0.166667 +[mapper] ctor id=0 throttleAttr=0x009b2ef0 controlModeAttr=0x009b2f2c +[gau2] cluster slot=14 classID=3011 auxScreen=5 name=Avionics +[gau2] cluster slot=15 classID=3014 auxScreen=6 name=Myomers +[gau2] cluster slot=22 classID=3021 auxScreen=1 name=AFC100 +[gau2] cluster slot=23 classID=3016 auxScreen=10 name=ERLLaser +[gau2] cluster slot=24 classID=3016 auxScreen=3 name=ERSLaser_1 +[gau2] cluster slot=25 classID=3016 auxScreen=12 name=ERSLaser_2 +[gau2] cluster slot=27 classID=3024 auxScreen=2 name=LRM15_1 +[gau2] cluster slot=29 classID=3024 auxScreen=9 name=LRM15_2 ColorMapperArmor warning: damage zone dz_missle not found ColorMapperArmor warning: damage zone dz_missle not found ColorMapperArmor warning: damage zone dz_lmissle not found ColorMapperArmor warning: damage zone dz_rmissle not found ColorMapperArmor warning: damage zone dz_ftorso not found ColorMapperArmor warning: damage zone dz_btorso not found - -32loader runtime error: Unhandled exception - - Exception 0E at 00FF:00485E1A error code 00000006 - - CS=00FF DS=0107 ES=0107 SS=0107 FS=011F GS=0000 - EAX=00000000 EBX=009CFDE0 ECX=0012DDC8 EDX=00000044 - EBP=0012DDAC ESP=0012DDAC EDI=0012DE3C ESI=00050421 - - The invalid instruction was executed at 00485E1A - -Module 'C:\REL410\BT\BTL4REC.EXE' section 'CODE' offset 00075E1A - -[00485E12]: 8B 40 1C 8B 55 0C 8B 12 - 89 10 5D C3 55 8B EC 53 - - The instruction referenced illegal address 00000000 - +ColorMapperCritical warning: subsystem Torso does not exist +ColorMapperHeat warning: subsystem Torso does not exist +[link] InitializePlayerLink -> vehicle playerLink=0x00acfaf8 +[launch] state=11 minPriorityEmpty=0 ticks=10842 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=416 +[launch] state=11 minPriorityEmpty=0 ticks=11854 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=502 +[launch] state=11 minPriorityEmpty=0 ticks=12864 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=13873 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=14882 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 1 class=3035 view=0 res=0 +[mer] 2 class=42 view=0 res=1 +[mer] 3 class=42 view=0 res=1 +[mer] 4 class=42 view=0 res=1 +[mer] 5 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=15887 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 6 class=42 view=0 res=1 +[mer] 7 class=42 view=0 res=1 +[mer] 8 class=42 view=0 res=1 +[mer] 9 class=42 view=0 res=1 +[mer] 10 class=42 view=0 res=1 +[mer] 11 class=42 view=0 res=1 +[mer] 12 class=42 view=0 res=1 +[mer] 13 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=16949 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 14 class=42 view=0 res=1 +[mer] 15 class=42 view=0 res=1 +[mer] 16 class=42 view=0 res=1 +[mer] 17 class=42 view=0 res=1 +[mer] 18 class=42 view=0 res=1 +[mer] 19 class=42 view=0 res=1 +[mer] 20 class=42 view=0 res=1 +[mer] 21 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=18011 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 22 class=42 view=0 res=1 +[mer] 23 class=42 view=0 res=1 +[mer] 24 class=42 view=0 res=1 +[mer] 25 class=42 view=0 res=1 +[mer] 26 class=42 view=0 res=1 +[mer] 27 class=42 view=0 res=1 +[mer] 28 class=42 view=0 res=1 +[mer] 29 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=19021 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 30 class=42 view=0 res=1 +[mer] 31 class=42 view=0 res=1 +[mer] 32 class=42 view=0 res=1 +[mer] 33 class=42 view=0 res=1 +[mer] 34 class=42 view=0 res=1 +[mer] 35 class=42 view=0 res=1 +[mer] 36 class=42 view=0 res=1 +[mer] 37 class=42 view=0 res=1 +[mer] 38 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=20130 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 39 class=94 view=0 res=1 +[mer] 40 class=42 view=0 res=1 +[mer] 41 class=94 view=0 res=1 +[mer] 42 class=94 view=0 res=1 +[mer] 43 class=94 view=0 res=1 +[mer] 44 class=94 view=0 res=1 +[mer] 45 class=94 view=0 res=1 +[mer] 46 class=94 view=0 res=1 +[mer] 47 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=21239 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 48 class=94 view=0 res=1 +[mer] 49 class=42 view=0 res=1 +[mer] 50 class=42 view=0 res=1 +[mer] 51 class=42 view=0 res=1 +[mer] 52 class=42 view=0 res=1 +[mer] 53 class=42 view=0 res=1 +[mer] 54 class=94 view=0 res=1 +[mer] 55 class=94 view=0 res=1 +[mer] 56 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=22350 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 57 class=94 view=0 res=1 +[mer] 58 class=42 view=0 res=1 +[mer] 59 class=42 view=0 res=1 +[mer] 60 class=42 view=0 res=1 +[mer] 61 class=42 view=0 res=1 +[mer] 62 class=94 view=0 res=1 +[mer] 63 class=94 view=0 res=1 +[mer] 64 class=94 view=0 res=1 +[mer] 65 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=23459 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 66 class=94 view=0 res=1 +[mer] 67 class=94 view=0 res=1 +[mer] 68 class=42 view=0 res=1 +[mer] 69 class=94 view=0 res=1 +[mer] 70 class=94 view=0 res=1 +[mer] 71 class=94 view=0 res=1 +[mer] 72 class=94 view=0 res=1 +[mer] 73 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24380 pump=352/1499 +[mer] 74 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=24569 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 75 class=94 view=0 res=1 +[mer] 76 class=42 view=0 res=1 +[mer] 77 class=94 view=0 res=1 +[mer] 78 class=42 view=0 res=1 +[mer] 79 class=94 view=0 res=1 +[mer] 80 class=94 view=0 res=1 +[mer] 81 class=94 view=0 res=1 +[mer] 82 class=94 view=0 res=1 +[mer] 83 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=25680 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 84 class=94 view=0 res=1 +[mer] 85 class=42 view=0 res=1 +[mer] 86 class=94 view=0 res=1 +[mer] 87 class=42 view=0 res=1 +[mer] 88 class=42 view=0 res=1 +[mer] 89 class=42 view=0 res=1 +[mer] 90 class=42 view=0 res=1 +[mer] 91 class=94 view=0 res=1 +[mer] 92 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=26789 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 93 class=42 view=0 res=1 +[mer] 94 class=94 view=0 res=1 +[mer] 95 class=94 view=0 res=1 +[mer] 96 class=94 view=0 res=1 +[mer] 97 class=94 view=0 res=1 +[mer] 98 class=94 view=0 res=1 +[mer] 99 class=42 view=0 res=1 +[mer] 100 class=42 view=0 res=1 +[mer] 101 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=27898 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 102 class=94 view=0 res=1 +[mer] 103 class=42 view=0 res=1 +[mer] 104 class=42 view=0 res=1 +[mer] 105 class=42 view=0 res=1 +[mer] 106 class=42 view=0 res=1 +[mer] 107 class=42 view=0 res=1 +[mer] 108 class=42 view=0 res=1 +[mer] 109 class=42 view=0 res=1 +[mer] 110 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=29009 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 111 class=42 view=0 res=1 +[mer] 112 class=42 view=0 res=1 +[mer] 113 class=42 view=0 res=1 +[mer] 114 class=42 view=0 res=1 +[mer] 115 class=42 view=0 res=1 +[mer] 116 class=42 view=0 res=1 +[mer] 117 class=42 view=0 res=1 +[mer] 118 class=42 view=0 res=1 +[mer] 119 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=30118 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 120 class=94 view=0 res=1 +[mer] 121 class=42 view=0 res=1 +[mer] 122 class=42 view=0 res=1 +[mer] 123 class=42 view=0 res=1 +[mer] 124 class=42 view=0 res=1 +[mer] 125 class=42 view=0 res=1 +[mer] 126 class=42 view=0 res=1 +[mer] 127 class=42 view=0 res=1 +[mer] 128 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=31227 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 129 class=42 view=0 res=1 +[mer] 130 class=42 view=0 res=1 +[mer] 131 class=42 view=0 res=1 +[mer] 132 class=42 view=0 res=1 +[mer] 133 class=42 view=0 res=1 +[mer] 134 class=42 view=0 res=1 +[mer] 135 class=42 view=0 res=1 +[mer] 136 class=42 view=0 res=1 +[mer] 137 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=32338 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 138 class=42 view=0 res=1 +[mer] 139 class=42 view=0 res=1 +[mer] 140 class=42 view=0 res=1 +[mer] 141 class=42 view=0 res=1 +[mer] 142 class=42 view=0 res=1 +[mer] 143 class=94 view=0 res=1 +[mer] 144 class=94 view=0 res=1 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =2214 +[mer] 145 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=33342 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 146 class=42 view=0 res=1 +[mer] 147 class=94 view=0 res=1 +[mer] 148 class=42 view=0 res=1 +[mer] 149 class=94 view=0 res=1 +[mer] 150 class=94 view=0 res=1 +[mer] 151 class=94 view=0 res=1 +[mer] 152 class=42 view=0 res=1 +[mer] 153 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=34364 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 154 class=42 view=0 res=1 +[mer] 155 class=94 view=0 res=1 +[mer] 156 class=42 view=0 res=1 +[mer] 157 class=42 view=0 res=1 +[mer] 158 class=94 view=0 res=1 +[mer] 159 class=94 view=0 res=1 +[mer] 160 class=42 view=0 res=1 +[mer] 161 class=42 view=0 res=1 +[mer] 162 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=35473 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 163 class=42 view=0 res=1 +[mer] 164 class=94 view=0 res=1 +[mer] 165 class=94 view=0 res=1 +[mer] 166 class=42 view=0 res=1 +[mer] 167 class=94 view=0 res=1 +[mer] 168 class=42 view=0 res=1 +[mer] 169 class=94 view=0 res=1 +[mer] 170 class=94 view=0 res=1 +[mer] 171 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=36582 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 172 class=42 view=0 res=1 +[mer] 173 class=42 view=0 res=1 +[mer] 174 class=94 view=0 res=1 +[mer] 175 class=42 view=0 res=1 +[mer] 176 class=42 view=0 res=1 +[mer] 177 class=94 view=0 res=1 +[mer] 178 class=94 view=0 res=1 +[mer] 179 class=94 view=0 res=1 +[mer] 180 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=37693 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 181 class=42 view=0 res=1 +[mer] 182 class=42 view=0 res=1 +[mer] 183 class=94 view=0 res=1 +[mer] 184 class=94 view=0 res=1 +[mer] 185 class=42 view=0 res=1 +[mer] 186 class=94 view=0 res=1 +[mer] 187 class=94 view=0 res=1 +[mer] 188 class=94 view=0 res=1 +[mer] 189 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=38802 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 190 class=42 view=0 res=1 +[mer] 191 class=94 view=0 res=1 +[mer] 192 class=94 view=0 res=1 +[mer] 193 class=42 view=0 res=1 +[mer] 194 class=42 view=0 res=1 +[mer] 195 class=42 view=0 res=1 +[mer] 196 class=42 view=0 res=1 +[mer] 197 class=94 view=0 res=1 +[mer] 198 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=39911 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 199 class=94 view=0 res=1 +[mer] 200 class=94 view=0 res=1 +[mer] 201 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=40280 pump=495/2643 +[mer] 202 class=94 view=0 res=1 +[mer] 203 class=94 view=0 res=1 +[mer] 204 class=42 view=0 res=1 +[mer] 205 class=94 view=0 res=1 +[mer] 206 class=94 view=0 res=1 +[mer] 207 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=41023 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 208 class=3001 view=1 res=1 + [vid] type=1 file='mad.skl' +[skl] video\mad.skl -> 26 nodes, 19 objects +[launch] state=2 minPriorityEmpty=0 ticks=42132 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=43241 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=44352 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=45461 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=46570 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=47681 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=48790 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =2366 +[launch] state=2 minPriorityEmpty=0 ticks=49900 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=51011 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=52122 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=53231 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=54342 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=55451 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[stack] frame at 0x12dee7 drift=0 over 3003 frames ticks=56152 pump=638/3787 +[launch] state=2 minPriorityEmpty=0 ticks=56561 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=57672 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=58781 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=59890 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=61001 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=62110 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=63219 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =2370 +[launch] state=2 minPriorityEmpty=0 ticks=64331 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=65440 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=66549 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 209 class=48 view=0 res=0 +[mer] 210 class=48 view=0 res=0 +[mer] 211 class=48 view=0 res=0 +[mer] 212 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=67660 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 213 class=48 view=0 res=0 +[mer] 214 class=48 view=0 res=0 +[mer] 215 class=48 view=0 res=0 +[mer] 216 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=68769 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 217 class=94 view=0 res=1 +[mer] 218 class=94 view=0 res=1 +[mer] 219 class=94 view=0 res=1 +[mer] 220 class=94 view=0 res=1 +[mer] 221 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=69880 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 222 class=94 view=0 res=1 +[mer] 223 class=94 view=0 res=1 +[mer] 224 class=94 view=0 res=1 +[mer] 225 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=70991 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 226 class=94 view=0 res=1 +[mer] 227 class=94 view=0 res=1 +[mer] 228 class=94 view=0 res=1 +[mer] 229 class=94 view=0 res=1 +[mer] 230 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 4004 frames ticks=72022 pump=781/4931 +[launch] state=2 minPriorityEmpty=0 ticks=72101 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 231 class=94 view=0 res=1 +[mer] 232 class=94 view=0 res=1 +[mer] 233 class=94 view=0 res=1 +[mer] 234 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=73210 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 235 class=94 view=0 res=1 +[mer] 236 class=94 view=0 res=1 +[mer] 237 class=94 view=0 res=1 +[mer] 238 class=94 view=0 res=1 +[mer] 239 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=74321 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 240 class=94 view=0 res=1 +[mer] 241 class=94 view=0 res=1 +[mer] 242 class=94 view=0 res=1 +[mer] 243 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=75430 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 244 class=94 view=0 res=1 +[mer] 245 class=94 view=0 res=1 +[mer] 246 class=94 view=0 res=1 +[mer] 247 class=94 view=0 res=1 +[mer] 248 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=76539 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 249 class=94 view=0 res=1 +MapDisplay: operating=1 static=6 moving=0 +[mer] 250 class=94 view=0 res=1 +[mer] 251 class=94 view=0 res=1 +[mer] 252 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=77650 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 253 class=94 view=0 res=1 +[mer] 254 class=94 view=0 res=1 +[mer] 255 class=94 view=0 res=1 +[mer] 256 class=94 view=0 res=1 +[mer] 257 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=78759 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 258 class=94 view=0 res=1 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =2373 +[mer] 259 class=94 view=0 res=1 +[mer] 260 class=94 view=0 res=1 +[mer] 261 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=79869 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 262 class=48 view=0 res=0 +[mer] 263 class=48 view=0 res=0 +[mer] 264 class=48 view=0 res=0 +[mer] 265 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=1 ticks=80980 +[queues] p0=- p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +[tick] roster live (first Sensor frame), radarPercent=1 voltState=4 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[euler] 1 this=0x12dbbc matrix=0x12db70 stack=0x12db5b +[sim] pos=(-631.704,0,-244.183) yaw=-1.49721 spd=14.4 eyePitch=0 eyeYaw=0 +[fire] 'ERSLaser_1' LOADED (level=7941.22 T=76.8855) diff --git a/restoration/source410/BT/DAMAGE-MODEL.md b/restoration/source410/BT/DAMAGE-MODEL.md new file mode 100644 index 00000000..b5b71d51 --- /dev/null +++ b/restoration/source410/BT/DAMAGE-MODEL.md @@ -0,0 +1,197 @@ +# BT 4.10 — the damage model, end to end + +How a shot becomes lost armor, dead equipment, and a mech kill. Synthesized +from the surviving 1995 engine source (`CODE/RP/MUNGA/`), the reconstructed +BT-side TUs (`restoration/source410/BT/`), and the BT411 binary reversal. +Per-TU depth lives in the sibling `*.NOTES.md` files; this doc is the +cross-cutting flow. + +``` +weapon fire ──► Damage record ──► TakeDamageMessage ──► victim handler + │ (unaimed? cylinder table) + ▼ + damageZones[zone]->TakeDamage + │ + armor economy: level += amount × scale[type] + │ + ┌──────────────────┬────────────────────────┤ + ▼ ▼ ▼ + level ≥ 1.0 Energy special level < 1.0 + zone destroyed (generator short) (leg ≥ 0.5 → limp) + │ + ┌──────────┼──────────────┐ + ▼ ▼ ▼ + VITAL LEG other zone + mech kill mech down SendSubsystemDamage (crit allotments → equipment) + + RecurseSegmentTable (SIBS / DESCEND) +``` + +## 1. The Damage record (engine: `MUNGA/DAMAGE.HPP`) + +Every hit travels as one `Damage` struct: + +| field | meaning | +|---|---| +| `damageType` | 0 Collision · 1 Ballistic · 2 Explosive · 3 Laser · 4 Energy | +| `damageAmount` | points (the only field in the armor formula) | +| `damageForce` | impulse vector (physics/feel, not armor) | +| `surfaceNormal`, `impactPoint` | world-space impact geometry | +| `burstCount` | "times to apply" — **NOT in the armor formula**; one message = one application. Feeds splash falloff and the gyro bounce only. | + +## 2. Producers — where Damage records are born + +**Beam weapons** (`EMITTER.CPP`, PPC/lasers): instant-hit at the owner's +current target when `rangeToTarget <= effectiveRange`. The discharge energy +splits by the authored ratio `damageFraction = dmg/(dmg+heat)`; the delivered +amount scales with charge: `damagePortion = authored × chargeRatio²` (an +undercharged PPC hits soft). The heat portion goes into the FIRER's own heat +sinks. Delivery = `MechWeapon::SendDamage`. + +**Ballistic / missile weapons** (`PROJWEAP.CPP`, `MISLANCH.CPP`, +`MISSILE.CPP`): the weapon FSM's Loaded case pulls ammo (`FeedAmmo`), checks +jam, then `FireWeapon` spawns ONE cluster `Missile` entity per salvo +(salvo-split `damageAmount`, `burstCount` = missile count). The round flies +guided (seeker + thruster); the proximity fuse delivers the whole record +once, `impactPoint` = the round's world position, zone = −1 (unaimed). + +**Explosions / splash** (`MUNGA/EXPLODE.CPP`): a boxed splash volume gathers +movers + cultural objects sorted by distance; each target gets +`burstCount = original / r^1.2` (min 1), force along the radius vector, +zone = −1. + +**Collisions** (`MUNGA/MOVER.CPP` `ProcessCollisionList`): type Collision, +amount computed by the bounce resolver (`StaticBounce` from velocity, +elasticity, friction), impact point from the collision slice. Multiple +same-frame collisions are averaged, damage summed. + +## 3. Delivery — `Entity::TakeDamageMessage` (`ENTITY3.HPP`) + +Fields: `inflictingEntity`, `damageZone` (+`invalidDamageZone` = zone < 0), +`damageData`, `inflictingSubsystemID` (so the BT message manager can bundle +explosion resource IDs). Dispatched AT the victim entity. + +The authored contract (ENTITY3.HPP warning): **only reticle-based (aimed) +weapons carry a valid zone**. Everything else — missiles, splash, rams — +arrives zone = −1 and must be resolved by the victim. + +The attacker also posts a `ScoreInflicted` message to its own player per +delivered hit (the damage score). + +## 4. Victim routing — `Mech::TakeDamageMessageHandler` (`MECH.CPP`) + +Binary hub @004a0230, in order: + +1. Feed the RAW record to the gyro (cockpit bounce — even an invalid-zone + hit shakes the pilot). *(staged: feel wave)* +2. Latch `lastInflictingID` — keys the LOD damage-clustering below. +3. **Unaimed resolve**: if `invalidDamageZone`, map `impactPoint` through the + cylinder hit-location table (`DMGTABLE.CPP`, type-29 resource, cached + mech+0x444): world → mech-local; local height picks a ROW (feet rows are + chassis-fixed, upper rows add the LIVE torso twist to the impact angle); + `atan2(z,x)` picks the angular CELL; a uniform roll walks the cell's + cumulative distribution (the BattleTech dice scatter) → hull zone. +4. Chain to `Entity::TakeDamageMessageHandler`: zone −1 is DROPPED (base + contract), otherwise `damageZones[zone]->TakeDamage(damageData)`. + +## 5. The hull zone — `Mech__DamageZone::TakeDamage` (`MECHDMG.CPP`) + +**Artifact (LOD) zones** — a zone with a non-empty redirect table is a +low-LOD hull shell: it never takes damage itself, it routes to a real child +zone. Same-attacker clustering: within 0.25 s the SAME child is hit again; +past 10 s re-roll; in between, 33 % reuse. The artifact's displayed level = +mean of its children. + +**Real zones — the armor economy**: + + damageLevel += damageAmount × damageScale[damageType] clamp [0,1] + +Authoring streams armor POINTS per type; the ctor normalizes +`scale[type] = 1/(points[type] × armorPoints)`, so 1.0 = the zone's full +point budget spent. **Leg zones halve every scale** (legs effectively carry +double points). 1.0 → BurningState + DestroyedGraphicState. + +**Per-hit specials**: an Energy hit on a zone with critical subsystems rolls +ONE of them; if the pick is a Generator it is force-shorted (screens +flicker, weapons drop dead until recovery; novice cockpits exempt). + +**State outcomes** by the new level: + +| condition | result | +|---|---| +| VITAL zone hits 1.0 | mech kill (`statusAlarm` 9) | +| leg zone hits 1.0 | fall → mech kill | +| leg zone ≥ 0.5 | limp gait graphic (left 3 / right 4) | +| non-leg, non-vital hits 1.0 | destruction descent (below) | + +## 6. Criticals and equipment — `MECHDMG.CPP` + `MECHSUB.CPP` + +Each hull zone streams a critical table: `{weight, damagePercentage +allotment, roster subsystem index}` per entry (plug binding is +master-authoritative — replicants never bind). + +Every subsystem owns a PRIVATE `DamageZone` (index 0, not in the hull +array) with its own points + per-type scales (`structureReference` + +`armorByFacing[5]`, same normalization rule). That's what makes criticals +measurable. + +- **`CriticalHit`** (aimed/critical fire; not yet on the weapon path — + reticle wave): HALF the damage (cap 1.0) is carved off as the critical + bite, applied to ONE weight-rolled crit subsystem via + `ApplyDamageAndMeasure`, charged against that entry's allotment; the + remainder runs the normal zone armor model. +- **Zone death → `SendSubsystemDamage`**: pins the zone at 1.0 and pushes + each entry's UNUSED allotment into its subsystem's private zone. A + subsystem at 1.0 → `ForceCriticalFailure`: alarm level 1 (Destroyed), + `SetSimulationState(DestroyedState)` — the hard gate every weapon FSM + polls, so destroyed weapons fall silent; a VITAL subsystem kills the mech. + Repeat hits on a dead zone re-run the push (binary-authentic) — contained + equipment keeps degrading under continued fire. + +## 7. The destruction cascade — `RecurseSegmentTable` + +A destroyed zone walks the skeleton by its streamed flags: + +- **SIBS** (`destroySiblingsOnDestruction`): destroy the other zones on the + same segment. +- **DESCEND** (`descendOnDestruction`): destroy every zone on the child + segments, recursing. + +Fight-verified chain: arm zone dies → SIBS kills the searchlight zone (its +Searchlight/ThermalSight crits destroyed) → DESCEND kills the gun zone → +PPC_2 + ERMLaser_2 + Condenser6 destroyed and STOP FIRING, while the +untouched PPC_1 keeps shooting. + +## 8. Data authoring (the resource chain) + +- **Type-20 DamageZoneStream** (per mech): zone count, then per zone the + engine record (name, 5 effect-site segment lists, `defaultArmorPoints`, + `damageScale[5]`, material lists) + the BT tail (descend/sibs flags, + `segmentIndex`, leftLeg/rightLeg/vital, crit table, LOD redirect table). + Authored in `.dmg` notation files: `WeaponDamagePoints` default with + `Collision/Ballistic/Explosive/Laser/EnergyDamagePoints` overrides + (stored as 1/points). +- **Type-29 DamageLookupTableStream**: the cylinder table (rows × + angular cells × cumulative zone distributions; 18 tables shipped). +- **Weapon subsystem resources**: `damageAmount`, `damageType`, + `heatCostToFire`, range, recharge. +- Reference magnitudes (bhk1): legs 70 pts, upper torso 124, searchlights + 25; PPC ~12 (Energy), ER-M laser 3.43 (Laser), SRM 5.83 × 6 (Explosive). + +## 9. Replication and respawn + +- Criticals resolve on the MASTER instance only; `DamageZone` state + replicates via update records (`damageLevel`, zone state, graphic state, + changed flags). `SubsystemMessageManager` consolidates per-frame damage + and bundles explosion resources (not yet reconstructed). +- `Mech::Reset` (respawn) heals every hull zone and DeathResets the roster, + but crit `damagePercentageUsed` PERSISTS across lives — spent crit + budgets stay spent (binary-authentic). + +## 10. Known deltas from the 1995 binary (staged) + +- Aimed fire: beam `SendDamage` currently rolls a uniform random hull zone; + authentic = the reticle hit. `CriticalHit` is unwired for the same reason. +- Cylinder height = 10.0 constant (binary reads the collision cylinder). +- Leg-branch gates use "not already destroyed" instead of the live + MovementMode/IsDisabled checks (gait FSM pending). +- Gyro hit-feed and destroyed-skin graphics are log stubs (feel/render waves). diff --git a/restoration/source410/BT/TORSO.CPP b/restoration/source410/BT/TORSO.CPP index 90b250f4..2e886bf2 100644 --- a/restoration/source410/BT/TORSO.CPP +++ b/restoration/source410/BT/TORSO.CPP @@ -29,6 +29,20 @@ Derivation "Torso" ); +// +// The full 13-entry authentic table (ids 3..15) -- donor torso.cpp:152 with +// binary offsets, cross-confirmed by BTL4.RES's streamed control mappings +// binding ids 12/13 on subsystem 17. The five command members and +// analogTwistAxis are DIRECT WRITE DESTINATIONS for device polls +// (L4CTRL.CPP:1936), which is why every id from 9 up must exist and be the +// right kind of storage: id 9 short of this table landed the RIO's analog +// stick on the motionState StateIndicator. +// +// SpeedOf* still point at the base rates rather than the donor's live +// velocity accumulators (elevationVelocity/twistVelocity @0x1EC/0x1E8) -- +// those members arrive with TorsoSimulation; the authored audio watcher on +// SpeedOfTorsoHorizontal just reads a constant until then. +// const Torso::IndexEntry Torso::AttributePointers[]= { @@ -38,6 +52,12 @@ const Torso::IndexEntry ATTRIBUTE_ENTRY(Torso, HorizontalLimitLeft, horizontalLimitLeft), ATTRIBUTE_ENTRY(Torso, SpeedOfTorsoVertical, baseElevationRate), ATTRIBUTE_ENTRY(Torso, SpeedOfTorsoHorizontal, baseTwistRate), + ATTRIBUTE_ENTRY(Torso, StickPosition, analogTwistAxis), + ATTRIBUTE_ENTRY(Torso, TorsoUp, elevateUpCommand), + ATTRIBUTE_ENTRY(Torso, TorsoDown, elevateDownCommand), + ATTRIBUTE_ENTRY(Torso, TorsoLeft, twistLeftCommand), + ATTRIBUTE_ENTRY(Torso, TorsoRight, twistRightCommand), + ATTRIBUTE_ENTRY(Torso, TorsoCenter, centerCommand), ATTRIBUTE_ENTRY(Torso, MotionState, motionState) }; @@ -89,6 +109,16 @@ Torso::Torso( buttonRamp = 0.0f; horizontalEnabled = r->torsoHorizontalEnabled; + // + // The device-poll write destinations (published ids 9..14). Zero = + // stick centred, no button held -- their state before the first poll. + // + elevateUpCommand = 0; + elevateDownCommand = 0; + twistLeftCommand = 0; + twistRightCommand = 0; + centerCommand = 0; + // // Resolve the named torso-twist skeleton joints (twist body + shadow) from // the mech skeleton (now live). A mech with a fixed torso, or one whose diff --git a/restoration/source410/BT/TORSO.HPP b/restoration/source410/BT/TORSO.HPP index cc4bb246..5640542b 100644 --- a/restoration/source410/BT/TORSO.HPP +++ b/restoration/source410/BT/TORSO.HPP @@ -108,12 +108,24 @@ // HorizontalLimitRight HorizontalLimitLeft // SpeedOfTorsoVertical SpeedOfTorsoHorizontal // - // (the TorsoUp/Down/Left/Right/Center that follow are MESSAGES, not - // attributes). All six map onto members we already carry. An - // authored AttributeWatcher binds SpeedOfTorsoHorizontal. + // The FULL authentic table, ids 3..15, confirmed twice over: the BT411 + // donor's decompiled enum carries these names WITH binary member offsets + // (torso.hpp 111-124, @0x1E4..@0x20C), and BTL4.RES's own streamed + // control mappings bind ids 12/13 as DIRECT button destinations on + // subsystem 17 = Torso (the [map] audit). + // + // An earlier revision declared "TorsoUp/Down/Left/Right/Center are + // MESSAGES, not attributes" and stopped at 7 entries with MotionState at + // id 9. That was WRONG in a specifically nasty way: the ids are the + // binding key for the streamed mappings, so Thrustmaster's buttons + // (12/13) resolved NULL -- the boot write-fault at + // ControlsInstanceDirectOf::Update+0xE -- and the RIO's ANALOG + // StickPosition (9) resolved to our motionState StateIndicator, letting + // every analog update from a live RIO smash a watcher-socketed object + // with raw floats. // // The chain -- PowerWatcher -> HeatWatcher -> MechSubsystem -- publishes - // nothing of its own, so these start at Subsystem::NextAttributeID. + // nothing of its own, so these start at MechSubsystem::NextAttributeID. // public: enum { @@ -123,11 +135,12 @@ HorizontalLimitLeftAttributeID, SpeedOfTorsoVerticalAttributeID, SpeedOfTorsoHorizontalAttributeID, - // - // Bound by an authored watcher (BTL4.RES pairs it as - // Torso/MotionState). Appended at the END of this leaf class's - // own range, so no downstream id moves. - // + StickPositionAttributeID, + TorsoUpAttributeID, + TorsoDownAttributeID, + TorsoLeftAttributeID, + TorsoRightAttributeID, + TorsoCenterAttributeID, MotionStateAttributeID, NextAttributeID }; @@ -169,10 +182,23 @@ // StateIndicator motionState; // authored watcher // + // The five BUTTON COMMAND destinations (donor torso.hpp @0x1F8-0x208). + // The streamed control mappings bind these BY ID as DIRECT WRITE + // targets -- LBE4ControlsManager::CreateStreamedMappings registers + // GetAttributePointer(attributeID) as the destination a device poll + // writes through (L4CTRL.CPP:1936). Carved from the front of the + // dynamicsState reserve so the class size is unchanged. + // + int elevateUpCommand; + int elevateDownCommand; + int twistLeftCommand; + int twistRightCommand; + int centerCommand; + // // Twist/elevation dynamics accumulators advanced by TorsoSimulation. // Reserved until the per-frame sim is reconstructed (phase 5). // - Scalar dynamicsState[22]; + Scalar dynamicsState[17]; }; #endif diff --git a/restoration/source410/BT_L4/BTL4APP.CPP b/restoration/source410/BT_L4/BTL4APP.CPP index 27a2b36a..a2f8ba4f 100644 --- a/restoration/source410/BT_L4/BTL4APP.CPP +++ b/restoration/source410/BT_L4/BTL4APP.CPP @@ -434,6 +434,76 @@ Entity* if (description) { description->Lock(); + + // + // MAPPING AUDIT (env BT_MAP_LOG) -- walk the same streamed + // table CreateStreamedMappings is about to consume and name + // every DirectMapping whose attribute does not resolve. + // + // For a DirectMapping the archive code registers + // subsystem->GetAttributePointer(attributeID) as the WRITE + // DESTINATION of a controls instance; an attribute our + // reconstruction has not published resolves NULL, and the + // first device poll that fires the control writes through + // it -- the Thrustmaster-mode boot crash at + // ControlsInstanceDirectOf::Update+0xE (write to + // [eax]=NULL, guest 00485E1A). RIO mode never trips it only + // because the RIO's analog stream arrives by a different + // path. This audit turns that crash into a named list of + // missing attribute publications. + // + if (getenv("BT_MAP_LOG")) + { + const int + *words = (const int *)description->resourceAddress; + int + map_count = *words; + const ControlsMapping + *map_entry = (const ControlsMapping *)(words + 1); + int + map_index; + + DEBUG_STREAM << "[map] " << map_count + << " streamed mappings for '" << primary_mapping_name + << "'\n" << flush; + for (map_index = 0; map_index < map_count; map_index++) + { + Simulation + *map_subsystem = + viewing_entity->GetSimulation( + map_entry[map_index].subsystemID); + void + *map_attribute = NULL; + + if ( + map_subsystem != NULL && + map_entry[map_index].mappingType + == ControlsMapping::DirectMapping + ) + { + map_attribute = + map_subsystem->GetAttributePointer( + map_entry[map_index].attributeID); + } + if ( + map_entry[map_index].mappingType + == ControlsMapping::DirectMapping && + (map_subsystem == NULL || map_attribute == NULL) + ) + { + DEBUG_STREAM << "[map] BAD direct: idx=" + << map_index + << " group=" << (int)map_entry[map_index].controlsGroup + << " elem=" << (int)map_entry[map_index].controlsElement + << " subsysID=" << (int)map_entry[map_index].subsystemID + << " attrID=" << (int)map_entry[map_index].attributeID + << (map_subsystem == NULL + ? " (NO SUBSYSTEM)" : " (attr NULL)") + << "\n" << flush; + } + } + } + GetControlsManager()->CreateStreamedMappings( viewing_entity, (int*)description->resourceAddress diff --git a/restoration/source410/RENDER-ROADMAP.NOTES.md b/restoration/source410/RENDER-ROADMAP.NOTES.md index 313a28af..7be71548 100644 --- a/restoration/source410/RENDER-ROADMAP.NOTES.md +++ b/restoration/source410/RENDER-ROADMAP.NOTES.md @@ -1393,3 +1393,57 @@ TOOLING: pose_probe.py replaces the throwaway harness -- updir=+1 default pose_chase_upfixed.png shows the MadCat right side up -- chicken-walker legs, purple knee actuators, feet planted, shadow quad UNDER the feet, weapon-pod arms. The milestone stands, now with the correct picture. + +-------------------------------------------------------------------------------- +THE LIVE-RIO FAULT AND THE TM BOOT CRASH WERE ONE DEFECT: THE TORSO TABLE +-------------------------------------------------------------------------------- +The [map] audit (BT_MAP_LOG in BTL4APP.CPP, printed just before the archive's +CreateStreamedMappings consumes the streamed table) named it in one run: + + [map] BAD direct: idx=1 group=3 elem=68 subsysID=17 attrID=12 (attr NULL) + [map] BAD direct: idx=2 group=3 elem=67 subsysID=17 attrID=13 (attr NULL) + +Subsystem 17 = Torso (the [roster] dump). The donor's decompiled torso.hpp +carries the authentic enum WITH binary offsets: ids 3..15 = +RotationOfTorsoVertical..SpeedOfTorsoHorizontal (3-8), then StickPosition(9), +TorsoUp(10), TorsoDown(11), TorsoLeft(12), TorsoRight(13), TorsoCenter(14), +MotionState(15). Our table had SEVEN entries with MotionState at id 9, on +the strength of a comment that said "TorsoUp/Down/etc are MESSAGES, not +attributes". Wrong -- and wrong in a specifically nasty way, because the +streamed control mappings bind BY ID as DIRECT WRITE DESTINATIONS +(L4CTRL.CPP:1936 registers GetAttributePointer(attributeID) as the pointer a +device poll writes through): + + * TM mode: button ids 12/13 resolved NULL -> the boot write-fault at + ControlsInstanceDirectOf::Update+0xE the moment the PC joystick + polled. Instant, clean, easy. + * RIO mode: analog id 9 (StickPosition) resolved to our motionState + STATEINDICATOR -- so every analog packet from a live vRIO wrote raw + floats over a watcher-socketed object. Corrupted socket chains walked + into unmapped memory ~30-40s later: the "intermittent" pod fault at the + fixed DPMI-host address, the one that ate two days. vRIO down = no + analog stream = no corruption = mission runs. Every observation from + the whole hunt drops out of this one mechanism. + +FIX: Torso publishes the full 13-entry donor table; the five int command +members are carved from the front of the dynamicsState reserve (class size +unchanged); ctor zeros them. SpeedOf* still point at base rates until +TorsoSimulation brings the live velocity accumulators. + +VERIFIED, two agreeing runs each way: + * TM mode: launches, [map] audit clean, and the Thrustmaster joystick + DRIVES the torso -- stickY=0.907 -> torsoElev/eyePitch=0.349. The + non-RIO controls path lives. + * RIO mode with vRIO STREAMING: launches, zero faults, mission runs deep + enough that weapons cycle. pod_render_rec is no longer poisoned; the + norio workaround is obsolete. + +Incidentally the [euler] probe now prints during missions with sane +stack-local pointers -- EulerAngles::operator=(const LinearMatrix&) was +always innocent, now visibly so. + +METHOD NOTE for the file: the audit-before-the-archive-call pattern (walk the +same streamed table our code hands to archive code, name what will not +resolve) turned a two-day intermittent heap-corruption hunt into a one-run +lookup. The streamed RES tables are BINDING CONTRACTS on our attribute +enums; every subsystem the RES maps should get the same audit treatment.