Dreamcast - Reicast - Time and Date
-
@tipoto
Where are you putting the "case statement":reicast-audio-oss) dreamcast_time_fn ;;
Does that go in
/opt/retropie/configs/all/runcommand-onstart.sh
as well?Also, shouldn't there be a test before running
dreamcast_time_fn ()
to ensure that reicast is the emulator being ran so this doesn't have to execute every time the Runcommand is invoked? -
Like I said, I don't have Retropie, so I don't know the structure and how it works exactly.
About this:reicast-audio-oss) dreamcast_time_fn ;;
This code is part of a case statement and it comes from
spud11
, I just edited what he wrote in his post to make it look good. My original post didn't content this part. You have to make sure by yourself that this case statement is correct and logical. If so, it has to be in/opt/retropie/configs/all/runcommand-onstart.sh
, after the functiondreamcast_time_fn
(not before)I don't know how Retropie gives you the information about the starting emulator, hopefully someone in the forum could help for this detail. When
spud11
added the case statement, I thought it was part of the Retropie structure and it was the answer to that. But double check with someone whom knows Retropie.You will need something that looks like this (but adapted to Retropie):
launched_emulator="$1" case "$lauched_emulator" in reicast) dreamcast_time_fn ;; mupen64plus) # your code ;; *) # your code ;; esac
It would be great to have someone in the forum to tell you exactly where to add my function and how to tell Retropie to launch it only with reicast.
-
@tipoto Hi. Yes, I do recognise the case statement you are using. Might be easier, to give things a bit more structure, for me to extract from my
runcommand-onstart.sh
the appropriate parts I have (adapted to your new code - thank you!). I've also created the newdc_flash.bin
as per instructions just to make sure my old one wasn't the problem.My
runcommand-onstart.sh
is very long, so I'll just take out the parts that are relevant and then we can look at it again and, hopefully, as you pointed out, one of the moderators might take an interest:### Code begins ### Game/ROM full path rom="${3##*/}" dreamcast_time_fn () { ### DREAMCAST - REICAST - Time and date correction ### Update the time/date in emu.cfg ### 1) Get how many hours of difference between local time and Greenwich time (GTM) ### 2) Calculate the current time in seconds (ex: 2125613317) with an offset of +20 years ### 3) Replace Dreamcast.RTC value in emu.cfg with the result time_offset=$(date +'%:::z') newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s") sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg } case $2 in reicast-audio-oss) $dreamcast_time_fn ;; esac
I've added the
$
sign to the command above as I believe it will need it.
For the sake of completeness, myruncommand.info
file, followed by myruncommand.log
, are as follows:dreamcast reicast-audio-oss /home/pi/RetroPie/roms/dreamcast/NBA Showtime.cdi /opt/retropie/emulators/reicast/bin/reicast.sh oss "/home/pi/RetroPie/roms/dreamcast/NBA Showtime.cdi"
As you will see from the above, case $2 (which is what I use) is
reicast-audio-oss
. And the log:Parameters: Executing: /opt/retropie/emulators/reicast/bin/reicast.sh oss "/home/pi/RetroPie/roms/dreamcast/NBA Showtime.cdi"
There are no errors from the log, but there is also no change to the outcome - I still need to do the time/date thing.
-
Nope, don't add
$
to call the function, I'm surprised you didn't get an error with that.However even if my function is eventually called, it seems that it won't fix the fact that you will be asked for the date/time, you need to fix this issue first, then my script will make sure that it won't happen again and you will always have the current time on with your saves on the VMU.
It's weird that you still have this screen since you created a fresh bios as I asked to do. What type of bios did you create (Region free, NTSC, PAL... ?), if it was a region free, try a specific one (PAL or NTSC), it won't restrain you to play any game, it will just chose a frame rate by default (50 or 60 fps). Also, try to change the permissions on the bios, just in case reicast doesn't manage to edit the file.
To do so, you can do:sudo chmod 777 /path/to/the/bios/dc_flash.bin
EDIT:
By the way, the function is not really necessary, you can put the content of the function directly into the case statement if you want, it's up to you. -
@tipoto Okay, I'm having trouble changing the permissions from 0755 to 0777 even with sudo. I'll need to check which bios I created too. Unfortunately, I've got to go out now. Thanks for your help.
-
Oh... I forgot to mention something very important! When you create the new
dc_flash.bin
with NullDC (by renamingdc_nvmem.bin
), you have to launch a game and set the date/time! Otherwise the manipulation is completely useless.
After that it should work in your RPI without asking for the time/date anymore.Another thing that I just noticed, even with my script, if you don't play a game for too long (maybe one month or so), it will ask for the time/date again since the registered time in
dc_flash.bin
and the time inemu.cfg
will be too different.
Once the gap is too big, it seems that reicast doesn't refreshdc_flash.bin
properly anymore.
I just had to recreate adc_flash.bin
right now for this reason. The problem has been fixed immediately with the new file, so it should work for you too. ;) -
@tipoto Hi. I've finally got back to this. Thanks for the extra info too.
I haven't yet checked which version of the BIOS I'm using (ie Region free etc), because I haven't yet got past the issue with the write permissions using my current
dc_flash.bin
. If it's necessary to write to this file, then that is currently a stumbling block.Using both WinSCP and Putty, I've tried to change the permissions both of the BIOS folder and of the individual file
dc_flash.bin
, both without success. The permissions remain 755 rather than 777, meaning no write access for Group and Others.Tried
sudo chmod 777 dc_flash.bin
from within the folder andsudo chmod -R 0777 /home/pi/RetroPie/BIOS
without success.I'd like to try to sort this out before experimenting much further. Hopefully, someone will chime in on why the BIOS files can't be made 0777.
-
@tipoto Okay. Just went back to NullDC - it's a US NTSC Bios. I set the date to 12/28/1998 and it now loads automatically in NullDC without requesting further time/date input, but having tried it again in Retropie, it requires further time/date input.
As you suggested, I removed the case statement so it now appears as follows in
runcommand-onstart.sh
:reicast-audio-oss) time_offset=$(date +'%:::z') newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s") sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg ;;
There are no errors in the log. Unless it is the 777 write permissions, I'm not sure what the problem is.
-
I think you misunderstand a few things, so I need to clarify:
- You need to set the time/date in NullDC, which means that you have set 06/24/2017 and the current time. Don't leave it in 1998.
- In the new code that you kept in your
runcommand-onstart.sh
, you actually kept the case statement and you removed the function, which is fine, but I just wanted to clarify this since you were saying that you removed the case statement and it's not the case.
For the permissions change, first of all I want to mention that it's maybe not necessary to do it, I was just suggesting to do it since we didn't get any result with the other things that we tried, maybe it will work without modifying the permissions. With that said, if you are still stuck, it is worth trying this option. If you don't manage to change the permissions, maybe it's because you are logged as
root
and you try to use sudo, if it's the case, don't use sudo.
And if you are not logged asroot
, you can try to do it, but it should normally work when you are logged aspi
with using sudo. -
@tipoto You, sir, are brilliant!
The workaround does work. I went back to NullDC and created a new bios, setting the date to the current date of 06/25/2017, then copied that bios into my Retropie bios folder. (The bios is US NTSC, for anyone else who wants to give this a go).
The case statement (rather than the function, as you pointed out) in
runcommand-onstart.sh
is:reicast-audio-oss) time_offset=$(date +'%:::z') newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s") sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg ;;
The permissions in respect of the bios remain 755 which is fine as it seems to work anyway.
I note also your point that the bios might have to be recreated every now and again for it to continue working, but this workaround is very good (in my view) and hopefully others using Retropie will be able to replicate it easily enough.
I hope a moderator picks up your instructions, tipoto, and adds it to the wiki.
My next step will be to go back to the "function" method, so that I can set it up to work concurrently with xboxdrv in a case statement applying to Reicast.
Thank you!
Edit: One thing I should add is that I didn't need to set the date/time "in game" once. It just seemed to work straightaway and I've now tested with half a dozen games and even reset the Pi in between games and it continues to work.
-
I'm glad that the new bios worked this time! :)
But I'm also curious to know if the script works too! ;)
The fact that you can now skip the time/date screen is only due to the new bios (you don't need any script for that), but my little script allows the system to also update the time every time you launch a game. That way you always have a logical time when you save a game on the VMU, it should also prevent reicast to display the time screen again since the date and time will be refreshed regularly (it's why you have to launch a game on a regular basis otherwise the screen will eventually come back again).Could you just open reicast without any game, so you can have access to the system manager? Here you should read the date and time, if it's up to date, it means my script has been launched, otherwise it means that the case statement doesn't do anything.
If the time is not refreshed, could you send me yourruncommand-onstart.sh
file, so I can take a look at it?Thanks!
-
I've been trying to figure this out as well. Thanks for the info on the bios!
-
@tipoto No problems. I'm not 100% sure how to invoke the bios without starting a game so I've set out below both my attract mode and the emulator commands and was just wondering whether you might be able to suggest changes that would invoke the bios (although I know you don't have retropie).
I'll try to send you the
runcommand-onstart.sh
in my next post. This is now quite a long file, 99% of which you can ignore, but it might be too long to send in a post. It's only in the very last part of that file that there is reference now to the reicast case statement.Attract mode file:
# Generated by Attract-Mode v2.2.1 # executable /opt/retropie/supplementary/runcommand/runcommand.sh args 0 _SYS_ dreamcast "[romfilename]" rompath /home/pi/RetroPie/roms/dreamcast romext .cdi;.gdi;.CDI;.GDI system Sega Dreamcast info_source thegamesdb.net artwork flyer /home/pi/RetroPie/roms/dreamcast/boxart artwork marquee /home/pi/RetroPie/roms/dreamcast/marquee artwork snap /home/pi/RetroPie/roms/dreamcast/snap artwork wheel /home/pi/RetroPie/roms/dreamcast/wheel
Emulators.cfg:
reicast-audio-omx = "CON:/opt/retropie/emulators/reicast/bin/reicast.sh omx %ROM%" default = "reicast-audio-oss" reicast-audio-oss = "CON:/opt/retropie/emulators/reicast/bin/reicast.sh oss %ROM%"
A copy of reicast.sh:
#!/usr/bin/env bash # This file is part of The RetroPie Project # # The RetroPie Project is the legal property of its developers, whose names are # too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source. # # See the LICENSE.md file at the top-level directory of this distribution and # at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md # AUDIO="$1" ROM="$2" rootdir="/opt/retropie" configdir="$rootdir/configs" source "$rootdir/lib/inifuncs.sh" function mapInput() { local js_device local js_device_num local ev_device local ev_devices local ev_device_num local device_counter local conf="$configdir/dreamcast/emu.cfg" local params="" # get a list of all present js device numbers and device names # and device count for js_device in /dev/input/js*; do js_device_num=${js_device/\/dev\/input\/js/} for ev_device in /dev/input/event*; do ev_device_num=${ev_device/\/dev\/input\/event/} if [[ -d "/sys/class/input/event${ev_device_num}/device/js${js_device_num}" ]]; then file[$ev_device_num]=$(grep --exclude=*.bak -rl "$configdir/dreamcast/mappings/" -e "= $(</sys/class/input/event${ev_device_num}/device/name)") if [[ -f "${file[$ev_device_num]}" ]]; then #file[$ev_device_num]="${file[$ev_device_num]##*/}" ev_devices[$ev_device_num]=$(</sys/class/input/event${ev_device_num}/device/name) device_counter=$(($device_counter+1)) fi fi done done # emu.cfg: store up to four event devices and mapping files if [[ "$device_counter" -gt "0" ]]; then # reicast supports max 4 event devices if [[ "$device_counter" -gt "4" ]]; then device_counter="4" fi local counter=0 for ev_device_num in "${!ev_devices[@]}"; do if [[ "$counter" -lt "$device_counter" ]]; then counter=$(($counter+1)) params+="-config input:evdev_device_id_$counter=$ev_device_num " params+="-config input:evdev_mapping_$counter=${file[$ev_device_num]} " fi done while [[ "$counter" -lt "4" ]]; do counter=$(($counter+1)) params+="-config input:evdev_device_id_$counter=-1 " params+="-config input:evdev_mapping_$counter=-1 " done else # fallback to keyboard setup params+="-config input:evdev_device_id_1=0 " device_counter=1 fi params+="-config input:joystick_device_id=-1 " params+="-config players:nb=$device_counter " echo "$params" } if [[ ! -f "$HOME/RetroPie/BIOS/dc_boot.bin" ]]; then dialog --msgbox "You need to copy the Dreamcast BIOS files (dc_boot.bin and dc_flash.bin) to the folder $biosdir to boot the Dreamcast emulator." 22 76 exit 1 fi params=(-config config:homedir=$HOME -config x11:fullscreen=1) getAutoConf reicast_input && params+=($(mapInput)) [[ -n "$AUDIO" ]] && params+=(-config audio:backend=$AUDIO -config audio:disable=0) [[ -n "$ROM" ]] && params+=(-config config:image="$ROM") if [[ "$AUDIO" == "oss" ]]; then aoss "$rootdir/emulators/reicast/bin/reicast" "${params[@]}" >/dev/null else "$rootdir/emulators/reicast/bin/reicast" "${params[@]}" >/dev/null fi
-
@tipoto I've taken out quite a bit of my runcommand-onstart.sh to make it fit, but all relevant stuff is in there:
#!/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 ### Code begins ### Game/ROM full path rom="${3##*/}" ### APPLE 2 - LINAPPLE - This is not a libretro core. In the linapple.conf appearing in the /opt/retropie/configs/apple2/ and in the /opt/retropie/emulators/linapple/ folders, keyboard emulation (keyboard centered) has been chosen. The keyboard is hardcoded to the number pad, so the direction and fire button keys are all linked to the Number Pad. Choose 1 joystick only (Joystick 0 = Player 1) as the second fire button on Joystick 0 won't work for some reason if Joystick 1 (Player 2) is selected. (Joystick 1 should have a "0" next to it). Exit is F10 and help is F1. Player1_appleII="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 x=void,y=void,lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=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 \ --ui-axismap X1=KEY_KP4:KEY_KP6,Y1=KEY_KP8:KEY_KP2 \ --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_BASE3=back,BTN_BASE6=start \ --ui-buttonmap a=KEY_KP0,b=KEY_KPDOT \ --ui-buttonmap back=KEY_UNKNOWN,start=KEY_UNKNOWN,start+back=KEY_F1,back+start=KEY_F10" ### LASERDISC - DAPHNE - DRAGON's LAIR. This is not a libretro core. Player1_daphne="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 y=void,lb=void,rb=void,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 \ --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \ --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_BASE3=back,BTN_BASE6=start \ --ui-buttonmap a=KEY_SPACE,b=KEY_LEFTALT,x=KEY_LEFTSHIFT,back=KEY_UNKNOWN,start=KEY_UNKNOWN,lt=KEY_5,rt=KEY_1 \ --ui-buttonmap back+start=KEY_ESC,start+back=KEY_P" ### ARCADE - LR-FBALPHA - USES RETROARCH KEYS - The mappings below enable the joysticks to operate either in 4-Way or in 8-Way mode depending on the game. This is a libretro core. ### CORE INPUT REMAPPING - in a game (eg Bubble Bobble), hold "space" and press "F1" to enter lr-fbalpha's Retroarch menu. Note: I've set up my Player 1 joystick in Retroarch's general menu so that the button formation is A, B, X and Y (most like the XBox 360 Controller formation). However, Retroarch and lr-fbalpha mimic the SNES Controller. With the SNES Controller, Button Y is the fire button and Button B is the jump button. So that the first button (Button A) on my DragonRise controller is the "fire" button, enter core input remapping, quick menu, controls and change the "fire" button from Y to A for both Players 1 and 2. Remember to "Save Core Remap". This will mean that the "fire" button (A) and the "jump" button (B) are now next to each other - no stretching of fingers required. (Also, now there is no need for a separate rom config file in roms folder). ### Player1_4Way_FBA and Player2_4Way_FBA map Joysticks 1 and 2 with four way restriction for use with libretro emulators other than lr-mame2003. The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch. ### For Player 1, the Left Trigger button (3rd row, 1st small red button, on Arcade Table) will now start Player 1 and the Right Trigger (3rd row, 2nd small red button) will now start Player 2; holding down the Select button and pressing the Start button will exit the emulator. For Player 2, Select and Start do nothing. For Player 3, Select is Coin 1 and Start will start Player 3. Hold down Select and press Start will exit. For Player 4, Select is Coin 2 and Start will start Player 4 and Player 3. Holding down both will exit the emulator. Player1_4Way_FBA="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 \ --four-way-restrictor \ --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_X,b=KEY_Z,x=KEY_S,y=KEY_A,lb=KEY_Q,rb=KEY_W,back=KEY_UNKNOWN,start=KEY_UNKNOWN,back+start=KEY_SPACE+KEY_ESC,lt=KEY_RIGHTSHIFT+KEY_ENTER,rt=KEY_6+KEY_2" Player2_4Way_FBA="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 back=void,start=void,tl=void,tr=void,guide=void,lt=void,rt=void \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \ --device-name "Player_2" \ --evdev-absmap ABS_X=y1,ABS_Y=x1 \ --four-way-restrictor \ --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_THUMB2=lb,BTN_TOP2=rb \ --ui-axismap X1=KEY_D:KEY_G,Y1=KEY_R:KEY_F \ --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_V,rb=KEY_B" ### Player3_4Way_FBA and Player4_4Way_FBA map Joysticks 3 and 4 with four way restriction for use with libretro emulators other than lr-mame2003. The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch (with axes appropriately altered). Player3_4Way_FBA="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 lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \ --device-name "Player_3" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --four-way-restrictor \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start \ --ui-axismap X1=KEY_DOWN:KEY_UP,Y1=KEY_RIGHT:KEY_LEFT \ --ui-buttonmap a=KEY_X,b=KEY_Z,x=KEY_S,y=KEY_A,back=KEY_RIGHTSHIFT,start=KEY_ENTER,back+start=KEY_SPACE+KEY_ESC" Player4_4Way_FBA="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 rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \ --device-name "Player_4" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --four-way-restrictor \ --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_THUMB2=back,BTN_TOP2=start \ --ui-axismap X1=KEY_F:KEY_R,Y1=KEY_G:KEY_D \ --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_UNKNOWN,back=KEY_6,start=KEY_2,back+start=KEY_SPACE+KEY_ESC" ### Player1_8Way_FBA and Player2_8Way_FBA map Joysticks 1 and 2 with no restriction for use with libretro emulators other than lr-mame2003. The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch. Player1_8Way_FBA="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_X,b=KEY_Z,x=KEY_S,y=KEY_A,lb=KEY_Q,rb=KEY_W,back=KEY_UNKNOWN,start=KEY_UNKNOWN,back+start=KEY_SPACE+KEY_ESC,lt=KEY_RIGHTSHIFT+KEY_ENTER,rt=KEY_6+KEY_2" Player2_8Way_FBA="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 back=void,start=void,tl=void,tr=void,guide=void,lt=void,rt=void \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \ --device-name "Player_2" \ --evdev-absmap ABS_X=y1,ABS_Y=x1 \ --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_THUMB2=back,BTN_TOP2=start \ --ui-axismap X1=KEY_D:KEY_G,Y1=KEY_R:KEY_F \ --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,lb=KEY_V,rb=KEY_B" ### Player3_8Way_FBA and Player4_8Way_FBA map Joysticks 3 and 4 with no restriction for use with libretro emulators other than lr-mame2003. The keyboard mappings below are the same keys that are mapped for Users 1 and 2 in Retroarch (with axes appropriately altered). Player3_8Way_FBA="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 lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \ --device-name "Player_3" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_THUMB2=back,BTN_TOP2=start \ --ui-axismap X1=KEY_DOWN:KEY_UP,Y1=KEY_RIGHT:KEY_LEFT \ --ui-buttonmap a=KEY_X,b=KEY_Z,x=KEY_S,y=KEY_A,back=KEY_RIGHTSHIFT,start=KEY_ENTER,back+start=KEY_SPACE+KEY_ESC" Player4_8Way_FBA="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 rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \ --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \ --device-name "Player_4" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --evdev-keymap BTN_THUMB=a,BTN_TOP=b,BTN_PINKIE=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_THUMB2=back,BTN_TOP2=start \ --ui-axismap X1=KEY_F:KEY_R,Y1=KEY_G:KEY_D \ --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,back=KEY_6,lb=KEY_UNKNOWN,start=KEY_2,back+start=KEY_SPACE+KEY_ESC" ### GAME BOY ADVANCE - Gameboy Advance Emulator GPSP defaults to Player 2's joystick. This is not a libretro core. Player1_gpsp enables Player 1's joystick to operate simultaneously with Player 2's joystick, as Player 1's joystick is mapped to the default keys. GPSP keys replicate the Gameboy Advance, so the default keys are D-Pad = up/down/left/right; A Button = z; B Button = x; Left Shoulder Button (on the GBA) = a; Right Shoulder Button (on the GBA) = s; Start Button (on the GBA) = enter; Select Button (on the GBA) = backspace. The enter key is the pause button. As it is easy to accidentally press it, the pause key is now mapped to start+back (the 2 left red buttons on 3rd row ie hold the start button and press back). The escape key is exit which is mapped to back+start as per normal (ie hold back and press start). Player1_gpsp="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 lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=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_BASE3=back,BTN_BASE6=start \ --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \ --ui-buttonmap a=KEY_Z,b=KEY_X,x=KEY_A,y=KEY_S,back=KEY_BACKSPACE,start=KEY_UNKNOWN,start+back=KEY_ENTER,back+start=KEY_ESC" ### NINTENDO 64 - NOT REQUIRED BECAUSE MAPPED PROPERLY VIA MUPEN64PLUS'S OWN INTERNAL CONTROLS - N64 emulator = mupen64plus-GLideN64-highres. This emulator maps the "escape" key for exiting the emulator with the following command in mupen64plus.cfg: ### # SDL keysym for stopping the emulator ### Kbd Mapping Stop = 27 ### 27 is the ASCII code for the Escape key. See www.asciitable.com . So with this emulator the escape key is mapped to mupen64plus-GLideN64-highres's keyboard controls and then is mapped to select+start in xboxdrv. ### The other keys are mapped in the InputAutoCfg.ini and are as follows: ### DPad R = key(100) - "d" key ### DPad L = key(97) - "a" key ### DPad D = key(115) - "s" key ### DPad U = key(119) - "w" key ### Start = key(13) - "enter" key ### Z Trig = key(122) - "z" key ### B Button = key(306) - " ### A Button = key(304) ### C Button R = key(108) ### C Button L = key(106) ### C Button D = key(107) ### C Button U = key(105) ### R Trig = key(99) ### L Trig = key(120) ### Mempak switch = key(44) ### Rumblepak switch = key(46) Player1_n64="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-buttonmap start=KEY_ENTER \ --ui-buttonmap back+start=KEY_ESC" ### DREAMCAST - REICAST - Time and date correction ### dreamcast_time_fn () { ### DREAMCAST - REICAST - Time and date correction ### Update the time/date in emu.cfg ### 1) Get how many hours of difference between local time and Greenwich time (GTM) ### 2) Calculate the current time in seconds (ex: 2125613317) with an offset of +20 years ### 3) Replace Dreamcast.RTC value in emu.cfg with the result ### time_offset=$(date +'%:::z') ### newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s") ### sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg ### } ### Autofire for Defender - fire button (X) (3rd button, 1st row), hold down and fires multiple times ###sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \ ###--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_5+KEY_1,start=KEY_6+KEY_2,lt=KEY_UNKNOWN,rt=KEY_UNKNOWN \ ###--buttonmap x^autofire:100=x \ ###--ui-buttonmap back+start=macro:/opt/retropie/configs/all/advmame_exit.macro \ ###& ### Arcade Games that use 4 way restricted joysticks - 208 of 208 identified games plus Arkanoid and Tempest derivatives RestrictedArcadeGames=""alibaba.zip"|"amidar.zip"|"armwrest.zip"|"astinvad.zip"|"atetris.zip"|"anteater.zip"|"armorcar.zip"|"astrob.zip"|"astrof.zip"|"bagman.zip"|"ballbomb.zip"|"barrier.zip"|"blkhole.zip"|"blasto.zip"|"blockade.zip"|"btime.zip"|"carjmbre.zip"|"carnival.zip"|"cavelon.zip"|"chameleo.zip"|"checkman.zip"|"chinhero.zip"|"circusc.zip"|"ckong.zip"|"commando.zip"|"congo.zip"|"dazzler.zip"|"devilfsh.zip"|"digdug.zip"|"digdug2.zip"|"digger.zip"|"disco.zip"|"dkong.zip"|"dkong3.zip"|"dkongjr.zip"|"docastle.zip"|"dommy.zip"|"dorodon.zip"|"frogger.zip"|"galaga.zip"|"galaxian.zip"|"galxwars.zip"|"guzzler.zip"|"invrvnge.zip"|"invinco.zip"|"jjack.zip"|"joust2.zip"|"jrpacman.zip"|"jumpcoas.zip"|"jungler.zip"|"kchamp.zip"|"kicker.zip"|"kingball.zip"|"ladybug.zip"|"lasso.zip"|"levers.zip"|"lnc.zip"|"locomotn.zip"|"logger.zip"|"lrescue.zip"|"lupin3.zip"|"mappy.zip"|"marvins.zip"|"mikie.zip"|"mmonkey.zip"|"monsterb.zip"|"moonal2.zip"|"moonqsr.zip"|"mrdo.zip"|"mrflea.zip"|"mrjong.zip"|"mrtnt.zip"|"mspacman.zip"|"mystston.zip"|"naughtyb.zip"|"netwars.zip"|"olibochu.zip"|"ozmawars.zip"|"pacnpal.zip"|"pacplus.zip"|"pengo.zip"|"perestro.zip"|"pickin.zip"|"pignewt.zip"|"pisces.zip"|"pleiads.zip"|"pooyan.zip"|"popflame.zip"|"puckman.zip"|"pacman.zip"|"pulsar.zip"|"qbert.zip"|"qbertqub.zip"|"qix.zip"|"radarscp.zip"|"retofinv.zip"|"rocnrope.zip"|"route16.zip"|"samurai.zip"|"tsamurai.zip"|"scregg.zip"|"sindbadm.zip"|"solarfox.zip"|"sonofphx.zip"|"invadpt2.zip"|"panic.zip"|"shollow.zip"|"spclaser.zip"|"sqbert.zip"|"streakng.zip"|"sbagman.zip"|"superpac.zip"|"superqix.zip"|"ssi.zip"|"swat.zip"|"tactcian.zip"|"tankbatt.zip"|"taxidrvr.zip"|"elecyoyo.zip"|"theend.zip"|"timelimt.zip"|"tomahawk.zip"|"todruaga.zip"|"tranqgun.zip"|"triplep.zip"|"tutankhm.zip"|"vanvan.zip"|"volfied.zip"|"vsgongf.zip"|"wiping.zip"|"warpwarp.zip"|"zigzag.zip"|"zzyzzyxx.zip"|"alphaho.zip"|"pacnchmp.zip"|"comotion.zip"|"copsnrob.zip"|"cosmicg.zip"|"cosmos.zip"|"crash.zip"|"crush.zip"|"redufo.zip"|"diamond.zip"|"dorunrun.zip"|"dominos.zip"|"drmicro.zip"|"drgnbstr.zip"|"dremshpr.zip"|"elvactr.zip"|"eyes.zip"|"firetrap.zip"|"40love.zip"|"galpanic.zip"|"gundealr.zip"|"hardhat.zip"|"headon.zip"|"headon2.zip"|"heiankyo.zip"|"hexa.zip"|"hustle.zip"|"intrepid.zip"|"ironhors.zip"|"karianx.zip"|"kungfum.zip"|"lvgirl94.zip"|"logicpro.zip"|"logicpr2.zip"|"msjiken.zip"|"kikcubic.zip"|"mineswpr.zip"|"mtrap.zip"|"dowild.zip"|"mrgoemon.zip"|"natodef.zip"|"rallyx.zip"|"nrallyx.zip"|"pepper2.zip"|"pettanp.zip"|"popeye.zip"|"punchout.zip"|"raiders5.zip"|"rampage.zip"|"reikaids.zip"|"robby.zip"|"rthunder.zip"|"sidetrac.zip"|"schaser.zip"|"spaceinv.zip"|"spacezap.zip"|"spectar.zip"|"springer.zip"|"stratvox.zip"|"sia2650.zip"|"spnchout.zip"|"tapper.zip"|"rbtapper.zip"|"targ.zip"|"telmahjn.zip"|"theglob.zip"|"thief.zip"|"timber.zip"|"toypop.zip"|"wwjgtin.zip"|"wndrmomo.zip"|"yamyam.zip"|"zerozone.zip"|"zookeep.zip"|"pairs.zip"|"higemaru.zip"|"elecyoy2.zip"|"arkangc.zip"|"arkanoid.zip"|"arkatayt.zip"|"arkatour.zip"|"arkbl2.zip"|"arkbl3.zip"|"arkbloc2.zip"|"arkblock.zip"|"arknid2j.zip"|"arknid2u.zip"|"arknoid2.zip"|"arknoidj.zip"|"arknoidu.zip"|"arknoiuo.zip"|"arkretrn.zip"|"tempest.zip"|"tempest1.zip"|"tempest2.zip"|"tempest3.zip"|"temptube.zip"" ### Kill xboxdrv xboxkill="sudo killall xboxdrv" ### SEE GAMES/ROMS UNDER ADVMAME - INSERTING THE ROMS INTO THEIR OWN CODE BLOCK DEFINITION DOES NOT WORK IN THIS CASE. 2 Player Co-operative or 2 Player Simultaneous Arcade games - for Advance Mame. These are games where 2 players are playing at the same time with different joysticks. With 2 Player Co-operative games, Player 1 uses Player 1's joystick and Player 2 uses Player 2's joystick. (Note: Smash TV and Robotron 2084 which use both joysticks to move and fire are included in the simultaneous games meaning only one player can play because both joysticks are in use.) ### For 2 player alternate games using Advance Mame (ie games where one person takes their turn and then the next player takes their turn), Player 1 and Player 2 use Player 1's joystick. Player 2 can't use a separate joystick. To avoid this "hot seating", these xboxdrv configurations allow 2 Player Co-operative games to continue to use 2 joysticks while for 2 Player alternate games which use hotseating normally, Player 1's and 2's joystick controls now mirror each other by using the same keys, so there is no need for "hotseating". ### Execute the driver with the configuration needed ### $1 is the name of the system emulation (eg mame-libretro), not the name of the emulator (eg not lr-mame2003), nor the name of the folder (eg not "arcade", not "mame-libretro", not "arcade-vertical" ### $1 - The system (eg: atari2600, nes, snes, megadrive, fba, etc). ### $2 - The emulator (eg: lr-stella, lr-fceumm, lr-picodrive, pifba, etc). ### $3 - The full path to the rom file. ### $4 - The full command line used to launch the emulator. ### This information can be obtained from /dev/shm/runcommand.info case $2 in advmame) case $rom in "aerofgt.zip"|"aerofgtb.zip"|"aerofgtc.zip"|"sonicwi2.zip"|"sonicwi3.zip"|"alien3.zip"|"avspu.zip"|"aliens.zip"|"alpham2.zip"|"altbeast.zip"|"altbeas2.zip"|"altbeas4.zip"|"altbeas5.zip"|"altbeaj1.zip"|"altbeaj.zip"|"altbeaj3.zip"|"androdun.zip"|"armwar.zip"|"baddudes.zip"|"batcir.zip"|"btoads.zip"|"bnzabros.zip"|"bublbobl.zip"|"bublbobr.zip"|"bublbob1.zip"|"bublbob2.zip"|"bubblebobbleultra.zip"|"bubblem.zip"|"bubsympe.zip"|"bubsymph.zip"|"bubsympu.zip"|"burnforc.zip"|"burnfrco.zip"|"burningf.zip"|"burningh.zip"|"dino.zip"|"dinoj.zip"|"dinou.zip"|"captaven.zip"|"captavna.zip"|"captavne.zip"|"captavnj.zip"|"captavnu.zip"|"captavuu.zip"|"captcomm.zip"|"captcomu.zip"|"captcomj.zip"|"cawing.zip"|"cawingj.zip"|"cawingr1.zip"|"cawingu.zip"|"edrandy.zip"|"edrandy1.zip"|"edrandyj.zip"|"ctribe.zip"|"ctribeb.zip"|"contra.zip"|"contrab.zip"|"contraj.zip"|"contrajb.zip"|"crimfght.zip"|"crimfgt2.zip"|"crimfgtj.zip"|"crsword.zip"|"darius.zip"|"darius2.zip"|"darius2d.zip"|"dariuse.zip"|"dariusg.zip"|"dariusgj.zip"|"dariusgu.zip"|"dariusgx.zip"|"dariusj.zip"|"dariuso.zip"|"diehard.zip"|"ddrgn2u.zip"|"ddrgnw1.zip"|"ddrago3b.zip"|"ddragon.zip"|"ddragon2.zip"|"ddragon3.zip"|"ddragonb.zip"|"ddragonu.zip"|"ddragonw.zip"|"ddsom.zip"|"ddsoma.zip"|"ddsomj.zip"|"ddsomjr1.zip"|"ddsomr1.zip"|"ddsomr2.zip"|"ddsomu.zip"|"ddsomur1.zip"|"ddtod.zip"|"ddtoda.zip"|"ddtodh.zip"|"ddtodj.zip"|"ddtodjr1.zip"|"ddtodr1.zip"|"ddtodu.zip"|"ddtodur1.zip"|"dynamcop.zip"|"dynwar.zip"|"dynwarj.zip"|"exedexes.zip"|"ffight.zip"|"ffightj.zip"|"ffightj1.zip"|"ffightu.zip"|"ffightua.zip"|"gdarius.zip"|"gdarius2.zip"|"gdariusb.zip"|"gground.zip"|"gaun2pg1.zip"|"gaun2pg2.zip"|"gaun2pr3.zip"|"gaun22p1.zip"|"gaun22pg.zip"|"gaunt2.zip"|"gaunt2g.zip"|"gaunt2p.zip"|"gaunt2pg.zip"|"gaunt2pj.zip"|"gaunt22p.zip"|"gauntdl.zip"|"gauntg.zip"|"gauntgr3.zip"|"gauntgr6.zip"|"gauntgr8.zip"|"gauntj.zip"|"gauntj12.zip"|"gauntr1.zip"|"gauntr2.zip"|"gauntr4.zip"|"gauntr5.zip"|"gauntr7.zip"|"gauntr9.zip"|"gpilots.zip"|"gokuparo.zip"|"goldnax1.zip"|"goldnax2.zip"|"goldnax3.zip"|"goldnaxe.zip"|"goldnaxj.zip"|"goldnaxu.zip"|"ga2.zip"|"ga2j.zip"|"ga2u.zip"|"mt_gaxe.zip"|"mt_gaxe2.zip"|"gwar.zip"|"gwara.zip"|"gwarb.zip"|"gwarj.zip"|"hbarrel.zip"|"hbarrelw.zip"|"iceclimb.zip"|"iceclmbj.zip"|"iceclmrj.zip"|"joust.zip"|"joustr.zip"|"joustwr.zip"|"knights.zip"|"knightsj.zip"|"knightsu.zip"|"lresort.zip"|"lwings.zip"|"lwings2.zip"|"lwingsjp.zip"|"lifefrce.zip"|"lifefrcj.zip"|"mario.zip"|"mariojp.zip"|"mslug.zip"|"mslug2.zip"|"mslug3.zip"|"mslug3b6.zip"|"mslug3n.zip"|"mslug4.zip"|"mslug5.zip"|"mslugx.zip"|"mwalk.zip"|"mwalkbl.zip"|"mwalkj.zip"|"mwalku.zip"|"nbbatman.zip"|"gaiden.zip"|"progear.zip"|"progeara.zip"|"progearj.zip"|"punisher.zip"|"punishrj.zip"|"punishru.zip"|"rampage.zip"|"rampage2.zip"|"rmpgwt.zip"|"rmpgwt11.zip"|"robocop2.zip"|"robocp2j.zip"|"robocp2u.zip"|"robotron.zip"|"robotryo.zip"|"rtypeleo.zip"|"rtypelej.zip"|"salamand.zip"|"salamanj.zip"|"salamndr2.zip"|"sengokh.zip"|"sengokmj.zip"|"sengoku.zip"|"sengoku2.zip"|"sengoku3.zip"|"sexyparo.zip"|"shocktro.zip"|"shocktr2.zip"|"sscope2.zip"|"simpsn2p.zip"|"skullfng.zip"|"skykid.zip"|"skykidd.zip"|"skykiddo.zip"|"skykiddx.zip"|"smashtv.zip"|"smashtv4.zip"|"smashtv5.zip"|"smashtv6.zip"|"spclorda.zip"|"spclordb.zip"|"spclordg.zip"|"spclords.zip"|"spidman.zip"|"spidmanu.zip"|"streetsm.zip"|"streets1.zip"|"streetsj.zip"|"streetsw.zip"|"ssriders.zip"|"scobra.zip"|"scobrab.zip"|"scobras.zip"|"scobrase.zip"|"tmnt.zip"|"tmnt2.zip"|"tmnt2a.zip"|"tmnt2pj.zip"|"tmnt2po.zip"|"tmnt22p.zip"|"tmntj.zip"|"tmntu.zip"|"tmntua.zip"|"timecrs2.zip"|"twinbee.zip"|"unsquad.zip"|"vendet2p.zip"|"viostorm.zip"|"viostrma.zip"|"viostrmj.zip"|"viostrmu.zip"|"vcop.zip"|"vcop2.zip"|"wof.zip"|"wofa.zip"|"wofj.zip"|"wofu.zip"|"wow.zip"|"xmen.zip"|"xenophob.zip"|"1943.zip"|"arabianm.zip"|"armora.zip"|"atarifb.zip"|"crimec.zip"|"cotton2.zip"|"deadconx.zip"|"dbreedm72.zip"|"ddonpach.zip"|"dondokod.zip"|"elvactr.zip"|"gigawing.zip"|"gunbird.zip"|"kchamp.zip"|"klax.zip"|"marble.zip"|"milliped.zip"|"narc.zip"|"ninjak.zip"|"penbros.zip"|"pbobblenzip"|"qix.zip"|"spacduel.zip"|"spacewar.zip"|"atetris.zip"|"atetrisa.zip"|"ctribe.zip"|"timesold.zip"|"timesold1.zip"|"twotiger.zip"|"victroad.zip"|"vindictr.zip"|"xybots.zip"|"logicpro.zip"|"pang.zip"|"pipedrmu.zip"|"hattrick.zip"|"mk.zip"|"umk3.zip"|"ssf2t.zip"|"sf2.zip"|"sf.zip"|"ssf2.zip"|"sfa3.zip"|"sf2ce.zip"|"vf.zip"|"vf2.zip"|"vf3.zip"|"kbash.zip"|"offroad.zip"|"rampart.zip"|"rampart2p.zip"|"ssprint.zip"|"neobombe.zip"|"simpsons2p.zip"|"simpsons.zip"|"snowbros.zip"|"warlords.zip"|"openice.zip"|"kizuna.zip"|"nbajamte.zip"|"nbajam.zip") # Configuration used only for these 2 Player Simultaneous (Co-Operative Play) ROMs $xboxkill joycommand="$Player1_AdvMame_Sim & $Player2_AdvMame_Sim &" eval $joycommand ;; *) # Configuration for every other ROM in respect of this emulator including 2 Player Alternate "hotseating" ROMS $xboxkill joycommand="$Player1_AdvMame_Alt & $Player2_AdvMame_Alt &" eval $joycommand ;; esac ;; lr-mame2003) case $rom in $RestrictedArcadeGames) # Configuration only for these ROMs. Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes. $xboxkill joycommand="$Player1_4Way_Mame2003 & $Player2_4Way_Mame2003 & $Player3_4Way_Mame2003 & $Player4_4Way_Mame2003 &" eval $joycommand ;; *) # Configuration for every other ROM. Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes. $xboxkill joycommand="$Player1_8Way_Mame2003 & $Player2_8Way_Mame2003 & $Player3_8Way_Mame2003 & $Player4_8Way_Mame2003 &" eval $joycommand ;; esac ;; amiberry-a1200) $xboxkill joycommand="$Player1_Amiga & $Player2_Amiga &" eval $joycommand ;; gpsp) $xboxkill joycommand="$Player1_gpsp &" eval $joycommand ;; reicast-audio-oss) time_offset=$(date +'%:::z') newtime=$(date -d "$(date -d "+20 years $time_offset hours" +%D) $(date -d "+20 years $time_offset hours" +%T)" +"%s") sudo perl -i -p -e "s|Dreamcast.RTC = .*|Dreamcast.RTC = "$newtime"|" /opt/retropie/configs/dreamcast/emu.cfg ;; linapple) $xboxkill joycommand="$Player1_appleII &" eval $joycommand ;; daphne) $xboxkill joycommand="$Player1_daphne &" eval $joycommand ;; vice-x64) $xboxkill joycommand="$Player1_c64 & $Player2_c64 &" eval $joycommand ;; atari800) $xboxkill joycommand="$Player1_atari800 & $Player2_atari800 &" eval $joycommand ;; hatari-compatible) $xboxkill joycommand="$Player1_atariST & $Player2_atariST &" eval $joycommand ;; lr-caprice32) $xboxkill joycommand="$Player1_Amstrad &" eval $joycommand ;; lr-fbalpha) case $rom in $RestrictedArcadeGames) # Configuration only for these ROMs. 4-way restricted. Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes. $xboxkill joycommand="$Player1_4Way_FBA & $Player2_4Way_FBA & $Player3_4Way_FBA & $Player4_4Way_FBA &" eval $joycommand ;; *) # Configuration for every other ROM. Players 1 and 3 mapped to the same keys; Players 2 and 4 mapped to the same keys; All joysticks work simultaneously in portrait and landscape modes. $xboxkill joycommand="$Player1_8Way_FBA & $Player2_8Way_FBA & $Player3_8Way_FBA & $Player4_8Way_FBA &" eval $joycommand ;; esac ;; esac
-
Ok, I finally decided to install an image with HyperPie on my old RPI2 that I wasn't using anymore.
It seems that reicast refreshes the time and date automatically on RetroPie, you don't need any extra code for that! So you can remove the script I sent you (even thought it was correct and at the right place), I need it on my XU4, but it's not necessary on the RPI.
Actually the solution for the bios was on the first link of your first post of this topic (which is on the Wiki as well):
https://retropie.org.uk/forum/topic/364/every-time-i-play-dreamcast-displays-the-setting-screen-time-date/51The last thing that you may want to do, is to create a fake game to have access to the reicast System Manager, in case you want to format or manage the space on your VMUs.
Here is what you have to do:- Create a fake game by typing this command on a terminal:
ln -sv fileThatDoesNotExist ~/RetroPie/roms/dreamcast/systemManager.cdi
- Edit the Dreamcast romlist file
/home/pi/.attract/romlists/Sega Dreamcast.txt
Add this line right after the first line:
systemManager;System Manager;Sega Dreamcast;...
You need to complete the line properly, replace "..." by the something that matches the structure that you have in this file.
You should be all set with that.
-
@tipoto Thanks. I'm just wondering about some of the comments at the bottom of that thread. Most of the people who posted were unable to update the time/date at all. I suppose, when creating the new bios, they might not have updated the bios to the current time/date (ie they may have made the same mistake I made), but it still makes me wonder whether we should still have the case statement. I suppose it does no harm leaving it in runcommand-onstart.sh in case it actually does do something.
I tried to add the fake file but have received the following message:
ln: failed to create symbolic link `/home/pi/RetroPie/roms/dreamcast/systemManager.cdi`: Operation not permitted
I copied and pasted your command so that shouldn't be a problem.
-
Just add
sudo
to the command:sudo ln -sv fileThatDoesNotExist ~/RetroPie/roms/dreamcast/systemManager.cdi
-
@tipoto Thanks. I should have thought of that and will do so once at home.
By the way, I'm not sure whether Retropie/Retroarch updates time automatically from the get go.
Just before I got the new bios to work, I did make one further change to things to be sure that Retroarch uses my current localised time. I followed @mediamogul's guide here and set up my local time:
https://retropie.org.uk/forum/topic/9575/how-to-set-time-in-retroarch/2
I just point this out if anyone else is viewing this thread.
-
@tipoto Hi tipoto. I have added sudo to the command, but I still get the same message each time. Not sure why.
-
It's weird! Try to change the permissions of the folder then try again:
sudo chmod -R 777 /home/pi/RetroPie/roms/dreamcast
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.