DIY SMS/MarkIII paddle controller

The project





Sega's HPD-200 paddle The raphnet.net paddle!



Specifications:

Works like the standard Sega HPD-200 paddle.

Works on Japanese SMS and MarkIII consoles.

Compatible with non-Japanese systems [1]

Special "export paddle" mode [2]

Very simple circuit. [1] Some Japanese games with paddle support, when used on a non-Japanese SMS or Genesis/Megadrive console, will detect the console is not Japanese and will then expect an "export paddle" to be used. Since the "export paddle" works differently, a Japanese paddle (HPD-200) cannot be used.



[2] Even though the "export paddle" has as far as I know never been commercialised by Sega, many games include code to support it. It did not seem too difficult so to allow those games to be played I also implemented an "export paddle" mode.





I recently bought the Galactic Protector for my Japanese SMS console without knowing that a paddle controller was required to play. The paddle controller for Sega Master System, part number HPD-200, was only sold in Japan at the time. Today it is sold at a price I am not willing to pay on a popular auction site so I decided to build my own.Some Japanese games with paddle support, when used on a non-Japanese SMS or Genesis/Megadrive console, will detect the console is not Japanese and will then expect an "export paddle" to be used. Since the "export paddle" works differently, a Japanese paddle (HPD-200) cannot be used.Even though the "export paddle" has as far as I know never been commercialised by Sega, many games include code to support it. It did not seem too difficult so to allow those games to be played I also implemented an "export paddle" mode.

Pictures





Final result:

raphnet.net paddle raphnet.net paddle Playing Galactic Protector Playing Outrun



Assembly:





The concept:

The concept The concept The concept The burton Cut view of the installed button



Here are the .STL files for those who would like to build the same enclosure:

sms_paddle2_body-main.STL (Main part)

sms_paddle2_body-button.STL (Push button)

sms_paddle2_body-knob.STL (Knob)



A few notes concerning these 3D models:

The enclosure is designed to be used with a Vishay 657-0-0-203 potentiometer and Omron D2F-01 micro-switch. I you must use different components, compare their dimensions to confirm they will fit, or otherwise modify the 3D models before printing.

The push-button hooks break easily. When installing the push-button, I recommend heating the hooks to soften the plastic, allowing it to bend. Once the button is in place, quickly straighten them before the harden.

The knob is press-fitted on the potentiometer shaft. If your print is too tight, increase the bore diameter by drilling using successively larger drill bits.



I could simply have drilled two openings in a piece of wood, plastic or metal to install a potentiometer and a button. But since I got a 3D printer, I can't resist designing slightly more elaborate enclosures.Final result:Assembly:The concept:Here are the .STL files for those who would like to build the same enclosure:A few notes concerning these 3D models:

Schematic



Click on the schematic for a sharper version.



My multipurpose circuit board,





The circuit is available pre-programmed and pre-assembled

My multipurpose circuit board, multiuse PCB2 , is perfect for this project. Here is a diagram showing how to use it:The circuit is available pre-programmed and pre-assembled from my online store

Firmware

Version v1.0

February 21, 2015 (Saturday) Initial release. File(s):

sms_paddle-1.0.tar.gz (2.3 KB)

sms_paddle-1.0.hex (619 B)

This project is also available on GitHub!

To request features, report issues or contribute, you may

https://github.com/raphnet/sms_paddle

To request features, report issues or contribute, you may send me an email or use the GitHub repository:

Of course, the micro-controller has to be programmed or nothing will work:

How it works





The HPD-200 paddle Sega's HPD-200 paddle signals which set of 4 bit is currently being transmitted by varying the state of pin 9 (normally used for button 2). A logic low indicates low order bits are transmitted (0 to 3) and a high level indicates high order bits (4 to 7) are transmitted. For each sample of the current knob position, the paddle sends the low order bits before high order bits. The signal on pin 9 has a frequency of 8 kHz.



The "export paddle" The export paddle works a bit differently by letting the game console select the bit set of interest via pin 7. The paddle reacts to the state of pin 7 by putting the requested set of 4 bits on pins 1-4 and by updating the state of pin 9 to reflect pin 7 (handshake?). According to my experiments, the paddle must do the analog to digital conversion on pin 7 falling edge. (Otherwise, in some cases and depending on the exact movement the player does, very wrong values may be received by the game)





(Note: The above diagram is representative of what my firmware does and may not necessarily match what Sega did or intended to do for the so-called export paddle. I don't have a reference controller to check if my implementation is correct, but it does seem to work...) A few years ago I had an HPD-200 paddle at home for a few days. Here are a few pictures of its innards:





The position of the knob on the paddle is converted to a 8 bit digital value and has therefore 256 possible values. The current value is transmitted to the console in two blocks of 4 bits (nibbles). The four wires normally used for the directional pad are used for this (DB9 pin 1 to 4).Sega's HPD-200 paddle signals which set of 4 bit is currently being transmitted by varying the state of pin 9 (normally used for button 2). A logic low indicates low order bits are transmitted (0 to 3) and a high level indicates high order bits (4 to 7) are transmitted. For each sample of the current knob position, the paddle sends the low order bits before high order bits. The signal on pin 9 has a frequency of 8 kHz.The export paddle works a bit differently by letting the game console select the bit set of interest via pin 7. The paddle reacts to the state of pin 7 by putting the requested set of 4 bits on pins 1-4 and by updating the state of pin 9 to reflect pin 7 (handshake?). According to my experiments, the paddle must do the analog to digital conversion on pin 7 falling edge. (Otherwise, in some cases and depending on the exact movement the player does, very wrong values may be received by the game)(Note: The above diagram is representative of what my firmware does and may not necessarily match what Sega did or intended to do for the so-called export paddle. I don't have a reference controller to check if my implementation is correct, but it does seem to work...)A few years ago I had an HPD-200 paddle at home for a few days. Here are a few pictures of its innards:

Tested games

Game Console Mode Results Galactic protector (JP) Japanese SMS HPD-200 Ok Galactic protector (JP) North-american Genesis Export paddle Ok Outrun (US) Japanese SMS + cartridge adapter HPD-200 Ok Megumi rescue Everdrive + Australian SMS HPD-200! Ok Super racing Everdrive + Australian SMS N/A Not working Contact me if you test other games, and please specify the game and console region, mentionning if any adapters or mods are involved.



Contact me if you test other games, and please specify the game and console region, mentionning if any adapters or mods are involved.

Pictures from users

Please also let me know if it's ok to display your name/alias and country. By default, I will only use your first name. 2016-06-06: Kyle from Australia sent me a picture of the paddle he built using a DB9 extension lead and an old NES USB controller!



2018-09-13: Sam from France shared the following pictures, explaining: While perhaps not of high aesthetic value, the paddle works great on my japanese MegaDrive 1 through a PowerBase Mini adapter and a Master Everdrive X7



Seeing how others build my project is always a pleasure for me! Please send me pictures of your builds and I will post them here.: Kyle from Australia sent me a picture of the paddle he built using a DB9 extension lead and an old NES USB controller!: Sam from France shared the following pictures, explaining:

References

# Description Link 1 In this thread, code samples used to read HPD-200 and export paddles is posted and analysed. This is where I learned almost everything I needed for this project. http://www.smspower.org/forums/6783-OneMoreTimePaddleControlPlusPaddleDetectionRegionDetection 2 General paddle information with a list of games supporting it. http://segaretro.org/Paddle_Control 3 Just reading the source code of Genesis/Atari/SMS to USB adapter to which I added paddle support a few years ago saved me some time. http://www.raphnet.net/electronique/atari_usb/index.php



Disclaimer