The Dreamcast arcade stick has one of the best button/joystick layouts I have come across. There is a good size gap between the buttons and the joystick, and the base has plenty of space inside for modding.

I decided to convert the stick to USB, adding a Seimitsu joystick, Sanwa buttons and a Nokia LCD display in place of the VMU.

BBC coverage of the modified stick (starts after the PacMan segment, at 1.35):




Hardware Design

Schematic    Photo 1
Photo 2    Photo 3
Click images for larger versions


The LCD is quite difficult to photograph. It looks a lot better in real life :-)

The AVR runs at 5V, as 3.3V is too low for operation at 15MHz (3.3V max frequency is 8MHz). 10k resistors are used to interface with the LCD's 3.3V logic.

Nokia 3310 LCDs do not have a built-in backlight. Instead, the backlight is part of the phone's plastic casing which also holds the speaker and keypad. I salvaged a backlight module from a broken 6610 screen and installed it with hot melt glue. It works very well, with even illumination over the whole display.

The buttons on the screen are filled when that button has auto-fire enabled. Auto-fire is set by holding start and then pushing the button you want to toggle on/off. I may add auto-fire rate control later.

The LCD is optional, the joystick will function without it, including will auto-fire.


Firmware Design

The USB side of things is fairly simple, thanks to V-USB (called AVR-USB at the time the code was written). The stick is a standard HID device, compatible with PCs and the Playstation 3. Note that the device name is written in Japanese (ドリームキャストアーケードスティック) so may not display properly if your OS does have Japanese fonts installed, but it operates perfectly none the less.

The LCD is set up during the start-up phase, and from then on only written to when auto-fire settings are changed. As such, it does not cause an lag. The 3310 LCD uses a simple SPI interface. FastLCD was used to convert images to C include files, for storage in the AVR's code space.

Firmware: DreamcastStickUSB.lzh /