natureglass/real8-explorer

A PICO-8 Explorer & Emulator for multiple platforms for real hardware

9

stars

59

commits

C++

primary language

Feb 1, 2026

updated

3ds-emulator
gba-emulator
hardware-emulation
libretro-core
pico-8
psp-emulator
switch-emulator

README

Real8 Explorer

A PICO-8 explorer and emulator front-end for multiple platforms.

Real8 Explorer is the comfort layer around the Real8 VM + Shell: a native host UI for windowing, menus, input, and tooling, so you can browse, launch, and debug carts with less friction.

Not affiliated with Lexaloffle Games, PICO-8, Nintendo, or RetroArch/Libretro.

Ask DeepWiki

Highlights (v1.1.0)

  • Publishing workflow: GUI exporters for standalone homebrew on GBA (.gba), 3DS (.3dsx/.cia), and Switch (.nro).
  • Real8 expandability: extended framebuffer modes, stereo depth pipeline, and motion sensors.
  • Performance and stability improvements across supported targets.
  • VM goal: PICO-8 compatibility by default, with optional enhancements when you want them.

Platforms

TargetHost / IntegrationDetails
WindowsSDL host + native menus/toolingWindows README
Nintendo Switchlibnx host integrationSwitch README
Nintendo 3DScitro2d / citro3d3DS README
Nintendo GBAdevkitARM / GBA SDKGBA README
LibretroLibretro API coreLibretro README

Features

Core

  • Cart loading from disk (.p8 / .png), drag-and-drop on desktop
  • Library browsing with local folders, genre grouping, and remote repositories
  • Save states
  • Custom wallpaper support (on/off)
  • Video options: fullscreen, stretch modes, interpolation, optional CRT scanlines
  • Audio: music and SFX toggles, queued-audio sync
  • Input: keyboard and controller support, HID remapping UI, per-player configs (up to 8)
  • Modding: boot games with mods created through the Windows version

Real8 expandability

  • Multiple framebuffer modes (fullscreen behavior depends on platform)
  • Stereo depth pipeline: stereo on 3DS or red/cyan on other platforms, per-sprite depth buckets
  • Motion sensors: accelerometer and gyroscope on 3DS and Switch
  • Demo: PICO EXTENDED

Framebuffer Modes

TargetModeHostScreenResolutionScaleV-MappingDisplay
00WindowsMain128×128x4normalWindow
10GBAMain128×128x1normalBorders
11GBAMain240×160x1normalFull Screen
203DSTop128×128x1normalBorders
213DSTop128×128x2specialLeft/Right Borders
223DSTop200×120x2normalFull Screen
233DSTop400×240x1normalFull Screen
203DSBottom128×128x1normalBorders
213DSBottom128×128x2specialLeft/Right Borders
223DSBottom160×120x2normalFull Screen
233DSBottom320×240x1normalFull Screen
30SwitchMain128×128x1normalBorders
31SwitchMain256×144x5normalFull Screen
32SwitchMain640×640x5normalBorders
33SwitchMain1280×720x5normalFull Screen

By default, the PICO-8 128x128 resolution applies unless you overide it:

First you target a platform e.g. poke(0x5f85,2) for 3DS, and second you set a platform resolution e.g. poke(0x5fe1,3) for 400x240.

Publishing workflow

Publish your PICO-8 cart as a standalone homebrew game using the GUI exporters:

  • Pico2GBA: publish a .gba file (optional 240x160 native resolution)
  • PicoTo3DS: publish .3dsx or .cia (optional stereo depth, gyro, and 320x240 native resolution)
  • Pico2Switch: publish a .nro file (optional gyro and 1280z720 native resolution)

Developer and power-user tools

  • Debug console: logging, pause/resume, step, breakpoints, memory tools
  • Real-time modding: live variable editing, favorites, command prompt
  • Live LUA injection: PEEK/POKE with console feedback
  • Export tools: GFX, MAP, and music tracks to a chosen folder
  • Crash handling (Windows): exception logging to logs.txt + a Windows dialog

Supported cart formats

FormatNotes
.p8Text cart source
.pngImage/cart container

Usage

Load a cart (Windows)

  • File -> Open and select a cart
  • Or drag a .p8 / .png file onto the window

Load a cart (Switch)

  • Local Games: place games in the Switch/Real8/ folder
  • Local Repo JSON: place gameslist.json in Switch/Real8/Config
  • Remote Games: point to a remote JSON in gamesrepo.txt

Save / load state

  • Windows: use the menu or the Shell menu
  • Switch: use the Shell menu
  • RetroArch: use the default RetroArch save system

Compatibility and known issues

  • Supports about 80-90% of PICO-8 games
  • Switch builds target FW 21.1.0 | AMS 1.10.1
  • 3DS is optimized, but some carts run slower
  • Sound engine in some games may not emulate correctly
  • Save state reliability varies by game (some carts may load corrupted state)
  • Compatibility is good, but difficult titles (Poom, R-Type, etc.) still need work

GBA implementation

The GBA target packages a single .p8.png cart into a standalone GBA ROM and boots it directly (no shell). It renders a 128x128 framebuffer centered in Mode 4 and leans on IWRAM/EWRAM optimizations to hit speed. This implementation is optimized to run on real GBA hardware. See GBA README for build steps, memory layout, and tuning tips.

Screenshots

Real8 on SwitchReal8 on 3DS
Real8 on GBAWindows Shell
Windows Debug Console

Toolchains

Windows (SDL)

  • Toolchain: MinGW
  • Dependencies: SDL2

Nintendo Switch (libnx)

  • Toolchain: devkitPro + libnx 4.10.0
  • Works with FW 21.1.0 | AMS 1.10.1

Nintendo 3DS (citro2d/citro3d)

  • devkitPro + 3ds-dev + 3dstools
  • 3dstool (for packing assets)
  • Curl (for online fetching)

Nintendo GBA (devkitARM / GBA SDK)

  • devkitPro / devkitARM + GBA SDK
  • Pico2GBA GUI packer/converter

Libretro

  • Libretro toolchain / RetroArch environment

Contributing

When reporting bugs, please include:

  • Target (Windows / Switch / 3DS / GBA / Libretro)
  • Cart format (.p8 / .png) and a repro case
  • Logs (for example, logs.txt on Windows) if available

License

This project is licensed under GPL-3.0 (see LICENSE).

Real8 started as a backronym ("Real-Time Emulation Analog Layer"), but it stuck.

Contributors

natureglass

59 commits

natureglass/real8-explorer

A PICO-8 Explorer & Emulator for multiple platforms for real hardware

9

stars

59

commits

C++

primary language

Feb 1, 2026

updated

3ds-emulator
gba-emulator
hardware-emulation
libretro-core
pico-8
psp-emulator
switch-emulator

README

Real8 Explorer

A PICO-8 explorer and emulator front-end for multiple platforms.

Real8 Explorer is the comfort layer around the Real8 VM + Shell: a native host UI for windowing, menus, input, and tooling, so you can browse, launch, and debug carts with less friction.

Not affiliated with Lexaloffle Games, PICO-8, Nintendo, or RetroArch/Libretro.

Ask DeepWiki

Highlights (v1.1.0)

  • Publishing workflow: GUI exporters for standalone homebrew on GBA (.gba), 3DS (.3dsx/.cia), and Switch (.nro).
  • Real8 expandability: extended framebuffer modes, stereo depth pipeline, and motion sensors.
  • Performance and stability improvements across supported targets.
  • VM goal: PICO-8 compatibility by default, with optional enhancements when you want them.

Platforms

TargetHost / IntegrationDetails
WindowsSDL host + native menus/toolingWindows README
Nintendo Switchlibnx host integrationSwitch README
Nintendo 3DScitro2d / citro3d3DS README
Nintendo GBAdevkitARM / GBA SDKGBA README
LibretroLibretro API coreLibretro README

Features

Core

  • Cart loading from disk (.p8 / .png), drag-and-drop on desktop
  • Library browsing with local folders, genre grouping, and remote repositories
  • Save states
  • Custom wallpaper support (on/off)
  • Video options: fullscreen, stretch modes, interpolation, optional CRT scanlines
  • Audio: music and SFX toggles, queued-audio sync
  • Input: keyboard and controller support, HID remapping UI, per-player configs (up to 8)
  • Modding: boot games with mods created through the Windows version

Real8 expandability

  • Multiple framebuffer modes (fullscreen behavior depends on platform)
  • Stereo depth pipeline: stereo on 3DS or red/cyan on other platforms, per-sprite depth buckets
  • Motion sensors: accelerometer and gyroscope on 3DS and Switch
  • Demo: PICO EXTENDED

Framebuffer Modes

TargetModeHostScreenResolutionScaleV-MappingDisplay
00WindowsMain128×128x4normalWindow
10GBAMain128×128x1normalBorders
11GBAMain240×160x1normalFull Screen
203DSTop128×128x1normalBorders
213DSTop128×128x2specialLeft/Right Borders
223DSTop200×120x2normalFull Screen
233DSTop400×240x1normalFull Screen
203DSBottom128×128x1normalBorders
213DSBottom128×128x2specialLeft/Right Borders
223DSBottom160×120x2normalFull Screen
233DSBottom320×240x1normalFull Screen
30SwitchMain128×128x1normalBorders
31SwitchMain256×144x5normalFull Screen
32SwitchMain640×640x5normalBorders
33SwitchMain1280×720x5normalFull Screen

By default, the PICO-8 128x128 resolution applies unless you overide it:

First you target a platform e.g. poke(0x5f85,2) for 3DS, and second you set a platform resolution e.g. poke(0x5fe1,3) for 400x240.

Publishing workflow

Publish your PICO-8 cart as a standalone homebrew game using the GUI exporters:

  • Pico2GBA: publish a .gba file (optional 240x160 native resolution)
  • PicoTo3DS: publish .3dsx or .cia (optional stereo depth, gyro, and 320x240 native resolution)
  • Pico2Switch: publish a .nro file (optional gyro and 1280z720 native resolution)

Developer and power-user tools

  • Debug console: logging, pause/resume, step, breakpoints, memory tools
  • Real-time modding: live variable editing, favorites, command prompt
  • Live LUA injection: PEEK/POKE with console feedback
  • Export tools: GFX, MAP, and music tracks to a chosen folder
  • Crash handling (Windows): exception logging to logs.txt + a Windows dialog

Supported cart formats

FormatNotes
.p8Text cart source
.pngImage/cart container

Usage

Load a cart (Windows)

  • File -> Open and select a cart
  • Or drag a .p8 / .png file onto the window

Load a cart (Switch)

  • Local Games: place games in the Switch/Real8/ folder
  • Local Repo JSON: place gameslist.json in Switch/Real8/Config
  • Remote Games: point to a remote JSON in gamesrepo.txt

Save / load state

  • Windows: use the menu or the Shell menu
  • Switch: use the Shell menu
  • RetroArch: use the default RetroArch save system

Compatibility and known issues

  • Supports about 80-90% of PICO-8 games
  • Switch builds target FW 21.1.0 | AMS 1.10.1
  • 3DS is optimized, but some carts run slower
  • Sound engine in some games may not emulate correctly
  • Save state reliability varies by game (some carts may load corrupted state)
  • Compatibility is good, but difficult titles (Poom, R-Type, etc.) still need work

GBA implementation

The GBA target packages a single .p8.png cart into a standalone GBA ROM and boots it directly (no shell). It renders a 128x128 framebuffer centered in Mode 4 and leans on IWRAM/EWRAM optimizations to hit speed. This implementation is optimized to run on real GBA hardware. See GBA README for build steps, memory layout, and tuning tips.

Screenshots

Real8 on SwitchReal8 on 3DS
Real8 on GBAWindows Shell
Windows Debug Console

Toolchains

Windows (SDL)

  • Toolchain: MinGW
  • Dependencies: SDL2

Nintendo Switch (libnx)

  • Toolchain: devkitPro + libnx 4.10.0
  • Works with FW 21.1.0 | AMS 1.10.1

Nintendo 3DS (citro2d/citro3d)

  • devkitPro + 3ds-dev + 3dstools
  • 3dstool (for packing assets)
  • Curl (for online fetching)

Nintendo GBA (devkitARM / GBA SDK)

  • devkitPro / devkitARM + GBA SDK
  • Pico2GBA GUI packer/converter

Libretro

  • Libretro toolchain / RetroArch environment

Contributing

When reporting bugs, please include:

  • Target (Windows / Switch / 3DS / GBA / Libretro)
  • Cart format (.p8 / .png) and a repro case
  • Logs (for example, logs.txt on Windows) if available

License

This project is licensed under GPL-3.0 (see LICENSE).

Real8 started as a backronym ("Real-Time Emulation Analog Layer"), but it stuck.

See what people are saying

Contributors

natureglass

59 commits

Languages

C++

83.1%

C

14.7%

Makefile

1.8%