BT410 5.3.65: THE MECH STANDS -- wire matrix convention proven from engine source

pose_chase.png: the MadCat assembled from its 19 parts, standing in the arena
at its live articulated position.  Feet, legs, torso, weapon pods, canopy
plate.  Not a collapsed stack at the origin, which is what every prior frame
actually showed.

The convention is no longer inferred -- it is read from the engine.
RootRenderable's ctor writes an entity pose into a DCS with
*(Matrix4x4*)dpl_GetDCSMatrix(myDCS) = localToWorld, so
Matrix4x4::operator=(const AffineMatrix&) IS the wire layout: row-major,
rotation in rows 0-2, zeros in column 3, translation in ROW 3 (entries
12/13/14).

The old 3/7/11 choice rested on two errors, both corrected in the code
comments: AffineMatrix does keep translation at 3/7/11, but because it is
COLUMN-major -- citing it as precedent for a row-major layout read the storage
and ignored the indexer (AFFNMTRX.HPP:99).  And 'the last row made the maths
blow up' came from the contaminated bisect; those crashes were the RIO fault.

Rotation now composes through the engine's own Matrix4x4::operator=(const
EulerAngles&) from the page's pitch/yaw/roll, and the node write uses the
RootRenderable idiom (dpl_GetDCSMatrix + assign).

Also banked: the chase-frame fifobridge variant -- camera framed on the
articulated root instead of the arena bounds -- as the offline proof harness
for any future pose question.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-29 10:02:06 -05:00
co-authored by Claude Fable 5
parent d143f833ab
commit e846717283
6 changed files with 835 additions and 38 deletions
+123
View File
@@ -54,3 +54,126 @@ 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: 219042775 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
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
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: 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: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:2 (IF0:2), 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
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: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@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: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: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
VPX lights@f361: type6=2 typeE=8 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:4 (IF0:4), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:4 (IF0:4), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:4 (IF0:4), 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
VPX lights@f481: type6=2 typeE=8 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: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: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: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@f601: 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
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:2 (IF0:2), TX:0, Break 0
VPX lights@f721: 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
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: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
VPX lights@f841: 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: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
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@f961: 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
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
VPX lights@f1081: 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
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@f1201: 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
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
VPX lights@f1321: 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
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@f1441: 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
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
+573
View File
@@ -0,0 +1,573 @@
BattleTech v4.10
BTL4Application::BTL4Application
RIO never came back from check request!
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' -> 0x00a559b4 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=0x009eb3c4 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=0x0096b248 controlModeAttr=0x0096b284
[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=0x00adc2c0
[launch] state=11 minPriorityEmpty=0 ticks=14713
[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1
[posts] id3=416
[launch] state=11 minPriorityEmpty=0 ticks=15726
[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1
[posts] id3=502
[launch] state=11 minPriorityEmpty=0 ticks=16736
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=11 minPriorityEmpty=0 ticks=17745
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=11 minPriorityEmpty=0 ticks=18754
[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=19831
[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
[mer] 15 class=42 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=20940
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[mer] 23 class=42 view=0 res=1
[mer] 24 class=42 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=22051
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[mer] 31 class=42 view=0 res=1
[mer] 32 class=42 view=0 res=1
[mer] 33 class=42 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=23160
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=24269
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=25380
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=26489
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=27598
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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=28077 pump=352/1499
[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=28710
[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
[mer] 87 class=42 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=29819
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 88 class=42 view=0 res=1
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =40
[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
[mer] 95 class=94 view=0 res=1
[mer] 96 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=30929
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[mer] 103 class=42 view=0 res=1
[mer] 104 class=42 view=0 res=1
[mer] 105 class=42 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=32040
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=33149
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=34258
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=35369
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=36478
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 142 class=42 view=0 res=1
[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=37587
[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
[mer] 159 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=38700
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[mer] 167 class=94 view=0 res=1
[mer] 168 class=42 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=39809
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[mer] 175 class=42 view=0 res=1
[mer] 176 class=42 view=0 res=1
[mer] 177 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=40918
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=42029
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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
[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
[launch] state=2 minPriorityEmpty=0 ticks=43138
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 196 class=42 view=0 res=1
[mer] 197 class=94 view=0 res=1
[mer] 198 class=94 view=0 res=1
[mer] 199 class=94 view=0 res=1
[mer] 200 class=94 view=0 res=1
[mer] 201 class=94 view=0 res=1
[mer] 202 class=94 view=0 res=1
[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=43949 pump=495/2643
[mer] 203 class=94 view=0 res=1
[mer] 204 class=42 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=44248
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 205 class=94 view=0 res=1
[mer] 206 class=94 view=0 res=1
[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
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =41
[launch] state=2 minPriorityEmpty=0 ticks=45360
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=46469
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=47578
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=48689
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=49798
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=50907
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=52018
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=53127
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=54236
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=55349
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=56458
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=57567
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=58678
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=59787
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[stack] frame at 0x12dee7 drift=0 over 3003 frames ticks=59824 pump=638/3787
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =42
[launch] state=2 minPriorityEmpty=0 ticks=60898
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=62009
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=63118
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=64227
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=65338
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=66447
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=67556
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=68667
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[launch] state=2 minPriorityEmpty=0 ticks=69776
[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=70885
[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
[mer] 215 class=48 view=0 res=0
[launch] state=2 minPriorityEmpty=0 ticks=71996
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 216 class=48 view=0 res=0
[mer] 217 class=94 view=0 res=1
[mer] 218 class=94 view=0 res=1
[mer] 219 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=73107
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 220 class=94 view=0 res=1
[mer] 221 class=94 view=0 res=1
[mer] 222 class=94 view=0 res=1
[mer] 223 class=94 view=0 res=1
[mer] 224 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=74216
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 225 class=94 view=0 res=1
[mer] 226 class=94 view=0 res=1
[mer] 227 class=94 view=0 res=1
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =43
[mer] 228 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=75328
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[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=75695 pump=781/4931
[mer] 231 class=94 view=0 res=1
[mer] 232 class=94 view=0 res=1
[mer] 233 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=76438
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 234 class=94 view=0 res=1
[mer] 235 class=94 view=0 res=1
[mer] 236 class=94 view=0 res=1
[mer] 237 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=77547
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 238 class=94 view=0 res=1
[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=78658
[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=79767
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 247 class=94 view=0 res=1
[mer] 248 class=94 view=0 res=1
[mer] 249 class=94 view=0 res=1
MapDisplay: operating=1 static=7 moving=0
[mer] 250 class=94 view=0 res=1
[mer] 251 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=80876
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 252 class=94 view=0 res=1
[mer] 253 class=94 view=0 res=1
[mer] 254 class=94 view=0 res=1
[mer] 255 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=81987
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 256 class=94 view=0 res=1
[mer] 257 class=94 view=0 res=1
[mer] 258 class=94 view=0 res=1
[mer] 259 class=94 view=0 res=1
[mer] 260 class=94 view=0 res=1
[launch] state=2 minPriorityEmpty=0 ticks=83096
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 261 class=94 view=0 res=1
[mer] 262 class=48 view=0 res=0
[mer] 263 class=48 view=0 res=0
[mer] 264 class=48 view=0 res=0
[launch] state=2 minPriorityEmpty=0 ticks=84205
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[posts] id3=530
[mer] 265 class=48 view=0 res=0
[launch] state=2 minPriorityEmpty=1 ticks=85316
[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
[sim] pos=(-633.304,0,-348.383) 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)
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =48
[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0
[sim] pos=(-618.976,0,-349.934) yaw=-1.42987 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=(-604.771,0,-352.449) yaw=-1.36247 spd=14.4 eyePitch=0 eyeYaw=0
[stack] frame at 0x12dee7 drift=0 over 5005 frames ticks=91705 pump=863/6075
[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0
[sim] pos=(-590.781,0,-355.91) yaw=-1.29514 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=(-576.825,0,-360.388) yaw=-1.22666 spd=14.4 eyePitch=0 eyeYaw=0
[fire] 'ERLLaser' LOADED (level=7928.31 T=76.0943)
[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0
[sim] pos=(-563.235,0,-365.798) yaw=-1.15832 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=(-550.046,0,-372.124) yaw=-1.08997 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=(-537.295,0,-379.351) yaw=-1.0215 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=(-525.092,0,-387.416) yaw=-0.953153 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=(-513.468,0,-396.296) yaw=-0.88481 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=(-502.457,0,-405.969) yaw=-0.816333 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=(-492.153,0,-416.351) yaw=-0.747989 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=(-482.583,0,-427.413) yaw=-0.679646 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=(-473.773,0,-439.127) yaw=-0.611168 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=(-465.8,0,-451.391) yaw=-0.542824 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=(-458.684,0,-464.17) yaw=-0.474481 spd=14.4 eyePitch=0 eyeYaw=0
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =49
[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0
[sim] pos=(-452.542,0,-477.208) yaw=-0.407146 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=(-447.21,0,-490.86) yaw=-0.338668 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=(-442.832,0,-504.817) yaw=-0.270324 spd=14.4 eyePitch=0 eyeYaw=0
[stack] frame at 0x12dee7 drift=0 over 6006 frames ticks=108393 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=(-439.456,0,-518.857) yaw=-0.202854 spd=14.4 eyePitch=0 eyeYaw=0
+43
View File
@@ -1 +1,44 @@
BattleTech v4.10
BTL4Application::BTL4Application
GaugeInterpreter: undefined label 'Initialization'
MakeVehicleSystems hud=0x01158dcc
Warning: damage zone 'dz_missle' not found!
Warning: damage zone 'dz_missle' not found!
Warning: damage zone 'dz_lmissle' not found!
Warning: damage zone 'dz_rmissle' not found!
Warning: damage zone 'dz_ftorso' not found!
Warning: damage zone 'dz_btorso' not found!
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =4252
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =4408
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =6128
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =6417
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =6783
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =7185
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =7193
BTL4Application::RunMissionMessageHandler
Turning Plasma Score Display On
BTL4Application::RunMissionMessageHandler
Turning Plasma Score Display On
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =9235
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =9240
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =11662
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =11666
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =12328
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =12332
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =13939
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =13943
Binary file not shown.
+51 -38
View File
@@ -14,6 +14,13 @@
#if !defined(BTL4VID_HPP)
# include <btl4vid.hpp>
#endif
//
// Matrix4x4 -- the DCS wire layout (see RecurseSKLFile). l4video.hpp pulls
// rotation.hpp but not matrix.hpp; L4VIDRND.CPP includes it the same way.
//
#if !defined(MATRIX_HPP)
# include <matrix.hpp>
#endif
//
// The engine's damage-zone tagging callback reads this while geometry is
@@ -222,55 +229,61 @@ dpl_DCS *
dpl_SetDCSZone(dcs, zone);
//
// STAGE 2a -- the node's LOCAL TRANSLATION.
// The node's LOCAL TRANSFORM, in the engine's own terms -- the wire
// convention is no longer inferred from captures, it is READ from the
// engine: RootRenderable's ctor (L4VIDRND.CPP:853) writes an entity pose
// into a DCS with
//
// Slot convention, derived rather than guessed. A DCS flush body is
// [remote][type_check][node][pad][16 x float32]: our own identity
// matrices were found on the wire at body offset 16, which also
// showed analyze_scene.py's rest[4:68] read to be one word early.
// Re-reading a real BT capture with that correction gives a clean
// identity with the translation in the LAST ROW -- a row-vector
// convention, the transpose of MUNGA's AffineMatrix (which is 3x4
// row-major with translation in the 4th COLUMN, entries[3/7/11], per
// AFFNMTRX.CPP:50).
// *(Matrix4x4*)dpl_GetDCSMatrix(myDCS) = myEntity->localToWorld;
//
// Rotation is deliberately left identity for now: every base-pose
// pitch/yaw/roll in MAD.SKL is 0 or ~1e-3, so TRANSLATION alone
// assembles the model -- which isolates this one convention and
// makes a wrong guess about rotation order impossible to mistake for
// a wrong guess about translation.
// so whatever Matrix4x4::operator=(const AffineMatrix&) produces IS the
// DCS matrix layout. Reading it (MATRIX.CPP:130): Matrix4x4 is ROW-major
// (MATRIX.HPP:113, entries[(Row<<2)+Column]) with rotation in rows 0-2,
// ZEROS in column 3, and the TRANSLATION IN ROW 3 -- entries 12/13/14.
//
// (The previous revision put translation at entries 3/7/11, quoting
// AffineMatrix as precedent. AffineMatrix does keep translation at
// 3/7/11 -- but because it is COLUMN-major, entries[(column<<2)+row]
// (AFFNMTRX.HPP:99); its (3,c) translation row lands at 3/7/11 by
// storage, not by convention. Matrix4x4 transposes that on copy. The
// 'last row made the maths blow up' claim attached to the old choice
// came from the contaminated bisect -- the crashes were the RIO fault.)
//
// Rotation comes from the page's pitch/yaw/roll through the engine's own
// Matrix4x4::operator=(const EulerAngles&), so the rotation ORDER is the
// engine's by construction, not a guess. MAD.SKL base-pose angles are
// all 0 or ~1e-3, so this is nearly identity today -- but it is the
// correct compose for any skeleton authored with real angles.
//
Scalar
tran_x = 0.0f,
tran_y = 0.0f,
tran_z = 0.0f;
tran_z = 0.0f,
rot_pitch = 0.0f,
rot_yaw = 0.0f,
rot_roll = 0.0f;
skeleton->GetEntry(page_name, "tranx", &tran_x);
skeleton->GetEntry(page_name, "trany", &tran_y);
skeleton->GetEntry(page_name, "tranz", &tran_z);
skeleton->GetEntry(page_name, "pitch", &rot_pitch);
skeleton->GetEntry(page_name, "yaw", &rot_yaw);
skeleton->GetEntry(page_name, "roll", &rot_roll);
Matrix4x4
node_matrix;
node_matrix = EulerAngles(rot_pitch, rot_yaw, rot_roll);
node_matrix(3,0) = tran_x;
node_matrix(3,1) = tran_y;
node_matrix(3,2) = tran_z;
//
// Write in place and flush -- the same idiom as RootRenderable's ctor
// (dpl_GetDCSMatrix + assign), not dpl_SetDCSMatrix.
//
float32
matrix[16];
int
i;
for (i = 0; i < 16; ++i)
{
matrix[i] = 0.0f;
}
matrix[0] = matrix[5] = matrix[10] = matrix[15] = 1.0f;
//
// Translation goes in the 4th COLUMN (3/7/11), the same layout as
// MUNGA's own AffineMatrix (3x4 row-major, entries[3/7/11] --
// AFFNMTRX.CPP:50). Putting it in the last ROW instead made the
// matrix PROJECTIVE under a column-vector convention and the
// transform maths blew up: the walk died on the first node that
// carries geometry, reproducibly, and bisecting with the reads kept
// but the values suppressed ran clean. Same library house as
// MUNGA, same convention.
//
matrix[3] = (float32)tran_x;
matrix[7] = (float32)tran_y;
matrix[11] = (float32)tran_z;
dpl_SetDCSMatrix(dcs, matrix);
*dcs_matrix = dpl_GetDCSMatrix(dcs);
Check_Pointer(dcs_matrix);
*(Matrix4x4 *)dcs_matrix = node_matrix;
if (parent_dcs != NULL)
{
@@ -1274,3 +1274,48 @@ a boot-time state where no frame is ever outstanding.
STATUS: emulator rebuilding; verification = the same norio run drawing PAST
frame 232 with the camera tracking, then two agreeing runs before belief.
--------------------------------------------------------------------------------
THE MECH STANDS: MATRIX CONVENTION PROVEN FROM ENGINE SOURCE, CONFIRMED VISUALLY
--------------------------------------------------------------------------------
emulator/render-bridge/pose_chase.png -- the MadCat assembled from its 19
parts, standing in the arena at its live articulated position (chase render of
the live fifodump, framed on anim_abs root 0x672). Feet, legs, torso, weapon
pods, canopy plate with the purple glass panels. Not a collapsed stack.
THE CONVENTION, now read from the engine rather than inferred from captures:
RootRenderable's ctor writes an entity pose into a DCS via
*(Matrix4x4*)dpl_GetDCSMatrix(myDCS) = myEntity->localToWorld;
so Matrix4x4::operator=(const AffineMatrix&) (MATRIX.CPP:130) IS the wire
layout: Matrix4x4 is ROW-major (entries[(Row<<2)+Column], MATRIX.HPP), rotation
in rows 0-2, ZEROS in column 3, TRANSLATION IN ROW 3 = entries 12/13/14.
The previous choice (translation at 3/7/11) rested on two errors, both now
corrected in RecurseSKLFile's comments: (1) AffineMatrix DOES keep translation
at entries 3/7/11 -- but because it is COLUMN-major (entries[(column<<2)+row],
AFFNMTRX.HPP:99), that is its (3,c) translation ROW by storage; Matrix4x4
transposes on copy. Citing it as precedent for a row-major layout was reading
the storage and ignoring the indexer. (2) "translation in the last row made
the maths blow up" came from the contaminated bisect -- those crashes were the
RIO fault.
Rotation now composes through the engine's own Matrix4x4::operator=(const
EulerAngles&) from the page's pitch/yaw/roll, so the rotation order is the
engine's by construction. Node write uses the RootRenderable idiom
(dpl_GetDCSMatrix + assign), not dpl_SetDCSMatrix.
Tooling: the chase-frame variant of fifobridge (camera framed on the
articulated root instead of arena bounds) is the ten-line proof harness for
any future pose question -- offline, against a copy of the live dump, zero
interference with the running pod.
REMAINING VISUAL WORK, in order of blockingness:
* Eye height: the inside view sits at hull Y+UPOFF and stares through the
torso panels. The engine's answer is the siteeyepoint segment compose
(SetupCull) -- our skeleton has the joint chain, so the eye DCS should ride
jointcockpit/siteeyepoint rather than the root. COCKPIT-CAGE-NOTES.md
territory (glance-hide / punch cutout) applies once the height is right.
* Proportions/orientation fine-tune once a cleaner outside frame exists;
limbs may need per-joint rotation signs checked against a shipped capture.