Tachibana

A Tachibana project · Oric-1 game

Astéroric

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

What Astéroric does

XOR vector drawing

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.

Faithful to the arcade

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.

3-channel AY-3-8912 sound

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

Vector title screen

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.

Keyboard and IJK joystick

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.

Free software (EUPL 1.2)

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.

See all features in detail → · Read the manual →

Play

Three ways to play

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.

Recommended

Under Phosphoric

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.

Emulator

On a real Oric-1

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.

Real hardware

Download & build

Get it and build it

Source code

The repository is public under the EUPL 1.2 licence (original code). Clone it, open an issue, submit a fix.

github.com/benedictemarty/oric-asteroids

Build

With 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)

Run

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 manual

Roadmap

Where development stands

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.

Complete game

32-angle ship, shots, asteroids in 4 shapes × 3 sizes, collisions, score, lives, waves, saucers, hyperspace, game over and top-five high scores.

Done

Arcade rev 4 fidelity

Shapes, spawning, fragmentation, saucer AI, end-of-wave pressure, ship and asteroid explosions transposed from the disassembly.

Done

3-channel AY sound

IRQ-driven player, envelopes, eight effects, title jingle (Grieg, public domain) in two voices.

Done

Constant 25 Hz

Fixed-step scheduler with catch-up, no more stalls; idle CPU time raised from 17.9% to 39.8% over three optimisation phases.

Done

Real hardware

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.

Done

Configurable keys

CONTROLS screen (K key on the title): five remappable actions, duplicates refused, ESC restores.

Done

Oric Atmos

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.

To do

Persistence & disk

Saving high scores to tape or disk, a Microdisc .dsk image, unrolled drawing loops, a colour HUD band.

Roadmap

Articles

Technical notes