Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: improving 4-way play  (Read 1382 times)

0 Members and 1 Guest are viewing this topic.

elsie

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 22
  • Last login:September 24, 2011, 04:11:35 pm
improving 4-way play
« on: January 13, 2008, 03:27:20 pm »
Let me start by saying that I am very new to mame, and currently only have an analog joystick, so what I am saying may be old news and/or may not apply to those with 8 way joysticks.

For those who may not be familiar, Mame maps an analog joystick (maybe all joysticks) into a 9x9 map.  A typical 8 way map would look like
 777888999
 777888999
 777888999
 444555666
 444555666
 444555666
 111222333
 111222333
 111222333

Where 7 is the direction up-left, 8 is up, 9 is up-right, etc. and 5 is neutral.  This map is basically fine for 8 way.

However, for 4-way games the default "sticky" map is
 s8888888s
 4s88888s6
 44s888s66
 444555666
 444555666
 444555666
 44s222s66
 4s22222s4
 s2222222s

With the sticky map, when the joystick hits an "s" direction, it retains the previous direction in which it was pointed.  For example, if the joystick was pointed all the way up at an "8" in the top row, and then moved all the way to the upper right corner to the "s", the sticky default would be for you to continue moving up.  This, IMHO, is the primary difficulty in playing 4 way with a non 4-way joystick.  In my personal experience, if I am playing a 4 way game, and have the joystck in the "8" direction, and then move it to the upper-right corner, my intention is actually to change direction to "6", not continue moving towards "8"

That being said, I have made a minor mod to the input.c routine in mame to allow for an additional "direction" in the joystick_map.  This direction is "c" for change, and it behaves exactly the opposite of "s".  Currently, "c" can only go in the 4 corners of the map, and causes a change of direction when the joystick hits that position as described below:
 Corner the "c" is in     Previous Direction      New Direction
 Upper Left                   Up                              Left
 Upper Left                   Left                            Up
 Upper Right                 Up                              Right
 Upper Right                 Right                          Up
 Lower Left                   Down                         Left
 Lower Left                   Left                            Down
 Lower Right                 Down                         Right
 Lower Right                 Right                          Down

If "c" is found anywhere other than the 4 corners, it will behave as a sticky "s" direction.

To use this, you need to download the mame development environment (really easy) here http://mamedev.org/tools/ and the source code here http://mamedev.org/release.html then replace src\emu\input.c with the one attached (note, you must rename input.txt to input.c) and follow these compile directions from mamedev.org/tools
  Open up a command-line window. First, ensure that the mingw/bin directory is part of your search path. Do that by typing:
    set path=%PATH%;mingw\bin
  Next, switch to the directory where the MAME sources live:
    cd mame-source-path
  And then execute mingw32-make to build it:
    mingw32-make
  Wait a while, and you will have a fully built MAME executable.

To use the change directions, run "mame -joystick -joystick_map c8888888c.4488.4448.4445"

Please let me know if it is helpful and/or you have any problems with it