Dual Ultrastik 360 with Dual Aimtrak Problem
-
Hello, first time poster here. So, here are my system specs.
PI3
Retropie 4.3
TWO Ultrastik plugged in USB hub
TWO Aimtrak plugged in USB hub
Keyboard in USB 1 on PI
Flash Drive in USB 2 on PI
Aimtrak light bar in USB hub
Externally powered USB hub in USB 0 on PIOK, so the root of the problem is, my system basically detects 4 controllers. And only the ones in ports 0 and 1 seem to work. See, I have been using just the stiks for several months now. NO PROBLEMS. they are assigned ID 1 and ID 2 using the Ultimark Software. The system always found them on ports 0 and 1. So a couple days ago I bought 2 Aimtrak guns. Originally I set their IDs to 3 and 4, just in case they conflicted with the stiks. I tried and tried but could never get them to work in a game, using Advancemame 1.4. Yes, I edited the setup files, Yes I ran the handy utility in the toolkit. Yes, they work perfectly in GUNCONF. Yes, they are setup an mice. Sorry, not trying to be a jerk, just trying to eliminate responses to try those things.
I could get the buttons to be recognized by using TAB and programming them, but they would never move the cross hairs. I tried changing their IDs and that never did anything. It wasnt until I removed my stiks and rebooted then they both started working. YES, I had rebooted dozens of times before. I was finally happy. The guns were working and the stiks were working, or so I thought. It wasnt until I tried to play a regular NES game that I found the stiks were NOT working. They do work in retropie / ES menus, but not once you start an emulator. I could make them work in MAME emulators using TAB and programming them.
What seems to be happening, is, that all the emulators are looking at ports 0 and 1 for players 1 and 2 respectively. So while I was playing gun games, they worked because they were on ports 0 and 1 since I rebooted with them plugged in first. Note, If i remove everything and just plug in one device, it assigns it to port 0 regardless of which actual USB port it is plugged into. The next device to be plugged in gets port 1, and so on. But back to the problem. If, my stiks are in port 0 and 1, making them work with NES and other emulators the guns wont work cause, remember player one looks at port 0, doesnt care what is plugged in there. Player two, port 1, three, port 2, and four, port 3.
So, the way I see it, I need one of the following solutions: (I am also open to take suggestions)- Plug in the stiks first, taking ports 0 and 1, making NES and other emulators work, and the guns second, taking ports 2 and 3. Somehow program AdvanceMAME 1.4 to look at ports 2 and 3 for player 1 and 2 control, but only in gun based games. (could be in all games because I can use TAB to program other games to see stiks)
- Plug the guns in first, taking ports 0 and 1, and sticks second, 2 and 3. Somehow tell all other emulators (Retroarch) to look at ports 2 and 3 for player 1 and 2 control. (as I understand it, Retroarch holds the control settings for ES and most other emulators such as NES, SNES, N64.)
Any other advise would be greatly appreciated.
THANKS -
@tsgeoman I think it is OK to troubleshoot one thing at a time, as advancemame settings will never conflict with any of the retroarch stuff.
I think we need to see your advancemame1.4 .rc file. Pastebin perhaps? That should have all of the mapping and device details, and you should be able to specify which devices are mapped to Player1 or two etc.
-
here is the file advmame-1.4.rc
debug_crash no
debug_rawsound no
debug_speedmark no
device_alsa_device default
device_alsa_mixer channel
device_color_bgr15 yes
device_color_bgr16 yes
device_color_bgr24 yes
device_color_bgr32 yes
device_color_bgr8 yes
device_color_palette8 yes
device_color_yuy2 yes
device_joystick auto
device_keyboard raw
device_mouse raw
device_raw_firstkeyhack no
device_raw_mousedev[0] /dev/input/mouse0
device_raw_mousedev[1] /dev/input/mouse1
device_raw_mousedev[2] /dev/input/mouse2
device_raw_mousedev[3] /dev/input/mouse3
device_raw_mousetype[0] ps2
device_raw_mousetype[1] ps2
device_raw_mousetype[2] ps2
device_raw_mousetype[3] ps2
device_sdl_samples 512
device_sound alsa
device_video fb
device_video_cursor off
device_video_doublescan yes
device_video_fastchange no
device_video_interlace yes
device_video_output auto
device_video_overlaysize auto
device_video_singlescan yes
dir_artwork /home/pi/RetroPie/roms/mame-advmame/artwork
dir_diff /home/pi/RetroPie/roms/mame-advmame/diff
dir_hi /home/pi/RetroPie/roms/mame-advmame/hi
dir_image /home/pi/RetroPie/roms/mame-advmame
dir_inp /home/pi/RetroPie/roms/mame-advmame/inp
dir_memcard /home/pi/RetroPie/roms/mame-advmame/memcard
dir_nvram /home/pi/RetroPie/roms/mame-advmame/nvram
dir_rom /home/pi/RetroPie/roms/mame-advmame:/home/pi/RetroPie/roms/arcade
dir_sample /home/pi/RetroPie/roms/mame-advmame/samples
dir_snap /home/pi/RetroPie/roms/mame-advmame/snap
dir_sta /home/pi/RetroPie/roms/mame-advmame/nvram
display_adjust none
display_antialias yes
display_artwork_backdrop yes
display_artwork_bezel no
display_artwork_crop yes
display_artwork_overlay yes
display_aspectx 4
display_aspecty 3
display_beam 1
display_brightness 1
display_buffer no
display_color auto
display_expand 1
display_flicker 0
display_flipx no
display_flipy no
display_frameskip auto
display_gamma 1
display_height 480
display_intensity 1.5
display_interlaceeffect none
display_magnify 1
display_magnifysize 640
display_mode auto
display_pausebrightness 1
display_resize integer
display_resizeeffect none
display_restore yes
display_rgbeffect none
display_rol no
display_ror no
display_scanlines no
display_skipcolumns auto
display_skiplines auto
display_translucency yes
display_vsync no
display_width 640
include
input_hotkey yes
input_idleexit 0
input_map[coin1] joystick_button[0,7]
input_map[coin2] joystick_button[1,7]
input_map[coin5] auto
input_map[coin6] auto
input_map[coin7] auto
input_map[coin8] auto
input_map[event10] auto
input_map[event11] auto
input_map[event12] auto
input_map[event13] auto
input_map[event14] auto
input_map[event1] auto
input_map[event2] auto
input_map[event3] auto
input_map[event4] auto
input_map[event5] auto
input_map[event6] auto
input_map[event7] auto
input_map[event8] auto
input_map[event9] auto
input_map[p1_dialx] auto
input_map[p1_dialy] auto
input_map[p1_lightgunx] auto
input_map[p1_lightguny] auto
input_map[p1_mousex] auto
input_map[p1_mousey] auto
input_map[p1_paddlex] auto
input_map[p1_paddley] auto
input_map[p1_pedalbrake] auto
input_map[p1_pedalgas] auto
input_map[p1_pedalother] auto
input_map[p1_stickx] auto
input_map[p1_sticky] auto
input_map[p1_stickz] auto
input_map[p1_trackballx] auto
input_map[p1_trackbally] auto
input_map[p2_dialx] auto
input_map[p2_dialy] auto
input_map[p2_lightgunx] auto
input_map[p2_lightguny] auto
input_map[p2_mousex] auto
input_map[p2_mousey] auto
input_map[p2_paddlex] auto
input_map[p2_paddley] auto
input_map[p2_pedalbrake] auto
input_map[p2_pedalgas] auto
input_map[p2_pedalother] auto
input_map[p2_stickx] auto
input_map[p2_sticky] auto
input_map[p2_stickz] auto
input_map[p2_trackballx] auto
input_map[p2_trackbally] auto
input_map[p3_dialx] auto
input_map[p3_dialy] auto
input_map[p3_lightgunx] auto
input_map[p3_lightguny] auto
input_map[p3_mahjong_a] auto
input_map[p3_mahjong_b] auto
input_map[p3_mahjong_bet] auto
input_map[p3_mahjong_c] auto
input_map[p3_mahjong_chance] auto
input_map[p3_mahjong_chi] auto
input_map[p3_mahjong_d] auto
input_map[p3_mahjong_double_up] auto
input_map[p3_mahjong_e] auto
input_map[p3_mahjong_f] auto
input_map[p3_mahjong_flip_flop] auto
input_map[p3_mahjong_g] auto
input_map[p3_mahjong_h] auto
input_map[p3_mahjong_i] auto
input_map[p3_mahjong_j] auto
input_map[p3_mahjong_k] auto
input_map[p3_mahjong_kan] auto
input_map[p3_mahjong_l] auto
input_map[p3_mahjong_m] auto
input_map[p3_mahjong_n] auto
input_map[p3_mahjong_pon] auto
input_map[p3_mahjong_reach] auto
input_map[p3_mahjong_ron] auto
input_map[p3_mahjong_score] auto
input_map[p3_mousex] auto
input_map[p3_mousey] auto
input_map[p3_paddlex] auto
input_map[p3_paddley] auto
input_map[p3_pedalbrake] auto
input_map[p3_pedalgas] auto
input_map[p3_pedalother] auto
input_map[p3_stickx] auto
input_map[p3_sticky] auto
input_map[p3_stickz] auto
input_map[p3_trackballx] auto
input_map[p3_trackbally] auto
input_map[p4_dialx] auto
input_map[p4_dialy] auto
input_map[p4_lightgunx] auto
input_map[p4_lightguny] auto
input_map[p4_mahjong_a] auto
input_map[p4_mahjong_b] auto
input_map[p4_mahjong_bet] auto
input_map[p4_mahjong_c] auto
input_map[p4_mahjong_chance] auto
input_map[p4_mahjong_chi] auto
input_map[p4_mahjong_d] auto
input_map[p4_mahjong_double_up] auto
input_map[p4_mahjong_e] auto
input_map[p4_mahjong_f] auto
input_map[p4_mahjong_flip_flop] auto
input_map[p4_mahjong_g] auto
input_map[p4_mahjong_h] auto
input_map[p4_mahjong_i] auto
input_map[p4_mahjong_j] auto
input_map[p4_mahjong_k] auto
input_map[p4_mahjong_kan] auto
input_map[p4_mahjong_l] auto
input_map[p4_mahjong_m] auto
input_map[p4_mahjong_n] auto
input_map[p4_mahjong_pon] auto
input_map[p4_mahjong_reach] auto
input_map[p4_mahjong_ron] auto
input_map[p4_mahjong_score] auto
input_map[p4_mousex] auto
input_map[p4_mousey] auto
input_map[p4_paddlex] auto
input_map[p4_paddley] auto
input_map[p4_pedalbrake] auto
input_map[p4_pedalgas] auto
input_map[p4_pedalother] auto
input_map[p4_stickx] auto
input_map[p4_sticky] auto
input_map[p4_stickz] auto
input_map[p4_trackballx] auto
input_map[p4_trackbally] auto
input_map[safequit] auto
input_map[service_coin5] auto
input_map[service_coin6] auto
input_map[service_coin7] auto
input_map[service_coin8] auto
input_map[start1] joystick_button[0,0]
input_map[start2] joystick_button[1,0]
input_map[ui_toggle_ui] auto
input_steadykey no
lcd_server none
lcd_speed 4
lcd_timeout 500
misc_bios default
misc_cheat yes
misc_cheatfile cheat.dat
misc_difficulty none
misc_eventdebug no
misc_eventfile event.dat
misc_freeplay no
misc_hiscorefile hiscore.dat
misc_lang none
misc_languagefile english.lng
misc_mutedemo no
misc_quiet yes
misc_safequit yes
misc_smp no
misc_timetorun 0
record_sound yes
record_sound_time 15
record_video yes
record_video_interleave 2
record_video_time 15
script_coin1
script_coin2
script_coin3
script_coin4
script_emulation
script_event1
script_event10
script_event11
script_event12
script_event13
script_event14
script_event2
script_event3
script_event4
script_event5
script_event6
script_event7
script_event8
script_event9
script_led1 on(kdb, 0b1); wait(!event()); off(kdb, 0b1);
script_led2 on(kdb, 0b10); wait(!event()); off(kdb, 0b10);
script_led3
script_play
script_safequit
script_start1
script_start2
script_start3
script_start4
script_turbo while (event()) { toggle(kdb, 0b100); delay(100); } off(kdb, 0b100);
script_video wait(!event()); set(kdb, 0);
sound_adjust auto
sound_equalizer_highvolume 0
sound_equalizer_lowvolume 0
sound_equalizer_midvolume 0
sound_latency 0.05
sound_mode auto
sound_normalize no
sound_samplerate 44100
sound_samples yes
sound_volume -3
sync_fps auto
sync_resample auto
sync_speed 1
sync_startuptime auto
sync_turbospeed 3
ui_color[help_other] 000000 808080
ui_color[help_p1] 000000 ffff00
ui_color[help_p2] 000000 00ff00
ui_color[help_p3] 000000 ff0000
ui_color[help_p4] 000000 00ffff
ui_color[interface] 000000 ffffff
ui_color[select] 000000 afffff
ui_color[tag] 247ef0 ffffff
ui_font auto
ui_fontsize auto
ui_helpimage auto
ui_translucency 0.8
input_map[p1_up] joystick_digital[0,0,1,1]
input_map[p1_down] joystick_digital[0,0,1,0]
input_map[p1_left] joystick_digital[0,0,0,1]
input_map[p1_right] joystick_digital[0,0,0,0]
input_map[p1_doubleright_up]
input_map[p1_doubleright_down]
input_map[p1_doubleright_left]
input_map[p1_doubleright_right]
input_map[p1_doubleleft_up]
input_map[p1_doubleleft_down]
input_map[p1_doubleleft_left]
input_map[p1_doubleleft_right]
input_map[p1_button1] joystick_button[0,1]
input_map[p1_button2] joystick_button[0,3]
input_map[p1_button3] joystick_button[0,2]
input_map[p1_button4] joystick_button[0,4]
input_map[p1_button5] joystick_button[0,5]
input_map[p1_button6] joystick_button[0,6]
input_map[p1_button7]
input_map[p1_button8]
input_map[p1_button9]
input_map[p1_button10]
input_map[p2_up] joystick_digital[1,0,1,1]
input_map[p2_down] joystick_digital[1,0,1,0]
input_map[p2_left] joystick_digital[1,0,0,1]
input_map[p2_right] joystick_digital[1,0,0,0]
input_map[p2_button1] joystick_button[1,1]
input_map[p2_button2] joystick_button[1,3]
input_map[p2_button3] joystick_button[1,2]
input_map[p2_button4] joystick_button[1,4]
input_map[p2_button5] joystick_button[1,5]
input_map[p2_button6] joystick_button[1,6]
input_map[p2_button7]
input_map[p2_button8]
input_map[p2_button9]
input_map[p2_button10]
area51/input_map[p1_button1] joystick_button[2,0] mouse_button[0,0]
pc_duckh/input_map[p1_button1] joystick_button[3,1] mouse_button[2,1] or joystick_digital[3,0,0,1] joystick_digital[3,0,1,0] joystick_digital[3,0,1,1] joystick_button[3,0] mouse_button[2,0] not joystick_digital[3,0,0,1] joystick_digital[3,0,1,0] joystick_digital[3,0,1,1]
pc_duckh/input_map[p1_button2] joystick_digital[3,0,0,0] joystick_button[3,1] mouse_button[2,1]
pc_duckh/input_map[start1] joystick_button[1,1]
pc_duckh/input_map[start2] joystick_button[1,0]
duckhunt/input_map[p1_lightgun_left]
duckhunt/input_map[p1_lightgun_right]
duckhunt/input_map[p1_lightgun_up]
duckhunt/input_map[p1_lightgun_down]
le2/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
le2/input_map[p1_button3] mouse_button[0,1] joystick_button[5,1]
input_map[ui_toggle_crosshair] joystick_button[1,4]
duckhunt/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
area51/input_map[start1] joystick_button[2,1] mouse_button[0,1]
area51/input_map[p1_lightgun_left]
area51/input_map[p1_lightgun_right]
area51/input_map[p1_lightgun_up]
area51/input_map[p1_lightgun_down]
area51/input_map[p2_lightgun_left]
area51/input_map[p2_lightgun_right]
area51/input_map[p2_lightgun_up]
area51/input_map[p2_lightgun_down]
area51/input_map[p2_button1] mouse_button[1,0] joystick_button[4,0]
area51/input_map[start2] mouse_button[1,2] joystick_button[4,2]
pc_wgnmn/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
pc_wgnmn/input_map[p1_button2] mouse_button[0,1] joystick_button[5,1]
pc_wgnmn/input_map[start1] mouse_button[0,2] joystick_button[5,2]
pc_wgnmn/input_map[start2] joystick_button[0,0]
hogalley/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
hogalley/input_map[p1_lightgun_left]
hogalley/input_map[p1_lightgun_right]
hogalley/input_map[p1_lightgun_up]
hogalley/input_map[p1_lightgun_down]
timecris/input_map[p1_lightgun_left]
timecris/input_map[p1_lightgun_right]
timecris/input_map[p1_lightgun_up]
timecris/input_map[p1_lightgun_down]
timecris/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
timecris/input_map[p1_button2] mouse_button[0,1] joystick_button[5,1]
revx/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
revx/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
revx/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
revx/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
policetr/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
policetr/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
ptblank2/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
ptblank2/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
ptblank/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
ptblank/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
pirates/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
pirates/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
pirates/input_map[p1_button3] mouse_button[0,1] joystick_button[5,1]
pirates/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
pirates/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
pirates/input_map[p2_button3] joystick_button[3,1] mouse_button[1,1]
opwolf3/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
opwolf3/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
opwolf3/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
opwolf3/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
opwolfu/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
opwolfu/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
othunder/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
othunder/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
othunder/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
othunder/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
le2/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
le2/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
le2/input_map[p2_button3] joystick_button[3,1] mouse_button[1,1]
lethalen/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
lethalen/input_map[p2_button2] joystick_button[3,0] mouse_button[1,0]
lghost/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
lghost/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
jpark/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
jpark/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
xtheball/input_map[coin1] mouse_button[0,2] joystick_button[5,2]
xtheball/input_map[coin3] mouse_button[0,1] joystick_button[5,1]
xtheball/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
g13knd/input_map[p1_button3] mouse_button[0,1] joystick_button[5,1]
g13knd/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
g13knd/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
cryptklr/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
cryptklr/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
cryptklr/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
cryptklr/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
a51mxr3k/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
a51mxr3k/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
alien3/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
alien3/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
alien3/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
alien3/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
term2/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
term2/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
term2/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
term2/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2] -
I think I see what may fix it. If I take
device_raw_mousedev[0] /dev/input/mouse0
device_raw_mousedev[1] /dev/input/mouse1and make it
device_raw_mousedev[0] /dev/input/mouse2
device_raw_mousedev[1] /dev/input/mouse3
It should look at the device on port 2 and 3 for control of 0 and 1 -
IT WORKED!!! I did the edit like I posted above and that fixed the problem. My stiks are now on port 0 and 1, controlling all emulators players 1 and 2. And the guns are on ports 2 and 3, but with that edit, are controlling players 1 and 2. Thanks for replying. I must have looked at that config file a dozen times and never made the connection that that is where it was assigning the controllers.
THANKS -
@tsgeoman Hey, glad I could get you on the right track. That's exactly where I was going to look. Advmame has a fantastically versatile matrix of possibilities when it comes to mapping devices this way. So long as you dont plug in other mouse devices, you should be good to go.
-
@tsgeoman By the way, it is customary to put long pastes like into pastebin.com or similar and simply link to that. for smaller code pastes, you should format them using backticks ``` above and below
-
@caver01 just about to say the same. Scrolling through pages of crap is no fun.
-
@jonnykesh I wouldn't call it crap. I asked him to paste the .rc file. I just wasn't maybe as clear as I needed to be about how to do so.
-
@caver01 ok. I was lazy in my wording. It doesn't make me want to read it. It's obviously / hopefully the right log file.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.