49-way Joysticks

Home
Downloads
Features
Compile Help
FAQs
Links


  1. Hardware
  2. Connecting direct
  3. Connecting as Analog
  4. 49-way and MameAnalog+
  5. Games that used 49-way controllers

Williams "Sinistar" 49-way joystick Happs/Atari/Midway 49-way joystick

49-way Hardware

49-way joysticks can be thought of as a cross between an 8-way and an analog joystick, or a low detail analog joystick. 8-way joysticks have 9 positions: the eight directions and center; this can be seen as a 3x3 grid. Analog joystick precision usually is around a 256x256 grid, although it can be higher (high quality flight stick) or lower (analog stick on some gamepads). 49-way joysticks has a 7x7 grid, which gives the "49" in the name.

There are two versions of the 49-way joystick. The first was for a few Williams games such as Sinistar or Arch Rivals. It is also often called the Sinistar 49-way stick, I'll call it the "williams49" in this page. The second was by Atari/Midway, but now is being sold under the Happ Controls brand. I'll call this the "happs49".

They are very similar with only two major differences. The first is how they center. The williams49 centers with a rubber "spider"; it makes the stick act like it is centered with four strong rubber bands, one in each cardinal direction, and gives it a distinct feel. The happs49 centers with a rubber grommet around the joystick shaft and feels much like the perfect 360.

williams49 "spider"

The second difference is the output; they output exact complements of each other. A centered williams outputs no current, current, current, current, no current, current, current, current (or NC C C C NC C C C; or 01110111), while a centered happs49 outputs C NC NC NC C NC NC NC (or 10001000). Where the williams49 has current the happs49 does not, and visa versa.

Otherwise, the two 49-way sticks work much the the same way. Each axis has 3 optical sensors, each with it's own pin for the joystick output. Each axis' circuit tracks which side of center the stick is located, giving a fourth output pin per axis; the total is like 8 switches per joystick. The shaft moves two plates, one for each axis. Each plate has three "teeth" sticking out, one sensor watches it's own tooth. Centered, all teeth block are blocking all sensors. As the stick is moved, the sensors are unblocked in sequence the farther from center the stick is moved. The circuit tracks which side the stick is on, making it possible for all sensors to be uncovered on each side. So each side of each axis can have one, two or all three sensors open. For positions, that gives: 3 (one side) + 1 (center) + 3 (other side), or a total of 7 per axis.

The following table shows how one axis' sensors are blocked/unblocked as the stick is moved. "B" is a blocked sensor, "O" is an open (unblocked) one.

<<< << < center > >> >>>
OOO BOO BBO BBB OBB OOB OOO

Notice the ends: both ends are the same: all sensors unblocked. How does the game know which side it's on? The "side" pin mentioned earlier tracks this on the joystick. The the side pin is added to the one axis table:

<<< << < center > >> >>>
OOOO OBOO OBBO OBBB BOBB BOOB BOOO

Happs49 outputs an "O" as current flowing, and a "B" as an open circuit. Williams49 output the opposite: an "O" as an open circuit and a "B" with current flowing. Since one axis takes four pins, the two axes joystick would take eight pins.

Connecting a 49-way Direct Input

Since each pin either has a current or doesn't, they can be treated like buttons. In fact, you can think the williams49 as 6 NC (normally closed) and 2 NO (Normally Open) buttons, and the happs49 as 6 NO and 2 NC buttons. (However, all keyboard encoders and most PC joysticks (to hack) consider a current (closed) as "pressed" and an open circuit as "not pressed"; see next section..)

Thus you can connect a 49-way stick as 8 unused keys or buttons, sending the joystick's output raw to the computer. Official Mame, however, isn't set up to send raw 49-way input directly to a 49-way game. MameAnalog+ adds this feature to the Williams' 49-way games Sinistar, Blaster, Arch Rivals, and Pigskin 621AD (the Atari/Midway 49-way games don't emulate 49-way joystick yet).

Using a Raw Happs49 stick as an 8way

I made a bunch of ctrlr ini files that make happs 49-way joystick outputs work like 8-way or 4-way joysticks. These ctrlr ini files will work in both official Mame and MameAnalog+. There are two different ctrlr ini files for 49-to-8-way, and five ctrlr ini files for 49-to-4-way. Some of the 4-way ctrlr allow one or four out of the 49 directions to be a diagonal.

They just use the standard mame input sequence logic to map the 7x7 grid to 4 or 8 directions. A Mame sequence must list at least one button pressed (IOW, the sequence can't be all not pressed). One out of the seven levels in a williams49 axis is all 4 pins open, and so if connected to a keyboard encoder or joystick buttons, than one time will look like nothing is pressed, so williams49 raw output cannot be directly translated to an 8 or 4 way joystick. (WIP to add williams49 to 4/8-way support in MameAnalog+).

Happs49, OTOH, can do just fine when hooked as 8 keys/buttons (aka raw). Below are 7x7 grids showing how the the different ctrlr ini files map a happs49 to 4 or 8 way joysticks:

49-to-8 ways
Medium dead zone Tight dead zone

 

  49-to-4 ways  
 
corners vertical corners horizontal  
     
a down-right diagonal a up-left diagonal Tron-like corner diagonals

49-way sticks connected as Analog Joysticks

Rather than attaching a 49-way stick directly, it can also be connected to the computer as an analog joystick. You can build your own circuit, or buy one from Dave Electronics. If you connect it like this, official Mame can convert the analog input for Sinistar and Blaster. MameAnalog+ adds analog joystick support to Arch Rivals and Pigskin.

Note: when you do this for 49-way games, you are translating the 49-way's 7x7 grid into an analog joystick's (usually) 256x256 grid, which is stored internally in Mame/MameAnalog+ in a 257x257 (yes, that's a seven) grid, which is translated into a 111x111 game driver specific grid, which is translated back into a 7x7 grid by mame's game driver. It is possible that after the four translations the game might not be able to get one or more of the 7 levels, reducing the joystick to less than a 49-way joystick in the 49-way games. If the 49-to-analog circuit's analog output spacing is setup correctly, you don't need to worry about this, though. (See How..., below)

The nicest thing about being hooked up as an analog joystick, a 49-way can be used for most 8-way and many analog joystick games in official Mame and PC games. How well depends on the game.

If hooked up this way, the 49-way joystick will be seen as a normal analog joystick, and used as such.

How an analog joystick or analoged 49-way joystick is translated in Mame

(Or, way does Sinistar need Dave's SJC to be set to exponential scaling?)

linear:

SJC outputs Mame's internal Mame's sinistar driver interal Sinistar sees

exponential:

SJC outputs Mame's internal Mame's sinistar driver internal Sinistar sees

MameAnalog+ 49-way Features

MameAnalog+ adds a couple features to official mame to 49-way games, and in using 49-way joysticks.

The first is adding support for analog joysticks to Arch Rivals and Pigskin 621AD. This is for using any analog joystick, including a 49-to-analog stick, in these games. To use this, make sure the palyer 1 & 2 AD_STICK X & Y are mapped to the analog stick(s) you want to use. It is also a good idea to unmap the player's up down left right inputs, since the AD_STICK will be used instead. At bottom of this page are ctrlr ini file that are set up to do this; they probably need to be edited.

The second is support for raw 49-way inputs straight from the joystick for Sinistar, Blaster, Arch Rivals and Pigskin 621AD. To use this, attach the joystick's 8 data pins to any unused button or key, the GND pin to ground, and the power pin to a 5v+ power source. You then need to map these inputs to player 5 buttons 1-8 (for the first player, p6b1-8 for the second player). At bottom of this page are ctrlr ini that are set up to do this; they need to be edited because I have no idea what you are going to hook the 8 pins to.

49-way ctrlr ini Downloads

49-way Arcade Games Notes

A few notes on what I know about the few games that used 49-way joysticks. If I'm missing any let me know

•Sinistar
•Blaster

Manufactured by Williams
First to use 49-way joysticks in the arcades
Used the "Sinistar spider" to center stick; unique feel

Supported in offical mame as analog joysticks
MameAnalog+ adds direct raw 49-way joystick support as "buttons" 1-8, player 5

•Arch Rivals
•Pigskin 621AD

Manufactured by Midway
Probably used the same 49-ways as Sinistar, but one pdf manual I have lists the Midway(/Atari/Happs) 49-way [shrug]

49-way Not supported in official mame (an 8-way hack used instead)
MameAnalog+ adds: direct raw 49-way joystick support as "buttons" 1-8 players 5-6, and analog joystick support

•Blitz
•Blitz '99
•Blitz 2000

Manufactured by Midway
"Seattle" hardware
Used the Atari/Midway/Happs 49-way joystick (or 8-way, chose with dipswitch)

Used "I-40 Optical Joystick" multiplexer and "Aux Out" adapter boards between joysticks and Sound I/O board. Not sure, but think the Aux Out board pulses the 1-40 8 times per frame (4 joysticks, 2 axes per = 8 axes), and the 1-40 outputs the joysticks' outputs one axis each pulse through what would be player 4's up, down, left, right pins. OTOH, maybe the I-40 output to the Aux Out board, and the Aux Out combined the joystick data and gave the SIO possibly two joysticks at a time.

Not supported in Mame or MameAnalog+ (only 8-way ATM)

•NFL Blitz 2000 Gold Edition
•NBA Showtime
(?)
•NBA Showtime / NFL Blitz 99
•NBA Showtime Gold / NFL Blitz 2000 Gold
•Sportstation

Manufactured by Midway
"Vegas" hardware
Used the Atari/Midway/Happs 49-way joystick (or 8-way, chose with dipswitch)

"Slight", or the 8 levels directly around center, are not used in these games (info from manual)

Used "I-40 Optical Joystick" multiplexer and "Aux Out" adapter boards between joysticks and Sound I/O board. Not sure, but think the Aux Out board pulses the 1-40 8 times per frame (4 joysticks, 2 axes per = 8 axes), and the 1-40 outputs the joysticks' outputs, one axis each pulse, through what would be player 4's up, down, left, right pins if 8-way stick were used. OTOH, maybe the I-40 output to the Aux Out board, and the Aux Out combined the joystick data and gave the SIO possibly two joysticks at a time.

Not supported in Mame or MameAnalog+, (Games not emulated yet, either)

•Guantlet Legends
•Guantlet: Dark Legacy

Manufactured by Atari & Midway, respectively
"Vegas" hardware
Used the Atari/Midway/Happs 49-way joystick (or 8-way, chose with dipswitch)

Joysticks 1 & 2 use jamma up, down, left, right, and button 1-4 pins (instead of normal joystick and buttons)
Joysticks 3 & 4 use non jamma harness
All players buttons use non-jamma harness

Not supported in Mame or MameAnalog+, (Games not emulated yet, either)
49-way support can easily be added (once the games are emulated), IMO

 

Main Site:

speedhost

Mirrors:

prohosting
anglefire

 

WIP