BT410 5.3.48: watcher ladder complete; the engine names the next brick
With every authored watcher resolving, the pod run reaches the mission, draws the FULL COCKPIT with the board booted and audio running, and exits GAME-RC=0 with no Fail. It builds no 3-D scene, and the engine says why: Entity 1:1 class3035 couldn't figure out how to MakeEntityRenderables L4VIDEO.cpp couldn't load object sky.bgf (then the whole arena) NULL instance VideoRenderer::MakeEntityRenderables (VIDREND.CPP:231) is the BOTTOM of a virtual chain -- its comment says so outright -- and BTL4VideoRenderer does not override it, so every entity falls through, no scene graph is built, and the geometry that would hang off it never loads. CORRECTS an earlier note in the roadmap: I recorded the first full-rig run as proving '.BGF loading was never a reconstruction problem, only a missing bridge', because the complaint count was zero. It was zero because the run Failed at a watcher long before reaching geometry. Now that it gets there, the loads are attempted and fail -- for want of renderables, not the bridge. Next brick is the real btl4vid body, shape pinned by the surviving sibling header RPL4VID.HPP: override MakeEntityRenderables, plus ReadSKLFile / RecurseSKLFile to walk the .SKL skeleton pages into a dpl_DCS hierarchy and load the .BGF geometry per node. Renderable content from the BT411 donor. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -53,7 +53,8 @@ set HEAPSIZE=15000000
|
||||
set L4GAUGE=640x480x16
|
||||
call setenv.bat r f s p
|
||||
32rtm.exe -x
|
||||
BTL4REC.EXE -egg testarn.egg > OUTREC.TXT
|
||||
BTL4REC.EXE -egg testarn.egg > OUTREC.TXT
|
||||
|
||||
echo GAME-RC=%errorlevel% >> RC.TXT
|
||||
32rtm.exe -u
|
||||
echo ALPHA1-RUN-DONE
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
[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
|
||||
[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 HEAPSIZE=15000000
|
||||
set L4GAUGE=640x480x16
|
||||
call setenv.bat r f s p
|
||||
32rtm.exe -x
|
||||
BTL4REC.EXE -egg testarn.egg
|
||||
32rtm.exe -u
|
||||
echo ALPHA1-RUN-DONE
|
||||
pause
|
||||
|
||||
@@ -385,3 +385,52 @@ THE REUSABLE TECHNIQUE: when the pod dies with an extender fault, take the
|
||||
address out of the dump, subtract 0x410000, and look it up in
|
||||
btl4opt.map. It names the exact engine function -- which, for this family of
|
||||
work, names the watcher class and therefore the required member type.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
THE WATCHER LADDER IS DONE -- and the next brick is named by the engine itself
|
||||
--------------------------------------------------------------------------------
|
||||
Every authored AttributeWatcher now resolves. The pod run reaches the mission,
|
||||
DRAWS THE FULL COCKPIT (sensor cluster, myomers, cooling, the weapon panels,
|
||||
kills/deaths) with the board booted and audio running, and exits GAME-RC=0
|
||||
without a Fail. What it does NOT do is build a 3-D scene, and the engine says
|
||||
why in one line:
|
||||
|
||||
Entity 1:1 class3035 couldn't figure out how to MakeEntityRenderables
|
||||
L4VIDEO.cpp couldn't load object sky.bgf (then the whole arena:
|
||||
aw02/aw03/aw04/afloor/bcor1/bdet1/bdet2/bpip1 ...)
|
||||
NULL instance
|
||||
|
||||
VideoRenderer::MakeEntityRenderables (CODE/RP/MUNGA/VIDREND.CPP:231) is the
|
||||
BOTTOM of a virtual chain -- its own comment says "when a higher level of this
|
||||
virtual can't figure out how to make something it calls down to the level
|
||||
below it. If we reach here then nobody could figure out what to do." Our
|
||||
BTL4VideoRenderer does not override it, so every entity falls through to the
|
||||
complaint, no scene graph is built, and the arena geometry that would hang off
|
||||
it never loads. class3035 = 0xBDB.
|
||||
|
||||
CORRECTION to the earlier note in this file: the first full-rig run was
|
||||
recorded as "geometry complaint count went to ZERO -- .BGF loading was never a
|
||||
reconstruction problem, only a missing bridge". That reading was wrong. The
|
||||
count was zero because the run Failed at an attribute watcher long BEFORE
|
||||
reaching geometry. Now that the watchers all resolve, the loads are attempted
|
||||
and they fail -- because nothing built the renderables to hang them on, not
|
||||
because of the bridge.
|
||||
|
||||
SO THE NEXT BRICK IS THE REAL btl4vid BODY, and its shape is pinned by the
|
||||
surviving sibling header CODE/RP/RP_L4/RPL4VID.HPP:
|
||||
|
||||
void MakeEntityRenderables(Entity*, ResourceDescription *model_resource,
|
||||
ViewFrom type); <- override this
|
||||
dpl_DCS* ReadSKLFile(Entity*, ResourceDescription*, ViewFrom,
|
||||
char skeleton_type);
|
||||
void RecurseSKLFile(Entity*, dpl_DCS *parentDCS, NotationFile *skeleton,
|
||||
const char *page_name, int recursion_depth, ViewFrom,
|
||||
int *joint_counter, dpl_LOAD_MODE cache_mode);
|
||||
char SetupMaterialSubstitutionList(Entity*, ViewFrom);
|
||||
void TearDownMaterialSubstitutionList();
|
||||
|
||||
i.e. walk the mission's entities, read each one's .SKL skeleton notation pages
|
||||
(VIDEO/*.SKL are present in the mount), recurse them into a dpl_DCS hierarchy,
|
||||
and load the .BGF geometry per node. Content for the BT-specific renderables
|
||||
comes from the BT411 donor (game/reconstructed/btl4vid.cpp, 3188 lines:
|
||||
BTReticleRenderable, BTTranslocationRenderable, the pending-wrecks map).
|
||||
|
||||
Reference in New Issue
Block a user