DARKER Research archive

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:

“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.