Ships, the energy tower and atlas selection
Update: animated geometry and linked model states now implements gate/fountain transforms, exports 27 additional linked definitions, and adds state/animation controls. Earlier references below to those models being unresolved describe the previous extraction pass.
Follow-up: exact disc definitions, landing structures and pointer aliases.
2026-09-18. In the model atlas, select Ships & special objects and use the numeric object dropdown. All 33 entries in each of the three banks now export: 99 entries, with substantial aliasing, not 99 distinct ships. Entries include other special geometry as well.
Player ships
The bank loader relocates special-object model pointers into the 24-byte records
starting at 1926. Player setup at BD0E–BD13 uses object index 24 + F003.
The craft record and model pointer therefore identify the player geometry:
| Bank | Special index | Pool offset | Identification |
|---|---|---|---|
| 30 | 25 | C9E0 |
Caero fighter; 168 polygon commands |
| 31 | 26 | 4E53 |
Skimma; 99 polygon commands |
| 31 | 27 | 4E53 |
Upgraded Skimma player slot; exactly the same model pointer |
The Halon bank also aliases index 25 to 4E53; it must not be labelled a distinct
Caero model merely because the same slot has that role in bank 30. Other banks
also retain player-ship geometry. Many enemy/special entries remain unnamed.
The atlas supports palette/Gouraud previews and flat fallback colours. Each entry links to its OBJ and companion bank MTL. The vertex interpreter check now covers all 99 special entries as well as 362 city entries.
Main-city type 1 is the light/energy tower
This is established by code, not just appearance. The recharge calculation at
8450 fetches a map cell, then 8477–847C decrements its type and requires zero:
only type 1 takes the energy-source calculation. The flight energy path calls
this routine at 7F35. The supplied main city has 225 cells of type 1.
The subsequent flight/charging investigation recovers the beacon selection lattice, distance law, state-byte strength and reserve accounting.
Its export previously stopped at drawing opcode 22, which selects the disc
path 314D. That command uses the most recently generated screen vertex as its
centre and computes a screen radius from a stored numerator and projected depth.
The parser now preserves that primitive and its cursor effect. The tower's
41 polygon commands export and display; its one screen-space disc is explicitly
omitted from the preview and OBJ surfaces. This is why the glow/disc may be
missing even though the tower body is visible.
What “pending” meant
The exporter rejects unknown drawing commands rather than claiming a complete mesh after silently skipping geometry. The atlas now shows the actual reason:
- Eight city records still encounter unsupported transform-related opcodes
32or3B. - Twenty-one city records complete without polygon faces. They are not necessarily missing assets: a stream may be empty or serve another role.
- Six previously blocked records now export after adding disc-command parsing.
“No polygon faces” and “unsupported opcode” are deliberately distinguished. The disc primitive's omission is shown separately for otherwise exported models.
Numeric map selection
The map viewer now has a Type dropdown, listing all IDs in the current bank, with their occurrence counts—including IDs absent from that particular map. Selecting an ID highlights all its cells; clicking a cell updates the same selector. Changing map or clearing selection resets it. Selecting type 1 on map 68 immediately locates all 225 light towers.