Main > Main Forum
Mame analog joystick mapping vs. u360 firmware mapping?
(1/12) > >>
arzoo:
(use Dwight Schrute voice) Question: For those who are using u360s with an app/plugin to set their firmware mapping, could this create a conflicting map with mame? For example, if mame is restricting the analog output to 4-way and the u360 is loaded with an 8-way map - will the game still only register the 4-way region? Or let's say both mame and the u360 use a 8-way diagonal map - do you get composite results?

Here's a few other questions...
1) Which was the first version of mame to support built-in analog joystick mapping?
2) Can this feature be turned off?
3) What are the possible values for the joystick_map key in the mame.ini (auto is the default)?

Thanks!
Neverending Project:
I don't know for a fact, but in thinking about how the "mapping" works if the U360s have the firmware set to a map, this would be in addition to the mame mapping. So in effect it would be like overlapping the two maps - U360 applied first then mame.

Example: You play a mame game with a 4-way joystick, but you set the U360 to a different map in firmware first. Say you set the U360 to 2-way map using its firmware (extreme example) where all +Y movement sends "up" and all -Y sends "down, then mame would never see a + or - X movement to apply its map.

I can't confirm this from work (I wish I had my arcade machine in my office!) but that is how I understand it to work. I can't answer about the other questions, though. The docs\config.txt file talk about the mapping in mame, but I can't find where it mentions how to disable it.

--- Quote ----joystick_map <map> / -joymap <map>

   Controls how joystick values map to digital joystick controls. MAME
   accepts all joystick input from the system as analog data. For true
   analog joysticks, this needs to be mapped down to the usual 4-way or
   8-way digital joystick values. To do this, MAME divides the analog
   range into a 9x9 grid. It then takes the joystick axis position (for
   X and Y axes only), maps it to this grid, and then looks up a
   translation from a joystick map. This parameter allows you to specify
   the map. The default is 'auto', which means that a standard 8-way,
   4-way, or 4-way diagonal map is selected automatically based on the
   input port configuration of the current game.

   Maps are defined as a string of numbers and characters. Since the grid
   is 9x9, there are a total of 81 characters necessary to define a
   complete map. Below is an example map for an 8-way joystick:

      777888999    Note that the numeric digits correspond to the keys
      777888999    on a numeric keypad. So '7' maps to up+left, '4' maps
      777888999    to left, '5' maps to neutral, etc. In addition to the
      444555666    numeric values, you can specify the character 's',
      444555666    which means "sticky". In this case, the value of the
      444555666    map is the same as it was the last time a non-sticky
      111222333    value was read.
      111222333
      111222333

   To specify the map for this parameter, you can specify a string of
   rows separated by a '.' (which indicates the end of a row), like so:

       777888999.777888999.777888999.444555666.444555666.444555666.
       111222333.111222333.111222333

   However, this can be reduced using several shorthands supported by the
   <map> parameter. If information about a row is missing, then it is
   assumed that any missing data in columns 5-9 are left/right symmetric
   with data in columns 0-4; and any missing data in colums 0-4 is
   assumed to be copies of the previous data. The same logic applies to
   missing rows, except that up/down symmetry is assumed.

   By using these shorthands, the 81 character map can be simply
   specified by this 11 character string: 7778...4445

   Looking at the first row, 7778 is only 4 characters long. The 5th
   entry can't use symmetry, so it is assumed to be equal to the previous
   character '8'. The 6th character is left/right symmetric with the 4th
   character, giving an '8'. The 7th character is left/right symmetric
   with the 3rd character, giving a '9' (which is '7' with left/right
   flipped). Eventually this gives the full 777888999 string of the row.

   The second and third rows are missing, so they are assumed to be
   identical to the first row. The fourth row decodes similarly to the
   first row, producing 444555666. The fifth row is missing so it is
   assumed to be the same as the fourth.

   The remaining three rows are also missing, so they are assumed to be
   the up/down mirrors of the first three rows, giving three final rows
   of 111222333.
--- End quote ---
edubbs:
What a coincidence, I was just about to post a similar question.

I wanted to verify that my u360 mapping was working with ledblinky so i tried a few things.  first, i set joystick_map to 0.  when i did that my joystick failed to work at all in the rom.  next i set my joystick_map back to auto, deleted the Joy8Way map, and renamed the Joy4Way map to Joy8Way map.  i loaded the rom (street fighter two champion ed) and it was obviously running in 4 way mode.

so, my mapping with ledblinky appears to be working correctly.  however, i don't understand why disabling the mapping in mame would completely disable my joystick?!?  maybe everything isn't working perfectly...

(mame .118 onward offers the joystick_map option)
http://forum.arcadecontrols.com/index.php?topic=80873.0
Ummon:
It's simple: your stick must be set to analog for MAME to map it itself. If set to analog, your FE can still set it to something else at game load. (I don't recall what version of MAME started mappings.) I don't like the MAME mapping, though maybe if the stick had a greater mechanical tolerance I would. Hence, I make my own U-maps, which are switched via MaLa.

Supplemental: for 'joystick' to work in MAME, make sure it's enabled. Another reason I use MAME32/UI for testing. Still, sometimes you have to also set it in-game.
arzoo:
Thanks everyone for the answers.

My concern here is that the u360 (regardless of the map loaded into firmware) always looks like an analog stick to mame. So if you can't turn off mame's mapping then you're playing with a composite map. And if that's the case then some custom u360 maps may not work as expected - for example, if the u360 map has a very small dead-zone (intentionally) and the mame map has a larger dead-zone, then the larger dead-zone will take effect.

It seems impossible to do any valid testing because the mame mapping only effects the game - there's no test mode or test app.

Those of us who want to use the u360 firmware mapping really need a way to turn off the mame mapping.
Navigation
Message Index
Next page

Go to full version