Short: PICO-8 fantasy console emulator Author: Pawel "Juen" Nowak (j@ki.je) Uploader: Pawel "Juen" Nowak (j ki je) Type: misc/emu Version: 0.4 Requires: AmigaOS 2.0+/020+, 040/060 recommended Architecture: m68k-amigaos 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= 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 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!