Missile Attack!

September 13, 2026 · View on GitHub

Static recompilation of Missile Attack! v1.1 (Peter Siamidis, 1992) from its shipping Win16 binary to native C.

Built on the pcrecomp toolchain.

Project Status: P0 complete, P1 not started


What this is for

This is the smallest complete Win16 game in the collection, and that is the whole point of it.

MISSILE.EXE   87,360 bytes   NE, Microsoft linker 5.14, Windows, PROTMODE
              2 segments (1 CODE, 1 DATA), 20,975 bytes of code
              165 relocations -- 152 of them imports, 13 internal
              imports: MMSYSTEM, win87em, KERNEL, GDI, USER

One code segment. Twenty-one kilobytes. Every other NE project here — El-Fish (121 segments), Bang! Bang!, Microsoft Bob, Catz, The Even More Incredible Machine (34 segments) — has segmentation as a first-class problem. This one does not have segmentation at all.

That makes it the right fixture for the 16-bit pipeline itself. A change to ne_parse.py, ne_decode.py, ne_xref.py or lift16.py can be checked end-to-end here in the time it takes to read the diff, and if it breaks, the failure is in the change and not in some segment-boundary edge case. The toolkit's own history says why that matters: three of the five NE bugs found during Bang! Bang! were off-by-one errors in table parsing that only showed up as missing functions, never as an error message.

It is also a real game with a real window procedure, not a synthetic test:

WNDPROC        seg 1:0x01AC
ABOUTMSGPROC   seg 1:0x22A8
HOWTOMSGPROC   seg 1:0x233C
HIGHMSGPROC    seg 1:0x248A     high scores
ENTRYMSGPROC   seg 1:0x23D0

Five named entry points across 21 KB means nearly every top-level control path is identified before disassembly.

The one interesting bit

It imports win87em — Borland's 8087 floating-point emulator — alongside MMSYSTEM. That is an x87 surface in a 16-bit NE image, which is exactly what forced disasm/fpu_decode.py to exist during El-Fish. This is a 21 KB version of the same problem and a much faster place to test changes to it.

MISSILE.WAV and friends go out through MMSYSTEM; four WAVs, no MIDI.

Where it goes next (P1)

Straight through the standard 16-bit path. There is nothing unusual to plan around, which is the point.

Provenance

Shareware, distributed with a $5 registration request:

If you enjoyed Missile Attack! and want to encourage me to create more games, please register your version by sending $5 to: ...

Shareware is not public domain. The binary stays local; original/ is gitignored.

Layout

missileattack/
  original/       win3_MissileA.zip
  original/ex/    extracted
  analysis/
  docs/

Credits

Missile Attack! © 1992 Peter Siamidis. This project neither contains nor distributes any part of it.