Reicast Stuck On Time & Date !
-
@mediamogul said in Reicast Stuck On Time & Date !:
It's been a while since I've done it myself, but from memory, you would add the number codes you got from running
/opt/retropie/emulators/reicast/bin/reicast-joyconfig
and input them into the Reicast mapping file. According to the wiki entry, you'll need to create it yourself. I'll have to defer any more specific questions to someone else, as I have had Reicast uninstalled for some time due to poor performance on the Pi3.this is what i got in the
/opt/retropie/emulators/reicast/bin/reicast-joyconfig
# -*- coding: utf-8 -*- from __future__ import print_function import sys import re import os if sys.version_info < (3, 0): import ConfigParser as configparser INPUT_FUNC = raw_input else: import configparser INPUT_FUNC = input try: import evdev except ImportError: print("Can't import evdev module. Please install it.") print("You can do this via:") print(" pip install evdev") sys.exit(1) DEV_ID_PATTERN = re.compile('(\d+)') DREAMCAST_BUTTONS = ['A', 'B', 'C', 'D', 'X', 'Y', 'Z', 'START'] DREAMCAST_DPAD = [('X', 'LEFT', 'RIGHT'), ('Y', 'UP', 'DOWN')] DREAMCAST_TRIGGERS = ['TRIGGER_LEFT', 'TRIGGER_RIGHT'] DREAMCAST_STICK_AXES = [('X', 'left'), ('Y', 'up')] SECTIONS = ["emulator", "dreamcast", "compat"] def list_devices(): devices = [(int(DEV_ID_PATTERN.findall(fn)[0]), evdev.InputDevice(fn)) for fn in evdev.list_devices()] dev_id_len = len(str(max([dev_id for dev_id, dev in devices]))) for dev_id, dev in sorted(devices, key=lambda x: x[0]): print("%s: %s (%s, %s)" % (str(dev_id).rjust(dev_id_len), dev.name, dev.fn, dev.phys)) def clear_events(dev): try: event = dev.read_one() while(event is not None): event = dev.read_one() except (OSError, IOError): # BlockingIOErrors should only occur if someone uses the evdev # module < v0.4.4. BlockingIOError inherits from OSError, so we # catch that for Python 2 compatibility. We also catch IOError, # just in case. pass def read_button(dev): for event in dev.read_loop(): if event.type == evdev.ecodes.EV_KEY and event.value == 0: break return event def read_axis(dev, absinfos): axis_inverted = False for event in dev.read_loop(): if event.type == evdev.ecodes.EV_ABS and \ event.value in (absinfos[event.code].min, absinfos[event.code].max): if event.value == absinfos[event.code].max: axis_inverted = True break return (event, axis_inverted) def read_axis_or_key(dev, absinfos): axis_inverted = False for event in dev.read_loop(): if event.type == evdev.ecodes.EV_KEY and event.value == 0: break elif (event.type == evdev.ecodes.EV_ABS and event.value in (absinfos[event.code].min, absinfos[event.code].max)): if event.value == absinfos[event.code].max: axis_inverted = True break return (event, axis_inverted) def print_mapped_button(name, event): try: code_id = evdev.ecodes.BTN[event.code] except (IndexError, KeyError): try: code_id = evdev.ecodes.KEY[event.code] except (IndexError, KeyError): code_id = None if type(code_id) is list: code_id = code_id[0] code_id = (' (%s)' % code_id) if code_id else '' print("%s mapped to %d%s." % (name, event.code, code_id)) def print_mapped_axis(name, event, axis_inverted=False): try: code_id = evdev.ecodes.ABS[event.code] except (IndexError, KeyError): code_id = None if type(code_id) is list: code_id = code_id[0] code_id = (' (%s)' % code_id) if code_id else '' inv = (' (inverted)' if axis_inverted else '') print("%s mapped to %d%s%s." % (name, event.code, code_id, inv)) def setup_device(dev_id): print("Using device %d..." % dev_id) fn = "/dev/input/event%d" % dev_id dev = evdev.InputDevice(fn) print("Name: %s" % dev.name) print("File: %s" % dev.fn) print("Phys: %s" % dev.phys) cap = dev.capabilities(verbose=False, absinfo=True) try: absinfos = dict(cap[evdev.ecodes.EV_ABS]) except KeyError: absinfos = dict() mapping = configparser.RawConfigParser() for section in SECTIONS: mapping.add_section(section) mapping.set("emulator", "mapping_name", dev.name) # Emulator escape button if ask_yes_no("Do you want to map a button to exit the emulator"): clear_events(dev) print("Press the that button now...") event = read_button(dev) mapping.set("emulator", "btn_escape", event.code) print_mapped_button("emulator escape button", event) # Regular dreamcast buttons for button in DREAMCAST_BUTTONS: if ask_yes_no("Do you want to map the %s button?" % button): clear_events(dev) print("Press the %s button now..." % button) event = read_button(dev) mapping.set("dreamcast", "btn_%s" % button.lower(), event.code) print_mapped_button("%s button" % button, event) # DPads for i in range(1, 3): if ask_yes_no("Do you want to map DPad %d?" % i): for axis, button1, button2 in DREAMCAST_DPAD: clear_events(dev) print("Press the %s button of DPad %d now..." % (button1, i)) event, axis_inverted = read_axis_or_key(dev, absinfos) if event.type == evdev.ecodes.EV_ABS: axisname = "axis_dpad%d_%s" % (i, axis.lower()) mapping.set("compat", axisname, event.code) mapping.set("compat", "%s_inverted" % axisname, "yes" if axis_inverted else "no") print_mapped_axis("%s axis of DPad %d" % (axis, i), event, axis_inverted) else: buttonconf = "btn_dpad%d_%%s" % i mapping.set("dreamcast", buttonconf % button1.lower(), event.code) print_mapped_button("%s button of DPad %d" % (button1, i), event) clear_events(dev) print("Press the %s button of DPad %d now..." % (button2, i)) event = read_button(dev) mapping.set("dreamcast", buttonconf % button2.lower(), event.code) print_mapped_button("%s button of DPad %d" % (button2, i), event) # Triggers for trigger in DREAMCAST_TRIGGERS: if ask_yes_no("Do you want to map %s?" % trigger): clear_events(dev) print("Press the %s now..." % trigger) event, axis_inverted = read_axis_or_key(dev, absinfos) axis_inverted = not axis_inverted if event.type == evdev.ecodes.EV_ABS: axisname = "axis_%s" % trigger.lower() mapping.set("dreamcast", axisname, event.code) mapping.set("compat", "%s_inverted" % axisname, "yes" if axis_inverted else "no") print_mapped_axis("analog %s" % trigger, event, axis_inverted) else: mapping.set("compat", "btn_%s" % trigger.lower(), event.code) print_mapped_button("digital %s" % trigger, event) # Stick if ask_yes_no("Do you want to map the analog stick?"): for axis, axis_dir in DREAMCAST_STICK_AXES: clear_events(dev) print("Please move the analog stick as far %s as possible now..." % axis_dir) event, axis_inverted = read_axis(dev, absinfos) axisname = "axis_%s" % axis.lower() mapping.set("dreamcast", axisname, event.code) mapping.set("compat", "%s_inverted" % axisname, "yes" if axis_inverted else "no") print_mapped_axis(axis, event, axis_inverted) for section in SECTIONS: if not mapping.options(section): mapping.remove_section(section) return mapping def ask_yes_no(question, default=True): valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} prompt = "Y/n" if default else "y/N" while True: print("%s [%s] " % (question, prompt), end='') choice = INPUT_FUNC().lower() if choice == '': return default if choice in valid: return valid[choice] else: print("Please respond with 'yes' or 'no'") if __name__ == "__main__": import argparse parser = argparse.ArgumentParser( description='Reicast evdev controller mapping editor') parser.add_argument('-d', '--device-id', action='store', type=int, default=-1, help='device-id to map.') parser.add_argument('-f', '--file', action='store', default=None, help='write mapping to this file') args = parser.parse_args() if args.device_id < 0: list_devices() dev_id = int(input("Please enter the device id: ")) else: dev_id = args.device_id mapping = setup_device(dev_id) if args.file: with open(args.file, "w") as f: mapping.write(f) print("\nMapping file saved to: %s\n" % os.path.abspath(args.file)) else: print("\nHere's your mapping file:\n") mapping.write(sys.stdout) sys.exit(0)```
-
@Slugz if you are going to post configs and code to the forum - please format it properly http://commonmark.org/help/ (Please go back and edit your post and put in code blocks)
-
@BuZz said in Reicast Stuck On Time & Date !:
@Slugz if you are going to post configs and code to the forum - please format it properly http://commonmark.org/help/ (Please go back and edit your post and put in code blocks)
don't know how.
-
@Slugz
I believe you put those controller mapping info into a files named something like this/opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg
Than edit
/opt/retropie/configs/dreamcast/emu.cfg
to tell the emulator to use your custom controller mapping:evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg
-
@Slugz read the link - surround the code with three backticks ```
-
@backstander said in Reicast Stuck On Time & Date !:
@Slugz
I believe you put those controller mapping info into a files named something like this/opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg
Than edit
/opt/retropie/configs/dreamcast/emu.cfg
to tell the emulator to use your custom controller mapping:evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg
don't get it.
can you tell me which files i move & change & where.
-
this is what is in my /opt/retropie/configs/dreamcast/emu.cfg
there is no controller on it.
disable = 0 [config] Debug.SerialConsoleEnabled = 0 Dreamcast.Broadcast = 4 Dreamcast.Cable = 3 Dreamcast.RTC = 2109681505 Dreamcast.Region = 3 Dynarec.Enabled = 1 Dynarec.idleskip = 1 Dynarec.unstable-opt = 0 aica.LimitFPS = 1 aica.NoBatch = 0 aica.NoSound = 0 bios.UseReios = 0 pvr.MaxThreads = 3 pvr.Subdivide = 0 pvr.SynchronousRendering = 0 pvr.rend = 0 rend.UseMipmaps = 1 rend.WideScreen = 0 ta.skip = 0 [dispmanx] height = 480 maintain_aspect = yes width = 640 [omx] audio_hdmi = yes audio_latency = 100 [reios] ElfFile = [validate] OpenGlChecks = 0```
-
The Input section should be between the [dispmanx] and [omx] sections. Hre is that part of my emu.config:
[dispmanx]
height = 480
maintain_aspect = yes
width = 640[input]
evdev_device_id_1 = 0
evdev_device_id_2 = 1
evdev_device_id_3 = -1
evdev_device_id_4 = -1
evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/controller_TwinUSBJoystick.cfg
evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/controller_TwinUSBJoystick.cfg
joystick_device_id = -1[omx]
audio_hdmi = yes
audio_latency = 100I have never done a manual edit of this config file, so I'm not sure what you need in the evdev_mapping_X lines or the joystick_device_id_X line. You can try pasting in what I have and changing TwinUSBJoystick.cfg lines to
evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg
evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfgNote, check /opt/retropie/configs/dreamcast/mappings for the exact filename. It might be something like controller_MAYFLASHArcadeFightstickF300.cfg. All of y listed configs start with "controller_" except keyboard.cfg (I am running Retropie 4.1)
-
@mrbwa1 said in Reicast Stuck On Time & Date !:
The Input section should be between the [dispmanx] and [omx] sections. Hre is that part of my emu.config:
[dispmanx]
height = 480
maintain_aspect = yes
width = 640[input]
evdev_device_id_1 = 0
evdev_device_id_2 = 1
evdev_device_id_3 = -1
evdev_device_id_4 = -1
evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/controller_TwinUSBJoystick.cfg
evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/controller_TwinUSBJoystick.cfg
joystick_device_id = -1[omx]
audio_hdmi = yes
audio_latency = 100I have never done a manual edit of this config file, so I'm not sure what you need in the evdev_mapping_X lines or the joystick_device_id_X line. You can try pasting in what I have and changing TwinUSBJoystick.cfg lines to
evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfg
evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/MAYFLASHArcadeFightstickF300.cfgNote, check /opt/retropie/configs/dreamcast/mappings for the exact filename. It might be something like controller_MAYFLASHArcadeFightstickF300.cfg. All of y listed configs start with "controller_" except keyboard.cfg (I am running Retropie 4.1)
here is my devices -
0: Mini Keyboard (/dev/input/event0, usb-3f980000.usb-1.2/input0)
1: Mini Keyboard (/dev/input/event1, usb-3f980000.usb-1.2/input1)
2: MAYFLASH Arcade Fightstick F300 (/dev/input/event2, usb-3f980000.usb-1.5/input0)
3: 8Bitdo SNES30 GamePad (/dev/input/event3, b8:27:eb:e5:9c:6a)i like to setup the MAYFLASH & THE 8Bitdo -
controller_8BitdoSNES30GamePad.cfg
& the -
controller_MAYFLASHArcadeFightstickF300.cfg -
& do i need to install any driver updates.
-
here is my devices -
0: Mini Keyboard (/dev/input/event0, usb-3f980000.usb-1.2/input0)
1: Mini Keyboard (/dev/input/event1, usb-3f980000.usb-1.2/input1)
2: MAYFLASH Arcade Fightstick F300 (/dev/input/event2, usb-3f980000.usb-1.5/input0)
3: 8Bitdo SNES30 GamePad (/dev/input/event3, b8:27:eb:e5:9c:6a)i like to setup the MAYFLASH & THE 8Bitdo -
controller_8BitdoSNES30GamePad.cfg
& the -
controller_MAYFLASHArcadeFightstickF300.cfg -
Oh yeah, in the
/opt/retropie/configs/dreamcast/emu.cfg
file you need to change evdev_device_id_1 & 2 to equal the number of the joystick you want to use.So if you want your MAYFLASH Arcade Fightstick F300 to be player 1 and your 8Bitdo SNES30 GamePad to be player 2. From what you posted above the Mini Keyboard is using 0 and 1 and the MAYFLASH is 2 and the 8Bitdo is 3.
You'd do something like this:
[input] evdev_device_id_1 = 2 evdev_device_id_2 = 3 evdev_device_id_3 = -1 evdev_device_id_4 = -1 evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/controller_MAYFLASHArcadeFightstickF300.cfg evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/controller_8BitdoSNES30GamePad.cfg joystick_device_id = -1
The -1 means no joystick which we used for player 3 and 4 and also have evdev_mapping_1 & 2 to point to the matching joystick mapping config files.
And if you want 2 players at the same time, then you need to add this to the bottom of that same
emu.cfg
file:[players] nb = 2
-
@backstander said in Reicast Stuck On Time & Date !:
Oh yeah, in the
/opt/retropie/configs/dreamcast/emu.cfg
file you need to change evdev_device_id_1 & 2 to equal the number of the joystick you want to use.So if you want your MAYFLASH Arcade Fightstick F300 to be player 1 and your 8Bitdo SNES30 GamePad to be player 2. From what you posted above the Mini Keyboard is using 0 and 1 and the MAYFLASH is 2 and the 8Bitdo is 3.
You'd do something like this:
[input] evdev_device_id_1 = 2 evdev_device_id_2 = 3 evdev_device_id_3 = -1 evdev_device_id_4 = -1 evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/controller_MAYFLASHArcadeFightstickF300.cfg evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/controller_8BitdoSNES30GamePad.cfg joystick_device_id = -1
The -1 means no joystick which we used for player 3 and 4 and also have evdev_mapping_1 & 2 to point to the matching joystick mapping config files.
And if you want 2 players at the same time, then you need to add this to the bottom of that same
emu.cfg
file:[players] nb = 2
still not working !
-
still not working !
-
still not working !
I'm stumped.
Please post the contents of your
/opt/retropie/configs/dreamcast/mappings/controller_MAYFLASHArcadeFightstickF300.cfg
and/opt/retropie/configs/dreamcast/mappings/controller_8BitdoSNES30GamePad.cfg
files (or whatever controller mapping files that are referenced by your/opt/retropie/configs/dreamcast/emu.cfg
).Also post your current contents of your
/opt/retropie/configs/dreamcast/emu.cfg
file as well.Sometimes something as little as a typo can cause the whole emulator not to work.
-
@backstander said in Reicast Stuck On Time & Date !:
still not working !
I'm stumped.
Please post the contents of your
/opt/retropie/configs/dreamcast/mappings/controller_MAYFLASHArcadeFightstickF300.cfg
and/opt/retropie/configs/dreamcast/mappings/controller_8BitdoSNES30GamePad.cfg
files (or whatever controller mapping files that are referenced by your/opt/retropie/configs/dreamcast/emu.cfg
).Also post your current contents of your
/opt/retropie/configs/dreamcast/emu.cfg
file as well.Sometimes something as little as a typo can cause the whole emulator not to work.
Mayflash
mapping_name = MAYFLASH Arcade Fightstick F300 btn_escape = 296 [dreamcast] btn_a = 290 btn_b = 289 btn_c = btn_d = btn_x = 291 btn_y = 288 btn_z = btn_start = 297 btn_dpad1_left = btn_dpad1_right = btn_dpad1_up = btn_dpad1_down = btn_dpad2_left = btn_dpad2_right = btn_dpad2_up = btn_dpad2_down = axis_x = axis_y = axis_trigger_left = axis_trigger_right = [compat] btn_trigger_left = 292 btn_trigger_right = 293 axis_dpad1_x = axis_dpad1_y = axis_dpad2_x = axis_dpad2_y = axis_x_inverted = axis_y_inverted = axis_trigger_left_inverted = axis_trigger_right_inverted =
8BitdoSNES30
mapping_name = 8Bitdo SNES30 GamePad btn_escape = 298 [dreamcast] btn_a = 289 btn_b = 288 btn_c = btn_d = btn_x = 292 btn_y = 291 btn_z = btn_start = 299 btn_dpad1_left = btn_dpad1_right = btn_dpad1_up = btn_dpad1_down = btn_dpad2_left = btn_dpad2_right = btn_dpad2_up = btn_dpad2_down = axis_x = 0 axis_y = 1 axis_trigger_left = axis_trigger_right = [compat] btn_trigger_left = 294 btn_trigger_right = 295 axis_dpad1_x = axis_dpad1_y = axis_dpad2_x = axis_dpad2_y = axis_x_inverted = no axis_y_inverted = no axis_trigger_left_inverted = axis_trigger_right_inverted =
emu.cfg
disable = 0 [config] Debug.SerialConsoleEnabled = 0 Dreamcast.Broadcast = 4 Dreamcast.Cable = 3 Dreamcast.RTC = 2110739856 Dreamcast.Region = 3 Dynarec.Enabled = 1 Dynarec.idleskip = 1 Dynarec.unstable-opt = 0 aica.LimitFPS = 1 aica.NoBatch = 0 aica.NoSound = 0 bios.UseReios = 0 pvr.MaxThreads = 3 pvr.Subdivide = 0 pvr.SynchronousRendering = 0 pvr.rend = 0 rend.UseMipmaps = 1 rend.WideScreen = 0 ta.skip = 0 [dispmanx] height = 480 maintain_aspect = yes width = 640 [input] evdev_device_id_1 = 0 evdev_device_id_2 = 1 evdev_device_id_3 = -1 evdev_device_id_4 = -1 evdev_mapping_1 = /opt/retropie/configs/dreamcast/mappings/controller_8Bitdo SNES30 GamePad.cfg evdev_mapping_2 = /opt/retropie/configs/dreamcast/mappings/controller_8Bitdo SNES30 GamePad.cfg joystick_device_id = -1 [omx] audio_hdmi = yes audio_latency = 100 [reios] ElfFile = [validate] OpenGlChecks = 0
and how do i see my device id inputs again because i think i did a update.
-
and how do i see my device id inputs again because i think i did a update.
evtest
then just hit Ctrl+C to exit after you get your event number.I did notice something in your emu.cfg. There's spaces in your controller mapping cfg file name. Try putting quotes around them like this:
evdev_mapping_1 = "/opt/retropie/configs/dreamcast/mappings/controller_8Bitdo SNES30 GamePad.cfg" evdev_mapping_2 = "/opt/retropie/configs/dreamcast/mappings/controller_8Bitdo SNES30 GamePad.cfg"
Or you can just rename them to
controller_8BitdoSNES30GamePad.cfg
to remove the spaces.Also you'll want to add this somewhere to your emu.cfg file if you want 2 players:
[players] nb = 2
-
@backstander said in Reicast Stuck On Time & Date !:
and how do i see my device id inputs again because i think i did a update.
evtest
then just hit Ctrl+C to exit after you get your event number.I did notice something in your emu.cfg. There's spaces in your controller mapping cfg file name. Try putting quotes around them like this:
evdev_mapping_1 = "/opt/retropie/configs/dreamcast/mappings/controller_8Bitdo SNES30 GamePad.cfg" evdev_mapping_2 = "/opt/retropie/configs/dreamcast/mappings/controller_8Bitdo SNES30 GamePad.cfg"
Or you can just rename them to
controller_8BitdoSNES30GamePad.cfg
to remove the spaces.Also you'll want to add this somewhere to your emu.cfg file if you want 2 players:
[players] nb = 2
cannot press select after entering the time & date. :(
-
cannot press select after entering the time & date. :(
So close! I think you press either the A button or the Start button to press the onscreen "Select" button so try running
evtest
again to verify that
289 is the A button and 299 is the Select button. -
@backstander said in Reicast Stuck On Time & Date !:
cannot press select after entering the time & date. :(
So close! I think you press either the A button or the Start button to press the onscreen "Select"
button so try runningevtest
again to verify that
289 is the A button and 299 is the Select button.these are the codes i got after a evtest -
is input correct & which codes are for the - A, B, X, Y - LT, RT
and there is no select tab in the mapping.cfg
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.