Information and a C port of subLOGIC's Flight Simulator II for the Apple ][.
Find a file
2026-09-06 15:43:10 -05:00
orig Initial commit. 2026-05-13 21:32:05 -05:00
port Updates to everything. 2026-09-06 15:43:10 -05:00
res Initial commit. 2026-05-13 21:32:05 -05:00
src Updates to everything. 2026-09-06 15:43:10 -05:00
.gitattributes Initial commit. 2026-05-13 21:32:05 -05:00
.gitignore Initial commit. 2026-05-13 21:32:05 -05:00
ARCHITECTURE.md Updates to everything. 2026-09-06 15:43:10 -05:00
Makefile Updates to everything. 2026-09-06 15:43:10 -05:00
README.md Updates to everything. 2026-09-06 15:43:10 -05:00
SESSION_RECOVERY.md Updates to everything. 2026-09-06 15:43:10 -05:00

Disassembly and analysis of SubLOGIC's Flight Simulator II (FS2) for the Apple II platform, circa 1984.

Two halves:

  1. Disassembly of the original 6502 binary under src/ (chunks chunk2.s .. chunk5.s) plus the scenery-file code overlays (ovl25.s edit mode, ovl2d.s WW1 Ace, ovl42.s Ctrl+E, ovl2b.s boot page). make validate enforces byte-identity against the original FS2 chunks and the overlay sections.
  2. C port in port/ (SDL2). A byte-faithful C translation of the whole program (no 6502 emulation in the game) running over a 64K RAM image; it is verified tick by tick against a 6502 oracle run of the real binary (port/tools/verify/regress.sh). The edit-mode editor, the WW1 mode and the Ctrl+E page, which the original loads as 6502 overlays from the scenery file, are disassembled in src/ovl*.s and translated too. See port/PORT_STATUS.md and ARCHITECTURE.md.

Disassembly

The target is @qkumba's ProDOS port of FS2, which has a custom loader which decompressess chunks of code/data into memory. The project primarily focuses on understanding those chunks, which represent the memory-resident code of the original FS2.

The cc65 tool chain is used; source files target the ca65 macro assembler; ca65 and ld65 must be available. Build via make and use make validate to verify that the built chunks (out/?_????-????) are byte-identical to the original chunks (orig/?_????-????), and that the overlay sources src/ovl*.s rebuild the FS2.1 file sections in orig/ovl_*.bin.

PRs welcome. Comments are strongly encouraged. Macro use for common patterns is also encouraged, where it helps understanding the original code.

Loader

The source for @qkumba's ProDOS loader is included. To build the binary, use make binary. The output will be out/fs2#062499. This requires the following addtional tools to be available on the command line.

Note that the binary on its own is insufficient to actually run FS2; an adjacent file representing a full image of the 140k FS2 disk is required, which includes the dynamically loaded scenery database. This file (and more) are present on the orig/flight simulator 2 with scenery PRODOS (san inc pack).po. If you do build the binary, you can transfer it to a copy of that disk image and BRUN it.

Additionally, a out/loader.system#ff2000 file will also be produced. This can be transferred to a disk as a SYS file and executed to load/run the FS2 binary.