diff --git a/emulator/render-bridge/dosboxlog.txt b/emulator/render-bridge/dosboxlog.txt index 55792dff..5d596906 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_norio.conf +LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_shp.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. @@ -34,11 +34,14 @@ 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 LOG: Serial3: BASE 3e8h -LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog_shipped.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. diff --git a/emulator/render-bridge/logs/025-dosbox.txt b/emulator/render-bridge/logs/025-dosbox.txt new file mode 100644 index 00000000..fd655597 --- /dev/null +++ b/emulator/render-bridge/logs/025-dosbox.txt @@ -0,0 +1,88 @@ +LOG: Early LOG Init complete +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. +LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit) +LOG: Prevent capture: 0 +LOG: SDL: version 2.32.10, Video windows, Audio directsound +LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended. +LOG: Windows keyboard layout ID is 0x0409 +LOG: Host keyboard layout is now us (US English) +LOG: Mapper keyboard layout is now us (US English) +LOG: SDL2 reports desktop display mode 3440 x 1440 +LOG: OpenGL Version : 4.6.0 NVIDIA 610.47 +LOG: Configured windowposition: - +LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888 +LOG: SDL: You are running in 24 bpp mode, this will slow down things! +LOG: Releasing keyboard +LOG: SDL: Windows 11 round corners will be disabled. +LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI) +LOG: ISA BCLK: 8333333.333Hz (25000000/3) +LOG: monopal: green, +LOG: Active save slot: 1 [Empty] +LOG: USING AVI+ZMBV +LOG: Pentium CMPXCHG8B emulation is enabled +LOG: Max 1073741824 sz 32768 +LOG: Final 32768 +LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB +LOG: VPXLOG: fifosock listening on 127.0.0.1:8621 +LOG: VPXLOG: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: Serial2: BASE 2f8h +LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1) +LOG: Serial2: namedpipe connected to \\.\pipe\vplasma +LOG: Serial3: BASE 3e8h +LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt +LOG: Parallel1: BASE 378h +LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h +LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false. +LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true. +LOG: Allocated APM BIOS pm entry point at f000:ce40 +LOG: Writing code to fce40 +LOG: Writing code to fce60 +LOG: Windows: IID_ITaskbarList3 is available +LOG: ISA Plug & Play BIOS enabled +LOG: VGA ROM BIOS init callback +LOG: pixratio 1.000, dw false, dh false +LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750 +LOG: WARNING: No translation support (to host) for code page 0 +LOG: DOS keyboard layout loaded with main language code US for layout us +LOG: XMS: 50 handles allocated for use by the DOS environment +LOG: EMS page frame at 0xe000-0xefff +LOG: COMMAND.COM env size: 720 bytes +LOG: COMMAND.COM environment block: 0x0701 sz=0x002d +LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a +LOG: COMMAND.COM stack: 0x0749 +LOG: pixratio 1.350, dw false, dh false +LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750 +LOG: SHELL:Redirect output to COM3 +LOG: VPXLOG: fifosock client connected +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 175021494 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]3f7c6c01/0.986023 [44]3ce1d649/0.027568 [48]ffffffff/nan +VPX lights@f121: type6=2 typeE=9 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f241: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f361: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f481: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f601: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f721: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f841: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f961: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f1081: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) diff --git a/emulator/render-bridge/logs/025-prev.txt b/emulator/render-bridge/logs/025-prev.txt new file mode 100644 index 00000000..994be992 --- /dev/null +++ b/emulator/render-bridge/logs/025-prev.txt @@ -0,0 +1,595 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +RIO never came back from check request! +GaugeInterpreter: undefined label 'Initialization' +[exp] master player experience=2 simLive=1 heatModelOn=1 advDamage=1 +[role] 'Role::Default' lives=1000 killBonus=500 dmgMod=1 +[torso] horizJoint 'jointtorso' -> 0x00a559b4 type=1 enabled=1 +[weap] 'AFC100' seg=13 mount=sitelgunport rear=0 +[proj] 'AFC100' ammoBinIndex=21 -> AmmoBinAFC100 (rounds=20) +[weap] 'ERLLaser' seg=7 mount=siterugunport rear=0 +[weap] 'ERSLaser_1' seg=13 mount=sitelgunport rear=0 +[weap] 'ERSLaser_2' seg=8 mount=siterdgunport rear=0 +[weap] 'LRM15_1' seg=18 mount=sitelmissleport rear=0 +[proj] 'LRM15_1' ammoBinIndex=26 -> AmmoBinLRM15_1 (rounds=16) +[weap] 'LRM15_2' seg=19 mount=sitermissleport rear=0 +[proj] 'LRM15_2' ammoBinIndex=28 -> AmmoBinLRM15_2 (rounds=16) +[mech] segment walk done: subsystemCount=32 weaponCount=6 +[skel] jointSubsystem=0x009eb3c4 jointCount=25 +[mech] model params: walkTR=65 runTR=40 maxAcc=20 throttleAdj=0.8 (deg,deg,u/s^2,scale) +[mech] look angles: L=50 R=-50 F=-15 B=0 (deg) +[mech] damage zones streamed: 22 [dz_dtorso,dz_hip,dz_larm,dz_ldleg,dz_ldoor,dz_lfoot,dz_lgun,dz_ltorso,dz_luleg,dz_rarm,dz_rdleg,dz_rdoor,dz_reardtorso,dz_rearltorso,dz_rearrtorso,dz_rearutorso,dz_rfoot,dz_rgun,dz_rtorso,dz_ruleg,dz_searchlight,dz_utorso] +[cyl] table 'madcat' LOADED rows=7 +[valve] 'Condenser1' valve=1 flow=0.166667 +[valve] 'Condenser2' valve=1 flow=0.166667 +[valve] 'Condenser3' valve=1 flow=0.166667 +[valve] 'Condenser4' valve=1 flow=0.166667 +[valve] 'Condenser5' valve=1 flow=0.166667 +[valve] 'Condenser6' valve=1 flow=0.166667 +[mapper] ctor id=0 throttleAttr=0x0096b248 controlModeAttr=0x0096b284 +[gau2] cluster slot=14 classID=3011 auxScreen=5 name=Avionics +[gau2] cluster slot=15 classID=3014 auxScreen=6 name=Myomers +[gau2] cluster slot=22 classID=3021 auxScreen=1 name=AFC100 +[gau2] cluster slot=23 classID=3016 auxScreen=10 name=ERLLaser +[gau2] cluster slot=24 classID=3016 auxScreen=3 name=ERSLaser_1 +[gau2] cluster slot=25 classID=3016 auxScreen=12 name=ERSLaser_2 +[gau2] cluster slot=27 classID=3024 auxScreen=2 name=LRM15_1 +[gau2] cluster slot=29 classID=3024 auxScreen=9 name=LRM15_2 +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_missle not found +ColorMapperArmor warning: damage zone dz_lmissle not found +ColorMapperArmor warning: damage zone dz_rmissle not found +ColorMapperArmor warning: damage zone dz_ftorso not found +ColorMapperArmor warning: damage zone dz_btorso not found +[link] InitializePlayerLink -> vehicle playerLink=0x00adc2c0 +[launch] state=11 minPriorityEmpty=0 ticks=14713 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=416 +[launch] state=11 minPriorityEmpty=0 ticks=15726 +[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 +[posts] id3=502 +[launch] state=11 minPriorityEmpty=0 ticks=16736 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=17745 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=11 minPriorityEmpty=0 ticks=18754 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 1 class=3035 view=0 res=0 +[mer] 2 class=42 view=0 res=1 +[mer] 3 class=42 view=0 res=1 +[mer] 4 class=42 view=0 res=1 +[mer] 5 class=42 view=0 res=1 +[mer] 6 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=19831 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 7 class=42 view=0 res=1 +[mer] 8 class=42 view=0 res=1 +[mer] 9 class=42 view=0 res=1 +[mer] 10 class=42 view=0 res=1 +[mer] 11 class=42 view=0 res=1 +[mer] 12 class=42 view=0 res=1 +[mer] 13 class=42 view=0 res=1 +[mer] 14 class=42 view=0 res=1 +[mer] 15 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=20940 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 16 class=42 view=0 res=1 +[mer] 17 class=42 view=0 res=1 +[mer] 18 class=42 view=0 res=1 +[mer] 19 class=42 view=0 res=1 +[mer] 20 class=42 view=0 res=1 +[mer] 21 class=42 view=0 res=1 +[mer] 22 class=42 view=0 res=1 +[mer] 23 class=42 view=0 res=1 +[mer] 24 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=22051 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 25 class=42 view=0 res=1 +[mer] 26 class=42 view=0 res=1 +[mer] 27 class=42 view=0 res=1 +[mer] 28 class=42 view=0 res=1 +[mer] 29 class=42 view=0 res=1 +[mer] 30 class=42 view=0 res=1 +[mer] 31 class=42 view=0 res=1 +[mer] 32 class=42 view=0 res=1 +[mer] 33 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=23160 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 34 class=42 view=0 res=1 +[mer] 35 class=42 view=0 res=1 +[mer] 36 class=42 view=0 res=1 +[mer] 37 class=42 view=0 res=1 +[mer] 38 class=94 view=0 res=1 +[mer] 39 class=94 view=0 res=1 +[mer] 40 class=42 view=0 res=1 +[mer] 41 class=94 view=0 res=1 +[mer] 42 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=24269 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 43 class=94 view=0 res=1 +[mer] 44 class=94 view=0 res=1 +[mer] 45 class=94 view=0 res=1 +[mer] 46 class=94 view=0 res=1 +[mer] 47 class=94 view=0 res=1 +[mer] 48 class=94 view=0 res=1 +[mer] 49 class=42 view=0 res=1 +[mer] 50 class=42 view=0 res=1 +[mer] 51 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=25380 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 52 class=42 view=0 res=1 +[mer] 53 class=42 view=0 res=1 +[mer] 54 class=94 view=0 res=1 +[mer] 55 class=94 view=0 res=1 +[mer] 56 class=94 view=0 res=1 +[mer] 57 class=94 view=0 res=1 +[mer] 58 class=42 view=0 res=1 +[mer] 59 class=42 view=0 res=1 +[mer] 60 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=26489 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 61 class=42 view=0 res=1 +[mer] 62 class=94 view=0 res=1 +[mer] 63 class=94 view=0 res=1 +[mer] 64 class=94 view=0 res=1 +[mer] 65 class=94 view=0 res=1 +[mer] 66 class=94 view=0 res=1 +[mer] 67 class=94 view=0 res=1 +[mer] 68 class=42 view=0 res=1 +[mer] 69 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=27598 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 70 class=94 view=0 res=1 +[mer] 71 class=94 view=0 res=1 +[mer] 72 class=94 view=0 res=1 +[mer] 73 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=28077 pump=352/1499 +[mer] 74 class=94 view=0 res=1 +[mer] 75 class=94 view=0 res=1 +[mer] 76 class=42 view=0 res=1 +[mer] 77 class=94 view=0 res=1 +[mer] 78 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=28710 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 79 class=94 view=0 res=1 +[mer] 80 class=94 view=0 res=1 +[mer] 81 class=94 view=0 res=1 +[mer] 82 class=94 view=0 res=1 +[mer] 83 class=94 view=0 res=1 +[mer] 84 class=94 view=0 res=1 +[mer] 85 class=42 view=0 res=1 +[mer] 86 class=94 view=0 res=1 +[mer] 87 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=29819 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 88 class=42 view=0 res=1 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =40 +[mer] 89 class=42 view=0 res=1 +[mer] 90 class=42 view=0 res=1 +[mer] 91 class=94 view=0 res=1 +[mer] 92 class=94 view=0 res=1 +[mer] 93 class=42 view=0 res=1 +[mer] 94 class=94 view=0 res=1 +[mer] 95 class=94 view=0 res=1 +[mer] 96 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=30929 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 97 class=94 view=0 res=1 +[mer] 98 class=94 view=0 res=1 +[mer] 99 class=42 view=0 res=1 +[mer] 100 class=42 view=0 res=1 +[mer] 101 class=42 view=0 res=1 +[mer] 102 class=94 view=0 res=1 +[mer] 103 class=42 view=0 res=1 +[mer] 104 class=42 view=0 res=1 +[mer] 105 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=32040 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 106 class=42 view=0 res=1 +[mer] 107 class=42 view=0 res=1 +[mer] 108 class=42 view=0 res=1 +[mer] 109 class=42 view=0 res=1 +[mer] 110 class=42 view=0 res=1 +[mer] 111 class=42 view=0 res=1 +[mer] 112 class=42 view=0 res=1 +[mer] 113 class=42 view=0 res=1 +[mer] 114 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=33149 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 115 class=42 view=0 res=1 +[mer] 116 class=42 view=0 res=1 +[mer] 117 class=42 view=0 res=1 +[mer] 118 class=42 view=0 res=1 +[mer] 119 class=42 view=0 res=1 +[mer] 120 class=94 view=0 res=1 +[mer] 121 class=42 view=0 res=1 +[mer] 122 class=42 view=0 res=1 +[mer] 123 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=34258 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 124 class=42 view=0 res=1 +[mer] 125 class=42 view=0 res=1 +[mer] 126 class=42 view=0 res=1 +[mer] 127 class=42 view=0 res=1 +[mer] 128 class=42 view=0 res=1 +[mer] 129 class=42 view=0 res=1 +[mer] 130 class=42 view=0 res=1 +[mer] 131 class=42 view=0 res=1 +[mer] 132 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=35369 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 133 class=42 view=0 res=1 +[mer] 134 class=42 view=0 res=1 +[mer] 135 class=42 view=0 res=1 +[mer] 136 class=42 view=0 res=1 +[mer] 137 class=42 view=0 res=1 +[mer] 138 class=42 view=0 res=1 +[mer] 139 class=42 view=0 res=1 +[mer] 140 class=42 view=0 res=1 +[mer] 141 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=36478 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 142 class=42 view=0 res=1 +[mer] 143 class=94 view=0 res=1 +[mer] 144 class=94 view=0 res=1 +[mer] 145 class=94 view=0 res=1 +[mer] 146 class=42 view=0 res=1 +[mer] 147 class=94 view=0 res=1 +[mer] 148 class=42 view=0 res=1 +[mer] 149 class=94 view=0 res=1 +[mer] 150 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=37587 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 151 class=94 view=0 res=1 +[mer] 152 class=42 view=0 res=1 +[mer] 153 class=42 view=0 res=1 +[mer] 154 class=42 view=0 res=1 +[mer] 155 class=94 view=0 res=1 +[mer] 156 class=42 view=0 res=1 +[mer] 157 class=42 view=0 res=1 +[mer] 158 class=94 view=0 res=1 +[mer] 159 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=38700 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 160 class=42 view=0 res=1 +[mer] 161 class=42 view=0 res=1 +[mer] 162 class=42 view=0 res=1 +[mer] 163 class=42 view=0 res=1 +[mer] 164 class=94 view=0 res=1 +[mer] 165 class=94 view=0 res=1 +[mer] 166 class=42 view=0 res=1 +[mer] 167 class=94 view=0 res=1 +[mer] 168 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=39809 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 169 class=94 view=0 res=1 +[mer] 170 class=94 view=0 res=1 +[mer] 171 class=42 view=0 res=1 +[mer] 172 class=42 view=0 res=1 +[mer] 173 class=42 view=0 res=1 +[mer] 174 class=94 view=0 res=1 +[mer] 175 class=42 view=0 res=1 +[mer] 176 class=42 view=0 res=1 +[mer] 177 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=40918 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 178 class=94 view=0 res=1 +[mer] 179 class=94 view=0 res=1 +[mer] 180 class=42 view=0 res=1 +[mer] 181 class=42 view=0 res=1 +[mer] 182 class=42 view=0 res=1 +[mer] 183 class=94 view=0 res=1 +[mer] 184 class=94 view=0 res=1 +[mer] 185 class=42 view=0 res=1 +[mer] 186 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=42029 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 187 class=94 view=0 res=1 +[mer] 188 class=94 view=0 res=1 +[mer] 189 class=42 view=0 res=1 +[mer] 190 class=42 view=0 res=1 +[mer] 191 class=94 view=0 res=1 +[mer] 192 class=94 view=0 res=1 +[mer] 193 class=42 view=0 res=1 +[mer] 194 class=42 view=0 res=1 +[mer] 195 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=43138 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 196 class=42 view=0 res=1 +[mer] 197 class=94 view=0 res=1 +[mer] 198 class=94 view=0 res=1 +[mer] 199 class=94 view=0 res=1 +[mer] 200 class=94 view=0 res=1 +[mer] 201 class=94 view=0 res=1 +[mer] 202 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=43949 pump=495/2643 +[mer] 203 class=94 view=0 res=1 +[mer] 204 class=42 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=44248 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 205 class=94 view=0 res=1 +[mer] 206 class=94 view=0 res=1 +[mer] 207 class=48 view=0 res=0 +[mer] 208 class=3001 view=1 res=1 + [vid] type=1 file='mad.skl' +[skl] video\mad.skl -> 26 nodes, 19 objects +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =41 +[launch] state=2 minPriorityEmpty=0 ticks=45360 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=46469 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=47578 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=48689 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=49798 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=50907 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=52018 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=53127 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=54236 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=55349 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=56458 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=57567 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=58678 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=59787 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[stack] frame at 0x12dee7 drift=0 over 3003 frames ticks=59824 pump=638/3787 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =42 +[launch] state=2 minPriorityEmpty=0 ticks=60898 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=62009 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=63118 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=64227 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=65338 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=66447 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=67556 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=68667 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[launch] state=2 minPriorityEmpty=0 ticks=69776 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 209 class=48 view=0 res=0 +[mer] 210 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=70885 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 211 class=48 view=0 res=0 +[mer] 212 class=48 view=0 res=0 +[mer] 213 class=48 view=0 res=0 +[mer] 214 class=48 view=0 res=0 +[mer] 215 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=71996 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 216 class=48 view=0 res=0 +[mer] 217 class=94 view=0 res=1 +[mer] 218 class=94 view=0 res=1 +[mer] 219 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=73107 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 220 class=94 view=0 res=1 +[mer] 221 class=94 view=0 res=1 +[mer] 222 class=94 view=0 res=1 +[mer] 223 class=94 view=0 res=1 +[mer] 224 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=74216 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 225 class=94 view=0 res=1 +[mer] 226 class=94 view=0 res=1 +[mer] 227 class=94 view=0 res=1 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =43 +[mer] 228 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=75328 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 229 class=94 view=0 res=1 +[mer] 230 class=94 view=0 res=1 +[stack] frame at 0x12dee7 drift=0 over 4004 frames ticks=75695 pump=781/4931 +[mer] 231 class=94 view=0 res=1 +[mer] 232 class=94 view=0 res=1 +[mer] 233 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=76438 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 234 class=94 view=0 res=1 +[mer] 235 class=94 view=0 res=1 +[mer] 236 class=94 view=0 res=1 +[mer] 237 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=77547 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 238 class=94 view=0 res=1 +[mer] 239 class=94 view=0 res=1 +[mer] 240 class=94 view=0 res=1 +[mer] 241 class=94 view=0 res=1 +[mer] 242 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=78658 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 243 class=94 view=0 res=1 +[mer] 244 class=94 view=0 res=1 +[mer] 245 class=94 view=0 res=1 +[mer] 246 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=79767 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 247 class=94 view=0 res=1 +[mer] 248 class=94 view=0 res=1 +[mer] 249 class=94 view=0 res=1 +MapDisplay: operating=1 static=7 moving=0 +[mer] 250 class=94 view=0 res=1 +[mer] 251 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=80876 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 252 class=94 view=0 res=1 +[mer] 253 class=94 view=0 res=1 +[mer] 254 class=94 view=0 res=1 +[mer] 255 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=81987 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 256 class=94 view=0 res=1 +[mer] 257 class=94 view=0 res=1 +[mer] 258 class=94 view=0 res=1 +[mer] 259 class=94 view=0 res=1 +[mer] 260 class=94 view=0 res=1 +[launch] state=2 minPriorityEmpty=0 ticks=83096 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 261 class=94 view=0 res=1 +[mer] 262 class=48 view=0 res=0 +[mer] 263 class=48 view=0 res=0 +[mer] 264 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=0 ticks=84205 +[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +[mer] 265 class=48 view=0 res=0 +[launch] state=2 minPriorityEmpty=1 ticks=85316 +[queues] p0=- p1=- p2=BUSY p3=- p4=- nextReady=1 +[posts] id3=530 +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +[tick] roster live (first Sensor frame), radarPercent=1 voltState=4 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-170.962,0,251.562) yaw=0.0735925 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=(-172.512,0,237.234) yaw=0.140928 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=(-175.027,0,223.028) yaw=0.20833 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=(-178.488,0,209.039) yaw=0.275666 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=(-182.966,0,195.083) yaw=0.344145 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=(-188.376,0,181.493) yaw=0.41249 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=(-194.702,0,168.304) yaw=0.480834 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=(-201.929,0,155.553) yaw=0.549314 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=(-209.995,0,143.35) yaw=0.617659 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=(-218.875,0,131.727) yaw=0.686004 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=(-228.548,0,120.716) yaw=0.754483 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=(-238.931,0,110.412) yaw=0.822829 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=(-249.993,0,100.842) yaw=0.891174 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=(-261.706,0,92.0324) yaw=0.959654 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=(-273.97,0,84.0602) yaw=1.028 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=(-286.75,0,76.9441) yaw=1.09635 spd=14.4 eyePitch=0 eyeYaw=0 +LBE4ControlsManager::Execute, lost RIO analog request +iThinkIRQIsOn =1, actual state =1, characters sent =49 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-299.788,0,70.8027) yaw=1.16368 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=(-313.44,0,65.4711) yaw=1.23216 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-327.397,0,61.0939) yaw=1.30051 spd=14.4 eyePitch=0 eyeYaw=0 +[stack] frame at 0x12dee7 drift=0 over 6006 frames ticks=108393 pump=863/7219 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-341.438,0,57.7177) yaw=1.36798 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=(-355.859,0,55.2706) yaw=1.43633 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-370.443,0,53.8123) yaw=1.50481 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-385.063,0,53.3551) yaw=1.5708 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-399.681,0,53.8975) yaw=1.5001 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=(-414.256,0,55.441) yaw=1.43162 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=(-428.662,0,57.9722) yaw=1.36327 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-442.863,0,61.4814) yaw=1.29492 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=(-456.817,0,65.9619) yaw=1.22644 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=(-470.406,0,71.3753) yaw=1.15809 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=(-483.594,0,77.704) yaw=1.08974 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=(-496.343,0,84.9337) yaw=1.02126 spd=14.4 eyePitch=0 eyeYaw=0 diff --git a/emulator/render-bridge/logs/027-dosbox.txt b/emulator/render-bridge/logs/027-dosbox.txt new file mode 100644 index 00000000..c65f1905 --- /dev/null +++ b/emulator/render-bridge/logs/027-dosbox.txt @@ -0,0 +1,80 @@ +LOG: Early LOG Init complete +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. +LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit) +LOG: Prevent capture: 0 +LOG: SDL: version 2.32.10, Video windows, Audio directsound +LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended. +LOG: Windows keyboard layout ID is 0x0409 +LOG: Host keyboard layout is now us (US English) +LOG: Mapper keyboard layout is now us (US English) +LOG: SDL2 reports desktop display mode 3440 x 1440 +LOG: OpenGL Version : 4.6.0 NVIDIA 610.47 +LOG: Configured windowposition: - +LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888 +LOG: SDL: You are running in 24 bpp mode, this will slow down things! +LOG: Releasing keyboard +LOG: SDL: Windows 11 round corners will be disabled. +LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI) +LOG: ISA BCLK: 8333333.333Hz (25000000/3) +LOG: monopal: green, +LOG: Active save slot: 1 [Empty] +LOG: USING AVI+ZMBV +LOG: Pentium CMPXCHG8B emulation is enabled +LOG: Max 1073741824 sz 32768 +LOG: Final 32768 +LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB +LOG: VPXLOG: fifosock listening on 127.0.0.1:8621 +LOG: VPXLOG: live render backend started +LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt' +LOG: MIDI:Opened device:win32 +LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone) +LOG: One joystick reported, initializing with 4axis +LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s) +LOG: VOODOO LFB now at d0000000 +LOG: 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 +LOG: VPXLOG: fifosock client connected +VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00) +LOG: 173614606 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]3e888894/0.266667 [44]3eeeeefa/0.466667 [48]ffffffff/nan +VPX lights@f121: type6=2 typeE=6 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f241: type6=2 typeE=6 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f361: type6=2 typeE=9 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f481: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) +VPX lights@f601: type6=2 typeE=10 decoded=2 dir=1 amb(0.55,0.50,0.65) + L0 dir(0.11,0.77,0.63) col(1.10,0.90,1.00) diff --git a/emulator/render-bridge/podlog.txt b/emulator/render-bridge/logs/027-prev.txt similarity index 85% rename from emulator/render-bridge/podlog.txt rename to emulator/render-bridge/logs/027-prev.txt index 2cd719ff..06501a3a 100644 --- a/emulator/render-bridge/podlog.txt +++ b/emulator/render-bridge/logs/027-prev.txt @@ -4,7 +4,7 @@ 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' -> 0x00a3d170 type=1 enabled=1 +[torso] horizJoint 'jointtorso' -> 0x00a559b4 type=1 enabled=1 [weap] 'AFC100' seg=13 mount=sitelgunport rear=0 [proj] 'AFC100' ammoBinIndex=21 -> AmmoBinAFC100 (rounds=20) [weap] 'ERLLaser' seg=7 mount=siterugunport rear=0 @@ -15,7 +15,7 @@ GaugeInterpreter: undefined label 'Initialization' [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 +[skel] jointSubsystem=0x009eb3c4 jointCount=25 [mech] model params: walkTR=65 runTR=40 maxAcc=20 throttleAdj=0.8 (deg,deg,u/s^2,scale) [mech] look angles: L=50 R=-50 F=-15 B=0 (deg) [mech] damage zones streamed: 22 [dz_dtorso,dz_hip,dz_larm,dz_ldleg,dz_ldoor,dz_lfoot,dz_lgun,dz_ltorso,dz_luleg,dz_rarm,dz_rdleg,dz_rdoor,dz_reardtorso,dz_rearltorso,dz_rearrtorso,dz_rearutorso,dz_rfoot,dz_rgun,dz_rtorso,dz_ruleg,dz_searchlight,dz_utorso] @@ -26,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=0x009f4320 controlModeAttr=0x009f435c +[mapper] ctor id=0 throttleAttr=0x0096b248 controlModeAttr=0x0096b284 [gau2] cluster slot=14 classID=3011 auxScreen=5 name=Avionics [gau2] cluster slot=15 classID=3014 auxScreen=6 name=Myomers [gau2] cluster slot=22 classID=3021 auxScreen=1 name=AFC100 @@ -41,7 +41,7 @@ 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 +[link] InitializePlayerLink -> vehicle playerLink=0x00adc2c0 [launch] state=11 minPriorityEmpty=0 ticks=14713 [queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1 [posts] id3=416 @@ -340,8 +340,6 @@ iThinkIRQIsOn =1, actual state =1, characters sent =40 [mer] 208 class=3001 view=1 res=1 [vid] type=1 file='mad.skl' [skl] video\mad.skl -> 26 nodes, 19 objects - [chain] into DPLRenderer, skeleton=yes, stack at 0x12dde7 -L4VIDEO.cpp wrong video resource type for object mad.skl LBE4ControlsManager::Execute, lost RIO analog request iThinkIRQIsOn =1, actual state =1, characters sent =41 [launch] state=2 minPriorityEmpty=0 ticks=45360 @@ -524,3 +522,35 @@ 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=(-631.704,0,-244.183) yaw=-1.49721 spd=14.4 eyePitch=0 eyeYaw=0 +[fire] 'ERSLaser_1' LOADED (level=7941.22 T=76.8855) +[fire] 'ERSLaser_2' LOADED (level=7925.96 T=76.8462) +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=(-617.376,0,-245.734) yaw=-1.42987 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-603.171,0,-248.248) yaw=-1.36247 spd=14.4 eyePitch=0 eyeYaw=0 +[stack] frame at 0x12dee7 drift=0 over 5005 frames ticks=91705 pump=863/6075 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-589.181,0,-251.71) yaw=-1.29514 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-575.225,0,-256.187) yaw=-1.22666 spd=14.4 eyePitch=0 eyeYaw=0 +[fire] 'ERLLaser' LOADED (level=7928.31 T=76.0943) +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-561.635,0,-261.598) yaw=-1.15832 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-548.446,0,-267.923) yaw=-1.08997 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-535.695,0,-275.15) yaw=-1.0215 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-523.492,0,-283.216) yaw=-0.953153 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-511.868,0,-292.096) yaw=-0.88481 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-500.857,0,-301.769) yaw=-0.816333 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-490.553,0,-312.151) yaw=-0.747989 spd=14.4 eyePitch=0 eyeYaw=0 +[mppr] thr=0.6 rev=0 stickX=0.25 stickY=0 mode=0 -> speedDemand=14.4 turnDemand=0.0625 torsoElev=0 +[sim] pos=(-480.983,0,-323.213) yaw=-0.679646 spd=14.4 eyePitch=0 eyeYaw=0 diff --git a/emulator/render-bridge/pod_render_chain.conf b/emulator/render-bridge/pod_render_chain.conf index ddd37ec9..afd10a91 100644 --- a/emulator/render-bridge/pod_render_chain.conf +++ b/emulator/render-bridge/pod_render_chain.conf @@ -76,6 +76,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_MECH_LOG=1 set BT_MER_LOG=1 +set BT_VID_LOG=1 set BT_MECH_CHAIN=1 set BT_LAUNCH_LOG=1 set BT_STACK_LOG=1 diff --git a/emulator/render-bridge/pod_render_norio.conf b/emulator/render-bridge/pod_render_norio.conf index c6fd2ef4..beb1e87c 100644 --- a/emulator/render-bridge/pod_render_norio.conf +++ b/emulator/render-bridge/pod_render_norio.conf @@ -66,6 +66,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_MECH_LOG=1 set BT_MER_LOG=1 +set BT_VID_LOG=1 set BT_LAUNCH_LOG=1 set BT_STACK_LOG=1 set BT_FORCE_THROTTLE=0.6 diff --git a/emulator/render-bridge/podlog_shipped.txt b/emulator/render-bridge/podlog_shipped.txt index babb708c..e3d8295c 100644 --- a/emulator/render-bridge/podlog_shipped.txt +++ b/emulator/render-bridge/podlog_shipped.txt @@ -1,78 +1 @@ BattleTech v4.10 -BTL4Application::BTL4Application -GaugeInterpreter: undefined label 'Initialization' -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! -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 =112 -LBE4ControlsManager::Execute, lost RIO analog request -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/emulator/vpx-device/vpxlog.cpp b/emulator/vpx-device/vpxlog.cpp index 504588a7..59d55af9 100644 --- a/emulator/vpx-device/vpxlog.cpp +++ b/emulator/vpx-device/vpxlog.cpp @@ -666,7 +666,22 @@ static void vpx_write(Bitu port, Bitu val, Bitu iolen) { note("board reset"); } else if (off == 1) { saw_write = true; /* outputData: a download/response byte */ - empty_polls = 0; /* a write means the game isn't blocking-reading */ + /* A write means the game isn't blocking-reading -- UNLESS a draw is + * outstanding. Once vr_draw_scene has been sent, the only receive + * the game performs next is the frame ack, but it keeps WRITING in + * the meantime: every frame flushes a vr_flush_dcs_artic batch (the + * per-frame vehicle articulation). Resetting the poll counter on + * those writes starves the ack forever: one 0x1f burst per frame, + * one or two polls per frame, the counter never reaches + * POLL_THRESHOLD, dpl_DrawSceneComplete never returns true, and the + * game stops drawing while everything else runs on. That deadlock + * appeared the FIRST time a game of ours produced per-frame + * articulation (2026-07-29); the shipped binary had simply never + * been run against this device in a state that both articulated + * and drew. The iserver-drain guard this reset protects is a boot- + * time concern, when no frame is ever outstanding, so gating on + * frame_outstanding preserves it. */ + if (!frame_outstanding) empty_polls = 0; fifo_flush_record(); /* outputData write = FIFO burst boundary */ if (parse_frames) { parse_out_byte((unsigned char)val); fifo_arm_action(); } } else if (off == 4 || off == 5) { diff --git a/restoration/source410/BT_L4/BTL4VID.CPP b/restoration/source410/BT_L4/BTL4VID.CPP index 6f0e4a5d..76652065 100644 --- a/restoration/source410/BT_L4/BTL4VID.CPP +++ b/restoration/source410/BT_L4/BTL4VID.CPP @@ -116,6 +116,7 @@ BTL4VideoRenderer::~BTL4VideoRenderer() dpl_DCS * BTL4VideoRenderer::ReadSKLFile( Entity *entity, + dpl_DCS *parent_dcs, const char *skeleton_filename, ViewFrom view_type) { @@ -150,9 +151,15 @@ dpl_DCS * node_count = 0, object_count = 0; + // + // The ROOT page's DCS attaches under the caller's parent (the mech's + // RootRenderable DCS, so the model rides the entity's localToWorld) or, + // with no parent, straight to the scene -- the old bring-up behaviour, + // which parks the model at the world origin. + // dpl_DCS *root = RecurseSKLFile( - entity, NULL, skeleton, "ROOT", 0, view_type, + entity, parent_dcs, skeleton, "ROOT", 0, view_type, zone, &node_count, &object_count); DEBUG_STREAM << "[skl] " << path @@ -438,13 +445,6 @@ 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=" @@ -456,43 +456,89 @@ void if (video_object->GetResourceType() == L4VideoObject::Skeleton) { - ReadSKLFile(entity, + // + // THE ENGINE COMPOSITION, mirrored from the Mover branch + // of DPLRenderer::MakeEntityRenderables + // (L4VIDEO.CPP:4795-4860), which the base cannot apply + // here because it only accepts Object/Rubble resources -- + // chaining it with a Skeleton just prints "wrong video + // resource type" and builds NOTHING (measured: zero + // vr_flush_dcs_artic records on the wire, camera frozen + // at the world origin, and the mech statue parked there + // with the eye inside it). + // + // 1. A DYNAMIC RootRenderable. Its ctor adds its DCS to + // the scene and seeds it from entity->localToWorld; + // its Execute re-flushes whenever the entity moves. + // That per-frame flush is the ONLY source of wire + // articulation (0x1f) for the vehicle -- without it + // nothing on the board ever moves. NULL graphical + // object exactly like the CameraShip inside-view case + // (L4VIDEO.CPP:4548): the skeleton supplies the + // geometry. + // + RootRenderable + *this_root = new RootRenderable( + entity, + RootRenderable::Dynamic, + NULL, + dplMainZone, + dpl_isect_mode_obj, + NULL); + Register_Object(this_root); + + dpl_DCS + *root_DCS = this_root->GetDCS(); + + // + // 2. The skeleton hangs UNDER the root DCS -- so the whole + // model rides the entity's localToWorld instead of + // being parked at the world origin. + // + ReadSKLFile(entity, root_DCS, video_object->GetObjectFilename(), view_type); + + // + // 3. Inside view: the eyepoint, driven off the same root + // DCS plus the mech's published EyepointRotation -- + // this is what the camera follows. + // + if (view_type == insideEntity) + { + EulerAngles + *eyepoint_rotation = + (EulerAngles *)entity->GetAttributePointer( + "EyepointRotation"); + DPLEyeRenderable + *this_eye = new DPLEyeRenderable( + entity, + dplMainZone, + LinearMatrix::Identity, + root_DCS, + dplMainView, + eyepoint_rotation); + Register_Object(this_eye); + } handled = True; } } Entity_Being_Created = NULL; // - // The mech needs BOTH: our skeleton AND the engine's renderables. + // Only chain the base when NO skeleton was found -- for a + // skeleton it contributes nothing but the complaint, and the + // root/eye it would otherwise build were built above. // - // Stopping here once the skeleton was built -- which is what - // setting `handled` used to do -- left the mech with geometry but - // no RootRenderable and no DPLEyeRenderable. The eye is what the - // camera follows, so the view stayed frozen at the world origin - // while [sim] reported the mech travelling hundreds of units; - // two frames captured six seconds apart differed by zero pixels. - // - // Chaining unconditionally was verified over two runs: the mission - // launches, the skeleton still reports its 26 nodes / 19 objects, - // and the engine's eyepoint construction runs without faulting. - // (That construction was the prime suspect for the pod's page - // fault for most of a session -- wrongly; the fault turned out to - // need a live RIO stream and to live at a fixed address in the - // DPMI host, not in our code at all.) - // - if (getenv("BT_MER_LOG")) + if (!handled) { - char - here; - - DEBUG_STREAM << " [chain] into DPLRenderer, skeleton=" - << (handled ? "yes" : "no") - << ", stack at 0x" << hex << (int)&here << dec - << endl << flush; + if (getenv("BT_MER_LOG")) + { + DEBUG_STREAM << " [chain] no skeleton -> DPLRenderer" + << endl << flush; + } + DPLRenderer::MakeEntityRenderables( + entity, model_resource, view_type); } - DPLRenderer::MakeEntityRenderables( - entity, model_resource, view_type); } break; @@ -533,3 +579,4 @@ void // DPLRenderer::LoadMissionImplementation(mission); } + diff --git a/restoration/source410/BT_L4/BTL4VID.HPP b/restoration/source410/BT_L4/BTL4VID.HPP index 74faf486..cd0070a9 100644 --- a/restoration/source410/BT_L4/BTL4VID.HPP +++ b/restoration/source410/BT_L4/BTL4VID.HPP @@ -43,6 +43,17 @@ void LoadMissionImplementation(Mission *mission); + // + // (A diagnostic ExecuteImplementation wrapper briefly lived here to + // count dynamic renderables per frame; it cannot exist, because + // DPLRenderer::ExecuteImplementation is PRIVATE -- virtual dispatch + // reaches it, but a subclass cannot chain it by name. The question + // it was built to answer got answered by the wire instead: zero + // vr_flush_dcs_artic records because NO dynamic renderable existed + // -- the engine rejects Skeleton resources, so chaining the base for + // the mech built nothing. See MakeEntityRenderables.) + // + // // The bottom of this virtual chain is // VideoRenderer::MakeEntityRenderables (VIDREND.CPP:231), whose own @@ -65,6 +76,7 @@ dpl_DCS * ReadSKLFile( Entity *entity, + dpl_DCS *parent_dcs, const char *skeleton_filename, ViewFrom view_type); diff --git a/restoration/source410/RENDER-ROADMAP.NOTES.md b/restoration/source410/RENDER-ROADMAP.NOTES.md index 912d2ff5..fe48b45a 100644 --- a/restoration/source410/RENDER-ROADMAP.NOTES.md +++ b/restoration/source410/RENDER-ROADMAP.NOTES.md @@ -1217,3 +1217,60 @@ default eye height (FP_UPOFF) never being displaced by a view from the game, which points at the eyepoint compose in live_bridge rather than at the reconstruction. That is its own sub-project -- see COCKPIT-CAGE-NOTES.md, where the eyepoint/glance compose is already documented territory. + +-------------------------------------------------------------------------------- +THE CAMERA GAP, ROOT-CAUSED END TO END (three layers deep) +-------------------------------------------------------------------------------- +LAYER 1 -- our code. "Chain the engine after the skeleton" was a non-fix: the +engine's MakeEntityRenderables only accepts Object/Rubble resources, so +chaining it with a Skeleton printed "wrong video resource type" (it was there +in the log, line 344, both chain runs) and built NOTHING. No RootRenderable, +no eye, no articulation -- and the fifodump proved it: ZERO vr_flush_dcs_artic +(0x1f) records against 6667 one-shot flushes. The bridge decoder was fine; +the game genuinely never articulated anything. + +The real fix mirrors the engine's own Mover composition (L4VIDEO.CPP: +4795-4860) inside OUR mech case, because the base cannot do it for skeletons: + + RootRenderable(entity, Dynamic, NULL, dplMainZone, ...) <- per-frame flush + ReadSKLFile(entity, this_root->GetDCS(), ...) <- skeleton UNDER it + if inside: DPLEyeRenderable(..., root_DCS, dplMainView, + GetAttributePointer("EyepointRotation")) <- the camera + +ReadSKLFile grew a parent_dcs parameter for this. NULL keeps the old +add-to-scene behaviour. Also explains the mystery monolith in the first +frame: the skeleton was parked AT THE WORLD ORIGIN with the camera at +origin+eye-height -- we were looking at our own mech from inside its shins. + +RESULT: anim_abs went 0 -> 1 on the bridge (first articulation our build has +ever put on the wire), the bridge camera left the origin -- cam (54.2, 20.0, +-662.5), tracking the mech's neighbourhood at its correct Y -- and the bridge +even flagged all 19 own-mech geometry instances as drawn around the eye. + +LAYER 2 -- the 1995 library, read from our own linked binary (the map is +trustworthy here because these are real linked symbols, not a stray fault +address): dpl_DrawSceneComplete = velocirender_frameack(0). frameack keeps a +"frame acked" flag; when a reply arrives whose action is NOT 9 it prints +"dpl error - unsolicited input during frame ack", adds a puzzled +"flush artic??" when that stray action is 0x1f -- the 1995 authors' own +annotation -- and calls exit(9). Worth knowing before it ever fires. + +LAYER 3 -- the EMULATOR, where the actual deadlock lived. With per-frame +articulation flowing for the first time, the game stopped drawing at frame 232: +one 0x1f burst per frame forever after, no receives, no draws, no error, sim +fine. The VPX device feeds the frame ack only after POLL_THRESHOLD=6 +CONSECUTIVE empty inputStatus polls, and vpxlog.cpp:669 reset that counter on +EVERY outputData write ("a write means the game isn't blocking-reading"). +Every frame now writes an articulation burst, the game polls once or twice a +frame, the counter never reaches 6, dpl_DrawSceneComplete never goes true. +The heuristic was calibrated on traffic that had no per-frame writes; ours is +the first game state that both articulates and draws through this device. + +Fix (vpx-device/vpxlog.cpp, synced to src/src/hardware): the reset is now +gated on !frame_outstanding -- once a draw_scene is outstanding, the only +receive the game will do next is the frame ack, so intervening writes must not +cancel the poll accumulation. The iserver-drain concern the reset guarded is +a boot-time state where no frame is ever outstanding. + +STATUS: emulator rebuilding; verification = the same norio run drawing PAST +frame 232 with the camera tracking, then two agreeing runs before belief.