Skip to the content
PCBKitNew board
2 layers47.8 × 45.4 mmWheelOfJoy, the printed circuit board in 3D

4-player joystick adapter for the Commodore 16, 116 and Plus/4 with 2-button support

Size
47.8 × 45.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
47
Pads
171
Tracks, vias
520, 120
Pours
12
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
3 Dec 2022
Updated
17 Jan 2023

Overview

WheelOfJoy is an open-source printed circuit board by SukkoPera, from the SukkoPera/WheelOfJoyMini repository on GitHub. It is a 2-layer board of 47.8 × 45.4 mm with 26 parts on 47 nets, routed with 520 tracks and 120 vias.

It is built around the 74LS153DC. Its parts include 5 connectors, 4 capacitors and 3 ICs. It belongs with the retro computing and games and keyboards and input boards of this library.

Main components

1

README

README.md

WheelOfJoyMini

WheelOfJoyMini is an Open Hardware 4-player joystick adapter for the Commodore 16, 116 and Plus/4 with 2-button support.

Board

Summary

After I released WheelOfJoy, some people suggested that a 4-player adapter with support for 2 joystick buttons would probably be more useful, so here we go :).

Just like its bigger brother, the board plugs in the User Port, which means that in order to use it on a C16 or C116, you will need a User Port card.

Assembly

I recommend soldering all the resistor arrays first, then the chips and the capacitors, with the ports last.

The adapter can be connected to the computer through a cable with a User Port connector on one side and a male DB-15 on the other. I did this so that the adapter can be placed more freely on the table so that all players can reach it comfortably. The adapter-end of the cable can also be soldered directly to it, if you prefer. Pin names are noted on the board, but here's a handy table:

DB-15 Pin #SignalUser Port Pin #Notes
1+5V2
2P0B
3P1K
4P24
5P35
6/RESET3Not used by this board
7+9V10Not used by this board
8GND1, 12, A or N
9+5V2
10P46
11P57
12P6J
13P7F
14-9V11Not used by this board
15GND1, 12, A or N

This is exactly the same cable used by WheelOfJoy.

This and these will help you make a good-looking job with your cable.

I estimate all the components required to self-build this thing to cost < 10€, probably closer to 5€ if you get them from China.

Supported Games

Of course there isn't any software support for this at the moment. It's up to the developers to write party games for the C16/+4 for up to 6 players!

Programming

The board uses 3 dual 4-to-1 multiplexers, totalling to 6 multiplexers: one per direction plus one for every fire button. Channel selection happens in parallel on all multiplexers and is done with the 2 high bits of the User Port.

  1. Write a value N at the User Port register depending on the port you want to read. General formula for port P ∈ [1,4] is the following:

    N = ((P - 1) << 6) | 0x3F

    Or just pick your value from the following table:

    #BinaryHexDec
    100 1111113F63
    201 1111117F127
    310 111111BF191
    411 111111FF255
  2. Read the value of the User Port register, the lower 6 bits will report direction/button status:

    Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
    XXButton 2Button 1LeftRightDownUp

    Every bit will be 0 if the corresponding direction/button is pressed, 1 otherwise.

Compatibility

Any Atari-compliant joystick or joypad should work with this board. Button 2 is expected to be wired to pin 9 and to be active-low as all the other buttons. This is the most common setup, used by all 2-button joysticks and adapters designed for the Amiga, including my PSX adapter and the my variant of the Unijoysticle2.

Sega controllers also use the same configuration: you can use Master System and Mega Drive/Genesis - buttons B and C - controllers straight away as the adapter also provides power to pin 5.

The latter also means that you MUST NOT use the adapter with anything that can pull pin 5 straight to ground, such as 3-button Amiga mice (what would be the purpose of that anyway?).

Note that the few 2-button games for the C64 typically use inverted logic for button 2 (don't ask me why but this dates back to the C64 GS, I think), even if this was handled in SW, I cannot guarantee that any joysticks made this way will work correctly with the adapter.

Also keep in mind that the User Port is only guaranteed to provide 100 mA on the +5V pin, even though I don't think there's anything actually limiting that.

Releases

If you want to get this board produced, you are recommended to get the latest release rather than the current git version, as the latter might be under development and is not guaranteed to be working.

Every release is accompanied by its Bill Of Materials (BOM) file and any relevant notes about it, which you are recommended to read carefully.

License

The WheelOfJoyMini documentation, including the design itself, is copyright © SukkoPera 2019-2021 and is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

This documentation is distributed as is and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES whatsoever with respect to its functionality, operability or use, including, without limitation, any implied warranties OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE or infringement. We expressly disclaim any liability whatsoever for any direct, indirect, consequential, incidental or special damages, including, without limitation, lost revenues, lost profits, losses resulting from business interruption or loss of data, regardless of the form of action or legal theory under which the liability may be asserted, even if advised of the possibility or likelihood of such damages.

Support the Project

If you want to get some boards manufactured, you can get them from PCBWay through this link:

PCB from PCBWay

You get my gratitude and cheap, professionally-made and good quality PCBs, I get some credit that will help with this and other projects. You won't even have to worry about the various PCB options, it's all pre-configured for you!

Also, if you still have to register, you can use this link to get some bonus initial credit (and yield me some more).

You can also buy me a coffee if you want:

Buy Me a Coffee at ko-fi.com

Credits

Parts

26
QtyValueFootprintReferences
64.7kResistor_SMD:R_Array_Convex_4x0603RN1, RN2, RN3, RN4, RN5, RN6
3100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2, C3
374LS153Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU1, U2, U3
2100Resistor_SMD:R_Array_Convex_4x0603RN7, RN8
1100uCapacitor_Tantalum_SMD:CP_EIA-7343-30_AVX-N_Pad2.25x2.55mm_HandSolderC4
1DB15FConnector_Dsub:DSUB-15_Female_EdgeMount_P2.77mmCN5
1JOY1Connector_Dsub:DSUB-9_Male_EdgeMount_P2.77mmCN1
1JOY2Connector_Dsub:DSUB-9_Male_EdgeMount_P2.77mmCN2
1JOY3Connector_Dsub:DSUB-9_Male_EdgeMount_P2.77mmCN3
1JOY4Connector_Dsub:DSUB-9_Male_EdgeMount_P2.77mmCN4
1LOGOWheelOfJoy:logoV0
1OSHW_LOGOWheelOfJoy:cc_by_nc_saV1
1PORT1_NOWheelOfJoy:port1V2
1PORT2_NOWheelOfJoy:port2V3
1PORT3_NOWheelOfJoy:port3V4
1PORT4_NOWheelOfJoy:port4V5

Questions

How big is the WheelOfJoy PCB?

It measures 47.8 × 45.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the WheelOfJoy use?

26 parts, built around the 74LS153DC. 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 WheelOfJoy KiCad files?

From the SukkoPera/WheelOfJoyMini repository on GitHub, at the commit this page was made from: the board is WheelOfJoy.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the WheelOfJoy design in my own project?

Its repository states no licence, so its author keeps all rights: ask SukkoPera before reusing the design.

Similar boards

  • 2 layers407 × 184 mmTRS-80-Model I G E1, the printed circuit board in 3D

    TRS-80-Model I G E1

    RetroStack/TRS-80-Model-I-G-E1

    Hardware Replica of the TRS-80 Model I Revision G

    230 parts57MIT
  • 2 layers131.1 × 108 mmISA EGA CHIPS, the printed circuit board in 3D

    ISA EGA CHIPS

    hkzlab/ISA_EGA_CHIPS

    This board is and EGA clone based on a reversed PA-WTEGA card, based on the chipset by CHIPS (P82C435 + P82A436).

    68 parts24
  • 4 layers194.5 × 188.6 mmMyCpu, the printed circuit board in 3D

    MyCpu

    fortinsylvain/MyCpu

    Home brew CPU Hardware with 1-bit ALU implementation using 74LSxx, a micro-code and assembler coded in C#.

    162 parts18MIT
  • 2 layers20.6 × 57.4 mmAmiga Boot Selector, the printed circuit board in 3D

    Amiga Boot Selector

    reinauer/Amiga-Boot-Selector

    This is a Floppy Switcher for the Amiga 500/2000. It allows you to switch DF0/DF1, making it possible to boot from either a Gotek drive or the internal floppy drive. without relying on AmigaOS.

    7 parts18
  • 2 layers236.8 × 169.8 mmTK2000, the printed circuit board in 3D

    TK2000

    clemarfolly/Microdigital-TK2000

    Reprodução da PCB do TK-2000 da Microdigital, clone do Micro-Professor MPF-II

    212 parts17
  • 4 layers308 × 225.4 mmE800j rev c, the printed circuit board in 3D

    E800j rev c

    codepainters/e800j

    Elwro 800 Junior replica

    483 parts16
  • 2 layers203.4 × 139.1 mmTandy Color Computer Multi Pak, the printed circuit board in 3D

    Tandy Color Computer Multi Pak

    djtersteegc/Tandy-Color-Computer-Multi-Pak

    Respin of the Tandy 26-3024 Multi-Pak (MPI) for the DIY builder.

    70 parts16MIT