Spy Hunter
-
@mediamogul Thanks for mentioning MCR-2, I've updated the github issue. If you have any more details than you see over in that issue please feel free to post on github. One day sooner or later this one will get fixed. Some bugfixes are slow burns.
-
@mediamogul said in Spy Hunter:
Also, the infamous 'Separate Ways (Worlds Apart)' tape sample isn't emulated
Great. Now that song is stuck in my head all day, but at least in my head it sounds fantastic, not a bad sample of a bad tape.
-
One day sooner or later this one will get fixed.
That'll be a real shot in the arm for Mame2003. 'Spy Hunter', 'Tapper' and the Tron games alone will be worth the effort.
Great. Now that song is stuck in my head all day, but at least in my head it sounds fantastic, not a bad sample of a bad tape.
Ha! I love that song. I got to see Journey live sometime last year. It's a personal nitpick of mine that MAME uses a very clean sample that likely comes from a CD. I like these things to be as authentic as possible and it just sounds too perfect. Also the real machine would play the tape to the end and rewind when finished.
If the player died somewhere in the middle of the song, the next player to beat the game would hear the song pick up where it left off. Under Mame emulation, the song always starts at the beginning. The task of keeping fans from getting backstage is a real challenge too, so I doubt too many people made it through the whole track during game play.
Also, it's the first game to use digitized likenesses that would later become popular in games like 'Pit Fighter' and 'Mortal Kombat'. The tech was originally tested in arcades as a means to photograph a person's face to put next to their initials and high score. They scrapped the idea when they saw that teenagers were flashing the camera.
-
@mediamogul That's some nice trivia to accompany what is usually a novelty title in my gamelist. Now I will have a few more things to say about this one. Thanks!
As for the sample quality, can we simply bust it open and throw some processing at it to make it sound more authentic?
-
@caver01 said in Spy Hunter:
That's some nice trivia to accompany what is usually a novelty title in my gamelist.
I'll be perfectly honest; I personally don't think it's that great a game, but it's considered to be an arcade classic none the less.
As for the sample quality, can we simply bust it open and throw some processing at it to make it sound more authentic?
Yes sir we can. As a wild coincidence, I'm processing audio for a soundtrack to get a similar effect this very minute. I might as well go ahead and alter the file while I'm here.
Edit: I hope it doesn't run a hash check on the sample file though. I guess it wouldn't work if that were the case.
-
@mediamogul said in Spy Hunter:
I hope it doesn't run a hash check on the sample file though. I guess it wouldn't work if that were the case.
I am going to venture a guess that it doesn't. IIR there are some entertaining examples of replacement sample files out there. For example, I think there is a Star Trek set that has alternate bleeps, theme song and computer voiceover. I got that to work in Advmame.
-
@mediamogul so I have been reading up on your xboxdrv tutorial. Quite a lot to go over but I think I am wrapping my head around it. I have a runcommand-onstart.sh and runcommand-onend.sh in the specified folder and have chmod +x'd them so they have the x attribute.
What I am not 100% on is if there is some other step I am to do in order for retropie to run those shell commands on the start and end of every game.
I setup a config for pacman.zip,mspacman.zip, and frogger.zip with a basic360 controller setup and the $fourway option but I am not sure that did anything.
I also tried a similar mapping for spyhunt.zip as yours but the normal 360 absmap and keymap entries. Again it seems like the input is working exactly as it had before. Basically it seems like the .sh files are not being executed at all.
My runcommand-onstart.sh for illustration
#!/bin/sh ## Uncomment one or all of the following if you need to find some information about the emulator or roms ## Name of the emulator #echo $1 >> /dev/shm/runcommand.log ## Name of the software used for running the emulation #echo $2 >> /dev/shm/runcommand.log ## Name of the rom #echo $3 >> /dev/shm/runcommand.log ##Executed command line #echo $4 >> /dev/shm/runcommand.log ### The FUN begins #Get ROM name striping full path rom="${3##*/}" ### Set variables for your joypad and emulator ### Basic Configuraions - Standard controller mappings basic360="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv >/dev/null \ --evdev /dev/input/event0 \ --silent \ --detach-kernel-driver \ --force-feedback \ --mimic-xpad \ --dpad-as-button \ --trigger-as-button \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RY=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_SOUTH=a,BTN_EAST=b,BTN_NORTH=x,BTN_WEST=y,BTN_THUMBL=tl,BTN_THUMBR=tr,BTN_TL=lb,BTN_TR=rb,BTN_TL2=lt,BTN_TR2=rt,BTN_SELECT=back,BTN_START=start,BTN_MODE=guide \ --calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767" basicPS3="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv >/dev/null \ --evdev /dev/input/event2 \ --silent \ --detach-kernel-driver \ --force-feedback \ --mimic-xpad \ --dpad-as-button \ --trigger-as-button \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RX=y2 \ --evdev-keymap KEY_#302=a,KEY_#301=b,BTN_DEAD=x,KEY_#300=y,BTN_THUMB=tl,BTN_THUMB2=tr,BTN_BASE5=lb,BTN_BASE6=rb,BTN_BASE3=lt,BTN_BASE4=rt,BTN_TRIGGER=back,BTN_TOP=start,BTN_SOUTH=guide,BTN_TOP2=du,BTN_PINKIE=dr,BTN_BASE=dd,BTN_BASE2=dl \ --calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767" spyhuntEXAMPLE="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.2:1.0-event-joystick \ --detach-kernel-driver \ --force-feedback \ --dpad-as-button \ --trigger-as-button \ --deadzone-trigger 15% \ --deadzone 4000 \ --device-name Logitech_Rumblepad_2 \ --silent \ --four-way-restrictor \ --axismap -Y1=Y1,-Y2=Y2 \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y,BTN_BASE3=back,BTN_BASE4=start,BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr,BTN_BASE=lt,BTN_BASE2=rt \ --ui-axismap x1=KEY_LEFT:KEY_RIGHT,y1=REL_Y:15,X2=KEY_1:KEY_2,Y2=KEY_3:KEY_4 \ --ui-buttonmap a=KEY_A,b=KEY_B,x=KEY_X,y=KEY_Y,lb=KEY_L,rb=KEY_R,lt=KEY_D,rt=KEY_F,tl=KEY_C,tr=KEY_V,du=KEY_UP,dd=KEY_DOWN,dl=KEY_LEFT,dr=KEY_RIGHT,start=KEY_T,back=KEY_E \ --ui-buttonmap guide=void" spyhunt360="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \ --evdev /dev/input/event0 \ --detach-kernel-driver \ --force-feedback \ --dpad-as-button \ --trigger-as-button \ --deadzone-trigger 15% \ --deadzone 4000 \ --silent \ --four-way-restrictor \ --axismap -Y1=Y1,-Y2=Y2 \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RY=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_SOUTH=a,BTN_EAST=b,BTN_NORTH=x,BTN_WEST=y,BTN_THUMBL=tl,BTN_THUMBR=tr,BTN_TL=lb,BTN_TR=rb,BTN_TL2=lt,BTN_TR2=rt,BTN_SELECT=back,BTN_START=start,BTN_MODE=guide \ --ui-axismap x1=KEY_LEFT:KEY_RIGHT,y1=REL_Y:15,X2=KEY_1:KEY_2,Y2=KEY_3:KEY_4 \ --ui-buttonmap a=KEY_A,b=KEY_B,x=KEY_X,y=KEY_Y,lb=KEY_L,rb=KEY_R,lt=KEY_D,rt=KEY_F,tl=KEY_C,tr=KEY_V,du=KEY_UP,dd=KEY_DOWN,dl=KEY_LEFT,dr=KEY_RIGHT,start=KEY_T,back=KEY_E \ --ui-buttonmap guide=void" ### Extended Configurations ### Specific emulator configuration or any other parameters you will need only for some emulators scummVM="--axismap -Y1=Y1,-Y2=Y2 \ --ui-axismap x1=REL_X:10,y1=REL_Y:10 \ --ui-buttonmap a=BTN_LEFT,b=BTN_RIGHT,start=KEY_F5,back=KEY_ESC \ --ui-buttonmap guide=void,x=void,y=void,lb=void,rb=void,tl=void,tr=void,lt=void,rt=void,back=void \ --ui-axismap x2=void" amiga="--axismap -Y1=Y1,-Y2=Y2 \ --ui-axismap x2=REL_X:1,y2=REL_Y:1 \ --ui-axismap x1=KEY_LEFT:KEY_RIGHT,y1=KEY_DOWN:KEY_UP \ --ui-buttonmap du=KEY_UP,dd=KEY_DOWN,dl=KEY_LEFT,dr=KEY_RIGHT \ --ui-buttonmap lt=BTN_LEFT,rt=BTN_RIGHT,start=KEY_ESC,back=KEY_LEFTCTRL,y=KEY_SPACE,a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_LEFTSHIFT \ --ui-buttonmap guide=void,tl=void,lt=void,rt=void,back=void \ --ui-axismap x2=void" fourway="--four-way-restrictor" invert="--ui-buttonmap du=KEY_DOWN,dd=KEY_UP" ### Kill Command xboxkill="sudo killall >/dev/null xboxdrv" ### Execute the driver with the configuration you need # $1 is the name of the emulation, not the name of the software used # it is intellivision not jzintv case $1 in mame-libretro) ;; arcade) case $rom in "spyhunt.zip") # Spy Hunter $xboxkill joycommand="$spyhunt360 &" eval $joycommand ;; "pacman.zip"|"mspacman.zip"|"frogger.zip") # Pac-Man Like (4 way) $xboxkill joycommand="$basic360 $fourway &" eval $joycommand ;; *) # Configuration for every other ROMs on this emulator $xboxkill joycommand="$basic360 &" eval $joycommand ;; esac ;; daphne) ;; scummvm) $xboxkill joycommand="$basicPS3 $scummVM &" eval $joycommand ;; amiga) $xboxkill joycommand="$basicPS3 $amiga &" eval $joycommand ;; intellivision) ;; esac
-
Actually it appears I may be running into issues with text file carraige returns. Even though I have FileZilla set to transfer anything with .sh and .log extensions as ASCII it appears to not be properly correcting the carraige return styles between linux and windows.
Seeing a bunch of stuff like this in the log
/opt/retropie/configs/all/runcommand-onstart.sh: line 5: $'\r': command not found /opt/retropie/configs/all/runcommand-onstart.sh: line 107: syntax error near unexpected token `$'in\r''
-
@alturis said in Spy Hunter:
Basically it seems like the .sh files are not being executed at all.
One pretty effective way to troubleshoot is to take the xboxdrv launch command and run it by itself from the command line. The software will bark some pretty specific errors that'll let you know what's going on.
Actually it appears I may be running into issues with text file carraige returns. Even though I have FileZilla set to transfer anything with .sh and .log extensions as ASCII it appears to not be properly correcting the carraige return styles between linux and windows.
This is a pretty common issue when moving text files around from Windows to Linux. Try using Notepad++ or another text application that supports utf-8 text encoding. That should solve those carriage returns.
-
@mediamogul Well I was able to get around the CR/LF issue by using WinSCP instead of FileZilla for now.
Thus far I have gotten as far as it appearing to have executed the shell script without any errors other than the killall xboxdrv logging a complaint about there being no processes running.
The end result is that I get no input response at all, however, when trying the basic test case of pacman.zip. So going to have to do some more experimentation to figure out how I have the setup working wrong and/or re-read your tutorial.
To clarify, I am using an Xbox 360 Controller via wireless bluetooth. So I am not looking to change absmap or keymap just game button mappings. Following your tutorial, though, I am trying to essentially map the Xbox 360 buttons as their default ones and then adjust the mappings differently per game.
-
other than the killall xboxdrv logging a complaint about there being no processes running.
Well, that says it was never running, but it's unusual that xboxdrv wasn't throwing any errors. When you tried launching it directly from the command line, did you have
> /dev/null 2>&1
in the command? If so, make sure you remove it for troubleshooting purposes. -
@alturis I've got code a little bit similar to your's, but I'm not sure you can have 3 options eg spyhunter, then pacman then *. I'd simplify it first with 2 options, test it and, once that's working, then try 3 eg try:
arcade) case $rom in "spyhunt.zip") # Spy Hunter $xboxkill joycommand="$spyhunt360 &" eval $joycommand ;; *) # Configuration for every other ROMs on this emulator $xboxkill joycommand="$basic360 &" eval $joycommand ;; esac
The code above is very similar to what I have and it works well.
-
@spud11 Hmm... Thanks for the suggestion. I am no unix shell expert in any sense of the word but I am thinking that is not likely the issue. It does appear to actually execute the xboxdrv driver as I end up with no input. So I think my problem is in the actual options for the command. I am working on adding some more logging to wipe more of the dirt off the window and see whats going on so to speak.
Yeah. Confirmed by adding info to the log
echo "joycommand:" >> /dev/shm/runcommand.log echo $joycommand >> /dev/shm/runcommand.log
Outputs this when running mspacman.zip:
joycommand: sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.4:1.0-event-joystick --silent --detach-kernel-driver --force-feedback --mimic-xpad --dpad-as-button --trigger-as-button --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RY=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --evdev-keymap BTN_SOUTH=a,BTN_EAST=b,BTN_NORTH=x,BTN_WEST=y,BTN_THUMBL=tl,BTN_THUMBR=tr,BTN_TL=lb,BTN_TR=rb,BTN_TL2=lt,BTN_TR2=rt,BTN_SELECT=back,BTN_START=start,BTN_MODE=guide --calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767 --four-way-restrictor &
-
Ok. So I think it is actually working. But because it is registering it as a new controller rather than stomping my existing controller it ends up that RetroArch is still listening to my original controller setup which has now been redirected as a new one (event3) and ends up getting no input at all.
xboxdrv 0.8.8 - http://pingus.seul.org/~grumbel/xboxdrv/ Copyright © 2008-2011 Ingo Ruhnke <grumbel@gmail.com> Licensed under GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details. Your Xbox/Xbox360 controller should now be available as: /dev/input/js1 /dev/input/event3 Press Ctrl-C to quit RT=start,BTN_MODE=guide --calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767 --four-way-restrictor &
-
@mediamogul I tried to solve that by following the tutorial on swapping player joypad assignments. I created a retroarch.cfg_default and retroarch.cfg_xboxdrv and added lines to the shell script to rm retroarch.cfg and cp one or the other in its place selectively based on the same logic.
But I think I am still missing some piece to this puzzle.
My 360 controller is normally event0 but after running the xboxdrv it still shows its registering it as event3Your Xbox/Xbox360 controller should now be available as: /dev/input/js1 /dev/input/event3
I am thinking the missing piece is getting retroarch to listen to event3 at all.
retroarch.cfg_default
# Settings made here will only override settings in the global retroarch.cfg if placed above the #include line input_remapping_directory = "/opt/retropie/configs/arcade/" #include "/opt/retropie/configs/all/retroarch.cfg"
retroarch.cfg_xboxdrv
# Settings made here will only override settings in the global retroarch.cfg if placed above the #include line input_remapping_directory = "/opt/retropie/configs/arcade/" input_player1_joypad_index = "1" input_player2_joypad_index = "0" #input_player2_analog_dpad_mode = 1 #include "/opt/retropie/configs/all/retroarch.cfg"
-
-
@meleu / @mediamogul I am all ears!
I was referring to all the info on how to setup xboxdrv here:
https://github.com/RetroPie/RetroPie-Setup/wiki/Universal-Controller-Calibration-&-Mapping-Using-xboxdrvActually I looked up what you are referring to and I think that would be a bit over the top for what I am looking to do.
https://github.com/meleu/RetroPie-joystick-selectionOne of the things that is important to me with this setup is that when you select a game it would "just work" without popping up any dialogs or showing the retropie "dos" looking dialogs etc.
So ultimately any solution I have on it I would want it to just detect that a certain game is running and setup the controls in a way that makes the best sense for that title and not require the player to see any of this going on.
-
@spud11 said in Spy Hunter:
The code above is very similar to what I have and it works well.
Would you mind posting the exact syntax of your xboxdrv parameters?
-
@alturis I have 4 DragonRise usb joysticks. I've just copied Player 1's input below for Advance Mame (but I have similar setups for FBA and Mame 2003). Each button I have corresponds to a key on the keyboard. In Mame, I pressed TAB and allocated keys to up/down/left/right etc. Those keys correspond to the keys allocated in xboxdrv:
### To exit AdvMame automatically, I've created a macro in /opt/retropie/configs/all and mapped back+rt to back+rt=macro:/opt/configs/all/advmame_exit.macro . I've made this file executable. ### The contents of this file are: ### send KEY_ESC 1 ### wait 50 ### send KEY_DOWN 1 ### wait 50 ### send KEY_ENTER 1 Player1_AdvMame_Sim="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \ --silent \ --detach-kernel-driver \ --deadzone=4000 \ --deadzone-trigger 15% \ --force-feedback \ --mimic-xpad \ --trigger-as-button \ --ui-buttonmap tl=void,tr=void,guide=void \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \ --device-name "Player_1" \ --evdev-absmap ABS_X=y1,ABS_Y=x1 \ --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_THUMB=y,BTN_TOP2=lb,BTN_TOP=rb,BTN_BASE3=back,BTN_BASE6=start,BTN_BASE2=lt,BTN_BASE5=rt \ --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \ --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_C,rb=KEY_V,back=KEY_UNKNOWN,start=KEY_UNKNOWN,lt=KEY_5+KEY_1,rt=KEY_6+KEY_2 \ --ui-buttonmap start+back=KEY_LEFTSHIFT+KEY_F7+KEY_A,back+start=KEY_F7+KEY_A \ --ui-buttonmap back+rt=macro:/opt/retropie/configs/all/advmame_exit.macro"
I also have a file called
99-xboxdrv.rules
which has the following content:SUBSYSTEM=="input", ATTRS{name}=="Player_1", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1" SUBSYSTEM=="input", ATTRS{name}=="Player_2", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1" SUBSYSTEM=="input", ATTRS{name}=="Player_3", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1" SUBSYSTEM=="input", ATTRS{name}=="Player_4", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
My runcommand-onstart file is about 100Kb in size because it covers most emulators, so it's too big to insert here in its entirety.
-
@spud11 All good info thank you. Ultimately I am going to be putting this pi into a bartop (https://gameroomsolutions.com/shop/bartop-arcade-kit-deluxe) so I think I am going to come back around and revisit this once I have that setup so that I can analyze the input of those joysticks and buttons.
But I should probably continue getting this 360 controller to work with it so that I buildup the knowledge I will need about where I am going wrong right now.
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.