

Game console
...
- Size
- 176.8 × 101 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 36
- Nets
- 50
- Pads
- 177
- Tracks, vias
- 823, 151
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 22 Oct 2026
- Updated
- 5 Nov 2026
Overview
Game console is an open-source printed circuit board by Siddak-Puri, from the Siddak-Puri/Arcadia repository on GitHub. It is a 2-layer board of 176.8 × 101 mm with 36 parts on 50 nets, routed with 823 tracks and 151 vias.
It is built around the MCP3008-I/P, PN2222A and RKJXV1224005. Its parts include 12 switches, 4 connectors, 3 capacitors, 3 resistors and 3 diodes. It belongs with the retro computing and games boards and the RP2040 boards of this library.
Main components
3MCP3008-I/P
PDIP-16-40℃~+85℃ 1.35MHz~3.6MHz 10 1LSB 2.7V~5.5V 200kHz 5nA 61dB 8 Multiplexers SAR SPI Yes PDIP-16 Analog to Digital Converters (ADC) ROHSMicrochip TechnologyAnalog To Digital Converters (ADC)PN2222A
TO-92-3-55℃~+150℃ 1 NPN 1A 300MHz 300mV 40V 625mW NPN TO-92-3 Bipolar (BJT) ROHSNTE ElectronicsBipolar (BJT)RKJXV1224005
插件,13x13mm插件,13x13mm Multi-Directional Switches ROHSALPSALPINEMulti-Directional Switches
README
README.mdArcadia
Arcadia is an emulation console built on an old laptop’s motherboard that runs games from Retroarch's cores. The custom controller connects to the mother board using a wired Raspberry Pi Pico based controller made on an XBOX controller layout. The end goal of Arcadia is to make games of various retro consoles playable at a single machine using any controller.
It supports the following consoles:-
- SNES
- NES
- N64
- GBA
- NDS
- WII
- Gamecube
- CPS3
- Dreamcast
- 32X
- Genesis
- Megadrive
- Saturn
- PS
- PSP
- PS2
UI images
Title Screen(Animations)
https://github.com/user-attachments/assets/efa5a282-93ec-4039-b4d3-f5487ecb250c
Loading Screen
Main Screen (designed on figma)
Console Design(with storage compartment)
Controller
Controller Images
Controller Cad(1st week)
Controller Cad(2nd week)
Controller Cad(3rdweek)
[Image blocked: Uploading image.png…]
pcb mount (to clean up after i learn form modelling)
Controller Description
- The controller consists of two alps alpine joysticks(ALPSALPINE RKJXV1224005) with digital tactile switches for menu, view, home, reset etc. It also contains 4 right angled trigger buttons (XKB Connection TC-1102N-C-DL-B) for LB, LT, RB, RT. + 8 more tactile buttons for X, Y, B, A and D-Pad.
- The controller runs with a raspberry pi pico which is mounted on the left side of the controller pcb
Hardware Requirements
- Raspberry Pi Pico (RP2040)
- 1x Controller main PCB + 2x shoulder PCBs
- 2x Alps RKJXV1224005 analog joysticks
- 1x MCP3008-I/P ADC (DIP-16) + DIP-16 socket
- 12x 6x6 mm tactile switches (D-pad, ABXY, Menu, View, Home, Reset)
- 4x TC-1102N-C-DL-B right-angle tactile switches (LB, LT, RB, RT)
- 2x 100 nF ceramic capacitors
- 4x JST-XH 3-pin headers (B3B-XH-A) + 2x JST-XH 3-pin cables (straight-through)
- 4x M3 screws (main board) + 2x M2 screws (shoulder boards)
- Micro-USB cable
- 3D printed shell and button caps (PLA/PETG recommended)
PCB Architecture and design plus VERSION 1 of Controller design:
Schematic diagram of main PCB
PCB diagram of main PCB
Most beautiful creation by me :)
Main PCB in 3D viewer
Schematic diagram of Shoulder Board(LT,LB,RT,RB)
PCB diagram of shoulder PCB
Shoulder PCB in 3D Viewer
Reference for future controller design
Week 2 progress on controller:
In week 2, the bumper buttons rt,rb,lt,lb were changed to be analog, two dual shock motors to get haptic feedback and make the user feel emerged in the game (connectors were used for dual shock motors), then the pcb board was made by researching different fusion 360 tool and then mounting and routing components on the new board design followed by ground pour and then pcb mount was made to hold pcb within. Also form modelling was learnt
What to expect from the next week:
- Controller FULLY done with form tool (to make it more like ergonomic modern day controllers).
- Firmware written from scratch.
How do these boards connect/will connect to the 3d model:
There will be two copies used of shoulder board one for LB and LT and another for RB and RT and they will be tilted inwards at an angle of 45 degree and will be attached to the main PCB.
Pin Map
Buttons
| Button | Pico GPIO |
|---|---|
| A | GPIO10 |
| B | GPIO9 |
| X | GPIO8 |
| Y | GPIO7 |
| LB | GPIO6 (via J1) |
| LT | GPIO5 (via J1) |
| RB | GPIO4 (via J2) |
| RT | GPIO3 (via J2) |
| View | GPIO0 |
| Home | GPIO1 |
| Menu | GPIO2 |
| D-pad Up | GPIO14 |
| D-pad Down | GPIO13 |
| D-pad Left | GPIO12 |
| D-pad Right | GPIO11 |
| L3 (left stick click) | GPIO26 |
| R3 (right stick click) | GPIO27 |
| Reset | RUN (pin 30) |
All buttons are active-low (internal pull-ups, other side to GND).
Joysticks (via MCP3008)
| Axis | MCP3008 channel |
|---|---|
| Left stick X | CH0 |
| Left stick Y | CH1 |
| Right stick X | CH2 |
| Right stick Y | CH3 |
MCP3008 SPI
| MCP3008 pin | Pico GPIO |
|---|---|
| DOUT (12) | GPIO16 (SPI0 RX) |
| CS (10) | GPIO17 |
| CLK (13) | GPIO18 (SPI0 SCK) |
| DIN (11) | GPIO19 (SPI0 TX) |
Shoulder board connectors (JST-XH)
| Connector | Pin 1 | Pin 2 | Pin 3 |
|---|---|---|---|
| J1 (left) | GND | LB (GPIO6) | LT (GPIO5) |
| J2 (right) | GND | RB (GPIO4) | RT (GPIO3) |
File Structure
Arcadia/
├── Cad(stil under development)/ # Fusion 360 model, assembly to be finished by next week.
├── Kicad/ # KiCad project files with their step models.
├── firmware/ # Control software for the Raspberry Pi Pico controller written in arduino IDE.
├── Gerber files # Gerber files for PCB manufacturing.
└── README.md # Project documentation.
Backend
The whole backend of our project runs on python and javascript.
Explanation File by File
- main.py, loading.js :-
- It is the main core of emulator it will act as the 'OS' , acting as a bridge between the games and the frontend.
- It uses pywebview to convert the web ui into a desktop app which is the set as the default screen of the linux system much like the desktop of a windows or mac.
- Subprocess is used for gathering environmental variables, reboot and shutdown.
- It also scans the rom directory for game files, LauncherAPI keeps scanning for rom files.
- The games run straight from the app not any external launcher app.
- index.html :-
- The main UI file of the whole project rendered by the pywebview.
- Bridges the user events and display all the data to the user.
- loading.css , main.css , style.css :-
- for styling.
- main.js :-
- smooth scroll, page transitions(glitch) and event listeners for navigation.
- keyboard.js :-
- for controlling the ui using keyboard.
- gamepad.js :-
- for controlling the ui using gamepad.
- Learning Part(DIR) :-
- files we made while learning each of the features for this project.
Credits:
Made by thenobrainers -- Rishu, Araadh and Siddak with love ❤️.
Parts
36| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 1000 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R3 |
| 2 | 100nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C1, C2 |
| 2 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D3 |
| 2 | Conn_01x02 | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J3, J4 |
| 2 | Conn_01x04 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J1, J2 |
| 2 | PN2222A | Package_TO_SOT_THT:TO-92_Inline | Q1, Q2 |
| 2 | RKJXV1224005 | easyeda2kicad:SW-TH_RKJXV1224005 | Left1, Right1 |
| 1 | 330 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R2 |
| 1 | 47 µF | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C3 |
| 1 | A | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW6 |
| 1 | B | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW10 |
| 1 | D Pad Left | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW5 |
| 1 | D Pad bottom | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW7 |
| 1 | D Pad right | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW4 |
| 1 | D Pad top | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW3 |
| 1 | Home | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW9 |
| 1 | LED | LED_THT:LED_D3.0mm | D2 |
| 1 | MCP3008 | Package_DIP:DIP-16_W7.62mm | U1 |
| 1 | Menu | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW11 |
| 1 | RaspberryPi_Pico | Module:RaspberryPi_Pico_Common_THT | A1 |
| 1 | Reset | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW8 |
| 1 | View | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW14 |
| 1 | X | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW12 |
| 1 | Y | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW13 |
The 31 most common of 36 parts.
More from Siddak-Puri/Arcadia
1- 2 layers15.3 × 45 mm

Similar boards
- 2 layers100 × 100 mm

UINIO Keyboard
uinika/UINIO-Keyboard
a Multi-Functional input module, includes Keyboard, Rocker, Rotary Encoder.
112 parts2 - 2 layers100 × 112.5 mm

Macropad
gustavorubim/field13-macropad
FIELD 13: DIY programmable macropad with joystick, rotary encoder, editable CAD, electronics, firmware, and visual build documentation.
45 parts - 2 layers118 × 59 mm

- 2 layers30 × 36 mm

TransDIP alps-27800
iwax2/kicad-TransDIP_alps-27800
Translate 2-axis Joystick ALPS RKJXV1224005 as DIP package in 2-axis Joystick #27800
5 parts - 2 layers172.6 × 70.1 mm

Joy Controller V2
Merlin2LmmL/Joy-Controller
A custom made Stream deck Like Handheld Controller that can switch modes and supports quick actions and game movement. PCB and 3d Printed Parts custom made.
78 partsMIT - 2 layers100 × 71 mm

3mode controller
nguterresn/3mode-controller
This versatile hardware controller is designed to seamlessly integrate with a variety of wireless communication protocols, making it an ideal choice for hobbyist projects, DIY electronics, and prototyping.
37 parts - 4 layers114 × 95.1 mm

- 2 layers89.6 × 35.3 mm

Questions
How big is the Game console PCB?
It measures 176.8 × 101 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Game console use?
36 parts, built around the MCP3008-I/P, PN2222A and RKJXV1224005. 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 Game console KiCad files?
From the Siddak-Puri/Arcadia repository on GitHub, at the commit this page was made from: the board is Hardware/KiCad/controller/Game console.kicad_pcb and its schematic Hardware/KiCad/controller/Game console.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Game console design in my own project?
Its repository states no licence, so its author keeps all rights: ask Siddak-Puri before reusing the design.