Apogee BK-01 emulator with MIDI support via PPI
Install
To download the source code, build the Apogee binary, and install it in $HOME/.cargo/bin in one go run:
Or install via Homebrew:
Alternatively, you can manually download the source code and build the Apogee binary with:
Install as library
Add the following to your Cargo.toml:
[]
= { = "https://github.com/coignard/apogee" }
Or to pin a specific version:
[]
= { = "https://github.com/coignard/apogee", = "0.3.0" }
Test
Tests use a replay-based snapshot system. Each file in tests/replays/ is a JSON recording of a session: input events, timing, and metadata (ROM name, sample rate, display settings, SHA-256 of the ROM).
The emulator replays the events and at each checkpoint compares machine state and screenshot against the expected dumps in tests/dumps/.
To update snapshots after an intentional change:
UPDATE_SNAPSHOTS=1
Please note that changes to iz80 that affect instruction timing or CPU state require manually reviewing and rerecording the affected replays, not just regenerating snapshots.
Credits
Thanks to Kakos Nonos for sharing his Apogee BK-01 programs used in the test suite, Victor A. Pykhonin for helping debug checksums and KR580VI53 and for emu80 which was the main reference for this emulator, and Olga Podivilova for the Apogee BK-01 illustration.
Sponsors
License
The Apogee source code is © 2026 René Coignard and licensed under the GNU General Public License v3.0 or later.
The Apogee SDK source code is © 2026 René Coignard and licensed under the zlib License.
The flat assembler g source code is © 2015-2025 Tomasz Grysztar and licensed under the BSD 3-Clause License.
The .rka files in tests/assets/ are Apogee BK-01 programs written by and © Kakos Nonos, included with his kind permission. Some programs may contain third-party assets whose rights belong to their respective owners. proverka.rka is included for testing purposes; its authorship and copyright status are unknown. If you are the copyright holder and object to its inclusion, please open an issue.