The playtest report (sound plays, no gauge drop, no cloud) traced to the
Reservoir's InjectCoolant chain being dead in three places:
- The handler was never REGISTERED: the binary's Reservoir handler table
@0x50e680 has one entry {4, "InjectCoolant", @4aee70}; added
Reservoir::GetMessageHandlers + the press/release handler (press starts
the flush gated on coolantLevel@0x12C > 0 -- the old body misread +0x12C
as currentTemperature; release stops it; novice lockout via FUN_004ac9c8).
- Reservoir::InjectCoolant (@4aefa4, 1019 bytes) was an empty stub -- the
drain the coolant gauge reads. Reconstructed in full: work list =
condenser/weapon/heatable chains (+0x7cc/+0x7bc/+0x7ac, roster-walk
emulation with the binary's duplicate-visit weighting; HeatSink-filtered
[T2 guarded]) + the linked master sink; per sink with flowScale != 0 move
squirtMass x flowScale x dt (clamped to the tank / sink capacity) and
credit pendingHeat with the negative carried-heat delta capped at
sinkMass x reservoir startingTemperature -- the set%-biased flush of the
manual (p24), riding the existing heat model.
- Two latent ctor decode bugs surfaced and fixed: the master gate @4af408
(and @4aeb40 HeatWatcher, swept) reads the OWNER MECH's simulationFlags
(*(param_2+0x28)), not the resource's subsystemFlags (the misread left
the CoolantSimulation Performance unregistered); and the capacity scale
FILDs the bank's INTEGER HeatSinkCount ((float10)*(int*)(link+0x1d0)) --
the float reinterpret gave ~1e-44 -> a permanently empty tank.
Capacity = 0.05 x heatSinkCount x streamed CoolantCapacity (BLH: 6.0).
Visual: the binary's mode-1 coolant-effect renderable (FUN_00456a68, built
for classID 0xBC0 on "ReservoirState", part_014.c:5439; tick @part_007.c:
8780) starts psfx 19 = FLUSH.PFX ("Coolant flush", BTDPL.INI) when the
state changes to 1 -- BTSpawnFlushCloud (mech4.cpp) spawns it on the same
alarm edge as an attached emitter at torso height.
Input: new CONTROLS.MAP action "Flush" on 'H' (HELD; press+release both
dispatch, the held-button payload). Diags: BT_FLUSH_LOG, BT_FLUSH_TEST.
Verified live (FOGDAY): [flush] Reservoir level 6 -> 0.13 -> 0 over ~0.6 s
held (= the manual's 3-4 punches to empty), the coolant vertBar source
Reservoir/CoolantMass drains, and the bluish condensation cloud rises from
the mech (scratchpad/flush_cloud.png vs flush_before.png).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
106 lines
5.0 KiB
Plaintext
106 lines
5.0 KiB
Plaintext
# ==========================================================================
|
|
# BT411 CONTROLS.MAP -- desktop input bindings (keyboard + XInput gamepad)
|
|
# ==========================================================================
|
|
# One binding per line, '#' starts a comment, keywords are case-insensitive.
|
|
# Loaded at game start; DELETE THIS FILE to restore these exact defaults
|
|
# (the same profile is compiled in). Alternate profile: CONTROLS_NUMPAD.MAP
|
|
# (copy it over this file to use it).
|
|
#
|
|
# key <name> button <addr> [toggle]
|
|
# key <name> axis <axis> deflect <n>
|
|
# key <name> axis <axis> rate <n-per-second>
|
|
# key <name> keypad pilot|external <0-15>
|
|
# key <name> pckey <char>
|
|
# key <name> action <name>
|
|
# pad <button> button <addr> | action <name> | pckey <char> | keypad ...
|
|
# padaxis <src> axis <axis> [invert] [deadzone <d>] [rate <n-per-second>]
|
|
#
|
|
# <addr> RIO button address 0x00-0x47 (hex or decimal):
|
|
# 0x00-0x0F aux lower right/left banks 0x10-0x1B secondary panel
|
|
# 0x20-0x37 aux upper center/left/right (presets + target hotbox)
|
|
# 0x3D Panic 0x3F throttle-head (REVERSE THRUST)
|
|
# 0x40 Main trigger 0x41-0x44 hat 0x45 Pinky 0x46 Middle 0x47 Upper
|
|
# <axis> Throttle | LeftPedal | RightPedal | Pedals (signed, + = right)
|
|
# | JoystickX (torso twist) | JoystickY
|
|
# <name> A-Z, D0-D9 (digit row), F1-F12, NumPad0-NumPad9, Up, Down, Left,
|
|
# Right, Space, Enter, Shift, Ctrl, Alt, PageUp, PageDown, Home,
|
|
# End, Insert, Delete, OemMinus, Oemplus, Oemcomma, OemPeriod,
|
|
# OemOpenBrackets, OemCloseBrackets, ...
|
|
# <button> A B X Y DPadUp DPadDown DPadLeft DPadRight Start Back
|
|
# LeftShoulder RightShoulder LeftThumb RightThumb
|
|
# LeftTrigger RightTrigger (as digital, >= 50% pressed)
|
|
# <src> LeftStickX LeftStickY RightStickX RightStickY
|
|
# LeftTrigger RightTrigger
|
|
# action ViewToggle LookBehind AllStop ModeCycle Valve Flush ConfigHold
|
|
# Generator1-4 Reconnect
|
|
# pckey sends an authentic 1995 PC-keyboard hotkey (the in-cockpit
|
|
# dispatcher): '+'/'-' = target zoom, 'w'..'o' = pilot select,
|
|
# 'a','b','c','d','f','g','s','v','x','z' = display presets, ...
|
|
#
|
|
# 'deflect' holds the axis there while the key is down and springs back on
|
|
# release; 'rate' walks the axis by <n> per second and the position sticks
|
|
# (the throttle lever). A key bound here is REMOVED from the legacy typed-
|
|
# hotkey channel (no double dispatch); unbound keys keep their authentic
|
|
# 1995 meaning (see pckey above).
|
|
#
|
|
# ---- WASD CLASSIC (the shipped default) ----------------------------------
|
|
|
|
# Driving: W/S sweep the throttle lever (sticks, detent at zero); A/D are
|
|
# the turn pedals (spring back); Q/E twist the torso; R/F aim the torso
|
|
# up/down (elevation); X = all stop (recenters twist AND pitch).
|
|
key W axis Throttle rate 0.7
|
|
key S axis Throttle rate -0.7
|
|
key Up axis Throttle rate 0.7
|
|
key Down axis Throttle rate -0.7
|
|
key A axis LeftPedal deflect 1
|
|
key D axis RightPedal deflect 1
|
|
key Left axis LeftPedal deflect 1
|
|
key Right axis RightPedal deflect 1
|
|
key Q axis JoystickX deflect -1
|
|
key E axis JoystickX deflect 1
|
|
key R axis JoystickY deflect 1
|
|
key F axis JoystickY deflect -1
|
|
key X action AllStop
|
|
|
|
# Fire: the pod joystick's four buttons.
|
|
key D1 button 0x40 # Main trigger (lasers group)
|
|
key Space button 0x40
|
|
key D2 button 0x46 # Middle thumb (PPCs group)
|
|
key D3 button 0x47 # Upper thumb (missiles group)
|
|
key Ctrl button 0x47
|
|
key D4 button 0x45 # Pinky (4th group)
|
|
|
|
# Systems.
|
|
key G action ConfigHold # hold + fire keys = regroup the weapon
|
|
key C action Valve # coolant valve cycle
|
|
key H action Flush # coolant flush (HOLD -- dumps reservoir coolant)
|
|
key M action ModeCycle # Basic -> Standard -> Veteran controls
|
|
key V action ViewToggle # cockpit <-> chase camera (dev)
|
|
key B action LookBehind # HOLD = the pod's rear-view button
|
|
key F5 action Generator1
|
|
key F6 action Generator2
|
|
key F7 action Generator3
|
|
key F8 action Generator4
|
|
key F9 action Reconnect
|
|
|
|
# ---- Xbox controller -----------------------------------------------------
|
|
# Left stick steers (the pedals), right stick twists the torso and pushes
|
|
# the throttle lever; triggers fire.
|
|
padaxis LeftStickX axis Pedals deadzone 0.24
|
|
padaxis LeftStickY axis JoystickY deadzone 0.24
|
|
padaxis RightStickX axis JoystickX deadzone 0.24
|
|
padaxis RightStickY axis Throttle rate 0.75 deadzone 0.24
|
|
pad RightTrigger button 0x40 # Main
|
|
pad LeftTrigger button 0x47 # Upper (missiles)
|
|
pad RightShoulder button 0x46 # Middle (PPCs)
|
|
pad LeftShoulder button 0x45 # Pinky
|
|
pad DPadUp button 0x42 # hat up
|
|
pad DPadDown button 0x41 # hat back
|
|
pad DPadLeft button 0x44 # hat left
|
|
pad DPadRight button 0x43 # hat right
|
|
pad B action AllStop
|
|
pad Y action ViewToggle
|
|
pad X action LookBehind
|
|
pad Start action ModeCycle
|
|
pad Back action Valve
|