From 475ae3106e6e503b5d8764bae8421a8dc18f4569 Mon Sep 17 00:00:00 2001 From: Cyd Date: Tue, 28 Jul 2026 23:23:29 -0500 Subject: [PATCH] BT410 5.3.59: A MISSION RUNS -- the RIO serial port was blocking every load pod_render_norio.conf is pod_render_rec.conf with one line changed, serial1=disabled instead of the vrio named pipe. Same binary, same egg. With it, our build launches and the mech walks: [launch] state=2 minPriorityEmpty=1 ticks=85316 [queues] p0=- p1=- p2=BUSY p3=- p4=- BTL4Application::RunMissionMessageHandler Turning Plasma Score Display On [sim] pos=(180.466,10,-358.703) yaw=-0.275605 spd=14.4 [sim] pos=(251.959,10,-250.498) yaw=-0.89103 spd=14.4 No fault, 290 log lines and counting. This is the first time the reconstruction has reached a running mission on the pod. The hang was never starvation, a deadlock, or a refill loop -- it was VOLUME, the first candidate I listed and then talked myself out of. 530 renderer events queue at priority 0 during load; BackgroundTasks::Execute runs exactly one task per call round-robin over seven tasks, and the 1ms frame budget is always blown here so no extra background passes happen. That is ~9 events per real second, so a load legitimately takes ~60s. The fault arrived at ~40s, before the backlog could clear. Every 'the queue never drains' reading was really 'the process dies before it can'. The disproof was already in hand: the post tally climbed to 530 and went FLAT, which means nothing was refilling. p0=BUSY with nextReady=1 is equally consistent with a large finite backlog still draining, and I read it as refill. Why the RIO port: the pipe has no server attached, which should behave as an unplugged cable. The emulator log shows steady serial1 RX overruns, our build prints 'RIO never came back from test mode!', and the SHIPPED binary prints 'lost RIO analog request' and launches anyway on this identical rig. So an unplugged RIO is survivable and our handling of it is not -- a real defect, not a rig artifact, since a pod with an unplugged RIO cable should still boot. The wild reference at EulerAngles::operator=(const LinearMatrix&)+0x19 is still unexplained, but it is now reproducible on demand by enabling serial1 rather than being a coin flip. Co-Authored-By: Claude Fable 5 --- emulator/render-bridge/dosboxlog.txt | 5 +- emulator/render-bridge/logs/007-CRASH.txt | 108 ++ emulator/render-bridge/logs/007-dosbox.txt | 83 + emulator/render-bridge/logs/009-CRASH.txt | 131 ++ emulator/render-bridge/logs/009-dosbox.txt | 110 ++ emulator/render-bridge/logs/011-CRASH.txt | 345 ++++ emulator/render-bridge/logs/011-dosbox.txt | 82 + emulator/render-bridge/logs/013-CRASH.txt | 316 ++++ emulator/render-bridge/logs/013-dosbox.txt | 131 ++ emulator/render-bridge/pod_render_noskl.conf | 1 + emulator/render-bridge/pod_render_rec.conf | 145 +- emulator/render-bridge/podlog.txt | 274 ++- emulator/render-bridge/podlog_shipped.txt | 66 +- restoration/source410/BT_L4/BTL4VID.CPP | 60 + restoration/source410/MUNGA/APP.HPP | 1655 +++++++++-------- restoration/source410/RENDER-ROADMAP.NOTES.md | 62 + 16 files changed, 2622 insertions(+), 952 deletions(-) create mode 100644 emulator/render-bridge/logs/007-CRASH.txt create mode 100644 emulator/render-bridge/logs/007-dosbox.txt create mode 100644 emulator/render-bridge/logs/009-CRASH.txt create mode 100644 emulator/render-bridge/logs/009-dosbox.txt create mode 100644 emulator/render-bridge/logs/011-CRASH.txt create mode 100644 emulator/render-bridge/logs/011-dosbox.txt create mode 100644 emulator/render-bridge/logs/013-CRASH.txt create mode 100644 emulator/render-bridge/logs/013-dosbox.txt diff --git a/emulator/render-bridge/dosboxlog.txt b/emulator/render-bridge/dosboxlog.txt index 484e260c..71117e96 100644 --- a/emulator/render-bridge/dosboxlog.txt +++ b/emulator/render-bridge/dosboxlog.txt @@ -1,5 +1,5 @@ LOG: Early LOG Init complete -LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_rec.conf +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_norio.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. @@ -33,9 +33,6 @@ LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Micropho 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 diff --git a/emulator/render-bridge/logs/007-CRASH.txt b/emulator/render-bridge/logs/007-CRASH.txt new file mode 100644 index 00000000..f70ed31a --- /dev/null +++ b/emulator/render-bridge/logs/007-CRASH.txt @@ -0,0 +1,108 @@ +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' -> 0x00a3fe78 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=0x009e6d84 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=0x002c30f8 controlModeAttr=0x002c3134 +[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=0x00ac513c +[launch] state=11 minPriorityEmpty=0 ticks=10820 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[launch] state=11 minPriorityEmpty=0 ticks=11832 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[launch] state=11 minPriorityEmpty=0 ticks=12842 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=11 minPriorityEmpty=0 ticks=13851 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=11 minPriorityEmpty=0 ticks=14860 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=15958 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=17008 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=18070 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=19132 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=20193 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=21253 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=22362 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=23473 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24504 pump=352/1499 +[launch] state=2 minPriorityEmpty=0 ticks=24583 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=25692 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=26803 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=27912 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=29021 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=30132 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=31241 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=32350 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=33461 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=34572 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=35681 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =5012 +[launch] state=2 minPriorityEmpty=0 ticks=36694 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=37738 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=38800 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[launch] state=2 minPriorityEmpty=0 ticks=39861 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=40606 pump=495/2643 +[launch] state=2 minPriorityEmpty=0 ticks=40922 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +Reference to a page you don't own +PF cr2= 7000 FA64 at 00FF 0000 66D9 +Unhandled exception 000E at 00FF 66D9 ErrCode 0004 diff --git a/emulator/render-bridge/logs/007-dosbox.txt b/emulator/render-bridge/logs/007-dosbox.txt new file mode 100644 index 00000000..b48759ef --- /dev/null +++ b/emulator/render-bridge/logs/007-dosbox.txt @@ -0,0 +1,83 @@ +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: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: Serial1: BASE 3f8h +LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16) +LOG: Serial1: namedpipe connected to \\.\pipe\vrio +LOG: Serial2: BASE 2f8h +LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1) +LOG: Serial2: namedpipe connected to \\.\pipe\vplasma +LOG: Serial3: BASE 3e8h +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Parallel1: BASE 378h +LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h +LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false. +LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true. +LOG: Allocated APM BIOS pm entry point at f000:ce40 +LOG: Writing code to fce40 +LOG: Writing code to fce60 +LOG: Windows: IID_ITaskbarList3 is available +LOG: ISA Plug & Play BIOS enabled +LOG: VGA ROM BIOS init callback +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +LOG: WARNING: No translation support (to host) for code page 0 +LOG: pixratio 1.350, dw false, dh false +LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 +LOG: DOS keyboard layout loaded with main language code US for layout us +LOG: XMS: 50 handles allocated for use by the DOS environment +LOG: EMS page frame at 0xe000-0xefff +LOG: COMMAND.COM env size: 720 bytes +LOG: COMMAND.COM environment block: 0x0701 sz=0x002d +LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a +LOG: COMMAND.COM stack: 0x0749 +LOG: SHELL:Redirect output to COM3 +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 182234347 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: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: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: 561519596 ERROR INT10:PutPixel unhandled mode type 7 +LOG: SHELL:Redirect output to RC.TXT +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:342 (IF0:5), TX:0, Break 0 diff --git a/emulator/render-bridge/logs/009-CRASH.txt b/emulator/render-bridge/logs/009-CRASH.txt new file mode 100644 index 00000000..e11527a2 --- /dev/null +++ b/emulator/render-bridge/logs/009-CRASH.txt @@ -0,0 +1,131 @@ +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' -> 0x00a3fe78 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=0x009e6d84 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=0x002c30f8 controlModeAttr=0x002c3134 +[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=0x00ac513c +[launch] state=11 minPriorityEmpty=0 ticks=10916 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=416 +[launch] state=11 minPriorityEmpty=0 ticks=11928 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=502 +[launch] state=11 minPriorityEmpty=0 ticks=12938 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=13947 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=14956 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=16056 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=17083 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=18143 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=19204 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=20266 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=21328 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=22390 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=23451 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=24512 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24785 pump=352/1499 +[launch] state=2 minPriorityEmpty=0 ticks=25565 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=26626 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=27688 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=28750 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=29812 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=30874 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=31936 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=32998 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=34060 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=35122 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=36183 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=37244 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=38305 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=39365 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +Reference to a page you don't own +PF cr2= 7000 FA64 at 00FF 0000 66D9 +Unhandled exception 000E at 00FF 66D9 ErrCode 0004 diff --git a/emulator/render-bridge/logs/009-dosbox.txt b/emulator/render-bridge/logs/009-dosbox.txt new file mode 100644 index 00000000..b8a4cca0 --- /dev/null +++ b/emulator/render-bridge/logs/009-dosbox.txt @@ -0,0 +1,110 @@ +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: 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: 184796952 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: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:4 (IF0:4), 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: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: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: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: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:1 (IF0:1), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0 +LOG: 599586316 ERROR INT10:PutPixel unhandled mode type 7 +LOG: SHELL:Redirect output to RC.TXT +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:519 (IF0:4), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:513 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:507 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:502 (IF0:1), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:510 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:498 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:504 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:500 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:512 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:170 (IF0:0), TX:0, Break 0 diff --git a/emulator/render-bridge/logs/011-CRASH.txt b/emulator/render-bridge/logs/011-CRASH.txt new file mode 100644 index 00000000..e67b9af0 --- /dev/null +++ b/emulator/render-bridge/logs/011-CRASH.txt @@ -0,0 +1,345 @@ +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' -> 0x00a3fe78 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=0x009e6d84 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=0x002c30f8 controlModeAttr=0x002c3134 +[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=0x00ac513c +[launch] state=11 minPriorityEmpty=0 ticks=10888 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=416 +[launch] state=11 minPriorityEmpty=0 ticks=11900 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=502 +[launch] state=11 minPriorityEmpty=0 ticks=12910 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=13919 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=14928 +[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=16028 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 7 class=42 view=0 res=1 +[mer] 8 class=42 view=0 res=1 +[mer] 9 class=42 view=0 res=1 +[mer] 10 class=42 view=0 res=1 +[mer] 11 class=42 view=0 res=1 +[mer] 12 class=42 view=0 res=1 +[mer] 13 class=42 view=0 res=1 +[mer] 14 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=17075 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 15 class=42 view=0 res=1 +[mer] 16 class=42 view=0 res=1 +[mer] 17 class=42 view=0 res=1 +[mer] 18 class=42 view=0 res=1 +[mer] 19 class=42 view=0 res=1 +[mer] 20 class=42 view=0 res=1 +[mer] 21 class=42 view=0 res=1 +[mer] 22 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=18137 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 23 class=42 view=0 res=1 +[mer] 24 class=42 view=0 res=1 +[mer] 25 class=42 view=0 res=1 +[mer] 26 class=42 view=0 res=1 +[mer] 27 class=42 view=0 res=1 +[mer] 28 class=42 view=0 res=1 +[mer] 29 class=42 view=0 res=1 +[mer] 30 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=19199 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 31 class=42 view=0 res=1 +[mer] 32 class=42 view=0 res=1 +[mer] 33 class=42 view=0 res=1 +[mer] 34 class=42 view=0 res=1 +[mer] 35 class=42 view=0 res=1 +[mer] 36 class=42 view=0 res=1 +[mer] 37 class=42 view=0 res=1 +[mer] 38 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=20233 +[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=21342 +[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=22453 +[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=23562 +[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=24483 pump=352/1499 +[mer] 74 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=24672 +[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=25783 +[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=26892 +[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=28001 +[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=29112 +[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=30221 +[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=31330 +[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=32441 +[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 +[mer] 145 class=94 view=0 res=1 +[mer] 146 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=33550 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[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 +[mer] 154 class=42 view=0 res=1 +[mer] 155 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=34661 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 156 class=42 view=0 res=1 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =2864 +[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 +[mer] 163 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=35711 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[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=36771 +[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 +[launch] state=2 minPriorityEmpty=0 ticks=37833 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[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 +[mer] 187 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=38895 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[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=39957 +[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 +[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=40702 pump=495/2643 +[mer] 202 class=94 view=0 res=1 +[mer] 203 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=41020 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[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 +[mer] 208 class=3001 view=1 res=1 +Reference to a page you don't own +PF cr2= 7000 FA64 at 00FF 0000 66D9 +Unhandled exception 000E at 00FF 66D9 ErrCode 0004 diff --git a/emulator/render-bridge/logs/011-dosbox.txt b/emulator/render-bridge/logs/011-dosbox.txt new file mode 100644 index 00000000..d0235f4b --- /dev/null +++ b/emulator/render-bridge/logs/011-dosbox.txt @@ -0,0 +1,82 @@ +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: 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: 184991777 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: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: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: 596945986 ERROR INT10:PutPixel unhandled mode type 7 +LOG: SHELL:Redirect output to RC.TXT +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:504 (IF0:4), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:85 (IF0:0), TX:0, Break 0 diff --git a/emulator/render-bridge/logs/013-CRASH.txt b/emulator/render-bridge/logs/013-CRASH.txt new file mode 100644 index 00000000..8f3fc572 --- /dev/null +++ b/emulator/render-bridge/logs/013-CRASH.txt @@ -0,0 +1,316 @@ +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' -> 0x00a3fe78 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=0x009e6d84 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=0x002c30f8 controlModeAttr=0x002c3134 +[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=0x00ac513c +[launch] state=11 minPriorityEmpty=0 ticks=10907 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=416 +[launch] state=11 minPriorityEmpty=0 ticks=11919 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=502 +[launch] state=11 minPriorityEmpty=0 ticks=12929 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=13938 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=14947 +[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=16047 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 7 class=42 view=0 res=1 +[mer] 8 class=42 view=0 res=1 +[mer] 9 class=42 view=0 res=1 +[mer] 10 class=42 view=0 res=1 +[mer] 11 class=42 view=0 res=1 +[mer] 12 class=42 view=0 res=1 +[mer] 13 class=42 view=0 res=1 +[mer] 14 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=17080 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 15 class=42 view=0 res=1 +[mer] 16 class=42 view=0 res=1 +[mer] 17 class=42 view=0 res=1 +[mer] 18 class=42 view=0 res=1 +[mer] 19 class=42 view=0 res=1 +[mer] 20 class=42 view=0 res=1 +[mer] 21 class=42 view=0 res=1 +[mer] 22 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=18120 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 23 class=42 view=0 res=1 +[mer] 24 class=42 view=0 res=1 +[mer] 25 class=42 view=0 res=1 +[mer] 26 class=42 view=0 res=1 +[mer] 27 class=42 view=0 res=1 +[mer] 28 class=42 view=0 res=1 +[mer] 29 class=42 view=0 res=1 +[mer] 30 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=19181 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 31 class=42 view=0 res=1 +[mer] 32 class=42 view=0 res=1 +[mer] 33 class=42 view=0 res=1 +[mer] 34 class=42 view=0 res=1 +[mer] 35 class=42 view=0 res=1 +[mer] 36 class=42 view=0 res=1 +[mer] 37 class=42 view=0 res=1 +[mer] 38 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=20243 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 39 class=94 view=0 res=1 +[mer] 40 class=42 view=0 res=1 +[mer] 41 class=94 view=0 res=1 +[mer] 42 class=94 view=0 res=1 +[mer] 43 class=94 view=0 res=1 +[mer] 44 class=94 view=0 res=1 +[mer] 45 class=94 view=0 res=1 +[mer] 46 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=21305 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 47 class=94 view=0 res=1 +[mer] 48 class=94 view=0 res=1 +[mer] 49 class=42 view=0 res=1 +[mer] 50 class=42 view=0 res=1 +[mer] 51 class=42 view=0 res=1 +[mer] 52 class=42 view=0 res=1 +[mer] 53 class=42 view=0 res=1 +[mer] 54 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=22367 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 55 class=94 view=0 res=1 +[mer] 56 class=94 view=0 res=1 +[mer] 57 class=94 view=0 res=1 +[mer] 58 class=42 view=0 res=1 +[mer] 59 class=42 view=0 res=1 +[mer] 60 class=42 view=0 res=1 +[mer] 61 class=42 view=0 res=1 +[mer] 62 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=23429 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 63 class=94 view=0 res=1 +[mer] 64 class=94 view=0 res=1 +[mer] 65 class=94 view=0 res=1 +[mer] 66 class=94 view=0 res=1 +[mer] 67 class=94 view=0 res=1 +[mer] 68 class=42 view=0 res=1 +[mer] 69 class=94 view=0 res=1 +[mer] 70 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=24491 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 71 class=94 view=0 res=1 +[mer] 72 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24763 pump=352/1499 +[mer] 73 class=94 view=0 res=1 +[mer] 74 class=94 view=0 res=1 +[mer] 75 class=94 view=0 res=1 +[mer] 76 class=42 view=0 res=1 +[mer] 77 class=94 view=0 res=1 +[mer] 78 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=25552 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 79 class=94 view=0 res=1 +[mer] 80 class=94 view=0 res=1 +[mer] 81 class=94 view=0 res=1 +[mer] 82 class=94 view=0 res=1 +[mer] 83 class=94 view=0 res=1 +[mer] 84 class=94 view=0 res=1 +[mer] 85 class=42 view=0 res=1 +[mer] 86 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=26614 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 87 class=42 view=0 res=1 +[mer] 88 class=42 view=0 res=1 +[mer] 89 class=42 view=0 res=1 +[mer] 90 class=42 view=0 res=1 +[mer] 91 class=94 view=0 res=1 +[mer] 92 class=94 view=0 res=1 +[mer] 93 class=42 view=0 res=1 +[mer] 94 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=27676 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 95 class=94 view=0 res=1 +[mer] 96 class=94 view=0 res=1 +[mer] 97 class=94 view=0 res=1 +[mer] 98 class=94 view=0 res=1 +[mer] 99 class=42 view=0 res=1 +[mer] 100 class=42 view=0 res=1 +[mer] 101 class=42 view=0 res=1 +[mer] 102 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=28738 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 103 class=42 view=0 res=1 +[mer] 104 class=42 view=0 res=1 +[mer] 105 class=42 view=0 res=1 +[mer] 106 class=42 view=0 res=1 +[mer] 107 class=42 view=0 res=1 +[mer] 108 class=42 view=0 res=1 +[mer] 109 class=42 view=0 res=1 +[mer] 110 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=29799 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 111 class=42 view=0 res=1 +[mer] 112 class=42 view=0 res=1 +[mer] 113 class=42 view=0 res=1 +[mer] 114 class=42 view=0 res=1 +[mer] 115 class=42 view=0 res=1 +[mer] 116 class=42 view=0 res=1 +[mer] 117 class=42 view=0 res=1 +[mer] 118 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=30859 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 119 class=42 view=0 res=1 +[mer] 120 class=94 view=0 res=1 +[mer] 121 class=42 view=0 res=1 +[mer] 122 class=42 view=0 res=1 +[mer] 123 class=42 view=0 res=1 +[mer] 124 class=42 view=0 res=1 +[mer] 125 class=42 view=0 res=1 +[mer] 126 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=31921 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 127 class=42 view=0 res=1 +[mer] 128 class=42 view=0 res=1 +[mer] 129 class=42 view=0 res=1 +[mer] 130 class=42 view=0 res=1 +[mer] 131 class=42 view=0 res=1 +[mer] 132 class=42 view=0 res=1 +[mer] 133 class=42 view=0 res=1 +[mer] 134 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=32982 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 135 class=42 view=0 res=1 +[mer] 136 class=42 view=0 res=1 +[mer] 137 class=42 view=0 res=1 +[mer] 138 class=42 view=0 res=1 +[mer] 139 class=42 view=0 res=1 +[mer] 140 class=42 view=0 res=1 +[mer] 141 class=42 view=0 res=1 +[mer] 142 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=34043 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 143 class=94 view=0 res=1 +[mer] 144 class=94 view=0 res=1 +[mer] 145 class=94 view=0 res=1 +[mer] 146 class=42 view=0 res=1 +[mer] 147 class=94 view=0 res=1 +[mer] 148 class=42 view=0 res=1 +[mer] 149 class=94 view=0 res=1 +[mer] 150 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=35103 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 151 class=94 view=0 res=1 +[mer] 152 class=42 view=0 res=1 +[mer] 153 class=42 view=0 res=1 +[mer] 154 class=42 view=0 res=1 +[mer] 155 class=94 view=0 res=1 +[mer] 156 class=42 view=0 res=1 +[mer] 157 class=42 view=0 res=1 +[mer] 158 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=36167 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 159 class=94 view=0 res=1 +[mer] 160 class=42 view=0 res=1 +[mer] 161 class=42 view=0 res=1 +[mer] 162 class=42 view=0 res=1 +[mer] 163 class=42 view=0 res=1 +[mer] 164 class=94 view=0 res=1 +[mer] 165 class=94 view=0 res=1 +[mer] 166 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=37229 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 167 class=94 view=0 res=1 +[mer] 168 class=42 view=0 res=1 +[mer] 169 class=94 view=0 res=1 +[mer] 170 class=94 view=0 res=1 +[mer] 171 class=42 view=0 res=1 +[mer] 172 class=42 view=0 res=1 +[mer] 173 class=42 view=0 res=1 +[mer] 174 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=38291 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 175 class=42 view=0 res=1 +[mer] 176 class=42 view=0 res=1 +[mer] 177 class=94 view=0 res=1 +[mer] 178 class=94 view=0 res=1 +[mer] 179 class=94 view=0 res=1 +[mer] 180 class=42 view=0 res=1 +[mer] 181 class=42 view=0 res=1 +[mer] 182 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=39353 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 183 class=94 view=0 res=1 +[mer] 184 class=94 view=0 res=1 +[mer] 185 class=42 view=0 res=1 +Reference to a page you don't own +PF cr2= 7000 FA64 at 00FF 0000 66D9 +Unhandled exception 000E at 00FF 66D9 ErrCode 0004 diff --git a/emulator/render-bridge/logs/013-dosbox.txt b/emulator/render-bridge/logs/013-dosbox.txt new file mode 100644 index 00000000..f880a28a --- /dev/null +++ b/emulator/render-bridge/logs/013-dosbox.txt @@ -0,0 +1,131 @@ +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: 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: 184968225 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: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 +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: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: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: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 +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:4 (IF0:4), 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:1 (IF0:1), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:4 (IF0:1), TX:0, Break 0 +LOG: 658943150 ERROR INT10:PutPixel unhandled mode type 7 +LOG: SHELL:Redirect output to RC.TXT +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:512 (IF0:5), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:502 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:505 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:500 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:507 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:507 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:504 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:500 (IF0:1), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:504 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:506 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:506 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:504 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:504 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:506 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:511 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:511 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:518 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:510 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:512 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:500 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:510 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:504 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:506 (IF0:0), TX:0, Break 0 +LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:506 (IF0:0), TX:0, Break 0 diff --git a/emulator/render-bridge/pod_render_noskl.conf b/emulator/render-bridge/pod_render_noskl.conf index ac2df516..13a935f9 100644 --- a/emulator/render-bridge/pod_render_noskl.conf +++ b/emulator/render-bridge/pod_render_noskl.conf @@ -61,6 +61,7 @@ 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_NO_SKL=1 set BT_STACK_LOG=1 +set BT_MER_LOG=1 set BT_LAUNCH_LOG=1 set BT_FORCE_THROTTLE=0.6 set BT_FORCE_TURN=0.25 diff --git a/emulator/render-bridge/pod_render_rec.conf b/emulator/render-bridge/pod_render_rec.conf index 0e5c1299..b7e79425 100644 --- a/emulator/render-bridge/pod_render_rec.conf +++ b/emulator/render-bridge/pod_render_rec.conf @@ -1,72 +1,73 @@ -[sdl] -output=opengl -# higher,higher not highest: HIGH_PRIORITY_CLASS starved the host desktop; -# with the retry patches a rare dropout self-recovers (see gauge_rio.conf). -priority=higher,higher -[dosbox] -memsize=32 -machine=svga_s3 -[cpu] -core=dynamic -cputype=pentium -cycles=max -[sblaster] -sbtype=sb16 -sbbase=220 -irq=5 -dma=1 -hdma=5 -[mixer] -# match the EMU8000s' native rate (no resample) and buffer ~60ms so brief -# emulation-thread stalls (RIO retry recovery) don't audibly chop -rate=44100 -blocksize=1024 -prebuffer=60 -[serial] -# RIO on COM1 with the low-latency options (rxpollus/rxburst) so the board's -# few-ms ACK deadline is met; plasma display on COM2 (real pod has both). -# VWE fork namedpipe backend (com0com/realport retired -- COM1/COM2 gone): -# DOSBox = pipe client (retry), vRIO/vPLASMA apps = servers; an unconnected -# pipe behaves as an unplugged cable so the mission still runs. serialnamedpipe.h -serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16 -serial2=namedpipe pipe:vplasma -# live UNBUFFERED game output: DOS char devices are not buffered, so -# redirecting stdout to COM3 lands every line immediately. A normal -# '> file' redirect stays 0 bytes until the process exits, which hides -# all progress on a run that does NOT crash. -serial3=file file:C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt -[autoexec] -mount c "C:\VWE\TeslaRel410\ALPHA_1" -c: -cd \REL410\BT -set VIDEOFORMAT=svga -rem production pod card init (PARAMETR.BAT:181-186): DIAGNOSE + AWEUTIL per -rem card -- AWEUTIL /S does the EMU8000 bring-up and DRAM detect the HMI SOS -rem driver relies on; skipping it left the cards uninitialized (silent). -rem aweutil /s SKIPPED for now: it verifies the AWE32 GM ROM, which the -rem emulated cards lack (hangs in a retry loop) -- restore once the ROM is -rem dumped from a real card. diagnose /s kept (passes, sets mixer config). -set BLASTER=A220 I5 D1 H5 P330 T6 -c:\sb16\diagnose /s -set BLASTER=A240 I7 D3 H6 P300 T6 -c:\sb16\diagnose /s -set BLASTER=A220 I5 D1 H5 P330 T6 -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_LAUNCH_LOG=1 -set BT_STACK_LOG=1 -set BT_FORCE_THROTTLE=0.6 -set BT_FORCE_TURN=0.25 -set HEAPSIZE=15000000 -set L4GAUGE=640x480x16 -call setenv.bat r s n p -32rtm.exe -x -BTL4REC.EXE -egg testarn.egg > COM3 - -echo GAME-RC=%errorlevel% >> RC.TXT -32rtm.exe -u -echo ALPHA1-RUN-DONE -pause - +[sdl] +output=opengl +# higher,higher not highest: HIGH_PRIORITY_CLASS starved the host desktop; +# with the retry patches a rare dropout self-recovers (see gauge_rio.conf). +priority=higher,higher +[dosbox] +memsize=32 +machine=svga_s3 +[cpu] +core=dynamic +cputype=pentium +cycles=max +[sblaster] +sbtype=sb16 +sbbase=220 +irq=5 +dma=1 +hdma=5 +[mixer] +# match the EMU8000s' native rate (no resample) and buffer ~60ms so brief +# emulation-thread stalls (RIO retry recovery) don't audibly chop +rate=44100 +blocksize=1024 +prebuffer=60 +[serial] +# RIO on COM1 with the low-latency options (rxpollus/rxburst) so the board's +# few-ms ACK deadline is met; plasma display on COM2 (real pod has both). +# VWE fork namedpipe backend (com0com/realport retired -- COM1/COM2 gone): +# DOSBox = pipe client (retry), vRIO/vPLASMA apps = servers; an unconnected +# pipe behaves as an unplugged cable so the mission still runs. serialnamedpipe.h +serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16 +serial2=namedpipe pipe:vplasma +# live UNBUFFERED game output: DOS char devices are not buffered, so +# redirecting stdout to COM3 lands every line immediately. A normal +# '> file' redirect stays 0 bytes until the process exits, which hides +# all progress on a run that does NOT crash. +serial3=file file:C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +[autoexec] +mount c "C:\VWE\TeslaRel410\ALPHA_1" +c: +cd \REL410\BT +set VIDEOFORMAT=svga +rem production pod card init (PARAMETR.BAT:181-186): DIAGNOSE + AWEUTIL per +rem card -- AWEUTIL /S does the EMU8000 bring-up and DRAM detect the HMI SOS +rem driver relies on; skipping it left the cards uninitialized (silent). +rem aweutil /s SKIPPED for now: it verifies the AWE32 GM ROM, which the +rem emulated cards lack (hangs in a retry loop) -- restore once the ROM is +rem dumped from a real card. diagnose /s kept (passes, sets mixer config). +set BLASTER=A220 I5 D1 H5 P330 T6 +c:\sb16\diagnose /s +set BLASTER=A240 I7 D3 H6 P300 T6 +c:\sb16\diagnose /s +set BLASTER=A220 I5 D1 H5 P330 T6 +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_LAUNCH_LOG=1 +set BT_STACK_LOG=1 +set BT_MER_LOG=1 +set BT_FORCE_THROTTLE=0.6 +set BT_FORCE_TURN=0.25 +set HEAPSIZE=15000000 +set L4GAUGE=640x480x16 +call setenv.bat r s n p +32rtm.exe -x +BTL4REC.EXE -egg testarn.egg > COM3 + +echo GAME-RC=%errorlevel% >> RC.TXT +32rtm.exe -u +echo ALPHA1-RUN-DONE +pause + diff --git a/emulator/render-bridge/podlog.txt b/emulator/render-bridge/podlog.txt index f70ed31a..c014a09b 100644 --- a/emulator/render-bridge/podlog.txt +++ b/emulator/render-bridge/podlog.txt @@ -1,9 +1,10 @@ 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' -> 0x00a3fe78 type=1 enabled=1 +[torso] horizJoint 'jointtorso' -> 0x00a3d170 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 @@ -25,7 +26,7 @@ GaugeInterpreter: undefined label 'Initialization' [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=0x002c30f8 controlModeAttr=0x002c3134 +[mapper] ctor id=0 throttleAttr=0x009f4320 controlModeAttr=0x009f435c [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 @@ -41,68 +42,249 @@ 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=0x00ac513c -[launch] state=11 minPriorityEmpty=0 ticks=10820 +[launch] state=11 minPriorityEmpty=0 ticks=14713 [queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 -[launch] state=11 minPriorityEmpty=0 ticks=11832 +[posts] id3=416 +[launch] state=11 minPriorityEmpty=0 ticks=15726 [queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 -[launch] state=11 minPriorityEmpty=0 ticks=12842 +[posts] id3=502 +[launch] state=11 minPriorityEmpty=0 ticks=16736 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=11 minPriorityEmpty=0 ticks=13851 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=17745 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=11 minPriorityEmpty=0 ticks=14860 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=18754 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=15958 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=19831 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=17008 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=20940 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=18070 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=22051 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=19132 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=23160 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=20193 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=24269 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=21253 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=25380 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=22362 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=26489 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=23473 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=27598 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24504 pump=352/1499 -[launch] state=2 minPriorityEmpty=0 ticks=24583 +[posts] id3=530 +[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=28077 pump=352/1499 +[launch] state=2 minPriorityEmpty=0 ticks=28710 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=25692 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=26803 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=27912 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=29021 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=30132 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=31241 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=32350 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=33461 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=34572 -[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=35681 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=29819 [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 =5012 -[launch] state=2 minPriorityEmpty=0 ticks=36694 +iThinkIRQIsOn =1, actual state =1, characters sent =40 +[launch] state=2 minPriorityEmpty=0 ticks=30929 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=37738 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=32040 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=38800 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=33149 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[launch] state=2 minPriorityEmpty=0 ticks=39861 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=34258 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=40606 pump=495/2643 -[launch] state=2 minPriorityEmpty=0 ticks=40922 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=35369 [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 -Reference to a page you don't own -PF cr2= 7000 FA64 at 00FF 0000 66D9 -Unhandled exception 000E at 00FF 66D9 ErrCode 0004 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=36478 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=37587 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=38700 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=39809 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=40918 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=42029 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=43138 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=43949 pump=495/2643 +[launch] state=2 minPriorityEmpty=0 ticks=44248 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[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 +[launch] state=2 minPriorityEmpty=0 ticks=70885 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=71996 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=73107 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=74216 +[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 =43 +[launch] state=2 minPriorityEmpty=0 ticks=75328 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[stack] frame at 0x12dee7 drift=0 over 4004 frames ticks=75695 pump=781/4931 +[launch] state=2 minPriorityEmpty=0 ticks=76438 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=77547 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=78658 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=79767 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +MapDisplay: operating=1 static=7 moving=0 +[launch] state=2 minPriorityEmpty=0 ticks=80876 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=81987 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=83096 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=84205 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[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=(172.94,10,-401.227) yaw=-0.0736139 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=(174.491,10,-386.899) yaw=-0.140905 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=(177.005,10,-372.693) yaw=-0.208286 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=(180.466,10,-358.703) yaw=-0.275605 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=(184.942,10,-344.747) yaw=-0.344067 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=(190.352,10,-331.157) yaw=-0.412398 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=(196.676,10,-317.967) yaw=-0.480733 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=(203.902,10,-305.216) yaw=-0.549203 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=(211.966,10,-293.012) yaw=-0.61754 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=(220.845,10,-281.387) yaw=-0.685878 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=(230.517,10,-270.375) yaw=-0.754352 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=(240.898,10,-260.07) yaw=-0.822691 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=(251.959,10,-250.498) yaw=-0.89103 spd=14.4 eyePitch=0 eyeYaw=0 diff --git a/emulator/render-bridge/podlog_shipped.txt b/emulator/render-bridge/podlog_shipped.txt index edf1ca54..babb708c 100644 --- a/emulator/render-bridge/podlog_shipped.txt +++ b/emulator/render-bridge/podlog_shipped.txt @@ -1,7 +1,11 @@ BattleTech v4.10 BTL4Application::BTL4Application GaugeInterpreter: undefined label 'Initialization' -MakeVehicleSystems hud=0x01154164 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =49 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =53 +MakeVehicleSystems hud=0x01158f94 Warning: damage zone 'dz_missle' not found! Warning: damage zone 'dz_missle' not found! Warning: damage zone 'dz_lmissle' not found! @@ -9,10 +13,66 @@ 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 =62 +iThinkIRQIsOn =1, actual state =1, characters sent =112 LBE4ControlsManager::Execute, lost RIO analog request -iThinkIRQIsOn =1, actual state =1, characters sent =687 +iThinkIRQIsOn =1, actual state =1, characters sent =1426 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =1821 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =2998 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =3130 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =5534 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =7017 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =7177 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =7181 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 =9786 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =10036 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =11117 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =13401 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =13894 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =14886 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =16513 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =16517 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =16631 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =16986 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =16990 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =17198 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =18111 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =18200 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =18204 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =18340 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =18344 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =18848 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =21370 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =21408 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =21412 diff --git a/restoration/source410/BT_L4/BTL4VID.CPP b/restoration/source410/BT_L4/BTL4VID.CPP index 5b056402..e058fd31 100644 --- a/restoration/source410/BT_L4/BTL4VID.CPP +++ b/restoration/source410/BT_L4/BTL4VID.CPP @@ -367,6 +367,33 @@ void Check(this); Check(entity); + // + // RENDERABLE-BUILD TRACE (env BT_MER_LOG). + // + // The mission never launches because 530 renderer events queue at + // priority 0 during load and the background pump drains only one per + // seven frames, and the page fault lands on one of the LAST ~35 of them. + // So the fault belongs to a specific entity, not to elapsed time. The + // oldest log named it -- class 42, UnscalableTerrain -- but that was a + // different build, so this prints the class of every entity as its + // renderables are built and the last line before the fault names the + // culprit outright. One line per entity, not per frame: ~530 lines for a + // whole run, which the COM3 log carries without the 3x cost that per-frame + // logging brought. + // + if (getenv("BT_MER_LOG")) + { + static int + mer_count = 0; + + mer_count++; + DEBUG_STREAM << "[mer] " << mer_count + << " class=" << (int)entity->GetClassID() + << " view=" << (int)view_type + << " res=" << (model_resource ? 1 : 0) + << endl << flush; + } + switch (entity->GetClassID()) { case RegisteredClass::MechClassID: @@ -410,6 +437,22 @@ void { const L4VideoObject *video_object = video_wrapper->GetVideoObject(); + + // + // The inside view produced NO [skl] line, so this chain + // evidently holds no Skeleton entry and we fall through to + // the engine -- straight into the eyepoint construction that + // faults. Print what is actually in the chain rather than + // assuming. + // + if (getenv("BT_MER_LOG")) + { + DEBUG_STREAM << " [vid] type=" + << (int)video_object->GetResourceType() + << " file='" << video_object->GetObjectFilename() + << "'" << endl << flush; + } + if (video_object->GetResourceType() == L4VideoObject::Skeleton) { @@ -422,6 +465,23 @@ void if (!handled) { + // + // Where is the stack HERE? The fault reads through a frame + // pointer at 0x7000FA74, while the main loop's frame sits at + // 0x12DEE7 -- 1.79 GB apart. Either something between this + // point and the fault switches stacks, or the frame pointer is + // being corrupted on the way in. One printout distinguishes + // them, and it is the last place we control before the engine + // takes over. + // + if (getenv("BT_MER_LOG")) + { + char + here; + + DEBUG_STREAM << " [chain] into DPLRenderer, stack at 0x" + << hex << (int)&here << dec << endl << flush; + } DPLRenderer::MakeEntityRenderables( entity, model_resource, view_type); } diff --git a/restoration/source410/MUNGA/APP.HPP b/restoration/source410/MUNGA/APP.HPP index 05f83726..fb006436 100644 --- a/restoration/source410/MUNGA/APP.HPP +++ b/restoration/source410/MUNGA/APP.HPP @@ -1,827 +1,828 @@ -#if !defined(APP_HPP) -# define APP_HPP - -# if !defined(NETWORK_HPP) -# include -# endif -# if !defined(EVENT_HPP) -# include -# endif -# if !defined(STATE_HPP) -# include -# endif -# if !defined(CSTR_HPP) -# include -# endif - -#if defined(TRACE_FOREGROUND_PROCESSING) - extern BitTrace Foreground_Processing; - #define SET_FOREGROUND_PROCESSING() Foreground_Processing.Set() - #define CLEAR_FOREGROUND_PROCESSING() Foreground_Processing.Clear() -#else - #define SET_FOREGROUND_PROCESSING() - #define CLEAR_FOREGROUND_PROCESSING() -#endif - -#if defined(TRACE_UPDATE_MANAGER) - extern BitTrace Update_Manager; - #define SET_UPDATE_MANAGER() Update_Manager.Set() - #define CLEAR_UPDATE_MANAGER() Update_Manager.Clear() -#else - #define SET_UPDATE_MANAGER() - #define CLEAR_UPDATE_MANAGER() -#endif - -#if defined(TRACE_RENDERER_MANAGER) - extern BitTrace Renderer_Manager; - #define SET_RENDERER_MANAGER() Renderer_Manager.Set() - #define CLEAR_RENDERER_MANAGER() Renderer_Manager.Clear() -#else - #define SET_RENDERER_MANAGER() - #define CLEAR_RENDERER_MANAGER() -#endif - -class Mission; -class Registry; -class InterestManager; -class HostManager; -class UpdateManager; -class RendererManager; -class ControlsManager; -class Entity; -class EntityManager; -class Renderer; -class BackgroundTasks; -class ApplicationManager; -class CameraShip; -class SpoolFile; -class AudioRenderer; -class VideoRenderer; -class GaugeRenderer; -class IcomManager; -class ModeManager; -class Player; -class GeneralEventQueue; -class Entity__MakeMessage; -class ResourceFile; - -//########################################################################## -//######################### Application ############################## -//########################################################################## - -class Application__StateQueryMessage; -class Application__CheckLoadMessage; -class Application__RunMissionMessage; -class Application__StopMissionMessage; -class Application__SuspendMissionMessage; -class Application__ResumeMissionMessage; -class Application__AbortMissionMessage; - -enum EventPriorities -{ - MinEventPriority = 0, - LowEventPriority, - DefaultEventPriority, - HighEventPriority, - MaxEventPriority -}; - -const EventPriorities ControlsEventPriority = HighEventPriority; -const EventPriorities CreationEventPriority = HighEventPriority; -const EventPriorities DestructionEventPriority = HighEventPriority; -const EventPriorities UpdateEventPriority = MaxEventPriority; -const EventPriorities HighInterestEventPriority = DefaultEventPriority; -const EventPriorities LowInterestEventPriority = LowEventPriority; -const EventPriorities EntityManagerEventPriority = DefaultEventPriority; -const EventPriorities EntityInvalidEventPriority = LowEventPriority; - -enum ApplicationID -{ - RPL4, - BTL4, - NDL4 -}; - -#define EVENT_PRIORITIES_COUNT (5) - -class Application: - public NetworkClient -{ -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Construction, Destruction, and Testing -// -public: - Application( - ResourceFile *resource_file, - ApplicationID application_id, - ClassID class_ID=ApplicationClassID, - SharedData &shared_data=DefaultData - ); - ~Application(); - - Logical - TestInstance() const; - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Execution control -// -public: - virtual void Initialize(); - virtual void - LoadBackgroundTasks(); - - virtual Logical - ExecuteForeground( - Time start_of_frame, - Scalar frame_duration - ); - - virtual void - ExecuteBackgroundTask(); - - void - Stop(); - - virtual Logical - Shutdown(int remainingApps = 0); - - virtual void - Terminate(); - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Creation Callbacks -// -public: - void - CreateMission(NotationFile *egg_notation_file); - - virtual Entity* - MakeAndLinkViewpointEntity(Entity__MakeMessage *message); - -protected: - virtual Mission* - MakeMission( - NotationFile *notation_file, - ResourceFile *resources - ); - - virtual Entity* - MakeViewpointEntity(Entity__MakeMessage *message); - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Current mission -// -public: - Mission* - GetCurrentMission(); - Player* - GetMissionPlayer() - {return missionPlayer;} - - SpoolFile* - GetSpoolFile() - {return spoolFile;} - -protected: - Player - *missionPlayer; - SpoolFile* - spoolFile; - Time - lastCreationMessage; - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Application State -// -public: - enum { - InitializingState = 0, - WaitingForEgg, - LoadingMission, - WaitingForLaunch, - LaunchingMission, - RunningMission, - EndingMission, - StoppingMission, - SuspendingMission, - ResumingMission, - AbortingMission, - CreatingMission, - ApplicationStateCount - }; - - Enumeration - GetApplicationState(); - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// System level event processing -// -public: - void - Post( - int priority, - Receiver *target, - Receiver::Message *message, - const Time &when=Time::Null - ); - - void - SendEvent( - int priority, - HostID host_ID, - NetworkManager::ClientID client_ID, - Receiver::Message *message, - Time when=Time::Null - ); - - void - BroadcastEvent( - int priority, - NetworkManager::ClientID client_ID, - Receiver::Message *message, - Time when=Time::Null - ); - - void - ExclusiveBroadcastEvent( - int priority, - NetworkManager::ClientID client_ID, - Receiver::Message *message, - Time when=Time::Null - ); - - #if defined(TRACE_EVENT_COUNT) - size_t - GetEventCount(); - #endif - - void - DumpEventQueue(); - -#if 0 -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Creation and Interest Event Posting -// -public: - void - PostCreationEvent( - Receiver::Message *message, - const Time &when=Time::Null - ); - void - PostInterestEvent( - Entity *entity, - Renderer *renderer - ); - void - PostUpdateEvent( - Entity *entity, - Receiver::Message *message - ); - void - PostDestructionEvent( - Entity *entity, - Receiver::Message *message - ); -#endif - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// System level message processing -// -public: - void - SendMessage( - HostID host_ID, - NetworkManager::ClientID client_ID, - Receiver::Message *message - ); - - void - BroadcastMessage( - NetworkManager::ClientID client_ID, - Receiver::Message *message - ); - - void - ExclusiveBroadcastMessage( - NetworkManager::ClientID client_ID, - Receiver::Message *message - ); - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Event level event processing -// -public: - Logical - ProcessOneEvent(int min_priority=0); - - void - ProcessAllEvents(int min_priority=0); - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Accessors -// -public: - Scalar - GetApplicationLoopFrameRate(); - Scalar - GetSecondsRemainingInGame() - {return secondsRemainingInGame;} - ApplicationID - GetApplicationID() - {return applicationID;} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Module accessors -// -public: - // - // Managers - // - NetworkManager* - GetNetworkManager(); - EntityManager* - GetEntityManager(); - Registry* - GetRegistry(); - HostManager* - GetHostManager(); - InterestManager* - GetInterestManager(); - UpdateManager* - GetUpdateManager(); - RendererManager* - GetRendererManager(); - ControlsManager* - GetControlsManager(); - IcomManager* - GetIntercomManager(); - AudioRenderer* - GetAudioRenderer(); - VideoRenderer* - GetVideoRenderer(); - GaugeRenderer* - GetGaugeRenderer(); - ModeManager* - GetModeManager(); - - // - // StreamableResourceFile - // - ResourceFile* - GetResourceFile(); - void - SetResourceFile(ResourceFile *resources); - ApplicationManager* - GetApplicationManager(); - - // - // Viewpoint entity - // - Entity* - GetViewpointEntity(); - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Message Support -// -public: - enum { - StateQueryMessageID = NetworkClient::NextMessageID, - CheckLoadMessageID, - RunMissionMessageID, - StopMissionMessageID, - KeyCommandMessageID, - SuspendMissionMessageID, - ResumeMissionMessageID, - LoadMissionMessageID, - AbortMissionMessageID, - NextMessageID - }; - - typedef Application__StateQueryMessage StateQueryMessage; - typedef Application__CheckLoadMessage CheckLoadMessage; - typedef Application__RunMissionMessage RunMissionMessage; - typedef Application__StopMissionMessage StopMissionMessage; - typedef Application__SuspendMissionMessage SuspendMissionMessage; - typedef Application__ResumeMissionMessage ResumeMissionMessage; - typedef Application__AbortMissionMessage AbortMissionMessage; - - static const HandlerEntry - MessageHandlerEntries[]; - //static MessageHandlerSet MessageHandlers; - static MessageHandlerSet MessageHandlers; - - void - StateQueryMessageHandler(StateQueryMessage *message); - void - CheckLoadMessageHandler(CheckLoadMessage *message); - void - RunMissionMessageHandler(RunMissionMessage *message); - void - StopMissionMessageHandler(StopMissionMessage *message); - void - SuspendMissionMessageHandler(SuspendMissionMessage *message); - void - ResumeMissionMessageHandler(ResumeMissionMessage *message); - void - KeyCommandMessageHandler(ReceiverDataMessageOf *message); - void - LoadMissionMessageHandler(Message *message); - void - AbortMissionMessageHandler(AbortMissionMessage *message); - - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Shared Data Support -// -public: - static Derivation ClassDerivations; - static SharedData DefaultData; - - static Logical DoSuppressGauges() { return suppressGauges; } - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Modules -// -protected: - // - // Managers - // - NetworkManager - *networkManager; - EntityManager - *entityManager; - Registry - *registry; - HostManager - *hostManager; - InterestManager - *interestManager; - UpdateManager - *updateManager; - RendererManager - *rendererManager; - ControlsManager - *controlsManager; - IcomManager - *intercomManager; - AudioRenderer - *audioRenderer; - VideoRenderer - *videoRenderer; - GaugeRenderer - *gaugeRenderer; - ModeManager - *modeManager; - - static Logical suppressGauges; - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Module Creation -// -protected: - // - // Managers - // - virtual NetworkManager* - MakeNetworkManager(); - - virtual Registry* - MakeRegistry(); - - virtual ControlsManager* - MakeControlsManager(); - - virtual IcomManager* - MakeIntercomManager(); - - virtual InterestManager* - MakeInterestManager(); - - virtual AudioRenderer* - MakeAudioRenderer(); - - virtual VideoRenderer* - MakeVideoRenderer(); - - virtual GaugeRenderer* - MakeGaugeRenderer(); - - virtual ModeManager* - MakeModeManager(); - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Private data -// -protected: - ApplicationID - applicationID; - Scalar - secondsRemainingInGame; - Time - gameStarted; - GeneralEventQueue - *eventQueue; - BackgroundTasks - *backgroundTasks; - ResourceFile - *resourceFile; - Entity - *viewpointEntity; - Logical - executeFrames; - StateIndicator - applicationState; - Mission - *currentMission; - Logical - routePacketFinished; -}; - -extern Application *application; -extern int Exit_Code; - -//~~~~~~~~~~~~~~~~~~~~ Application__CheckLoadMessage ~~~~~~~~~~~~~~~~~~~~~~~ - -class Application__CheckLoadMessage: - public NetworkClient::Message -{ -public: - Application__CheckLoadMessage(); -}; - -//~~~~~~~~~~~~~~~~~~~~~~~~~ Application inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -inline Mission* - Application::GetCurrentMission() -{ - Check(this); - return currentMission; -} - -inline Enumeration - Application::GetApplicationState() -{ - Check(this); - return applicationState.GetState(); -} - -inline void - Application::Post( - int priority, - Receiver *target, - Receiver::Message *message, - const Time &when - ) -{ - Check(this); - if (priority == MinEventPriority && message != NULL) - { - Check(message); - if ( - (int)message->messageID >= 0 && - (int)message->messageID < POST_TALLY_IDS - ) - { - postTally[(int)message->messageID]++; - } - } - eventQueue->Post(priority,target,message,when); -} - -inline void - Application::SendEvent( - int priority, - HostID host_ID, - NetworkClient::ClientID client_ID, - Receiver::Message *message, - Time when - ) -{ - Check(this); - eventQueue->SendEvent(priority,host_ID,client_ID,message,when); -} - -inline void - Application::BroadcastEvent( - int priority, - NetworkClient::ClientID client_ID, - Receiver::Message *message, - Time when - ) -{ - Check(this); - eventQueue->BroadcastEvent(priority,client_ID,message,when); -} - -inline void - Application::ExclusiveBroadcastEvent( - int priority, - NetworkClient::ClientID client_ID, - Receiver::Message *message, - Time when - ) -{ - Check(this); - eventQueue->ExclusiveBroadcastEvent(priority,client_ID,message,when); -} - -#if defined(GET_EVENT_COUNT) - inline size_t - Application::GetEventCount() - { - return eventQueue->GetEventCount(); - } -#endif - -inline void - Application::DumpEventQueue() -{ - eventQueue->DumpEventQueue(); -} - - -inline void - Application::SendMessage( - HostID host_ID, - NetworkClient::ClientID client_ID, - Receiver::Message *message - ) -{ - Check(this); - networkManager->Send(message,client_ID,host_ID); -} - -inline void - Application::BroadcastMessage( - NetworkManager::ClientID client_ID, - Receiver::Message *message - ) -{ - Check(this); - networkManager->Broadcast(message,client_ID); -} - -inline void - Application::ExclusiveBroadcastMessage( - NetworkManager::ClientID client_ID, - Receiver::Message *message - ) -{ - Check(this); - networkManager->ExclusiveBroadcast(message,client_ID); -} - -// -// EVENT-PUMP COUNTERS (read by the BT_STACK_LOG probe in ExecuteForeground). -// -// The application parks in LoadingMission because IsPriorityEmpty(0) never -// becomes true, and priority 0 is where the interest manager queues every -// renderer event while the mission loads. Three very different faults look -// identical from outside -- the pump never runs, the pump runs but finds -// nothing (so something else holds the queue), or the pump drains events as -// fast as they are re-posted. Counting calls against hits separates them in -// a single run. -// -extern long - eventPumpCalls; -extern long - eventPumpHits; - -// -// POST TALLY, by message ID, for priority 0 only. -// -// Measured: priority 0 is never empty, nothing above it is busy, and -// PeekAtNextEvent always reports a ready event while the pump drains ~143 per -// simulated second. That is a REFILL loop -- something re-posts priority-0 -// work as fast as it is consumed -- and the counters are identical to the byte -// across runs, so it is deterministic rather than a race. -// -// Only the interest manager posts at priority 0 (it maps every renderer event -// there while the application is not RunningMission), so naming the message -// names the flooder. -// -#define POST_TALLY_IDS 64 -extern long - postTally[POST_TALLY_IDS]; - -inline Logical - Application::ProcessOneEvent(int min_priority) -{ - Check(this); - Logical processed; - - eventPumpCalls++; - processed = eventQueue->ProcessOneEvent(min_priority); - if (processed) - { - eventPumpHits++; - } - return processed; -} - -inline void - Application::ProcessAllEvents(int min_priority) -{ - Check(this); - eventQueue->ProcessAllEvents(min_priority); -} - -inline NetworkManager* - Application::GetNetworkManager() -{ - Check(networkManager); - return networkManager; -} - -inline EntityManager* - Application::GetEntityManager() -{ - return entityManager; -} - -inline Registry* - Application::GetRegistry() -{ - return registry; -} - -inline HostManager* - Application::GetHostManager() -{ - return hostManager; -} - -inline InterestManager* - Application::GetInterestManager() -{ - return interestManager; -} - -inline UpdateManager* - Application::GetUpdateManager() -{ - return updateManager; -} - -inline RendererManager* - Application::GetRendererManager() -{ - return rendererManager; -} - -inline ControlsManager* - Application::GetControlsManager() -{ - return controlsManager; -} - -inline IcomManager* - Application::GetIntercomManager() -{ - return intercomManager; -} - -inline ResourceFile* - Application::GetResourceFile() -{ - return resourceFile; -} - -inline void - Application::SetResourceFile(ResourceFile *resources) -{ - resourceFile = resources; -} - -inline Entity* - Application::GetViewpointEntity() -{ - return viewpointEntity; -} - -inline AudioRenderer* - Application::GetAudioRenderer() -{ - return audioRenderer; -} - -inline VideoRenderer* - Application::GetVideoRenderer() -{ - return videoRenderer; -} - -inline GaugeRenderer* - Application::GetGaugeRenderer() -{ - return gaugeRenderer; -} - -inline ModeManager* - Application::GetModeManager() -{ - return modeManager; -} - -#endif +#if !defined(APP_HPP) +# define APP_HPP + +# if !defined(NETWORK_HPP) +# include +# endif +# if !defined(EVENT_HPP) +# include +# endif +# if !defined(STATE_HPP) +# include +# endif +# if !defined(CSTR_HPP) +# include +# endif + +#if defined(TRACE_FOREGROUND_PROCESSING) + extern BitTrace Foreground_Processing; + #define SET_FOREGROUND_PROCESSING() Foreground_Processing.Set() + #define CLEAR_FOREGROUND_PROCESSING() Foreground_Processing.Clear() +#else + #define SET_FOREGROUND_PROCESSING() + #define CLEAR_FOREGROUND_PROCESSING() +#endif + +#if defined(TRACE_UPDATE_MANAGER) + extern BitTrace Update_Manager; + #define SET_UPDATE_MANAGER() Update_Manager.Set() + #define CLEAR_UPDATE_MANAGER() Update_Manager.Clear() +#else + #define SET_UPDATE_MANAGER() + #define CLEAR_UPDATE_MANAGER() +#endif + +#if defined(TRACE_RENDERER_MANAGER) + extern BitTrace Renderer_Manager; + #define SET_RENDERER_MANAGER() Renderer_Manager.Set() + #define CLEAR_RENDERER_MANAGER() Renderer_Manager.Clear() +#else + #define SET_RENDERER_MANAGER() + #define CLEAR_RENDERER_MANAGER() +#endif + +class Mission; +class Registry; +class InterestManager; +class HostManager; +class UpdateManager; +class RendererManager; +class ControlsManager; +class Entity; +class EntityManager; +class Renderer; +class BackgroundTasks; +class ApplicationManager; +class CameraShip; +class SpoolFile; +class AudioRenderer; +class VideoRenderer; +class GaugeRenderer; +class IcomManager; +class ModeManager; +class Player; +class GeneralEventQueue; +class Entity__MakeMessage; +class ResourceFile; + +//########################################################################## +//######################### Application ############################## +//########################################################################## + +class Application__StateQueryMessage; +class Application__CheckLoadMessage; +class Application__RunMissionMessage; +class Application__StopMissionMessage; +class Application__SuspendMissionMessage; +class Application__ResumeMissionMessage; +class Application__AbortMissionMessage; + +enum EventPriorities +{ + MinEventPriority = 0, + LowEventPriority, + DefaultEventPriority, + HighEventPriority, + MaxEventPriority +}; + +const EventPriorities ControlsEventPriority = HighEventPriority; +const EventPriorities CreationEventPriority = HighEventPriority; +const EventPriorities DestructionEventPriority = HighEventPriority; +const EventPriorities UpdateEventPriority = MaxEventPriority; +const EventPriorities HighInterestEventPriority = DefaultEventPriority; +const EventPriorities LowInterestEventPriority = LowEventPriority; +const EventPriorities EntityManagerEventPriority = DefaultEventPriority; +const EventPriorities EntityInvalidEventPriority = LowEventPriority; + +enum ApplicationID +{ + RPL4, + BTL4, + NDL4 +}; + +#define EVENT_PRIORITIES_COUNT (5) + +class Application: + public NetworkClient +{ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Construction, Destruction, and Testing +// +public: + Application( + ResourceFile *resource_file, + ApplicationID application_id, + ClassID class_ID=ApplicationClassID, + SharedData &shared_data=DefaultData + ); + ~Application(); + + Logical + TestInstance() const; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execution control +// +public: + virtual void Initialize(); + virtual void + LoadBackgroundTasks(); + + virtual Logical + ExecuteForeground( + Time start_of_frame, + Scalar frame_duration + ); + + virtual void + ExecuteBackgroundTask(); + + void + Stop(); + + virtual Logical + Shutdown(int remainingApps = 0); + + virtual void + Terminate(); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Creation Callbacks +// +public: + void + CreateMission(NotationFile *egg_notation_file); + + virtual Entity* + MakeAndLinkViewpointEntity(Entity__MakeMessage *message); + +protected: + virtual Mission* + MakeMission( + NotationFile *notation_file, + ResourceFile *resources + ); + + virtual Entity* + MakeViewpointEntity(Entity__MakeMessage *message); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Current mission +// +public: + Mission* + GetCurrentMission(); + Player* + GetMissionPlayer() + {return missionPlayer;} + + SpoolFile* + GetSpoolFile() + {return spoolFile;} + +protected: + Player + *missionPlayer; + SpoolFile* + spoolFile; + Time + lastCreationMessage; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Application State +// +public: + enum { + InitializingState = 0, + WaitingForEgg, + LoadingMission, + WaitingForLaunch, + LaunchingMission, + RunningMission, + EndingMission, + StoppingMission, + SuspendingMission, + ResumingMission, + AbortingMission, + CreatingMission, + ApplicationStateCount + }; + + Enumeration + GetApplicationState(); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// System level event processing +// +public: + void + Post( + int priority, + Receiver *target, + Receiver::Message *message, + const Time &when=Time::Null + ); + + void + SendEvent( + int priority, + HostID host_ID, + NetworkManager::ClientID client_ID, + Receiver::Message *message, + Time when=Time::Null + ); + + void + BroadcastEvent( + int priority, + NetworkManager::ClientID client_ID, + Receiver::Message *message, + Time when=Time::Null + ); + + void + ExclusiveBroadcastEvent( + int priority, + NetworkManager::ClientID client_ID, + Receiver::Message *message, + Time when=Time::Null + ); + + #if defined(TRACE_EVENT_COUNT) + size_t + GetEventCount(); + #endif + + void + DumpEventQueue(); + +#if 0 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Creation and Interest Event Posting +// +public: + void + PostCreationEvent( + Receiver::Message *message, + const Time &when=Time::Null + ); + void + PostInterestEvent( + Entity *entity, + Renderer *renderer + ); + void + PostUpdateEvent( + Entity *entity, + Receiver::Message *message + ); + void + PostDestructionEvent( + Entity *entity, + Receiver::Message *message + ); +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// System level message processing +// +public: + void + SendMessage( + HostID host_ID, + NetworkManager::ClientID client_ID, + Receiver::Message *message + ); + + void + BroadcastMessage( + NetworkManager::ClientID client_ID, + Receiver::Message *message + ); + + void + ExclusiveBroadcastMessage( + NetworkManager::ClientID client_ID, + Receiver::Message *message + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Event level event processing +// +public: + Logical + ProcessOneEvent(int min_priority=0); + + void + ProcessAllEvents(int min_priority=0); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Accessors +// +public: + Scalar + GetApplicationLoopFrameRate(); + Scalar + GetSecondsRemainingInGame() + {return secondsRemainingInGame;} + ApplicationID + GetApplicationID() + {return applicationID;} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Module accessors +// +public: + // + // Managers + // + NetworkManager* + GetNetworkManager(); + EntityManager* + GetEntityManager(); + Registry* + GetRegistry(); + HostManager* + GetHostManager(); + InterestManager* + GetInterestManager(); + UpdateManager* + GetUpdateManager(); + RendererManager* + GetRendererManager(); + ControlsManager* + GetControlsManager(); + IcomManager* + GetIntercomManager(); + AudioRenderer* + GetAudioRenderer(); + VideoRenderer* + GetVideoRenderer(); + GaugeRenderer* + GetGaugeRenderer(); + ModeManager* + GetModeManager(); + + // + // StreamableResourceFile + // + ResourceFile* + GetResourceFile(); + void + SetResourceFile(ResourceFile *resources); + ApplicationManager* + GetApplicationManager(); + + // + // Viewpoint entity + // + Entity* + GetViewpointEntity(); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Message Support +// +public: + enum { + StateQueryMessageID = NetworkClient::NextMessageID, + CheckLoadMessageID, + RunMissionMessageID, + StopMissionMessageID, + KeyCommandMessageID, + SuspendMissionMessageID, + ResumeMissionMessageID, + LoadMissionMessageID, + AbortMissionMessageID, + NextMessageID + }; + + typedef Application__StateQueryMessage StateQueryMessage; + typedef Application__CheckLoadMessage CheckLoadMessage; + typedef Application__RunMissionMessage RunMissionMessage; + typedef Application__StopMissionMessage StopMissionMessage; + typedef Application__SuspendMissionMessage SuspendMissionMessage; + typedef Application__ResumeMissionMessage ResumeMissionMessage; + typedef Application__AbortMissionMessage AbortMissionMessage; + + static const HandlerEntry + MessageHandlerEntries[]; + //static MessageHandlerSet MessageHandlers; + static MessageHandlerSet MessageHandlers; + + void + StateQueryMessageHandler(StateQueryMessage *message); + void + CheckLoadMessageHandler(CheckLoadMessage *message); + void + RunMissionMessageHandler(RunMissionMessage *message); + void + StopMissionMessageHandler(StopMissionMessage *message); + void + SuspendMissionMessageHandler(SuspendMissionMessage *message); + void + ResumeMissionMessageHandler(ResumeMissionMessage *message); + void + KeyCommandMessageHandler(ReceiverDataMessageOf *message); + void + LoadMissionMessageHandler(Message *message); + void + AbortMissionMessageHandler(AbortMissionMessage *message); + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Shared Data Support +// +public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + static Logical DoSuppressGauges() { return suppressGauges; } + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Modules +// +protected: + // + // Managers + // + NetworkManager + *networkManager; + EntityManager + *entityManager; + Registry + *registry; + HostManager + *hostManager; + InterestManager + *interestManager; + UpdateManager + *updateManager; + RendererManager + *rendererManager; + ControlsManager + *controlsManager; + IcomManager + *intercomManager; + AudioRenderer + *audioRenderer; + VideoRenderer + *videoRenderer; + GaugeRenderer + *gaugeRenderer; + ModeManager + *modeManager; + + static Logical suppressGauges; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Module Creation +// +protected: + // + // Managers + // + virtual NetworkManager* + MakeNetworkManager(); + + virtual Registry* + MakeRegistry(); + + virtual ControlsManager* + MakeControlsManager(); + + virtual IcomManager* + MakeIntercomManager(); + + virtual InterestManager* + MakeInterestManager(); + + virtual AudioRenderer* + MakeAudioRenderer(); + + virtual VideoRenderer* + MakeVideoRenderer(); + + virtual GaugeRenderer* + MakeGaugeRenderer(); + + virtual ModeManager* + MakeModeManager(); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Private data +// +protected: + ApplicationID + applicationID; + Scalar + secondsRemainingInGame; + Time + gameStarted; + GeneralEventQueue + *eventQueue; + BackgroundTasks + *backgroundTasks; + ResourceFile + *resourceFile; + Entity + *viewpointEntity; + Logical + executeFrames; + StateIndicator + applicationState; + Mission + *currentMission; + Logical + routePacketFinished; +}; + +extern Application *application; +extern int Exit_Code; + +//~~~~~~~~~~~~~~~~~~~~ Application__CheckLoadMessage ~~~~~~~~~~~~~~~~~~~~~~~ + +class Application__CheckLoadMessage: + public NetworkClient::Message +{ +public: + Application__CheckLoadMessage(); +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~ Application inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +inline Mission* + Application::GetCurrentMission() +{ + Check(this); + return currentMission; +} + +inline Enumeration + Application::GetApplicationState() +{ + Check(this); + return applicationState.GetState(); +} + +// +// POST TALLY, by message ID, for priority 0 only. +// +// Measured: priority 0 is never empty, nothing above it is busy, and +// PeekAtNextEvent always reports a ready event while the pump drains ~143 per +// simulated second. That is a REFILL loop -- something re-posts priority-0 +// work as fast as it is consumed -- and the counters are identical to the byte +// across runs, so it is deterministic rather than a race. +// +// Only the interest manager posts at priority 0 (it maps every renderer event +// there while the application is not RunningMission), so naming the message +// names the flooder. +// +#define POST_TALLY_IDS 64 +extern long + postTally[POST_TALLY_IDS]; + +inline void + Application::Post( + int priority, + Receiver *target, + Receiver::Message *message, + const Time &when + ) +{ + Check(this); + if (priority == MinEventPriority && message != NULL) + { + Check(message); + if ( + (int)message->messageID >= 0 && + (int)message->messageID < POST_TALLY_IDS + ) + { + postTally[(int)message->messageID]++; + } + } + eventQueue->Post(priority,target,message,when); +} + +inline void + Application::SendEvent( + int priority, + HostID host_ID, + NetworkClient::ClientID client_ID, + Receiver::Message *message, + Time when + ) +{ + Check(this); + eventQueue->SendEvent(priority,host_ID,client_ID,message,when); +} + +inline void + Application::BroadcastEvent( + int priority, + NetworkClient::ClientID client_ID, + Receiver::Message *message, + Time when + ) +{ + Check(this); + eventQueue->BroadcastEvent(priority,client_ID,message,when); +} + +inline void + Application::ExclusiveBroadcastEvent( + int priority, + NetworkClient::ClientID client_ID, + Receiver::Message *message, + Time when + ) +{ + Check(this); + eventQueue->ExclusiveBroadcastEvent(priority,client_ID,message,when); +} + +#if defined(GET_EVENT_COUNT) + inline size_t + Application::GetEventCount() + { + return eventQueue->GetEventCount(); + } +#endif + +inline void + Application::DumpEventQueue() +{ + eventQueue->DumpEventQueue(); +} + + +inline void + Application::SendMessage( + HostID host_ID, + NetworkClient::ClientID client_ID, + Receiver::Message *message + ) +{ + Check(this); + networkManager->Send(message,client_ID,host_ID); +} + +inline void + Application::BroadcastMessage( + NetworkManager::ClientID client_ID, + Receiver::Message *message + ) +{ + Check(this); + networkManager->Broadcast(message,client_ID); +} + +inline void + Application::ExclusiveBroadcastMessage( + NetworkManager::ClientID client_ID, + Receiver::Message *message + ) +{ + Check(this); + networkManager->ExclusiveBroadcast(message,client_ID); +} + +// +// EVENT-PUMP COUNTERS (read by the BT_STACK_LOG probe in ExecuteForeground). +// +// The application parks in LoadingMission because IsPriorityEmpty(0) never +// becomes true, and priority 0 is where the interest manager queues every +// renderer event while the mission loads. Three very different faults look +// identical from outside -- the pump never runs, the pump runs but finds +// nothing (so something else holds the queue), or the pump drains events as +// fast as they are re-posted. Counting calls against hits separates them in +// a single run. +// +extern long + eventPumpCalls; +extern long + eventPumpHits; + + +inline Logical + Application::ProcessOneEvent(int min_priority) +{ + Check(this); + Logical processed; + + eventPumpCalls++; + processed = eventQueue->ProcessOneEvent(min_priority); + if (processed) + { + eventPumpHits++; + } + return processed; +} + +inline void + Application::ProcessAllEvents(int min_priority) +{ + Check(this); + eventQueue->ProcessAllEvents(min_priority); +} + +inline NetworkManager* + Application::GetNetworkManager() +{ + Check(networkManager); + return networkManager; +} + +inline EntityManager* + Application::GetEntityManager() +{ + return entityManager; +} + +inline Registry* + Application::GetRegistry() +{ + return registry; +} + +inline HostManager* + Application::GetHostManager() +{ + return hostManager; +} + +inline InterestManager* + Application::GetInterestManager() +{ + return interestManager; +} + +inline UpdateManager* + Application::GetUpdateManager() +{ + return updateManager; +} + +inline RendererManager* + Application::GetRendererManager() +{ + return rendererManager; +} + +inline ControlsManager* + Application::GetControlsManager() +{ + return controlsManager; +} + +inline IcomManager* + Application::GetIntercomManager() +{ + return intercomManager; +} + +inline ResourceFile* + Application::GetResourceFile() +{ + return resourceFile; +} + +inline void + Application::SetResourceFile(ResourceFile *resources) +{ + resourceFile = resources; +} + +inline Entity* + Application::GetViewpointEntity() +{ + return viewpointEntity; +} + +inline AudioRenderer* + Application::GetAudioRenderer() +{ + return audioRenderer; +} + +inline VideoRenderer* + Application::GetVideoRenderer() +{ + return videoRenderer; +} + +inline GaugeRenderer* + Application::GetGaugeRenderer() +{ + return gaugeRenderer; +} + +inline ModeManager* + Application::GetModeManager() +{ + return modeManager; +} + +#endif diff --git a/restoration/source410/RENDER-ROADMAP.NOTES.md b/restoration/source410/RENDER-ROADMAP.NOTES.md index bdac314e..120e39fb 100644 --- a/restoration/source410/RENDER-ROADMAP.NOTES.md +++ b/restoration/source410/RENDER-ROADMAP.NOTES.md @@ -1010,3 +1010,65 @@ on and off. Earlier walk-off runs reached "Turning Plasma Score Display On", which is the only configuration of ours known to launch -- if walk-off also stops the refill, the walk is implicated in the hang even though it is NOT the cause of the fault signature (which predates it). + +-------------------------------------------------------------------------------- +SOLVED: THE RIO SERIAL PORT WAS BLOCKING EVERY MISSION -- AND A MISSION NOW RUNS +-------------------------------------------------------------------------------- +pod_render_norio.conf is pod_render_rec.conf with ONE line changed -- +serial1=disabled instead of the vrio named pipe. Same binary, same egg, same +everything else. Result: + + [launch] state=2 minPriorityEmpty=0 ticks=84205 + [launch] state=2 minPriorityEmpty=1 ticks=85316 <- backlog finally empty + [queues] p0=- p1=- p2=BUSY p3=- p4=- <- priority 0 drained + BTL4Application::RunMissionMessageHandler + Turning Plasma Score Display On + [sim] pos=(180.466,10,-358.703) yaw=-0.275605 spd=14.4 + [sim] pos=(251.959,10,-250.498) yaw=-0.89103 spd=14.4 + +The mission LAUNCHES and the mech WALKS under the forced throttle/turn. No +fault, through 290 log lines and counting. + +WHAT THE HANG ACTUALLY WAS, after three wrong answers. Not starvation, not a +timed-event deadlock, not a refill loop -- it was the most mundane candidate on +the original list, VOLUME, which I talked myself out of: + + * 530 renderer events queue at priority 0 while a mission loads. + * BackgroundTasks::Execute runs exactly ONE task per call, round-robin over + our seven tasks, and the 1ms frame budget is always blown on this rig so no + extra background passes happen. That is ~9 events drained per REAL second. + * So a full load legitimately takes ~60 seconds here, and the gate correctly + stays shut for all of it. + +The fault arrived at ~40 seconds -- BEFORE the backlog could clear -- which is +why the load "never" finished. Remove the fault and the same 530 events drain +to completion and the gate opens. Every "the queue never drains" conclusion +was really "the process dies before it can". + +The tell I misread: p0=BUSY with nextReady=1 and a working pump looks like +refill, but it is equally consistent with a large finite backlog still +draining. The tally settled it -- id3 climbed to 530 and then went FLAT, which +means nothing was refilling. I had the disproof in hand a run earlier than I +acted on it. + +WHY THE RIO PORT. The conf points serial1 at a vrio named pipe with no server +attached, which is supposed to behave as an unplugged cable. The emulator log +(now captured by podrun.sh) shows a steady trickle of serial1 RX OVERRUN errors +on it, and our build prints "RIO never came back from test mode!" where the +SHIPPED binary prints "LBE4ControlsManager::Execute, lost RIO analog request" +and keeps going -- shipped launches and runs the mission on this identical rig. +So the unplugged port is survivable and our handling of it is not. That is the +next thread, and it is a real defect rather than a rig artifact: a pod whose +RIO cable is unplugged should still boot. + +OPERATIONAL CONSEQUENCE. Until that is fixed, dev-rig runs that do not need +the RIO should use pod_render_norio.conf. It is the only configuration in +which our build reaches a running mission, which unblocks everything +downstream: seeing a mech frame at all, confirming the translation slot, and +adding rotation. + +STILL OPEN. The wild reference at EulerAngles::operator=(const LinearMatrix&) ++0x19 remains unexplained -- cr2 is 1.79GB from a stack whose frame pointer the +probe shows stable, and all three call sites of that operator pass stack +locals. It is now reproducible on demand (enable serial1) rather than +intermittent, which makes it a tractable hunt instead of a coin flip.