720 Arcade Joystick
PROGRESS
Home
Progress
Joystick Pictures
MAME: Analog+ How-To-Use
720° Arcade Circular Spinner Joystick
MAME modification
10/25/2011
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.
12/8/2006
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.
3/10/2006
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.
10/2/2003
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.
7/9/2003
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!
6/1/2003
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.
4/12/2003
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.
3/4/2003
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.
2/20/2003
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).
2/19/2003
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.
2/18/2003
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.
2/17/2003
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.
5/2/2002
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...
4/24/2002
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.
4/24/2002
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?
BREAKTHROUGH FOR 8-WAY!!!
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).
4/23/2002
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.
4/19/2002
Added pictures of the disassembled
joystick, added a To Do List.
4/16/2002
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.
4/15/2002
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.
4/12/2002
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.
4/11/2002
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):
PORT_BIT( 0x1111, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
PORT_BIT( 0x3333, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
PORT_BIT( 0x5555, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
PORT_BIT( 0x7777, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
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...
4/10/02
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.
4/8/02
I started looking around for for information about 720° today.
The controls for 720° are listed on mametesters as this bug.
4/7/02
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.
HOME