My first topic. Yeah !
So lets start with something very personal and recently developed in this or the last year. I'm a very big fan of retro gaming. I'm used to have about 17 consoles and 7 home computers. Check out some photo !
Some of my consoles :3 |
In this post I want to go specific to the home computers. In my youth (The 90s) I got an amiga 500 from my dad. It was awesome then and it's awesome today. So, whats the problem you might guess. I can tell you. After a few years of playing with your gaming equipment, which also includes the joystick, the equipment breaks someday.
Here's a photo of my favourite gamepad. With this you are the king of Turrican !! ... or at least a few years before ...
What makes it great is the auto fire function which is controllable with a button and not a switch like some other joysticks have.
The AMIGA HYPERPAD. The name fits |
The problem with these gamepads is the synthetic material that is used as spring for the buttons. After some use these tend to break. So... buy another one ? Yeah ! I wish we could today but thats not possible anymore. It's also a miracle for me how the other retro fans seem to handle this problem.
We need some replacement! I was inspired by the big number of "PS/2 to Amiga Mouse Adapters" that you can buy at some stores. These are also very important as the amiga mouses don't even last as long as the joysticks :-(. Of course I've built one myself with a PIC16F628. But thats not so special. Maybe later about that.
My PIC based ps/2 mouse adapter |
What is more important is that there is no pendant for joysticks. Like... connecting an usb joystick to your amiga. Or... maybe ... a Wiimote ??
That would be crazy and ingenious at the same time. And it's wireless! OH MY GOD ! :-O. And most important, It's hardware that is still built today. ...And it probably will, as the Wii U also uses this...
So I've bought myself a ARM evaluation kit that is known to feature a USB Hostcontroller. It's this one from STEITEC.
ARM LPC1768 Cortex M3 LCD Board (STEITEC) |
The positive thing about USB is that there is so much stuff that you can plug in it. Take for example USB Bluetooth adapters. They are so cheap. Much cheaper than a professional bluetooth module for industrial applications. And as matter of fact a lot of people just have them lying around.
After that I've discovered the mbed which offers also a LPC1768 and it's gigantic collection of libraries for miscellaneous purposes. On of these libraries is called "BlueUSB". It's a complete "usb-bluetooth-keyboard-mouse-wiimote"-stack, which is great for this project.
I've modified it a little bit to get it working on my STEITEC board. After that I was possible to get the button states printed on the debug uart. Then I designed a breakout board which has npn transistors for the open drain type of interface that is used by atari type joysticks. It also does the levelshifting as the amiga uses 5v and the ARM only can handle 3.3v like almost every new IC. Connected to the user I/O header I had to modify the sources again a little bit to get the logic I wanted. For example autofire... which is important If you like to play Turrican without having a cramp (right english word?) in your thumb ! Then after outputting the button states to the necessary GPIOs I had it working.
The whole project. |
What you basically get is a clone of my amiga gamepad in the form of the wiimote. You hold it horizontal of course. The button 1 is fire, button 2 is auto-fire. The button A is secondary fire at the moment.
After a few weeks of usage I added support for usb mouses, the classic controller (better dpad somewhat) and usb joysticks.
The support for usb joysticks is something very important as this project has problems operating with the commodore 64. After plugging it in you can hear the noise that is caused on the voltate supply by the bluetooth module.
Not very nice and I don't know how to fix that as I'm a noob in analog design. Maybe some suggestions from the audience? :3
However on other systems like amiga, atari st, zx spectrum (kempston interface only!) and the amstrad cpc (only with adapter) it works perfectly.
The next step that is needed for this project is a dedicated printet circuit board especially for this purpose. This way I could also sell this boards...
After a few weeks of usage I added support for usb mouses, the classic controller (better dpad somewhat) and usb joysticks.
The support for usb joysticks is something very important as this project has problems operating with the commodore 64. After plugging it in you can hear the noise that is caused on the voltate supply by the bluetooth module.
Not very nice and I don't know how to fix that as I'm a noob in analog design. Maybe some suggestions from the audience? :3
However on other systems like amiga, atari st, zx spectrum (kempston interface only!) and the amstrad cpc (only with adapter) it works perfectly.
The next step that is needed for this project is a dedicated printet circuit board especially for this purpose. This way I could also sell this boards...
this is awesome, mate ! well done! so when this device is finished it will work on my a500? it would be great to use the screen pointing feature with an Amiga like a mouse would work. or even on a windows machine emulating an Amiga! again well done !
ReplyDeleteThank you for you comment. Yes, you can connect it you an a500. Right now, I'm working on the layout for PCBs for the "USB Datasette" and the "Wiimote-Amiga-Adapter". I think they deserve for getting a clean board.
ReplyDeleteThe screen pointing feature using a ir sensor bar is not supported at the moment. Something like this is very difficult as absolute coordinates have to be transformed to relative. I don't know how accurate the quadrature decoder inside the amiga is. But you sure gave me ideas.... this needs to be tested.
You don't need this device for your windows pc. There are drivers around for this purpose. One program I know is GlovePIE. I don't know how good it works as I'm a linux guy. But check it out if you want to have a wiimote with windows.
I can't suggest anything - sorry, but just wanted to say nice job all the same! :)
ReplyDeleteThat's very kind of you. This was the very first post of this blog and about this machine. In the midtime I made PCBs for this project which just have the needed parts for this purpose. As you need only the ARM controller the board is very small. About 5 x 5 cm. Check out a post of February 2013 where you will find something about this.
Delete