<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://oldwiki.arcadecontrols.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Urebelscum</id>
	<title>BYOAC OLD Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://oldwiki.arcadecontrols.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Urebelscum"/>
	<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php/Special:Contributions/Urebelscum"/>
	<updated>2026-05-27T12:00:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Driving_Controls&amp;diff=12238</id>
		<title>Driving Controls</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Driving_Controls&amp;diff=12238"/>
		<updated>2009-10-06T17:30:33Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Steering Wheels */  1080 degrees wheels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the real world, you can't drive a car or steer a bike with a joystick and buttons, and the same holds true for some of the best games ever made.  Games that put the player in the driver's seat of a racecar or spaceship, or riding a motorcycle or bicycle.  These games need specialized controls, like steering wheels, pedals, shifters, and handlebars.  If you feel the need for speed, you'll likely also need some of the following:&lt;br /&gt;
&lt;br /&gt;
{{Cleanup}}&lt;br /&gt;
&lt;br /&gt;
== Steering Wheels ==&lt;br /&gt;
While steering wheels come in all shapes and sizes, there are two basic types once you get under the control panel:  Optical and Analog.&lt;br /&gt;
&lt;br /&gt;
===Optical (360 degree wheels)===&lt;br /&gt;
&lt;br /&gt;
Optical wheels spin freely, all the way around, as many turns as you like. (With one notable exception, that is- see &amp;quot;Roadblasters&amp;quot; below.)  The electronics consist of an optical encoder wheel that spins through two infrared emitter/receiver pairs.  If that sounds like the description of a spinner, that's because an optical wheel really ''is'' a spinner with a big steering wheel in place of the knob.  These connect through the same hardware as a spinner, too- a Mouse Hack, Opti-Pac, Opti-Wiz, or similar.&lt;br /&gt;
&lt;br /&gt;
Games that used Optical wheels include:&lt;br /&gt;
&lt;br /&gt;
*Pole Position&lt;br /&gt;
*Championship Sprint&lt;br /&gt;
*Ivan Stewart's Super Off-Road&lt;br /&gt;
*Roadblasters&lt;br /&gt;
*and many more...&lt;br /&gt;
&lt;br /&gt;
Roadblasters is an interesting exception to the rule.  Roadblasters used a unique optical controller that was limited to 270 degrees of travel.  The Roadblasters controller can be interfaced the same way as any other optical wheel, but cannot be used to play any other optical wheel games because of the limited travel.  (The Roadblasters controller also pops up in discussion of Flight Yokes, see below.)&lt;br /&gt;
&lt;br /&gt;
===Analog (270 degree wheels)===&lt;br /&gt;
&lt;br /&gt;
Analog wheels do not turn freely throughout the full 360 degrees of the circle.  Analog wheels have a limited range of motion - typically described as 270 degrees. Though, in reality, the actual number of degrees varies from controller to controller.  The shape of these controllers varies as well. Since the control doesn't spin all the way around, there's no need for it to be a circular wheel.  Likewise, since the control doesn't spin, wires can be run into the controller without fear of twisting and breakage. The arcade manufacturers took advantage of this by adding buttons, triggers and the like to these controllers.  The electronics consist of a simple potentiometer (plus switches for any buttons or triggers).  Like other potentiometer-based devices (see Analog Joysticks), Analog wheels interface through a Dual Strike hack, AKI, A-Pac, or other similar device.  &lt;br /&gt;
&lt;br /&gt;
Games that used Analog wheels include:&lt;br /&gt;
&lt;br /&gt;
*Spy Hunter&lt;br /&gt;
*Out Run&lt;br /&gt;
*Power Drift&lt;br /&gt;
*Road Riot 4wd&lt;br /&gt;
*Hard Drivin'&lt;br /&gt;
*and many more...&lt;br /&gt;
&lt;br /&gt;
While most analog wheels turn about 270 degrees, some of them were closer to real car steering, with a limit of about 1080 degrees, or three full turns.  Hard Drivin' was the first arcade game to have such a wheel.  The full range of degrees typically run from 255 degrees to 285 degrees, and from 900 degrees to 1080 degrees, but all electronically the same with analog POTs.&lt;br /&gt;
&lt;br /&gt;
== Flight Yokes ==&lt;br /&gt;
&lt;br /&gt;
Some games gave the player more than just a steering wheel- they gave you a yoke.  The primary example, of course, is Star Wars, though that's not the only one- see list below.  The yoke consists of a set of handles that can be rotated forward and back, as well as turning right and left.  Thumb buttons and triggers are also standard.  The electronics consist of two potentiometers- one for the right-to-left (X-Axis) movement, and one for the forward-and-back (Y-Axis) movement.  As with other potentiometer-based controllers, these are interfaced through a Dual Strike hack, A-Pac, AKI or similar.  Electronically, a yoke is identical to an analog joystick, and indeed, you can use a yoke to play analog joystick games, and vice-versa.  &lt;br /&gt;
&lt;br /&gt;
Games that used a yoke include:&lt;br /&gt;
&lt;br /&gt;
*Star Wars&lt;br /&gt;
*The Empire Strikes Back&lt;br /&gt;
*Return of the Jedi&lt;br /&gt;
*Turbo Sub&lt;br /&gt;
*Hydra&lt;br /&gt;
*S.T.U.N. Runner&lt;br /&gt;
*Lock-On&lt;br /&gt;
*Apache 3&lt;br /&gt;
*Hyperdrive&lt;br /&gt;
*Star Fire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Almost&amp;quot; Yokes'''&lt;br /&gt;
&lt;br /&gt;
There are also quite a few controllers out there that look like yokes, or even work like yokes, but are for one reason or another, just not quite yokes.  &lt;br /&gt;
&lt;br /&gt;
*Starship One:  This flight controller turns right to left, and pulls/pushes in/out, rather than the handles twisting back and forth.  You could call it a yoke, but you probably wouldn't want to try aiming in Star Wars by pushing and pulling!&lt;br /&gt;
&lt;br /&gt;
*Paperboy:  These bike handlebars turn right to left, and also push forward and back.  Again, you could call it a yoke, but it probably wouldn't play very well with true yoke games.&lt;br /&gt;
&lt;br /&gt;
*Enduro Racer:  These motorcycle handlebars turn right to left, and can also be pulled back, much the same as you'd do when popping a wheelie on a bicycle.  It's got both X and Y axis control, but the Y axis would be awfully difficult to use in aiming X-Wing lasers.&lt;br /&gt;
&lt;br /&gt;
*Roadblasters:  This controller looks very much like a Star Wars yoke, to the point that early versions actually had the same metal handgrips, thumb buttons and triggers.  Two things keep Roadblasters from being a yoke:  The handgrips don't move, so there's no Y-axis control; and the electronics are actually optical in nature, rather than potentiometer based.  Determined users have converted these, but it requires considerable new parts, engineering, and metalwork.&lt;br /&gt;
&lt;br /&gt;
*Road Riot 4WD:  This controller looks like it might be a yoke at first glance, but the handles don't move, so there's no Y-axis control.  This is really just a 270 degree analog steering controller.&lt;br /&gt;
&lt;br /&gt;
*Spy Hunter:  With handgrips sporting both triggers and thumb buttons on both sides, the Spy Hunter wheel could be a yoke, if only it had forward/back movement.  It doesn't, though.&lt;br /&gt;
&lt;br /&gt;
== Handlebars ==&lt;br /&gt;
&lt;br /&gt;
Who ever saw a bicycle with a steering wheel?  Well, OK, one kid at my school had one, but that was the exception that proves the rule.  Motorcycle and bicycle games wouldn't be right without a set of handlebars.  In general, handlebars are the same, electronically speaking, as Analog steering wheels.  They use a potentiometer to measure left/right travel, and interface through an A-Pac, AKI, or Dual Strike Hack.  Some handlebars include buttons, brake levers, twistable throttle grips, and even forward-to-back motion (Paperboy and Enduro Racer).&lt;br /&gt;
&lt;br /&gt;
Games that used handlebars include:&lt;br /&gt;
&lt;br /&gt;
*Hang-On&lt;br /&gt;
*Super Hang-On&lt;br /&gt;
*Enduro Racer&lt;br /&gt;
*Paperboy&lt;br /&gt;
*Wild Riders&lt;br /&gt;
*and many more...&lt;br /&gt;
&lt;br /&gt;
== Pedals ==&lt;br /&gt;
&lt;br /&gt;
Gas, brake, and clutch- you can't drive a car without pedals.  Some games used just one for gas, some add a brake, and a few used all three.  There are two basic types of pedals:&lt;br /&gt;
&lt;br /&gt;
''Analog''&lt;br /&gt;
&lt;br /&gt;
Analog pedals use a potentiometer to determine how far the pedal is being pushed, and therefore can tell the game how much gas to use, or how hard to brake.  Analog pedals interface through an AKI, A-Pac, or Dual Strike hack.&lt;br /&gt;
&lt;br /&gt;
''Digital''&lt;br /&gt;
&lt;br /&gt;
Digital pedals are simply &amp;quot;on&amp;quot; or &amp;quot;off&amp;quot;.  Games that used digital pedals cannot tell how much gas or brake you are using, it's all or nothing.  Basically a button for the foot.&lt;br /&gt;
&lt;br /&gt;
== Shifters ==&lt;br /&gt;
&lt;br /&gt;
Some driving games, you just pushed down the pedal and went.  Others looked for more realism, and added a high/low gear shifter.  Other games took it further, with 3, 4, or more gears.  Some shifters also included a &amp;quot;Turbo&amp;quot; button on the handle.&lt;br /&gt;
  &lt;br /&gt;
''Constant-press vs. Momentary-press''&lt;br /&gt;
&lt;br /&gt;
Different shifters report their position to the game differently.  Some push a switch constantly for each gear, while others only close a switch momentarily.  Many use a position where ''no'' switch is closed to indicate one of the gears, or neutral.&lt;br /&gt;
 &lt;br /&gt;
''How MAME handles shifter inputs''&lt;br /&gt;
&lt;br /&gt;
MAME's handling of these different types of shifters is even more unpredictable.  Some games use momentary switches, some use constant.  Some games use the same method that the original controls used for that game; some do not.  Some control schemes can be re-mapped to make use of a different shifter type, and some cannot.&lt;br /&gt;
&lt;br /&gt;
''What's it mean to me?''&lt;br /&gt;
&lt;br /&gt;
What this means is that no one shifter will play every game in MAME.  If you're planning on incorporating a shifter, you will need to do considerable research into the requirements of the games most important to you in order to determine the type of shifter you will need.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Controls]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;br /&gt;
[[Category:Index]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Mame_Lightgun_Setup&amp;diff=11902</id>
		<title>Mame Lightgun Setup</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Mame_Lightgun_Setup&amp;diff=11902"/>
		<updated>2009-01-26T21:26:58Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Basic Setup */   Some updates.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Mame Lightgun Setup - Some Basic Pointers.'''&lt;br /&gt;
&lt;br /&gt;
A lot of the info on this page has been pulled from Derrick Renauds page on Multiple lightgun setups: http://derrick.mameworld.info/lightgun/Act_Labs_Light_Guns_on_XP.html&lt;br /&gt;
&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
Mame has had its analog input code rewritten in recent times (originally before 0.113, but again before 0.129). This has affected how analog devices including lightguns are configured. Here are some basic pointers. (At the moment this is geared towards Windows XP.)&lt;br /&gt;
&lt;br /&gt;
Mame now treats Lightguns much the same as mice.  There are a couple differences between the two though, and different version of mame handle this differently.&lt;br /&gt;
&lt;br /&gt;
Running &amp;quot;'''mame gamename -verbose'''&amp;quot; from the command line.&lt;br /&gt;
tells you what devices MAME finds connected and their numbers.&lt;br /&gt;
&lt;br /&gt;
There are a couple setups that seem to work on different computers, lightgun types, and mame versions:&lt;br /&gt;
* '''mouse 0''', '''lightgun 1''' and '''dual_lightgun 0'''.  This seems to be one of the top two setups in 0.129.&lt;br /&gt;
* '''mouse 1''', '''lightgun 1''' and '''dual_lightgun 0'''.  This seems to be one of the top two setups in 0.129.&lt;br /&gt;
* '''mouse 1''', '''lightgun 0''' and '''dual_lightgun 0'''.  This was the advised setup around 0.113.&lt;br /&gt;
&lt;br /&gt;
NB, If you are using dual lightguns or another another pointing device attached to your system, remember to enable '''multimouse'''.&lt;br /&gt;
&lt;br /&gt;
== Offscreen Reload ==&lt;br /&gt;
If you are running a game that needs you to shoot off screen, you will still need to use the -offscreen_reload command.  This will change the functionality of button 2 to simulate firing off screen, thereby reloading.&lt;br /&gt;
&lt;br /&gt;
NB There may be some issues in some games with offscreen reload. I am not sure that the code currently works with every game.&lt;br /&gt;
&lt;br /&gt;
== Running Mame ==&lt;br /&gt;
&lt;br /&gt;
To use light guns you would use a command similar to this:&lt;br /&gt;
&lt;br /&gt;
'''mame yourgame -mouse -r 800x600 -refresh 60'''&lt;br /&gt;
&lt;br /&gt;
'''yourgame''' = is the name of the romset you are using&lt;br /&gt;
&lt;br /&gt;
'''-r 800x600 -refresh 60''' = sets the game to use a fixed resolution and refresh.  This is so you do not have to constantly re-calibrate your gun.&lt;br /&gt;
&lt;br /&gt;
NB Some guns (e.g. LCD Topgun) are quite resiliant to resolution changes, but it is still probably best to calibrate your guns to one resolution and run all lightgun games in that resolution.&lt;br /&gt;
&lt;br /&gt;
== In Game Setup ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The test setup shown below is a system with 3 mice and 2 light guns.  The mice are Mouse 1, 2 &amp;amp; 3.  The light guns are Lightgun 4 &amp;amp; 5.  This does not mean that you have 4 or 5 light guns.  This is just the mouse position windows assigns them.  With light guns, only the X,Y axis data is different then the mouse data, so you will see the buttons reported as mouse 4 &amp;amp; 5 and the X,Y axis are reported as Lightgun 4 &amp;amp; 5.  Your mouse and light gun numbers may be different then the numbers show here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you are in the game, you will need to select the light gun as a control.  Do this by pressing the [TAB] key.  You will now see this menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Select &amp;quot;Input (this Game)&amp;quot;.  You will now see a menu similar to this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Move down so you can select the fire trigger.  This is &amp;quot;P1 Button 1&amp;quot;.&lt;br /&gt;
Press enter and it will be ready for input like so:&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Press the trigger button on the gun you want to use for player 1.&lt;br /&gt;
You will now see something similar to this.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton4.jpg]]&lt;br /&gt;
&lt;br /&gt;
It shows &amp;quot;Mouse 4 Button 1&amp;quot; instead of &amp;quot;Lightgun 4 Button 1&amp;quot;.  This is normal.&lt;br /&gt;
A light gun is a mouse.  Only the X,Y data is different.&lt;br /&gt;
&lt;br /&gt;
Now we need to move on to selecting the light gun axes.  Move down to highlight the &amp;quot;Lightgun X Analog&amp;quot;.&lt;br /&gt;
Do not press enter yet.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton5.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before we can proceed we need to position the light gun on the left side of the screen.&lt;br /&gt;
Point at the position shown here and fire.&lt;br /&gt;
&lt;br /&gt;
[[Image:Targetleft.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now press enter to allow selection of the light gun's X axis.&lt;br /&gt;
We will now move to the right side of the screen and fire at the position shown here.&lt;br /&gt;
&lt;br /&gt;
[[Image:Targetright.jpg]]&lt;br /&gt;
&lt;br /&gt;
Try and keep the vertical position close to the same line.&lt;br /&gt;
You now should have the X-axis selected as shown here:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton6.jpg]]&lt;br /&gt;
&lt;br /&gt;
We will repeat the procedure for the Y-axis.  Move down to highlight &amp;quot;Lightgun Y Analog&amp;quot;.&lt;br /&gt;
Do not press enter yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton7.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before we can proceed we need to position the light gun on the top half of the screen.&lt;br /&gt;
Point at the position shown here and fire.&lt;br /&gt;
&lt;br /&gt;
[[Image:Targettop.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now press enter to allow selection of the light gun's Y axis.&lt;br /&gt;
We will now move to the bottom half of the screen and fire at the position shown here.&lt;br /&gt;
&lt;br /&gt;
[[Image:Targetbottom.jpg]]&lt;br /&gt;
&lt;br /&gt;
Try and keep the horizontal position close to the same line.  You now should have the Y-axis selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabbutton8.jpg]]&lt;br /&gt;
&lt;br /&gt;
Repeat the whole procedure for the other players as needed.&lt;br /&gt;
&lt;br /&gt;
You are now ready to play.&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Spinner_Turn_Count&amp;diff=11893</id>
		<title>Spinner Turn Count</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Spinner_Turn_Count&amp;diff=11893"/>
		<updated>2009-01-23T17:09:04Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Data */  Offroad has two gearing ratios: Added second type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This is intended to be a page to keep track of the correct turns ratio of spinner/dial/paddle/trackball-controlled arcade games.  Below is comma-separated text, hopefully this is a useful format.&lt;br /&gt;
&lt;br /&gt;
''Q: How do I use this information?''&lt;br /&gt;
&lt;br /&gt;
''A: To tweak the analog sensitivity in MAME to better emulate real hardware.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example from the first link below:&lt;br /&gt;
Tempest, 72 count&lt;br /&gt;
&lt;br /&gt;
if the control you use has 1200 counts per turn, the sensitivity calculation is:&lt;br /&gt;
Sensitivity = 100 * 72 / 1200 = 6%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links (Recommended Reading) ==&lt;br /&gt;
[http://forum.arcadecontrols.com/index.php?topic=61381.0 http://forum.arcadecontrols.com/index.php?topic=61381.0]&lt;br /&gt;
&lt;br /&gt;
[http://forum.arcadecontrols.com/index.php?topic=23967.0 http://forum.arcadecontrols.com/index.php?topic=23967.0]&lt;br /&gt;
&lt;br /&gt;
[http://forum.arcadecontrols.com/index.php?topic=42401.msg474159#msg474159 http://forum.arcadecontrols.com/index.php?topic=42401.msg474159#msg474159]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Effective_Tooth_Count''' = teeth that pass through the optical sensor per revolution of the knob (multiply by any gear ratios to obtain)&lt;br /&gt;
&lt;br /&gt;
'''Counts_Per_Revolution''' = could be 1x, 2x, or 4x of the Effective_Tooth_Count (depends on original hardware interpretation of optical sensor information)&lt;br /&gt;
&lt;br /&gt;
'''Other_Notes''' = quantitative information relating to game play (like degrees of turn from one side of the screen to another - useful for potentiometer games like Warlords)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
! Game !! Effective_Tooth_Count !! Counts_Per_Revolution !! Other_Notes&lt;br /&gt;
|-&lt;br /&gt;
| 720 degrees || 72 || 144 || LETA 2x (schematic)&lt;br /&gt;
|-&lt;br /&gt;
| Arkanoid || 486 || 486 || Geared: The knob attaches to shaft #1, which has a 72 tooth gear on it.  That gear turns a 16 tooth gear on shaft #2.  Shaft #2 also has a 72 tooth gear on it, which then turns a 16 tooth gear on shaft #3.  Shaft #3 also has the encoder wheel on it, which has 24 teeth.  120-130 deg = one traversal across the screen&lt;br /&gt;
|-&lt;br /&gt;
| Aztarac || || 4x || Same spinner as Mad Planets&lt;br /&gt;
|-&lt;br /&gt;
| Blasteroids || 72 || 288 || LETA 4x (schematic)&lt;br /&gt;
|-&lt;br /&gt;
| Crater Raider || 64 || 64 ||&lt;br /&gt;
|-&lt;br /&gt;
| Cameltry || 486 || || Same Spinner as Arkanoid&lt;br /&gt;
|-&lt;br /&gt;
| Dark Planet || 64 || 64 || 6-bit rotary encoder  &lt;br /&gt;
|-&lt;br /&gt;
| Disks of Tron || 128 || 128 ||&lt;br /&gt;
|-&lt;br /&gt;
| Forgotten Worlds || || || geared spinner&lt;br /&gt;
|-&lt;br /&gt;
| Ivan Ironman Offroad || a) 154.286 or &amp;lt;br&amp;gt; b) 164.57 || || Geared: &amp;lt;br&amp;gt; a) 60 teeth on the steering wheel shaft, meshes with a 14 tooth gear on the encoder shaft, which has 36 teeth on its encoder wheel &amp;lt;br&amp;gt; b) 96 teeth on steering wheel shaft, to 14 tooth gear on encoder shaft, which has 24 teeth on encoder wheel.&lt;br /&gt;
|-&lt;br /&gt;
| Kick / Kickman || 12 || || Ball-shaped roller.&lt;br /&gt;
|-&lt;br /&gt;
| Off the Wall || 128 || 256 || LETA 2x (schematic)&lt;br /&gt;
|-&lt;br /&gt;
| Omega Race || 64 || 64 || Omega Race uses a 6-bit (64-position) rotary encoder  &lt;br /&gt;
|-&lt;br /&gt;
| Pole Position &amp;lt;br&amp;gt; Pole Position II || 102 6/7 || 102 6/7 || Geared: 60 tooth gear on wheel shaft, 14 tooth gear on 24 tooth encoder disk shaft =&amp;gt; (60 / 14) * 24 = 102 6/7&lt;br /&gt;
|-&lt;br /&gt;
| Revenge of DOH || 486 || 972 || Same spinner as Arkanoid&lt;br /&gt;
|-&lt;br /&gt;
| RoadBlasters || 154 2/7 || || Wheel/Yoke: 60 tooth gear turns 14 tooth gear with 36 tooth encoder disc. Limited angle of rotation.&lt;br /&gt;
|-&lt;br /&gt;
| Super Speed Race || 64 || 64 || 6-bit rotary encoder  &lt;br /&gt;
|-&lt;br /&gt;
| Tempest || 72 || 72 || 1 full turn moves 5 spaces on first screen&lt;br /&gt;
|-&lt;br /&gt;
| Tron || 128 || 128 ||&lt;br /&gt;
|-&lt;br /&gt;
| Two Tigers (conversion) || 64 || 64 ||&lt;br /&gt;
|-&lt;br /&gt;
| Tac/Scan &amp;lt;br&amp;gt; Star Trek &amp;lt;br&amp;gt; Zektor || 64 || 64 || All use the same spinner&lt;br /&gt;
|-&lt;br /&gt;
| Turbo || || || 2 1/2 turns to go across the screen&lt;br /&gt;
|-&lt;br /&gt;
| Mad Planets || || 1x ||&lt;br /&gt;
|-&lt;br /&gt;
| Subs &amp;lt;br&amp;gt; Monte Carlo &amp;lt;br&amp;gt; Super Sprint &amp;lt;br&amp;gt;  Drag Race &amp;lt;br&amp;gt; Fire Truck || 36 || || &lt;br /&gt;
|-&lt;br /&gt;
| Sprint || 36 || 36 || &lt;br /&gt;
|-&lt;br /&gt;
| Championship Sprint &amp;lt;br&amp;gt; APB &amp;lt;br&amp;gt; || 36 || 72  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trackball Hardware&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
! Trackball !! resolution !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Happ 2.25 inch trackball || 149.2 (no wear) || 2.25 inch ball, 0.362 inch roller, 24 tooth encoder disc&lt;br /&gt;
|-&lt;br /&gt;
| Happ 3 inch trackball || 167.4 (no wear) || 3 inch ball, 0.43 inch roller, 24 tooth encoder disc&lt;br /&gt;
|-&lt;br /&gt;
| Atari 4.5 inch trackball || 330.6 (no wear)|| 4.5 inch ball, 0.49 inch roller, 36 tooth encoder wheel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trackball Games&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
! Game !! Trackball !! Multiplier !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Crystal Castles || Atari/Happ 3 in || 2x ||&lt;br /&gt;
|-&lt;br /&gt;
| Marble Madness || Atari/Happ 3 in || 4x ||&lt;br /&gt;
|-&lt;br /&gt;
| Rampart || Atari/Happ 3 in || 2x ||&lt;br /&gt;
|-&lt;br /&gt;
| Snake Pit || Wico 2.25 in || ||&lt;br /&gt;
|-&lt;br /&gt;
| Cabal || Wico 2.25 in || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pot Based&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
! Game !! Gear Ratio !! Other_Notes&lt;br /&gt;
|-&lt;br /&gt;
| Warlords || 1 || 120-130 deg one traversal end to end of castle&lt;br /&gt;
|-&lt;br /&gt;
| Final Lap || 2/3 ||&lt;br /&gt;
|-&lt;br /&gt;
| Moto Frenzy || 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| Breakout || 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| Super Breakout || 1 || 120-130 deg one traversal across the screen&lt;br /&gt;
|-&lt;br /&gt;
| Star Wars || 15/7 (left/right) 30/7 (up/down) || Yoke&lt;br /&gt;
|-&lt;br /&gt;
| Paperboy || 30/7 (left/right) 30/7 (up/down) || Yoke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Trackball Games:'''&lt;br /&gt;
'''Game Name, Notes'''&lt;br /&gt;
&lt;br /&gt;
Crystal Castles, 1st screen BB moves length of line above his head from center of trackball moved to one side&lt;br /&gt;
&lt;br /&gt;
Centipede, 1 trackball move 1 end to other (stock tb)&lt;br /&gt;
2 1/2 mushroom lengths&lt;br /&gt;
&lt;br /&gt;
Missile Command&lt;br /&gt;
1 full end to end visible trackball movement goes from left to the&lt;br /&gt;
right of the little bump after the missile base&lt;br /&gt;
&lt;br /&gt;
''Atari LETA Chip:''&lt;br /&gt;
several of Atari's optical-control games used the LETA quadrature-decoder chip. It could be set to a 2x or 4x resolution. Therefore all of the below games are either 2x or 4x.&amp;lt;br&amp;gt;&lt;br /&gt;
Major Havoc &amp;lt;br&amp;gt;&lt;br /&gt;
Marble Madness &amp;lt;br&amp;gt;&lt;br /&gt;
Crystal Castles &amp;lt;br&amp;gt;&lt;br /&gt;
Rampart &amp;lt;br&amp;gt;&lt;br /&gt;
Off The Wall &amp;lt;br&amp;gt;&lt;br /&gt;
Blasteroids &amp;lt;br&amp;gt;&lt;br /&gt;
720 &amp;lt;br&amp;gt;&lt;br /&gt;
Championship Sprint &amp;lt;br&amp;gt;&lt;br /&gt;
Super Sprint &amp;lt;br&amp;gt;&lt;br /&gt;
APB &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11887</id>
		<title>Ctrlr file</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11887"/>
		<updated>2009-01-16T17:33:25Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Basic Ctrlr file format */  fixed comment in code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ctrlr file is an additional method of changing Mame's inputs from the defaults, than the standard in-game UI method (&amp;quot;tab&amp;quot;).  Like the standard method of changing inputs, ctrlr files can be used to change the inputs for all games or individual games, but unlike the standard method ctrlr can also change inputs for a parent and all it's clones, or for all games that share a driver in mame's source, or for all games that use the same bios.  The official Mame binary comes with a few ctrlr files for a bunch of commercial control panels: hotrod, hotrodse, x-arcade, and slikstik.&lt;br /&gt;
&lt;br /&gt;
However, its relative steep learning curve, limitations, format changes, and overlapping features with mame's standard input mapping method seem to have curbed the use of the ctrlr files.&lt;br /&gt;
&lt;br /&gt;
== Notes on nomenclature used in this page ==&lt;br /&gt;
&lt;br /&gt;
Since this page is about changing inputs from mame's default values, referring to an input by which key or button to press can be wrong if it had been remapped to something else.  Inputs will be referred to by the name shown in mame's in game UI instead of the key pressed.  For example, the tab key is usually mapped to &amp;quot;Config Menu&amp;quot;; this input will be referred to as &amp;quot;Config Menu (usually tab)&amp;quot; instead of just the tab input.  This is more technically correct and helps show every input in mame can be changed.&lt;br /&gt;
&lt;br /&gt;
== Why use Ctrlr file instead of the normal in game UI method? ==&lt;br /&gt;
&lt;br /&gt;
The most common use of ctrlr files is probably with the commercial control panels: X-Arcade and HotRodSE for the most part.  They have the seven button combination SF2 six button + NeoGeo four button layout, and Mame comes with ctrlr files specifically for these control panels.  With these control panels and the matching ctrlr file, you do not need to do any remapping for most of the games in mame.&lt;br /&gt;
&lt;br /&gt;
The most driving reason to make your own ctrlr file probably is also NeoGeo games and a control panel with a 7 button layout.  The 7 button layout is a way to have the Street Fighter II 6 button rectangle physical layout &amp;amp; NeoGeo's 4 button in a (curved) line physical layout.  However, to use the two different layouts, the buttons need to be reassigned depending on which game is being played.  This can be done by making the changes once with the ctrlr file, or by making the changes many times (once for each NeoGeo game) with the standard method.&lt;br /&gt;
&lt;br /&gt;
Other reasons include &lt;br /&gt;
* Mame rewrites the cfg files every time mame is run, while the ctrlr is not changed by mame ever.  This prevents the ctrlr file from being accidentally changed.&lt;br /&gt;
* If you switch controllers that need different mapping, each controller can have it's own ctrlr file, and only change the -ctrlr option instead of remap every time you switch controllers.&lt;br /&gt;
* Ctrlr file has a slightly better record as being cross version compatible over the standard cfg files.&lt;br /&gt;
* Copying remaps within the ctrlr file to different games is much more reliable than it is with copying cfg files.&lt;br /&gt;
&lt;br /&gt;
== How to Use a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
It is easy to use an existing ctrlr file, such as those provided with mame or one you made your own.  Currently, mameUI does not provide the ctrlr files included with the [http://mamedev.org/ official mame], but you can download the vinalla mame binary and extract the ctrlr files to the mameUI ctrlr folder.&lt;br /&gt;
&lt;br /&gt;
If the file is in the ctrlr subfolder, note the name (not including the &amp;quot;.cfg&amp;quot;) of the ctrlr file you want to use, and edit mame.ini so &amp;quot;ctrlr ''ctrlrFileName''&amp;quot;.  In mameUI, go into the defaut game properties, &amp;quot;Controllers&amp;quot; tab; the ctrlr files will be options in the &amp;quot;Default input layout&amp;quot; drop down list.&lt;br /&gt;
&lt;br /&gt;
You can also put the ctrlr file in a different folder.  Then you will also need to edit the ctrlrpath option to include the folder the ctrlr file is in.  This can be used to share one ctrlr file between different versions of mame.&lt;br /&gt;
&lt;br /&gt;
== How to Create a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
There are a few ways to make ctrlr files.  And since the ctrlr file format has changed a couple times, the methods have changed.  The following sections will cover from mame 0.106 to current (0.128).&lt;br /&gt;
&lt;br /&gt;
=== Basic Ctrlr file format ===&lt;br /&gt;
&lt;br /&gt;
The ctrlr file is an XML file, and almost matches the cfg default.cfg file which mame uses to save the general input changes.  A very simple example of a file that could either be a ctrlr file or the cfg default.cfg file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;mameconfig version=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;&lt;br /&gt;
             &amp;lt;port type=&amp;quot;UI_LEFT&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                     KEYCODE_LEFT OR KEYCODE_LCONTROL&lt;br /&gt;
                 &amp;lt;/newseq&amp;gt;&lt;br /&gt;
             &amp;lt;/port&amp;gt;&lt;br /&gt;
            &amp;lt;port type=&amp;quot;UI_RIGHT&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                    KEYCODE_RIGHT OR KEYCODE_LALT&lt;br /&gt;
                &amp;lt;/newseq&amp;gt;&lt;br /&gt;
            &amp;lt;/port&amp;gt;&lt;br /&gt;
         &amp;lt;/input&amp;gt;&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;|-- ctrlr file only --&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;systemname&amp;quot;&amp;gt;&lt;br /&gt;
         ....&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
     ....&lt;br /&gt;
   &amp;lt;|-- end of ctrlr file only --&amp;gt;&lt;br /&gt;
 &amp;lt;/mameconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As shown, there can be multiple port nodes within the input node.  The only difference in format of the ctrlr file and the cfg default.cfg file is the ctrlr file can have multiple system nodes in the mameconfig node, while the cfg default.cfg file can only have one system node which has to be named &amp;quot;default&amp;quot;.  The additional system nodes can have the name of a specific game, a parent game, a bios name, a mame driver file name, or &amp;quot;default&amp;quot;.  The system name tells mame to which games to apply the changes within that system node.&lt;br /&gt;
&lt;br /&gt;
FWIW, the example, if everything else is left at default, lets you press player1 button1 (usually LCtrl) then player1 button2 (usually LAlt) inaddition to &amp;quot;O&amp;quot; &amp;quot;K&amp;quot; or wiggling the joystick (left arrow then right arrow) assuming your control panel has p1b1 sending LCtrl, p1b2 sending LAtl, pl joy left sending left arrow, and p1 joy right sending right arrow.&lt;br /&gt;
&lt;br /&gt;
Also see [[#Order Matters]]&lt;br /&gt;
&lt;br /&gt;
=== Edit the Ctrlr files provided with mame ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to make your own ctrlr file might be by editing one of the ctrlr files supplied with mame binary (mameUI does not provide these ATM, but does have a sample ctrlr file).  Editing a provided ctrlr file might be the way to go if you are changing the same inputs for the same games as already in the provided ctrlr file.  &lt;br /&gt;
&lt;br /&gt;
=== Remap and Test with the standard in game UI method and Convert to Ctrlr file ===&lt;br /&gt;
&lt;br /&gt;
However, the most flexible way to make your own ctrlr file to match your own inputs is more in depth.  You will need a text editor to edit the files, and will run mame many times.  Since [[#Order Matters|Order Matters]] it is best to start with mapping on the widest level and move down; start with the default (every game), than move to driver or bios wide changes, then to the driver's parent games, then to the parent's clone games.&lt;br /&gt;
&lt;br /&gt;
==== Prep before starting ====&lt;br /&gt;
#Delete (or move to a different folder for backup) cfg/default.cfg file and all game cfg files that you are going to put in the ctrlr file.  (Alternative: remove all game specific remaps by either hand editing the cfg files or with mame's in-game UI, if you want to keep some of the other settings saved in the cfg files.)&lt;br /&gt;
#If you have your OS to hide file type extensions, either disable that or ignore the &amp;quot;.cfg&amp;quot; in the following file names.&lt;br /&gt;
&lt;br /&gt;
==== Start with general (every game) remapping ====&lt;br /&gt;
If you already have a ctrlr file and want to use it, skip to Add more systems.&lt;br /&gt;
#Edit mame.ini so ctrlr is set to blank.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Start any game in mame.  &lt;br /&gt;
#Press Config Menu (usually tab) to start mame's in-game ui&lt;br /&gt;
#Press UI Select (usually enter) &amp;quot;Input (general)&amp;quot;&lt;br /&gt;
#Remap any and all inputs you want to be applied to all games, as normal.&lt;br /&gt;
#Test remapping by playing the game.  If you need to make any corrections, repeating from step #3.&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Move cfg/default.cfg to the ctrlr folder in mame.&lt;br /&gt;
#Rename ctrlr/default.cfg to anything you want ctrlr/''fillInNameHere''.cfg&lt;br /&gt;
#Edit mame.ini to point to whatever you named the file in the ctrlr folder (ctrlr ''fillInNameHere'')&lt;br /&gt;
#(If it still exists) delete cfg/default.cfg file.&lt;br /&gt;
&lt;br /&gt;
==== Add more game specific systems ====&lt;br /&gt;
This is similar to, but not exactly the same, as the starting step.  You can also start here if you started with a supplied mame ctrlr file and want to add a new system node (driver or game).  Also look at [[#Shortcuts]] for other methods.&lt;br /&gt;
#Edit mame.ini to point to your ctrlr file if you haven't already.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Decide if you want to remap on the driver, parent, or clone level.  (Reminder, start with driver, then it's parents, then their clones.)  &lt;br /&gt;
#Find the name of the driver, parent or clone and note it down.  Neogeo games bios is &amp;quot;neogeo&amp;quot;; to find the driver name for other games, &amp;quot;mame -ls ''gamename''&amp;quot;, or use [http://www.mameworld.net/maws/ MAWS] or mame's listxml file.&lt;br /&gt;
#Start that game (or a game in that driver).  (You could start any game, but it's best to start the specific game for testing and reference to what input ports are used.)&lt;br /&gt;
#Again, press Config Menu and select &amp;quot;Input (general)&amp;quot;.  &amp;lt;--- NOT &amp;quot;Input (this game)&amp;quot;.  You can look there to see what input ports are used by the game, but remap in the &amp;quot;Input (general)&amp;quot; location.&lt;br /&gt;
#Again, remap any and all changes you want for this driver, parent or clone.&lt;br /&gt;
#Test remapping.  (make any needed corrections)&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Open cfg/default.cfg in a text editor.&lt;br /&gt;
#Copy the whole system node, from (and including) &amp;lt;system name= to &amp;lt;/system&amp;gt;.&lt;br /&gt;
#Open your ctrlr file.&lt;br /&gt;
#Paste the copied system node into the ctrlr file.  If you have been working from the drivers down to the parents to the clone, you can paste as the last system, just before the closing &amp;lt;/mameconfig&amp;gt;.  If you have not been as careful on the order you're remapping, make sure you paste the new system node in a correct place read [[#Order Matters|Order Matters]].&lt;br /&gt;
#Rename the system name to the driver, parent or clone you noted in step 2.  Example if for neogeo, change to &amp;lt;system name=&amp;quot;neogeo&amp;quot;&amp;gt;.&lt;br /&gt;
#Save (and exit) the ctrlr file.&lt;br /&gt;
#Exit (without saving) the default cfg file.&lt;br /&gt;
#Delete the cfg default.cfg file.&lt;br /&gt;
#Test game(s) inputs.&lt;br /&gt;
#Repeat as needed for all drivers/games you want to remap.  Remember, if you remap a parent, you do not need to remap a clone unless you want the clone to be different (or the clone used different input ports).&lt;br /&gt;
&lt;br /&gt;
==== Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
There are a few shortcuts that can be done in certain cases.&lt;br /&gt;
&lt;br /&gt;
*If you have an input mapping that is common between games that do not share a parent or driver, you don't have to do all the steps for adding more systems for both games.  For the second game, start at step #10 and rename to the new game.  You can copy from within the ctrlr file itself, too.&lt;br /&gt;
*You can make other hand edits to the ctrlr file, as the XML is fairly human readable.&lt;br /&gt;
&lt;br /&gt;
== Limitations and their Workarounds ==&lt;br /&gt;
=== Games with &amp;quot;Hardcoded&amp;quot; Inputs ===&lt;br /&gt;
&lt;br /&gt;
Some games remap an input port or two to inputs different than the default values.  Even though these are much like other input ports and can be remapped with mame's in game UI menu, these are often called &amp;quot;hardcoded&amp;quot; as they are incorrectly thought as unable to be remappable through ctrlr files.&lt;br /&gt;
&lt;br /&gt;
Games with hardcoded input, however, do need additional steps to use the ctrlr set inputs instead of the &amp;quot;hardcoded&amp;quot; values.  You have to go into each of the offending game's cfg file and reset the &amp;quot;hardcoded&amp;quot; input ports to not use the hardcoded values.  This is easiest done with mame's in game UI &amp;quot;Inputs (this game)&amp;quot;.  Note: There is [http://mametesters.org/mantis/view.php?id=2171 a bug] starting from 0.126 to current (0.128) that needs more steps, including hand editing the cfg files.&lt;br /&gt;
&lt;br /&gt;
#Start the game with hardcoded inputs you don't want to use.&lt;br /&gt;
#Press Config Menu (usually tab) to enter mame's in game UI.&lt;br /&gt;
#Select &amp;quot;Input (this game)&amp;quot;, by pressing UI Select (usually enter).&lt;br /&gt;
#Select the hardcoded input port you want to change (it will be reverse highlighted).&lt;br /&gt;
#Press UI Cancel (usually esc).&lt;br /&gt;
#Wait until mame shows &amp;quot;None&amp;quot;.  If mame 0.126 or later, skip to step 9 and see the extra steps.&lt;br /&gt;
#Select, then UI Cancel, again.&lt;br /&gt;
#Wait until mame shows the setting by the ctrlr file (it will not be reverse highlighted).&lt;br /&gt;
#Repeat steps 4-8 for all hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
#Repeat steps 1-9 for the games with hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
&lt;br /&gt;
Extra Steps&lt;br /&gt;
#Exit mame&lt;br /&gt;
#Open the cfg files you just changed in a text editor.&lt;br /&gt;
#Replace all &amp;quot;NONE&amp;quot; with &amp;quot;DEFAULT&amp;quot;&lt;br /&gt;
#Save the files&lt;br /&gt;
&lt;br /&gt;
The problem with these work arounds is you need to edit cfg files, while one of the main reasons to use a ctrlr file is to avoid doing this.&lt;br /&gt;
&lt;br /&gt;
Other ways around the &amp;quot;hardcoded&amp;quot; hassle, including editing the source and recompiling, will not be described here.&lt;br /&gt;
&lt;br /&gt;
=== Order Matters ===&lt;br /&gt;
&lt;br /&gt;
Mame does not exactly enforce a specific order to the different system nodes within the ctrlr files.  However the order does make a difference in the final mapping if different systems that are applied to a game with the same port type(s) differently in different system nodes that apply to the game.  Mame reads the ctrlr file from top to bottom, and checks if each system node should be applied to the game, and applies the changes ''in the order the systems are in the ctrlr file'' overriding any mapping for all ports changed.&lt;br /&gt;
&lt;br /&gt;
So to make sure all changes are correctly applied, (referred hereafter as the ctrlr rules of order): &lt;br /&gt;
*Clones should come after their parent, &lt;br /&gt;
*Parents (and clones) should come after their driver and bios, and&lt;br /&gt;
*Drivers and Bios (and parents &amp;amp; clones) should come after &amp;quot;default&amp;quot; system,&lt;br /&gt;
:: *Usually bios and drivers can be thought of as the &amp;quot;same level&amp;quot;, as usually if a bios exists there is one and only one driver that has all games with that bios and only those games, but theoretically a bios can be across multiple drivers or a driver can hold bios and non-bios games. &lt;br /&gt;
&lt;br /&gt;
Keeping the order can be done a couple ways, or a mix of them.  The easiest rule is: default, then all drivers/bios, then all parents, then all clones.  However this separates the clones from their parents and the parents from their drivers.  It might be easier to upkeep if all of the parents come immediately after their driver, and all clones immediately after their parents.  But neither these have to be exactly followed, as long as the ctrlr rules of order are followed.&lt;br /&gt;
&lt;br /&gt;
Valid examples:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;34%&amp;quot;|&lt;br /&gt;
default-&amp;gt;drivers-&amp;gt;parents-&amp;gt;clones&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
grouped by driver, parent, clone&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;quot;disorganized order&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
:clone Bbb2c1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ctrlr file does not do ... ===&lt;br /&gt;
&lt;br /&gt;
You cannot use the Ctrlr file to:&lt;br /&gt;
*Set analog sensitivity, digital speed, center speed. - These are set in mame's in game UI &amp;quot;Analog Controls&amp;quot;, and saved in the cfg files.&lt;br /&gt;
*Change volume, CPU speed or other On Screen Display (usually tilde unless remapped) settings&lt;br /&gt;
&lt;br /&gt;
=== My ctrlr worked but doesn't anymore ===&lt;br /&gt;
&lt;br /&gt;
The cause could be some minor error to something bigger.&lt;br /&gt;
&lt;br /&gt;
*Check that the ctrlr file still exists in the right location, and is not corrupt.&lt;br /&gt;
*If you updated mame, check if mame.ini points at your ctrlr file.&lt;br /&gt;
*If you just edited the ctrlr file, check if the system nodes are in the correct order.&lt;br /&gt;
*Make sure no one remapped using mame's in-game UI (the normal remapping method).  If you know everything you want remapped is in the ctrlr, you could delete everything in the cfg folder (warning: the game specific cfg files hold more than just input remaps).&lt;br /&gt;
*Mame might have changed the ctrlr and/or cfg file format.  This might be able to be fixed with a simple find and replace, or in the worst case you might need to completely redo making the ctrlr file depending on what changed.&lt;br /&gt;
&lt;br /&gt;
== History of Ctrlr files ==&lt;br /&gt;
The ctrlr files inspiration came from the need to remove the hardcoding of special input maps for specific commercial arcade control panels from mame's source, but was designed to do more than be just a replacement.  It has had two major revisions and many minor.  It started in a different format with .ini file endings.  When mame changed the cfg file format to xml, the old format was dropped, and a couple versions later, a new xml based ctrlr was re-added.&lt;br /&gt;
== Technical Stuff ==&lt;br /&gt;
Some technical information&lt;br /&gt;
=== Differences between Ctrlr file and Cfg files ===&lt;br /&gt;
The ctrlr file and the default.cfg file only save input remaps.  The game specific cfg file saves much more than just input remaps, including: analog settings, input location in the driver, dipswitch settings, sound and video settings, and other info.&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11886</id>
		<title>Ctrlr file</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11886"/>
		<updated>2009-01-16T17:31:49Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Basic Ctrlr file format */  adding second system to ctrlr file format example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ctrlr file is an additional method of changing Mame's inputs from the defaults, than the standard in-game UI method (&amp;quot;tab&amp;quot;).  Like the standard method of changing inputs, ctrlr files can be used to change the inputs for all games or individual games, but unlike the standard method ctrlr can also change inputs for a parent and all it's clones, or for all games that share a driver in mame's source, or for all games that use the same bios.  The official Mame binary comes with a few ctrlr files for a bunch of commercial control panels: hotrod, hotrodse, x-arcade, and slikstik.&lt;br /&gt;
&lt;br /&gt;
However, its relative steep learning curve, limitations, format changes, and overlapping features with mame's standard input mapping method seem to have curbed the use of the ctrlr files.&lt;br /&gt;
&lt;br /&gt;
== Notes on nomenclature used in this page ==&lt;br /&gt;
&lt;br /&gt;
Since this page is about changing inputs from mame's default values, referring to an input by which key or button to press can be wrong if it had been remapped to something else.  Inputs will be referred to by the name shown in mame's in game UI instead of the key pressed.  For example, the tab key is usually mapped to &amp;quot;Config Menu&amp;quot;; this input will be referred to as &amp;quot;Config Menu (usually tab)&amp;quot; instead of just the tab input.  This is more technically correct and helps show every input in mame can be changed.&lt;br /&gt;
&lt;br /&gt;
== Why use Ctrlr file instead of the normal in game UI method? ==&lt;br /&gt;
&lt;br /&gt;
The most common use of ctrlr files is probably with the commercial control panels: X-Arcade and HotRodSE for the most part.  They have the seven button combination SF2 six button + NeoGeo four button layout, and Mame comes with ctrlr files specifically for these control panels.  With these control panels and the matching ctrlr file, you do not need to do any remapping for most of the games in mame.&lt;br /&gt;
&lt;br /&gt;
The most driving reason to make your own ctrlr file probably is also NeoGeo games and a control panel with a 7 button layout.  The 7 button layout is a way to have the Street Fighter II 6 button rectangle physical layout &amp;amp; NeoGeo's 4 button in a (curved) line physical layout.  However, to use the two different layouts, the buttons need to be reassigned depending on which game is being played.  This can be done by making the changes once with the ctrlr file, or by making the changes many times (once for each NeoGeo game) with the standard method.&lt;br /&gt;
&lt;br /&gt;
Other reasons include &lt;br /&gt;
* Mame rewrites the cfg files every time mame is run, while the ctrlr is not changed by mame ever.  This prevents the ctrlr file from being accidentally changed.&lt;br /&gt;
* If you switch controllers that need different mapping, each controller can have it's own ctrlr file, and only change the -ctrlr option instead of remap every time you switch controllers.&lt;br /&gt;
* Ctrlr file has a slightly better record as being cross version compatible over the standard cfg files.&lt;br /&gt;
* Copying remaps within the ctrlr file to different games is much more reliable than it is with copying cfg files.&lt;br /&gt;
&lt;br /&gt;
== How to Use a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
It is easy to use an existing ctrlr file, such as those provided with mame or one you made your own.  Currently, mameUI does not provide the ctrlr files included with the [http://mamedev.org/ official mame], but you can download the vinalla mame binary and extract the ctrlr files to the mameUI ctrlr folder.&lt;br /&gt;
&lt;br /&gt;
If the file is in the ctrlr subfolder, note the name (not including the &amp;quot;.cfg&amp;quot;) of the ctrlr file you want to use, and edit mame.ini so &amp;quot;ctrlr ''ctrlrFileName''&amp;quot;.  In mameUI, go into the defaut game properties, &amp;quot;Controllers&amp;quot; tab; the ctrlr files will be options in the &amp;quot;Default input layout&amp;quot; drop down list.&lt;br /&gt;
&lt;br /&gt;
You can also put the ctrlr file in a different folder.  Then you will also need to edit the ctrlrpath option to include the folder the ctrlr file is in.  This can be used to share one ctrlr file between different versions of mame.&lt;br /&gt;
&lt;br /&gt;
== How to Create a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
There are a few ways to make ctrlr files.  And since the ctrlr file format has changed a couple times, the methods have changed.  The following sections will cover from mame 0.106 to current (0.128).&lt;br /&gt;
&lt;br /&gt;
=== Basic Ctrlr file format ===&lt;br /&gt;
&lt;br /&gt;
The ctrlr file is an XML file, and almost matches the cfg default.cfg file which mame uses to save the general input changes.  A very simple example of a file that could either be a ctrlr file or the cfg default.cfg file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;mameconfig version=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;&lt;br /&gt;
             &amp;lt;port type=&amp;quot;UI_LEFT&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                     KEYCODE_LEFT OR KEYCODE_LCONTROL&lt;br /&gt;
                 &amp;lt;/newseq&amp;gt;&lt;br /&gt;
             &amp;lt;/port&amp;gt;&lt;br /&gt;
            &amp;lt;port type=&amp;quot;UI_RIGHT&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                    KEYCODE_RIGHT OR KEYCODE_LALT&lt;br /&gt;
                &amp;lt;/newseq&amp;gt;&lt;br /&gt;
            &amp;lt;/port&amp;gt;&lt;br /&gt;
         &amp;lt;/input&amp;gt;&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ctrlr file only --&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;systemname&amp;quot;&amp;gt;&lt;br /&gt;
         ....&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
     ....&lt;br /&gt;
&amp;lt;1-- end of ctrlr file only --&amp;gt;&lt;br /&gt;
 &amp;lt;/mameconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As shown, there can be multiple port nodes within the input node.  The only difference in format of the ctrlr file and the cfg default.cfg file is the ctrlr file can have multiple system nodes in the mameconfig node, while the cfg default.cfg file can only have one system node which has to be named &amp;quot;default&amp;quot;.  The additional system nodes can have the name of a specific game, a parent game, a bios name, a mame driver file name, or &amp;quot;default&amp;quot;.  The system name tells mame to which games to apply the changes within that system node.&lt;br /&gt;
&lt;br /&gt;
FWIW, the example, if everything else is left at default, lets you press player1 button1 (usually LCtrl) then player1 button2 (usually LAlt) inaddition to &amp;quot;O&amp;quot; &amp;quot;K&amp;quot; or wiggling the joystick (left arrow then right arrow) assuming your control panel has p1b1 sending LCtrl, p1b2 sending LAtl, pl joy left sending left arrow, and p1 joy right sending right arrow.&lt;br /&gt;
&lt;br /&gt;
Also see [[#Order Matters]]&lt;br /&gt;
&lt;br /&gt;
=== Edit the Ctrlr files provided with mame ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to make your own ctrlr file might be by editing one of the ctrlr files supplied with mame binary (mameUI does not provide these ATM, but does have a sample ctrlr file).  Editing a provided ctrlr file might be the way to go if you are changing the same inputs for the same games as already in the provided ctrlr file.  &lt;br /&gt;
&lt;br /&gt;
=== Remap and Test with the standard in game UI method and Convert to Ctrlr file ===&lt;br /&gt;
&lt;br /&gt;
However, the most flexible way to make your own ctrlr file to match your own inputs is more in depth.  You will need a text editor to edit the files, and will run mame many times.  Since [[#Order Matters|Order Matters]] it is best to start with mapping on the widest level and move down; start with the default (every game), than move to driver or bios wide changes, then to the driver's parent games, then to the parent's clone games.&lt;br /&gt;
&lt;br /&gt;
==== Prep before starting ====&lt;br /&gt;
#Delete (or move to a different folder for backup) cfg/default.cfg file and all game cfg files that you are going to put in the ctrlr file.  (Alternative: remove all game specific remaps by either hand editing the cfg files or with mame's in-game UI, if you want to keep some of the other settings saved in the cfg files.)&lt;br /&gt;
#If you have your OS to hide file type extensions, either disable that or ignore the &amp;quot;.cfg&amp;quot; in the following file names.&lt;br /&gt;
&lt;br /&gt;
==== Start with general (every game) remapping ====&lt;br /&gt;
If you already have a ctrlr file and want to use it, skip to Add more systems.&lt;br /&gt;
#Edit mame.ini so ctrlr is set to blank.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Start any game in mame.  &lt;br /&gt;
#Press Config Menu (usually tab) to start mame's in-game ui&lt;br /&gt;
#Press UI Select (usually enter) &amp;quot;Input (general)&amp;quot;&lt;br /&gt;
#Remap any and all inputs you want to be applied to all games, as normal.&lt;br /&gt;
#Test remapping by playing the game.  If you need to make any corrections, repeating from step #3.&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Move cfg/default.cfg to the ctrlr folder in mame.&lt;br /&gt;
#Rename ctrlr/default.cfg to anything you want ctrlr/''fillInNameHere''.cfg&lt;br /&gt;
#Edit mame.ini to point to whatever you named the file in the ctrlr folder (ctrlr ''fillInNameHere'')&lt;br /&gt;
#(If it still exists) delete cfg/default.cfg file.&lt;br /&gt;
&lt;br /&gt;
==== Add more game specific systems ====&lt;br /&gt;
This is similar to, but not exactly the same, as the starting step.  You can also start here if you started with a supplied mame ctrlr file and want to add a new system node (driver or game).  Also look at [[#Shortcuts]] for other methods.&lt;br /&gt;
#Edit mame.ini to point to your ctrlr file if you haven't already.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Decide if you want to remap on the driver, parent, or clone level.  (Reminder, start with driver, then it's parents, then their clones.)  &lt;br /&gt;
#Find the name of the driver, parent or clone and note it down.  Neogeo games bios is &amp;quot;neogeo&amp;quot;; to find the driver name for other games, &amp;quot;mame -ls ''gamename''&amp;quot;, or use [http://www.mameworld.net/maws/ MAWS] or mame's listxml file.&lt;br /&gt;
#Start that game (or a game in that driver).  (You could start any game, but it's best to start the specific game for testing and reference to what input ports are used.)&lt;br /&gt;
#Again, press Config Menu and select &amp;quot;Input (general)&amp;quot;.  &amp;lt;--- NOT &amp;quot;Input (this game)&amp;quot;.  You can look there to see what input ports are used by the game, but remap in the &amp;quot;Input (general)&amp;quot; location.&lt;br /&gt;
#Again, remap any and all changes you want for this driver, parent or clone.&lt;br /&gt;
#Test remapping.  (make any needed corrections)&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Open cfg/default.cfg in a text editor.&lt;br /&gt;
#Copy the whole system node, from (and including) &amp;lt;system name= to &amp;lt;/system&amp;gt;.&lt;br /&gt;
#Open your ctrlr file.&lt;br /&gt;
#Paste the copied system node into the ctrlr file.  If you have been working from the drivers down to the parents to the clone, you can paste as the last system, just before the closing &amp;lt;/mameconfig&amp;gt;.  If you have not been as careful on the order you're remapping, make sure you paste the new system node in a correct place read [[#Order Matters|Order Matters]].&lt;br /&gt;
#Rename the system name to the driver, parent or clone you noted in step 2.  Example if for neogeo, change to &amp;lt;system name=&amp;quot;neogeo&amp;quot;&amp;gt;.&lt;br /&gt;
#Save (and exit) the ctrlr file.&lt;br /&gt;
#Exit (without saving) the default cfg file.&lt;br /&gt;
#Delete the cfg default.cfg file.&lt;br /&gt;
#Test game(s) inputs.&lt;br /&gt;
#Repeat as needed for all drivers/games you want to remap.  Remember, if you remap a parent, you do not need to remap a clone unless you want the clone to be different (or the clone used different input ports).&lt;br /&gt;
&lt;br /&gt;
==== Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
There are a few shortcuts that can be done in certain cases.&lt;br /&gt;
&lt;br /&gt;
*If you have an input mapping that is common between games that do not share a parent or driver, you don't have to do all the steps for adding more systems for both games.  For the second game, start at step #10 and rename to the new game.  You can copy from within the ctrlr file itself, too.&lt;br /&gt;
*You can make other hand edits to the ctrlr file, as the XML is fairly human readable.&lt;br /&gt;
&lt;br /&gt;
== Limitations and their Workarounds ==&lt;br /&gt;
=== Games with &amp;quot;Hardcoded&amp;quot; Inputs ===&lt;br /&gt;
&lt;br /&gt;
Some games remap an input port or two to inputs different than the default values.  Even though these are much like other input ports and can be remapped with mame's in game UI menu, these are often called &amp;quot;hardcoded&amp;quot; as they are incorrectly thought as unable to be remappable through ctrlr files.&lt;br /&gt;
&lt;br /&gt;
Games with hardcoded input, however, do need additional steps to use the ctrlr set inputs instead of the &amp;quot;hardcoded&amp;quot; values.  You have to go into each of the offending game's cfg file and reset the &amp;quot;hardcoded&amp;quot; input ports to not use the hardcoded values.  This is easiest done with mame's in game UI &amp;quot;Inputs (this game)&amp;quot;.  Note: There is [http://mametesters.org/mantis/view.php?id=2171 a bug] starting from 0.126 to current (0.128) that needs more steps, including hand editing the cfg files.&lt;br /&gt;
&lt;br /&gt;
#Start the game with hardcoded inputs you don't want to use.&lt;br /&gt;
#Press Config Menu (usually tab) to enter mame's in game UI.&lt;br /&gt;
#Select &amp;quot;Input (this game)&amp;quot;, by pressing UI Select (usually enter).&lt;br /&gt;
#Select the hardcoded input port you want to change (it will be reverse highlighted).&lt;br /&gt;
#Press UI Cancel (usually esc).&lt;br /&gt;
#Wait until mame shows &amp;quot;None&amp;quot;.  If mame 0.126 or later, skip to step 9 and see the extra steps.&lt;br /&gt;
#Select, then UI Cancel, again.&lt;br /&gt;
#Wait until mame shows the setting by the ctrlr file (it will not be reverse highlighted).&lt;br /&gt;
#Repeat steps 4-8 for all hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
#Repeat steps 1-9 for the games with hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
&lt;br /&gt;
Extra Steps&lt;br /&gt;
#Exit mame&lt;br /&gt;
#Open the cfg files you just changed in a text editor.&lt;br /&gt;
#Replace all &amp;quot;NONE&amp;quot; with &amp;quot;DEFAULT&amp;quot;&lt;br /&gt;
#Save the files&lt;br /&gt;
&lt;br /&gt;
The problem with these work arounds is you need to edit cfg files, while one of the main reasons to use a ctrlr file is to avoid doing this.&lt;br /&gt;
&lt;br /&gt;
Other ways around the &amp;quot;hardcoded&amp;quot; hassle, including editing the source and recompiling, will not be described here.&lt;br /&gt;
&lt;br /&gt;
=== Order Matters ===&lt;br /&gt;
&lt;br /&gt;
Mame does not exactly enforce a specific order to the different system nodes within the ctrlr files.  However the order does make a difference in the final mapping if different systems that are applied to a game with the same port type(s) differently in different system nodes that apply to the game.  Mame reads the ctrlr file from top to bottom, and checks if each system node should be applied to the game, and applies the changes ''in the order the systems are in the ctrlr file'' overriding any mapping for all ports changed.&lt;br /&gt;
&lt;br /&gt;
So to make sure all changes are correctly applied, (referred hereafter as the ctrlr rules of order): &lt;br /&gt;
*Clones should come after their parent, &lt;br /&gt;
*Parents (and clones) should come after their driver and bios, and&lt;br /&gt;
*Drivers and Bios (and parents &amp;amp; clones) should come after &amp;quot;default&amp;quot; system,&lt;br /&gt;
:: *Usually bios and drivers can be thought of as the &amp;quot;same level&amp;quot;, as usually if a bios exists there is one and only one driver that has all games with that bios and only those games, but theoretically a bios can be across multiple drivers or a driver can hold bios and non-bios games. &lt;br /&gt;
&lt;br /&gt;
Keeping the order can be done a couple ways, or a mix of them.  The easiest rule is: default, then all drivers/bios, then all parents, then all clones.  However this separates the clones from their parents and the parents from their drivers.  It might be easier to upkeep if all of the parents come immediately after their driver, and all clones immediately after their parents.  But neither these have to be exactly followed, as long as the ctrlr rules of order are followed.&lt;br /&gt;
&lt;br /&gt;
Valid examples:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;34%&amp;quot;|&lt;br /&gt;
default-&amp;gt;drivers-&amp;gt;parents-&amp;gt;clones&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
grouped by driver, parent, clone&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;quot;disorganized order&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
:clone Bbb2c1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ctrlr file does not do ... ===&lt;br /&gt;
&lt;br /&gt;
You cannot use the Ctrlr file to:&lt;br /&gt;
*Set analog sensitivity, digital speed, center speed. - These are set in mame's in game UI &amp;quot;Analog Controls&amp;quot;, and saved in the cfg files.&lt;br /&gt;
*Change volume, CPU speed or other On Screen Display (usually tilde unless remapped) settings&lt;br /&gt;
&lt;br /&gt;
=== My ctrlr worked but doesn't anymore ===&lt;br /&gt;
&lt;br /&gt;
The cause could be some minor error to something bigger.&lt;br /&gt;
&lt;br /&gt;
*Check that the ctrlr file still exists in the right location, and is not corrupt.&lt;br /&gt;
*If you updated mame, check if mame.ini points at your ctrlr file.&lt;br /&gt;
*If you just edited the ctrlr file, check if the system nodes are in the correct order.&lt;br /&gt;
*Make sure no one remapped using mame's in-game UI (the normal remapping method).  If you know everything you want remapped is in the ctrlr, you could delete everything in the cfg folder (warning: the game specific cfg files hold more than just input remaps).&lt;br /&gt;
*Mame might have changed the ctrlr and/or cfg file format.  This might be able to be fixed with a simple find and replace, or in the worst case you might need to completely redo making the ctrlr file depending on what changed.&lt;br /&gt;
&lt;br /&gt;
== History of Ctrlr files ==&lt;br /&gt;
The ctrlr files inspiration came from the need to remove the hardcoding of special input maps for specific commercial arcade control panels from mame's source, but was designed to do more than be just a replacement.  It has had two major revisions and many minor.  It started in a different format with .ini file endings.  When mame changed the cfg file format to xml, the old format was dropped, and a couple versions later, a new xml based ctrlr was re-added.&lt;br /&gt;
== Technical Stuff ==&lt;br /&gt;
Some technical information&lt;br /&gt;
=== Differences between Ctrlr file and Cfg files ===&lt;br /&gt;
The ctrlr file and the default.cfg file only save input remaps.  The game specific cfg file saves much more than just input remaps, including: analog settings, input location in the driver, dipswitch settings, sound and video settings, and other info.&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11836</id>
		<title>Ctrlr file</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11836"/>
		<updated>2008-12-02T20:14:20Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: Updated parts and fixed a bunch of minor typos &amp;amp; wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ctrlr file is an additional method of changing Mame's inputs from the defaults, than the standard in-game UI method (&amp;quot;tab&amp;quot;).  Like the standard method of changing inputs, ctrlr files can be used to change the inputs for all games or individual games, but unlike the standard method ctrlr can also change inputs for a parent and all it's clones, or for all games that share a driver in mame's source, or for all games that use the same bios.  The official Mame binary comes with a few ctrlr files for a bunch of commercial control panels: hotrod, hotrodse, x-arcade, and slikstik.&lt;br /&gt;
&lt;br /&gt;
However, its relative steep learning curve, limitations, format changes, and overlapping features with mame's standard input mapping method seem to have curbed the use of the ctrlr files.&lt;br /&gt;
&lt;br /&gt;
== Notes on nomenclature used in this page ==&lt;br /&gt;
&lt;br /&gt;
Since this page is about changing inputs from mame's default values, referring to an input by which key or button to press can be wrong if it had been remapped to something else.  Inputs will be referred to by the name shown in mame's in game UI instead of the key pressed.  For example, the tab key is usually mapped to &amp;quot;Config Menu&amp;quot;; this input will be referred to as &amp;quot;Config Menu (usually tab)&amp;quot; instead of just the tab input.  This is more technically correct and helps show every input in mame can be changed.&lt;br /&gt;
&lt;br /&gt;
== Why use Ctrlr file instead of the normal in game UI method? ==&lt;br /&gt;
&lt;br /&gt;
The most common use of ctrlr files is probably with the commercial control panels: X-Arcade and HotRodSE for the most part.  They have the seven button combination SF2 six button + NeoGeo four button layout, and Mame comes with ctrlr files specifically for these control panels.  With these control panels and the matching ctrlr file, you do not need to do any remapping for most of the games in mame.&lt;br /&gt;
&lt;br /&gt;
The most driving reason to make your own ctrlr file probably is also NeoGeo games and a control panel with a 7 button layout.  The 7 button layout is a way to have the Street Fighter II 6 button rectangle physical layout &amp;amp; NeoGeo's 4 button in a (curved) line physical layout.  However, to use the two different layouts, the buttons need to be reassigned depending on which game is being played.  This can be done by making the changes once with the ctrlr file, or by making the changes many times (once for each NeoGeo game) with the standard method.&lt;br /&gt;
&lt;br /&gt;
Other reasons include &lt;br /&gt;
* Mame rewrites the cfg files every time mame is run, while the ctrlr is not changed by mame ever.  This prevents the ctrlr file from being accidentally changed.&lt;br /&gt;
* If you switch controllers that need different mapping, each controller can have it's own ctrlr file, and only change the -ctrlr option instead of remap every time you switch controllers.&lt;br /&gt;
* Ctrlr file has a slightly better record as being cross version compatible over the standard cfg files.&lt;br /&gt;
* Copying remaps within the ctrlr file to different games is much more reliable than it is with copying cfg files.&lt;br /&gt;
&lt;br /&gt;
== How to Use a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
It is easy to use an existing ctrlr file, such as those provided with mame or one you made your own.  Currently, mameUI does not provide the ctrlr files included with the [http://mamedev.org/ official mame], but you can download the vinalla mame binary and extract the ctrlr files to the mameUI ctrlr folder.&lt;br /&gt;
&lt;br /&gt;
If the file is in the ctrlr subfolder, note the name (not including the &amp;quot;.cfg&amp;quot;) of the ctrlr file you want to use, and edit mame.ini so &amp;quot;ctrlr ''ctrlrFileName''&amp;quot;.  In mameUI, go into the defaut game properties, &amp;quot;Controllers&amp;quot; tab; the ctrlr files will be options in the &amp;quot;Default input layout&amp;quot; drop down list.&lt;br /&gt;
&lt;br /&gt;
You can also put the ctrlr file in a different folder.  Then you will also need to edit the ctrlrpath option to include the folder the ctrlr file is in.  This can be used to share one ctrlr file between different versions of mame.&lt;br /&gt;
&lt;br /&gt;
== How to Create a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
There are a few ways to make ctrlr files.  And since the ctrlr file format has changed a couple times, the methods have changed.  The following sections will cover from mame 0.106 to current (0.128).&lt;br /&gt;
&lt;br /&gt;
=== Basic Ctrlr file format ===&lt;br /&gt;
&lt;br /&gt;
The ctrlr file is an XML file, and almost matches the cfg default.cfg file which mame uses to save the general input changes.  A very simple example of a file that could either be a ctrlr file or the cfg default.cfg file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;mameconfig version=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;&lt;br /&gt;
             &amp;lt;port type=&amp;quot;UI_LEFT&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                     KEYCODE_LEFT OR KEYCODE_LCONTROL&lt;br /&gt;
                 &amp;lt;/newseq&amp;gt;&lt;br /&gt;
             &amp;lt;/port&amp;gt;&lt;br /&gt;
            &amp;lt;port type=&amp;quot;UI_RIGHT&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                    KEYCODE_RIGHT OR KEYCODE_LALT&lt;br /&gt;
                &amp;lt;/newseq&amp;gt;&lt;br /&gt;
            &amp;lt;/port&amp;gt;&lt;br /&gt;
         &amp;lt;/input&amp;gt;&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
 &amp;lt;/mameconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As shown, there can be multiple port nodes within the input node.  The only difference in format of the ctrlr file and the cfg default.cfg file is the ctrlr file can have multiple system nodes in the mameconfig node, while the cfg default.cfg file can only have one system node which has to be named &amp;quot;default&amp;quot;.  The additional system nodes can have the name of a specific game, a parent game, a bios name, a mame driver file name, or &amp;quot;default&amp;quot;.  The system name tells mame to which games to apply the changes within that system node.&lt;br /&gt;
&lt;br /&gt;
FWIW, the example, if everything else is left at default, lets you press player1 button1 (usually LCtrl) then player1 button2 (usually LAlt) inaddition to &amp;quot;O&amp;quot; &amp;quot;K&amp;quot; or wiggling the joystick (left arrow then right arrow) assuming your control panel has p1b1 sending LCtrl, p1b2 sending LAtl, pl joy left sending left arrow, and p1 joy right sending right arrow.&lt;br /&gt;
&lt;br /&gt;
Also see [[#Order Matters]]&lt;br /&gt;
&lt;br /&gt;
=== Edit the Ctrlr files provided with mame ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to make your own ctrlr file might be by editing one of the ctrlr files supplied with mame binary (mameUI does not provide these ATM, but does have a sample ctrlr file).  Editing a provided ctrlr file might be the way to go if you are changing the same inputs for the same games as already in the provided ctrlr file.  &lt;br /&gt;
&lt;br /&gt;
=== Remap and Test with the standard in game UI method and Convert to Ctrlr file ===&lt;br /&gt;
&lt;br /&gt;
However, the most flexible way to make your own ctrlr file to match your own inputs is more in depth.  You will need a text editor to edit the files, and will run mame many times.  Since [[#Order Matters|Order Matters]] it is best to start with mapping on the widest level and move down; start with the default (every game), than move to driver or bios wide changes, then to the driver's parent games, then to the parent's clone games.&lt;br /&gt;
&lt;br /&gt;
==== Prep before starting ====&lt;br /&gt;
#Delete (or move to a different folder for backup) cfg/default.cfg file and all game cfg files that you are going to put in the ctrlr file.  (Alternative: remove all game specific remaps by either hand editing the cfg files or with mame's in-game UI, if you want to keep some of the other settings saved in the cfg files.)&lt;br /&gt;
#If you have your OS to hide file type extensions, either disable that or ignore the &amp;quot;.cfg&amp;quot; in the following file names.&lt;br /&gt;
&lt;br /&gt;
==== Start with general (every game) remapping ====&lt;br /&gt;
If you already have a ctrlr file and want to use it, skip to Add more systems.&lt;br /&gt;
#Edit mame.ini so ctrlr is set to blank.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Start any game in mame.  &lt;br /&gt;
#Press Config Menu (usually tab) to start mame's in-game ui&lt;br /&gt;
#Press UI Select (usually enter) &amp;quot;Input (general)&amp;quot;&lt;br /&gt;
#Remap any and all inputs you want to be applied to all games, as normal.&lt;br /&gt;
#Test remapping by playing the game.  If you need to make any corrections, repeating from step #3.&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Move cfg/default.cfg to the ctrlr folder in mame.&lt;br /&gt;
#Rename ctrlr/default.cfg to anything you want ctrlr/''fillInNameHere''.cfg&lt;br /&gt;
#Edit mame.ini to point to whatever you named the file in the ctrlr folder (ctrlr ''fillInNameHere'')&lt;br /&gt;
#(If it still exists) delete cfg/default.cfg file.&lt;br /&gt;
&lt;br /&gt;
==== Add more game specific systems ====&lt;br /&gt;
This is similar to, but not exactly the same, as the starting step.  You can also start here if you started with a supplied mame ctrlr file and want to add a new system node (driver or game).  Also look at [[#Shortcuts]] for other methods.&lt;br /&gt;
#Edit mame.ini to point to your ctrlr file if you haven't already.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Decide if you want to remap on the driver, parent, or clone level.  (Reminder, start with driver, then it's parents, then their clones.)  &lt;br /&gt;
#Find the name of the driver, parent or clone and note it down.  Neogeo games bios is &amp;quot;neogeo&amp;quot;; to find the driver name for other games, &amp;quot;mame -ls ''gamename''&amp;quot;, or use [http://www.mameworld.net/maws/ MAWS] or mame's listxml file.&lt;br /&gt;
#Start that game (or a game in that driver).  (You could start any game, but it's best to start the specific game for testing and reference to what input ports are used.)&lt;br /&gt;
#Again, press Config Menu and select &amp;quot;Input (general)&amp;quot;.  &amp;lt;--- NOT &amp;quot;Input (this game)&amp;quot;.  You can look there to see what input ports are used by the game, but remap in the &amp;quot;Input (general)&amp;quot; location.&lt;br /&gt;
#Again, remap any and all changes you want for this driver, parent or clone.&lt;br /&gt;
#Test remapping.  (make any needed corrections)&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Open cfg/default.cfg in a text editor.&lt;br /&gt;
#Copy the whole system node, from (and including) &amp;lt;system name= to &amp;lt;/system&amp;gt;.&lt;br /&gt;
#Open your ctrlr file.&lt;br /&gt;
#Paste the copied system node into the ctrlr file.  If you have been working from the drivers down to the parents to the clone, you can paste as the last system, just before the closing &amp;lt;/mameconfig&amp;gt;.  If you have not been as careful on the order you're remapping, make sure you paste the new system node in a correct place read [[#Order Matters|Order Matters]].&lt;br /&gt;
#Rename the system name to the driver, parent or clone you noted in step 2.  Example if for neogeo, change to &amp;lt;system name=&amp;quot;neogeo&amp;quot;&amp;gt;.&lt;br /&gt;
#Save (and exit) the ctrlr file.&lt;br /&gt;
#Exit (without saving) the default cfg file.&lt;br /&gt;
#Delete the cfg default.cfg file.&lt;br /&gt;
#Test game(s) inputs.&lt;br /&gt;
#Repeat as needed for all drivers/games you want to remap.  Remember, if you remap a parent, you do not need to remap a clone unless you want the clone to be different (or the clone used different input ports).&lt;br /&gt;
&lt;br /&gt;
==== Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
There are a few shortcuts that can be done in certain cases.&lt;br /&gt;
&lt;br /&gt;
*If you have an input mapping that is common between games that do not share a parent or driver, you don't have to do all the steps for adding more systems for both games.  For the second game, start at step #10 and rename to the new game.  You can copy from within the ctrlr file itself, too.&lt;br /&gt;
*You can make other hand edits to the ctrlr file, as the XML is fairly human readable.&lt;br /&gt;
&lt;br /&gt;
== Limitations and their Workarounds ==&lt;br /&gt;
=== Games with &amp;quot;Hardcoded&amp;quot; Inputs ===&lt;br /&gt;
&lt;br /&gt;
Some games remap an input port or two to inputs different than the default values.  Even though these are much like other input ports and can be remapped with mame's in game UI menu, these are often called &amp;quot;hardcoded&amp;quot; as they are incorrectly thought as unable to be remappable through ctrlr files.&lt;br /&gt;
&lt;br /&gt;
Games with hardcoded input, however, do need additional steps to use the ctrlr set inputs instead of the &amp;quot;hardcoded&amp;quot; values.  You have to go into each of the offending game's cfg file and reset the &amp;quot;hardcoded&amp;quot; input ports to not use the hardcoded values.  This is easiest done with mame's in game UI &amp;quot;Inputs (this game)&amp;quot;.  Note: There is [http://mametesters.org/mantis/view.php?id=2171 a bug] starting from 0.126 to current (0.128) that needs more steps, including hand editing the cfg files.&lt;br /&gt;
&lt;br /&gt;
#Start the game with hardcoded inputs you don't want to use.&lt;br /&gt;
#Press Config Menu (usually tab) to enter mame's in game UI.&lt;br /&gt;
#Select &amp;quot;Input (this game)&amp;quot;, by pressing UI Select (usually enter).&lt;br /&gt;
#Select the hardcoded input port you want to change (it will be reverse highlighted).&lt;br /&gt;
#Press UI Cancel (usually esc).&lt;br /&gt;
#Wait until mame shows &amp;quot;None&amp;quot;.  If mame 0.126 or later, skip to step 9 and see the extra steps.&lt;br /&gt;
#Select, then UI Cancel, again.&lt;br /&gt;
#Wait until mame shows the setting by the ctrlr file (it will not be reverse highlighted).&lt;br /&gt;
#Repeat steps 4-8 for all hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
#Repeat steps 1-9 for the games with hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
&lt;br /&gt;
Extra Steps&lt;br /&gt;
#Exit mame&lt;br /&gt;
#Open the cfg files you just changed in a text editor.&lt;br /&gt;
#Replace all &amp;quot;NONE&amp;quot; with &amp;quot;DEFAULT&amp;quot;&lt;br /&gt;
#Save the files&lt;br /&gt;
&lt;br /&gt;
The problem with these work arounds is you need to edit cfg files, while one of the main reasons to use a ctrlr file is to avoid doing this.&lt;br /&gt;
&lt;br /&gt;
Other ways around the &amp;quot;hardcoded&amp;quot; hassle, including editing the source and recompiling, will not be described here.&lt;br /&gt;
&lt;br /&gt;
=== Order Matters ===&lt;br /&gt;
&lt;br /&gt;
Mame does not exactly enforce a specific order to the different system nodes within the ctrlr files.  However the order does make a difference in the final mapping if different systems that are applied to a game with the same port type(s) differently in different system nodes that apply to the game.  Mame reads the ctrlr file from top to bottom, and checks if each system node should be applied to the game, and applies the changes ''in the order the systems are in the ctrlr file'' overriding any mapping for all ports changed.&lt;br /&gt;
&lt;br /&gt;
So to make sure all changes are correctly applied, (referred hereafter as the ctrlr rules of order): &lt;br /&gt;
*Clones should come after their parent, &lt;br /&gt;
*Parents (and clones) should come after their driver and bios, and&lt;br /&gt;
*Drivers and Bios (and parents &amp;amp; clones) should come after &amp;quot;default&amp;quot; system,&lt;br /&gt;
:: *Usually bios and drivers can be thought of as the &amp;quot;same level&amp;quot;, as usually if a bios exists there is one and only one driver that has all games with that bios and only those games, but theoretically a bios can be across multiple drivers or a driver can hold bios and non-bios games. &lt;br /&gt;
&lt;br /&gt;
Keeping the order can be done a couple ways, or a mix of them.  The easiest rule is: default, then all drivers/bios, then all parents, then all clones.  However this separates the clones from their parents and the parents from their drivers.  It might be easier to upkeep if all of the parents come immediately after their driver, and all clones immediately after their parents.  But neither these have to be exactly followed, as long as the ctrlr rules of order are followed.&lt;br /&gt;
&lt;br /&gt;
Valid examples:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;34%&amp;quot;|&lt;br /&gt;
default-&amp;gt;drivers-&amp;gt;parents-&amp;gt;clones&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
grouped by driver, parent, clone&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;quot;disorganized order&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Ccc&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
:parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
::clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
:clone Bbb2c1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ctrlr file does not do ... ===&lt;br /&gt;
&lt;br /&gt;
You cannot use the Ctrlr file to:&lt;br /&gt;
*Set analog sensitivity, digital speed, center speed. - These are set in mame's in game UI &amp;quot;Analog Controls&amp;quot;, and saved in the cfg files.&lt;br /&gt;
*Change volume, CPU speed or other On Screen Display (usually tilde unless remapped) settings&lt;br /&gt;
&lt;br /&gt;
=== My ctrlr worked but doesn't anymore ===&lt;br /&gt;
&lt;br /&gt;
The cause could be some minor error to something bigger.&lt;br /&gt;
&lt;br /&gt;
*Check that the ctrlr file still exists in the right location, and is not corrupt.&lt;br /&gt;
*If you updated mame, check if mame.ini points at your ctrlr file.&lt;br /&gt;
*If you just edited the ctrlr file, check if the system nodes are in the correct order.&lt;br /&gt;
*Make sure no one remapped using mame's in-game UI (the normal remapping method).  If you know everything you want remapped is in the ctrlr, you could delete everything in the cfg folder (warning: the game specific cfg files hold more than just input remaps).&lt;br /&gt;
*Mame might have changed the ctrlr and/or cfg file format.  This might be able to be fixed with a simple find and replace, or in the worst case you might need to completely redo making the ctrlr file depending on what changed.&lt;br /&gt;
&lt;br /&gt;
== History of Ctrlr files ==&lt;br /&gt;
The ctrlr files inspiration came from the need to remove the hardcoding of special input maps for specific commercial arcade control panels from mame's source, but was designed to do more than be just a replacement.  It has had two major revisions and many minor.  It started in a different format with .ini file endings.  When mame changed the cfg file format to xml, the old format was dropped, and a couple versions later, a new xml based ctrlr was re-added.&lt;br /&gt;
== Technical Stuff ==&lt;br /&gt;
Some technical information&lt;br /&gt;
=== Differences between Ctrlr file and Cfg files ===&lt;br /&gt;
The ctrlr file and the default.cfg file only save input remaps.  The game specific cfg file saves much more than just input remaps, including: analog settings, input location in the driver, dipswitch settings, sound and video settings, and other info.&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=MAME&amp;diff=11782</id>
		<title>MAME</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=MAME&amp;diff=11782"/>
		<updated>2008-09-24T19:02:26Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: added mameUI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorkInProgress|talk:Arcade Emulators}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:MAME_Logo.jpg|MAME Logo&lt;br /&gt;
Image:MAME32.jpg|MAME32 Frontend&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''OS:  ''' Windows, Linux and others&lt;br /&gt;
* '''Cost:  ''' Open Source&lt;br /&gt;
* '''Re-mappable keys:  ''' Yes&lt;br /&gt;
* '''Monitor orientation(s):  ''' Depend of game&lt;br /&gt;
* '''Emulated System(s):''' [http://en.wikipedia.org/wiki/MAME MAME&amp;lt;sup&amp;gt;TM&amp;lt;/sup&amp;gt;]&lt;br /&gt;
* '''Unique games emulated:''' 3000+&lt;br /&gt;
* '''Homepage:  [http://mamedev.org''' MameDEV]&lt;br /&gt;
* '''Additional Requirements:''' [[Game Roms]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is MAME? ==&lt;br /&gt;
('''M'''ultiple '''A'''rcade '''M'''achine '''E'''mulator) is one of (if not the) most widely used videogame emulators. Currently, it supports over six thousand different arcade games. Standard versions of MAME can be found at [http://www.mame.net MAME.net], intermediate versions and development notes are at [http://www.mamedev.org MAMEDev.org]. &lt;br /&gt;
&lt;br /&gt;
Since MAME is an open source project, many people have created modified versions with various extra tweaks and features. You can find some versions on it's own page ([[Mame Modified Versions]]).&lt;br /&gt;
&lt;br /&gt;
== Dedicated cabinet info ==&lt;br /&gt;
MAME is the main reason, you create your own arcade controls and put MAME into your cabinet.&lt;br /&gt;
&lt;br /&gt;
The default MAME keys to wire your controls to can be found at: http://www.mameworld.net/easyemu/mameguide/mamecontrol.htm&lt;br /&gt;
&lt;br /&gt;
== How do I set it up? ==&lt;br /&gt;
[[Mame_Lightgun_Setup|Setting up Lightguns/Multiple Analog devices]]&lt;br /&gt;
&lt;br /&gt;
== Support Files ==&lt;br /&gt;
MAME or its modified versions support extra files form of cheats, high score saving, and more. &lt;br /&gt;
&lt;br /&gt;
=== Cheat ===&lt;br /&gt;
Cheat.dat is useful for both players and developers. Cheating allows players to get past difficult situations and it let's developers test games without having to be good at all the games.&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://cheat.retrogames.com/&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== High Score ===&lt;br /&gt;
Hiscore.dat is a complimentary file to help MAME in saving high scores in version 0.32 to 0.107u1. Most Mame games save their high scores by default, but over 2500 games do not save their high scores.&lt;br /&gt;
&lt;br /&gt;
The Hiscore.dat file tells Mame some additional information and how to read and store the high scores using the /hi directory instead of /nvram. &lt;br /&gt;
&lt;br /&gt;
As of MAME version 0.107u1, however, Hiscore.dat is no longer supported. Hiscore.dat has been replaced by the use of save states due to issues that the file caused with proper emulation. &lt;br /&gt;
&lt;br /&gt;
Hiscore support can be added back into Mame using MKChamp's Hiscore diff patches. For more information visit: http://forum.arcadecontrols.com/index.php?topic=64298.0&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://www.mameworld.net/highscore/&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Command.dat ===&lt;br /&gt;
[[Image:command.png|right|thumb|Command.dat screenshot]]&lt;br /&gt;
Commands can be shown either in game or in a front end. Commands allow users to view, among other things, the individual command lists for games. This is especially usefull for Fighting Games, but can also show users what individual buttons (and combinations) do without having to press them all. The screenshot is from within MAME Plus!&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://home.comcast.net/~plotor/command.html&lt;br /&gt;
&lt;br /&gt;
''Note: Command.dat isn't supported by the official MAME build - a [[Mame_Modified_Versions | Modified Version of MAME]] is required. Alternatively [[Other Software|Johnny 5]] and [[Other Software|CPWizard]] can read command.dat files''&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Artwork ===&lt;br /&gt;
[[Image:frogs.png|right|thumb|Frogs with artwork enabled]]&lt;br /&gt;
In game artwork is supported in MAME in versions 0.61 and later. Some arcade machines had images inside them onto which the screen was projected, had artwork overlaid on the monitor or had LED lights on the cabinet that were illuminated during game play. This can't be emulated but is instead simulated with a digital picture of the artwork. Some games, like Frogs, Video Pinball, Drag Race, Armor Attack and Warrior are nearly impossible to play without the original artwork.  Other games have elaborate decorative monitor bezels that are not functional but many fans feel they add to the arcade experience. &lt;br /&gt;
&lt;br /&gt;
Starting with version 0.107, MAME began to supports hi-resolution artwork and changed the file format for the layout (from .art to .lay).  Pre-0.107 artwork with .art layout files will not work with MAME version 0.107 and later. &lt;br /&gt;
&lt;br /&gt;
To use these files, save them to the /artwork directory. &lt;br /&gt;
&lt;br /&gt;
'''Post-MAME 0.107 Homepage:''' http://www.mameworld.net/mrdo/mame_artwork.html&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
Controls.dat holds a more detailed input list of control types and button labels for many games in mame.  ''Like commands.dat, controls.dat isn't supported by the official MAME build, and [[Other Software|Johnny 5]] and [[Other Software|CPWizard]] can read controls.dat files.''&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://fe.donkeyfly.com/controls/controls.php&lt;br /&gt;
&lt;br /&gt;
== I upgraded MAME/MAME32/MameUI and now I get errors that files/roms are missing. Why? ==&lt;br /&gt;
As MAME progresses, romsets are sometimes changed to more accurately reflect the original hardware.  There are several reasons the romsets 'change'.  Here are some of them (courtesy of u_rebelscum):&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 1: bad dump now replaced by good dump&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 2: incomplete dump (X chip now emulated now needs Y ROM not needed before)&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 3: new dump from confirmed source, old dump from unreliable/unknown source&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 4: new dump is real release, old dump is hacked board&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 5: new dump is real release, old dump is prototype&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 6: new dump is wider release, old dump is local release&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first three add/replace to a ROM, the last three usually involve renaming.  The short answer is that you need to find a correct romset for the version of MAME you are using, as old romsets may not work with a newer version of MAME.&lt;br /&gt;
&lt;br /&gt;
See also: [http://www.mame.net/mamefaq.html#r03 http://www.mame.net/mamefaq.html#r03]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [http://www.mameworld.net/maws/ MAWS] - presents a searchable index of the over 3000 original games (not including clones) that MAME emulates.&lt;br /&gt;
* [http://nonmame.retrogames.com/ NonMAME] - maintains a list of games not emulated in MAME that are emulated by other projects.&lt;br /&gt;
* [http://unmamed.mame.net/ unMAMEd] - maintains a list of games that have not been emulated in MAME, including many games that are actively being sought out so that their ROMs can be dumped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11648</id>
		<title>Ctrlr file</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11648"/>
		<updated>2008-08-11T20:23:00Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Games with Hardcoded Inputs */  Added intro &amp;amp; cons paragraphs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ctrlr file is an additional method of changing Mame's inputs from the defaults, to the standard in-game UI method (tab).  Like the standard method of changing inputs, ctrlr files can be used to change the inputs for all games or individual games, but unlike the standard method ctrlr can also change inputs for a parent and all it's clones, or for all games that share a driver in mame's source.  Mame comes with a few ctrlr files for a bunch of commercial control panels: hotrod, hotrodse, x-arcade, and slikstik.&lt;br /&gt;
&lt;br /&gt;
However, it's relative steep learning curve, limitations, format changes, and overlapping features with mame's standard input mapping method seem to have curbed the use of the ctrlr files.&lt;br /&gt;
&lt;br /&gt;
== Notes on nomenclature used in this page ==&lt;br /&gt;
&lt;br /&gt;
Since this page is about changing inputs from mame's default values, referring to an input by which key or button to press can be wrong if it had been remapped to something else.  Inputs will be referred to by the name shown in mame's in game UI instead of the key pressed.  For example, the tab key is usually mapped to &amp;quot;Config Menu&amp;quot;; this input will be referred to as &amp;quot;Config Menu (usually tab)&amp;quot; instead of just the tab input.  This is more technically correct and help show every input in mame can be changed.&lt;br /&gt;
&lt;br /&gt;
== Why use Ctrlr file instead of the normal in game UI method? ==&lt;br /&gt;
&lt;br /&gt;
The most common use of ctrlr files is probably with the commercial control panels: X-Arcade and HotRodSE for the most part.  They have the seven button combination SF2 six button + NeoGeo four button layout, and Mame comes with ctrlr files specifically for these control panels.  With these control panels and the matching ctrlr file, you do not need to do any remapping for most of the games in mame.&lt;br /&gt;
&lt;br /&gt;
The most driving reason to make your own ctrlr file probably is also NeoGeo games and a control panel with a 7 button layout.  The 7 button layout is a way to have the Street Fighter II 6 button rectangle physical layout &amp;amp; NeoGeo's 4 button in a (curved) line physical layout.  However, to use the two different layouts, the buttons need to be reassigned depending on which game is being played.  This can be done by making the changes once with the ctrlr file, or by making the changes many times (once for each NeoGeo game) with the standard method.&lt;br /&gt;
&lt;br /&gt;
Other reasons include &lt;br /&gt;
* Mame rewrites the cfg files every time mame is run, while the ctrlr is not changed by mame ever.  This prevents the ctrlr file from being accidentally changed.&lt;br /&gt;
* If you switch controllers that need different mapping, each controller can have it's own ctrlr file, and only change the -ctrlr option instead of remap every time you switch controllers.&lt;br /&gt;
* Ctrlr file has a slightly better record as being cross version compatible over the standard cfg files.&lt;br /&gt;
* Copying remaps within the ctrlr file to different games is much more reliable than it is with copying cfg files.&lt;br /&gt;
&lt;br /&gt;
== How to use a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
It is easy to use an existing ctrlr file, such as those provided with mame or one you made your own.  Currently, mameUI does not provide the ctrlr files included with the [[http://mamedev.org|official mame]].&lt;br /&gt;
&lt;br /&gt;
If the file is in the ctrlr subfolder, note the name (not including the &amp;quot;.cfg&amp;quot;) of the ctrlr file you want to use, and edit mame.ini so &amp;quot;ctrlr 'ctrlrFileName''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can also put the ctrlr file in a different folder.  Then you will also need to edit the ctrlrpath option to include the folder the ctrlr file is in.  This can be used to share one ctrlr file between different versions of mame.&lt;br /&gt;
&lt;br /&gt;
== How to create a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
There are a few ways to make ctrlr files.  And since the ctrlr file format has changed a couple times, the methods have changed.  The following sections will cover from mame 0.106 to current (0.124).&lt;br /&gt;
&lt;br /&gt;
=== Basic Ctrlr file format ===&lt;br /&gt;
&lt;br /&gt;
The ctrlr file is an XML file, and almost matches the cfg default.cfg file which mame uses to save the general input changes.  A very simple example of a file that could either be a ctrlr file or the cfg default.cfg file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;mameconfig version=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;&lt;br /&gt;
             &amp;lt;port type=&amp;quot;UI_LEFT&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                     KEYCODE_LEFT OR KEYCODE_LCONTROL&lt;br /&gt;
                 &amp;lt;/newseq&amp;gt;&lt;br /&gt;
             &amp;lt;/port&amp;gt;&lt;br /&gt;
            &amp;lt;port type=&amp;quot;UI_RIGHT&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                    KEYCODE_RIGHT OR KEYCODE_LALT&lt;br /&gt;
                &amp;lt;/newseq&amp;gt;&lt;br /&gt;
            &amp;lt;/port&amp;gt;&lt;br /&gt;
         &amp;lt;/input&amp;gt;&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
 &amp;lt;/mameconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As shown, there can be multiple port nodes within the input node.  The only difference in format of the ctrlr file and the cfg default.cfg file is the ctrlr file can have multiple system nodes in the mameconfig node, while the cfg default.cfg file can only have one system node which has to be named &amp;quot;default&amp;quot;.  The additional system nodes can have the name of a specific game, a parent game, a mame driver file name, or &amp;quot;default&amp;quot;.  The system name tells mame to which games to apply the changes within that system node.&lt;br /&gt;
&lt;br /&gt;
FWIW, the example, if everything else is left at default, lets you press player1 button1 then player1 button2 or left arrow then right arrow, instead of &amp;quot;O&amp;quot; &amp;quot;K&amp;quot; or wiggling the joystick.&lt;br /&gt;
&lt;br /&gt;
Also see [[#Order Matters]]&lt;br /&gt;
&lt;br /&gt;
=== Edit the Ctrlr files provided with mame ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to make your own ctrlr file might be by editing one of the ctrlr files supplied with mame binary (mameUI does not include these ATM).  This might be the way to go if you are changing the exact same inputs for the same games as already in the provided ctrlr file.  &lt;br /&gt;
&lt;br /&gt;
=== Remap and Test with the Standard in game UI method and Convert to ctrlr file ===&lt;br /&gt;
&lt;br /&gt;
However, the most flexible way to make your own ctrlr file to match your own inputs is more in depth.  You will need a text editor to edit the files, and will run mame many times.  Since Order Matters it is best to start with mapping on the widest level and move down; start with the default (every game), than move to driver wide changes, then to the driver's parents, then to the parent's clones.&lt;br /&gt;
&lt;br /&gt;
==== Prep before starting ====&lt;br /&gt;
#Delete (or move to a different folder for backup) cfg/default.cfg file and all game cfg files that you are going to put in the ctrlr file.  (Alternative: remove all game specific remaps by either hand editing the cfg files or with mame's in-game UI, if you want to keep some of the other settings saved in the cfg files.)&lt;br /&gt;
#If you have your OS to hide file type extensions, either disable that or ignore the &amp;quot;.cfg&amp;quot; in the following file names.&lt;br /&gt;
&lt;br /&gt;
==== Start with general (every game) remapping ====&lt;br /&gt;
If you already have a ctrlr file and want to use it, skip to Add more systems.&lt;br /&gt;
#Edit mame.ini so ctrlr is set to blank.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Start any game in mame.  &lt;br /&gt;
#Press Config Menu (usually tab unless remapped) to start mame's in-game ui&lt;br /&gt;
#Press UI Select (usually enter unless remapped) &amp;quot;Input (general)&amp;quot;&lt;br /&gt;
#Remap any and all inputs you want to be applied to all games, as normal.&lt;br /&gt;
#Test remapping by playing the game.  If you need to make any corrections, repeating from step #3.&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Move cfg/default.cfg to the ctrlr folder in mame.&lt;br /&gt;
#Rename ctrlr/default.cfg to anything you want ctrlr/''fillInNameHere''.cfg&lt;br /&gt;
#Edit mame.ini to point to whatever you named the file in the ctrlr folder (ctrlr ''fillInNameHere'')&lt;br /&gt;
#(If it still exists) delete cfg/default.cfg file.&lt;br /&gt;
&lt;br /&gt;
==== Add more systems ====&lt;br /&gt;
This is similar to, but not exactly the same, as the starting step.  You can also start here if you started with a supplied mame ctrlr file and want to add a new system node (driver or game).  Also look at [[#Shortcuts]] for other methods.&lt;br /&gt;
#Edit mame.ini to point to your ctrlr file if you haven't already.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Decide if you want to remap on the driver, parent, or clone level.  (Reminder, start with driver, then it's parents, then their clones.)  &lt;br /&gt;
#Find the name of the driver, parent or clone and note it down.  Neogeo games are &amp;quot;neogeo&amp;quot;; to find the driver name for other games, &amp;quot;mame -ls ''gamename''&amp;quot;.&lt;br /&gt;
#Start that game (or a game in that driver).  (You could start any game, but it's best to start the specific game for testing and reference to what input ports are used.)&lt;br /&gt;
#Again, press Config Menu and select &amp;quot;Input (general)&amp;quot;.  &amp;lt;--- NOT &amp;quot;Input (this game)&amp;quot;.  You can look there to see what input ports are used by the game, but remap in the &amp;quot;Input (general)&amp;quot; location.&lt;br /&gt;
#Again, remap any and all changes you want for this driver, parent or clone.&lt;br /&gt;
#Test remapping.  (make any needed corrections)&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Open cfg/default.cfg in a text editor.&lt;br /&gt;
#Copy the whole system node, from (and including) &amp;lt;system name= to &amp;lt;/system&amp;gt;.&lt;br /&gt;
#Open your ctrlr file.&lt;br /&gt;
#Paste the copied system node into the ctrlr file.  If you have been working from the drivers down to the parents to the clone, you can paste as the last system, just before the closing &amp;lt;/mameconfig&amp;gt;.  If you have not been as careful on the order you're remapping, make sure you paste the new system node in a correct place read Order Matters.&lt;br /&gt;
#Rename the system name to the driver, parent or clone you noted in step 2.  Example if for neogeo, change to &amp;lt;system name=&amp;quot;neogeo&amp;quot;&amp;gt;.&lt;br /&gt;
#Save (and exit) the ctrlr file.&lt;br /&gt;
#Exit (without saving) the default cfg file.&lt;br /&gt;
#Delete the cfg default.cfg file.&lt;br /&gt;
#Test game(s) inputs.&lt;br /&gt;
#Repeat as needed for all drivers/games you want to remap.  Remember, if you remap a parent, you do not need to remap a clone unless you want the clone to be different (or the clone used different input ports).&lt;br /&gt;
&lt;br /&gt;
==== Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
There are a few shortcuts that can be done in certain cases.&lt;br /&gt;
&lt;br /&gt;
*If you have an input mapping that is common between games that do not share a parent or driver, you don't have to do all the steps for adding more systems for both games.  For the second game, start at step #10 and rename to the new game.  You can copy from within the ctrlr file itself, too.&lt;br /&gt;
*You can make other hand edits to the ctrlr file, as the XML is fairly human readable.&lt;br /&gt;
&lt;br /&gt;
== Limitations and Workarounds ==&lt;br /&gt;
=== Games with Hardcoded Inputs ===&lt;br /&gt;
&lt;br /&gt;
Some games remap an input port or two to inputs different than the default values.  Even though these are much like other input ports and can be remapped with mame's in game UI menu, these are often called &amp;quot;hardcoded&amp;quot; as they are incorrectly thought as unable to be remappable through ctrlr files.&lt;br /&gt;
&lt;br /&gt;
Games with hardcoded input, however, do need additional steps to use the ctrlr set inputs instead of the hardcoded values.  You have to go into each of the offending game's cfg file and reset the hardcoded input ports to not use the hardcoded values.  This is easiest done with mame's in game UI &amp;quot;Inputs (this game)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#Start the game with hardcoded inputs you don't want to use.&lt;br /&gt;
#Press Config Menu (usually tab unless remapped) to enter mame's in game UI.&lt;br /&gt;
#Select &amp;quot;Input (this game)&amp;quot;, by pressing UI Select (usually enter unless remapped).&lt;br /&gt;
#Select the hardcoded input port you want to change (it will be reverse highlighted).&lt;br /&gt;
#Press UI Cancel (usually esc unless remapped).&lt;br /&gt;
#Wait until mame shows &amp;quot;None&amp;quot;.&lt;br /&gt;
#Select, then UI Cancel, again.&lt;br /&gt;
#Wait until mame shows the setting by the ctrlr file (it will not be reverse highlighted).&lt;br /&gt;
#Repeat steps 4-8 for all hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
#Repeat steps 1-9 for the games with hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
&lt;br /&gt;
The problem with this work around is you need to hand edit the cfg files, while one of the main reasons to use a ctrlr file is to avoid doing this.&lt;br /&gt;
&lt;br /&gt;
Other ways around the hardcoded hassle, including editing the source and recompiling, will not be described here.&lt;br /&gt;
&lt;br /&gt;
=== Order Matters ===&lt;br /&gt;
&lt;br /&gt;
Mame does not exactly enforce a specific order to the different system nodes within the ctrlr files.  However the order does make a difference in the final mapping if different systems that are applied to a game with the same port type(s) differently in different system nodes that apply to the game.  Mame reads the ctrlr file from top to bottom, and checks if each system node if it should be applied to the game, and applies the changes ''in the order the systems are in the ctrlr file'' overriding any mapping for all ports changed.&lt;br /&gt;
&lt;br /&gt;
So to make sure all changes are correctly applied, (referred hereafter as the ctrlr rules of order): &lt;br /&gt;
*Clones should come after their parent, &lt;br /&gt;
*Parents (and clones) should come after their driver, and &lt;br /&gt;
*Drivers (and parents &amp;amp; clones) should come after &amp;quot;default&amp;quot; system. &lt;br /&gt;
&lt;br /&gt;
This can be done two ways, or a mix of them.  The easiest rule is: default, then all drivers, then all parents, then all clones.  However this separates the clones from their parents and the parents from their drivers.  It might be easier to upkeep if all of the parents come immediately after their driver, and all clones immediately after their parents.  But neither these have to be exactly followed, as long as the three ctrlr rules of order are followed.&lt;br /&gt;
&lt;br /&gt;
Valid examples:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;34%&amp;quot;|&lt;br /&gt;
default-&amp;gt;drivers-&amp;gt;parents-&amp;gt;clones&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
grouped by driver, parent, clone&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;quot;disorganized order&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1 (parent, from driver AAA)&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1 (clone of parent Aaa1)&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc (clone without parent or driver in ctrlr file)&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ctrlr file does not do ... ===&lt;br /&gt;
&lt;br /&gt;
You cannot use the Ctrlr file to:&lt;br /&gt;
*Set analog sensitivity, digital speed, center speed. - These are set in mame's in game UI &amp;quot;Analog Controls&amp;quot;, and saved in the cfg files.&lt;br /&gt;
*Change volume, CPU speed or other On Screen Display (usually tilde unless remapped) settings&lt;br /&gt;
&lt;br /&gt;
=== My ctrlr worked but doesn't anymore ===&lt;br /&gt;
&lt;br /&gt;
The cause could be some minor error to something bigger.&lt;br /&gt;
&lt;br /&gt;
*Check that the ctrlr file still exists in the right location, and is not corrupt.&lt;br /&gt;
*If you updated mame, check if mame.ini points at your ctrlr file.&lt;br /&gt;
*If you just edited the ctrlr file, check if the system nodes are in the correct order.&lt;br /&gt;
*Make sure no one remapped using mame's in-game UI (the normal remapping method).  If you know everything you want remapped is in the ctrlr, you could delete everything in the cfg folder (warning: the game specific cfg files hold more than just input remaps).&lt;br /&gt;
*Mame could have changed the ctrlr and or cfg format.  This might be able to be fixed with a simple find and replace, or in the worst case you might need to completely redo making the ctrlr file depending on what changed.&lt;br /&gt;
&lt;br /&gt;
== History of Ctrlr files ==&lt;br /&gt;
The ctrlr files inspiration came from the need to remove the hardcoding of special input maps for specific commercial arcade control panels from mame's source, but was designed to do more than be just a replacement.&lt;br /&gt;
== Technical Stuff ==&lt;br /&gt;
Some technical information&lt;br /&gt;
=== Differences between ctrlr file and cfg files ===&lt;br /&gt;
The ctrlr file and the default.cfg file only save input remaps.  The game specific cfg file saves much more, including input remaps, analog settings, input location in the driver, dipswitch settings, and other info.&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Joysticks&amp;diff=11341</id>
		<title>Joysticks</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Joysticks&amp;diff=11341"/>
		<updated>2008-05-19T23:06:58Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* European vs US vs Japanese Joysticks */  Added to Happ note, and added IL to European list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''Joystick''' is a device to let you manually control direction of movement in an arcade game.  This article describes the most common types of joysticks used in arcade cabinets and game systems.&lt;br /&gt;
&lt;br /&gt;
==Conventional Digital Joysticks: 8-way, 4-way &amp;amp; 2-way==&lt;br /&gt;
[[image:Stick-principal.jpg|200px|thumb|right|Stick diagram by JoyMonkey]]&lt;br /&gt;
Conventional joysticks are fairly simple devices without which Pac-Man would be ghost-fodder. When the joystick shaft is moved in any direction, the lower end of the stick is levered in the opposite direction and makes contact with switches, these switches are what tells Pac-Man to move and in which direction.&lt;br /&gt;
&lt;br /&gt;
[[image:Directions.gif|left]]By using four switches at the base of the joystick, 8 directions can be achieved; Up, Down, Left and Right as well as the four corner positions which are triggered by two switches being activated simultaneously.  When you press the joystick diagonally up and to the right, both the &amp;quot;up switch&amp;quot; and the &amp;quot;right switch&amp;quot; are triggered simultaneously, indicating your diagonal move. Joysticks like this are known as 8-way joysticks.&lt;br /&gt;
&lt;br /&gt;
Some joysticks were designed to specifically prevent the player from moving diagonally.  For example, joysticks used in Pac-Man and Donkey Kong both have physical restrictions preventing the joystick from moving to the diagonals. Since the joysticks only allow movement in 4 directions (Up, Down, Left and Right) they are known as 4-way joysticks.  While it is possible to use an 8-way joystick when playing 4-way games, it's not recommended, as accidentally hitting a diagonal with the joystick can create problems during gameplay, such as causing Mario to stand still or Pac-Man to become confused between moving up or to the side. &lt;br /&gt;
&lt;br /&gt;
Other games, such as Defender, Joust, Mario Brothers and Galaga, used a 2-way joystick since movement was only necessary from left to right or up to down.  While it may not be historically accurate, it is generally not a problem to use either 4-way or 8-way joysticks for these games.&lt;br /&gt;
&lt;br /&gt;
Standard 8-way only joysticks:&lt;br /&gt;
:* [http://retroblast.com/reviews/joysticks/happcompetition.html Happ Competition],  [http://www.retroblast.com/reviews/joysticks/happultimate.html Happ Ultimate (can be ordered in 8 way, 4-way, or 2-way models], [http://retroblast.com/reviews/joysticks/wico.html Wico 8-way Leafswitch Joystick (discontinued)].&lt;br /&gt;
&lt;br /&gt;
Standard 4-way only joysticks:&lt;br /&gt;
:* Happ Ms.Pac/Galaga Reunion, Betson Ms.Pac/Galaga Reunion, [http://www.retroblast.com/reviews/joysticks/happultimate.html Happ Ultimate (can be ordered in 8 way, 4-way, or 2-way models],[http://www.retroblast.com/reviews/joysticks/wico.html Wico 4-Way Leafswitch (discontinued)].&lt;br /&gt;
&lt;br /&gt;
====8-Way to 4-Way Switchable Joysticks====&lt;br /&gt;
Many 8-way joysticks that are sold can also be set to work in 4-way mode. There are two basic methods to change modes:  &lt;br /&gt;
&lt;br /&gt;
1) Changing a restrictor plate that only allows the joystick handle to be pushed in certain directions; or:&lt;br /&gt;
&lt;br /&gt;
2) Changing the actuator (that's the small piece on the bottom end of the joystick shaft that makes contact with the switches) to only allow contact with one switch at a time.  &lt;br /&gt;
&lt;br /&gt;
Restrictor plate changes convert the joystick to &amp;quot;true&amp;quot; 4-way operation, and will give the best play.  Actuator changes do not keep the handle from moving into the diagonal positions, this method only keeps the switches from being activated.  The result is a &amp;quot;dead spot&amp;quot; in the corners, where the stick can be pushed, but no switches are hit.  This is not much better than playing in standard 8-way mode, and is not reccomended.  Adjusting these joystick usually involves opening up your control panel so you can access the lower section of the joystick base.  Some models using a restrictor plate can be easily changed by hand once the control panel is open, while some others require the use of basic tools, like a screwdriver.&lt;br /&gt;
&lt;br /&gt;
Joysticks that can be set to 4-way or 8-way operation via an actuator swap include:&lt;br /&gt;
:* [http://retroblast.com/reviews/joysticks/happsuper.html Happ Super],  [http://www.retroblast.com/reviews/joysticks/happsp360.html Happ Perfect 360], [http://www.retroblast.com/reviews/joysticks/xgaming.html X-Gaming Joystick (X-Arcade)].&lt;br /&gt;
&lt;br /&gt;
Joysticks that can be set to 4-way or 8-way operation via the restrictor plate include:&lt;br /&gt;
:* Suzo 500 (aka [http://ultimarc.com/controls.html Euro-Stik] or [http://groovygamegear.com/webstore/index.php?main_page=product_info&amp;amp;cPath=65&amp;amp;products_id=197 Omni-Stik]), [http://retroblast.com/reviews/joysticks/ultimarc_tstik.html Ultimarc T-Stik], Ultimarc Mag-Stik, [http://retroblast.com/reviews/joysticks/ultimarc_jstik.html Ultimarc J-Stik], [http://www.himuragames.com/store_joysticks.php Sanwa JLF-TP-8YT], [http://www.himuragames.com/store_joysticks.php Seimitsu LS-32]. &lt;br /&gt;
&lt;br /&gt;
In the last few years, some companies have added to this feature to allow the joystick to be switchable from above the control panel in some way. This makes it simple for anyone to switch the joystick between 4-way to 8-way from game to game, without having to access 'the guts' of the control panel.&lt;br /&gt;
&lt;br /&gt;
Conventional joysticks that can be switched from above the control panel like this include:&lt;br /&gt;
:* [http://retroblast.com/reviews/joysticks/ultimarc_tstik.html T-Stik Plus], [http://retroblast.com/reviews/joysticks/ultimarc_magstikplus_part1.html Mag-Stik Plus], [http://retroblast.com/reviews/joysticks/prodigy.html Omni-Stik Prodigy].&lt;br /&gt;
&lt;br /&gt;
====[[TRON joystick]]s====&lt;br /&gt;
TRON arcade machines had 8-way trigger joysticks that were restricted to make it difficult to go diagonally.  This was necessary because some of the four games in TRON were developed for 4-way sticks, while others were able to use 8-ways. [[TRON_joystick|More on TRON joysticks here.]]&lt;br /&gt;
&lt;br /&gt;
Also see [[Wiring Push Buttons and Conventional Digital Joysticks]].&lt;br /&gt;
&lt;br /&gt;
==Unconventional Digital Joysticks==&lt;br /&gt;
[[image:Inductivestickopen.jpg|right|thumb|Inside a Suzo Inductive Stick]]&lt;br /&gt;
====[http://www.suzo.com/suzo/product.asp?nP=4545 Suzo Inductive Joystick]====&lt;br /&gt;
Instead of using conventional microswitches, Suzo Inductive sticks employ the use of a [http://en.wikipedia.org/wiki/Ferrite ferrite ring] at the base of the joystick shaft.  An oscillating magnetic field is induced in the ferrite ring by the main coil in the centre of the PCB around the opening.  This oscillating field within the ferrite ring induces a current in one or more of the eight smaller coils on the PCB.  The exact position of the joystick is determined by the strength of the current in each coil.  A potentiometer can be adjusted so that diagonal positions are ignored (resulting in 4-way output) or that diagonals are accepted (resulting in 8-way output.)  The sensitivity of 8-way operation can be refined using the potentiometer.  It is completely silent and is easily switchable between 4-way and 8-way using the aforementioned pot located on the bottom plate of the joystick.&lt;br /&gt;
[[Image:Suzo_Inductive_restrictor.JPG|right|thumb|Suzo Inductive Octagonal Restrictor]]&lt;br /&gt;
It has an octagonal restrictor to assist in locating the desired directions.  There are 6 pins for the connection which are labeled on the bottom plate of the joystick: Ground/Earth; +5 VDC; Left; Right; Up; Down.  It is a short throw joystick with a max travel of 5 degrees from centre.  The joystick is designed to be undermounted without taking the joystick apart; this requires a hole in the panel approx 44 mm or 1 3/4&amp;quot;.  The joystick handle was produced in two sizes, a 32 mm ball handle (suitable for cocktail cabinets), and a 38 mm ball handle.  This joystick is no longer produced but as of May 2006 some were still available from Groovy Game Gear and TNT Amusements.&lt;br /&gt;
&lt;br /&gt;
====[http://retroblast.com/reviews/joysticks/happsp360.html Happ Perfect 360 (P360)]====&lt;br /&gt;
&lt;br /&gt;
The Perfect 360 joystick is an optical joystick, which means that the position of the handle is read by optical switches, instead of conventional leaf switches or microswitches.  This gives near-silent operation, as the handle &amp;amp; actuator never touch anything.&lt;br /&gt;
  &lt;br /&gt;
These sticks have a very smooth feel, largely due to the &amp;quot;no touch&amp;quot; action.  P360 joysticks have a round restrictor, instead of the more common square restriction found on many other modern joysticks.  This round restriction adds to the smoothness factor, because there are no corners to feel.&lt;br /&gt;
&lt;br /&gt;
Connection-  P360 joys require a little more effort to hook up- in addition to the Up, Down, Left, Right and Ground connections on standard joysticks, the P360 also needs a +5 volts connection.  This is easy enough to get, as encoders such as the I-Pac and KeyWiz provide a +5v header.  PC power supplies produce +5v on the red wire of the drive connectors.  There is also +5v power available on USB &amp;amp; PS2 cables.  +5 volt power is easy to find.&lt;br /&gt;
&lt;br /&gt;
History-  The Perfect 360 started out as an aftermarket add-on kit for Wico leafswitch joysticks.  Models were later added to the product line to convert Happ Super, Competition, and Ultimate sticks, and possibly others as well.  Happ eventually bought the rights to the P360 technology, and discontinued the kits.  Happ began producing a complete stick instead, with the top half of a Wico joystick base (no longer sold by Wico by then) mated to a P360 bottom half.&lt;br /&gt;
&lt;br /&gt;
Interchangability-  P360 handles and Wico handles have been found to be interchangable.  There are also replacement handles available from SlikStik.  Wico Pear-top sticks used the same pivot cones and spacer sleeves.&lt;br /&gt;
&lt;br /&gt;
====[http://www.retroblast.com/Hardware/Ultimarc-UltraStik-360-Review.php Ultimarc UltraStik 360]====&lt;br /&gt;
[[Image:UltraStik1.jpg|right|thumb|Ultimarc's Ultrastik 360]]&lt;br /&gt;
This offering from Ultimarc operates on similar principals to an inductive joystick, but offers many more custom features. Using its USB interface and the provided software, it's possible to easily switch the joystick between 2-way, 4-way, 8-way, analog and even 4-way diagonal (Q*Bert) modes. User defineable custom modes are also available.&lt;br /&gt;
&lt;br /&gt;
When used via USB, Windows thinks of this joystick as a gamepad and allows you to hook-up 8 buttons straight to the joystick; so no seperate encoder (IPac, Keywiz etc) is necessary.&lt;br /&gt;
&lt;br /&gt;
==49-Way Joysticks==&lt;br /&gt;
Once used in a small handfull of Williams, Midway and Atari games, 49 way joysticks live in a no-man's land between digital and analog joysticks.  49-way joysticks do not, as the name might seem to imply, point in 49 different directions.  The number 49 comes from the number of positions the stick can report to the game hardware, including positions somewhere ''between'' &amp;quot;dead center&amp;quot; and &amp;quot;pushed all the way&amp;quot;.  Imagine a 7x7 grid (that's 49 squares) and you've got it.  Games that originally used this hardware benefited from the extra info the joystick could report by allowing the player to control the on-screen character with more precision- both in the form of better directional control (24 discrete directions possible, if you count dead center), and 3 levels of speed control, based on how far from center the stick was pushed.  For example, in [http://www.klov.com/game_detail.php?letter=&amp;amp;game_id=9553 SiniStar], the player can make the ship move faster or slower, by varying how hard they push the stick, and the ship's movement is not limited to just 8 directions.  Attempting to play this game (or others that originally used 49-way sticks) with a standard 8-way digital joystick tends to be frustrating- SiniStar is a very difficult game in the first place; take away the speed control and limit yourself to 8 directions, and it's ''really, really'' hard.  More info on 49-way joysticks can be found at [http://urebelscum.speedhost.com/49waySticks.html What are 49-Way joysticks?] by URebelScum&lt;br /&gt;
&lt;br /&gt;
Games that originally used 49-way joysticks include:&lt;br /&gt;
&lt;br /&gt;
*SiniStar&lt;br /&gt;
*Blaster&lt;br /&gt;
*Arch Rivals&lt;br /&gt;
*Pigskin 621 A.D.&lt;br /&gt;
*Blitz&lt;br /&gt;
*Blitz '99&lt;br /&gt;
*Blitz 2000&lt;br /&gt;
*NFL Blitz 2000 Gold Edition&lt;br /&gt;
*NBA Showtime&lt;br /&gt;
*SportStation&lt;br /&gt;
*Gauntlet: Legends&lt;br /&gt;
*Gauntlet: Dark Legacy&lt;br /&gt;
&lt;br /&gt;
For home gaming purposes, when paired with the [[Gamepad Encoders#GP Wiz49|GP Wiz49]] controller from [www.groovygamegear.com GroovyGameGear], these analog style joysticks have become a popular all-around stick. Using the GP-Wiz's various DRS modes, these joysticks can be easily switched between 8-way, 4-way, 2-way (vertical), 2-way (horizontal) and diagonal (Q*Bert style) modes without having to physically change the joystick hardware. This allows these sticks to be used to play any digital joystick games well.  In additon, the two 49-way modes allow play for games that originally used 49-way sticks (and have emulator support that goes beyond 8-ways- not all 49-way games do), and also will play well for ''some'' games that originally used analog or Hall-Effect joysticks.&lt;br /&gt;
&lt;br /&gt;
There are three varieties of 49-way joystick:  Williams, Midway, and Happ.  &lt;br /&gt;
&lt;br /&gt;
The Williams are easy to distinguish- they use a distinctive rubber centering &amp;quot;spider&amp;quot; on the bottom, and have balltop handles.  Red balltops come from SiniStar; Orange come from Arch Rivals.  There are also Williams optical sticks out there with Turquoise and Yellow balltops.  These ''look'' like 49-ways, complete with centering spider.  However, these sticks do not have as many optics, and the pin connector is different, with fewer pins.  These sticks are 8-way only.  Turquoise ones most likely come from Bubbles, however, some early Joust games shipped with Turquoise and Yellow optical sticks. &lt;br /&gt;
&lt;br /&gt;
The Midway and Happ 49-ways are ''very'' similar, in fact the Happ is just the Midway stick with a minor re-design.  (Happ bought the rights to a lot of Midway's parts business several years ago.)  The Midway sticks have a smaller diameter shaft, and the centering grommet has a correspondingly smaller hole.  Both have a black bat top handle.  Replacement handles are available in a variety of colors (Happ variety only) at [www.groovygamegear.com].&lt;br /&gt;
&lt;br /&gt;
==Analog Joysticks==&lt;br /&gt;
&lt;br /&gt;
Analog joysticks are not bound by the limits digital joysticks face.  Digital joysticks can only point in 8 (or fewer; see above) directions, or no direction at all (centered).  Analog joysticks can point in (theoretically) an unlimited number of directions.  Furthermore, Analog joystics can discern how far the handle has been pushed from the center position.  Games take advantage of these properties to give the player a much greater level of control over their on-screen character.  For example, the bird in [http://www.klov.com/game_detail.php?letter=&amp;amp;game_id=9338 Road Runner] can run in more than just the 8 standard directions, and how far the player pushes the joystick from center determines how fast the Road Runner runs.  &lt;br /&gt;
&lt;br /&gt;
Most analog sticks use a pair of potentiometers, one to measure left-to-right movement (the X-axis), and one to measure forward-and-back movement (the Y-axis).  A few games, however, used a &amp;quot;Hall Effect&amp;quot; stick.  Hall effect sticks use Hall sensors and magnets to read the postion of the stick.  The end result is the same, though- both types report to the game which direction and how far the stick is being pressed.  &lt;br /&gt;
&lt;br /&gt;
While the actual resolution of an analog joystick may be theoretically unlimited, the standard for analog joysticks connected to a PC is 256x256.  Compare this to the 7x7 resolution of a 49-way joystick, or the 3x3 resolution of a standard 8-way joystick.  This explains why it is difficult to play games that originally used analog controls with a standard 8-way stick; the stick simply can't control the on-screen character the way it was intended to be controlled.  A 49-way stick is sufficient for ''some'' games that originally used analog controls, but not all of them.  Road Runner, for example, can be adequately controlled with a 49-way joystick, as that stick would give the bird 24 directions to run in, and four speeds (including stopped)- which ought to be enough to outwit that dumb coyote.  [http://www.klov.com/game_detail.php?letter=&amp;amp;game_id=9773 Star Wars], on the other hand, cannot be played well with a 49-way, as that stick will only aim the X-Wing's blasters at 49 equally spaced spots on the screen, leaving Tie Fighters that are in-between those spots un-shootable.  (Star Wars actually used an analog [[Flight Yoke]], rather than an analog joystick, but these controls are electrically identical, and actually interchangeable as far as the game is concerned.)&lt;br /&gt;
&lt;br /&gt;
Games that used analog joysticks include:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
*Afterburner&lt;br /&gt;
*CyberSled ''(2 analog sticks per player; two players = 4 sticks)''&lt;br /&gt;
*Food Fight&lt;br /&gt;
*Jurrasic Park&lt;br /&gt;
*Maneater&lt;br /&gt;
*Pursuit&lt;br /&gt;
*Quarterback&lt;br /&gt;
*Rail Chase&lt;br /&gt;
*Red Baron&lt;br /&gt;
*Solar Assault&lt;br /&gt;
*Space Harrier&lt;br /&gt;
*Star Wars Trilogy&lt;br /&gt;
|&lt;br /&gt;
*Steel Talons&lt;br /&gt;
*T-Mek&lt;br /&gt;
*Tail Gunner&lt;br /&gt;
*Tail Gunner II&lt;br /&gt;
*Thunderblade&lt;br /&gt;
*World Series Baseball&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Escape From The Planet Of The Robot Monsters ''(Hall-Effect)''&lt;br /&gt;
*I, Robot ''(Hall-Effect)''&lt;br /&gt;
*Road Runner ''(Hall-Effect)''&lt;br /&gt;
|&lt;br /&gt;
*Apache 3 ''(yoke)''&lt;br /&gt;
*Hydra ''(yoke)''&lt;br /&gt;
*Lock-On ''(yoke)''&lt;br /&gt;
*Star Wars ''(yoke)''&lt;br /&gt;
*Stun Runner ''(yoke)''&lt;br /&gt;
*The Empire Strikes Back ''(yoke)''&lt;br /&gt;
*The Return Of The Jedi ''(yoke)''&lt;br /&gt;
*Turbo-Sub ''(yoke)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Rotary Joysticks==&lt;br /&gt;
&lt;br /&gt;
There are two types of rotary joysticks that often get confused:  Mechanical rotary sticks, and Optical rotary sticks.  Either can be interfaced with a PC.&lt;br /&gt;
&lt;br /&gt;
Mechanical rotary sticks are the type that most people remember from games like Ikari Warriors.  They have a 12-position rotary switch attached to the bottom of the joystick, which is turned by rotating the handle.  Each turn of the handle is accompanied by a clicking sound, and distinct tactile feedback that lets the player know that a turn has been registered.  &lt;br /&gt;
&lt;br /&gt;
The SNK games used a stick called the LS-30, with yellow octagonal tops.  The Data East games used the same sticks, but with a yellow barrel shaped top.  Wico used to make a rotary stick, with a yellow balltop  These were basically standard Wico leaf sticks, with the rotary switch added to the bottom.   Happ still sells a mechanical rotary stick, which is basically a Happ Super with a rotary switch added to the bottom.  Fl0yd at BYOAC figured out how to attach the rotary parts from a Happ rotary to the bottom of a Happ 49-way joystick, and still sells the kits to modify your own Happ 49-way.&lt;br /&gt;
&lt;br /&gt;
Optical rotary sticks have an optical encoder wheel, similar to a spinner, instead.  Caliber .50 used a stick called the Loop-24, with green octagonal tops.&lt;br /&gt;
&lt;br /&gt;
Most games that used rotary joysticks used the rotary function to determine which direction the on-screen character was aiming.  This allowed the player to shoot in a different direction from the direction of motion, all with one hand.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mechanical Rotary joystick games (LS-30, Happ Mechanical Rotary sticks)===&lt;br /&gt;
*Battle Field&lt;br /&gt;
*Top Gunner (bootleg)&lt;br /&gt;
*World Wars&lt;br /&gt;
*Ikari Warriors&lt;br /&gt;
*Victory Road&lt;br /&gt;
*Heavy Barrel&lt;br /&gt;
*Gondomania&lt;br /&gt;
*Bermuda Triangle&lt;br /&gt;
*Time Soldiers&lt;br /&gt;
*Guerilla War&lt;br /&gt;
*SAR - Search And Rescue&lt;br /&gt;
*Downtown&lt;br /&gt;
*Victory Road&lt;br /&gt;
*Midnight Resistance&lt;br /&gt;
*Ikari III - The Rescue&lt;br /&gt;
*Exterminator (unknown whether this used mechanical or optical rotary sticks)&lt;br /&gt;
*TNK III&lt;br /&gt;
*Battle Field (Japanese verion of Time Soldiers)&lt;br /&gt;
*Dogosoken (Japanese version of Victory Road)&lt;br /&gt;
*Makyou Senshi (Japanese version of Gondomania)&lt;br /&gt;
*Guevara (Japanese version of Guerrilla War)&lt;br /&gt;
&lt;br /&gt;
===Optical Rotary games (Loop-24 or Happ Optical rotary sticks)===&lt;br /&gt;
*Caliber .50&lt;br /&gt;
*Touchdown Fever&lt;br /&gt;
*Touchdown Fever II&lt;br /&gt;
&lt;br /&gt;
===Other &amp;quot;Rotary&amp;quot; games===&lt;br /&gt;
These games did ''not'' use rotary joysticks,&lt;br /&gt;
but are sometimes confused with rotary games.&lt;br /&gt;
&lt;br /&gt;
*Frontline (Taito Aim-n-Fire)&lt;br /&gt;
*The Tin Star (Taito Aim-n-Fire)&lt;br /&gt;
*Wild Western (Taito Aim-n-Fire)&lt;br /&gt;
*Sherrif (rotary switch)&lt;br /&gt;
*Bandido (rotary switch, clone of Sherrif)&lt;br /&gt;
*Xybots (Twist-to-Turn)&lt;br /&gt;
*720 (Optical 720 spinner/joy hybrid)&lt;br /&gt;
&lt;br /&gt;
==Mounting Joysticks==&lt;br /&gt;
&lt;br /&gt;
==European vs US vs Japanese Joysticks==&lt;br /&gt;
&lt;br /&gt;
Common US joysticks include those produced by:&lt;br /&gt;
&lt;br /&gt;
*Happ&lt;br /&gt;
*Wico&lt;br /&gt;
*Atari&lt;br /&gt;
*Midway&lt;br /&gt;
&lt;br /&gt;
[Most of the Happ 8/4-way joysticks (including the Supers and Competitions) are actually manufactured by a Spanish company ([http://www.industrias-lorenzo.com Industrias-Lorenzo]) and are therefore technically European joysticks, while most of the Happ analog joysticks are based on Atari designs.]&lt;br /&gt;
&lt;br /&gt;
Common European joysticks include those produced by:&lt;br /&gt;
&lt;br /&gt;
*Suzo&lt;br /&gt;
*Industrias-Lorenzo&lt;br /&gt;
&lt;br /&gt;
Common Japanese joysticks include those produced by:&lt;br /&gt;
&lt;br /&gt;
*Sanwa&lt;br /&gt;
*Semitsu&lt;br /&gt;
&lt;br /&gt;
==Discontinued Joysticks and Reproductions==&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Controls]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;br /&gt;
[[Category:Index]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11142</id>
		<title>Ctrlr file</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11142"/>
		<updated>2008-04-01T23:23:48Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: Moved intro paragraph&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ctrlr file is an additional method of changing Mame's inputs from the defaults, to the standard in-game UI method (tab).  Like the standard method of changing inputs, ctrlr files can be used to change the inputs for all games or individual games, but unlike the standard method ctrlr can also change inputs for a parent and all it's clones, or for all games that share a driver in mame's source.  Mame comes with a few ctrlr files for a bunch of commercial control panels: hotrod, hotrodse, x-arcade, and slikstik.&lt;br /&gt;
&lt;br /&gt;
However, it's relative steep learning curve, limitations, format changes, and overlapping features with mame's standard input mapping method seem to have curbed the use of the ctrlr files.&lt;br /&gt;
&lt;br /&gt;
== Notes on nomenclature used in this page ==&lt;br /&gt;
&lt;br /&gt;
Since this page is about changing inputs from mame's default values, referring to an input by which key or button to press can be wrong if it had been remapped to something else.  Inputs will be referred to by the name shown in mame's in game UI instead of the key pressed.  For example, the tab key is usually mapped to &amp;quot;Config Menu&amp;quot;; this input will be referred to as &amp;quot;Config Menu (usually tab)&amp;quot; instead of just the tab input.  This is more technically correct and help show every input in mame can be changed.&lt;br /&gt;
&lt;br /&gt;
== Why use Ctrlr file instead of the normal in game UI method? ==&lt;br /&gt;
&lt;br /&gt;
The most common use of ctrlr files is probably with the commercial control panels: X-Arcade and HotRodSE for the most part.  They have the seven button combination SF2 six button + NeoGeo four button layout, and Mame comes with ctrlr files specifically for these control panels.  With these control panels and the matching ctrlr file, you do not need to do any remapping for most of the games in mame.&lt;br /&gt;
&lt;br /&gt;
The most driving reason to make your own ctrlr file probably is also NeoGeo games and a control panel with a 7 button layout.  The 7 button layout is a way to have the Street Fighter II 6 button rectangle physical layout &amp;amp; NeoGeo's 4 button in a (curved) line physical layout.  However, to use the two different layouts, the buttons need to be reassigned depending on which game is being played.  This can be done by making the changes once with the ctrlr file, or by making the changes many times (once for each NeoGeo game) with the standard method.&lt;br /&gt;
&lt;br /&gt;
Other reasons include &lt;br /&gt;
* Mame rewrites the cfg files every time mame is run, while the ctrlr is not changed by mame ever.  This prevents the ctrlr file from being accidentally changed.&lt;br /&gt;
* If you switch controllers that need different mapping, each controller can have it's own ctrlr file, and only change the -ctrlr option instead of remap every time you switch controllers.&lt;br /&gt;
* Ctrlr file has a slightly better record as being cross version compatible over the standard cfg files.&lt;br /&gt;
* Copying remaps within the ctrlr file to different games is much more reliable than it is with copying cfg files.&lt;br /&gt;
&lt;br /&gt;
== How to use a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
It is easy to use an existing ctrlr file, such as those provided with mame or one you made your own.  Currently, mameUI does not provide the ctrlr files included with the [[http://mamedev.org|official mame]].&lt;br /&gt;
&lt;br /&gt;
If the file is in the ctrlr subfolder, note the name (not including the &amp;quot;.cfg&amp;quot;) of the ctrlr file you want to use, and edit mame.ini so &amp;quot;ctrlr 'ctrlrFileName''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can also put the ctrlr file in a different folder.  Then you will also need to edit the ctrlrpath option to include the folder the ctrlr file is in.  This can be used to share one ctrlr file between different versions of mame.&lt;br /&gt;
&lt;br /&gt;
== How to create a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
There are a few ways to make ctrlr files.  And since the ctrlr file format has changed a couple times, the methods have changed.  The following sections will cover from mame 0.106 to current (0.124).&lt;br /&gt;
&lt;br /&gt;
=== Basic Ctrlr file format ===&lt;br /&gt;
&lt;br /&gt;
The ctrlr file is an XML file, and almost matches the cfg default.cfg file which mame uses to save the general input changes.  A very simple example of a file that could either be a ctrlr file or the cfg default.cfg file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;mameconfig version=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;&lt;br /&gt;
             &amp;lt;port type=&amp;quot;UI_LEFT&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                     KEYCODE_LEFT OR KEYCODE_LCONTROL&lt;br /&gt;
                 &amp;lt;/newseq&amp;gt;&lt;br /&gt;
             &amp;lt;/port&amp;gt;&lt;br /&gt;
            &amp;lt;port type=&amp;quot;UI_RIGHT&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                    KEYCODE_RIGHT OR KEYCODE_LALT&lt;br /&gt;
                &amp;lt;/newseq&amp;gt;&lt;br /&gt;
            &amp;lt;/port&amp;gt;&lt;br /&gt;
         &amp;lt;/input&amp;gt;&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
 &amp;lt;/mameconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As shown, there can be multiple port nodes within the input node.  The only difference in format of the ctrlr file and the cfg default.cfg file is the ctrlr file can have multiple system nodes in the mameconfig node, while the cfg default.cfg file can only have one system node which has to be named &amp;quot;default&amp;quot;.  The additional system nodes can have the name of a specific game, a parent game, a mame driver file name, or &amp;quot;default&amp;quot;.  The system name tells mame to which games to apply the changes within that system node.&lt;br /&gt;
&lt;br /&gt;
FWIW, the example, if everything else is left at default, lets you press player1 button1 then player1 button2 or left arrow then right arrow, instead of &amp;quot;O&amp;quot; &amp;quot;K&amp;quot; or wiggling the joystick.&lt;br /&gt;
&lt;br /&gt;
Also see [[#Order Matters]]&lt;br /&gt;
&lt;br /&gt;
=== Edit the Ctrlr files provided with mame ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to make your own ctrlr file might be by editing one of the ctrlr files supplied with mame binary (mameUI does not include these ATM).  This might be the way to go if you are changing the exact same inputs for the same games as already in the provided ctrlr file.  &lt;br /&gt;
&lt;br /&gt;
=== Remap and Test with the Standard in game UI method and Convert to ctrlr file ===&lt;br /&gt;
&lt;br /&gt;
However, the most flexible way to make your own ctrlr file to match your own inputs is more in depth.  You will need a text editor to edit the files, and will run mame many times.  Since Order Matters it is best to start with mapping on the widest level and move down; start with the default (every game), than move to driver wide changes, then to the driver's parents, then to the parent's clones.&lt;br /&gt;
&lt;br /&gt;
==== Prep before starting ====&lt;br /&gt;
#Delete (or move to a different folder for backup) cfg/default.cfg file and all game cfg files that you are going to put in the ctrlr file.  (Alternative: remove all game specific remaps by either hand editing the cfg files or with mame's in-game UI, if you want to keep some of the other settings saved in the cfg files.)&lt;br /&gt;
#If you have your OS to hide file type extensions, either disable that or ignore the &amp;quot;.cfg&amp;quot; in the following file names.&lt;br /&gt;
&lt;br /&gt;
==== Start with general (every game) remapping ====&lt;br /&gt;
If you already have a ctrlr file and want to use it, skip to Add more systems.&lt;br /&gt;
#Edit mame.ini so ctrlr is set to blank.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Start any game in mame.  &lt;br /&gt;
#Press Config Menu (usually tab unless remapped) to start mame's in-game ui&lt;br /&gt;
#Press UI Select (usually enter unless remapped) &amp;quot;Input (general)&amp;quot;&lt;br /&gt;
#Remap any and all inputs you want to be applied to all games, as normal.&lt;br /&gt;
#Test remapping by playing the game.  If you need to make any corrections, repeating from step #3.&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Move cfg/default.cfg to the ctrlr folder in mame.&lt;br /&gt;
#Rename ctrlr/default.cfg to anything you want ctrlr/''fillInNameHere''.cfg&lt;br /&gt;
#Edit mame.ini to point to whatever you named the file in the ctrlr folder (ctrlr ''fillInNameHere'')&lt;br /&gt;
#(If it still exists) delete cfg/default.cfg file.&lt;br /&gt;
&lt;br /&gt;
==== Add more systems ====&lt;br /&gt;
This is similar to, but not exactly the same, as the starting step.  You can also start here if you started with a supplied mame ctrlr file and want to add a new system node (driver or game).  Also look at [[#Shortcuts]] for other methods.&lt;br /&gt;
#Edit mame.ini to point to your ctrlr file if you haven't already.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Decide if you want to remap on the driver, parent, or clone level.  (Reminder, start with driver, then it's parents, then their clones.)  &lt;br /&gt;
#Find the name of the driver, parent or clone and note it down.  Neogeo games are &amp;quot;neogeo&amp;quot;; to find the driver name for other games, &amp;quot;mame -ls ''gamename''&amp;quot;.&lt;br /&gt;
#Start that game (or a game in that driver).  (You could start any game, but it's best to start the specific game for testing and reference to what input ports are used.)&lt;br /&gt;
#Again, press Config Menu and select &amp;quot;Input (general)&amp;quot;.  &amp;lt;--- NOT &amp;quot;Input (this game)&amp;quot;.  You can look there to see what input ports are used by the game, but remap in the &amp;quot;Input (general)&amp;quot; location.&lt;br /&gt;
#Again, remap any and all changes you want for this driver, parent or clone.&lt;br /&gt;
#Test remapping.  (make any needed corrections)&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Open cfg/default.cfg in a text editor.&lt;br /&gt;
#Copy the whole system node, from (and including) &amp;lt;system name= to &amp;lt;/system&amp;gt;.&lt;br /&gt;
#Open your ctrlr file.&lt;br /&gt;
#Paste the copied system node into the ctrlr file.  If you have been working from the drivers down to the parents to the clone, you can paste as the last system, just before the closing &amp;lt;/mameconfig&amp;gt;.  If you have not been as careful on the order you're remapping, make sure you paste the new system node in a correct place read Order Matters.&lt;br /&gt;
#Rename the system name to the driver, parent or clone you noted in step 2.  Example if for neogeo, change to &amp;lt;system name=&amp;quot;neogeo&amp;quot;&amp;gt;.&lt;br /&gt;
#Save (and exit) the ctrlr file.&lt;br /&gt;
#Exit (without saving) the default cfg file.&lt;br /&gt;
#Delete the cfg default.cfg file.&lt;br /&gt;
#Test game(s) inputs.&lt;br /&gt;
#Repeat as needed for all drivers/games you want to remap.  Remember, if you remap a parent, you do not need to remap a clone unless you want the clone to be different (or the clone used different input ports).&lt;br /&gt;
&lt;br /&gt;
==== Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
There are a few shortcuts that can be done in certain cases.&lt;br /&gt;
&lt;br /&gt;
*If you have an input mapping that is common between games that do not share a parent or driver, you don't have to do all the steps for adding more systems for both games.  For the second game, start at step #10 and rename to the new game.  You can copy from within the ctrlr file itself, too.&lt;br /&gt;
*You can make other hand edits to the ctrlr file, as the XML is fairly human readable.&lt;br /&gt;
&lt;br /&gt;
== Limitations and Workarounds ==&lt;br /&gt;
=== Games with Hardcoded Inputs ===&lt;br /&gt;
&lt;br /&gt;
Games with hardcoded input need additional steps to use the ctrlr set inputs instead of the hardcoded values.  You have to go into each of the offending game's cfg file and reset the hardcoded input ports to not use the hardcoded values.  This is easiest done with mame's in game UI &amp;quot;Inputs (this game)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#Start the game with hardcoded inputs you don't want to use.&lt;br /&gt;
#Press Config Menu (usually tab unless remapped) to enter mame's in game UI.&lt;br /&gt;
#Select &amp;quot;Input (this game)&amp;quot;, by pressing UI Select (usually enter unless remapped).&lt;br /&gt;
#Select the hardcoded input port you want to change (it will be reverse highlighted).&lt;br /&gt;
#Press UI Cancel (usually esc unless remapped).&lt;br /&gt;
#Wait until mame shows &amp;quot;None&amp;quot;.&lt;br /&gt;
#Select, then UI Cancel, again.&lt;br /&gt;
#Wait until mame shows the setting by the ctrlr file (it will not be reverse highlighted).&lt;br /&gt;
#Repeat steps 4-7 for all hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
#Repeat steps 1-8 for the games with hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
&lt;br /&gt;
Other ways around the hardcoded bump, including editing the source and recompiling, will not be described here.&lt;br /&gt;
&lt;br /&gt;
=== Order Matters ===&lt;br /&gt;
&lt;br /&gt;
Mame does not exactly enforce a specific order to the different system nodes within the ctrlr files.  However the order does make a difference in the final mapping if different systems that are applied to a game with the same port type(s) differently in different system nodes that apply to the game.  Mame reads the ctrlr file from top to bottom, and checks if each system node if it should be applied to the game, and applies the changes ''in the order the systems are in the ctrlr file'' overriding any mapping for all ports changed.&lt;br /&gt;
&lt;br /&gt;
So to make sure all changes are correctly applied, (referred hereafter as the ctrlr rules of order): &lt;br /&gt;
*Clones should come after their parent, &lt;br /&gt;
*Parents (and clones) should come after their driver, and &lt;br /&gt;
*Drivers (and parents &amp;amp; clones) should come after &amp;quot;default&amp;quot; system. &lt;br /&gt;
&lt;br /&gt;
This can be done two ways, or a mix of them.  The easiest rule is: default, then all drivers, then all parents, then all clones.  However this separates the clones from their parents and the parents from their drivers.  It might be easier to upkeep if all of the parents come immediately after their driver, and all clones immediately after their parents.  But neither these have to be exactly followed, as long as the three ctrlr rules of order are followed.&lt;br /&gt;
&lt;br /&gt;
Valid examples:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;34%&amp;quot;|&lt;br /&gt;
default-&amp;gt;drivers-&amp;gt;parents-&amp;gt;clones&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
grouped by driver, parent, clone&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;quot;disorganized order&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1 (parent, from driver AAA)&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1 (clone of parent Aaa1)&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc (clone without parent or driver in ctrlr file)&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ctrlr file does not do ... ===&lt;br /&gt;
&lt;br /&gt;
You cannot use the Ctrlr file to:&lt;br /&gt;
*Set analog sensitivity, digital speed, center speed. - These are set in mame's in game UI &amp;quot;Analog Controls&amp;quot;, and saved in the cfg files.&lt;br /&gt;
*Change volume, CPU speed or other On Screen Display (usually tilde unless remapped) settings&lt;br /&gt;
&lt;br /&gt;
=== My ctrlr worked but doesn't anymore ===&lt;br /&gt;
&lt;br /&gt;
The cause could be some minor error to something bigger.&lt;br /&gt;
&lt;br /&gt;
*Check that the ctrlr file still exists in the right location, and is not corrupt.&lt;br /&gt;
*If you updated mame, check if mame.ini points at your ctrlr file.&lt;br /&gt;
*If you just edited the ctrlr file, check if the system nodes are in the correct order.&lt;br /&gt;
*Make sure no one remapped using mame's in-game UI (the normal remapping method).  If you know everything you want remapped is in the ctrlr, you could delete everything in the cfg folder (warning: the game specific cfg files hold more than just input remaps).&lt;br /&gt;
*Mame could have changed the ctrlr and or cfg format.  This might be able to be fixed with a simple find and replace, or in the worst case you might need to completely redo making the ctrlr file depending on what changed.&lt;br /&gt;
&lt;br /&gt;
== History of Ctrlr files ==&lt;br /&gt;
The ctrlr files inspiration came from the need to remove the hardcoding of special input maps for specific commercial arcade control panels from mame's source, but was designed to do more than be just a replacement.&lt;br /&gt;
== Technical Stuff ==&lt;br /&gt;
Some technical information&lt;br /&gt;
=== Differences between ctrlr file and cfg files ===&lt;br /&gt;
The ctrlr file and the default.cfg file only save input remaps.  The game specific cfg file saves much more, including input remaps, analog settings, input location in the driver, dipswitch settings, and other info.&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11141</id>
		<title>Ctrlr file</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Ctrlr_file&amp;diff=11141"/>
		<updated>2008-04-01T23:21:56Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: First edit at adding a page on the ctrlr file in mame -WIP-&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a Ctrlr file in Mame? ==&lt;br /&gt;
&lt;br /&gt;
A ctrlr file is an additional method of changing Mame's inputs from the defaults, to the standard in-game UI method (tab).  Like the standard method of changing inputs, ctrlr files can be used to change the inputs for all games or individual games, but unlike the standard method ctrlr can also change inputs for a parent and all it's clones, or for all games that share a driver in mame's source.  Mame comes with a few ctrlr files for a bunch of commercial control panels: hotrod, hotrodse, x-arcade, and slikstik.&lt;br /&gt;
&lt;br /&gt;
However, it's relative steep learning curve, limitations, format changes, and overlapping features with mame's standard input mapping method seem to have curbed the use of the ctrlr files.&lt;br /&gt;
&lt;br /&gt;
== Notes on nomenclature used in this page ==&lt;br /&gt;
&lt;br /&gt;
Since this page is about changing inputs from mame's default values, referring to an input by which key or button to press can be wrong if it had been remapped to something else.  Inputs will be referred to by the name shown in mame's in game UI instead of the key pressed.  For example, the tab key is usually mapped to &amp;quot;Config Menu&amp;quot;; this input will be referred to as &amp;quot;Config Menu (usually tab)&amp;quot; instead of just the tab input.  This is more technically correct and help show every input in mame can be changed.&lt;br /&gt;
&lt;br /&gt;
== Why use Ctrlr file instead of the normal in game UI method? ==&lt;br /&gt;
&lt;br /&gt;
The most common use of ctrlr files is probably with the commercial control panels: X-Arcade and HotRodSE for the most part.  They have the seven button combination SF2 six button + NeoGeo four button layout, and Mame comes with ctrlr files specifically for these control panels.  With these control panels and the matching ctrlr file, you do not need to do any remapping for most of the games in mame.&lt;br /&gt;
&lt;br /&gt;
The most driving reason to make your own ctrlr file probably is also NeoGeo games and a control panel with a 7 button layout.  The 7 button layout is a way to have the Street Fighter II 6 button rectangle physical layout &amp;amp; NeoGeo's 4 button in a (curved) line physical layout.  However, to use the two different layouts, the buttons need to be reassigned depending on which game is being played.  This can be done by making the changes once with the ctrlr file, or by making the changes many times (once for each NeoGeo game) with the standard method.&lt;br /&gt;
&lt;br /&gt;
Other reasons include &lt;br /&gt;
* Mame rewrites the cfg files every time mame is run, while the ctrlr is not changed by mame ever.  This prevents the ctrlr file from being accidentally changed.&lt;br /&gt;
* If you switch controllers that need different mapping, each controller can have it's own ctrlr file, and only change the -ctrlr option instead of remap every time you switch controllers.&lt;br /&gt;
* Ctrlr file has a slightly better record as being cross version compatible over the standard cfg files.&lt;br /&gt;
* Copying remaps within the ctrlr file to different games is much more reliable than it is with copying cfg files.&lt;br /&gt;
&lt;br /&gt;
== How to use a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
It is easy to use an existing ctrlr file, such as those provided with mame or one you made your own.  Currently, mameUI does not provide the ctrlr files included with the [[http://mamedev.org|official mame]].&lt;br /&gt;
&lt;br /&gt;
If the file is in the ctrlr subfolder, note the name (not including the &amp;quot;.cfg&amp;quot;) of the ctrlr file you want to use, and edit mame.ini so &amp;quot;ctrlr 'ctrlrFileName''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can also put the ctrlr file in a different folder.  Then you will also need to edit the ctrlrpath option to include the folder the ctrlr file is in.  This can be used to share one ctrlr file between different versions of mame.&lt;br /&gt;
&lt;br /&gt;
== How to create a Ctrlr file ==&lt;br /&gt;
&lt;br /&gt;
There are a few ways to make ctrlr files.  And since the ctrlr file format has changed a couple times, the methods have changed.  The following sections will cover from mame 0.106 to current (0.124).&lt;br /&gt;
&lt;br /&gt;
=== Basic Ctrlr file format ===&lt;br /&gt;
&lt;br /&gt;
The ctrlr file is an XML file, and almost matches the cfg default.cfg file which mame uses to save the general input changes.  A very simple example of a file that could either be a ctrlr file or the cfg default.cfg file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;mameconfig version=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;system name=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;&lt;br /&gt;
             &amp;lt;port type=&amp;quot;UI_LEFT&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                     KEYCODE_LEFT OR KEYCODE_LCONTROL&lt;br /&gt;
                 &amp;lt;/newseq&amp;gt;&lt;br /&gt;
             &amp;lt;/port&amp;gt;&lt;br /&gt;
            &amp;lt;port type=&amp;quot;UI_RIGHT&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;newseq type=&amp;quot;standard&amp;quot;&amp;gt;&lt;br /&gt;
                    KEYCODE_RIGHT OR KEYCODE_LALT&lt;br /&gt;
                &amp;lt;/newseq&amp;gt;&lt;br /&gt;
            &amp;lt;/port&amp;gt;&lt;br /&gt;
         &amp;lt;/input&amp;gt;&lt;br /&gt;
     &amp;lt;/system&amp;gt;&lt;br /&gt;
 &amp;lt;/mameconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As shown, there can be multiple port nodes within the input node.  The only difference in format of the ctrlr file and the cfg default.cfg file is the ctrlr file can have multiple system nodes in the mameconfig node, while the cfg default.cfg file can only have one system node which has to be named &amp;quot;default&amp;quot;.  The additional system nodes can have the name of a specific game, a parent game, a mame driver file name, or &amp;quot;default&amp;quot;.  The system name tells mame to which games to apply the changes within that system node.&lt;br /&gt;
&lt;br /&gt;
FWIW, the example, if everything else is left at default, lets you press player1 button1 then player1 button2 or left arrow then right arrow, instead of &amp;quot;O&amp;quot; &amp;quot;K&amp;quot; or wiggling the joystick.&lt;br /&gt;
&lt;br /&gt;
Also see [[#Order Matters]]&lt;br /&gt;
&lt;br /&gt;
=== Edit the Ctrlr files provided with mame ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to make your own ctrlr file might be by editing one of the ctrlr files supplied with mame binary (mameUI does not include these ATM).  This might be the way to go if you are changing the exact same inputs for the same games as already in the provided ctrlr file.  &lt;br /&gt;
&lt;br /&gt;
=== Remap and Test with the Standard in game UI method and Convert to ctrlr file ===&lt;br /&gt;
&lt;br /&gt;
However, the most flexible way to make your own ctrlr file to match your own inputs is more in depth.  You will need a text editor to edit the files, and will run mame many times.  Since Order Matters it is best to start with mapping on the widest level and move down; start with the default (every game), than move to driver wide changes, then to the driver's parents, then to the parent's clones.&lt;br /&gt;
&lt;br /&gt;
==== Prep before starting ====&lt;br /&gt;
#Delete (or move to a different folder for backup) cfg/default.cfg file and all game cfg files that you are going to put in the ctrlr file.  (Alternative: remove all game specific remaps by either hand editing the cfg files or with mame's in-game UI, if you want to keep some of the other settings saved in the cfg files.)&lt;br /&gt;
#If you have your OS to hide file type extensions, either disable that or ignore the &amp;quot;.cfg&amp;quot; in the following file names.&lt;br /&gt;
&lt;br /&gt;
==== Start with general (every game) remapping ====&lt;br /&gt;
If you already have a ctrlr file and want to use it, skip to Add more systems.&lt;br /&gt;
#Edit mame.ini so ctrlr is set to blank.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Start any game in mame.  &lt;br /&gt;
#Press Config Menu (usually tab unless remapped) to start mame's in-game ui&lt;br /&gt;
#Press UI Select (usually enter unless remapped) &amp;quot;Input (general)&amp;quot;&lt;br /&gt;
#Remap any and all inputs you want to be applied to all games, as normal.&lt;br /&gt;
#Test remapping by playing the game.  If you need to make any corrections, repeating from step #3.&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Move cfg/default.cfg to the ctrlr folder in mame.&lt;br /&gt;
#Rename ctrlr/default.cfg to anything you want ctrlr/''fillInNameHere''.cfg&lt;br /&gt;
#Edit mame.ini to point to whatever you named the file in the ctrlr folder (ctrlr ''fillInNameHere'')&lt;br /&gt;
#(If it still exists) delete cfg/default.cfg file.&lt;br /&gt;
&lt;br /&gt;
==== Add more systems ====&lt;br /&gt;
This is similar to, but not exactly the same, as the starting step.  You can also start here if you started with a supplied mame ctrlr file and want to add a new system node (driver or game).  Also look at [[#Shortcuts]] for other methods.&lt;br /&gt;
#Edit mame.ini to point to your ctrlr file if you haven't already.  &amp;lt;--- IMPORTANT&lt;br /&gt;
#Decide if you want to remap on the driver, parent, or clone level.  (Reminder, start with driver, then it's parents, then their clones.)  &lt;br /&gt;
#Find the name of the driver, parent or clone and note it down.  Neogeo games are &amp;quot;neogeo&amp;quot;; to find the driver name for other games, &amp;quot;mame -ls ''gamename''&amp;quot;.&lt;br /&gt;
#Start that game (or a game in that driver).  (You could start any game, but it's best to start the specific game for testing and reference to what input ports are used.)&lt;br /&gt;
#Again, press Config Menu and select &amp;quot;Input (general)&amp;quot;.  &amp;lt;--- NOT &amp;quot;Input (this game)&amp;quot;.  You can look there to see what input ports are used by the game, but remap in the &amp;quot;Input (general)&amp;quot; location.&lt;br /&gt;
#Again, remap any and all changes you want for this driver, parent or clone.&lt;br /&gt;
#Test remapping.  (make any needed corrections)&lt;br /&gt;
#Exit mame.&lt;br /&gt;
#Open cfg/default.cfg in a text editor.&lt;br /&gt;
#Copy the whole system node, from (and including) &amp;lt;system name= to &amp;lt;/system&amp;gt;.&lt;br /&gt;
#Open your ctrlr file.&lt;br /&gt;
#Paste the copied system node into the ctrlr file.  If you have been working from the drivers down to the parents to the clone, you can paste as the last system, just before the closing &amp;lt;/mameconfig&amp;gt;.  If you have not been as careful on the order you're remapping, make sure you paste the new system node in a correct place read Order Matters.&lt;br /&gt;
#Rename the system name to the driver, parent or clone you noted in step 2.  Example if for neogeo, change to &amp;lt;system name=&amp;quot;neogeo&amp;quot;&amp;gt;.&lt;br /&gt;
#Save (and exit) the ctrlr file.&lt;br /&gt;
#Exit (without saving) the default cfg file.&lt;br /&gt;
#Delete the cfg default.cfg file.&lt;br /&gt;
#Test game(s) inputs.&lt;br /&gt;
#Repeat as needed for all drivers/games you want to remap.  Remember, if you remap a parent, you do not need to remap a clone unless you want the clone to be different (or the clone used different input ports).&lt;br /&gt;
&lt;br /&gt;
==== Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
There are a few shortcuts that can be done in certain cases.&lt;br /&gt;
&lt;br /&gt;
*If you have an input mapping that is common between games that do not share a parent or driver, you don't have to do all the steps for adding more systems for both games.  For the second game, start at step #10 and rename to the new game.  You can copy from within the ctrlr file itself, too.&lt;br /&gt;
*You can make other hand edits to the ctrlr file, as the XML is fairly human readable.&lt;br /&gt;
&lt;br /&gt;
== Limitations and Workarounds ==&lt;br /&gt;
=== Games with Hardcoded Inputs ===&lt;br /&gt;
&lt;br /&gt;
Games with hardcoded input need additional steps to use the ctrlr set inputs instead of the hardcoded values.  You have to go into each of the offending game's cfg file and reset the hardcoded input ports to not use the hardcoded values.  This is easiest done with mame's in game UI &amp;quot;Inputs (this game)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#Start the game with hardcoded inputs you don't want to use.&lt;br /&gt;
#Press Config Menu (usually tab unless remapped) to enter mame's in game UI.&lt;br /&gt;
#Select &amp;quot;Input (this game)&amp;quot;, by pressing UI Select (usually enter unless remapped).&lt;br /&gt;
#Select the hardcoded input port you want to change (it will be reverse highlighted).&lt;br /&gt;
#Press UI Cancel (usually esc unless remapped).&lt;br /&gt;
#Wait until mame shows &amp;quot;None&amp;quot;.&lt;br /&gt;
#Select, then UI Cancel, again.&lt;br /&gt;
#Wait until mame shows the setting by the ctrlr file (it will not be reverse highlighted).&lt;br /&gt;
#Repeat steps 4-7 for all hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
#Repeat steps 1-8 for the games with hardcoded input ports that you want to use the ctrlr file.&lt;br /&gt;
&lt;br /&gt;
Other ways around the hardcoded bump, including editing the source and recompiling, will not be described here.&lt;br /&gt;
&lt;br /&gt;
=== Order Matters ===&lt;br /&gt;
&lt;br /&gt;
Mame does not exactly enforce a specific order to the different system nodes within the ctrlr files.  However the order does make a difference in the final mapping if different systems that are applied to a game with the same port type(s) differently in different system nodes that apply to the game.  Mame reads the ctrlr file from top to bottom, and checks if each system node if it should be applied to the game, and applies the changes ''in the order the systems are in the ctrlr file'' overriding any mapping for all ports changed.&lt;br /&gt;
&lt;br /&gt;
So to make sure all changes are correctly applied, (referred hereafter as the ctrlr rules of order): &lt;br /&gt;
*Clones should come after their parent, &lt;br /&gt;
*Parents (and clones) should come after their driver, and &lt;br /&gt;
*Drivers (and parents &amp;amp; clones) should come after &amp;quot;default&amp;quot; system. &lt;br /&gt;
&lt;br /&gt;
This can be done two ways, or a mix of them.  The easiest rule is: default, then all drivers, then all parents, then all clones.  However this separates the clones from their parents and the parents from their drivers.  It might be easier to upkeep if all of the parents come immediately after their driver, and all clones immediately after their parents.  But neither these have to be exactly followed, as long as the three ctrlr rules of order are followed.&lt;br /&gt;
&lt;br /&gt;
Valid examples:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;34%&amp;quot;|&lt;br /&gt;
default-&amp;gt;drivers-&amp;gt;parents-&amp;gt;clones&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
grouped by driver, parent, clone&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;quot;disorganized order&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1 (parent, from driver AAA)&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1 (clone of parent Aaa1)&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc (clone without parent or driver in ctrlr file)&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc&lt;br /&gt;
|&lt;br /&gt;
default&amp;lt;br&amp;gt;&lt;br /&gt;
clone Ccc&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverAAA&amp;lt;br&amp;gt;&lt;br /&gt;
parent Aaa1&amp;lt;br&amp;gt;&lt;br /&gt;
driver driverBBB&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb2&amp;lt;br&amp;gt;&lt;br /&gt;
parent Bbb1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Aaa1c1&amp;lt;br&amp;gt;&lt;br /&gt;
clone Bbb2c1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ctrlr file does not do ... ===&lt;br /&gt;
&lt;br /&gt;
You cannot use the Ctrlr file to:&lt;br /&gt;
*Set analog sensitivity, digital speed, center speed. - These are set in mame's in game UI &amp;quot;Analog Controls&amp;quot;, and saved in the cfg files.&lt;br /&gt;
*Change volume, CPU speed or other On Screen Display (usually tilde unless remapped) settings&lt;br /&gt;
&lt;br /&gt;
=== My ctrlr worked but doesn't anymore ===&lt;br /&gt;
&lt;br /&gt;
The cause could be some minor error to something bigger.&lt;br /&gt;
&lt;br /&gt;
*Check that the ctrlr file still exists in the right location, and is not corrupt.&lt;br /&gt;
*If you updated mame, check if mame.ini points at your ctrlr file.&lt;br /&gt;
*If you just edited the ctrlr file, check if the system nodes are in the correct order.&lt;br /&gt;
*Make sure no one remapped using mame's in-game UI (the normal remapping method).  If you know everything you want remapped is in the ctrlr, you could delete everything in the cfg folder (warning: the game specific cfg files hold more than just input remaps).&lt;br /&gt;
*Mame could have changed the ctrlr and or cfg format.  This might be able to be fixed with a simple find and replace, or in the worst case you might need to completely redo making the ctrlr file depending on what changed.&lt;br /&gt;
&lt;br /&gt;
== History of Ctrlr files ==&lt;br /&gt;
The ctrlr files inspiration came from the need to remove the hardcoding of special input maps for specific commercial arcade control panels from mame's source, but was designed to do more than be just a replacement.&lt;br /&gt;
== Technical Stuff ==&lt;br /&gt;
Some technical information&lt;br /&gt;
=== Differences between ctrlr file and cfg files ===&lt;br /&gt;
The ctrlr file and the default.cfg file only save input remaps.  The game specific cfg file saves much more, including input remaps, analog settings, input location in the driver, dipswitch settings, and other info.&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Controls.dat&amp;diff=9641</id>
		<title>Controls.dat</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Controls.dat&amp;diff=9641"/>
		<updated>2008-01-09T21:39:38Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: Added External Links section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Controls.dat is a project started by Kevin Jonas (SirPoonga) with the help of Howard Casto. This project was started to accurately document the controls and button labels of the arcade control panels from the games in M.A.M.E.. The goal of this project to compensate for the inaccuracies M.A.M.E. outputs in it's documentation.  Also the project allows software to filter based on specific controls.  Such as in M.A.M.E. dial can be anything from a spinner to a 360 degree steering wheel.  Controls.dat creates a higher resolution of control types so one could filter out just the 360 degree wheel games.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Many volunteers have entered in the data for this project.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [http://fe.donkeyfly.com Controls.dat home page]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=MAME&amp;diff=9640</id>
		<title>MAME</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=MAME&amp;diff=9640"/>
		<updated>2008-01-09T20:59:58Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: Undated mame homepage to mamedev.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorkInProgress|talk:Arcade Emulators}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:MAME_Logo.jpg|MAME Logo&lt;br /&gt;
Image:MAME32.jpg|MAME32 Frontend&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''OS:  ''' Windows, Linux and others&lt;br /&gt;
* '''Cost:  ''' Open Source&lt;br /&gt;
* '''Re-mappable keys:  ''' Yes&lt;br /&gt;
* '''Monitor orientation(s):  ''' Depend of game&lt;br /&gt;
* '''Emulated System(s):''' [http://en.wikipedia.org/wiki/MAME MAME&amp;lt;sup&amp;gt;TM&amp;lt;/sup&amp;gt;]&lt;br /&gt;
* '''Unique games emulated:''' 3000+&lt;br /&gt;
* '''Homepage:  [http://mamedev.org''' MameDEV]&lt;br /&gt;
* '''Additional Requirements:''' [[Game Roms]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is MAME? ==&lt;br /&gt;
('''M'''ultiple '''A'''rcade '''M'''achine '''E'''mulator) is one of (if not the) most widely used videogame emulators. Currently, it supports over six thousand different arcade games. Standard versions of MAME can be found at [http://www.mame.net MAME.net], intermediate versions and development notes are at [http://www.mamedev.org MAMEDev.org]. &lt;br /&gt;
&lt;br /&gt;
Since MAME is an open source project, many people have created modified versions with various extra tweaks and features. You can find some versions on it's own page ([[Mame Modified Versions]]).&lt;br /&gt;
&lt;br /&gt;
== Dedicated cabinet info ==&lt;br /&gt;
MAME is the main reason, you create your own arcade controls and put MAME into your cabinet.&lt;br /&gt;
&lt;br /&gt;
The default MAME keys to wire your controls to can be found at: http://www.mameworld.net/easyemu/mameguide/mamecontrol.htm&lt;br /&gt;
&lt;br /&gt;
== How do I set it up? ==&lt;br /&gt;
[[Mame_Lightgun_Setup|Setting up Lightguns/Multiple Analog devices]]&lt;br /&gt;
&lt;br /&gt;
== Support Files ==&lt;br /&gt;
MAME or its modified versions support extra files form of cheats, high score saving, and more. &lt;br /&gt;
&lt;br /&gt;
=== Cheat ===&lt;br /&gt;
Cheat.dat is useful for both players and developers. Cheating allows players to get past difficult situations and it let's developers test games without having to be good at all the games.&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://cheat.retrogames.com/&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== High Score ===&lt;br /&gt;
Hiscore.dat is a complimentary file to help MAME in saving high scores in version 0.32 to 0.107u1. Most Mame games save their high scores by default, but over 2500 games do not save their high scores.&lt;br /&gt;
&lt;br /&gt;
The Hiscore.dat file tells Mame some additional information and how to read and store the high scores using the /hi directory instead of /nvram. &lt;br /&gt;
&lt;br /&gt;
As of MAME version 0.107u1, however, Hiscore.dat is no longer supported. Hiscore.dat has been replaced by the use of save states due to issues that the file caused with proper emulation. &lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://www.mameworld.net/highscore/&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Commmands ===&lt;br /&gt;
[[Image:command.png|right|thumb|Command.dat screenshot]]&lt;br /&gt;
Commands can be shown either in game or in a front end. Commands allow users to view, among other things, the individual command lists for games. This is especially usefull for Fighting Games, but can also show users what individual buttons (and combinations) do without having to press them all. The screenshot is from within MAME Plus!&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://home.comcast.net/~plotor/command.html&lt;br /&gt;
&lt;br /&gt;
''Note: Command.dat isn't supported by the official MAME build - a [[Mame_Modified_Versions | Modified Version of MAME]] is required. Alternatively [[Other Software|Johnny 5]] and [[Other Software|CPWizard]] can read command.dat files''&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Artwork ===&lt;br /&gt;
[[Image:frogs.png|right|thumb|Frogs with artwork enabled]]&lt;br /&gt;
In game artwork is supported in MAME in versions 0.61 and later. Some arcade machines had images inside them onto which the screen was projected, had artwork overlaid on the monitor or had LED lights on the cabinet that were illuminated during game play. This can't be emulated but is instead simulated with a digital picture of the artwork. Some games, like Frogs, Video Pinball, Drag Race, Armor Attack and Warrior are nearly impossible to play without the original artwork.  Other games have elaborate decorative monitor bezels that are not functional but many fans feel they add to the arcade experience. &lt;br /&gt;
&lt;br /&gt;
Starting with version 0.107, MAME began to supports hi-resolution artwork and changed the file format for the layout (from .art to .lay).  Pre-0.107 artwork with .art layout files will not work with MAME version 0.107 and later. &lt;br /&gt;
&lt;br /&gt;
To use these files, save them to the /artwork directory. &lt;br /&gt;
&lt;br /&gt;
'''Post-MAME 0.107 Homepage:''' http://www.mameworld.net/mrdo/mame_artwork.html&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
Controls.dat holds a more detailed input list of control types and button labels for many games in mame.  ''Like commands.dat, controls.dat isn't supported by the official MAME build, and [[Other Software|Johnny 5]] and [[Other Software|CPWizard]] can read controls.dat files.''&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://fe.donkeyfly.com/controls/controls.php&lt;br /&gt;
&lt;br /&gt;
== I upgraded MAME/MAME32 and now I get errors that files/roms are missing. Why? ==&lt;br /&gt;
As MAME progresses, romsets are sometimes changed to more accurately reflect the original hardware.  There are several reasons the romsets 'change'.  Here are some of them (courtesy of u_rebelscum):&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 1: bad dump now replaced by good dump&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 2: incomplete dump (X chip now emulated now needs Y ROM not needed before)&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 3: new dump from confirmed source, old dump from unreliable/unknown source&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 4: new dump is real release, old dump is hacked board&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 5: new dump is real release, old dump is prototype&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 6: new dump is wider release, old dump is local release&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first three add/replace to a ROM, the last three usually involve renaming.  The short answer is that you need to find a correct romset for the version of MAME you are using, as old romsets may not work with a newer version of MAME.&lt;br /&gt;
&lt;br /&gt;
See also: [http://www.mame.net/mamefaq.html#r03 http://www.mame.net/mamefaq.html#r03]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [http://www.mameworld.net/maws/ MAWS] - presents a searchable index of the over 3000 original games (not including clones) that MAME emulates.&lt;br /&gt;
* [http://nonmame.retrogames.com/ NonMAME] - maintains a list of games not emulated in MAME that are emulated by other projects.&lt;br /&gt;
* [http://unmamed.mame.net/ unMAMEd] - maintains a list of games that have not been emulated in MAME, including many games that are actively being sought out so that their ROMs can be dumped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=MAME&amp;diff=9583</id>
		<title>MAME</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=MAME&amp;diff=9583"/>
		<updated>2007-12-18T00:21:33Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Support Files */  added controls.dat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorkInProgress|talk:Arcade Emulators}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:MAME_Logo.jpg|MAME Logo&lt;br /&gt;
Image:MAME32.jpg|MAME32 Frontend&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''OS:  ''' Windows, Linux and others&lt;br /&gt;
* '''Cost:  ''' Open Source&lt;br /&gt;
* '''Re-mappable keys:  ''' Yes&lt;br /&gt;
* '''Monitor orientation(s):  ''' Depend of game&lt;br /&gt;
* '''Emulated System(s):''' [http://en.wikipedia.org/wiki/MAME MAME&amp;lt;sup&amp;gt;TM&amp;lt;/sup&amp;gt;]&lt;br /&gt;
* '''Unique games emulated:''' 3000+&lt;br /&gt;
* '''Homepage:  [http://www.mame.net''' Mame]&lt;br /&gt;
* '''Additional Requirements:''' [[Game Roms]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is MAME? ==&lt;br /&gt;
('''M'''ultiple '''A'''rcade '''M'''achine '''E'''mulator) is one of (if not the) most widely used videogame emulators. Currently, it supports over six thousand different arcade games. Standard versions of MAME can be found at [http://www.mame.net MAME.net], intermediate versions and development notes are at [http://www.mamedev.org MAMEDev.org]. &lt;br /&gt;
&lt;br /&gt;
Since MAME is an open source project, many people have created modified versions with various extra tweaks and features. You can find some versions on it's own page ([[Mame Modified Versions]]).&lt;br /&gt;
&lt;br /&gt;
== Dedicated cabinet info ==&lt;br /&gt;
MAME is the main reason, you create your own arcade controls and put MAME into your cabinet.&lt;br /&gt;
&lt;br /&gt;
The default MAME keys to wire your controls to can be found at: http://www.mameworld.net/easyemu/mameguide/mamecontrol.htm&lt;br /&gt;
&lt;br /&gt;
== How do I set it up? ==&lt;br /&gt;
[[Mame_Lightgun_Setup|Setting up Lightguns/Multiple Analog devices]]&lt;br /&gt;
&lt;br /&gt;
== Support Files ==&lt;br /&gt;
MAME or its modified versions support extra files form of cheats, high score saving, and more. &lt;br /&gt;
&lt;br /&gt;
=== Cheat ===&lt;br /&gt;
Cheat.dat is useful for both players and developers. Cheating allows players to get past difficult situations and it let's developers test games without having to be good at all the games.&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://cheat.retrogames.com/&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== High Score ===&lt;br /&gt;
Hiscore.dat is a complimentary file to help MAME in saving high scores in version 0.32 to 0.107u1. Most Mame games save their high scores by default, but over 2500 games do not save their high scores.&lt;br /&gt;
&lt;br /&gt;
The Hiscore.dat file tells Mame some additional information and how to read and store the high scores using the /hi directory instead of /nvram. &lt;br /&gt;
&lt;br /&gt;
As of MAME version 0.107u1, however, Hiscore.dat is no longer supported. Hiscore.dat has been replaced by the use of save states due to issues that the file caused with proper emulation. &lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://www.mameworld.net/highscore/&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Commmands ===&lt;br /&gt;
[[Image:command.png|right|thumb|Command.dat screenshot]]&lt;br /&gt;
Commands can be shown either in game or in a front end. Commands allow users to view, among other things, the individual command lists for games. This is especially usefull for Fighting Games, but can also show users what individual buttons (and combinations) do without having to press them all. The screenshot is from within MAME Plus!&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://home.comcast.net/~plotor/command.html&lt;br /&gt;
&lt;br /&gt;
''Note: Command.dat isn't supported by the official MAME build - a [[Mame_Modified_Versions | Modified Version of MAME]] is required. Alternatively [[Other Software|Johnny 5]] and [[Other Software|CPWizard]] can read command.dat files''&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Artwork ===&lt;br /&gt;
[[Image:frogs.png|right|thumb|Frogs with artwork enabled]]&lt;br /&gt;
In game artwork is supported in MAME in versions 0.61 and later. Some arcade machines had images inside them onto which the screen was projected, had artwork overlaid on the monitor or had LED lights on the cabinet that were illuminated during game play. This can't be emulated but is instead simulated with a digital picture of the artwork. Some games, like Frogs, Video Pinball, Drag Race, Armor Attack and Warrior are nearly impossible to play without the original artwork.  Other games have elaborate decorative monitor bezels that are not functional but many fans feel they add to the arcade experience. &lt;br /&gt;
&lt;br /&gt;
Starting with version 0.107, MAME began to supports hi-resolution artwork and changed the file format for the layout (from .art to .lay).  Pre-0.107 artwork with .art layout files will not work with MAME version 0.107 and later. &lt;br /&gt;
&lt;br /&gt;
To use these files, save them to the /artwork directory. &lt;br /&gt;
&lt;br /&gt;
'''Post-MAME 0.107 Homepage:''' http://www.mameworld.net/mrdo/mame_artwork.html&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controls ===&lt;br /&gt;
Controls.dat holds a more detailed input list of control types and button labels for many games in mame.  ''Like commands.dat, controls.dat isn't supported by the official MAME build, and [[Other Software|Johnny 5]] and [[Other Software|CPWizard]] can read controls.dat files.''&lt;br /&gt;
&lt;br /&gt;
'''Homepage:''' http://fe.donkeyfly.com/controls/controls.php&lt;br /&gt;
&lt;br /&gt;
== I upgraded MAME/MAME32 and now I get errors that files/roms are missing. Why? ==&lt;br /&gt;
As MAME progresses, romsets are sometimes changed to more accurately reflect the original hardware.  There are several reasons the romsets 'change'.  Here are some of them (courtesy of u_rebelscum):&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 1: bad dump now replaced by good dump&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 2: incomplete dump (X chip now emulated now needs Y ROM not needed before)&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 3: new dump from confirmed source, old dump from unreliable/unknown source&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 4: new dump is real release, old dump is hacked board&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 5: new dump is real release, old dump is prototype&amp;lt;br/&amp;gt;&lt;br /&gt;
Case 6: new dump is wider release, old dump is local release&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first three add/replace to a ROM, the last three usually involve renaming.  The short answer is that you need to find a correct romset for the version of MAME you are using, as old romsets may not work with a newer version of MAME.&lt;br /&gt;
&lt;br /&gt;
See also: [http://www.mame.net/mamefaq.html#r03 http://www.mame.net/mamefaq.html#r03]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [http://www.mameworld.net/maws/ MAWS] - presents a searchable index of the over 3000 original games (not including clones) that MAME emulates.&lt;br /&gt;
* [http://nonmame.retrogames.com/ NonMAME] - maintains a list of games not emulated in MAME that are emulated by other projects.&lt;br /&gt;
* [http://unmamed.mame.net/ unMAMEd] - maintains a list of games that have not been emulated in MAME, including many games that are actively being sought out so that their ROMs can be dumped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Spinners_and_Dials&amp;diff=9282</id>
		<title>Spinners and Dials</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Spinners_and_Dials&amp;diff=9282"/>
		<updated>2007-08-22T17:49:17Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: /* Push/pull spinner games */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''Spinner''' is a knob that can be spun rapidly in either direction to move an on-screen paddle or character.  Spinners provide precise analog control like a mouse, but act only along one axis.  Spinners were used for many popular early arcade games such as Pong, Tempest, Arkanoid, and Tron.&lt;br /&gt;
{{Cleanup}}&lt;br /&gt;
&lt;br /&gt;
=What is a Spinner?=&lt;br /&gt;
&lt;br /&gt;
You might remember the spinner from games like Tempest and Arkanoid.  The player turns a knob to move the on-screen character.  But what's going on behind the scenes; what's that knob attached to?&lt;br /&gt;
&lt;br /&gt;
Underneath the control panel, the shaft comes down from the knob above.  Mounted on the shaft, is an optical encoder wheel- a flat disk with notches cut around the outside edge.  These notches pass though a set of infra-red optics, that detect the notches as they spin by.  There are two sets of optics, spaced such that they see the notches spin by just a little bit out of sync.  The combined signal from both of these optics tells the game which direction the disk is turning, and how fast.  This is also how a trackball works, as well as a ball-type PC mouse.&lt;br /&gt;
&lt;br /&gt;
If you are buying or building a working spinner for your cabinet, you will need the Spinner (the mechanical part,) the optics(the part that watches the spinning,) and the optical encoder (the part that sends info to the computer.) If a manufacturer advertises &amp;quot;USB Connectivity&amp;quot; that generally means that it is an all in one solution, and no additional parts are required. Otherwise, you'll find that optics are generally included, but an encoder is not. In the rare occurence that your spinner does not have optics included, they can be built with parts from your local electronic store, or you can build them based off of a [[Optical_Encoders#Mouse_Hack|mouse hack.]] If the unit does not ship with an optical encoder, you can purchase one from an aftermarket seller. You can find out more about [[Optical_Encoders|optical encoders here.]]&lt;br /&gt;
&lt;br /&gt;
Note: Paddles, while similar to spinners in that they rotate and have knobs, are usually based on potentiometers (like a volume knob on an old TV or radio), rather than the optics in a spinner.  Spinners, as the name suggests, spin.  There is no end to how many times the knob can fully rotate in any direction.  They often move things in a game in a circular fashion, as in Tempest or TRON.  Paddles are the precursor to the spinner.  The paddles found on early arcade games (like pong) rotated a full 360 degrees but used a 360 potentiometer (or pot) rather than an optical encoder.  Since a pot requires physical contact, they tend to spin less freely than a true spinner.  MAME adds to confusion by classifying 270 degree steering wheels as paddles.  This is false as most, if not all arcade games that actually used paddles used 360 degree paddles and 270 degree wheels used a regular linear potentiometer (like a radio knob, which can only turn so far).  There is such a thing as a 270 degree paddle though, just to make things even more confusing.  As a matter of fact, many pong clones used the 270 degree paddles as they were cheaper. Most of your home versions of pong also used the 270 degree paddles.  Most emulators will let you play paddle games with a spinner, but spinner games are generally not playable with paddles, mostly due to the fact that paddles just don't spin that well.&lt;br /&gt;
&lt;br /&gt;
=Spinner Varieties=&lt;br /&gt;
&lt;br /&gt;
#Tempest- Fast spinning lightweight spinner, which is very popular with arcade enthusiassts. It has 72 teeth on the encoder wheel, with nylon upper and lower bearings on the shaft.  This was the model for the Oscar Vortex aftermarket spinner.&lt;br /&gt;
#Arkanoid- The &amp;quot;geared&amp;quot; spinner.  Rather than mounting the encoder wheel directly to the shaft, the Arkanoid spinner used two sets of gears between the knob and the encoder wheel, to make the spinner extremely sensitive.  While the encoder wheel only has 24 notches, the gearing causes 486 notches to pass through the optics for every turn of the knob!  Due to the lightweight and friction from the gearing, the Arkanoid spinner stops the instant you take your hand off the knob. &lt;br /&gt;
#360° Steering Wheels - Games like the original Pole Position and Sprint 2 used steering wheels that were essentially giant spinners. The Pole Position steering wheel, for instance, was geared similarly to an Arkanoid spinner.  However, the gear ratio was only 5:1 to a 24 notch encoder wheel (96 notches per wheel revolution).  This and the mechanical advantage of the large steering wheel rather than a small knob, let the wheel spin freely. Sprint 2 (and Sprint 1, and probably Sprints 4 and 8)used an ungeared 38 notch encoder cup, and spun freely.&lt;br /&gt;
#Discs of Tron ''Push/Pull''- This spinner used a giant 128-notch encoder wheel with a push / pull switch feature built into the spindle shaft. When the player pulled up or down on the spinner, a leafswitch was activated.  This was used to control the high / low aim of the disc in later levels of the game. Zwackery also used a Push/Pull spinner, and Forgotten Worlds used a push only (no pull) spinner. Oscar Controls marketed a Push/Pull spinner with a slightly different design, and a smaller 72 notch encoder wheel, but it is no longer available for purchase. The Oscar V2 had a Push option, and a Pull kit was rumored to be in the works before Oscar Controls closed down.&lt;br /&gt;
&lt;br /&gt;
=Spinner Brands=&lt;br /&gt;
{| align=right&lt;br /&gt;
| [[Image:SlikStikTornadoSpinner.jpg|150px|right|thumb|SlikStik's Tornado spinner]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:TurboTwist2.jpg|right|200px|thumb|GGG's TurboTwist 2 spinner]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:ApacheControlsBlackhawkPushPullSPinner.jpg|right|150px|thumb|Apache Controls' Blackhawk spinner]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Spintrack1.jpg|right|120px|thumb|Ultimarc's SpinTrak spinner]]&lt;br /&gt;
|}&lt;br /&gt;
==[http://oscarcontrols.com/ Oscar Controls]==&lt;br /&gt;
Oscar Controls was a popular manufacturer of spinners for the hobbyist market until recently. Several models were produced over the years, including the Model One, Pro, Vortex, Push/Pull, and V2. These spinners did not enclude an encoder and required connection to an [[Optical_Encoders#Opti-PAC|Opti-Pac]] or to a [[Optical_Encoders#Mouse_Hack|mouse hack]]. &lt;br /&gt;
==[http://www.slikstik.com/spinfeat.htm SlikStik]==&lt;br /&gt;
The Tornado is billed as the &amp;quot;longest spinning&amp;quot; spinner on the market, the Tornado is currently the spinner that's been on the market the longest. With an extra-small footprint, and dual-bearing design, the Tornado is very well made.  Several knob options are also available.  The Tornado comes with it's own USB or PS/2 interface.  Plans to sell the Tornado with a plain-jane optic card have also been announced.&lt;br /&gt;
==[http://GroovyGameGear.com GroovyGameGear]==&lt;br /&gt;
The successor to their original TurboTwist, the TurboTwist 2 is relatively new to the spinner scene. The most instantly noticeable feature of this spinner is its very small footprint; it is designed to fit a standard 1 1/8&amp;quot; pushbutton hole and occupies little more space inside the control panel. The TurboTwist 2 has a dual ball-bearing design with all components sealed inside its housing. The TurboTwist 2 has an extra-high resolution encoder wheel, and comes with it's own USB or PS/2 Opti-Wiz interface. The interface can be configured to put the spinner on the X, Y, or Z mouse axis, and will control other optic devices on the remaining two axes, such as a trackball, or additional spinners/steering wheels/optical rotary joysticks. Several optional extras are also available for the TurboTwist 2, such as a novel mini steering-wheel and a heavy 'energy storage cylinder'.&lt;br /&gt;
==[http://ArcadeGames4U.com ArcadeGames4U]==&lt;br /&gt;
The cyclone is also new to the market. It has a dual-bearing design, with a lower resolution encoder wheel.  The Cyclone ships with an optic card, but no interface. &lt;br /&gt;
==[http://www.apachecontrols.com/ Apache Controls]==&lt;br /&gt;
This is very good looking new addition to the market. Ever since the original Atari Discs Of Tron push-pull NOS spinners disappeared from the market and Oscar Controls stopped producing their push-pull spinners, they have been highly sought after by collectors and arcade restorers. This is currently the only Discs of Tron style push/pull spinner being manufactured. For further details take a look at the  [http://www.retroblast.com/reviews/apache-070106-01.html RetroBlast review] of this spinner.&lt;br /&gt;
==[http://www.ultimarc.com Ultimarc]==&lt;br /&gt;
Ultimarc recently announced their own contribution to the spinner market. The SpinTrak uses a sealed-component design (the encoder wheel and other components are protected inside the spinners housing) and is compatible with SlikStik's custom spinner knobs.&lt;br /&gt;
&lt;br /&gt;
=Build Your Own Spinner=&lt;br /&gt;
&lt;br /&gt;
For those of us who would prefer to build their own spinner or cannot afford a retail unit, with a few spare parts that most likely are already lying around, can easily build your own. Here are some links to help you along your way:&lt;br /&gt;
&lt;br /&gt;
'''[http://arcadecontrols.com/files/Miscellaneous/spinner.pdf Nathan Strum's Cheep Spinner]'''&lt;br /&gt;
&lt;br /&gt;
'''[http://www.doughansen.net/arcade/spinner.htm DHansen's Arcade Stupidity Spinner]'''&lt;br /&gt;
&lt;br /&gt;
'''[http://forum.arcadecontrols.com/index.php?topic=17522.0 BYO &amp;quot;Nasty-Spinner&amp;quot; Thread]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''List of compatible hard drives:'''&lt;br /&gt;
&lt;br /&gt;
WD Caviar 1200 210 MB Drive&lt;br /&gt;
&lt;br /&gt;
WD Caviar 11200 1.2 GB Drive&lt;br /&gt;
&lt;br /&gt;
* Please feel free to add to the list of compatible drives if you have successfully built your own spinner with a drive that is not listed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[http://forum.arcadecontrols.com/index.php?topic=69812.0 BYO &amp;quot;Arkanoid (I) spinner from VCR parts&amp;quot; Thread]'''&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
==Which games originally used a spinner==&lt;br /&gt;
The list below is non-definitive, but can be used as a guide to find the most common games that can use a spinner. &lt;br /&gt;
===Conventional spinner games===&lt;br /&gt;
*Arkanoid arkanoid&lt;br /&gt;
*Arkanoid - Revenge of Doh arknoid2&lt;br /&gt;
*Blasteroids (version 4)	blstroid&lt;br /&gt;
*Wolf Pack (prototype)	wolfpack&lt;br /&gt;
*Tempest (rev 3)	tempest&lt;br /&gt;
*Tron (set 1)	tron&lt;br /&gt;
*Mad Planets	mplanets&lt;br /&gt;
*720 Degrees (set 1)	720&lt;br /&gt;
*Aztarac	aztarac&lt;br /&gt;
*Forgotten Worlds (US)	forgottn&lt;br /&gt;
*Kozmik Kroozr	kroozr&lt;br /&gt;
*Crater Raider	crater&lt;br /&gt;
*Wheel Of Fortune	wfortune&lt;br /&gt;
*Victory	victory&lt;br /&gt;
*Omega Race	omegrace&lt;br /&gt;
*Cameltry (US)	cameltry&lt;br /&gt;
*Cosmic Chasm (set 1)	cchasm&lt;br /&gt;
*Dark Planet	darkplnt&lt;br /&gt;
*Vs. Hot Smash	hotsmash&lt;br /&gt;
*Boxing Bugs	boxingb&lt;br /&gt;
*Star Trek  startrek&lt;br /&gt;
===Push/pull spinner games===&lt;br /&gt;
*Discs of Tron (Upright)	dotron&lt;br /&gt;
*Zwackery	 zwackery&lt;br /&gt;
*Forgotten Worlds	forgottn *(only push)&lt;br /&gt;
&lt;br /&gt;
===Horizontal roller===&lt;br /&gt;
*Major Havoc (rev 3)	mhavoc&lt;br /&gt;
*Moonwar	moonwar&lt;br /&gt;
*Kick (upright)	kick&lt;br /&gt;
=== Vertical roller ===&lt;br /&gt;
*Drag Race	dragrace&lt;br /&gt;
=== 360° Steering Wheel===&lt;br /&gt;
*Super Sprint	ssprint&lt;br /&gt;
*APB - All Points Bulletin (set 1)	apb&lt;br /&gt;
*Pole Position	polepos&lt;br /&gt;
*Pole Position II	polepos2&lt;br /&gt;
*Road Blasters (set 1)	roadblst&lt;br /&gt;
*American Speedway (set 1)	amspdwy&lt;br /&gt;
*Bad Lands	badlands&lt;br /&gt;
*Demolition Derby	demoderb&lt;br /&gt;
*Danny Sullivan's Indy Heat	indyheat&lt;br /&gt;
*Speed Freak	speedfrk&lt;br /&gt;
*Ironman Stewart's Super Off-Road	offroad&lt;br /&gt;
*Ironman Stewart's Super Off-Road Track Pack	offroadt&lt;br /&gt;
*Turbo	turbo&lt;br /&gt;
*Konami GT	konamigt&lt;br /&gt;
*Buggy Challenge	buggychl&lt;br /&gt;
*Championship Sprint	csprint&lt;br /&gt;
*Fire Truck	firetrk&lt;br /&gt;
*Fire Truck	firetrk&lt;br /&gt;
*Grand Champion	grchamp&lt;br /&gt;
*Hot Rod (turbo 3 player)	hotrod&lt;br /&gt;
*Monte Carlo	montecar&lt;br /&gt;
*Stocker	stocker&lt;br /&gt;
*Super Speed Race	sspeedr&lt;br /&gt;
*Final Lap 2	finalap2&lt;br /&gt;
*Subs	subs&lt;br /&gt;
*Mille Miglia 2: Great 1000 Miles Rally (95/05/24)	gtmr2&lt;br /&gt;
*Over Drive	overdriv&lt;br /&gt;
*Redline Racer (2 players)	redlin2p&lt;br /&gt;
*Sprint 1	sprint1&lt;br /&gt;
===Horizontal paddle games===&lt;br /&gt;
*Boot Hill	boothill&lt;br /&gt;
*Clowns (rev. 2)	clowns&lt;br /&gt;
*Super Breakout	sbrkout&lt;br /&gt;
*Avalanche	avalnche&lt;br /&gt;
*Beam Invader	beaminv&lt;br /&gt;
*Gee Bee	geebee&lt;br /&gt;
*Warlords	warlords&lt;br /&gt;
*Field Goal	fgoal&lt;br /&gt;
*Blue Shark	blueshrk&lt;br /&gt;
*Circus	circus&lt;br /&gt;
*Sea Wolf	seawolf&lt;br /&gt;
*Sea Wolf II	seawolf2&lt;br /&gt;
===Vertical paddle games===&lt;br /&gt;
*Destroyer destroyr&lt;br /&gt;
*Lunar Lander (rev 2) llander&lt;br /&gt;
&lt;br /&gt;
==Two Spinners on a control panel; is it worth it?==&lt;br /&gt;
The answer is an unequivocal ''maybe''. There are several factors to keep in mind when trying to determine whether you should buy and install 2 spinners on your control panel.&lt;br /&gt;
#Budget- Spinners are somewhat expensive. Buying 2 aftermarket spinners with optics will set you back about $80-$160. &lt;br /&gt;
#Software- Can your software support 2 mice at the same time. Make sure you have a version of mame that can support 2 spinners if they're both individual USB units. If you have them both plugged into an [[Optical_Encoders#Opti-PAC|Optipac]] this won't be a problem. &lt;br /&gt;
#Space- Depending on the model, spinners can take up a lot of room under the surface of a control panel. The Oscar Controls Push/Pull spinner was approximately 5.5x6&amp;quot; for instance. Also, the more spinners you have, the less room you may have for other features and joysticks. &lt;br /&gt;
#Games- Most importantly, do you like any games that use more than 1 spinner? Below is a (non-definitive) list of multi-spinner games &lt;br /&gt;
##Paddle Games&lt;br /&gt;
###Arkanoid Returns&lt;br /&gt;
###Off the Wall (Atari)&lt;br /&gt;
###Off the Wall (Bally Sente)&lt;br /&gt;
###Warlords (uses 4!)&lt;br /&gt;
###Pop'n Bounce&lt;br /&gt;
###Plump Pop&lt;br /&gt;
###VS Blok Breaker&lt;br /&gt;
##Flying&lt;br /&gt;
###Blasteroids&lt;br /&gt;
###Two Tigers&lt;br /&gt;
##Driving&lt;br /&gt;
###Super Off Road&lt;br /&gt;
### Super Sprint (uses 3!)&lt;br /&gt;
###Championship Super Sprint&lt;br /&gt;
###Bad Lands&lt;br /&gt;
###Ironman Ivan Stewart's Super Off-Road (uses 3!)&lt;br /&gt;
###Ironman Stewart's Super Off-Road Track Pack (uses 3!)&lt;br /&gt;
###Danny Sullivan's Indy Heat&lt;br /&gt;
## Other&lt;br /&gt;
###Atari 2 player games&lt;br /&gt;
###Puzzloop&lt;br /&gt;
&lt;br /&gt;
==If I can have only a spinner or a trackball... which should I choose==&lt;br /&gt;
'''insert pro/con arguments here'''&lt;br /&gt;
relevant links in msg board. delete links once the info has been added. &lt;br /&gt;
* http://forum.arcadecontrols.com/index.php?topic=25477.0&lt;br /&gt;
* http://forum.arcadecontrols.com/index.php?topic=37876.0&lt;br /&gt;
* http://forum.arcadecontrols.com/index.php?topic=36036.0&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Controls]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;br /&gt;
[[Category:Index]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Rotary_Encoders&amp;diff=8097</id>
		<title>Rotary Encoders</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Rotary_Encoders&amp;diff=8097"/>
		<updated>2007-01-09T20:00:00Z</updated>

		<summary type="html">&lt;p&gt;Urebelscum: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A rotary encoder converts rotary switch movement to output pulses that can be interpreted by [[Keyboard Encoders|keyboard encoders]].   &lt;br /&gt;
&lt;br /&gt;
==Rotary-5==&lt;br /&gt;
[[image:rotary5.jpg|right|thumb|Rotary5]]&lt;br /&gt;
Offered by [[Hagstrom Electronics|Hagstrom]], this unit is capable of operating as a stand alone device or may be used with a [[Keyboard Encoders|keyboard encoder]]. Its are suitable for driving direct inputs on a keyboard encoder to produce a keystroke or keystrokes for each change of position of the rotary switch.&lt;br /&gt;
&lt;br /&gt;
'''Relevant Link: [http://www.hagstromelectronics.com/products/rotary5.html Hagstrom's Rotary5 Page]'''&lt;br /&gt;
&lt;br /&gt;
==Rotary Joystick Interface==&lt;br /&gt;
Offered by [[Ultimarc]], this unit is a stand alone unit. It can convert two [[Joysticks#Rotary_Joysticks|12-position mechanical rotaries]], and outputs a fixed set of keystrokes.&lt;br /&gt;
&lt;br /&gt;
'''Relevant Link: [http://www.ultimarc.com/rotary.html Ultimarc's Rotary Page]'''&lt;br /&gt;
&lt;br /&gt;
==Druin's Rotary Interface==&lt;br /&gt;
&lt;br /&gt;
Offered by Druin, this was one of the first rotary encoders for the BYOAC crowd. You can download the plans and build your own board. It can convert two [[Joysticks#Rotary_Joysticks|12-position mechanical rotaries]], and it needs to be connected to a seperate [[Keyboard Encoders|keyboard encoder]] or [[Gamepad_Encoders|gamepad encoder]]. &lt;br /&gt;
&lt;br /&gt;
'''Relevant Link: [http://connect.to/rotary Druin's web page]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Controls]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Controls]]&lt;/div&gt;</summary>
		<author><name>Urebelscum</name></author>
		
	</entry>
</feed>