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
Site News

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


  

Author Topic: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)  (Read 46476 times)

0 Members and 1 Guest are viewing this topic.

MydknyteStyrm

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 294
  • Makeup FX Gamer
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #200 on: September 25, 2015, 07:33:43 pm »
Did you have Controllerremap set in HyperHQ? I know it works when starting Hyperspin, but not when I just test games thru the RL interface.


Sent from my iPhone using Tapatalk

stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 872
  • It seemed like a good idea at the time....
    • Mago Arcade
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #201 on: September 26, 2015, 03:30:17 am »
Sorry - don't use either HyperHQ or RL

mark shaker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 290
  • Oh Crikey!
    • Mark's Basement Arcade
Bug Report!
« Reply #202 on: November 07, 2015, 09:11:20 am »
drventure:

Thanks so much for this program. My mouse and joystick numbers were stable under Windows 7. But when I updated my MAME Cabs to Windows 10, the mouse and joystick numbers were mixed up after every boot.

Andy W. from Ultimarc pointed me to ControllerRemap.

I did find one issue: There is an inconsistency between the IDs given in the list function and how they are used in the remap function.

My Joysticks are listed like so (IDs 0-7)
   1.  'AKI2', ID=2
   2.  'AKI2', ID=3
   3.  'AKI1', ID=0
   4.  'AKI3', ID=4
   5.  'AKI1', ID=1
   6.  'AKI4', ID=6
   7.  'AKI3', ID=5
   8.  'AKI4', ID=7

But in order to have the input tag populated, I have to reference them like so (IDs 1 and 2 only):
   1. AKI2:1
   2. AKI2:2
   3. AKI1:1
   4. AKI3:1
   5. AKI1:2
   6. AKI4:1
   7. AKI3:2
   8. AKI4:2

I just discovered this, so I have not yet verified that the using this workaround will generate the correct Joystick numbers.

BTW: I'm using Version 0.0.11.

  - Mark

UPDATE:

I've verified that referencing the Joysticks using the IDs 1 and 2 does correctly populate the input tag. So, I'm good to go. I think the bugs are in the list feature, first for starting the ID number with 0 (not 1) and second for not resetting the ID number even though the Controllers did not have the exact same name.
« Last Edit: November 07, 2015, 10:56:56 am by mark shaker »

drventure

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4144
  • Laser Death Ray Bargain Bin! Make me an offer!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #203 on: November 07, 2015, 01:47:16 pm »
Glad its more or less working for you.  Haven't had any other reports of the number mixup like this,  but I haven't run it on win 10 iether.

I'll have a look and see if I can figure out whats up.

Thanks for the report!

mark shaker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 290
  • Oh Crikey!
    • Mark's Basement Arcade
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #204 on: November 08, 2015, 07:12:54 am »

drventure:

Thank you for developing and continuing to support ControllerRemap.

This is really minor, as once I figured out what was happening with the IDs, the workaround was easy.

Please let me know f I can provide any info to help.

Based on my experience with Win10, I think that ControllerRemap is going to get a bump in usage. :-) 

   - Mark

drventure

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4144
  • Laser Death Ray Bargain Bin! Make me an offer!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #205 on: November 08, 2015, 10:53:47 am »
Oooh.... I think I know what's going on.

It looks like you have 8 sticks installed, but there are pairs that come up with the same ID NAME. Is that correct?

If it is, then what happens in ControllerRemap normally matches on the NAME, not the ID, because the whole problem is that the IDs can change out from under you.
That's why you basically need to just ignore the ID numbers in the list. They're there mainly to point out what IDs windows has set them to "right now". But that doesn't mean when you unplug one and plug it back in, they'll end up with the same id.

What happens is Cremap realizes there's TWO controllers that both have the same name, so it says "Ok the first instance of that controller is "1" and the second instance is "2" etc.

So then, later, when you refer to those controllers in your cfg file, you refer to them as "AK2:1", which actually means "the first instance of a controller in the group of controllers that are all named "AK2".

I hope that makes sense.

One thing you might do in this case is check out the ALIASING feature in cremap.

It allows you to say something like

"AK2:1" = "LeftUpperStick"
"AK2:2" = "LeftLowerStick"

and then refer to them in the CFG file as

"LeftUpperStick" or "LeftLowerStick" so that it reads a little clearer.

mark shaker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 290
  • Oh Crikey!
    • Mark's Basement Arcade
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #206 on: November 08, 2015, 06:40:04 pm »
drventure;

I have a Pacmamea MAME Cab with 5 rotating panels.  It has 4 AKI (Arcade Kontrol Interface) boards. Each AKI shows up as a 3 axis joystick + a 2 axis joystick.  One of features of the AKI board was that it could be ordered with different names (AKI1 through AKI4), so that windows would not get the different boards mixed up. And in my experience, Windows has never mixed up one AKI's 3 axis and 2 axis controller.

So I still think that there is a small issue the ControllerRemap (maybe just under with Win10): The IDs given by the /list command do not match the IDs I have to use in <controlleralias> tag.

My list output and <controlleralias> tags are below. Notice that the /list shows AKI4 with IDs 6 and 7, but in the <controlleralias> tags I had to use AKI4 with IDs 1 and 2.

Here is my list:

D:\ControllerRemap>ControllerRemap /list

ControllerRemap Utility v0.0.11.0 - For Mame
(c) 2011 drventure Enterprises


Joystick Device List (Devices are in enumeration order) ...

   1.  'AKI2', ID=2
   2.  'AKI2', ID=3
   3.  'AKI1', ID=0
   4.  'AKI3', ID=4
   5.  'AKI1', ID=1
   6.  'AKI4', ID=6
   7.  'AKI3', ID=5
   8.  'AKI4', ID=7

Mouse Device List (Devices are in enumeration order) ...

   1.  'HID#VID_04B4_PID_0201_MI_01#9_13de298_0_0000#'
   2.  'HID#VID_04B4_PID_0201_MI_00#9_2515205a_0_0000#'
   3.  'HID#VID_D209_PID_1582_MI_01#9_c2ed3e1_0_0000#'
   4.  'HID#VID_0488_PID_0020_Col01#8_20daecd8_0_0000#'
   5.  'HID#VID_0518_PID_0001_MI_01_Col01#8_318ea06_0_0000#'
   6.  'HID#VID_1241_PID_1111#8_2220ff0_0_0000#'
   7.  'HID#VID_D209_PID_1582_MI_02#9_2160e07_0_0000#'

End of list

Here are my <controlleralias> tags:

   <controlleralias>
      <id>AKI1:1</id>
      <alias>Panel1_Left_Stick</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI1:2</id>
      <alias>Panel1_Right_Stick</alias>
   </controlleralias>
   <controlleralias>
      <id>HID#VID_D209_PID_1582_MI_01#9_c2ed3e1_0_0000#</id>
      <alias>Panel2_Left_Trackball</alias>
   </controlleralias>
   <controlleralias>
      <id>HID#VID_D209_PID_1582_MI_02#9_2160e07_0_0000#</id>
      <alias>Panel2_Right_Trackball</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI3:1</id>
      <alias>Panel3_Left_Bat</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI1:1</id>
      <alias>Panel3_Right_Bat</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI3:2</id>
      <alias>Panel3_Left_Stick</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI3:1</id>
      <alias>Panel3_Right_Stick</alias>
   </controlleralias>
   <controlleralias>
      <id>HID#VID_1241_PID_1111#8_2220ff0_0_0000#</id>
      <alias>Panel4_Spinner</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI2:2</id>
      <alias>Panel5_Right_Stick</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI2:1</id>
      <alias>Panel5_Left_Stick</alias>
   </controlleralias>
   <controlleralias>
      <id>HID#VID_04B4_PID_0201_MI_01#9_13de298_0_0000#</id>
      <alias>Panel5_Right_Spinner</alias>
   </controlleralias>
   <controlleralias>
      <id>HID#VID_04B4_PID_0201_MI_00#9_2515205a_0_0000#</id>
      <alias>Panel5_Left_Spinner</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI4:2</id>
      <alias>Right_Pedal</alias>
   </controlleralias>
   <controlleralias>
      <id>AKI4:1</id>
      <alias>Left_Pedal</alias>
   </controlleralias>

I actually have 13 different "ctrlr" .cfg files. (But most share a common section that includes the <controlleralias> tags and <controller> tags for the keyboard and pedals.)  I set the most common ctrlr file as the default, and assign the others to individual games. I set up a batch file that remaps all the ctrlr files that use either mice or analog sticks, and then launches MameUI.

I'm very grateful for ControllerRemap. Without it I would not have been able to upgrade my cabinet to Win10.

   - Mark
« Last Edit: November 08, 2015, 09:38:14 pm by mark shaker »

drventure

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4144
  • Laser Death Ray Bargain Bin! Make me an offer!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #207 on: November 09, 2015, 12:01:36 pm »
Quote
So I still think that there is a small issue the ControllerRemap (maybe just under with Win10): The IDs given by the /list command do not match the IDs I have to use in <controlleralias> tag.

I don't believe there's an issue here.

The thing is (and I suspect this might be a bit confusing, so I'll look at possibly changing the wording), the ID number that shows in the list generated by /LIST has nothing to do with how to reference a controller in the CFG file.

For instance, I see that you have a single AK stick controller that actually exposes 2 "sticks" to windows, as in AKI4 ID 6 and ID 7.

No problem there.

But, since windows can shift those IDs around on a whim, the ID numbers listed are ONLY valid for RIGHT NOW. They might be (and likely will be) completely different if you unplugged 3 sticks and moved them to different USB ports, or powered off, or any number of other things.

So, consider those ID numbers as for INFORMATION and curiosity only. You really can't use them for much else.


When you go to set up your CFG file (or files), what you need to know is the name of the controller "AKI4" and, if there are multiple instances of it, which instance you want to use.

So, when you reference

"AKI4:2"

this is NOT saying "controller AKI4 with an ID of 2"

instead, it's saying "The second instance of a controller in the group of controllers that are all named "AKI4""



So, in short, while it can be helpful from a debugging perspective to know the joystick ID number (and indeed that's why it's including the the info that the /LIST command outputs), from the standpoint of configuring your controller file, you need to ignore the ID numbers.

mark shaker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 290
  • Oh Crikey!
    • Mark's Basement Arcade
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #208 on: November 09, 2015, 07:39:12 pm »

drventure;

I had to re-read the documentation to figure out where I got confused: I did not realize that the JoystickID number given by the list command and the instance number were 2 separate things. (I thought the two processes listed on page 16 for specifying a joystick when there were several with the same name were just different syntax for using the same identifying number.)

I apologize for being so thick.

And now my confusion will be preserved on the internet until the end of time. :-(

   - Mark

drventure

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4144
  • Laser Death Ray Bargain Bin! Make me an offer!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #209 on: November 09, 2015, 09:33:49 pm »
No worries. It can be a bit confusing to get CtrlRemap working, but then, the problem itself is pretty dang confusing.

Glad you got things going!

sin360

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 44
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #210 on: December 31, 2015, 03:05:25 pm »
Hello, I'm currently trying to finish my cabinet and I'm running into issues with my ctrlr file in mame. I made it using controllerremapgui and P1,P2 the trackball and spinner work, but P3&4 are not. The joysticks are not working and the buttons are not configured correctly. I compiled my mame64 0.155 with hiscore and no nag. Here is a pastebin of my ctrlr file. http://pastebin.com/EYKLKuXY

I forgot to add that with no control file selected I have the same issue.

drventure

  • Trade Count: (+2)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 4144
  • Laser Death Ray Bargain Bin! Make me an offer!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #211 on: December 31, 2015, 04:23:16 pm »
It's hard to be sure what's going on. It looks like things are mapped right in your ctlr file.

If you have a look at the generated result file (or use the /test option) does the keymapping look right there?

You mention that things don't work even without the ctrlr file in the mix. If that's the case, you may not have you keyboard encoder mapped to the keys you thing it should be mapped to.

For instance, p4 joystick down is the N key in the ctrlr file, but if your keyboard encoder isn't set up like that (or if you've got the switch wire wired to the wrong input on the ctlr, then that'd be a problem.

Those a few things to check for anyway.


sin360

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 44
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #212 on: December 31, 2015, 04:28:26 pm »
Sorry I forgot to mention that I made a ctrlr config using the hotrose config as a starting point and added P3&4 and they worked,  but I couldn't get the trackball and spinner to work in that file.

stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 872
  • It seemed like a good idea at the time....
    • Mago Arcade
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #213 on: December 31, 2015, 04:57:34 pm »
Have you checked any default mame or game .cfgs in mame/cfg folder? Any controls in cfg folders here can stop ctrlremap.cfgs working. More details here:

https://controllerremapgui.codeplex.com/wikipage?title=Setting%20up%20Per-Game%20Settings&referringTitle=Documentation


sin360

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 44
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #214 on: December 31, 2015, 05:45:38 pm »
Ok I made progress still not sure exactly why my ctrlr config is not working as it should, but the controls are working now.  First yes I got rid of all my configs and started from scratch and still had the same issue. I was originally using mameuifx before I decided to compile my own copy of mame64 which got me know where. It was in the back of my head the whole time that mame was using some default, but the file was empty and I figured that my config should override it, but it didn't.

So long story short I loaded mame64 went to the general config and looked at players 3&4 and they were setup to defaults. So I changed just players 3&4 and now everything works as it should. I opened up he default config and it has the players 3&4 now. So I added my neogeo setup to the ctrlr file I was using and everything works well now.

Thank You all for the help

MotoChi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 11
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #215 on: January 19, 2016, 09:02:28 am »
Dr. Venture, thank you for this utility, it's amazing.

Just got it set up yesterday.  Set up was for a cocktail table, U360's on each end via USB. On the long side a U360 via USB, trackball and spinner via usb, and a mini grip via UltiMarc I/0 (connected as player 2 on the board, then USB).

Before setting up ControllerRemap, I'd never been able to use 1 joy and spinner/track at same time, was always plugging/unplugging.

Now EVERYTHING is working perfect.  Even have multi mouse enabled, so no accidental track/spinner nudges.  What an amazing utility.  Great documentation.  Very straight forward.

I've been able to set up correctly per game overrides for unique joy/spinner combos now, just works great.

I was never able to get the /mame argument to working with Mala (but would work command line).  However, the batch command method and having Mala call that worked just fine.

Member PL1 pointed me in the direction of your utility.  You did a great job on it.

putto72

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 24
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #216 on: February 13, 2016, 08:25:10 pm »
Hi, this utility would be really helpful.. I have built a new system using Windows 10 and found that it often shifts around usb devices. I tried preparing a configuration file, but I always get the following error when doing /Remap:

Unexpected problem encountered. System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.
   in ControllerRemap.ControllerEntries._Closure$__4._Lambda$__12(ControllerEntry j)
   in System.Linq.Enumerable.WhereListIterator`1.MoveNext()
   in System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   in ControllerRemap.ControllerEntries.get_InternalFindByID(String index, Boolean IgnoreInstance)
   in ControllerRemap.CFGFileMame.Scan()
   in ControllerRemap.CFGFiles.Scan()
   in ControllerRemap.Program.Main()

This is what I get when I list devices:

Joystick Device List (Devices are in enumeration order) ...

   1.  'ATRAK Device #1', ID=2
   2.  'Controller (XBOX 360 For Windows)', ID=4
   3.  'Ultimarc Ultra-Stik Player 2', ID=1
   4.  'UHID Gamepad Device #1', ID=3
   5.  'Ultimarc Ultra-Stik Player 1', ID=0

Mouse Device List (Devices are in enumeration order) ...

   1.  ''
   2.  'HID#VID_1241_PID_1111#7_36822904_0_0000#'
   3.  'HID#VID_D209_PID_0301_MI_01#9_a81f0c9_0_0000#'
   4.  'HID#VID_D209_PID_1501_MI_03_Col01#8_1fc8b79d_0_0000#'
   5.  'HID#VID_D209_PID_1501_MI_03_Col02#8_1fc8b79d_0_0001#'
   6.  'HID#VID_D209_PID_1601_MI_02#7_6f69e7b_0_0000#'
   7.  'HID#VID_D209_PID_0501_MI_01#8_3a7f8b52_0_0000#'
   8.  'HID#VID_046D_PID_C52B_MI_01_Col01#7_b4c835b_0_0000#'
   9.  'HID#VID_D209_PID_0502_MI_01#8_24588317_0_0000#'
   10.  ''

End of list

And this is the result of /save:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfControllerEntry xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ControllerRemap">
  <ControllerEntry>
    <DeviceID>2</DeviceID>
    <EnumerationPos>1</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>ATRAK Device #1</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>4</DeviceID>
    <EnumerationPos>2</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>Controller (XBOX 360 For Windows)</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>1</DeviceID>
    <EnumerationPos>3</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>Ultimarc Ultra-Stik Player 2</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>3</DeviceID>
    <EnumerationPos>4</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>UHID Gamepad Device #1</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>5</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>Ultimarc Ultra-Stik Player 1</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>10</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name i:nil="true" />
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>9</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_0502_MI_01#8_24588317_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>8</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_046D_PID_C52B_MI_01_Col01#7_b4c835b_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>7</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_0501_MI_01#8_3a7f8b52_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>6</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_1601_MI_02#7_6f69e7b_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>5</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_1501_MI_03_Col02#8_1fc8b79d_0_0001#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>4</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_1501_MI_03_Col01#8_1fc8b79d_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>3</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_0301_MI_01#9_a81f0c9_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>2</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_1241_PID_1111#7_36822904_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>1</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name i:nil="true" />
  </ControllerEntry>
</ArrayOfControllerEntry>

My devices are all connected to a 7 port D-Link HUB; I suspect it is the source of two "empty" devices that I believe are confusing the enumeration. Any suggestion?

Thank you.



stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 872
  • It seemed like a good idea at the time....
    • Mago Arcade
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #217 on: February 20, 2016, 06:35:22 am »
Away from my setup for a while so cant check. However, that xml isnt looking right. Compare it with other cfgs in this topuc.

putto72

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 24
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #218 on: February 20, 2016, 06:58:18 am »
Well, that's what "/save" spits out, I have not touched it...

Endprodukt

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 614
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #219 on: April 20, 2016, 03:05:03 pm »
I can't setup my Spinners correctly. They should use the spot "Dial Analog" in the default config but will not be bound to them in MAME. Controller Port says DIAL only, might that be a problem? Changing it to P1_DIAL_ANALOG didn't help though.

Looking at the Defaul Config (launched by RemapGUI) it will change the Guns correctly but Spinner 1, Spinner 2 and Trackball are all set to Mouse 1.

Here is my ctrl.cfg:

Code: [Select]
<mameconfig version="10">
  <controlleralias>
    <id>keyboard</id>
    <alias>keyboard</alias>
  </controlleralias>
  <controlleralias>
    <id>HID#VID_D209_PID_1601_MI_02#9_375eebb1</id>
    <alias>Gun 1 Mouse</alias>
  </controlleralias>
  <controlleralias>
    <id>HID#VID_D209_PID_1602_MI_02#a_2d683b22</id>
    <alias>Gun 2 Mouse</alias>
  </controlleralias>
  <controlleralias>
    <id>HID#VID_1241_PID_1111#8_1933e90a</id>
    <alias>Spinner 2</alias>
  </controlleralias>
  <controlleralias>
    <id>HID#VID_D209_PID_15A1#8_1d39b884</id>
    <alias>Trackball</alias>
  </controlleralias>
  <controlleralias>
    <id>ATRAK Device #1</id>
    <alias>Gun 1 Pad</alias>
  </controlleralias>
  <controlleralias>
    <id>ATRAK Device #2</id>
    <alias>Gun 2 PAD</alias>
  </controlleralias>
  <controlleralias>
    <id>HID#VID_1241_PID_1111#8_2bed99af</id>
    <alias>Spinner 1</alias>
  </controlleralias>
  <system name="default">
    <controller id="keyboard">
      <input>
        <port type="P1_JOYSTICK_UP">
          <newseq type="standard">KEYCODE_UP</newseq>
        </port>
        <port type="P1_JOYSTICK_DOWN">
          <newseq type="standard">KEYCODE_DOWN</newseq>
        </port>
        <port type="P1_JOYSTICK_LEFT">
          <newseq type="standard">KEYCODE_LEFT</newseq>
        </port>
        <port type="P1_JOYSTICK_RIGHT">
          <newseq type="standard">KEYCODE_RIGHT</newseq>
        </port>
        <port type="P1_JOYSTICKRIGHT_UP">
          <newseq type="standard">KEYCODE_UP</newseq>
        </port>
        <port type="P1_JOYSTICKRIGHT_DOWN">
          <newseq type="standard">KEYCODE_DOWN</newseq>
        </port>
        <port type="P1_JOYSTICKRIGHT_LEFT">
          <newseq type="standard">KEYCODE_LEFT</newseq>
        </port>
        <port type="P1_JOYSTICKRIGHT_RIGHT">
          <newseq type="standard">KEYCODE_RIGHT</newseq>
        </port>
        <port type="P1_JOYSTICKLEFT_UP">
          <newseq type="standard">KEYCODE_Q</newseq>
        </port>
        <port type="P1_JOYSTICKLEFT_DOWN">
          <newseq type="standard">KEYCODE_W</newseq>
        </port>
        <port type="P1_JOYSTICKLEFT_LEFT">
          <newseq type="standard">KEYCODE_E</newseq>
        </port>
        <port type="P1_JOYSTICKLEFT_RIGHT">
          <newseq type="standard">KEYCODE_R</newseq>
        </port>
        <port type="P1_BUTTON2">
          <newseq type="standard">KEYCODE_S</newseq>
        </port>
        <port type="P1_BUTTON3">
          <newseq type="standard">KEYCODE_D</newseq>
        </port>
        <port type="P1_BUTTON4">
          <newseq type="standard">KEYCODE_Z</newseq>
        </port>
        <port type="P1_BUTTON5">
          <newseq type="standard">KEYCODE_X</newseq>
        </port>
        <port type="P1_BUTTON6">
          <newseq type="standard">KEYCODE_C</newseq>
        </port>
        <port type="P1_BUTTON7">
          <newseq type="standard">KEYCODE_F</newseq>
        </port>
        <port type="P1_BUTTON8">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON9">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON10">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON11">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON12">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON13">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON14">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON15">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P1_BUTTON16">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P2_JOYSTICK_UP">
          <newseq type="standard">KEYCODE_8PAD</newseq>
        </port>
        <port type="P2_JOYSTICK_DOWN">
          <newseq type="standard">KEYCODE_5PAD</newseq>
        </port>
        <port type="P2_JOYSTICK_LEFT">
          <newseq type="standard">KEYCODE_4PAD</newseq>
        </port>
        <port type="P2_JOYSTICK_RIGHT">
          <newseq type="standard">KEYCODE_6PAD</newseq>
        </port>
        <port type="P2_JOYSTICKRIGHT_UP">
          <newseq type="standard">KEYCODE_T</newseq>
        </port>
        <port type="P2_JOYSTICKRIGHT_DOWN">
          <newseq type="standard">KEYCODE_Y</newseq>
        </port>
        <port type="P2_JOYSTICKRIGHT_LEFT">
          <newseq type="standard">KEYCODE_U</newseq>
        </port>
        <port type="P2_JOYSTICKRIGHT_RIGHT">
          <newseq type="standard">KEYCODE_I</newseq>
        </port>
        <port type="P2_JOYSTICKLEFT_UP">
          <newseq type="standard">KEYCODE_8PAD</newseq>
        </port>
        <port type="P2_JOYSTICKLEFT_DOWN">
          <newseq type="standard">KEYCODE_5PAD</newseq>
        </port>
        <port type="P2_JOYSTICKLEFT_LEFT">
          <newseq type="standard">KEYCODE_4PAD</newseq>
        </port>
        <port type="P2_JOYSTICKLEFT_RIGHT">
          <newseq type="standard">KEYCODE_6PAD</newseq>
        </port>
        <port type="P2_BUTTON2">
          <newseq type="standard">KEYCODE_H</newseq>
        </port>
        <port type="P2_BUTTON3">
          <newseq type="standard">KEYCODE_J</newseq>
        </port>
        <port type="P2_BUTTON4">
          <newseq type="standard">KEYCODE_B</newseq>
        </port>
        <port type="P2_BUTTON5">
          <newseq type="standard">KEYCODE_N</newseq>
        </port>
        <port type="P2_BUTTON6">
          <newseq type="standard">KEYCODE_M</newseq>
        </port>
        <port type="P2_BUTTON7">
          <newseq type="standard">KEYCODE_K</newseq>
        </port>
        <port type="P2_BUTTON8">
          <newseq type="standard">NONE</newseq>
        </port>
        <port type="P3_JOYSTICK_UP">
          <newseq type="standard">KEYCODE_Q</newseq>
        </port>
        <port type="P3_JOYSTICK_DOWN">
          <newseq type="standard">KEYCODE_W</newseq>
        </port>
        <port type="P3_JOYSTICK_LEFT">
          <newseq type="standard">KEYCODE_E</newseq>
        </port>
        <port type="P3_JOYSTICK_RIGHT">
          <newseq type="standard">KEYCODE_R</newseq>
        </port>
        <port type="P3_BUTTON1">
          <newseq type="standard">KEYCODE_1PAD</newseq>
        </port>
        <port type="P3_BUTTON2">
          <newseq type="standard">KEYCODE_2PAD</newseq>
        </port>
        <port type="P3_BUTTON3">
          <newseq type="standard">KEYCODE_3PAD</newseq>
        </port>
        <port type="P3_BUTTON4">
          <newseq type="standard">KEYCODE_0PAD</newseq>
        </port>
        <port type="P4_JOYSTICK_UP">
          <newseq type="standard">KEYCODE_T</newseq>
        </port>
        <port type="P4_JOYSTICK_DOWN">
          <newseq type="standard">KEYCODE_Y</newseq>
        </port>
        <port type="P4_JOYSTICK_LEFT">
          <newseq type="standard">KEYCODE_U</newseq>
        </port>
        <port type="P4_JOYSTICK_RIGHT">
          <newseq type="standard">KEYCODE_I</newseq>
        </port>
        <port type="P4_BUTTON1">
          <newseq type="standard">KEYCODE_SLASHPAD</newseq>
        </port>
        <port type="P4_BUTTON2">
          <newseq type="standard">KEYCODE_ASTERISK</newseq>
        </port>
        <port type="P4_BUTTON3">
          <newseq type="standard">KEYCODE_MINUSPAD</newseq>
        </port>
        <port type="P4_BUTTON4">
          <newseq type="standard">KEYCODE_PLUSPAD</newseq>
        </port>
        <port type="UI_CONFIGURE">
          <newseq type="standard">KEYCODE_5 KEYCODE_DELPAD</newseq>
        </port>
        <port type="UI_PAUSE">
          <newseq type="standard">KEYCODE_DELPAD</newseq>
        </port>
        <port type="P1_BUTTON1">
          <newseq type="standard">KEYCODE_A</newseq>
        </port>
        <port type="P2_BUTTON1">
          <newseq type="standard">KEYCODE_G</newseq>
        </port>
      </input>
    </controller>
    <controller id="Gun 1 Mouse">
      <input>
        <port type="P1_LIGHTGUN_X">
          <newseq type="standard">GUNCODE_5_XAXIS</newseq>
        </port>
        <port type="P1_LIGHTGUN_Y">
          <newseq type="standard">GUNCODE_5_YAXIS</newseq>
        </port>
        <port type="P1_BUTTON1">
          <newseq type="standard">GUNCODE_1_BUTTON1</newseq>
        </port>
      </input>
    </controller>
    <controller id="Gun 2 Mouse">
      <input>
        <port type="P2_LIGHTGUN_X">
          <newseq type="standard">GUNCODE_1_XAXIS</newseq>
        </port>
        <port type="P2_LIGHTGUN_Y">
          <newseq type="standard">GUNCODE_1_YAXIS</newseq>
        </port>
        <port type="P2_BUTTON1">
          <newseq type="standard">GUNCODE_2_BUTTON1</newseq>
        </port>
      </input>
    </controller>
    <controller id="Spinner 2">
      <input>
        <port type="P2_DIAL">
          <newseq type="standard">MOUSECODE_3_XAXIS</newseq>
        </port>
      </input>
    </controller>
    <controller id="Trackball">
      <input>
        <port type="P1_TRACKBALL_X">
          <newseq type="standard">MOUSECODE_2_XAXIS</newseq>
        </port>
        <port type="P2_TRACKBALL_X">
          <newseq type="standard">MOUSECODE_2_XAXIS</newseq>
        </port>
        <port type="P1_TRACKBALL_Y">
          <newseq type="standard">MOUSECODE_2_YAXIS</newseq>
        </port>
        <port type="P2_TRACKBALL_Y">
          <newseq type="standard">MOUSECODE_2_YAXIS</newseq>
        </port>
        <port type="P1_MOUSE_X">
          <newseq type="standard">MOUSECODE_2_XAXIS</newseq>
        </port>
        <port type="P1_MOUSE_Y">
          <newseq type="standard">MOUSECODE_2_YAXIS</newseq>
        </port>
      </input>
    </controller>
    <controller id="Gun 1 Pad">
      <input>
        <port type="P1_BUTTON2">
          <newseq type="standard">JOYCODE_1_BUTTON1</newseq>
        </port>
      </input>
    </controller>
    <controller id="Gun 2 PAD">
      <input>
        <port type="P2_BUTTON2">
          <newseq type="standard">JOYCODE_2_BUTTON1</newseq>
        </port>
      </input>
    </controller>
    <controller id="Spinner 1">
      <input>
        <port type="P1_DIAL">
          <newseq type="standard">MOUSECODE_4_XAXIS</newseq>
        </port>
      </input>
    </controller>
    <input>
      <port type="P1_JOYSTICK_UP">
        <newseq type="standard">KEYCODE_UP</newseq>
      </port>
      <port type="P1_JOYSTICK_DOWN">
        <newseq type="standard">KEYCODE_DOWN</newseq>
      </port>
      <port type="P1_JOYSTICK_LEFT">
        <newseq type="standard">KEYCODE_LEFT</newseq>
      </port>
      <port type="P1_JOYSTICK_RIGHT">
        <newseq type="standard">KEYCODE_RIGHT</newseq>
      </port>
      <port type="P1_JOYSTICKRIGHT_UP">
        <newseq type="standard">KEYCODE_UP</newseq>
      </port>
      <port type="P1_JOYSTICKRIGHT_DOWN">
        <newseq type="standard">KEYCODE_DOWN</newseq>
      </port>
      <port type="P1_JOYSTICKRIGHT_LEFT">
        <newseq type="standard">KEYCODE_LEFT</newseq>
      </port>
      <port type="P1_JOYSTICKRIGHT_RIGHT">
        <newseq type="standard">KEYCODE_RIGHT</newseq>
      </port>
      <port type="P1_JOYSTICKLEFT_UP">
        <newseq type="standard">KEYCODE_Q</newseq>
      </port>
      <port type="P1_JOYSTICKLEFT_DOWN">
        <newseq type="standard">KEYCODE_W</newseq>
      </port>
      <port type="P1_JOYSTICKLEFT_LEFT">
        <newseq type="standard">KEYCODE_E</newseq>
      </port>
      <port type="P1_JOYSTICKLEFT_RIGHT">
        <newseq type="standard">KEYCODE_R</newseq>
      </port>
      <port type="P1_BUTTON2">
        <newseq type="standard">KEYCODE_S OR JOYCODE_1_BUTTON1</newseq>
      </port>
      <port type="P1_BUTTON3">
        <newseq type="standard">KEYCODE_D</newseq>
      </port>
      <port type="P1_BUTTON4">
        <newseq type="standard">KEYCODE_Z</newseq>
      </port>
      <port type="P1_BUTTON5">
        <newseq type="standard">KEYCODE_X</newseq>
      </port>
      <port type="P1_BUTTON6">
        <newseq type="standard">KEYCODE_C</newseq>
      </port>
      <port type="P1_BUTTON7">
        <newseq type="standard">KEYCODE_F</newseq>
      </port>
      <port type="P1_BUTTON8">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON9">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON10">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON11">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON12">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON13">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON14">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON15">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P1_BUTTON16">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P2_JOYSTICK_UP">
        <newseq type="standard">KEYCODE_8PAD</newseq>
      </port>
      <port type="P2_JOYSTICK_DOWN">
        <newseq type="standard">KEYCODE_5PAD</newseq>
      </port>
      <port type="P2_JOYSTICK_LEFT">
        <newseq type="standard">KEYCODE_4PAD</newseq>
      </port>
      <port type="P2_JOYSTICK_RIGHT">
        <newseq type="standard">KEYCODE_6PAD</newseq>
      </port>
      <port type="P2_JOYSTICKRIGHT_UP">
        <newseq type="standard">KEYCODE_T</newseq>
      </port>
      <port type="P2_JOYSTICKRIGHT_DOWN">
        <newseq type="standard">KEYCODE_Y</newseq>
      </port>
      <port type="P2_JOYSTICKRIGHT_LEFT">
        <newseq type="standard">KEYCODE_U</newseq>
      </port>
      <port type="P2_JOYSTICKRIGHT_RIGHT">
        <newseq type="standard">KEYCODE_I</newseq>
      </port>
      <port type="P2_JOYSTICKLEFT_UP">
        <newseq type="standard">KEYCODE_8PAD</newseq>
      </port>
      <port type="P2_JOYSTICKLEFT_DOWN">
        <newseq type="standard">KEYCODE_5PAD</newseq>
      </port>
      <port type="P2_JOYSTICKLEFT_LEFT">
        <newseq type="standard">KEYCODE_4PAD</newseq>
      </port>
      <port type="P2_JOYSTICKLEFT_RIGHT">
        <newseq type="standard">KEYCODE_6PAD</newseq>
      </port>
      <port type="P2_BUTTON2">
        <newseq type="standard">KEYCODE_H OR JOYCODE_2_BUTTON1</newseq>
      </port>
      <port type="P2_BUTTON3">
        <newseq type="standard">KEYCODE_J</newseq>
      </port>
      <port type="P2_BUTTON4">
        <newseq type="standard">KEYCODE_B</newseq>
      </port>
      <port type="P2_BUTTON5">
        <newseq type="standard">KEYCODE_N</newseq>
      </port>
      <port type="P2_BUTTON6">
        <newseq type="standard">KEYCODE_M</newseq>
      </port>
      <port type="P2_BUTTON7">
        <newseq type="standard">KEYCODE_K</newseq>
      </port>
      <port type="P2_BUTTON8">
        <newseq type="standard">NONE</newseq>
      </port>
      <port type="P3_JOYSTICK_UP">
        <newseq type="standard">KEYCODE_Q</newseq>
      </port>
      <port type="P3_JOYSTICK_DOWN">
        <newseq type="standard">KEYCODE_W</newseq>
      </port>
      <port type="P3_JOYSTICK_LEFT">
        <newseq type="standard">KEYCODE_E</newseq>
      </port>
      <port type="P3_JOYSTICK_RIGHT">
        <newseq type="standard">KEYCODE_R</newseq>
      </port>
      <port type="P3_BUTTON1">
        <newseq type="standard">KEYCODE_1PAD</newseq>
      </port>
      <port type="P3_BUTTON2">
        <newseq type="standard">KEYCODE_2PAD</newseq>
      </port>
      <port type="P3_BUTTON3">
        <newseq type="standard">KEYCODE_3PAD</newseq>
      </port>
      <port type="P3_BUTTON4">
        <newseq type="standard">KEYCODE_0PAD</newseq>
      </port>
      <port type="P4_JOYSTICK_UP">
        <newseq type="standard">KEYCODE_T</newseq>
      </port>
      <port type="P4_JOYSTICK_DOWN">
        <newseq type="standard">KEYCODE_Y</newseq>
      </port>
      <port type="P4_JOYSTICK_LEFT">
        <newseq type="standard">KEYCODE_U</newseq>
      </port>
      <port type="P4_JOYSTICK_RIGHT">
        <newseq type="standard">KEYCODE_I</newseq>
      </port>
      <port type="P4_BUTTON1">
        <newseq type="standard">KEYCODE_SLASHPAD</newseq>
      </port>
      <port type="P4_BUTTON2">
        <newseq type="standard">KEYCODE_ASTERISK</newseq>
      </port>
      <port type="P4_BUTTON3">
        <newseq type="standard">KEYCODE_MINUSPAD</newseq>
      </port>
      <port type="P4_BUTTON4">
        <newseq type="standard">KEYCODE_PLUSPAD</newseq>
      </port>
      <port type="UI_CONFIGURE">
        <newseq type="standard">KEYCODE_5 KEYCODE_DELPAD</newseq>
      </port>
      <port type="UI_PAUSE">
        <newseq type="standard">KEYCODE_DELPAD</newseq>
      </port>
      <port type="P1_BUTTON1">
        <newseq type="standard">KEYCODE_A OR GUNCODE_2_BUTTON1</newseq>
      </port>
      <port type="P2_BUTTON1">
        <newseq type="standard">KEYCODE_G OR GUNCODE_5_BUTTON1</newseq>
      </port>
      <port type="P1_LIGHTGUN_X">
        <newseq type="standard">GUNCODE_2_XAXIS</newseq>
      </port>
      <port type="P1_LIGHTGUN_Y">
        <newseq type="standard">GUNCODE_2_YAXIS</newseq>
      </port>
      <port type="P2_LIGHTGUN_X">
        <newseq type="standard">GUNCODE_5_XAXIS</newseq>
      </port>
      <port type="P2_LIGHTGUN_Y">
        <newseq type="standard">GUNCODE_5_YAXIS</newseq>
      </port>
      <port type="P2_DIAL">
        <newseq type="standard">MOUSECODE_4_XAXIS</newseq>
      </port>
    </input>
  </system>
</mameconfig>

tverona

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 12
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #220 on: September 19, 2016, 01:34:47 pm »
FYI, I submitted a pull request to fix this issue in MAME itself - see http://forum.arcadecontrols.com/index.php/topic,151710.0.html. Take a look at the approach and let me know what you think.

ArcadeGuns

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 11
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #221 on: September 27, 2016, 08:10:12 pm »
We love your Controller Remap Program so much! We can't thank you enough for such a great contribution to the MAME community! To do our part, we created an easy to use GUI interface. It's fee to use and available to everyone! Now you can setup controllers in MAME in less than 5 minutes for up to 6 players. Enjoy!

http://www.arcadeguns.com/index.php?main_page=index&cPath=35_36&sort=20a&perPage=0


ArcadeBliss

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #222 on: September 29, 2016, 10:20:37 am »
We love your Controller Remap Program so much! We can't thank you enough for such a great contribution to the MAME community! To do our part, we created an easy to use GUI interface. It's fee to use and available to everyone! Now you can setup controllers in MAME in less than 5 minutes for up to 6 players. Enjoy!

http://www.arcadeguns.com/index.php?main_page=index&cPath=35_36&sort=20a&perPage=0


Awesome!

Sent from my Nexus 6P using Tapatalk


stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 872
  • It seemed like a good idea at the time....
    • Mago Arcade
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #223 on: September 29, 2016, 12:53:26 pm »
That does look good - a lot more user friendly than mine - cheers chaps - be interested to hear how it performs.

tverona

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 12
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #224 on: October 01, 2016, 03:57:50 am »
Hey all, MAME 0.178 now includes preliminary support for persistent controller ID mappings. This should help address controller mapping issues -  similar to ControllerRemap but built into MAME itself. If you're interested, check out the documentation @ [url]http://docs.mamedev.org/advanced/devicemap.html]http://docs.mamedev.org/advanced/devicemap.html

steveskalley

  • Trade Count: (0)
  • Jr. Member
  • **
  • Offline Offline
  • Posts: 3
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #225 on: October 10, 2016, 02:26:21 pm »
I wanted to give back, since i've pulled so much info from arcadecontrols in the past couple years! drventure and tverona have helped greatly to solve a problem i have with one of my machines that has 12 emulators, and 7 controllers that get reordered constantly..

Since drventure's configuration works only for MAME, I wrote a script which uses the output of your controllerRemap /list command to enumerate the joysticks, and get the directinput ID. it then goes through a file, replaces certain joystick identifiers with the directinput ID, and writes it out to the config file that the emulator exists. This can be a mame cfg, or any other emulator's .ini file.

0) use joyID to list change the device order to something expected. This usually sticks unless you add another controller, but games do not use it.. drVenture's app displays the controller with this identifier though!!
1) Save the below script as a vbs file in the same directory as controllerremap.exe
2) copy your emulators config file (i used a name like  replace.xxxxxxx so i could keep track of them easily)
3) find the controller names in controllerRemap list, and copy the identifying info. for this example i used ''SNES Controller', ID=5" and "'SNES Controller', ID=6"
4) in the copy of your emulators config, replace the joystick number with double brackets surrounding your unique information (ie. <<'SNES Controller', ID=5>>).

the script then goes through, pulls the current directinput ID from controllerRemap, and rewrites your .cfg or .ini file, replacing the controllers unique identifier with the DirectInput ID...
I run this at hyperspin startup, and works great!

I know its WAAY overcomplicated, and i might write a console app to take care of it instead of having to modify a script every..  but
if i did that, i would probably just find a way to grab the directInput IDs directly, without using controllerRemap /list..  and this way was quicker, since you have already done the legwork!



My Devices List
D:\Tools\Controller Remapper>ControllerRemap.exe /list

ControllerRemap Utility v0.0.11.0 - For Mame
(c) 2011 drventure Enterprises


Joystick Device List (Devices are in enumeration order) ...

   1.  'N64 Controller', ID=2
   2.  'NES Controller', ID=3
   3.  'SNES Controller', ID=6
   4.  'ATRAK Device #1', ID=7
   5.  'NES Controller', ID=4
   6.  'SNES Controller', ID=5
   7.  'N64 Controller', ID=1
   8.  'GP-Wiz40', ID=0

Mouse Device List (Devices are in enumeration order) ...

   1.  'HID#VID_047D_PID_1022#8_17f6d9fc_0_0000#'
   2.  'HID#VID_0409_PID_2433_MI_01_Col01#7_8e0c882_0_0000#'
   3.  'HID#VID_D209_PID_1601_MI_02#7_6f69e7b_0_0000#'

End of list


#############Start of script ################ (its ugly, i know, didn't have a lot of time to clean it up!)(might rewrite as console app)

Option Explicit
dim remappath
remappath = "ControllerRemap.exe"

Dim WshShell
Dim fso, file
Dim srcfile, destfile, strText

dim interested_control1
dim interested_control1_enum

dim interested_control2
dim interested_control2_enum

dim interested_control3
dim interested_control3_enum


'Create the object that is used to execute the command-line output.
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.CurrentDirectory = "D:\Tools\Controller Remapper"

'Set controller names to find in enumerator list. This should match what is in the sample file
interested_control1 = "GP"
interested_control2 = "'SNES Controller', ID=5'"
interested_control3 = "'SNES Controller', ID=6"

WshShell.Run "%comspec% /c " & remappath  & " /list > " & "controllerlist.out"
'Wscript.echo "Rewriting Configs.." & vbcrlf & "%comspec% /c " & remappath  & " /list > " & "controllerlist.out"

'Create the object that is used to create your destination file.
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set file = fso.OpenTextFile("D:\Tools\Controller Remapper\controllerlist.out", 1)
Dim strLine
do while not file.AtEndOfStream
     strLine = file.ReadLine()
     'Do something with the line
    'if instr(strLine, interested_control1) then wscript.echo strline
    if instr(strLine, interested_control1) then interested_control1_enum = left(trim(strLine), 1)
    if instr(strLine, interested_control2) then interested_control2_enum = left(trim(strLine), 1)
    if instr(strLine, interested_control3) then interested_control3_enum = left(trim(strLine), 1)
    'if instr(strLine, interested_control2) then wscript.echo interested_control2_enum
loop
file.Close
Set file = Nothing

'Open other files, loop through, and replace with enum
Set srcfile = fso.OpenTextFile("D:\Hyperspin\Emulators\MAME\174\cfg\replace.a2600.cfg", 1)
strText = srcfile.ReadAll
srcfile.Close
Set srcfile = Nothing

'Do all replacements needed
strText = replace(strText, "<<" & interested_control1 & ">>", interested_control1_enum)

'Write File Back
Set destfile = fso.OpenTextFile("D:\Hyperspin\Emulators\MAME\174\cfg\a2600.cfg", 2)
destfile.WriteLine(strText)
destfile.Close
Set destfile = Nothing


'SNES9x
Set srcfile = fso.OpenTextFile("D:\Hyperspin\Emulators\Snes9x\replace.snes9x.conf", 1)
strText = srcfile.ReadAll
srcfile.Close
Set srcfile = Nothing

'Do all replacements needed
strText = replace(strText, "<<" & interested_control2 & ">>", interested_control2_enum)
strText = replace(strText, "<<" & interested_control3 & ">>", interested_control3_enum)

'Write File Back
Set destfile = fso.OpenTextFile("D:\Hyperspin\Emulators\Snes9x\snes9x.conf", 2)
destfile.WriteLine(strText)
destfile.Close
Set destfile = Nothing


'Fusion
Set srcfile = fso.OpenTextFile("D:\Hyperspin\Emulators\Fusion364\replace.alien.fusion.ini", 1)
strText = srcfile.ReadAll
srcfile.Close
Set srcfile = Nothing

'Do all replacements needed
strText = replace(strText, "<<" & interested_control1 & ">>", interested_control1_enum+2)

'Write File Back
Set destfile = fso.OpenTextFile("D:\Hyperspin\Emulators\Fusion364\fusion.ini", 2)
destfile.WriteLine(strText)
destfile.Close
Set destfile = Nothing

alexportugal1212

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 32
  • I want to build my own arcade controls!
Re: New ControllerRemap utility, 7/11/13 update available (Version 0.0.11)
« Reply #226 on: January 31, 2017, 03:48:04 pm »
Does this work to retain light guns ids as well? ive tried but not results, thxs

  
 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31