From 818174d9ca4d965d02ebeae7f0aaf7cedc32417a Mon Sep 17 00:00:00 2001 From: rumbledethumps <16963588+rumbledethumps@users.noreply.github.com> Date: Sun, 13 Sep 2026 09:53:48 -0700 Subject: [PATCH] new RP6502 docs --- docs/development/licenses.md | 1 + docs/guides/core-list.md | 1 + docs/library/rp6502.md | 46 ++++++++++++++++++++++++++++++++++++ mkdocs.yml | 2 ++ 4 files changed, 50 insertions(+) create mode 100644 docs/library/rp6502.md diff --git a/docs/development/licenses.md b/docs/development/licenses.md index a503fdf8a3..8d2f7a48db 100644 --- a/docs/development/licenses.md +++ b/docs/development/licenses.md @@ -190,6 +190,7 @@ See below for a summary of the licenses behind RetroArch and its cores: | [PCSX ReARMed](../library/pcsx_rearmed.md) | [GPLv2](https://github.com/libretro/pcsx_rearmed/blob/master/COPYING) | | | PCSX ReARMed [Interpreter] | [GPLv2](https://github.com/libretro/pcsx_rearmed/blob/master/COPYING) | | | [PD777](../library/pd777.md) | [MIT](https://github.com/mittonk/PD777/blob/main/LICENSE) | | +| [Picocomputer 6502](../library/rp6502.md) | [BSD-3-Clause](https://github.com/picocomputer/rp6502/blob/main/LICENSE) | | | [PicoDrive](../library/picodrive.md) | [MAME (Non-commercial)](https://github.com/libretro/picodrive/blob/master/COPYING) | Non-commercial | | [PocketCDG](../library/pocketcdg.md) | [MIT](https://github.com/libretro/libretro-pocketcdg/blob/master/LICENSE) | | | [PokeMini](../library/pokemini.md) | [GPLv3](https://github.com/libretro/PokeMini/blob/master/LICENSE) | | diff --git a/docs/guides/core-list.md b/docs/guides/core-list.md index f990df4603..1d4e2ad030 100644 --- a/docs/guides/core-list.md +++ b/docs/guides/core-list.md @@ -167,6 +167,7 @@ | PCem | IBM PC | | | [PCSX ReARMed](https://docs.libretro.com/library/pcsx_rearmed/) | Sony PlayStation | | | [PD777](../library/pd777.md) | Epoch Cassette Vision | | +| [Picocomputer 6502](../library/rp6502.md) | Picocomputer 6502 | An open source 8-bit computer you can build | | PicoDrive | Sega MS/GG/MD/CD/32X | | | Play! | Sony PlayStation 2 | | | Pocket CDG | Karaoke player | A karaoke music player, ported to libretro | diff --git a/docs/library/rp6502.md b/docs/library/rp6502.md new file mode 100644 index 0000000000..a94e072cae --- /dev/null +++ b/docs/library/rp6502.md @@ -0,0 +1,46 @@ +# Picocomputer 6502 + +## Background + +The Picocomputer 6502 is a real 8-bit computer you can build yourself, from a WDC 65C02, a couple of Raspberry Pi Picos, and very little else. It has 64 KB of RAM and 64 KB of XRAM, no ROM, nothing reserved, and a 6502 that runs from 0.1 to 8.0 MHz cycle accurate. Video is three planes of tiles, bitmaps, and sprites in RGB555, programmable per scanline. Software is distributed as `.rp6502` ROM files. + +The primary documentation for the Picocomputer 6502 is at [https://picocomputer.github.io/](https://picocomputer.github.io/), which covers the machine down to the register, along with the SDK and the operating system. + +## Controllers + +The Picocomputer 6502 core supports the following device types in all four ports, the bolded device type is the default: + +- **Gamepad** - Joypad +- Gamepad (Analog) - Analog +- Lightgun - Lightgun - The Picocomputer's tablet. See [Mouse and tablet](#mouse-and-tablet). + +## Save states and netplay + +Save states are supported and are deterministic, so rewind, run-ahead, and netplay all work. + +## Quirks + +The Picocomputer is a gaming-centric computer, with keyboard, mouse, tablet, and gamepad support. libretro was built for consoles, with gamepads. What follows are limitations of libretro, not of the Picocomputer, and a core cannot work around them. Desktop users may prefer a [native emulator](https://picocomputer.github.io/emu.html) where one is available. + +### Keyboard + +The keyboard defaults to gamepad emulation. RetroArch binds your keys to a virtual RetroPad and to its own hotkeys, so typing does nothing useful until you enable Game Focus, which is the Scroll Lock key by default. + +There is no way for a core to tell libretro that it wants the keyboard to be a keyboard. The core cannot turn Game Focus on, and it cannot ask whether Game Focus is on. All it can do is put a message on screen the first time a program asks for the keyboard. + +You can change the default in **Settings > Input > Auto Enable 'Game Focus' Mode**. Setting it to **Detect** turns Game Focus on whenever this core is loaded, because the core always asks for keyboard input. That is usually what you want, but Game Focus also captures the mouse, which can cause some confusion. See below. + +See [RetroArch's direct keyboard input guidance](../guides/input-and-controls.md#cores-with-direct-keyboard-input) for more on Game Focus and frontend hotkeys. + +### Mouse and tablet + +The Picocomputer communicates the pointer shape in both directions. A program asks the host for an arrow, a crosshair, an I-beam, or no cursor at all, and the host tells the program whether it has a cursor to lend. libretro has no channel for any of this, so the core always reports that there is no host cursor and the program draws its own. + +With Game Focus off, RetroArch keeps its own cursor, and you may see two of them — the frontend's and the program's. With Game Focus on, RetroArch captures the mouse, and reaching the edges of the screen is difficult. + +The Picocomputer's tablet is an absolute pointing device, and libretro's absolute pointing device is a lightgun. Set a port's device type to **Lightgun** to use one. + +## External Links + +- [Official Picocomputer 6502 Documentation](https://picocomputer.github.io/) +- [Report Picocomputer 6502 Core Issues Here](https://github.com/picocomputer/rp6502/issues) diff --git a/mkdocs.yml b/mkdocs.yml index 88eb54ff15..d5ec1f8b68 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -246,6 +246,8 @@ nav: - 'Philips Emulation': - 'Magnavox - Odyssey2 / Philips Videopac+ (O2EM)': 'library/o2em.md' - 'Philips - P2000T (M2000)': 'library/m2000.md' + - 'Picocomputer Emulation': + - 'Rumbledethumps - Picocomputer 6502 (RP6502)': 'library/rp6502.md' - 'RISC-V Emulation': - 'RVVM - RISC-V Virtual Machine': 'library/rvvm.md' - 'SNK Emulation':