Description:
Amico8 is a PICO-8 fantasy console emulator for Amiga computers with a
68020 or better processor. It loads and runs PICO-8 cartridges in
both text (.p8) and image (.p8.png) format directly from the Amiga
file system.
Features:
- Runs many PICO-8 cartridges (.p8 and .p8.png) without modification
- Full 128x128 pixel display, 2x scaled to 256x256 via Amiga copper tricks
- 16-colour PICO-8 palette mapped to Amiga 12-bit hardware palette
- Joystick (port 2) and keyboard input
- Mouse support (port 1) for carts that use mouse API
- Paula audio: triangle, sawtooth, square, pulse, organ, noise waveforms
- AOT (Ahead-of-Time) native m68k code compiler for Lua numeric functions
- Multi-cart support: load() chains between cartridges (e.g. POOM, The Mind)
- BBS cart browser: browse and download cartridges from the Lexaloffle BBS
directly from the Amiga (requires AmiSSL + bsdsocket.library)
- GUI launcher: select a directory, browse cart list, launch from Workbench
Two executables are provided:
Amico8 - 68020/030 version, no FPU required.
Runs on any Amiga with a 68020 or better.
Amico8_040 - 68040/060 version, optimised instruction scheduling.
Recommended for 040/060 systems.
Recommended processor: 68060.
Usage:
Amico8 - start with GUI! (recommended)
or from CLI:
Amico8 CART=<cartridge.p8.png>
Amico8 ? (show all CLI options)
Controls:
Joystick port 2 / cursor keys / WASD - d-pad
Z / C / N - button 1 (X)
X / V / M - button 2 (O)
P / Enter - pause / start
ESC - return to launcher
Limitations:
- Some newer PICO-8 API calls may not be implemented
- Sound effects and music play, but some advanced audio effects
(vibrato, slide, arpeggio) are not yet fully implemented
- RTG (Picasso96) output supported as an alternative to chipset
---
What's new in 0.4:
- Multi-cart load(): carts can chain to other carts via load() call,
enabling games like POOM, The Mind, and other multi-file titles
- GUI: "Select Dir" and "About" buttons, window position saved in prefs,
listview scrollbar refreshes on directory change
- Fixed: hex literals without integer part (0x.2 = 0.125) now parse
correctly; was causing load errors in some carts
- Fixed: tonum() now uses integer arithmetic instead of strtod
(strtod returns garbage values on 68040+JIT for all inputs)
- Fixed: POOM and other multi-cart games work correctly
- Fixed: data carts (binary data stored in SFX slots) now round-trip
through parse correctly, fixing The Mind and neuroblend
- Fixed: Lua errors in _update/_draw show an on-screen error message;
ESC returns to launcher
---
Tested games (selection):
Working well:
Celeste, Celeste Classic 2, Just One Boss, Combopool, Low Knight
Undune, Blue Marble, Air Pico, POOM
Tiny Sim, Crowded Dungeon Crawler
Generally: roughly 2/3 of carts start, ~1/2 run correctly.
---
Code used:
Lua 5.2 - scripting engine base
Copyright (C) 1994-2015 Lua.org, PUC-Rio
Authors: R. Ierusalimschy, L. H. de Figueiredo, W. Celes
License: MIT (http://www.lua.org/license.html)
The Lua VM and standard libraries form the core of the interpreter.
z8lua - PICO-8-compatible Lua fork (from the Zepto-8 project)
Copyright (C) 2016-2024 Sam Hocevar <sam@hocevar.net>
License: WTFPL (http://www.wtfpl.net/)
Source: https://github.com/samhocevar/zepto8
z8lua extends Lua 5.2 with PICO-8-specific syntax (short-if, compound
assignment operators, integer division, fix32 number type, PICO-8 math
functions). The file z8lua/lpico8lib.c is taken directly from Zepto-8.
p8_compress - PICO-8 cartridge decompression
Copyright (C) 2014-2022 Lexaloffle Games LLP
License: MIT
Decompresses PICO-8 Lua source code from both old ":c:" format and
modern "pxa" compressed format.
stb_image - PNG image loader
Author: Sean Barrett
License: MIT / Public Domain
Source: https://github.com/nothings/stb
Used for loading .p8.png cartridge images.
FAKE-08 - reference PICO-8 implementation
Author: Jonathan (jtothebell)
License: MIT
Source: https://github.com/jtothebell/fake-08
Source code was invaluable for verifying PICO-8 behavior ? API
semantics, iterator edge cases, metatable setup, _update_buttons
contract, etc. ? against a known-working C++ reference. Not used
in the Amico8 binary, only consulted during development.
---
Thanks:
Kempy/Veezya, MWB113 - testing
Quad, OlekW200i, Wozik, Mirq, Borsuk - moral support
Jonathan (jtothebell) - FAKE-08 reference implementation
---
Pawel "Juen" Nowak
Contact: j@ki.je or via imp3!
|