Colecovision Key Bindings
-
@Rion said in Colecovision Key Bindings:
I wonder if there is an JoyToKey program for the PI?
A lot of people are surprised to learn that xboxdrv can be used for this purpose with any USB controller. It's also somewhat convenient due to it being found in RetroPie right out of the box.
Taken from: http://pingus.seul.org/~grumbel/xboxdrv/xboxdrv.html
It is also possible for xboxdrv to read input data directly from an event device, this allows the use of the configurability of xboxdrv on regular PC joysticks, keyboards and mice and thus lets xboxdrv serve a similar purpose as joy2key. See the option --evdev below for more information.
Also, here's a link to a tutorial on using xboxdrv with any USB controller:
https://steamcommunity.com/app/221410/discussions/0/558748653738497361/I love Colecovision games and I have been looking into this same thing, off and on, for over a week now. Whenever I get some solid time to troubleshoot any problems that might come up, I plan on mapping my Wavebird using this method.
-
@mediamogul said in Colecovision Key Bindings:
@Rion said in Colecovision Key Bindings:
I wonder if there is an JoyToKey program for the PI?
A lot of people are surprised to learn that xboxdrv can be used for this purpose with any USB controller. It's also somewhat convenient due to it being found in RetroPie right out of the box.
Taken from: http://pingus.seul.org/~grumbel/xboxdrv/xboxdrv.html
It is also possible for xboxdrv to read input data directly from an event device, this allows the use of the configurability of xboxdrv on regular PC joysticks, keyboards and mice and thus lets xboxdrv serve a similar purpose as joy2key. See the option --evdev below for more information.
Also, here's a link to a tutorial on using xboxdrv with any USB controller:
https://steamcommunity.com/app/221410/discussions/0/558748653738497361/I love Colecovision games and I have been looking into this same thing, off and on, for over a week now. Whenever I get some solid time to troubleshoot any problems that might come up, I plan on mapping my Wavebird using this method.
Will it work with an BT controller for example 8bitdo?
-
It should have no problem. After I get it all worked out myself, I plan on posting a full tutorial here that will cover these types of advanced controller setups.
-
@mediamogul said in Colecovision Key Bindings:
It should have no problem. After I get it all worked out myself, I plan on posting a full tutorial here that will cover these types of advanced controller setups.
How's the guide coming along?
Plan on posting it here and on the wiki? -
It really all depends on what I find once I fully kick the tires and light the fires. I expect it to come with some frustration in the experimentation process as there is very little documentation to rely on in using it as a universal driver. However, I've checked off everything I personally want to get done with my RetroPie install for now other than this, so I will start messing with it soon.
Once in a while, I do like to sit back and enjoy the fruits of labor, so tonight I plan to play a bit of "Cave Story" and "Retro City Rampage 486" as well as looking at the recent input layer in Kodi. All I have is time for the next few days as I am layed up with the lovely combination of sunburn and poison oak, so I'll probably use xboxdrv to divert my mind off of it over the weekend.
-
I wanted to post a quick update. With all that I want to accomplish with a guide to advance controller setup, it has become clear that it will involve a few different pieces of software that, while readily available, will require a bit of research and experimentation before I will feel confident in speaking authoritatively about them. However, it is highest on my list of things to do with my RetroPie install, so I don't imagine it will be too far off.
Having said that, here is a listing of the top controller-related issues I hope to alleviate in the guide:
- Using multiple controllers of the same make and model
- Using different controllers that share a GUID name
- Adding keymap controller support
- Mapping analog triggers as buttons
- Mapping events to jsX slots
- Mapping isolated event groupings to multiple jsX slots
In the mean time, here is a previous thread I dug up that should ultimately act as a full keymap solution for emulators like CoolCV for those who might want to jump ahead. The guide is for KODI, but the information can be extrapolated to just about anything. I believe it will be a much more elegant approach than using xboxdrv, as it is specifically tailored for this kind of activity. Also, the mapper is only called when the emulator is launched and killed as it exits.
http://blog.petrockblock.com/forums/topic/mapping-a-game-controller-in-kodi/
My next comment on this will probably require it's own thread, but I'll keep an eye on this one as well.
-
Very interesting research you have done. I'm going to push the follow button on you right now so I don't miss out on anything!
Great Work!
-
Just an update.
I went ahead and went back to firmware 1.69 on the nes30 pro, When I pair it in joystick mode (r1+power) both the analog sticks and dpad work in Colecovision!
now if I could just get them both working in retroarch (just the dpad works now).
-
I've been making some progress myself. One of the things holding me back is a way to launch the mapping software when the need arises that can be recommended without question. I figure 'Linux Joystick Mapper' can be added to a game system's launch routine from the launch script. However, xboxdrv needs a little more consideration. There's a bug preventing it from being launched as a universal driver in the default way that RetroPie uses it as an XBox driver. I'm exploring the possibility of having it launch via a script when the controller is first detected, using a udev rule. The toughest part is trying to find time to do all the necessary experimentation that is required.
-
@theroamer said in Colecovision Key Bindings:
@Rion Thanks, yeah those mapping are great for reconfiguring a keyboard. When it comes to the gamepad though, I'm at a loss for what to use for the codes, as there is no utility to tell you what codes your gamepad is spitting out.
This comment was made about two months ago, to which I responded with the possible solution of mapping keyboard input to a controller. With as much time as I could spare here and there, I ultimately learned how to universally do that throughout the whole system. Today, I was going to post a guide that allowed a full mapping that would launch and exit alongside CoolCV.
As it turns out, none of that is even necessary. Beside each SDL keyboard code found in
/opt/retropie/configs/coleco/coolcv_mapping.txt
you are able to input a SDL joystick code directly. I saw this early on and it is mentioned above, but quite frankly didn't know enough about the formatting at the time to understand it. When I looked at it again today, it immediately made sense. There are two examples used for the main action buttons. the first example isjoy0_0
which is referring to joystick 0, button 0, or what would commonly be thought of as the first button on the first joystick.joy0_1
would then of course be referencing the second button on the first joystick.All that is really needed to map any controller occupying a
/dev/input/js*
from here is to know your controller'sjs*
number and then runjstest
to get the proper button number codes for that controller. From there you would just add the properly formatted codes, such asjoy0_0
mentioned above, to where you want them in/opt/retropie/configs/coleco/coolcv_mapping.txt
and it should be good to go. I've tested it myself and it works very well.I don't feel like my research was wasted though. I've learned to map a controller in some really amazing ways as a result of this. For example, I have an optional mapping that is solely for the purpose of restricting directional input to four directions from an analog stick or directional pad. This makes all the difference in the world when trying to do well at a game like 'Pac-Man' or 'Ms Pac-man'. Some of you might have noticed that those characters can become unresponsive for a microsecond around corners when the analog stick hits a diagonal. Having a restricted directional mapping solves that and allows those and similar games to play as they did in arcades.
I'll fold over what I was going to post here for more of an all-encompassing guide on mapping that I want to post in a day or two, but for now, I hope this helps and I'm sorry it took so long to make good on my word to post something for this.
Edit: If I need to elaborate on using
jstest
, I'll be happy to do so. -
@mediamogul said in Colecovision Key Bindings:
@theroamer said in Colecovision Key Bindings:
@Rion Thanks, yeah those mapping are great for reconfiguring a keyboard. When it comes to the gamepad though, I'm at a loss for what to use for the codes, as there is no utility to tell you what codes your gamepad is spitting out.
This comment was made about two months ago, to which I responded with the possible solution of mapping keyboard input to a controller. With as much time as I could spare here and there, I ultimately learned how to universally do that throughout the whole system. Today, I was going to post a guide that allowed a full mapping that would launch and exit alongside CoolCV.
As it turns out, none of that is even necessary. Beside each SDL keyboard code found in
/opt/retropie/configs/coleco/coolcv_mapping.txt
you are able to input a SDL joystick code directly. I saw this early on and it is mentioned above, but quite frankly didn't know enough about the formatting at the time to understand it. When I looked at it again today, it immediately made sense. There are two examples used for the main action buttons. the first example isjoy0_0
which is referring to joystick 0, button 0, or what would commonly be thought of as the first button on the first joystick.joy0_1
would then of course be referencing the second button on the first joystick.All that is really needed to map any controller occupying a
/dev/input/js*
from here is to know your controller'sjs*
number and then runjstest
to get the proper button number codes for that controller. From there you would just add the properly formatted codes, such asjoy0_0
mentioned above, to where you want them in/opt/retropie/configs/coleco/coolcv_mapping.txt
and it should be good to go. I've tested it myself and it works very well.I don't feel like my research was wasted though. I've learned to map a controller in some really amazing ways as a result of this. For example, I have an optional mapping that is solely for the purpose of restricting directional input to four directions from an analog stick or directional pad. This makes all the difference in the world when trying to do well at a game like 'Pac-Man' or 'Ms Pac-man'. Some of you might have noticed that those characters can become unresponsive for a microsecond around corners when the analog stick hits a diagonal. Having a restricted directional mapping solves that and allows those and similar games to play as they did in arcades.
I'll fold over what I was going to post here for more of an all-encompassing guide on mapping that I want to post in a day or two, but for now, I hope this helps and I'm sorry it took so long to make good on my word to post something for this.
Edit: If I need to elaborate on using
jstest
, I'll be happy to do so.Thank you for taking you're free time to figure all this out. Looking forward to your guide. This is going to help out a lot of people!
-
post deleted
-
I've looked closely and all CoolCV mappings are single key. However, it is possible to add an outside mapping that will send whatever key is mapped to exit by pressing two buttons. Using xboxdrv, a working example would look like:
--ui-buttonmap start+back=KEY_F24
Seeing as how 'back' is usually analogous with 'select' in these situations, this mapping would allow CoolCV to exit using the same button combination that all the RetroArch cores use.
-
@mediamogul said in Colecovision Key Bindings:
I have an optional mapping that is solely for the purpose of restricting directional input to four directions from an analog stick or directional pad. This makes all the difference in the world when trying to do well at a game like 'Pac-Man' or 'Ms Pac-man'. Some of you might have noticed that those characters can become unresponsive for a microsecond around corners when the analog stick hits a diagonal. Having a restricted directional mapping solves that and allows those and similar games to play as they did in arcades.
This would be a greatly welcome addition! Looking forward to your post.
-
@mediamogul the ultimate pc interface or the vision-daptor has secret button combos to accomplish this if you use them to use real colecovision and intellivision controllers. I have an ultimate pc interface in my intellivision flashback that is modded with a pi in it.
Pressing 4 + * = button 3 (used for pause)
Pressing 5 + 0 = button 4 (used for reset)
Pressing 6 + # = button 5 (used for exit emulator) -
@edmaul69 said in Colecovision Key Bindings:
the ultimate pc interface or the vision-daptor
I might get one of these, as I am really enjoying the Colecovision library and wouldn't mind enhancing the experience further. As it stands now, I have the entire keypad mapped to the right thumbstick. Up, down, left & right are 1-4. Start+ Up, down, left & right are 5-8, leaving Select+ Up, down, left & right as 9,0,* and #. It took some getting used to, but this mapping works well for most games, with the two action buttons also mapped to 'A' and 'B'. There are some games however that need their own specific mapping to be played well. Intellivision seemed to make wilder use out of their keypad, so a universal mapping is more hit or miss, leaving many more titles in need of a more tailored mapping.
Also, I appreciate the interest that has been shown in the last few comments about my guide to mapping. It can now be found here.
-
Apologies for bumping an old thread, but just thought I would mention that in the most recent version of CoolCV (which is not currently in the retropie repository, but can be found here), you are able to require multiple keys (or joystick buttons) to exit the emulator.
For example, by editing the coolcv_mapping.txt file, and adding 2 different joystick buttons to the same line, it will wait for both to be pressed and act similarly to the rest of the libretro emulators.
key_exit key1073741939 joy0_6 joy0_7
-
@synack said in Colecovision Key Bindings:
it will wait for both to be pressed
Very keen! Thanks for pointing this out. I love CoolCV and the developer really produces great work.
-
Hey all, thanks for everyone's hard work so far, really helping me get my RetroPie/CoolCV into shape. I've run into some challenges trying to configure my USB controllers (Logitech F310's) to work correctly in CoolCV. Using the Windows version, I was able to pull out the SDL joystick codes for all the buttons/movement on my controller and came up with the following. The item in parenthesis is what I want to emulate on the CV.
A = JOY0_10 (Left Button)
B = JOY0_11 (Right Button)
X = JOY0_12 (Keypad 1)
Y = JOY0_13 (Keypad 2)Dpad Up = JOY0_0 (Up)
Dpad Dn = JOY0_1 (Down)
Dpad Lt = JOY0_2 (Left)
Dpad Rt = JOY0_3 (Right)Back = JOY0_5 (Pause)
Start = JOY0_4 (Exit)
Back + Start (Reset)Lt Bump = JOY0_8 (Keypad 3)
Rt Bump = JOY0_9 (Keypad 4)Controller two is the same except it's JOY1 for everything.
So I went into coolcv_mappings.txt and added all the codes to what I think is the correct mappings with no luck and it looks like this (I pulled out the extra Controller 2 stuff, but it matches the 1 section with joy1...).
' CoolCV mappings for Colecovision controllers to keyboard and joystick
up_1 key1073741906 joy0_0
right_1 key1073741903 joy0_3
down_1 key1073741905 joy0_1
left_1 key1073741904 joy0_2
left_button_1 key32 joy0_10
right_button_1 key109 joy0_11
button3_1 key1073741939
button4_1 key1073741939
key1_1 key49 joy0_12
key2_1 key50 joy0_13
key3_1 key51 joy0_8
key4_1 key52 joy0_9
key5_1 key53
key6_1 key54
key7_1 key55
key8_1 key56
key9_1 key57
key*_1 key111
key0_1 key48
key#_1 key112
key_save key1073741882
key_restore key1073741883
key_exit key1073741939 joy0_4
key_pause key1073741884 joy0_5
key_reset key8 joy0_4 joy0_5
Anyone have any ideas what I'm missing?
-
@Meatball What do you mean by "no luck"? Nothing works, some things work, etc?
The configuration appears to be OK.
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.