FRED-80 runs on the Apollo A6000 — a real Amiga with a 68080 CPU and SAGA chipset. Write games in Lua. Draw sprites in the built-in editor. Ship a single binary. Also runs standalone on macOS — Windows coming soon.
-- soldiers.lua function _init() map(0, 0, 0) units = {} for i = 1, 20 do units[i] = { x = rnd(600), y = rnd(440), s = rnd(8) } end end function _draw() cls() for _, u in ipairs(units) do spr(u.s, u.x, u.y) end end
No cross-dev tools. No emulator. Edit, run, and ship directly on the A6000.
128-slot 16×16 sprite bank with per-sprite hitboxes, palette picker, and live preview. Draw on-machine.
8 map slots, 64×32 tiles each. Parallax-ready with AMMX-accelerated transparent blits.
8 synthesis channels + 4 hardware DMA channels (zero CPU cost for PCM). TOMMY step sequencer with 8 tracks, patterns, and song ordering.
Full Lua — tables, closures, coroutines. 100+ API functions covering graphics, audio, physics, particles, tweens, and more.
Sprite blits and parallax scrolling use the Vampire's AMMX SIMD unit. 8 pixels per instruction.
One fred-80.m68k file. Drop it anywhere, run from Shell. Carts are plain folders under fred80/.
Copy the binary to your A6000, create a cart folder, start the editor.
personal:downloads> fred-80.m68k
Run it directly from wherever you downloaded it — no install needed.
The HOME tab lists all carts in fred80/ next to the binary. Select one to load it, or create a new folder to start fresh.
function _init()
x, y = 320, 240
end
function _update()
if btn(0) then x = x - 2 end
if btn(1) then x = x + 2 end
if btn(2) then y = y - 2 end
if btn(3) then y = y + 2 end
end
function _draw()
cls()
spr(0, x, y)
end
Press F5 from the editor to launch the active cart. Press Esc to return to the editor.
100+ functions. Everything you need, nothing you don't.
cls([col]) — clear screenspr(n, x, y [,scale]) — draw spritemap(slot, x, y) — draw tilemaprect(x,y,w,h [,col]) — rect outlinerectfill(x,y,w,h [,col]) — filled rectline(x0,y0,x1,y1 [,col]) — linepset(x, y [,col]) — plot pixelpal(i, r, g, b) — set palette entryprint(str, x, y [,col]) — draw textbtn(b [,p]) — button heldbtnp(b [,p]) — button pressedmouse() — x, y, buttonskey(k) — keyboard heldkeyp(k) — keyboard pressedsfx(n [,ch]) — play soundmusic(n) — start songvol(ch, v) — set channel volumernd(n) — random 0..n-1mid(a,b,c) — median of threeflr(n) — floortime() — time in secondsstat(n) — engine stats (fps, mem…)dset(i, val) — persist number to slot 0–63dget(i) — read persisted slotv0.8.16 BETA · Apollo A6000 / Vampire
Requires an Amiga with Vampire V4 Standalone (A6000) or compatible Apollo accelerator. 68080 CPU, SAGA chipset, AmiKit or AmigaOS 3.2+.
Source and docs on GitHub