FAKE-08 - RetroBIOS¶
| Type | libretro |
| Classification | game_engine |
| Source | https://github.com/jtothebell/fake-08 |
| Version | v0.0.2.19 |
| Profiled | 2026-03-23 |
| Cores | fake08 |
| Systems | pico8 |
Platform details
cartridge_format: - extensions: p8, png - source_ref: platform/libretro/libretro.cpp:258 - notes: .p8 is the PICO-8 text cartridge format containing Lua code, gfx,
gff, map, sfx, and music sections. .png is the cartridge-as-image format where cart data is steganographically encoded in the image.
**runtime:**
- source_ref: source/vm.h, source/p8GlobalLuaFunctions.h
- notes: The FAKE-08 VM reimplements the PICO-8 API (128x128 screen, 16 colors,
4-channel audio, Lua scripting) entirely in C++. The built-in BIOS provides a cart browser and error display. Audio runs at 22050 Hz with save state support via custom serialization (libretro.cpp:517-736).
Technical notes
FAKE-08 is an open-source PICO-8 compatible runtime for running .p8 and .p8.png cartridges on platforms where the official PICO-8 binary is not available (3DS, Vita, Switch, Wii U, various handhelds).
The core retrieves RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY in retro_set_environment() (libretro.cpp:162-163) but never uses the value. No file is loaded from the system directory. The PICO-8 boot sequence, global Lua functions, and default cart menu are compiled directly into the binary as string constants (p8GlobalLuaFunctions.h, DefaultCart.h).
When no ROM is passed (supports_no_game = true), the core queues its built-in BIOS cart "__FAKE08-BIOS.p8" (libretro.cpp:751). This is not an external file -- it is generated internally by the VM.
The core accepts .p8 (text) and .png (cartridge-as-image) formats (libretro.cpp:258). Content is loaded either via the libretro data buffer or full path depending on the NEED_FULL_PATH compile flag.
No BIOS or firmware files required.
Why no files
all engine resources compiled into binary via include_bytes!
Generated on 2026-03-25T14:56:43Z