720 Arcade Joystick

720 Arcade Joystick


Joystick Pictures
MAME: Analog+ How-To-Use

720° Arcade Circular Spinner Joystick MAME modification


This is old news, but Derrick Renaud has added support for the 720 Arcade Joystick in the official build of Mame. As I understand it, in order to do so, he needed to add a multi-controller subsystem in Mame so that you could switch between completely different control methods, making it possible to choose between controlling 720 with an analog stick, a spinner, or a 720 Arcade Controller without using multiple Mame builds or cheesy hacks. It has been tested and confirmed to be working well with the 720 controller. Derrick deserves huge thanks from 720 fans. This was a big job that made this one game work perfectly for the first time. I haven't made any updates to this page in a long time because the 720 joystick that I have has not been working, and I haven't had the time to sit down and get it working again. Maybe it's time!

I should mention that most of the information on this site that mentions special builds of Mame or Mame Analog+ is way out of date. The information is still valid, but only for those old versions of Mame which are now obselete because the current version of Mame supports the 720 joystick.


I updated the 720 driver (atarisy2.c) to work with the latest version of Mame (currently 0.110). This update is only for using the original 720 arcade joystick. I also added a binary file download. You can get the files from the bottom of the arcade joystick page.

Also, I just noticed this old discussion. Kremmit discusses using a 49-way joystick to use for in playing 720: Check it out here.


I finally updated the 720 driver (atarisy2.c) to work with the latest version of Mame (currently 0.104). This update is only for using the original 720 arcade joystick. You can get the files from the arcade joystick page.


2006 update: StarRoms no longer exists :(.

Great news! Atari (now owned by Infrogrames) has agreed to make their old arcade game roms available for purchase for use with Mame. This means that you can purchase a copy of 720 to play in your home!

Buy the game, but don't listen to them when they say, "The keyboard works fine as a controller." They've never really played the game - they've never really lived.

720 has been available in the past in such packages as the Digital Eclipse "Arcade's Greatest Hits: Atari Collection 2", but this is different because it is specifically being sold be used whichever emulator you choose, such as Mame: Analog+ with improved support for controlling 720.


Somebody just sent me some nice pictures of the 720° arcade joystick (pic 1, pic 2) taken from the arcade game's manual. My 720° joystick is actually slightly different from the one in the manual... However, when I looked at these pictures for a while and also at my 720° joystick, I realized that there was a piece of mine that was placed upside down, and that's what was causing my joystick to not work very well. It works a whole lot better now!


It has come to my attention that Oscar (of Oscar Controls), the creator of several wonderful arcade spinner controls including an Arkanoid style spinner, a Discs of Tron Up/Down spinner, and others has been sent a 720° arcade joystick for the purpose of determining if it will be feasable to make a replica 720° arcade joystick. Here's a quote from Oscar:

I'm creating shop drawings from Lilwolf's controller right now. It is taking me a bit longer than I originally anticipated since Lilwolf waited until about two weeks before I released my DOT spinner to make his gracious offer, but I wasn't about to turn down the opportunity...

I'm not trying to give the impression that I will be manufacturing these controllers in the near future, but once I have the drawings complete it's only a matter of $$, interest, and time.

If such a thing is ever put into production, then it will be really good news because the joysticks are hard to find as it is (especially in decent working order) and the ones that are out there really belong in the original arcade machines.


U_rebelscum, the author of Mame Analog+ has added support for analog joysticks and 8-way joysticks for 720°! Now the game can be played very well with a 720° arcade joystick, an analog joystick, an 8-way joystick, or a mouse via Mame Analog+... The goals of this web site have been accomplished. Go, now, to the Mame Analog+ page and play 720°! I added some information to the Mame 8-way joystick page, and linked the 8-way joystick download link to point to the Mame Analog+ download page.


I found out today that my code for using the 720° arcade joystick (utilizing the 2nd calibration spinner disc) has been added to Mame Analog+. Mame Analog+ is a special Windows only version of Mame made to give better support for analog devices (spinners, trackballs, and now the 720° arcade joystick!). It supports up to 4 mice in Windows 98 and allows you to split the x and y mouse axes so that each mouse will function as 1 spinner in Mame. I updated the 720° arcade joystick download section to point to his site.


Today I added the 720° original arcade joystick (pic1 pic2) to a control panel so I could play the game, and then I played the game for a while. It rocks! I tried playing the original version of Mame for comparison, and the skateboarder's direction seemed to get a little bit out of sync with the joystick. When I play with my version of Mame, it seems to play perfectly! (But if you touch the mouse or pause the game and spin the joystick, it WILL get out of sync).


Today I got a mouse hack working for the 720° joystick, and it works really well - I think it probably works just like the Opti-Pac.


I played around with the Mame code, and found out how the calibration spinner disc works into Mame. It also enabled me to see how it works, so I added the 720° Arcade Circular Spinner Joystick MAME modification page.


The old 720° joystick topic came up again on the arcade controls message board. I fixed up my 8-way joystick code to work better in mame, so that the diaganals are labelled properly in Mame's options screen, and so I didn't have to affect any other games besides 720° with my changes. I updated the 8-Way MAME modification page accordingly. These days, I'm compiling with MinGW, the same compiler that the Mame team uses.


Hooked up the Opti-Pac to the 720° joystick, and it works like a champ (I mean it gives no backspin). Two questions, though... How does a mouse work? The friggin' second spinner seems to be directionless or something... It doesn't move the mouse up or down, it moves it up then down... How bizarre. I forget the 2nd question.

Hmmmm... Maybe the spot where there's no smoothness between 127 and 0 is there because that's where the joystick is supposed to be recalibrated... (Duh).

I'm thinking it might be high time I emailed the dude who wrote the driver for 720°, and see if he can clue me in to how the machine worked...


I finally sat down and counted the number of notches in the spinner disc today. I'd been assuming that it would be 128 discs, like the Discs of Tron spinner. Actually, it's 72... An interesting number, considering the name of the game. Meanwhile, I'm trying to work on the 8-Way joystick so that it will not flit into each position, but will smoothly rotate. I got that sort of working, but I discovered that it's not so smooth between 127 and returning to zero. That's what prompted me to finally count the notches, becuase it wasn't really adding up. At this moment, I'm building MAME to go all the way from 0 to 143 (72 notches * 2), and perhaps that will rid me of the flitting? Stay tuned, true believers. Humph. That didn't work. I actually managed to budge it out of alignment which is very interesting. Huh. Darnit, this is elusive.


I'm trying to get MAME to handle the 720° arcade controller. It's a matter of making the primary spinner act as the X axis and the secondary spinner act as the Y axis... I can tell that the driver for 720° knows what's going on, I think, there are little clues... Not that I know what's going on. Aaron Giles, the person who created the driver, has created a lot of drivers... Maybe, as a last resort, I could ask him if he'd assist me (as if I were worthy). As far as the 720° driver code goes, it looks as though every detail was understood when the driver was created. If modifying the driver continues to elude me like it is, I should probably do an awful hack, and just do something ridiculous to the input file, and force it to do my bidding. Even that won't be very easy, I'd imagine.

Hmmm... I just noticed something really interesting... The joystick seems to recalibrate itself ONCE, in the regular MAME setup... I load 720° in MAME, insert some coins, and press start. When I press the counter-clockwise arrow key, the dude on the screen jumps into the up position, and then cruises like normal after that. It doesn't happen when I move the other way, though. I think that I've been assuming that the joystick calibrates itself on every spin, and maybe that is incorrect, at least as far as the arcade machine is concerned. I don't get why it would only calibrate itself when the joystick is spun in the one direction. And I'm rather amazed that it would only calibrate itself once. Maybe it calibrates itself after every n cycles around the loop, and I just can't see it because the 1st calibration remains effective... Eh? Ha ha ha... Who knows?

While working on the controls for the 720° joystick, I started seeing more things that were available. After a late night (it's 4:00am now), I found a function called, "static READ_HANDLER( leta_r )" in the driver file for 720° in MAME (atarisy2.c). This is where the controls for the game are (I don't know, uh...) sent to the rest of the program? Who knows? But I do know that this is a 720° specific place where I can massage the values that are sent to the actual control handlers... Which is really good. For starters, I was able to make the 8-Way joystick work without affecting any files besides the driver file itself. That means that I won't impact any other games. Previously, I was impacting all 4-way games, which is really not cool. This is much better. Also, with this 720° specific control window to the world, I suspect that I will have a lot more power over everything. This may allow me to easily make the man smoothly rotate into position instead of jumping into each of the 8 directions... The other major breakthrough is that I found a way to debug! A simple printf statement will print out information into a dos window, which is REALLY helpful. It allowed me to quickly figure out what I had to do to make the 8-way joystick work like this. Otherwise, it could have taken me another long night just to figure out what numbers go where. I still don't know why I did what I did, I'll have to wait for another day to figure that one out, if I ever do figure it out. Now, I've gotta get some sleep. Goodnight. (Well, maybe after one quick game).


I received an email yesterday from somebody who also owns a 720° joystick that they plan to use with MAME! He said that the Opti-Pac will connect up to the joystick with no problems. An Opti-Pac is on its way because I need it for the dual trackball control panel. The joystick will mount to the trackball control rather nicely, so I suspect I should be all set in the hardware department. I just need to change MAME around to work with the 720° joystick, which shouldn't be difficult, I wouldn't imagine. The dual trackball panel is ideal, because it has 2 buttons on either side of the right-hand controller, so you can go righty or lefty on the 720° joystick. That seems like a game where you'd want your good hand to be on the joystick, whichever hand that might be.


Added pictures of the disassembled joystick, added a To Do List.


I racked my brain today wondering how I would go about making the diagonals work for MAME using a digital 8-Way joystick. I had it working great as a 4-way joystick, and I knew which values I needed MAME to receive for each joystick position. However, when I went to a diagonal position, MAME would see that as the sum of the two directions that were being pressed. I needed more of an average, or hard-coded values for the intermediate points. The 4-way code in MAME will take a diagonal and count that as a direction... That's no good for me, because that's what gives me the summing problem. I went into the code, and I prevented it from paying any attention to diagonals. Then I added 4 buttons to the game, one for each diagonal. In the MAME settings, u/d/l/r mapped to a single key, and diagonals mapped to both being pressed. Thus, MAME handles u/d/l/r and diagonals independently. I hard code the known values to each direction, and viola! 8-Way joystick controls for 720°. I'm very pleased. I played a lot of 720° this way, and it's pretty rad. It work really well. Better than a regular spinner? I like it a lot better this way. I can move in a particular direction with confidence. However, I also connected the actual arcade joystick to work as a regular spinner (without recalibration), and magical things happened, such as in the half pipe, that would be tough to do any other way, I think.

I've been emailing with some dude who is asking a lot of questions. He's thinking about possibly talking to Oscar about making his spinner capable of having the extra calibration disc added, along with a drilled hole to allow inserting a joystick. That could be totally righteous.

He's looking to see if a regular spinner could work, if there is no calibration disc. I'm not sure... I played around some, and couldn't get it right. Maybe it could be done, but I don't know.

Discovered a small problem. The mouse hack can't deal with me spinning the joystick really fast. It's been recommended to me that if I have fewer notches in the disc, then the mouse hack will be better able to keep up with my speedy hands.


The 720° joystick came in the mail today. Lo and behold it's a simple thing! Of course it's simple. How else could it have been done? There are TWO spinner rings. One ring only has 1 double notch in it in the 'down' direction (see pictures). That way, when the joystick passes over that line, it immediately recalibrates itself. So simple. So easy to hack, I expect, involving only a simple hack into mame to make the 2nd axis simply set the new direction whenever the 2nd axis is engaged. Totally awesome.

That answers my questions... It has to recalibrate even if it's powered off and it moves - With one spin of the joystick, it's recalibrated. I suspected something like that, but I didn't even think of having 2 emitters. The other requirement that it had was that it needed to be a frictionless method of detection, which it is. I'm almost disappointed - I thought this was going to be an incredibly time consuming project that would take me months or years to complete! It turns out that all I'll need is a mouse and it's almost as good as hacked, and then the MAME modification should be really simple! (It's one BIG joystick!)

I bought a mouse and tried to hack it. I killed it. Oh, well. So as a test, I put the mouse hack from my Discs of Tron spinner into it. The 2nd disc (for constant calibration) isn't attached, but the spinner works pretty well.


Stayed up 'till the wee hours on my birthday of all nights trying to figure out the controls in the game.

I discovered that the controls' range appears to only really matter between 0..128. Which is very interesting, because it just so happens that a Discs of Tron spinner has 128 holes in the spinner disc. That sounds like an incredible relationship! A breakthrough, even.

I painstakingly went through each number, 0..128 determining which value would result in a visible 'turn', when turning counter-clockwise. I will put that on the detailed information page.


Well, it's another late night of monkeying... Today, I copied the joystick settings from contra and replaced the 'dial input' with keyboard keys... I set the hex number business for the keys to values within the same range that were given for the spinner control. Originally, the line that defines the joystick said:

PORT_ANALOG( 0xffff, 0x0000, IPT_DIAL | IPF_PLAYER1, 30, 10, 0, 0 )

And I switched it to say (and I am constantly changing the 0xnnnn values):


Don't get me wrong, here, I certainly don't know what I'm doing... However, my guesses as to what might happen seem to be somewhat correct. What's happening is that while I'm hold the joystick up (IPT_JOYSTICK_UP), I'm setting the bit at the memory location 0x1111... The GAME looks at this as though the spinner is in the ?0x1111? (I'm weak in knowing exactly what is going on - and what hex numbers mean) position, and moves the radical dude accordingly.

It's PRETTY MUCH doing that. However, it's not 100% consistent. Sometimes when that bit is set, it puts the radical dude in one direction, and sometimes it puts it in another direction... I find that to be suprising... But I just finished building VCMAME in debug mode (I wrote this while I waited), and I'm hoping that will help me to see more things. Hopefully I can watch the game memory in the 0x0000-0xFFFF range and see how the different values affect the radical dude.

Humph... And I found this little confidential thing searching the internet... It's mostly gibberish to me, but maybe I can smurf something out of it: 720° arcade game schematics. I grabbed some of the information that was the most pertinent looking. See it here.
HA HA!!! I got the joystick to work as a 4-way... L/R/U/D... Now I just gotta get some diagonals in there so there isn't so much skidding! Already, though, doing twirls in the half-pipe is super sweet!

Started delving into inptport.c/ScanJoysticks... Trying to get the diagonals to be their own thing...


I started toying with mame (using VCMAME - it is a MAME build set up as a Visual Studio Workspace, which makes it easier for me to try changing code around.) It was funny. I started monkeying with the controls just a little bit, and what I have ended up with is the same crappy controls that MAME used to have for 720° a long time ago - completely unplayable. I tried hard coding values for the spinner - and still it didn't work like I expected. Sometimes it would drop into a particular spot, but sometimes it would drop into a different one. It's possible that since I was making large jumps that it didn't know which direction I was spinning it... ??? I don't know. I still have a lot of work ahead of me to figure this one out, I suspect. Luckily, the code looks really simple to follow which will help me out quite a bit.

My main goal is to make the joystick work for MAME for my own selfish personal reasons. I figure, though, if I'm really going to get into figuring out the control method for this game, that I owe it to the MAME world to try and fix the MAME bug, and allow a user to use an 8-way joystick for this game.


I started looking around for for information about 720° today. The controls for 720° are listed on mametesters as this bug.


I managed to win a 720° arcade spinner joystick through Ebay (here's a bit of info about it), for around $20 plus $8 shipping (from Australia of all places). I suspect that it will take some doing to get it to work properly in MAME, but it MAY be possible. I can't wait to receive it and find out.