source410: THE WHOLE 4.10 TREE COMPILES - 11/11 under the fleet's BC++ 4.52

All 10 surviving original TUs plus the reconstructed BTL4APP.CPP pilot build
clean with the authentic OPT.MAK flags (compile410.sh --sweep). First time
the 4.10 BattleTech source has compiled since 1996.

- layout_probe.cpp: the period compiler measures 1995 layouts from the
  surviving headers; validated 3/3 against binary alloc sizes (BTMission
  0xFC, BTL4ModeManager 0xC, BTRegistry 0x10). Base boundary: Simulation
  0xD0 / Entity 0x1C4 / Mover 0x300 / JointedMover 0x328 => Mech-own region
  0x328-0x854 (MECH-LAYOUT.md staging worksheet).
- 13 staged headers close the family ([T3] reserved[]-parked layouts;
  interfaces PROVEN by the surviving consumers): MECH, MECHSUB, HEAT,
  POWERSUB, MECHWEAP, EMITTER, MECHMPPR, BTPLAYER (BTPlayer__MakeMessage =
  Player's 8 args + roleName/teamName [T1 via BTREG]), PROJTILE, MISSILE,
  BTL4MPPR, BTL4VID + the round-2 BTCNSL/BTSCNRL.
- compile410.sh: PCH gate retired (bt.hpp/mungal4.hpp full include sets),
  DPL SDK roots on the include line.
- BTL4APP.CPP: appmgr include + GetApplicationManager()->GetFrameRate() +
  ResourceDescription:: scoping; Fail() held at its recorded line 400.
- Evidence ledgers: STAGED-HEADERS.NOTES.md, MECH-LAYOUT.md, BACKFILLS,
  BTCNSL (binary-recovered console wire IDs), BTSCNRL.

Remaining for a linkable BTL4OPT: the ~40 missing TU bodies (917-function
manifest) - the header skeleton they grow into now exists and compiles.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-19 07:58:26 -05:00
co-authored by Claude Fable 5
parent ba7c657dd9
commit d9b34ddc63
18 changed files with 1459 additions and 13 deletions
+116
View File
@@ -0,0 +1,116 @@
//===========================================================================//
// File: btplayer.hpp //
// Project: BattleTech //
// Contents: Implementation details for the BT player //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(BTPLAYER_HPP)
# define BTPLAYER_HPP
# if !defined(PLAYER_HPP)
# include <player.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
class BTTeam;
//###########################################################################
//####################### BTPlayer Make Message #########################
//###########################################################################
class BTPlayer__MakeMessage:
public Player__MakeMessage
{
public:
CString roleName;
CString teamName;
BTPlayer__MakeMessage(
Receiver::MessageID message_ID,
size_t length,
Entity::ClassID class_ID,
const EntityID &owner_ID,
ResourceDescription::ResourceID resource_ID,
LWord instance_flags,
const Origin &origin,
int player_bitmap_index,
CString role_name,
CString team_name
):
Player__MakeMessage(
message_ID,
length,
class_ID,
owner_ID,
resource_ID,
instance_flags,
origin,
player_bitmap_index
)
{
roleName = role_name;
teamName = team_name;
}
};
//###########################################################################
//############################# BTPlayer ################################
//###########################################################################
class BTPlayer:
public Player
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static const HandlerEntry
MessageHandlerEntries[];
static MessageHandlerSet
MessageHandlers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef BTPlayer__MakeMessage MakeMessage;
static BTPlayer*
Make(MakeMessage *creation_message);
BTPlayer(
MakeMessage *creation_message,
SharedData &shared_data = DefaultData
);
~BTPlayer();
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Experience support
//
public:
Enumeration
GetExperienceLevel();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
int reserved[38];
};
#endif
+113
View File
@@ -0,0 +1,113 @@
//===========================================================================//
// File: emitter.hpp //
// Project: BattleTech //
// Contents: Implementation details for energy weapon emitters //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(EMITTER_HPP)
# define EMITTER_HPP
# if !defined(MECHWEAP_HPP)
# include <mechweap.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
//###########################################################################
//####################### Emitter Model Resource ########################
//###########################################################################
struct Emitter__SubsystemResource:
public MechWeapon::SubsystemResource
{
Scalar seekVoltage[5];
Scalar dischargeTime;
};
//###########################################################################
//############################## Emitter ################################
//###########################################################################
class Emitter:
public MechWeapon
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Attribute Support
//
public:
enum {
ChargeLevelAttributeID = Subsystem::NextAttributeID,
NextAttributeID
};
static const IndexEntry AttributePointers[];
static AttributeIndexSet AttributeIndex;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Class Support
//
public:
static Logical
TestClass(Mech &);
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef Emitter__SubsystemResource SubsystemResource;
Emitter(
Mech *owner,
int subsystem_ID,
SubsystemResource *subsystem_resource,
SharedData &shared_data = DefaultData
);
~Emitter();
static int
CreateStreamedSubsystem(
ResourceFile *resource_file,
NotationFile *model_file,
const char *model_name,
const char *subsystem_name,
SubsystemResource *subsystem_resource,
NotationFile *subsystem_file,
const ResourceDirectories *directories,
int passes = 1
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Weapon interface
//
public:
void
FireWeapon();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
Scalar chargeLevel;
Scalar dischargeTime;
};
#endif
+97
View File
@@ -0,0 +1,97 @@
//===========================================================================//
// File: heat.hpp //
// Project: BattleTech //
// Contents: Implementation details for heatable subsystems //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(HEAT_HPP)
# define HEAT_HPP
# if !defined(MECHSUB_HPP)
# include <mechsub.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
//###########################################################################
//################## HeatableSubsystem Model Resource ###################
//###########################################################################
struct HeatableSubsystem__SubsystemResource:
public MechSubsystem::SubsystemResource
{
Scalar thermalMass;
Scalar degradeTemperature;
Scalar failTemperature;
int coolingLoop;
};
//###########################################################################
//######################## HeatableSubsystem ############################
//###########################################################################
class HeatableSubsystem:
public MechSubsystem
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Class Support
//
public:
static Logical
TestClass(Mech &);
Logical
TestInstance() const;
void
ResetToInitialState();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef HeatableSubsystem__SubsystemResource SubsystemResource;
HeatableSubsystem(
Mech *owner,
int subsystem_ID,
SubsystemResource *subsystem_resource,
SharedData &shared_data = DefaultData
);
~HeatableSubsystem();
static int
CreateStreamedSubsystem(
NotationFile *model_file,
const char *model_name,
const char *subsystem_name,
SubsystemResource *subsystem_resource,
NotationFile *subsystem_file,
const ResourceDirectories *directories,
int passes = 1
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
Scalar currentTemperature;
Scalar heatLoad;
};
#endif
+66
View File
@@ -0,0 +1,66 @@
# MECH.HPP staging worksheet (opened 2026-07-19)
The working ledger for growing the literal MECH.HPP alongside the mech-family TU
reconstructions. **The period compiler is the layout authority**: `../layout_probe.cpp`
compiled+run under BC4.52 with the authentic OPT.MAK flags (`-a4` alignment) measures the
1995 base-class sizes from the SURVIVING engine headers.
## Probe results (2026-07-19) — methodology VALIDATED 3/3
| class | sizeof | validation |
|---|---|---|
| Simulation | 0x0D0 | |
| Entity | 0x1C4 | (⇒ Entity-own fields span 0x0D00x1C4: playerLink@0x190 ✓, subsystem roster @0x124/0x128 ✓) |
| Mover | 0x300 | (⇒ Mover-own 0x1C40x300: localOrigin@0x260 ✓) |
| **JointedMover** | **0x328** | **⇒ Mech's own region = 0x3280x854 (0x52C bytes)** |
| Mission | 0x0E4 | BTMission's experienceLevel @+0xE4 = first BT member ✓ |
| BTMission | 0x0FC | **== the binary's `new(0xfc)`** (BTL4Mission alloc) ✓ |
| ModeManager / BTL4ModeManager | 0x00C | **== the binary's `new(0xc)`** ✓ |
| BTRegistry | 0x010 | **== the binary's `new(0x10)`** ✓ |
Three independent allocation-size matches against the shipped binary ⇒ headers + compiler +
flags reproduce 1995 layout exactly. Any future header where the probe disagrees with a
binary alloc size is WRONG and must be fixed before use.
## Consequences for MECH.HPP staging
- Every binary offset **< 0x328 is a BASE-CLASS field**, not a Mech member. The port's
mech.hpp declares several pose members in that range (orientation@0xD0, bodyRotation@0x100,
turretBase@0x1C4, headPitch@0x1CC, torsoTwist@0x1DC, legAngle@0x1F4, hipAngle@0x200,
torsoAim*@0x298/0x2C8, netOrientation@0x2D4) — in the 1995 header these belong to
Simulation/Entity/Mover/JointedMover (or their equivalents) and must be RE-ATTRIBUTED by
checking the surviving engine headers' member lists at those offsets (probe with offsetof
where members are public).
- Mech-own members with binary offsets ≥ 0x328 (from the port/CLASSMAP, to be laid out with
`reserved[]` filler between mapped runs): reduceButton@0x340, forwardCycleRate@0x344,
legCycleSpeed@0x348, reverseStrideLength@0x34C, gimpStrideLength@0x350, mechName@0x360,
masterAlarm@0x39C(+legStateAlarm), legAnimationState@0x3B0, unstablePercentage@0x3F0,
airborne@0x3F4, radar block @0x3F80x40C, rearFiring@0x410, missionReview@0x414,
messageManager@0x434, torsoCache@0x438, lastInflictingID@0x43C, damageLookupTable@0x444,
weaponCount@0x448, collisionTemporaryState@0x44C, heatAlarm@0x4500x464, throttleState@0x4A4,
fallDirection@0x4A8, fallScalar@0x4B4(+collisionSpeed), templateBottomLift@0x4B8,
stabilityAlarm@0x4C40x4D8, standing/duckedTemplateMaxY@0x518/0x51C (≡heatLevel/Capacity —
CONFLICT, resolve), gyroSubsystem@0x528, gait caps @0x52C0x548, look angles @0x5640x570,
turn rates @0x574/0x578, jump flags @0x5800x588, motionEventName@0x598, motionEventArmed@0x5A4,
time scales @0x5A80x5B0, hudSubsystem@0x5B4, cycle rates @0x5B80x5C0, gyroRumbleTimer@0x5C4,
footStepRootJoint@0x5C8, animationClips@0x5CC(+namedClip alias @0x5E0, crash clips
@0x5D40x5DC), gimpBaseClip@0x64C, deathAnimationLatched@0x650, leg/bodyResetLatch@0x654/0x658,
legAnimation@0x65C, controllableSubsystems@0x65C(CONFLICT — one is a chain @0x65C, resolve),
bodyTargetSpeed@0x6B4, bodyCycleSpeed@0x6B8, bodyAnimation@0x6BC(≡watchedSubsystems CONFLICT),
statusAlarm/bodyStateAlarm@0x714, bodyAnimationState@0x728, deadband block @0x7680x770,
creationTime@0x778, poseSyncLatch@0x77C, heatLevelSnapshot@0x780, unstable tuning @0x7840x798,
reverseSpeedMax2@0x7A0, heatableSubsystems@0x7AC, weaponRoster@0x7BC, damageableSubsystems@0x7CC,
sensorSubsystem@0x7DC, telemetryFilter@0x7E0, linearSpeed@0x81C, resource names @0x8440x84C,
deathHandler@0x850, end 0x854.
- The flagged CONFLICTs are port-side double-attributions to untangle against the decomp
before the first staged MECH.HPP is written.
- Real 1995 types to substitute for the port proxies: ReconChain→`ChainOf<Subsystem*>`? /
AlarmIndicator→the engine alarm type / ReconSeq→the SequenceController analog / BTVal→per
case — settle each against the surviving engine headers + sizes via the probe.
## Next actions
1. Extend layout_probe.cpp with offsetof checks on public base members to re-attribute the
sub-0x328 pose fields to their true base classes.
2. Untangle the three offset CONFLICTs above (decomp reads).
3. Write the first staged MECH.HPP (interface + mapped runs + reserved[] filler) and
compile-verify sizeof(Mech)==0x854 with the probe.
+235
View File
@@ -0,0 +1,235 @@
//===========================================================================//
// File: mech.hpp //
// Project: BattleTech Brick: Entity Manager //
// Contents: Implementation details for the Mech entity //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(MECH_HPP)
# define MECH_HPP
# if !defined(JMOVER_HPP)
# include <jmover.hpp>
# endif
# if !defined(RETICLE_HPP)
# include <reticle.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
class Subsystem;
class ControlsMapping;
class PlatformTool;
class MechControlsMapper;
class Mech__DamageZone;
//###########################################################################
//######################### Mech Model Resource #########################
//###########################################################################
struct Mech__ModelResource:
public JointedMover::ModelResource
{
char animationPrefix[4];
Scalar maxAcceleration;
Scalar superStopAcceleration;
Scalar throttleAdjustment;
Scalar lookLeftAngle;
Scalar lookRightAngle;
Scalar lookFrontAngle;
Scalar lookBackAngle;
Scalar walkingTurnRate;
Scalar runningTurnRate;
Scalar reticleX;
Scalar reticleY;
Scalar relativeMechValue;
int deathEffectResourceID;
Scalar deathSplashDamage;
Scalar deathSplashRadius;
Scalar maxUnstableAcceleration;
Scalar unstableAccelerationEffect;
Scalar unstableGunTheEngineEffect;
Scalar unstableSuperStopEffect;
Scalar unstableHighVelocityEffect;
Scalar unstableStopedTurnEffect;
Scalar updatePositionDiffrence;
Scalar updateTurnVelocityDiffrence;
Scalar updateTurnDegreeDiffrence;
Scalar timeDelay;
Vector3D cameraOffset;
char shadowJointName[20];
};
//###########################################################################
//########################## Mech Make Message ##########################
//###########################################################################
class Mech__MakeMessage:
public JointedMover::MakeMessage
{
public:
char resourceNameA[20];
char resourceNameB[20];
char resourceNameC[20];
Mech__MakeMessage(
Receiver::MessageID message_ID,
size_t length,
const EntityID &entity_ID,
Entity::ClassID class_ID,
const EntityID &owner_ID,
ResourceDescription::ResourceID resource_ID,
LWord instance_flags,
const Origin &origin,
const Motion &velocity,
const Motion &acceleration,
const char *badge,
const char *color,
const char *patch
):
JointedMover::MakeMessage(
message_ID, length, entity_ID, class_ID, owner_ID,
resource_ID, instance_flags, origin, velocity, acceleration
)
{
Str_Copy(resourceNameA, badge, sizeof(resourceNameA));
Str_Copy(resourceNameB, color, sizeof(resourceNameB));
Str_Copy(resourceNameC, patch, sizeof(resourceNameC));
}
};
//###########################################################################
//############################## Mech ###############################
//###########################################################################
class Mech:
public JointedMover
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static const HandlerEntry
MessageHandlerEntries[];
static MessageHandlerSet
MessageHandlers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Class Support
//
public:
static Logical
TestClass(Mech &);
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef Mech__ModelResource ModelResource;
typedef Mech__MakeMessage MakeMessage;
typedef Mech__DamageZone DamageZone;
static Mech*
Make(MakeMessage *creation_message);
Mech(
MakeMessage *creation_message,
SharedData &shared_data = DefaultData
);
~Mech();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// App interface
//
public:
void
SetMappingSubsystem(Subsystem *mapper);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Resource creation
//
public:
static void
CreateMakeMessage(
MakeMessage *creation_message,
NotationFile *model_file,
const ResourceDirectories *directories
);
static ResourceDescription::ResourceID
CreateModelResource(
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories,
ModelResource *model = 0
);
static ResourceDescription::ResourceID
CreateSubsystemStream(
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories
);
static ResourceDescription::ResourceID
CreateDamageZoneStream(
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories
);
static ResourceDescription::ResourceID
CreateSkeletonStream(
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories
);
static ResourceDescription::ResourceID
CreateExplosionTableStream(
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories
);
typedef Logical (*FindNameFunction)(
const char *control_name, ControlsMapping *mapping);
static ResourceDescription::ResourceID
CreateControlMappingStream(
const char *mapping_name,
NotationFile *mapping_file,
FindNameFunction find_name,
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories,
PlatformTool *current_tool
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
int reserved[331];
};
#endif
+78
View File
@@ -0,0 +1,78 @@
//===========================================================================//
// File: mechmppr.hpp //
// Project: BattleTech //
// Contents: Implementation details for the mech controls mapper //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(MECHMPPR_HPP)
# define MECHMPPR_HPP
# if !defined(SUBSYSTM_HPP)
# include <subsystm.hpp>
# endif
# if !defined(CSTR_HPP)
# include <cstr.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
//###########################################################################
//######################## MechControlsMapper ###########################
//###########################################################################
class MechControlsMapper:
public Subsystem
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static MessageHandlerSet MessageHandlers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Control modes
//
public:
enum ControlMode {
BasicMode = 0,
StandardMode,
VeteranMode
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
MechControlsMapper(
Mech *owner,
int subsystem_ID,
CString subsystem_name,
RegisteredClass::ClassID class_ID,
SharedData &shared_data = DefaultData
);
~MechControlsMapper();
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
int reserved[64];
};
#endif
+132
View File
@@ -0,0 +1,132 @@
//===========================================================================//
// File: mechsub.hpp //
// Project: BattleTech //
// Contents: Implementation details for mech subsystems //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(MECHSUB_HPP)
# define MECHSUB_HPP
# if !defined(SUBSYSTM_HPP)
# include <subsystm.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
class Damage;
//###########################################################################
//#################### MechSubsystem Model Resource #####################
//###########################################################################
struct MechSubsystem__SubsystemResource:
public Subsystem::SubsystemResource
{
Scalar armorByFacing[5];
Scalar structureReference;
int vitalSubsystemIndex;
char videoObjectName[128];
ResourceDescription::ResourceID
alarmModel;
int alarmModelReserved[2];
int printSimulationState;
Scalar collisionCriticalHitWeight;
Scalar criticalReference;
};
//###########################################################################
//########################## MechSubsystem ##############################
//###########################################################################
class MechSubsystem:
public Subsystem
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static MessageHandlerSet MessageHandlers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Status model
//
public:
enum TechStatusType {
Destroyed = 0,
Damaged = 1,
CoolantLeaking = 2,
Overheating = 3,
AmmoBurning = 4,
Jammed = 5,
BadPower = 6,
TechStatusTypeCount
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Class Support
//
public:
static Logical
TestClass(Mech &);
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef MechSubsystem__SubsystemResource SubsystemResource;
MechSubsystem(
Mech *owner,
int subsystem_ID,
const char *subsystem_name,
RegisteredClass::ClassID class_id,
SharedData &shared_data = DefaultData
);
MechSubsystem(
Mech *owner,
int subsystem_ID,
SubsystemResource *subsystem_resource,
SharedData &shared_data = DefaultData
);
~MechSubsystem();
static int
CreateStreamedSubsystem(
NotationFile *model_file,
const char *model_name,
const char *subsystem_name,
SubsystemResource *subsystem_resource,
NotationFile *subsystem_file,
const ResourceDirectories *directories,
int passes = 1
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Damage support
//
public:
virtual void
TakeDamage(Damage &damage);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
Mech *owner;
};
#endif
+125
View File
@@ -0,0 +1,125 @@
//===========================================================================//
// File: mechweap.hpp //
// Project: BattleTech //
// Contents: Implementation details for mech weapons //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(MECHWEAP_HPP)
# define MECHWEAP_HPP
# if !defined(POWERSUB_HPP)
# include <powersub.hpp>
# endif
# if !defined(DAMAGE_HPP)
# include <damage.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
//###########################################################################
//###################### MechWeapon Model Resource ######################
//###########################################################################
struct MechWeapon__SubsystemResource:
public PoweredSubsystem::SubsystemResource
{
Scalar rechargeRate;
Scalar weaponRange;
ResourceDescription::ResourceID
explosionModelFile;
Scalar damageAmount;
int damageType;
Scalar heatCostToFire;
Scalar pipPositionX;
Scalar pipPositionY;
int rearFiring;
};
//###########################################################################
//############################ MechWeapon ###############################
//###########################################################################
class MechWeapon:
public PoweredSubsystem
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static MessageHandlerSet MessageHandlers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Class Support
//
public:
static Logical
TestClass(Mech &);
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef MechWeapon__SubsystemResource SubsystemResource;
MechWeapon(
Mech *owner,
int subsystem_ID,
SubsystemResource *subsystem_resource,
SharedData &shared_data = DefaultData
);
~MechWeapon();
static int
CreateStreamedSubsystem(
ResourceFile *resource_file,
NotationFile *model_file,
const char *model_name,
const char *subsystem_name,
SubsystemResource *subsystem_resource,
NotationFile *subsystem_file,
const ResourceDirectories *directories,
int passes = 1
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Weapon interface
//
public:
virtual void
FireWeapon();
void
SendDamage(
Entity *target,
Damage &damage
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
Scalar rechargeRate;
Scalar weaponRange;
Scalar damageAmount;
int damageType;
Scalar heatCostToFire;
int targetWithinRange;
Damage damageData;
};
#endif
+73
View File
@@ -0,0 +1,73 @@
//===========================================================================//
// File: missile.hpp //
// Project: BattleTech //
// Contents: Implementation details for missiles //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(MISSILE_HPP)
# define MISSILE_HPP
# if !defined(PROJTILE_HPP)
# include <projtile.hpp>
# endif
//###########################################################################
//############################## Missile ################################
//###########################################################################
class Missile:
public Projectile
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef Projectile::MakeMessage MakeMessage;
static Missile*
Make(MakeMessage *creation_message);
Missile(
MakeMessage *creation_message,
SharedData &shared_data = DefaultData
);
~Missile();
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Resource creation
//
public:
static ResourceDescription::ResourceID
CreateModelResource(
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
int reserved[16];
};
#endif
+100
View File
@@ -0,0 +1,100 @@
//===========================================================================//
// File: powersub.hpp //
// Project: BattleTech //
// Contents: Implementation details for powered subsystems //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(POWERSUB_HPP)
# define POWERSUB_HPP
# if !defined(HEAT_HPP)
# include <heat.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
//###########################################################################
//################### PoweredSubsystem Model Resource ###################
//###########################################################################
struct PoweredSubsystem__SubsystemResource:
public HeatableSubsystem::SubsystemResource
{
int voltageSource;
Scalar thermalResistivityCoefficient;
int auxScreenNumber;
int auxScreenPlacement;
char auxScreenLabel[64];
char engScreenLabel[64];
Scalar startTime;
};
//###########################################################################
//######################### PoweredSubsystem ############################
//###########################################################################
class PoweredSubsystem:
public HeatableSubsystem
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static MessageHandlerSet MessageHandlers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Class Support
//
public:
static Logical
TestClass(Mech &);
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef PoweredSubsystem__SubsystemResource SubsystemResource;
PoweredSubsystem(
Mech *owner,
int subsystem_ID,
SubsystemResource *subsystem_resource,
SharedData &shared_data = DefaultData
);
~PoweredSubsystem();
static int
CreateStreamedSubsystem(
NotationFile *model_file,
const char *model_name,
const char *subsystem_name,
SubsystemResource *subsystem_resource,
NotationFile *subsystem_file,
const ResourceDirectories *directories,
int passes = 1
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
Scalar inputVoltage;
Scalar outputVoltage;
Scalar ratedVoltage;
};
#endif
+73
View File
@@ -0,0 +1,73 @@
//===========================================================================//
// File: projtile.hpp //
// Project: BattleTech //
// Contents: Implementation details for projectiles //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(PROJTILE_HPP)
# define PROJTILE_HPP
# if !defined(MOVER_HPP)
# include <mover.hpp>
# endif
//###########################################################################
//############################ Projectile ###############################
//###########################################################################
class Projectile:
public Mover
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
typedef Mover::MakeMessage MakeMessage;
static Projectile*
Make(MakeMessage *creation_message);
Projectile(
MakeMessage *creation_message,
SharedData &shared_data = DefaultData
);
~Projectile();
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Resource creation
//
public:
static ResourceDescription::ResourceID
CreateModelResource(
ResourceFile *resource_file,
const char *model_name,
NotationFile *model_file,
const ResourceDirectories *directories
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
int reserved[16];
};
#endif
@@ -0,0 +1,39 @@
# Staged header family — shared notes (2026-07-19)
The 13 headers that closed the tree's compile: BT/ MECH, MECHSUB, HEAT, POWERSUB, MECHWEAP,
EMITTER, MECHMPPR, BTPLAYER, PROJTILE, MISSILE (+ BTCNSL/BTSCNRL with own sidecars);
BT_L4/ BTL4MPPR, BTL4VID. **STAGED [T3]**: interface-complete for every surviving consumer,
layout PARKED behind `reserved[]` blocks. Each tightens to [T1] when its TU is reconstructed
(the MECH-LAYOUT.md worksheet is the pattern).
What is ALREADY hard evidence [T1] inside them:
- Every signature exercised by a surviving consumer (the consumer compiling IS the proof):
PPC/GAUSS pin Emitter (ctor, FireWeapon, CreateStreamedSubsystem 8-arg, SubsystemResource
nesting, ClassDerivations/AttributeIndex); BTREG pins BTPlayer::MakeMessage (10-arg ctor:
base 8 per PLAYER.HPP + roleName/teamName CStrings) + BTPlayer(&msg) + DefaultData;
BTTOOL pins the seven Mech::Create* tool statics + Projectile/Missile::CreateModelResource;
BTL4APP.CPP pins Mech::Make/MakeMessage/SetMappingSubsystem and the
MechThrustmaster/RIOMapper ctors (Mech*, int, CString, ClassID=0x7dc, SharedData&).
- Hierarchy from surviving 1995 headers: PPC:Emitter, MissileLauncher:ProjectileWeapon,
Sensor:PoweredSubsystem, + the CLASSMAP chain MechSubsystem:Subsystem →
HeatableSubsystem → PoweredSubsystem → MechWeapon → Emitter.
- Mech__ModelResource: byte-exact 200-byte record (port [T1], static_assert-locked there).
- Mech object: base boundary 0x328 (layout_probe [T1]) + reserved[331] ⇒ sizeof 0x854
== the binary's Make alloc (probe-verifiable).
Known staging shortcuts to revisit with the TUs:
- Resource-struct field lists for HEAT/POWERSUB/MECHWEAP/EMITTER are name-plausible but NOT
yet offset-locked against the type-0x11 records (the port's locked versions are richer —
reconcile when those TUs land; the GAUSS dischargeVoltage tail is the surviving anchor).
- MECHMPPR/BTL4MPPR member regions are token reserved blocks; the real controlMode@0x190
block layout is in the port's mechmppr.hpp (task #51 evidence).
- BTL4VID is a shell (ctor + LoadMissionImplementation per the RPL4VID analog).
- BTL4APP.CPP deviations from the pilot's first draft, forced by real headers: appmgr.hpp
include added (frame rate = GetApplicationManager()->GetFrameRate(), APPMGR.HPP:22),
ResourceDescription:: scope on ControlMappingsListResourceType (RESOURCE.HPP:102), the
keyboard-comment trimmed to hold Fail() at line 400.
- The DPL include roots joined the compile line (CODE/BT/MUNGA_L4/LIBDPL over
CODE/RP/MUNGA_L4/libDPL) — dpl.h resolves `dpl/dpltypes.h` relative to libDPL.
Sweep configuration of record: `../compile410.sh` (NO_PRECOMPILED_HEADERS retired — bt.hpp
and mungal4.hpp now pull their full PCH sets: mech/btplayer/mechsub + graph2d/l4host/l4app).
+6 -6
View File
@@ -23,6 +23,10 @@
# include <btreg.hpp>
#endif
#if !defined(APPMGR_HPP)
# include <appmgr.hpp>
#endif
#if !defined(BTL4VID_HPP)
# include <btl4vid.hpp>
#endif
@@ -181,7 +185,7 @@ AudioRenderer*
return
new BTL4AudioRenderer(
GetFrameRate(),
GetApplicationManager()->GetFrameRate(),
GetMissionReviewMode()
);
}
@@ -212,10 +216,6 @@ ControlsManager*
LBE4ControlsManager
*controls_manager = new LBE4ControlsManager;
Check_Pointer(controls_manager);
//
// Route the PC keyboard to the application's key-command handler
//
controls_manager->keyboardGroup[LBE4ControlsManager::KeyboardPC].Add(
ModeManager::ModeAlwaysActive,
this,
@@ -420,7 +420,7 @@ Entity*
*description =
application->GetResourceFile()->SearchList(
viewing_entity->GetResourceID(),
ControlMappingsListResourceType
ResourceDescription::ControlMappingsListResourceType
);
if (description)
+121
View File
@@ -0,0 +1,121 @@
//===========================================================================//
// File: btl4mppr.hpp //
// Project: BattleTech //
// Contents: Implementation details for the L4 mech controls mappers //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(BTL4MPPR_HPP)
# define BTL4MPPR_HPP
# if !defined(MECHMPPR_HPP)
# include <mechmppr.hpp>
# endif
//##################### Forward Class Declarations #######################
class Mech;
class L4Lamp;
enum { MechControlsMapperClassID = 0x7dc };
//###########################################################################
//####################### L4MechControlsMapper ##########################
//###########################################################################
class L4MechControlsMapper:
public MechControlsMapper
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Shared Data Support
//
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static MessageHandlerSet MessageHandlers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction
//
public:
L4MechControlsMapper(
Mech *owner,
int subsystem_ID,
CString subsystem_name,
RegisteredClass::ClassID class_ID,
SharedData &shared_data = DefaultData
);
~L4MechControlsMapper();
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Local Data
//
protected:
int reserved[16];
};
//###########################################################################
//###################### MechThrustmasterMapper #########################
//###########################################################################
class MechThrustmasterMapper:
public L4MechControlsMapper
{
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static MessageHandlerSet MessageHandlers;
MechThrustmasterMapper(
Mech *owner,
int subsystem_ID,
CString subsystem_name,
RegisteredClass::ClassID class_ID =
(RegisteredClass::ClassID)MechControlsMapperClassID,
SharedData &shared_data = DefaultData
);
~MechThrustmasterMapper();
Logical
TestInstance() const;
};
//###########################################################################
//########################## MechRIOMapper ##############################
//###########################################################################
class MechRIOMapper:
public L4MechControlsMapper
{
public:
static Derivation ClassDerivations;
static SharedData DefaultData;
static MessageHandlerSet MessageHandlers;
MechRIOMapper(
Mech *owner,
int subsystem_ID,
CString subsystem_name,
RegisteredClass::ClassID class_ID =
(RegisteredClass::ClassID)MechControlsMapperClassID,
SharedData &shared_data = DefaultData
);
~MechRIOMapper();
Logical
TestInstance() const;
};
#endif
+47
View File
@@ -0,0 +1,47 @@
//===========================================================================//
// File: btl4vid.hpp //
// Project: BattleTech //
// Contents: Implementation details for the BT video renderer //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(BTL4VID_HPP)
# define BTL4VID_HPP
# if !defined(L4VIDEO_HPP)
# include <l4video.hpp>
# endif
//###########################################################################
//####################### BTL4VideoRenderer #############################
//###########################################################################
class BTL4VideoRenderer:
public DPLRenderer
{
public:
BTL4VideoRenderer(
RendererRate calibration_rate,
RendererComplexity calibration_complexity,
RendererPriority calibration_priority,
InterestType interest_type,
InterestDepth depth_calibration
);
~BTL4VideoRenderer();
protected:
void
LoadMissionImplementation(Mission *mission);
protected:
int reserved[16];
};
#endif
+5 -5
View File
@@ -37,11 +37,11 @@ back-dating (donors: `C:\VWE\BT412\engine\MUNGA\*.h`).
| item | state |
|---|---|
| ORIGINAL **BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND** | ✅ **COMPILE CLEAN — 6 of 10 surviving originals** (first builds since 1996) |
| BT/BTCNSL.HPP + BT/BTSCNRL.HPP | ✅ reconstructed round 2 **console wire IDs recovered from the binary** (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1]; TeamScore=12 [T4 GUESS — verify]); see BTCNSL.NOTES.md |
| BT_L4/BTL4APP.CPP (pilot reconstruction) | 12/12 functions, Fail() at recorded line 400; compile gated on the mech-family header package |
| MUNGA backfills (VDATA, ROTATION, VECTOR2D, AUDREND, APP, LAMP, GAUGREND, GAUGE) | ✅ 6 compile-proven, 2 parse-proven (BACKFILLS.NOTES.md) |
| ORIGINALS still blocked | BTREG (`btplayer.hpp`), GAUSS+PPC (`emitter.hpp`), BTTOOL (`mech.hpp`) — all gated on the mech-family package |
| **THE WHOLE TREE COMPILES (2026-07-19)** | ✅ **11/11: all 10 surviving originals + the BTL4APP.CPP pilot build clean under BC4.52 + authentic OPT flags** (`./compile410.sh --sweep`) |
| BT/BTCNSL.HPP + BT/BTSCNRL.HPP | ✅ reconstructed — **console wire IDs recovered from the binary** (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1]; TeamScore=12 [T4 GUESS — verify]); see BTCNSL.NOTES.md |
| BT_L4/BTL4APP.CPP (pilot reconstruction) | ✅ compiles (18.5KB obj); 12/12 functions, Fail() at recorded line 400 |
| Staged header family (13: mech/mechsub/heat/powersub/mechweap/emitter/mechmppr/btplayer/projtile/missile + btl4mppr/btl4vid) | ✅ [T3] interface-proven by every surviving consumer; layouts parked in reserved[] blocks — see STAGED-HEADERS.NOTES.md + MECH-LAYOUT.md |
| MUNGA backfills (VDATA, ROTATION, VECTOR2D, AUDREND, APP, LAMP, GAUGREND, GAUGE) | ✅ compile-proven (BACKFILLS.NOTES.md) |
**Next work package — the mech-family, REVISED (round-3 finding, 2026-07-19):** the plan to
"reconstruct mech.hpp first" was the wrong order. A full read of the port's mech.hpp shows
+2 -2
View File
@@ -18,10 +18,10 @@ R=c:/VWE/TeslaRel410/CODE/RP
S=c:/VWE/TeslaRel410/restoration/source410
# include order: BT tree over RP tree over source410 backfills over BC45
INC="$C/BT_L4;$C/BT;$C/MUNGA;$C/MUNGA_L4;$C/MUNGA_L4/SOS/BC4;$R/MUNGA;$R/MUNGA_L4;$R/MUNGA_L4/sos/bc4;$S/MUNGA;$S/BT;$S/BT_L4;c:/VWE/TeslaRel410/BORLAND/BC45/INCLUDE"
INC="$C/BT_L4;$C/BT;$C/MUNGA;$C/MUNGA_L4;$C/MUNGA_L4/SOS/BC4;$R/MUNGA;$R/MUNGA_L4;$R/MUNGA_L4/sos/bc4;$C/MUNGA_L4/LIBDPL;$R/MUNGA_L4/libDPL;$R/MUNGA_L4/libDPL/dpl;$S/MUNGA;$S/BT;$S/BT_L4;c:/VWE/TeslaRel410/BORLAND/BC45/INCLUDE"
# CODE/BT/OPT.MAK flags (minus -H PCH, plus the NO_PRECOMPILED_HEADERS dodge)
FLAGS="-c -DLBE4 -DDEBUG_LEVEL=0 -DDEBUG_STREAM=cout -DNO_PRECOMPILED_HEADERS \
FLAGS="-c -DLBE4 -DDEBUG_LEVEL=0 -DDEBUG_STREAM=cout \
-b -r -ff -AT -k- -N- -v- -5 -a4 -V -Jg -x- -RT- -O2 -w-"
one() {
+31
View File
@@ -0,0 +1,31 @@
#include <bt.hpp>
#pragma hdrstop
#if !defined(BTMSSN_HPP)
# include <btmssn.hpp>
#endif
#if !defined(BTL4MODE_HPP)
# include <btl4mode.hpp>
#endif
#if !defined(BTREG_HPP)
# include <btreg.hpp>
#endif
#if !defined(JMOVER_HPP)
# include <jmover.hpp>
#endif
#include <stdio.h>
int main(void)
{
printf("Entity %04lx\n", (long)sizeof(Entity));
printf("Simulation %04lx\n", (long)sizeof(Simulation));
printf("Mover %04lx\n", (long)sizeof(Mover));
printf("JointedMover %04lx\n", (long)sizeof(JointedMover));
printf("Mission %04lx\n", (long)sizeof(Mission));
printf("BTMission %04lx\n", (long)sizeof(BTMission));
printf("ModeManager %04lx\n", (long)sizeof(ModeManager));
printf("BTL4ModeManager %04lx\n", (long)sizeof(BTL4ModeManager));
printf("BTRegistry %04lx\n", (long)sizeof(BTRegistry));
return 0;
}