

Fwkes
NES emulator for a 32-bit ARM-based RP2350 microcontroller.
- Size
- 133.3 × 83.3 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 50
- Nets
- 73
- Pads
- 212
- Tracks, vias
- 383, 19
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 4 May 2026
- Updated
- 17 Jun 2026
Overview
Fwkes is an open-source printed circuit board by Inu-Labs, from the Inu-Labs/fwkes repository on GitHub, published under the GPL-2.0 licence. It is a 4-layer board of 133.3 × 83.3 mm with 50 parts on 73 nets, routed with 383 tracks and 19 vias.
It is built around the LM358 and LM386. Its parts include 22 resistors, 13 capacitors, 6 connectors, 3 ICs and 3 diodes. It belongs with the retro computing and games boards and the RP2040 boards of this library.
Main components
2README
README.md
FWKES1 is an open-source NES emulator targeted at 32-bit microcontroller RP2350. It aims to be precise and cycle-accurate, while still maintaining stable 60 FPS and minimal latency.
TODO: add demonstration (video, screenshots)
Features:
- SD card for storing games and files.
- HDMI for video output.
- 3.5mm audio jack for audio output.
- Supports raster effects (mid-scanline writes).
- Emulates NTSC region, i.e. original NES and Famicom (although support for PAL is planned).
- Implements all instruction set of Ricoh 2A03 (MOS 6502), including unofficial instructions and precise timing.
- Implements all features of PPU (sprite overflow, emphasis bits, ...) and APU.
- Supports NROM, MMC1, UNROM and MMC3 mappers.
- Supports RP2350-based boards Raspberry Pi Pico 2, Pimoroni Pico Plus 2 and any compatible board.
- FWKES comes with BIOS that delivers user-friendly interface for loading programs and configuration. BIOS can be freely reprogrammed, i.e. can replace it with their own program.
- To allow emulated programs make use of peripherals like SD card, or configure emulator's behavior, there is a bridge (hypercall interface) called FWX.
Building
Although FWKES is aimed at RP2350-based boards, there are development builds for desktop. Desktop uses SDL3 to handle video, audio and inputs, and it's intended for superficial testing of non-RP2350-specific aspects.
There is also an ongoing development of debugger, which allows complex testing not only of FWKES
itself, but also emulated programs and games. It's code can be found in the debugger branch.
Dependencies
For RP2350 based, you'll need ARM GCC compiler toolchain with C11 support and extracted Pico SDK.
For desktop and debugger versions, only SDL3 is required to be installed and usable by CMake. Both GCC and Clang are usable.
For general building, you'll also need CMake and Git.
Many of listed tools are available in distribution's repositories on Linux.
Cloning
Since most dependencies are handled using Git submodules, you need to use git clone --recurse-submodules https://github.com/Inu-Labs/fwkes.git. Alternatively, if you already cloned and submodules are not
initialized, you need to run git submodule update --init --recursive --progress.
Raspberry Pi Pico 2
-DBUILD_RP2350=ON must be specified when compiling for official Pico 2:
mkdir build
cd build
cmake -DPICO_SDK_PATH=path_to_extracted_pico-sdk -DCMAKE_BUILD_TYPE=Release -GNinja -DBUILD_RP2350=ON ..Pimoroni Pico Plus 2
Both -DBUILD_RP2350=ON and -DBUILD_PIMORONI2=ON must be specified when compiling for Pimoroni 2:
mkdir build
cd build
cmake -DPICO_SDK_PATH=path_to_extracted_pico-sdk -DCMAKE_BUILD_TYPE=Release -GNinja -DBUILD_RP2350=ON -DBUILD_PIMORONI2=ON ..Desktop
Pass -DBUILD_DESKTOP=ON:
mkdir build
cd build
cmake -GNinja -DBUILD_DESKTOP=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ..Debugger
Pass both -DBUILD_DESKTOP=ON and -DBUILD_DEBUGGER=ON:
mkdir build
cd build
cmake -GNinja -DBUILD_DESKTOP=ON -DBUILD_DEBUGGER=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ..Tests (development only)
To build tests, pass -DBUILD_TESTS=ON and -DBUILD_VISUAL_TESTS=ON:
mkdir build
cd build
cmake -GNinja -DBUILD_DESKTOP=ON -DBUILD_TESTS=ON -DBUILD_VISUAL_TESTS=ON ..-DBUILD_VISUAL_TESTS=ON is required for tests that depend on SDL3.
Flashing firmware
To flash compiled firmware to RP2350 board, you can either:
- Copy
build/src/rp2350/fwkes-rp2350.uf2to the board. Note that the board must be booted in the BOOTSEL mode to perform this (otherwise it will not even appear in your file manager). - Use picotool:
picotool load build/src/rp2350/fwkes-rp2350.uf2 -f && picotool reboot
A CMake rule for this is planned in the future.
Electronics, case
TODO
License & Acknowledgement
Code of FWKES is licensed under GNU GPL v2.0, while hardware (schematics, PCB designs and 3D models) is licensed under CERN Open Hardware Licence Version 2 (Strongly Reciprocal). This project is a collaborative work of inunix3 and kubaa-ma.
Software side of FWKES makes use of the following libraries:
- pico-sdk - not too low-level interaction with RP2350 peripherals.
- PicoDVI - generation of bitbanged DVI signal.
- LwMEM - allocator interface for embedded systems (used for PSRAM).
- FatFS - FAT filesystem implementation for SD card.
- Unity - unit-testing framework (used for CPU tests).
- ImGui and imgui_club - used for debugger UI.
- ImGuiFileDialog - used for open/save file dialog in the debugger.
Footnotes
-
FWKES is pronounced as fukes (/fʌkɛs/). In old Bible printings, you can find that sometimes letter U is written as V. So we took it further and doubled it! Although it's not read as double U... ↩
Parts
50| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 220 | Resistor_SMD:R_0603_1608Metric | R6, R7, R8, R9, R10, R11, R12, R13, R16, R18 |
| 7 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R2, R3, R4, R5, R15, R22 |
| 5 | 100n | Capacitor_SMD:C_0603_1608Metric | C3, C4, C5, C6, C7 |
| 3 | 100u | Capacitor_SMD:C_1210_3225Metric | C8, C10, C12 |
| 3 | 1k | Resistor_SMD:R_0603_1608Metric | R19, R20, R21 |
| 2 | 10u | Capacitor_SMD:C_0603_1608Metric | C9, C13 |
| 2 | 3k3 | Resistor_SMD:R_0603_1608Metric | R14, R17 |
| 2 | 4n7 | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | LED | LED_THT:LED_D3.0mm_Horizontal_O1.27mm_Z2.0mm | D2, D3 |
| 2 | Mini-DIN-5 | fwkes-footprints:MINI_DIN5_KMDGX_5S_BS | J2, J3 |
| 1 | 10k | Potentiometer_THT:Potentiometer_Bourns_3296Y_Vertical | RV1 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric | C11 |
| 1 | AudioJack3 | Connector_Audio:Jack_3.5mm_Lumberg_1503_03_Horizontal | J6 |
| 1 | Barrel_Jack | Connector_BarrelJack:BarrelJack_Horizontal | J5 |
| 1 | D_Schottky | Diode_SMD:D_SOD-123 | D1 |
| 1 | HDMI_A | Connector_Video:HDMI_A_Amphenol_10029449-x01xLF_Horizontal | J4 |
| 1 | LM358 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U2 |
| 1 | LM386 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U3 |
| 1 | Pico | fwkes-footprints:pico2_socket | U1 |
| 1 | SD_Card_Device | Connector_Card:SD_Hirose_DM1AA_SF_PEJ82 | J1 |
| 1 | SW_DPST_x2 | Button_Switch_THT:SW_NKK_BB15AH | SW1 |
| 1 | SW_Push | Button_Switch_THT:SW_NKK_BB15AH | SW2 |
More from Inu-Labs/fwkes
1- 2 layers161 × 76.5 mm

Similar boards
- 2 layers152 × 88 mm

RFBitBangSMT
profdc9/RFBitBanger
A QRP digital transceiver created from readily available parts for off-the-grid maintenance
271 parts222 - 2 layers100 × 100 mm

MCTheremin
profdc9/MCTheremin
Microcontroller based theremin using the STM32F103C8T6 bluepill board
99 parts11 - 2 layers206.2 × 138.1 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers90 × 60 mm

- 2 layers99.9 × 93.6 mm

- 2 layers63.9 × 89.2 mm

Ab rec
LJWsao/sinitsa
KiCAD files for the all band receiver. This can pick up strong local sources of RF such as AM and FM radio stations.
47 parts1
Questions
How big is the Fwkes PCB?
It measures 133.3 × 83.3 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Fwkes use?
50 parts, built around the LM358 and LM386. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Fwkes KiCad files?
From the Inu-Labs/fwkes repository on GitHub, at the commit this page was made from: the board is docs/schematic/fwkes.kicad_pcb and its schematic docs/schematic/KiCad-RP-Pico-main/Test/Test.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Fwkes design in my own project?
Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).