Track the 410console hand-off docs; ignore the raw Mac archive
The BattleTech port spec, the Console 4.10 decompilation notes, the golden reference eggs, and the PEF/rsrc analysis tools come into the repo. The .sit archive and its extraction (Mac binaries, __MACOSX/.finf metadata) stay untracked for now. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
# BattleTech → TeslaConsole port spec
|
||||
|
||||
**Hand-off package for the `TeslaSuite` repo.** Everything learned in the
|
||||
`TeslaRel410` repo about the Mac **4.10 operator console** and the path to add
|
||||
**BattleTech** support to the modernized **TeslaConsole**. Implement this over in
|
||||
`TeslaSuite` (that repo's Claude has the console's own memories and can build it).
|
||||
This folder is self-contained — the `reference/` files travel with it.
|
||||
|
||||
> Sibling doc: `410console/CONSOLE-4.10-DECOMP.md` (full decompilation of the Mac
|
||||
> `Console 4.10` PowerPC binary). This spec assumes it.
|
||||
|
||||
---
|
||||
|
||||
## 0. The situation in one paragraph
|
||||
|
||||
The Mac **`Console 4.10`** (decompiled — see the sibling doc) and the Windows
|
||||
**`TeslaConsole.exe`** (4.11.x, which `TeslaSuite/Console/TeslaConsole` is a .NET
|
||||
reconstruction of) are two generations of the *same* operator console. The Mac
|
||||
one drove **both** games — BattleTech and Red Planet. **The modernized
|
||||
TeslaConsole implements only Red Planet** (`TeslaConsole.RedPlanet`), and its
|
||||
shell is even hardcoded to it (`TeslaConsoleForm`: `AppID != 0 → "Pod Not Running
|
||||
RP"`, status strings `"RP Initalizing"`…). The task: **add a
|
||||
`TeslaConsole.BattleTech` game that mirrors `TeslaConsole.RedPlanet`**, and
|
||||
de-hardcode the shell to pick the game by `ApplicationID`. The transport layer is
|
||||
game-agnostic and reused unchanged.
|
||||
|
||||
---
|
||||
|
||||
## 1. The shared spine (reused verbatim by BattleTech — do NOT re-implement)
|
||||
|
||||
Both games and both console generations use one command/control path:
|
||||
|
||||
- **Munga over TCP 1501**, one `MungaSocket` per pod (`Munga Net.dll`, vendored in
|
||||
`Console/lib/`). Console `200.0.0.1`, pods `200.0.0.11…`.
|
||||
- `MungaGame.cs` (in `TeslaConsole`, **game-agnostic**): connect pod:1501, poll
|
||||
`StateQueryMessage`→`StateResponseMessage(ApplicationID, ApplicationState)`
|
||||
every ~1 s, and on `ApplicationState.WaitingForEgg` stream the egg as 1000-byte
|
||||
`EggFileMessage[]` chunks, await `AcknowledgeEggFileMessage`, then run.
|
||||
- **`ApplicationState`** (the named "cockpit states"): `CreatingMission,
|
||||
LaunchingMission, LoadingMission, ResumingMission, RunningMission,
|
||||
SuspendingMission, WaitingForLaunch, WaitingForEgg, …`. In the Mac 4.10 console
|
||||
these were the **numeric Cockpit States 0–12** (decomp §6.2).
|
||||
- **`HostType`** (`TeslaConsole/HostType.cs`): `GameMachineHostType=0,
|
||||
MissionReviewHostType=2` (camera/spectator), `ConsoleHostType=3`.
|
||||
- Reused unchanged by BT: `MungaGame`, `Pod`, `PodManager`, `Site`, `SitePanel`,
|
||||
`PlasmaBitmaps`, `PlasmaFontTool`, the ordinals blocks, and the whole
|
||||
provisioning/launch path (that's the separate RPC channel on TCP 53290; game
|
||||
control is Munga 1501).
|
||||
|
||||
**Only the egg *content* and the per-game UI/data differ between RP and BT.**
|
||||
|
||||
---
|
||||
|
||||
## 2. The BattleTech egg format (authoritative)
|
||||
|
||||
Reconstructed from the console-generated **`reference/cavern.egg`** (freeforall,
|
||||
map cavern, night; pilot `cyd` in a `madcat`, veteran) and
|
||||
**`reference/TESTARN.EGG`**. This is what `BTMission.ToEggString()` must produce.
|
||||
|
||||
### Structure (section by section)
|
||||
```
|
||||
[mission] adventure=BattleTech map=cavern scenario=freeforall time=night
|
||||
weather=clear temperature=27 length=120
|
||||
[ordinals] ← 1st–4th place plasma bitmaps, 128×32, IDENTICAL to RP
|
||||
bitmap=Ordinal::BitMap::1 … [Ordinal::BitMap::1] …32 rows… x=128 y=32 width=8
|
||||
(…::2 ::3 ::4)
|
||||
[pilots]
|
||||
pilot=200.0.0.113 ← one per player + one per camera
|
||||
[200.0.0.113] ← one participant block per pilot line
|
||||
hostType=0 advancedDamage=1 loadzones=1 name=cyd bitmapindex=1
|
||||
experience=veteran vehicle=madcat vehicleValue=0 badge=VGL
|
||||
dropzone=one color=Grey patch=Red role=Role::Default
|
||||
[largebitmap]
|
||||
bitmap=BitMap::Large::cyd
|
||||
[BitMap::Large::cyd] …32 rows… x=128 y=32 width=8 ← pilot-name plasma bitmap
|
||||
[smallbitmap]
|
||||
bitmap=BitMap::Small::cyd
|
||||
[BitMap::Small::cyd] …16 rows… x=64 y=16 width=4
|
||||
[Role::Default] model=dfltrole ← one block per referenced role
|
||||
```
|
||||
|
||||
### BattleTech vs Red Planet — the field diff
|
||||
`RPMission.ToEggString()` / `RPPlayer.AppendParticipantSpecificData()` is the
|
||||
template. BT differs as follows:
|
||||
|
||||
| Field | Red Planet | BattleTech |
|
||||
|---|---|---|
|
||||
| `[mission] adventure=` | `Red Planet` | **`BattleTech`** |
|
||||
| `[mission] temperature=` | `0` | **nonzero** (e.g. `27`) |
|
||||
| `[mission] compression=` | present (`0`/`1`) | **absent** |
|
||||
| participant `advancedDamage=` | — | **present** (`1`) advanced damage model |
|
||||
| participant `experience=` | — | **present** — pilot skill (`novice`/`veteran`/`expert`) |
|
||||
| participant `vehicleValue=` | — | **present** (`0`) |
|
||||
| participant `patch=` | — | **present** (e.g. `Red`) |
|
||||
| participant `role=` | — | **present** — `Role::<key>`, needs a `[Role::<key>]` block |
|
||||
| participant `vehicle=` | RP racer (quark/bug…) | **a mech** (madcat/…) |
|
||||
| `[Role::*]` blocks | — | **present** — `model=<rolemodel>` (`Default`→`dfltrole`; TESTARN.EGG also has `NoReturn`) |
|
||||
| `ordinals`, `largebitmap`, `smallbitmap` | present | **identical** — reuse as-is |
|
||||
|
||||
Shared participant fields (same as RP): `hostType, loadzones, name, bitmapindex,
|
||||
dropzone, color, badge`.
|
||||
|
||||
### Wire encoding (mirror RP exactly)
|
||||
`RPMission` builds the string with `\n` between every `key=value`, then
|
||||
`ToEggFileMessages()` does `Replace("\r\n","\0").Replace('\n','\0')`, ASCII-
|
||||
encodes, and chunks into 1000-byte `EggFileMessage(index, totalLen, thisLen,
|
||||
buf)`. So on the wire the egg is **NUL-delimited**. `cavern.egg` on disk is the
|
||||
same NUL-delimited blob (renders as run-together fields). **BT reuses this
|
||||
verbatim** — only `ToEggString()` content changes.
|
||||
|
||||
### Section-order caveat (don't chase a false byte-match)
|
||||
`cavern.egg` was written by the *original* console; its section order (ordinals
|
||||
early, bitmap defs inlined) differs from the modernized `RPMission.ToEggString`
|
||||
order (bitmaps listed then defined, ordinals last). The pod parses the egg
|
||||
**INI-style by section name**, so order is almost certainly non-critical. **Match
|
||||
RP's builder structure** (it's known-good against real pods) rather than
|
||||
byte-matching `cavern.egg`; use `cavern.egg` as the **field/value** reference and
|
||||
verify a generated egg on a real BT pod. (If a byte-exact golden test is wanted,
|
||||
generate from BT classes and pin *that*, like the existing DiffTests do.)
|
||||
|
||||
---
|
||||
|
||||
## 3. The RedPlanet template → BattleTech counterparts
|
||||
|
||||
Mirror `Console/TeslaConsole.RedPlanet/` into `Console/TeslaConsole.BattleTech/`.
|
||||
The `.csproj` is SDK-style (globs `**/*.cs`), so new files under a new folder are
|
||||
picked up automatically; add `Content Include` lines for the BT XML (see §5).
|
||||
|
||||
| RedPlanet file | BattleTech counterpart | Notes |
|
||||
|---|---|---|
|
||||
| `RPParticipant.cs` (abstract) | `BTParticipant` | `[podIP]` + `hostType`; abstract `AppendParticipantSpecificData` |
|
||||
| `RPPlayer.cs` (abstract) | `BTPlayer` | adds the BT participant fields (§2 diff); `HostType.GameMachine` |
|
||||
| `RPRacePlayer` / `RPFootballPlayer` | `BTPlayer` concretes per scenario | e.g. `BTFreeForAllPlayer`, `BTTeamPlayer` |
|
||||
| `RPCamera.cs` | `BTCamera` | `HostType.MissionReview`, `vehicle=camera` |
|
||||
| `RPMission.cs` (abstract) | `BTMission` | `ToEggString()` per §2; `ToEggFileMessages()` reusable as-is; emit `[Role::*]` blocks for referenced roles |
|
||||
| `RPRaceMission` / `RPFootballMission` | `BTFreeForAllMission` / `BTTeamMission` | `AppendMissionSpecificData` for scenario extras |
|
||||
| `Scenario.cs` + `FootballScenario`/`DeathRaceScenario` | `Scenario` + BT scenarios | loaded from `BTConfig.xml`; `<invalid>` filters valid maps/vehicles |
|
||||
| `RPConfig.cs` + `RedPlanet/RPConfig.xml` | `BTConfig.cs` + `BattleTech/BTConfig.xml` | the data catalog (§5) |
|
||||
| `RPDefaults.cs` / `RPDefaultsDialog.cs` | `BTDefaults` / `BTDefaultsDialog` | operator defaults UI |
|
||||
| `RPMap.cs` / `RPVehicle.cs` | `BTMap` (arena) / `BTVehicle` (mech) | key/name/image; images under `images/battletech maps|vehicles/` |
|
||||
| `RPTeam.cs` | `BTTeam` (if BT team scenario) | — |
|
||||
| `MissionEvent` + `Scored/Killed/Damaged/Boost/ScoreUpdate` | BT `MissionEvent` + `Killed/Damaged/…` | BT has **DamageMatrix** + **KillMarker** (decomp §5 string lists); RP-only `Boost`/football events drop; confirm BT's set against the pod's Munga event messages |
|
||||
| `RPMissionResults.cs` / `RPMissionRecorder.cs` / `RPPrintDocument.cs` | `BT*` | `.rpm`-style saved results + printout |
|
||||
| `RPGame.cs` (the DockContent pane, ~66 KB) | `BTGame` | the big one: mission-config UI + the run/stop state loop driving each pod's `MungaGame` |
|
||||
| `TeslaConsole/RPStrings.cs` + `RedPlanet/RPStrings.xml` | `BTStrings` | localized strings |
|
||||
|
||||
`RPGame`'s engine (worth copying closely): a per-pod `GameStateData
|
||||
{EggMessageSent, RunMessageSent, AbortMessageSent, StopMessageSent,
|
||||
PodAppearsReset}`, an `RPGameState` machine, `sStopToIdleStates` (the
|
||||
`ApplicationState`s that mean "busy, must stop first"), `mEggFileMessages`,
|
||||
`mMissionRecorder`, `mMissionPlayers` (index→player, to decode incoming events),
|
||||
`mLastMissionResults`. BT reuses this shape unchanged.
|
||||
|
||||
---
|
||||
|
||||
## 4. Shell de-hardcoding (`TeslaConsole`)
|
||||
|
||||
The shell currently assumes RP. To support both games:
|
||||
|
||||
- **`TeslaConsoleForm.cs` ~line 139**: `if (pod.MungaGame.AppID.Value != 0) →
|
||||
"Pod Not Running RP"`. `ApplicationID 0 = Red Planet`. Generalize: map the pod's
|
||||
reported `ApplicationID` to a game (RP vs BT) and pick the right game module +
|
||||
status strings ("RP Initalizing" → per-game). **OPEN: the `ApplicationID` value
|
||||
for BattleTech** — see §6.
|
||||
- Game selection where a game pane is created (Site/SitePanel/SiteManagement — how
|
||||
`RPGame` is instantiated today): allow creating a `BTGame` for BT pods.
|
||||
- Per-game status string table instead of the inline "RP …" literals.
|
||||
|
||||
---
|
||||
|
||||
## 5. The BattleTech catalog (`BTConfig.xml`) — seed + sources
|
||||
|
||||
Mirror `reference/RPConfig.xml.template`: a root element with per-scenario blocks
|
||||
carrying scenario-specific option lists, plus top-level `<map>`/`<vehicle>`/
|
||||
`<weather>`/`<time>` catalogs and `<invalid>` exclusions. For BT:
|
||||
|
||||
```xml
|
||||
<BattleTech>
|
||||
<freeforall name="Free For All">
|
||||
<experience key="novice" name="Novice"/>
|
||||
<experience key="veteran" name="Veteran"/>
|
||||
<experience key="expert" name="Expert"/>
|
||||
<color key="Grey" name="Grey"/> …
|
||||
<badge key="VGL" name="VGL"/> …
|
||||
<patch key="Red" name="Red"/> …
|
||||
<role key="Default" model="dfltrole"/>
|
||||
<role key="NoReturn" model="…"/>
|
||||
</freeforall>
|
||||
<!-- team/other scenarios from the Console.ini BT tree -->
|
||||
<map key="cavern" name="Cavern" image="images/battletech maps/Cavern.bmp"/>
|
||||
<map key="arena1" name="…"/>
|
||||
<vehicle key="madcat" name="Mad Cat" image="images/battletech vehicles/Mad Cat.bmp"/>
|
||||
<vehicle key="loki" name="Loki"/> …
|
||||
<time key="day" name="Day"/> <time key="night" name="Night"/>
|
||||
<weather key="clear" name="Clear"/> …
|
||||
</BattleTech>
|
||||
```
|
||||
|
||||
**Known values** (from this repo's eggs + reversing this session):
|
||||
- **scenario**: `freeforall` (confirmed). More in the Console.ini BT tree.
|
||||
- **map (arena)**: `cavern`, `arena1` (confirmed). Full list: Console.ini BT
|
||||
LocationList + game maps.
|
||||
- **vehicle (mech)**: `madcat` (Mad Cat). Others seen in this repo's mech data:
|
||||
`loki`, `thor`, `vulture`, `bhk1` (Black Hawk); OWN/PGN skeletons exist too.
|
||||
(Torso-twist limits found this session: MadCat ±130°, Loki/Thor 110°, Vulture
|
||||
90°; some skeletons — BLH/OWN/PGN — have no torso joint.)
|
||||
- **experience**: `veteran` (confirmed); `novice`/`expert` are the other BTL4
|
||||
pilot levels.
|
||||
- **color**: `Grey` (confirmed). **badge**: `VGL`. **patch**: `Red`.
|
||||
- **role**: `Default` (`model=dfltrole`), `NoReturn` (from TESTARN.EGG).
|
||||
- **time**: `day`, `night`. **weather**: `clear`. **temperature**: numeric (27).
|
||||
**length**: seconds (120).
|
||||
|
||||
**Where to get the exhaustive catalog (in this repo):**
|
||||
- `410console/4_10-console-extracted/Console.ini` — the Mac console's full
|
||||
`[Adventure::…::BattleTech]` → LocationList → scenario/vehicle tree (minified;
|
||||
parse by `::`-namespaced sections; decomp §8.2 shows the RP tree shape).
|
||||
- `ALPHA_1/REL410/BT/` — the game itself: `GAUGE/L4GAUGE.CFG`, `*.RES` resources,
|
||||
`*.SKL` skeletons (mech list), and the `.egg` files.
|
||||
- `CODE/BT/` — BattleTech game source (mech/weapon/damage classes; the
|
||||
DamageMatrix/KillMarker semantics for the event model).
|
||||
|
||||
---
|
||||
|
||||
## 6. Open questions — resolve in the TeslaSuite repo
|
||||
|
||||
1. **`ApplicationID` for BattleTech.** RP is `0`. A BT pod (running `BTL4OPT`)
|
||||
reports its own value in `StateResponseMessage.Application`. Get it by
|
||||
decompiling `Console/lib/Munga Net.dll`'s `ApplicationID` enum, or by reading a
|
||||
live BT pod's state response. Needed for §4 shell game-selection.
|
||||
2. **Full BT scenario list** + per-scenario `<invalid>` maps/vehicles — from the
|
||||
Console.ini BT tree.
|
||||
3. **BT in-match event messages.** RP receives `Scored/Killed/Damaged/Boost/
|
||||
ScoreUpdate` `MungaMessage`s during a game. Confirm BT's set (BT models
|
||||
DamageMatrix + KillMarker) against `Munga Net.dll` / a live BT match.
|
||||
4. **Image assets** for BT mechs/arenas (RP ships `images/red planet …`; BT needs
|
||||
`images/battletech …`). Sourceable from the game `.RES`/gauge art or recreated.
|
||||
5. **Whether BT reuses RP's exact plasma bitmaps/ordinals** — `cavern.egg` shows
|
||||
YES (identical `[ordinals]` + `[BitMap::Large|Small::*]` mechanism, same
|
||||
128×32 / 64×16). Reuse `PlasmaBitmaps`/`PlasmaFontTool` unchanged.
|
||||
|
||||
---
|
||||
|
||||
## 7. Verification
|
||||
|
||||
- **Golden-egg check:** construct the `cavern.egg` scenario in BT classes
|
||||
(freeforall/cavern/night/clear/27/120, pilot `cyd`/`madcat`/`veteran`/`VGL`/
|
||||
`Grey`/`Red`/`Role::Default`) and diff `ToEggString()` field-by-field against
|
||||
`reference/cavern.egg`. Values must match; section order may not (see §2 caveat).
|
||||
- **Live check:** feed a generated egg to a real BT pod over Munga 1501 and drive
|
||||
the state machine `WaitingForEgg → … → RunningMission`.
|
||||
- Add BT cases to `Console/tests/TeslaConsole.DiffTests` alongside the RP ones.
|
||||
|
||||
---
|
||||
|
||||
## 8. `reference/` contents (travels with this spec)
|
||||
|
||||
- `cavern.egg` — console-generated BattleTech egg (the golden field reference).
|
||||
- `TESTARN.EGG` — 2nd BT egg (shows multiple `[Role::*]` blocks).
|
||||
- `RPConfig.xml.template` — the RP catalog XML to mirror as `BTConfig.xml`.
|
||||
- `L4PLASMA.HPP` — the pod plasma-display class (128×32) the egg bitmaps target.
|
||||
|
||||
## 9. The plasma tie-in (context)
|
||||
|
||||
The console **authors** the pod's plasma-scoreboard graphics: the egg's
|
||||
`[BitMap::Large::<pilot>]` (128×32) / `[BitMap::Small::<pilot>]` (64×16) and the
|
||||
`[ordinals]` 1st–4th place bitmaps are rendered on the pod's **plasma display**
|
||||
(`L4PLASMA.HPP`: `plasmaWidth=128, plasmaHeight=32`, serial out on DOS COM2). So
|
||||
console → egg → pod plasma panel. `PlasmaBitmaps`/`PlasmaFontTool` in TeslaConsole
|
||||
generate them; BT reuses both. (In `TeslaRel410` the pod side of this is emulated
|
||||
— see that repo's plasma-display notes.)
|
||||
@@ -0,0 +1,18 @@
|
||||
# battletech-port — hand-off package
|
||||
|
||||
Everything needed to add **BattleTech** support to the modernized **TeslaConsole**
|
||||
(in the `TeslaSuite` repo), mirroring its existing **Red Planet** implementation.
|
||||
Assembled in the `TeslaRel410` repo from the Mac 4.10 console decompilation + the
|
||||
game's own data. **Transplant this whole folder into the TeslaSuite repo** and
|
||||
implement from the spec there (that repo can build the .NET solution).
|
||||
|
||||
- **`BATTLETECH-PORT-SPEC.md`** — start here. The full port spec: shared Munga/1501
|
||||
spine, the BattleTech egg format + the BT-vs-RP field diff, the RedPlanet→BattleTech
|
||||
class map, the shell de-hardcoding, the `BTConfig.xml` catalog + data sources,
|
||||
open questions, and verification.
|
||||
- **`reference/cavern.egg`** — console-generated BattleTech egg (golden field reference).
|
||||
- **`reference/TESTARN.EGG`** — 2nd BT egg (shows multiple `[Role::*]` blocks).
|
||||
- **`reference/RPConfig.xml.template`** — the RP catalog XML to mirror as `BTConfig.xml`.
|
||||
- **`reference/L4PLASMA.HPP`** — the pod plasma-display class the egg bitmaps target.
|
||||
|
||||
Context: `../CONSOLE-4.10-DECOMP.md` (the Mac console decompilation this builds on).
|
||||
@@ -0,0 +1,70 @@
|
||||
//===========================================================================//
|
||||
// File: L4plasma.hpp //
|
||||
// Project: MUNGA Brick: Applications-specific controls module //
|
||||
// Contents: Interface specification for plasma display //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- -----------------------------------------------------------//
|
||||
// 04/20/95 CPB Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved //
|
||||
// PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(L4PLASMA_HPP)
|
||||
# define L4PLASMA_HPP
|
||||
|
||||
# if !defined(L4VB8_HPP)
|
||||
# include <l4vb8.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(L4SERIAL_HPP)
|
||||
# include <l4serial.hpp>
|
||||
# endif
|
||||
|
||||
//########################################################################
|
||||
//################################ Plasma ################################
|
||||
//########################################################################
|
||||
class PlasmaDisplay :
|
||||
public Video8BitBuffered
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
plasmaWidth=128,
|
||||
plasmaHeight=32
|
||||
};
|
||||
|
||||
PlasmaDisplay(Word port, Word int_num);
|
||||
|
||||
~PlasmaDisplay();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
void
|
||||
ShowInstance(char *indent);
|
||||
|
||||
Logical
|
||||
Update(Logical forceall);
|
||||
|
||||
void
|
||||
WaitForUpdate();
|
||||
|
||||
protected:
|
||||
void
|
||||
Scan(Logical forceall);
|
||||
|
||||
Logical
|
||||
forceAll,
|
||||
updateInProgress;
|
||||
|
||||
PCSerial
|
||||
*pc_serial;
|
||||
int
|
||||
currentTransferLine;
|
||||
char
|
||||
updateFlag[32];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<RedPlanet>
|
||||
<race name="Martian Death Race">
|
||||
<invalid type="map" key="headmf" />
|
||||
|
||||
<color key="Red" name="Red" />
|
||||
<color key="Blue" name="Blue" />
|
||||
<color key="Green" name="Green" />
|
||||
<color key="White" name="White" />
|
||||
<color key="Pink" name="Pink" />
|
||||
<color key="Aqua" name="Aqua" />
|
||||
<color key="Yellow" name="Yellow" />
|
||||
<color key="Purple" name="Purple" />
|
||||
<color key="Black" name="Black" />
|
||||
|
||||
<badge key="None" name="None" />
|
||||
<badge key="Celtic" name="Celtic" />
|
||||
<badge key="Desert" name="Desert" />
|
||||
<badge key="Flames" name="Flames" />
|
||||
<badge key="Giraffe" name="Giraffe" />
|
||||
<badge key="Hawaii" name="Hawaii" />
|
||||
<badge key="Korean" name="Korean Camo" />
|
||||
<badge key="Lightning" name="Lightning" />
|
||||
<badge key="Razzle Dazzle" name="Razzle Dazzle" />
|
||||
<badge key="Rising Sun" name="Rising Sun" />
|
||||
<badge key="Tiger Stripe" name="Tiger Stripes" />
|
||||
</race>
|
||||
|
||||
<football name="Martian Football">
|
||||
<invalid type="map" key="pain" />
|
||||
<invalid type="map" key="headoff" />
|
||||
|
||||
<team key="Red/Pink" name="Red/Pink" runnerColor="Pink" teamColor="Red" />
|
||||
<team key="Blue/Aqua" name="Blue/Aqua" runnerColor="Aqua" teamColor="Blue" />
|
||||
<team key="Green/Yellow" name="Green/Yellow" runnerColor="Yellow" teamColor="Green" />
|
||||
<team key="Black/Purple" name="Black/Purple" runnerColor="Purple" teamColor="Black" />
|
||||
|
||||
<position key="crusher" name="Crusher" />
|
||||
<position key="blocker" name="Blocker" />
|
||||
<position key="runner" name="Runner" />
|
||||
</football>
|
||||
|
||||
<map key="wise" name="Wiseguy's Wake" image="images/red planet maps/Wiseguy's Wake.bmp" />
|
||||
<map key="lyzlane" name="Lyz's Lane" image="images/red planet maps/Lyz's Lane.bmp" />
|
||||
<map key="yip" name="Yip's Yahoorama" image="images/red planet maps/Yip's Yahoorama.bmp" />
|
||||
<map key="blade" name="Blade's Edge" image="images/red planet maps/Blade's Edge.bmp" />
|
||||
<map key="otto" name="Berserker's Bahnzai" image="images/red planet maps/Berserker's Bahnzai.bmp" />
|
||||
<map key="frstrm" name="Firestorm's Fury" image="images/red planet maps/Firestorm's Fury.bmp" />
|
||||
<map key="burnt" name="Burnt Cookies" image="images/red planet maps/Burnt Cookies.bmp" />
|
||||
<map key="brewers" name="Brewer's Bane" image="images/red planet maps/Brewer's Bane.bmp" />
|
||||
<map key="pain" name="Paingod's Passage" image="images/red planet maps/Pain God's Passage.bmp" />
|
||||
<map key="headoff" name="Freezemoon's Freeway" />
|
||||
<map key="headmf" name="Freezemoon's Freeway" />
|
||||
|
||||
<vehicle key="quark" name="Quark" image="images/red planet vehicles/Quark.bmp" />
|
||||
<vehicle key="lepton" name="Lepton" image="images/red planet vehicles/Quark.bmp" />
|
||||
<vehicle key="proton" name="Proton" image="images/red planet vehicles/Quark.bmp" />
|
||||
|
||||
<vehicle key="bug" name="Bug" image="images/red planet vehicles/Bug.bmp" />
|
||||
<vehicle key="speck" name="Speck" image="images/red planet vehicles/Bug.bmp" />
|
||||
<vehicle key="blkspk" name="Black Speck" image="images/red planet vehicles/Bug.bmp" />
|
||||
|
||||
<vehicle key="chigger" name="Chigger" image="images/red planet vehicles/Skeeter.bmp" />
|
||||
<vehicle key="flea" name="Flea" image="images/red planet vehicles/Skeeter.bmp" />
|
||||
<vehicle key="roach" name="Roach" image="images/red planet vehicles/Skeeter.bmp" />
|
||||
<vehicle key="skeeter" name="Skeeter" image="images/red planet vehicles/Skeeter.bmp" />
|
||||
<vehicle key="wasp" name="Wasp" image="images/red planet vehicles/Skeeter.bmp" />
|
||||
|
||||
<vehicle key="barge" name="Barge" image="images/red planet vehicles/Mule.bmp" />
|
||||
<vehicle key="broccoli" name="Screaming Broccoli" image="images/red planet vehicles/Mule.bmp" />
|
||||
<vehicle key="burro" name="Burro" image="images/red planet vehicles/Mule.bmp" />
|
||||
<vehicle key="mule" name="Mule" image="images/red planet vehicles/Mule.bmp" />
|
||||
|
||||
<vehicle key="bttlbrg" name="Battle Barge" image="images/red planet vehicles/Vole.bmp" />
|
||||
<vehicle key="gator" name="Gator" image="images/red planet vehicles/Vole.bmp" />
|
||||
<vehicle key="grunt" name="Grunt" image="images/red planet vehicles/Vole.bmp" />
|
||||
<vehicle key="vole" name="Vole" image="images/red planet vehicles/Vole.bmp" />
|
||||
|
||||
<vehicle key="bull" name="Bull" image="images/red planet vehicles/Bull.bmp" />
|
||||
<vehicle key="tarntula" name="Tarantula" image="images/red planet vehicles/Bull.bmp" />
|
||||
<!--<vehicle key="blktran" name="Black Tarantula" image="images/red planet vehicles/Bull.bmp" />-->
|
||||
|
||||
<vehicle key="mantis" name="Mantis" image="images/red planet vehicles/Roadblock.bmp" />
|
||||
<vehicle key="ripper" name="Ripper" image="images/red planet vehicles/Roadblock.bmp" />
|
||||
<vehicle key="roadblk" name="Road Block" image="images/red planet vehicles/Roadblock.bmp" />
|
||||
<vehicle key="spitter" name="Spitter" image="images/red planet vehicles/Roadblock.bmp" />
|
||||
|
||||
<vehicle key="puck" name="Armadillo" image="images/red planet vehicles/Armadillo.bmp" />
|
||||
|
||||
<vehicle key="dragon" name="Dragon" image="images/red planet vehicles/Police.bmp" />
|
||||
|
||||
<time key="day" name="Day" />
|
||||
<time key="night" name="Night" />
|
||||
|
||||
<weather key="clear" name="Clear" />
|
||||
<weather key="fog" name="Light Fog" />
|
||||
<weather key="soup" name="Heavy Fog" />
|
||||
</RedPlanet>
|
||||
@@ -0,0 +1,229 @@
|
||||
[mission]
|
||||
adventure=BattleTech
|
||||
map=arena1
|
||||
scenario=freeforall
|
||||
time=day
|
||||
weather=clear
|
||||
temperature=27
|
||||
length=600
|
||||
[ordinals]
|
||||
bitmap=Ordinal::BitMap::1
|
||||
bitmap=Ordinal::BitMap::2
|
||||
bitmap=Ordinal::BitMap::3
|
||||
bitmap=Ordinal::BitMap::4
|
||||
[Ordinal::BitMap::1]
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=000038000003C000001FF00000000F00
|
||||
bitmap=0000F8000003C000003FF80000000F00
|
||||
bitmap=0001F8000003C00000707C0000000F00
|
||||
bitmap=0001F8000003C00000603C0000000F00
|
||||
bitmap=00007801FC0FF00000003C3DF807FF00
|
||||
bitmap=00007803FE0FF00000003C3FFC0FFF00
|
||||
bitmap=00007803C703C00000003C3E3C1F0F00
|
||||
bitmap=000078078303C0000000783C1E1E0F00
|
||||
bitmap=000078078003C0000000783C1E1E0F00
|
||||
bitmap=00007807C003C0000000F03C1E1E0F00
|
||||
bitmap=00007807F003C0000001E03C1E1E0F00
|
||||
bitmap=00007803FC03C0000003C03C1E1E0F00
|
||||
bitmap=00007801FE03C0000007803C1E1E0F00
|
||||
bitmap=000078007F03C000000F003C1E1E0F00
|
||||
bitmap=000078001F03C000001E003C1E1E0F00
|
||||
bitmap=000078000F03C000003C003C1E1E0F00
|
||||
bitmap=000078060F03C0000078003C1E1E0F00
|
||||
bitmap=000078071E03E0000078003C1E1F1F00
|
||||
bitmap=00007803FE01F000007FFC3C1E0FFF00
|
||||
bitmap=00007801FC00F000007FFC3C1E07EF00
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
x=128
|
||||
y=32
|
||||
width=8
|
||||
[Ordinal::BitMap::2]
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=001FFF0000003C0000003C03C0780000
|
||||
bitmap=001FFF0000003C0000007C03C0780000
|
||||
bitmap=00000E0000003C000000FC03C0780000
|
||||
bitmap=00003C0000003C000001BC03C0780000
|
||||
bitmap=0000700F3E1FFC000003BC0FF07BF000
|
||||
bitmap=0001E00F7E3FFC0000073C0FF07FF800
|
||||
bitmap=0003800FFE7C3C0000063C03C07C7800
|
||||
bitmap=0007F80FFE783C00000C3C03C0783C00
|
||||
bitmap=0007FE0F80783C0000183C03C0783C00
|
||||
bitmap=00001E0F00783C0000383C03C0783C00
|
||||
bitmap=00000F0F00783C0000703C03C0783C00
|
||||
bitmap=00000F0F00783C00007FFF03C0783C00
|
||||
bitmap=00000F0F00783C00007FFF03C0783C00
|
||||
bitmap=00000F0F00783C0000003C03C0783C00
|
||||
bitmap=00000F0F00783C0000003C03C0783C00
|
||||
bitmap=00000F0F00783C0000003C03C0783C00
|
||||
bitmap=00180F0F00783C0000003C03C0783C00
|
||||
bitmap=001C1F0F007C7C0000003C03E0783C00
|
||||
bitmap=000FFE0F003FFC0000003C01F0783C00
|
||||
bitmap=0007FC0F001FBC0000003C00F0783C00
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
x=128
|
||||
y=32
|
||||
width=8
|
||||
[Ordinal::BitMap::3]
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=001FFF03C07800000000FC03C0780000
|
||||
bitmap=001FFF03C07800000003FC03C0780000
|
||||
bitmap=001E0003C07800000007C003C0780000
|
||||
bitmap=001E0003C0780000000F0003C0780000
|
||||
bitmap=001E000FF07BF000000F000FF07BF000
|
||||
bitmap=001E000FF07FF800001E000FF07FF800
|
||||
bitmap=001E0003C07C7800001E0003C07C7800
|
||||
bitmap=001FFC03C0783C00001EFC03C0783C00
|
||||
bitmap=001FFE03C0783C00001FFE03C0783C00
|
||||
bitmap=00001F03C0783C00001F1F03C0783C00
|
||||
bitmap=00000F03C0783C00001E0F03C0783C00
|
||||
bitmap=00000F03C0783C00001E0F03C0783C00
|
||||
bitmap=00000F03C0783C00001E0F03C0783C00
|
||||
bitmap=00000F03C0783C00001E0F03C0783C00
|
||||
bitmap=00000F03C0783C00001E0F03C0783C00
|
||||
bitmap=00000F03C0783C00001E0F03C0783C00
|
||||
bitmap=00180F03C0783C00001E0F03C0783C00
|
||||
bitmap=001C1F03E0783C00001F1F03E0783C00
|
||||
bitmap=000FFE01F0783C00000FFE01F0783C00
|
||||
bitmap=0007FC00F0783C000007FC00F0783C00
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
x=128
|
||||
y=32
|
||||
width=8
|
||||
[Ordinal::BitMap::4]
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=001FFF03C07800000007FC03C0780000
|
||||
bitmap=001FFF03C0780000000FFE03C0780000
|
||||
bitmap=00000F03C0780000001F1F03C0780000
|
||||
bitmap=00000F03C0780000001E0F03C0780000
|
||||
bitmap=00000F0FF07BF000001E0F0FF07BF000
|
||||
bitmap=00001F0FF07FF800001E0F0FF07FF800
|
||||
bitmap=00001E03C07C7800001E0F03C07C7800
|
||||
bitmap=00003E03C0783C00001E0F03C0783C00
|
||||
bitmap=00003C03C0783C00000F1E03C0783C00
|
||||
bitmap=00003C03C0783C000007FC03C0783C00
|
||||
bitmap=00007803C0783C000007FC03C0783C00
|
||||
bitmap=00007803C0783C00000F1E03C0783C00
|
||||
bitmap=00007803C0783C00001E0F03C0783C00
|
||||
bitmap=0000F003C0783C00001E0F03C0783C00
|
||||
bitmap=0000F003C0783C00001E0F03C0783C00
|
||||
bitmap=0000F003C0783C00001E0F03C0783C00
|
||||
bitmap=0000F003C0783C00001E0F03C0783C00
|
||||
bitmap=0000F003E0783C00000F1E03E0783C00
|
||||
bitmap=0000F001F0783C00000FFE01F0783C00
|
||||
bitmap=0000F000F0783C000007FC00F0783C00
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
x=128
|
||||
y=32
|
||||
width=8
|
||||
[pilots]
|
||||
pilot=200.0.0.113
|
||||
[200.0.0.113]
|
||||
hostType=0
|
||||
advancedDamage=1
|
||||
loadzones=1
|
||||
name=cyd
|
||||
bitmapindex=1
|
||||
experience=veteran
|
||||
badge=VGL
|
||||
patch=Yellow
|
||||
role=Role::Default
|
||||
dropzone=one
|
||||
vehicle=madcat
|
||||
vehicleValue=0
|
||||
color=White
|
||||
[largebitmap]
|
||||
bitmap=BitMap::Large::cyd
|
||||
[BitMap::Large::cyd]
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=000000000000000000003C0000000000
|
||||
bitmap=000000000000000000003C0000000000
|
||||
bitmap=000000000000000000003C0000000000
|
||||
bitmap=000000000000000000003C0000000000
|
||||
bitmap=000000000000FCF00E0FBC0000000000
|
||||
bitmap=000000000003FE781C1FFC0000000000
|
||||
bitmap=000000000007FE781C3C7C0000000000
|
||||
bitmap=00000000000F82783C3C3C0000000000
|
||||
bitmap=00000000001F003C38783C0000000000
|
||||
bitmap=00000000001E003C78783C0000000000
|
||||
bitmap=00000000001E003C70783C0000000000
|
||||
bitmap=00000000001E003E70783C0000000000
|
||||
bitmap=00000000001E001EE0783C0000000000
|
||||
bitmap=00000000001E001EE0783C0000000000
|
||||
bitmap=00000000001F001FE0783C0000000000
|
||||
bitmap=00000000000F020FC07C7C0000000000
|
||||
bitmap=000000000007FE0FC03FFC0000000000
|
||||
bitmap=000000000003FE0F803FFC0000000000
|
||||
bitmap=000000000000FC07800F3C0000000000
|
||||
bitmap=00000000000000070000000000000000
|
||||
bitmap=00000000000000070000000000000000
|
||||
bitmap=000000000000000F0000000000000000
|
||||
bitmap=000000000000000E0000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000000000
|
||||
x=128
|
||||
y=32
|
||||
width=8
|
||||
[smallbitmap]
|
||||
bitmap=BitMap::Small::cyd
|
||||
[BitMap::Small::cyd]
|
||||
bitmap=00000000000000000000000000000000
|
||||
bitmap=00000000000000000000000000600000
|
||||
bitmap=00000000006000000000000000600000
|
||||
bitmap=000001EC33E000000000030666600000
|
||||
bitmap=000003066660000000000303C6600000
|
||||
bitmap=00000303C66000000000030186600000
|
||||
bitmap=000001E183E000000000000300000000
|
||||
bitmap=00000003000000000000000000000000
|
||||
x=64
|
||||
y=16
|
||||
width=4
|
||||
[Role::Default]
|
||||
model=dfltrole
|
||||
[Role::NoReturn]
|
||||
model=noretun
|
||||
Binary file not shown.
Reference in New Issue
Block a user