BT410 5.3.69: the cockpit eye sits in the canopy -- site handling in the walk

RecurseSKLFile now walks "site=" children.  Sites get no draw component --
which is why the walk's 26 nodes matched the real capture all along: sites
were never DCS nodes -- and siteeyepoint spawns the cockpit camera with the
donor's exact construction (bt411 btl4vid.cpp:462, decomp FUN_004579a8):
offset = the site's own local rest transform, parent = the site's PARENT
joint's DCS, not the hull root.  World orientation, torso twist and gait all
arrive through chain composition.  The root-DCS eye remains only as the
zero-construction fallback for skeletons with no siteeyepoint.

Measured on the live pod with the RIO streaming: [eye] cockpit eye on
'jointeye', 26 nodes / 19 objects / 1 eye, and the bridge camera sits at
Y = hull + 7.7 -- the exact chain sum jointlocal 5.29 + hip 0.37 + torso 0.31
+ jointeye 1.69.  canopy_eye1.png is the pilot's view, the mech's own nose
wedge visible below the sightline.  Own-mech cage handling is the next layer.

Also: eye_count threading through ReadSKLFile/RecurseSKLFile, and the [skl]
summary now reports it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-29 15:18:27 -05:00
co-authored by Claude Fable 5
parent 8231bee58c
commit d4f105f42d
8 changed files with 2159 additions and 150 deletions
+130
View File
@@ -54,3 +54,133 @@ 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: 185285486 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]bf6ae9ee/-0.917632 [48]ffffffff/nan
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
VPX lights@f1081: 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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
VPX lights@f1201: 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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
VPX lights@f1321: 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@f1441: 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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
VPX lights@f1561: 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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
VPX lights@f1681: 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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
VPX lights@f1801: 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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
VPX lights@f1921: 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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
VPX lights@f2041: 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@f2161: 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)
@@ -0,0 +1,95 @@
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: 185464847 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]bea8079a/-0.328183 [48]ffffffff/nan
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
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)
+596
View File
@@ -0,0 +1,596 @@
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
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)
[fire] 'ERSLaser_2' LOADED (level=7925.96 T=76.8462)
[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=(-617.134,0,-245.769) yaw=-1.42873 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=(-602.931,0,-248.299) yaw=-1.36133 spd=14.4 eyePitch=0 eyeYaw=0
[stack] frame at 0x12dee7 drift=0 over 5005 frames ticks=88068 pump=863/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=(-588.945,0,-251.777) yaw=-1.29399 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=(-575.022,0,-256.26) yaw=-1.22565 spd=14.4 eyePitch=0 eyeYaw=0
[fire] 'ERLLaser' LOADED (level=7927.79 T=76.0944)
[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=(-561.438,0,-261.684) yaw=-1.15731 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=(-548.229,0,-268.037) yaw=-1.08883 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=(-535.511,0,-275.263) yaw=-1.02049 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=(-523.316,0,-283.341) yaw=-0.952146 spd=14.4 eyePitch=0 eyeYaw=0
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =2398
[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=(-511.813,0,-292.141) yaw=-0.884476 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=(-500.858,0,-301.768) yaw=-0.816334 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=(-490.623,0,-312.077) yaw=-0.748461 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=(-481.029,0,-323.157) yaw=-0.679983 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=(-472.232,0,-334.844) yaw=-0.61164 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.253,0,-347.104) yaw=-0.543296 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=(-457.118,0,-359.906) yaw=-0.474818 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=(-450.886,0,-373.14) yaw=-0.406474 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=(-445.573,0,-386.768) yaw=-0.33813 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=(-441.195,0,-400.755) yaw=-0.269652 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=(-437.79,0,-414.981) yaw=-0.201308 spd=14.4 eyePitch=0 eyeYaw=0
[stack] frame at 0x12dee7 drift=0 over 6006 frames ticks=104833 pump=863/7219
[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0
[sim] pos=(-435.39,0,-429.22) yaw=-0.133839 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=(-433.943,0,-443.776) yaw=-0.0654944 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=(-433.493,0,-458.426) yaw=0.00298433 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=(-434.044,0,-473.043) yaw=0.0713286 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=(-435.593,0,-487.588) yaw=0.139673 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=(-438.137,0,-502.022) yaw=0.208152 spd=14.4 eyePitch=0 eyeYaw=0
@@ -55,6 +55,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_LAUNCH_LOG=1
set BT_STACK_LOG=1
set BT_MER_LOG=1
File diff suppressed because it is too large Load Diff
+120 -11
View File
@@ -125,10 +125,12 @@ dpl_DCS *
Entity *entity,
dpl_DCS *parent_dcs,
const char *skeleton_filename,
ViewFrom view_type)
ViewFrom view_type,
int *eye_count)
{
Check(this);
Check_Pointer(skeleton_filename);
Check_Pointer(eye_count);
char
path[256];
@@ -167,11 +169,12 @@ dpl_DCS *
dpl_DCS
*root = RecurseSKLFile(
entity, parent_dcs, skeleton, "ROOT", 0, view_type,
zone, &node_count, &object_count);
zone, &node_count, &object_count, eye_count);
DEBUG_STREAM << "[skl] " << path
<< " -> " << node_count << " nodes, "
<< object_count << " objects\n" << flush;
<< object_count << " objects, "
<< *eye_count << " eye\n" << flush;
//
// The engine guards this the same way (L4VIDEO.CPP, DPLReadEnvironment):
@@ -199,7 +202,8 @@ dpl_DCS *
ViewFrom view_type,
dpl_ZONE *zone,
int *node_count,
int *object_count)
int *object_count,
int *eye_count)
{
Check(this);
Check(skeleton);
@@ -348,7 +352,7 @@ dpl_DCS *
{
RecurseSKLFile(
entity, dcs, skeleton, child_page, recursion_depth + 1,
view_type, zone, node_count, object_count);
view_type, zone, node_count, object_count, eye_count);
}
}
@@ -356,6 +360,100 @@ dpl_DCS *
delete children;
}
//
// "site=" children. Sites get NO draw component of their own -- the
// real pod's capture decodes exactly 26 DCS bodies for this skeleton,
// which is joints+root only, and this walk matched that count precisely
// BECAUSE it ignored sites. One site spawns hardware instead of
// geometry: siteeyepoint is the COCKPIT CAMERA.
//
// The authentic construction comes from the donor's decompile
// (bt411 btl4vid.cpp:462, decomp FUN_004579a8): the eye's offset matrix
// is the SITE'S OWN local rest transform, and the eye is parented on the
// site's PARENT segment's draw component -- this page's DCS -- NOT the
// hull root. World orientation and all live motion (torso twist, gait)
// then come from the parent-chain composition for free. For MAD.SKL the
// chain is jointtorso -> jointeye (trany +1.687, tranz -1.318) ->
// siteeyepoint (identity), which puts the eye in the canopy where the
// cockpit sits, instead of at the hull origin staring through the torso
// panels.
//
if (view_type == insideEntity)
{
NameList
*sites = skeleton->MakeEntryList(page_name, "site");
if (sites != NULL)
{
Register_Object(sites);
NameList::Entry
*site_entry;
for (site_entry = sites->GetFirstEntry();
site_entry != NULL;
site_entry = site_entry->GetNextEntry())
{
const char
*site_page = (const char *)site_entry->dataReference;
if (
site_page != NULL &&
strcmp(site_page, "siteeyepoint") == 0 &&
skeleton->PageExists(site_page)
)
{
Scalar
site_tx = 0.0f, site_ty = 0.0f, site_tz = 0.0f,
site_pitch = 0.0f, site_yaw = 0.0f, site_roll = 0.0f;
skeleton->GetEntry(site_page, "tranx", &site_tx);
skeleton->GetEntry(site_page, "trany", &site_ty);
skeleton->GetEntry(site_page, "tranz", &site_tz);
skeleton->GetEntry(site_page, "pitch", &site_pitch);
skeleton->GetEntry(site_page, "yaw", &site_yaw);
skeleton->GetEntry(site_page, "roll", &site_roll);
//
// Default ctor identities; the EulerAngles assignment
// writes ONLY the 3x3 rotation (AFFNMTRX.CPP:179), so
// the identity's zero translation survives it and the
// site translation goes in after.
//
LinearMatrix
site_offset;
site_offset =
EulerAngles(site_pitch, site_yaw, site_roll);
site_offset(3,0) = site_tx;
site_offset(3,1) = site_ty;
site_offset(3,2) = site_tz;
EulerAngles
*eyepoint_rotation =
(EulerAngles *)entity->GetAttributePointer(
"EyepointRotation");
DPLEyeRenderable
*cockpit_eye = new DPLEyeRenderable(
entity,
dplMainZone,
site_offset,
dcs,
dplMainView,
eyepoint_rotation);
Register_Object(cockpit_eye);
++(*eye_count);
if (getenv("BT_MER_LOG"))
{
DEBUG_STREAM << " [eye] cockpit eye on '"
<< page_name << "' offset=("
<< site_tx << "," << site_ty << ","
<< site_tz << ")\n" << flush;
}
}
}
Unregister_Object(sites);
delete sites;
}
}
return dcs;
}
@@ -506,17 +604,28 @@ void
//
// 2. The skeleton hangs UNDER the root DCS -- so the whole
// model rides the entity's localToWorld instead of
// being parked at the world origin.
// being parked at the world origin. The walk also
// builds the COCKPIT EYE when it meets the
// siteeyepoint site (donor construction: offset =
// the site's local rest, parent = the site's parent
// joint DCS -- so the eye sits in the canopy and
// rides torso twist through chain composition).
//
int
eye_count = 0;
ReadSKLFile(entity, root_DCS,
video_object->GetObjectFilename(), view_type);
video_object->GetObjectFilename(), view_type,
&eye_count);
//
// 3. Inside view: the eyepoint, driven off the same root
// DCS plus the mech's published EyepointRotation --
// this is what the camera follows.
// 3. FALLBACK eyepoint only. A skeleton without a
// siteeyepoint still needs a camera for the inside
// view, and the hull root with a zero offset is the
// engine's own zero-construction default
// (L4VIDEO.CPP:4849). For MAD.SKL this no longer
// runs -- the walk builds the real cockpit eye.
//
if (view_type == insideEntity)
if (view_type == insideEntity && eye_count == 0)
{
EulerAngles
*eyepoint_rotation =
+4 -2
View File
@@ -78,7 +78,8 @@
Entity *entity,
dpl_DCS *parent_dcs,
const char *skeleton_filename,
ViewFrom view_type);
ViewFrom view_type,
int *eye_count);
dpl_DCS *
RecurseSKLFile(
@@ -90,7 +91,8 @@
ViewFrom view_type,
dpl_ZONE *zone,
int *node_count,
int *object_count);
int *object_count,
int *eye_count);
protected:
int reserved[16];
@@ -1447,3 +1447,27 @@ 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.
--------------------------------------------------------------------------------
THE COCKPIT EYE SITS IN THE CANOPY -- SITE HANDLING IN THE SKELETON WALK
--------------------------------------------------------------------------------
The eye no longer rides the hull root. RecurseSKLFile now walks "site="
children (sites get NO draw component -- which is WHY the walk's 26 nodes
matched the real capture: sites were never DCS nodes), and siteeyepoint
spawns the cockpit camera with the donor's exact construction (bt411
btl4vid.cpp:462, decomp FUN_004579a8):
offset = the SITE's own local rest transform (siteeyepoint = identity)
parent = the site's PARENT joint's DCS (jointeye, NOT the root)
so world orientation, torso twist and gait all arrive through chain
composition, with no per-mech forward-axis assumption. The old root-DCS eye
remains only as the zero-construction fallback for a skeleton with no
siteeyepoint (the engine's own default, L4VIDEO.CPP:4849).
MEASURED on the live pod (RIO streaming, post-5.3.68): [eye] cockpit eye on
'jointeye', [skl] 26 nodes / 19 objects / 1 eye, and the bridge camera sits at
Y = hull + 7.7 -- the exact chain sum jointlocal 5.29 + hip 0.37 + torso 0.31
+ jointeye 1.69 = 7.66. canopy_eye1.png: the pilot's view, with the MadCat's
own nose wedge visible below the sightline -- own-mech cage handling
(COCKPIT-CAGE-NOTES.md punch cutouts) is the known next layer.