From c0d2eb0aaea0f84467f5f48975eb74366ffc24de Mon Sep 17 00:00:00 2001 From: arcattack Date: Tue, 7 Jul 2026 21:32:12 -0500 Subject: [PATCH] gauge-complete P4f: PrepEngrScreen reconstructed + registered -> 12 engineering-screen label overlays build The "prepEngr" cockpit primitive (the per-engineering-screen static label overlay, 12 CFG calls at L4GAUGE.CFG:4595-4759) was a MISLABELED stub (base Gauge, an Execute override, mech/screenNumber SWAPPED) with no methodDescription -> parse-SKIPPED, none built. Reconstructed byte-verified (ctor @4c7bf0, BecameActive @4c7e48, Make @4c7b30; vtable 0051a06c). THREE corrections vs the stub (decode workflow + vtables.tsv proof): (1) base = GraphicGaugeBackground, not Gauge -- vtable-identical shape to the engine's BackgroundBitmap (only dtor + BecameActive overridden); (2) the overridden slot is BecameActive (a paint-on-activation), NOT Execute -- GraphicGaugeBackground has no Execute virtual, so the Gauge::Execute->Fail->abort hazard doesn't apply; (3) screenNumber@0x6C / mech@0x70 were swapped. sizeof 0x90. BecameActive walks the mech roster (databinding-safe GetSubsystemCount/GetSubsystem + BTGetSubsystemAuxScreen bridge, like VehicleSubSystems::Make), finds the subsystem whose auxScreenNumber == this screen (1..12), and paints the screen-number numeric + subsystem label + type-specific label cells dispatched on GetClassID (Sensor/Myomers/Emitter/PPC/ Projectile/Missile/GaussRifle). methodDescription = 9 params (mode, screen, 7 .pcc names). Registered in BTL4MethodDescription[]. Two raw subsystem reads (heat-sink #, +0x224 label) are guarded fail-soft best-efforts (marked; the aux-screen bridge label64 substitutes). VERIFIED: the skip list drops from {prepEngr x12, messageBoard} to just {messageBoard} -- all 12 prepEngr gauges build; no screen-range/crash; boot+sim+combat run; gauge composite renders identically (COOLANT 300/77, clusters, radar all un-regressed). The prepEngr labels paint on the Eng (ModeMFD*Eng*) screens, not the default composite view. Co-Authored-By: Claude Opus 4.8 (1M context) --- game/reconstructed/btl4gau2.cpp | 237 +++++++++++++++++++++++++++++--- game/reconstructed/btl4gau2.hpp | 44 +++--- game/reconstructed/btl4grnd.cpp | 1 + scratchpad/prep_gauge.png | Bin 0 -> 45869 bytes 4 files changed, 241 insertions(+), 41 deletions(-) create mode 100644 scratchpad/prep_gauge.png diff --git a/game/reconstructed/btl4gau2.cpp b/game/reconstructed/btl4gau2.cpp index 6343d06..2efbc25 100644 --- a/game/reconstructed/btl4gau2.cpp +++ b/game/reconstructed/btl4gau2.cpp @@ -822,32 +822,227 @@ void //########################################################################### //########################################################################### +// forward: the tiled-blit helper is defined lower in this TU (FUN_004c2ec4). +static void DrawPortBackground(GraphicsView *view, L4Warehouse *warehouse, + int x, int y, const char *tile); + +// ---- FUN_004c79c8 : draw the three status-label cells (+ optional top erase box). +// Each cell blits its label .pcc, or blanks the cell. Absolute cell rectangles are +// the binary's exact coords (part_014.c:1127-1166). +static void + DrawStatusCells(GraphicsView *view, L4Warehouse *warehouse, + int topBox, const char *A, const char *B, const char *C) +{ + if (topBox) // :1131-1135 + { + view->SetColor(0); + view->MoveToAbsolute(0x97, 0x80); + view->DrawFilledRectangleToAbsolute(0x17d, 0x13b); + } + if (A == NULL) { view->SetColor(0); view->MoveToAbsolute(0x15a, 0x145); // :1136-1140 + view->DrawFilledRectangleToAbsolute(0x17f, 0x159); } + else { view->SetColor(0xff); DrawPortBackground(view, warehouse, 0x15a, 0x145, A); } + if (B == NULL) { view->SetColor(0); view->MoveToAbsolute(0x85, 0x58); // :1145-1149 + view->DrawFilledRectangleToAbsolute(0x17f, 0x7c); } + else { view->SetColor(0xff); DrawPortBackground(view, warehouse, 0x85, 0x58, B); } + if (C == NULL) { view->SetColor(0); view->MoveToAbsolute(0x2a, 0x34); // :1154-1160 + // raw uses an extra GraphicsView vtbl+0x4c(99,10) compound-blank; a plain + // fill at the same cell is the faithful-enough substitute (marked). + view->DrawFilledRectangleToAbsolute(0x9f, 0x2d); } + else { view->SetColor(0xff); DrawPortBackground(view, warehouse, 0x2a, 0x34, C); } +} + +// CFG shape (L4GAUGE.CFG:4595): mode, int screen(1..12), then 7 .pcc names +// (font + 6 labels). 9 params. +MethodDescription + PrepEngrScreen::methodDescription = + { + "prepEngr", + PrepEngrScreen::Make, + { + { ParameterDescription::typeModeMask, NULL }, // p[0] mode (ModeMFD*Eng*) + { ParameterDescription::typeInteger, NULL }, // p[1] screen number 1..12 + { ParameterDescription::typeString, NULL }, // p[2] font helv42.pcc -> statusImage[0] + { ParameterDescription::typeString, NULL }, // p[3] escnd.pcc -> statusImage[1] + { ParameterDescription::typeString, NULL }, // p[4] edmg.pcc -> statusImage[2] + { ParameterDescription::typeString, NULL }, // p[5] bteslev.pcc -> statusImage[3] + { ParameterDescription::typeString, NULL }, // p[6] bteunjm.pcc -> statusImage[4] + { ParameterDescription::typeString, NULL }, // p[7] espeed.pcc -> statusImage[5] + { ParameterDescription::typeString, NULL }, // p[8] btesrnge.pcc -> statusImage[6] + PARAMETER_DESCRIPTION_END + } + }; + // -// @004c7b30 -- Make. DAT_0051936c is the engineer-screen number; must be 1..12 -// or "PrepEngr: screen number out of range " is warned. Allocates (0x90) -// and constructs with seven status-image names (DAT_005193b0..00519548). +// @004c7b30 -- Make. Validate the screen number (p[1], 1..12) then construct. +// The GraphicGaugeBackground base ctor self-registers with the renderer, so the +// gauge's BecameActive fires whenever its Eng screen is selected. We `new` the +// object (real compiled size) rather than operator new(0x90) -- the 2007 base +// isn't byte-exact, and nothing reads this object at raw offsets. // -// @004c7bf0 -- ctor (vtable PTR_FUN_0051a06c). Derives from the non-graphic -// Gauge group (FUN_004440d4) -- it owns no GraphicsView, only a child-gauge -// chain at +0x24. Interns and BitMapCache-AddRefs the seven status pixmaps -// (this[0x1D..0x23]); stores mech (this[0x1B]) and screen number (this[0x1C]). +Logical + PrepEngrScreen::Make( + int display_port_index, + Vector2DOf /*position -- PrepEngr draws at absolute coords*/, + Entity *entity, + GaugeRenderer *gauge_renderer + ) +{ + ParameterDescription *p = methodDescription.parameterList; + + int screen = p[1].data.integer; + if (screen < 1 || screen > 12) // :1182 + { + DEBUG_STREAM << "PrepEngr: screen number out of range " << screen << "\n"; // :1183 + return False; + } + + new PrepEngrScreen( // FUN_00402298(0x90) in the binary + p[0].data.modeMask, // mode (ModeMFD*Eng*) + (L4GaugeRenderer *)gauge_renderer, + 0, // owner_ID (raw hard-wires 0) + display_port_index, // graphics_port_number + entity, // mech + screen, // screen number + p[2].data.string, p[3].data.string, p[4].data.string, + p[5].data.string, p[6].data.string, p[7].data.string, + p[8].data.string, + "PrepEngr"); + return True; +} + // -// @004c7d14 -- dtor: release + free the seven images, tear down the child chain -// (FUN_0044ae0c), Gauge-group dtor (FUN_00443f7c). +// @004c7bf0 -- ctor. GraphicGaugeBackground base (mode/renderer/0/port/"PrepEngr"); +// store screen + mech; copy the 7 image names and pre-load (AddRef) each from the +// bitmap cache. // -// @004c7e48 -- Execute. Walk the mech's critical-subsystem roster -// (mech+0x124 count, mech+0x128 array). For each subsystem that (a) is a -// Generator-derived weapon (IsDerivedFrom 0x50f4bc) and (b) belongs to the -// selected screen (subsys+0x1dc == screenNumber), draw its label and -- via -// NumericDisplay (FUN_004700bc/0047043 0) -- its temperature and a HeatSink -// read-out, then dispatch on ClassID to lay out the weapon's status bitmaps -// (FUN_004c79c8 = draw three labelled status cells): -// 0xBC3 Sensor -> one cell + ammo bitmap (this[0x23]) -// 0xBC6 -> two cells (this[0x22],this[0x20]) -// 0xBC8/0xBD4 Emitter/PPC -> three cells (this[0x1E..0x20]) -// 0xBCD/0xBD0 Proj/Missile -> one cell (this[0x21]) -// 0xBCE GaussRifle -> warn "Gauss rifle not yet supported", one cell +PrepEngrScreen::PrepEngrScreen( + ModeMask mode_mask, L4GaugeRenderer *renderer_in, unsigned int owner_ID, + int graphics_port_number, Entity *mech_in, int screen_number, + const char *img0, const char *img1, const char *img2, const char *img3, + const char *img4, const char *img5, const char *img6, + const char *identification_string +): + GraphicGaugeBackground(mode_mask, renderer_in, owner_ID, // FUN_004440d4 + graphics_port_number, identification_string) +{ + screenNumber = screen_number; // @0x6C (:1216) + mech = mech_in; // @0x70 (:1215) + + const char *src[7] = { img0, img1, img2, img3, img4, img5, img6 }; + L4Warehouse *warehouse = (L4Warehouse *)renderer_in->warehousePointer; // renderer+0x4c + for (int i = 0; i < 7; i++) // :1217-1238 + { + if (src[i] != NULL) { + statusImage[i] = new char[strlen(src[i]) + 1]; // nameCopy (FUN_004700ac) + strcpy(statusImage[i], src[i]); + warehouse->bitMapBin.Get(statusImage[i]); // FUN_00442aec pre-load/AddRef + } else { + statusImage[i] = NULL; + } + } +} + // +// @004c7d14 -- dtor. Release the 7 pre-loaded images + free their name copies; +// the localView + base dtor run implicitly (do NOT emit explicit base-dtor calls). +// +PrepEngrScreen::~PrepEngrScreen() +{ + L4Warehouse *warehouse = (L4Warehouse *)renderer->warehousePointer; + for (int i = 0; i < 7; i++) // :1254-1274 + { + if (statusImage[i] != NULL) { + warehouse->bitMapBin.Release(statusImage[i]); // FUN_00442c12 + delete[] statusImage[i]; + statusImage[i] = NULL; + } + } +} + +// +// @004c7e48 -- BecameActive. Find the subsystem assigned to this screen and paint +// its labels (roster + aux-screen read via the databinding-safe accessors + the +// PoweredSubsystem bridge, exactly like VehicleSubSystems::Make). NON-inactivating +// (a real paint; does not chain the base) -> the paint-on-activation contract. +// +void + PrepEngrScreen::BecameActive() +{ + if (mech == NULL) return; + L4Warehouse *warehouse = (L4Warehouse *)renderer->warehousePointer; + const char *font = statusImage[0]; // helv42.pcc + + int count = mech->GetSubsystemCount(); // mech+0x124 + for (int i = 1; i < count; i++) // skip slot 0 (controls mapper) + { + Subsystem *sub = mech->GetSubsystem(i); // mech+0x128[i] + if (sub == NULL) continue; + + int auxScreen = 0, placement = -1; char label64[64]; label64[0] = '\0'; + if (!BTGetSubsystemAuxScreen(sub, &auxScreen, &placement, label64)) // filter + sub+0x1dc + continue; // not a PoweredSubsystem-derived weapon + if (auxScreen != screenNumber) // :1309 + continue; + + // ---- numeric #1 : the screen number, 2 digits @(0xE9,0x176) (:1310-1313) + { + NumericDisplay num(warehouse, 0xe9, 0x176, font, 2, + NumericDisplay::unsignedFormat, 0, 0xff); // FUN_004700bc + num.Draw(&localView, (Scalar)screenNumber); // FUN_00470430 + } + + // ---- numeric #2 : linked heat-sink number, 1 digit @(0x15E,5) (:1315-1321) + // BEST-EFFORT (marked): the resolved sink's +0x1D4 index is a raw offset on + // a not-byte-exact object -> guarded (NULL link / read 0). + int hsNumber = 0; + void *hsLink = AttributePointerOf(sub, "HeatSink"); // FUN_0041bfc0 + void *hs = (hsLink != NULL) ? ResolveLink(hsLink) : NULL; // FUN_00417ab4 + if (hs != NULL) + hsNumber = *(int *)((char *)hs + 0x1d4); + { + NumericDisplay num(warehouse, 0x15e, 5, font, 1, + NumericDisplay::unsignedFormat, 0, 0xff); + num.Draw(&localView, (Scalar)hsNumber); + } + + // ---- subsystem label bitmap @(0x125,0x172) (:1322-1329). The binary draws + // the .pcc name at sub+0x224; the aux-screen bridge's label64 is the + // databinding-safe equivalent (BEST-EFFORT). + if (label64[0] != '\0') { + localView.SetColor(0xff); + DrawPortBackground(&localView, warehouse, 0x125, 0x172, label64); + } + + // ---- type-specific label cells (switch on ClassID, :1330-1357) + switch (sub->GetClassID()) // sub+4 + { + case 0xBC3: // Sensor + DrawStatusCells(&localView, warehouse, 1, NULL, NULL, NULL); + localView.SetColor(0xff); + DrawPortBackground(&localView, warehouse, 0xb8, 0x8c, statusImage[6]); // btesrnge + return; + case 0xBC6: // Myomers + DrawStatusCells(&localView, warehouse, 0, NULL, statusImage[5], statusImage[3]); + return; + case 0xBC8: // Emitter + case 0xBD4: // PPC + DrawStatusCells(&localView, warehouse, 0, statusImage[1], statusImage[2], statusImage[3]); + return; + case 0xBCD: // ProjectileWeapon + case 0xBD0: // MissileLauncher + DrawStatusCells(&localView, warehouse, 1, NULL, NULL, statusImage[4]); + return; + case 0xBCE: // GaussRifle -- not yet supported + DEBUG_STREAM << "PrepEngr: Gauss rifle not yet supported\n"; // :1353 + DrawStatusCells(&localView, warehouse, 1, NULL, NULL, statusImage[3]); + return; + default: + return; + } + } +} + //########################################################################### diff --git a/game/reconstructed/btl4gau2.hpp b/game/reconstructed/btl4gau2.hpp index 9235dfd..8bf1fa7 100644 --- a/game/reconstructed/btl4gau2.hpp +++ b/game/reconstructed/btl4gau2.hpp @@ -290,35 +290,39 @@ //####################################################################### - // PrepEngrScreen -- builds the per-weapon "engineering" status screen. - // @004c7b30 Make / @004c7bf0 ctor / @004c7d14 dtor. vtable PTR_FUN_0051a06c. - // Derives from the non-graphic Gauge group (FUN_004440d4) and interns seven - // status pixmaps (this[0x1D..0x23]). Make validates DAT_0051936c (engineer - // screen number, must be 1..12; warns "PrepEngr: screen number out of range"). - // Execute @004c7e48 walks the mech's critical-subsystem roster (mech+0x124 - // count / mech+0x128 array) and, for each weapon on the selected screen, - // renders its label & ammo via NumericDisplay, dispatching on subsystem - // ClassID (0xBC3 Sensor, 0xBC6, 0xBC8/0xBD4 Emitter/PPC, 0xBCD/0xBD0 - // Projectile/Missile, 0xBCE GaussRifle -- "Gauss rifle not yet supported"). + // PrepEngrScreen (config keyword "prepEngr") -- the per-engineering-screen + // STATIC LABEL overlay. @004c7b30 Make / @004c7bf0 ctor / @004c7d14 dtor / + // @004c7e48 BecameActive. vtable PTR_FUN_0051a06c. + // + // A GraphicGaugeBackground (paint-on-activation, NOT an Execute gauge -- the + // same base/vtable shape as the engine's BackgroundBitmap: only the dtor + + // BecameActive slots are overridden). Interns 7 status .pcc's (font + 6 + // labels) and, when its MFD-Eng screen (1..12) activates, paints the labels + // for the ONE subsystem whose auxScreenNumber == this screen, dispatched by + // the subsystem's ClassID. Was a MISLABELED stub (base Gauge, Execute, and + // mech/screenNumber SWAPPED) with no methodDescription -> "prepEngr" was + // parse-skipped (12 CFG calls never built). //####################################################################### class PrepEngrScreen : - public Gauge // non-graphic Gauge group (FUN_004440d4) + public GraphicGaugeBackground { public: + static MethodDescription methodDescription; // "prepEngr" static Logical Make(int, Vector2DOf, Entity *, GaugeRenderer *); // @004c7b30 PrepEngrScreen( // @004c7bf0 - GaugeRate, ModeMask, L4GaugeRenderer *, int screen_number, - Entity *mech, int graphics_port_number, - const char *img0, const char *img1, const char *img2, + ModeMask, L4GaugeRenderer *, unsigned int owner_ID, + int graphics_port_number, Entity *mech, int screen_number, + const char *img0/*font*/, const char *img1, const char *img2, const char *img3, const char *img4, const char *img5, - const char *img6, const char *identification_string); + const char *img6, const char *identification_string = "PrepEngr"); ~PrepEngrScreen(); // @004c7d14 - void Execute(); // @004c7e48 + void BecameActive(); // @004c7e48 (the paint slot -- NOT Execute) protected: - Entity *mech; // @0x6C this[0x1B] - int screenNumber; // @0x70 this[0x1C] - char *statusImage[7]; // @0x74 this[0x1D..0x23] - // child gauges chained in the base Gauge group at +0x24 + int screenNumber; // @0x6C this[0x1B] (FIX: was mech) + Entity *mech; // @0x70 this[0x1C] (FIX: was screenNumber) + char *statusImage[7]; // @0x74 this[0x1D..0x23] (interned .pcc names) + // sizeof == 0x90 (Make alloc); no offset locks (2007 GraphicGaugeBackground + // base not byte-identical; every read is via named members / safe accessors). }; diff --git a/game/reconstructed/btl4grnd.cpp b/game/reconstructed/btl4grnd.cpp index 87f96f5..3dfb806 100644 --- a/game/reconstructed/btl4grnd.cpp +++ b/game/reconstructed/btl4grnd.cpp @@ -148,6 +148,7 @@ MethodDescription &PilotList::methodDescription, // "pilotList" -- Comm KILLS/DEATHS pilot roster &GeneratorCluster::methodDescription, // "GeneratorCluster" -- the 4 generator engineering panels (buttons 9-12) &SectorDisplay::methodDescription, // "sectorDisplay" -- radar SECTOR X/Z read-out (Secondary overlay) + &PrepEngrScreen::methodDescription, // "prepEngr" -- per-Eng-screen static label overlay (12x) &BTL4ChainToPrevious }; diff --git a/scratchpad/prep_gauge.png b/scratchpad/prep_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..0886c5a5f84325eb82d21e31dffc8e87b59baa10 GIT binary patch literal 45869 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 literal 0 HcmV?d00001