Skip to content

Releases: danamini/aura-tunnel

Aura Tunnel v1.3

Choose a tag to compare

@danamini danamini released this 26 Aug 20:56

Two editions from one source. The 48K demo gains a rotating plane, a hi-res pixel scroller, dither-shaded solid cubes, a runner drawn on real kinematics and a kung-fu bout on a moving train; scene changes now alternate between a Bayer dissolve and a curtain slide. The new 128K edition adds three-channel AY music and a VU console in the lower third — the score is baked to a per-frame register stream in Python, so the player costs about a tenth of a frame. Ten scenes, both editions verified at 50 fps.

Downloads

File Machine
aura-tunnel.sna / .tap 48K — runs on any 48K/128K machine
aura-tunnel-128.sna / .tap 128K, +2, +2A, +3 — with AY music

Snapshots boot straight into the show. For the browser, open JSSpeccy and pick the .sna.

Keys: M toggles the music (128K), Q quits to BASIC.

New scenes

  • ROTO GRID — a plane seen from above, turning and breathing, with a colour wash sweeping down it
  • SINE SCROLL — big pixel letters, one pixel a frame, every column at its own height off a travelling sine
  • SOLID CUBES — Driller-style solids, faces scan-filled through a Bayer matrix at build time so a one-bit screen shades
  • DOT RUNNER — 36 dots on the joints, off real running kinematics, arms bending 68° back to 118° forward across the swing, with a half-size companion running the other way at his own stride rate
  • NIGHT TRAIN — the kung-fu bout moved onto a flatbed wagon, scenery tearing past at three rates, the deck rocking

The 128K edition

Three AY channels: melody, a bass line following the implied harmony, and noise percussion. Pitch, harmony and all three volume envelopes are resolved in Python at build time and emitted as a flat per-frame register stream — 4,367 bytes for a 20.5-second loop, living in its own 16K page. The player is a copy loop and measures about 0.1 fps.

The lower third carries three VU bars driven off the score rather than read back from the chip. They sit in rows 21-23 because the beam does not reach the lower third until roughly 43,500 T-states after the interrupt, against 14,400 for the top row — so a full attribute repaint down there can never be caught mid-write. Contention is identical across all three screen thirds; the lower third is not faster, it just gives more warning. The meters repaint only the cells that change, which is what makes them free.

The 48K binary contains none of this. One source tree, one -DTARGET128 switch, five conditional hooks.

The melody is Korobeiniki, a Russian folk tune of the 1860s and in the public domain; the three-voice arrangement is original to this project.

Under the hood

  • ~12KB reclaimed by retiring the chunky attribute tunnel and its shade tables
  • Per-dot colouring for free: a bitmap address already encodes its attribute cell, so it is one read-modify-write with no addressing work
  • Five dead bakes removed from the generator; the build is clean-room verified
  • make produces both editions; make cleanbuild proves both from an empty tree
  • tools/smoke_test.py --128 covers the 128K edition, including live AY checks

Full technical write-up in docs/128k-integration.md.

Aura Tunnel v1.2

Choose a tag to compare

@danamini danamini released this 13 Aug 22:18

The tunnels are reborn as hi-res dot-flow rings — spinning, bending on a travelling sine, each geometry with its own personality. Scene changes now wipe with a sweeping bar, the giant letters wave per character without tearing, the star snake gains layers and a satellite, and the briefing screen leads with a blinking cursor. Music is parked for a future pass. All scenes verified ≥49 fps.

Aura Tunnel v1.1

Choose a tag to compare

@danamini danamini released this 13 Aug 21:12

Fixes for scanline-accurate emulators (JSSpeccy, real hardware): the vector cube now renders off-screen and always presents complete images — no more missing edges. Giant letters wave per character like the snake scroller, the background runner crosses twice per scene, and the beeper now plays Korobeiniki. All scenes verified at 50 fps.

Aura Tunnel v1.0

Choose a tag to compare

@danamini danamini released this 13 Aug 11:21

First public release. Grab aura-tunnel.sna and drag it into JSSpeccy to run it in your browser, or load aura-tunnel.tap on real hardware with LOAD "". Keys: M toggles music, Q quits. All scenes verified at a locked 50 fps by the ZRCP smoke test.