Download the .tap
The asteroric.tap file (~23 KB) is in the Assets of the latest GitHub release. It is autorun: no CLOAD to type, HIRES mode and the game start on load.
A Tachibana project · Oric-1 game
Asteroids — Oric-1 48K
A faithful study clone of Asteroids (Atari, 1979) for the Oric-1 48K: the arcade logic, the vector drawing, the sound — on a 1 MHz 6502.
Written in C and 6502 assembly (cc65). XOR rendering in HIRES 240×200, a constant 25 Hz game loop, asteroids and saucers taken from the disassembly of the arcade ROM rev 4, 3-channel AY-3-8912 sound, IJK joystick and configurable keys. Tested on a real Oric-1. EUPL 1.2 licence.
Features
Bresenham segments XORed onto the monochrome HIRES screen: draw, then draw again to erase, without saving anything. Self-modifying assembly routine, byte-batched on the horizontal axis, pre-rendered sprites for fixed shapes.
Logic transposed from the disassembly of the arcade ROM rev 4: 11-13 vertex asteroid shapes, progressive waves, three-way fragmentation, saucer AI indexed on the score, hyperspace, 5-segment ship.
Player under the 50 Hz Timer 1 interrupt: channel A for effects, B for the thump-thump heartbeat, C for the saucer. Hardware envelopes, eight recreated effects, title jingle after Grieg (two voices).
Complete A-Z vector font drawn in XOR, arcade-style attract demo, blinking “PRESS SPACE”, 7-segment score, “WAVE n”, top-five high score table.
Direct keyboard matrix scan through the VIA (no ROM dependency), keys remappable from the title screen (K key), IJK joystick interface read on the printer port — protocol validated on real hardware.
Original code released under EUPL 1.2 on GitHub, autorun .tap binary in the release. Runs on the Phosphoric emulator (the project's development tool) and on a real Oric-1.
Play
The asteroric.tap file (~23 KB) is in the Assets of the latest GitHub release. It is autorun: no CLOAD to type, HIRES mode and the game start on load.
The Phosphoric emulator as an Oric-1 (BASIC 1.0 ROM) loads the .tap directly; make run from the sources does the same, make run-joy with the emulated IJK joystick.
Load from tape or through a modern interface. HIRES 50 Hz (PAL) video signal validated by an external tester with an RGB2HDMI; physical IJK interface supported.
Download & build
The repository is public under the EUPL 1.2 licence (original code). Clone it, open an issue, submit a fix.
github.com/benedictemarty/oric-asteroidsWith cc65 (≥ 2.19), Python 3 for the tables and Phosphoric to run and test:
make # produces build/asteroric.tap
make run # runs under Phosphoric
make check # capture = bit-exact reference
make host-test # host tests (rng, key table)
Under Phosphoric as an Oric-1, or on a real Oric-1 48K. The manual covers the keys, the configuration screen and the joystick.
Read the manualRoadmap
Astéroric is at 1.0.0-beta (phase 40, GitHub release of 9 August 2026): a complete, playable game, validated on a real Oric-1 by an external tester. Forty phases delivered, two “senior” code reviews applied. Indicative status below — the repository is authoritative.
32-angle ship, shots, asteroids in 4 shapes × 3 sizes, collisions, score, lives, waves, saucers, hyperspace, game over and top-five high scores.
Shapes, spawning, fragmentation, saucer AI, end-of-wave pressure, ship and asteroid explosions transposed from the disassembly.
IRQ-driven player, envelopes, eight effects, title jingle (Grieg, public domain) in two voices.
Fixed-step scheduler with catch-up, no more stalls; idle CPU time raised from 17.9% to 39.8% over three optimisation phases.
50 Hz video signal fixed (ULA attribute $1E), 2×2 px torpedoes, real IJK protocol — three rounds of feedback from a tester on a physical Oric-1.
CONTROLS screen (K key on the title): five remappable actions, duplicates refused, ESC restores.
The .tap does not work with the Atmos ROM (BASIC 1.1): the nominal target is the Oric-1, Atmos compatibility is a dedicated sprint.
Saving high scores to tape or disk, a Microdisc .dsk image, unrolled drawing loops, a colour HUD band.
Articles
Forty phases to fit a 1979 vector game into 20,000 cycles per frame. What gave way, what pushed back, and what the emulator was hiding from us. Read the article →