Playtest report: "generators don't seem to have an Auto setting" / "no auto mode is ever displayed", plus the operator's own memory that the BUS MODE button once stepped through three states. The state machine was NEVER wrong: @004b0abc has exactly two branches (<2 -> Auto(2); ==2 -> detach + Off(0)), Manual(1) is set only by the four SelectGenerator buttons, and the auto-hunt gates on ==2 -- all byte-verified, and the #62 re-attach fires live. Manual is a one-way door out of BUS MODE by design: a single cycle button cannot know WHICH generator manual should mean. Verified on-screen by the operator this session: A-D returns to manual, BUS MODE toggles auto/off thereafter. What was actually broken: the connect-mode lamp -- and three siblings -- never drew a pixel. OneOfSeveralStates (@004c5470) and OneOfSeveralInt (@004c5148) forward caller-supplied background/foreground colours in the binary; the recon dropped both parameters and hardcoded 0,0 into the base. A BitMap-strip lamp draws SetColor(bg) + DrawBitMapOpaque(fg,...), so 0/0 painted colour-0 on colour-0: invisible. Affected: btemode (connect mode, 1x3 -- THE report), btecmode (coolant on/off, 1x2), and both bteseek gear-step lamps (1x4). The cluster call sites pass 0xff/0, byte-verified (@004c866c disasm; part_014.c:1479-1481, :2146-2147). Same dropped-element family as issue #42's MoveToAbsolute. THE TRAP THAT WAS NOT LANDED, recorded so it stays unlanded: with the lamp first made visible, the frames appeared inverted against the levels (art reads AUTO/MANUAL/OFF top-down; levels run OFF/MANUAL/AUTO), and a row=(rows-1)-selected "fix" was proposed. An adversarial workflow proved it wrong: the gauge blit addresses SOURCE rows BOTTOM-UP (Video16BitBuffered::DrawBitMapOpaque, L4VB16.cpp:3846-3850 -- sTop = map_max_y - sTop, rows walked upward), the 1995 blit @0046bdfc performs the identical flip, and the vertical strips are AUTHORED bottom-up to match. Identity level->row therefore draws the pod-correct display; the inversion would have created the very bug it claimed to cure. Two of five investigators (and the first human pass) assumed top-down; the engine source overruled all three. Convention + warning now recorded in context/gauges-hud.md. btecmode doubles as the standing tripwire: a second vertical strip that must show ON when coolant is available -- if it ever reads inverted, the bottom-up verdict is falsified. Also corrected: @004c552c is OneOfSeveralStates' EXECUTE override (clamp >= 0, chain the base draw) -- the port had the body on BecameActive under a wrong label; vtable-diffed against OneOfSeveral (0x518b24 vs 0x518bf0). BecameActive is inherited. Behaviorally inert today (the state source never goes negative), byte-faithful now. README: the "KNOWN ISSUE -- automatic re-attach is not working yet" text is replaced with how power routing actually works (A-D = manual, BUS MODE = auto then off, two presses off / one back to auto). That text shipped in 600, which already contained the #62 fix -- players were being TOLD auto was broken while it worked, which is half of how a painted-out lamp became "no auto mode". Diagnostic kept: BT_GENSEL_TEST=<id> now drives any of the five power-routing message ids (4..8, default 7) and pulses four times, so the whole mode cycle is observable headlessly under BT_FIRE_LOG ([gensel] lines). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
167 lines
9.5 KiB
Plaintext
167 lines
9.5 KiB
Plaintext
BattleTech {VERSION} -- multiplayer client
|
|
==========================================
|
|
|
|
IMPORTANT: FULLY EXTRACT this zip first (right-click - Extract All).
|
|
Do NOT run anything from inside the zip. The .bat files must sit next
|
|
to the 'content' and 'build' folders.
|
|
|
|
UPGRADING from an older version? Extract the new zip OVER your
|
|
existing game folder and say YES TO OVERWRITE. Do NOT delete the
|
|
folder first -- your personal files (content\bindings.txt with your
|
|
key/joystick setup, content\volume.cfg with your volume) are not in
|
|
the zip and survive an extract-over-top, but a delete wipes them.
|
|
If you prefer a clean delete anyway, copy those two files out first
|
|
and put them back after.
|
|
|
|
TO JOIN AN INTERNET GAME: double-click join.bat
|
|
-- pick your CALLSIGN and MECH, click JOIN (your choice is sent to
|
|
the operator; waits for the session if it's not up yet)
|
|
TO JOIN A LAN GAME: double-click join_lan.bat (operator's LAN;
|
|
same callsign/mech menu)
|
|
SINGLE-PLAYER: double-click play_solo.bat -- opens the
|
|
mission menu: pick your mech (all 18), map, experience level,
|
|
colours, weather and mission length, then launch
|
|
{STEAM}STEAM INTERNET PLAY: double-click play_steam.bat (EXPERIMENTAL --
|
|
{STEAM} needs the Steam client running; host or join from the menu)
|
|
|
|
Your seat is assigned automatically; you'll pilot the mech you picked
|
|
in the join menu (the operator can override it).
|
|
When a round ends your game AUTOMATICALLY rejoins for the next one
|
|
(same seat, same mech) -- just wait for the operator's next launch.
|
|
Close the window to leave for real.
|
|
If the game closes unexpectedly, send the operator TODAY'S log --
|
|
content\join_YYYYMMDD.log (the NEWEST one) -- plus content\lastrun_join.txt.
|
|
|
|
AFTER A MULTIPLAYER SESSION: the game writes a small match report
|
|
(content\matchlog_<date>_<time>_<number>.txt) and, on join.bat /
|
|
join_lan.bat, UPLOADS IT TO THE OPERATOR BY ITSELF at the end of each
|
|
round -- you do not need to send it. Please send one MANUALLY only if
|
|
the game CRASHED mid-round (the upload happens on a clean round end, so
|
|
a crash loses it) or if you were playing SOLO or over STEAM (no relay
|
|
to upload through).
|
|
IF ANYTHING CRASHED OR MISBEHAVED, send BOTH of these -- neither is ever
|
|
uploaded, they only exist on your machine:
|
|
content\join_YYYYMMDD.log today's date; the NEWEST one. There is now
|
|
ONE log per day holding every session, so a
|
|
crash is no longer erased when you relaunch.
|
|
Each session inside it starts with a line
|
|
"===== BT411 SESSION ... =====" naming your
|
|
build and PC, so it still identifies itself
|
|
if the filename gets changed when you send it.
|
|
content\lastrun_join.txt tiny; send it EVEN IF there is no log dated
|
|
today -- that combination is exactly how we
|
|
tell "the game was blocked before it started"
|
|
(antivirus, or a missing system file) apart
|
|
from a normal crash.
|
|
If you UPGRADED over an older copy you may still have an old content\join.log
|
|
lying around. Nothing writes to it any more -- ignore it, or delete it, so
|
|
you don't send a stale one by mistake.
|
|
|
|
You start INSIDE the cockpit with the pod's MFD panels composited
|
|
around the view (one window). The red MFD buttons, radar rails and
|
|
joystick buttons are all MOUSE-CLICKABLE -- right-click a button to
|
|
latch it held. Press ` (backtick) any time to toggle the external
|
|
camera.
|
|
|
|
CONTROLS (keyboard) -- NEW DEFAULT LAYOUT THIS BUILD:
|
|
The keyboard IS the cockpit button board now: the letter and number
|
|
rows are the MFD button banks laid out where they sit on the panel,
|
|
and FLIGHT LIVES ON THE NUMBER PAD. Full map: CONTROLS.txt.
|
|
|
|
UPGRADING? Your bindings are MIGRATED to the new board on first
|
|
launch: any keys YOU added or changed are kept (they beat the new
|
|
defaults), and your joystick/HOTAS wizard setup is kept exactly --
|
|
but the old stock keys (W/S throttle, A/D turn, V camera, M mode...)
|
|
are replaced by the layout below. Your previous file is saved as
|
|
content\bindings.old.txt if you want to copy a favourite line back.
|
|
|
|
FLIGHT (number pad -- NUMLOCK ON):
|
|
NumPad 8/2 ........... torso aim up/down NumPad 7/9 .... left/right pedal
|
|
NumPad 4/6 ........... torso twist NumPad 5 ...... all stop
|
|
NumPad 0 or Space .... main trigger NumPad 1/3/. .. pinky/middle/upper
|
|
Shift/Ctrl ........... throttle up/down Alt ........... reverse thrust
|
|
Left/Down/Right ...... look left/behind/right Up .......... torso centre
|
|
` (backtick) ......... cockpit / chase camera
|
|
PgUp / PgDn .......... game volume up/down (saved between sessions)
|
|
|
|
THE PANEL ON YOUR KEYS: 1-4/QWER = heat & coolant, 5-8/TYUI =
|
|
engineering, 9-0-minus-equals/OP[] = comm, ASDF/ZXCV = left weapons,
|
|
HJKL/NM,. = right weapons, F1-F12 = the map columns (F1/F2 zoom,
|
|
F4 crouch, F7 CONTROL MODE, F9-F12 Generators A-D). G and B are
|
|
deliberately unbound -- feel for the gap. Every button also stays
|
|
mouse-clickable on screen (right-click latches it held).
|
|
|
|
NOTE: you SPAWN IN BASIC control mode (the pod's rookie setting) --
|
|
in BASIC the stick steers and the pedals do NOTHING. Press F7 once
|
|
for MID (pedals steer, stick twists the torso -- the full
|
|
experience). If 'turning does not work', it is this, not a bug.
|
|
CONTROL MODE (BAS/MID/ADV, the F7 key IN the cockpit) is NOT the
|
|
menu's EXPERIENCE setting (novice/standard/veteran/expert) -- that
|
|
one changes the simulation (heat, damage), not your controls.
|
|
1/2/3/Q/W/E are the six coolant valves and 4 (hold) is the flush.
|
|
CAREFUL with the valves: the detents go 1 - 5 - 50 (max) -
|
|
0 (CLOSED!) - back to 1. One press past max SHUTS THE LOOP OFF and
|
|
everything on it will overheat -- watch the valve dial on the coolant
|
|
screen. Boosting one loop starves the others (the supply is shared).
|
|
A weapon gone quiet with ammo left has probably JAMMED (heat makes
|
|
ballistic weapons jam -- authentic!). Check its panel's ENG DATA page
|
|
for the jam lamp (a cocked round with warning bolts). The pod's fix
|
|
is the EJECT button on that weapon's ENG DATA page: TAP to eject the
|
|
jammed round (weapon reloads and returns to service), HOLD ~3s to
|
|
jettison the whole bay before it cooks off. Watch the TEMP strip and
|
|
pace salvos.
|
|
NEW: on a jam or a bay fire, that system's ENG-page buttons now FLASH
|
|
to catch your eye -- the pod's own annunciator, restored.
|
|
NEW AND DANGEROUS: an AMMO BAY FIRE is now genuinely lethal. You get
|
|
a fire icon by the ammo counter, the flashing buttons, and about TEN
|
|
SECONDS -- then the bay detonates for (rounds x per-round damage),
|
|
which can and will kill you. HOLD the EJECT button on that weapon to
|
|
dump the bay and put the fire out. Previously these fires were
|
|
harmless; they are not any more, so treat one as an emergency.
|
|
G (hold) + fire key .. regroup a weapon onto that trigger -- or hold a
|
|
weapon panel's red PROGRAM button with the mouse and tap a fire key;
|
|
the joystick diagram on the panel shows the binding live.
|
|
|
|
FIXED THIS BUILD -- the automatic re-attach now works. Previously a weapon
|
|
detached by the BUS MODE button stayed dark for the rest of the mission and
|
|
you had to rescue it with a GENERATOR SELECT button. It now recovers by
|
|
itself, as the arcade did.
|
|
|
|
HOW POWER ROUTING WORKS (the ENG page). Each weapon draws from one
|
|
generator, and it has three routing modes:
|
|
GENERATOR SELECT A/B/C/D -- you pick that generator by hand.
|
|
BUS MODE, first press ---- AUTO: the mech hunts for any live generator
|
|
and attaches to it by itself. This is what
|
|
recovers a weapon whose generator died.
|
|
BUS MODE, second press --- detached. The weapon goes dark on purpose --
|
|
blank recharge arc, no ready dot, will not
|
|
fire. Press BUS MODE again for AUTO, or a
|
|
GENERATOR SELECT button to choose one.
|
|
So it is TWO presses of BUS MODE to take a weapon off line, and one more to
|
|
put it back on AUTO. There is no on-screen label for the current mode --
|
|
that is authentic, the pod had none either. You tell by behaviour: on AUTO
|
|
a weapon with a working generator comes back on its own.
|
|
|
|
NOTE these are two different buttons: BUS MODE routes a WEAPON to a
|
|
generator, while the GENERATOR A-D buttons on the radar rail (F9-F12) turn
|
|
the GENERATORS THEMSELVES on and off.
|
|
|
|
An Xbox controller works out of the box. FLIGHT STICKS / HOTAS /
|
|
pedals: run joyconfig.bat ONCE -- a wizard asks you to move each
|
|
control (stick, twist, throttle, fire buttons), writes the bindings,
|
|
and drops you into the solo menu to try them. Rebind keys in
|
|
content\bindings.txt (regenerates with defaults if deleted).
|
|
|
|
FULL CONTROLS REFERENCE: see CONTROLS.txt next to this file -- every one of
|
|
the pod's 72 cockpit buttons, what it does, and which display it sits on.
|
|
|
|
COCKPIT LAYOUT: content\environ.ini (written on first run, every option
|
|
documented in the file itself) sizes the MFDs and the map, moves the map out
|
|
of the middle of the road, or breaks each display into its own window. The
|
|
cockpit now scales to ANY window shape without distorting -- drag it, maximise
|
|
it, or launch with -fit for borderless full screen.
|
|
|
|
This build: {VERSION}. Private -- do not redistribute.
|
|
{EXPIRE}Test builds STOP WORKING 14 days after they are made -- if the game
|
|
{EXPIRE}says it has expired, just grab the operator's newest zip.
|