Skip to the content
2 layers176.8 × 101 mmGame console, the printed circuit board in 3D

...

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

3

README

README.md
arcadia banner Arcadia

Arcadia

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

Arcadia

Main Screen (designed on figma) Arcadia1 Arcadia2 Arcadia3

Console Design(with storage compartment)

image

Controller

Controller Images

Controller Cad(1st week) image

Controller Cad(2nd week) image

Controller Cad(3rdweek) image [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 image

PCB diagram of main PCB image

Most beautiful creation by me :)

Main PCB in 3D viewer image image

Schematic diagram of Shoulder Board(LT,LB,RT,RB) image

PCB diagram of shoulder PCB image

Shoulder PCB in 3D Viewer image image

Reference for future controller design image

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

ButtonPico GPIO
AGPIO10
BGPIO9
XGPIO8
YGPIO7
LBGPIO6 (via J1)
LTGPIO5 (via J1)
RBGPIO4 (via J2)
RTGPIO3 (via J2)
ViewGPIO0
HomeGPIO1
MenuGPIO2
D-pad UpGPIO14
D-pad DownGPIO13
D-pad LeftGPIO12
D-pad RightGPIO11
L3 (left stick click)GPIO26
R3 (right stick click)GPIO27
ResetRUN (pin 30)

All buttons are active-low (internal pull-ups, other side to GND).

Joysticks (via MCP3008)

AxisMCP3008 channel
Left stick XCH0
Left stick YCH1
Right stick XCH2
Right stick YCH3

MCP3008 SPI

MCP3008 pinPico GPIO
DOUT (12)GPIO16 (SPI0 RX)
CS (10)GPIO17
CLK (13)GPIO18 (SPI0 SCK)
DIN (11)GPIO19 (SPI0 TX)

Shoulder board connectors (JST-XH)

ConnectorPin 1Pin 2Pin 3
J1 (left)GNDLB (GPIO6)LT (GPIO5)
J2 (right)GNDRB (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

  1. 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.
  1. 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.
  1. loading.css , main.css , style.css :-
  • for styling.
  1. main.js :-
  • smooth scroll, page transitions(glitch) and event listeners for navigation.
  1. keyboard.js :-
  • for controlling the ui using keyboard.
  1. gamepad.js :-
  • for controlling the ui using gamepad.
  1. 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
QtyValueFootprintReferences
21000Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R3
2100nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC1, C2
21N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D3
2Conn_01x02Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ3, J4
2Conn_01x04Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ1, J2
2PN2222APackage_TO_SOT_THT:TO-92_InlineQ1, Q2
2RKJXV1224005easyeda2kicad:SW-TH_RKJXV1224005Left1, Right1
1330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2
147 µFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC3
1AButton_Switch_THT:SW_PUSH_6mm_H5mmSW6
1BButton_Switch_THT:SW_PUSH_6mm_H5mmSW10
1D Pad LeftButton_Switch_THT:SW_PUSH_6mm_H5mmSW5
1D Pad bottomButton_Switch_THT:SW_PUSH_6mm_H5mmSW7
1D Pad rightButton_Switch_THT:SW_PUSH_6mm_H5mmSW4
1D Pad topButton_Switch_THT:SW_PUSH_6mm_H5mmSW3
1HomeButton_Switch_THT:SW_PUSH_6mm_H5mmSW9
1LEDLED_THT:LED_D3.0mmD2
1MCP3008Package_DIP:DIP-16_W7.62mmU1
1MenuButton_Switch_THT:SW_PUSH_6mm_H5mmSW11
1RaspberryPi_PicoModule:RaspberryPi_Pico_Common_THTA1
1ResetButton_Switch_THT:SW_PUSH_6mm_H5mmSW8
1ViewButton_Switch_THT:SW_PUSH_6mm_H5mmSW14
1XButton_Switch_THT:SW_PUSH_6mm_H5mmSW12
1YButton_Switch_THT:SW_PUSH_6mm_H5mmSW13

The 31 most common of 36 parts.

More from Siddak-Puri/Arcadia

1

Similar boards

  • 2 layers100 × 100 mmUINIO Keyboard, the printed circuit board in 3D

    UINIO Keyboard

    uinika/UINIO-Keyboard

    a Multi-Functional input module, includes Keyboard, Rocker, Rotary Encoder.

    112 parts2
  • 2 layers100 × 112.5 mmMacropad, the printed circuit board in 3D

    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 mmStagController, the printed circuit board in 3D

    StagController

    HirtusHeterogomphus/StagController

    DIYゲームパッド「スタッグコントローラー」

    37 partsMIT
  • 2 layers30 × 36 mmTransDIP alps-27800, the printed circuit board in 3D

    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 mmJoy Controller V2, the printed circuit board in 3D

    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 mm3mode controller, the printed circuit board in 3D

    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 mmController, the printed circuit board in 3D

    Controller

    tguyenn/drone-swarm

    Personal Project

    113 parts
  • 2 layers89.6 × 35.3 mmButtons, the printed circuit board in 3D

    Buttons

    mincrmatt12/MSign

    internet-connected led sign control system

    16 parts11MIT

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.