Forum Replies Created
cafarellidigitalParticipant06/29/2015 at 03:06Post count: 10
I’m having almost this exact problem. I’m on Retropie 3 – Beta 2. The Auto Remapping feature is fantastic, yet it is not perfect. I’d like some more control.
I’m using a PS3 Bluetooth controller as my main controller for the system. For the NES console, Button A (NES) is “Circle” on the PS3 Controller and Button B (NES) is “X” on the PS3 Controller. To me this feels awkward, and I’d rather have the buttons shifted one button over to this: Button A (NES) is “X” (PS3), and Button B (NES) is “Square” (PS3).
To simplify… This is what I currently have:
NES A = PS3 Circle
NES B = PS3 X
And this is what I want to have:
NES A = PS3 X
NES B = PS3 Square
I know that I can do this fairly simply by adding a few lines into the NES config file (iaaberg, this may help you), found at “\opt\retropie\configs\nes\retroarch.cfg”. I can just add the following:
input_player1_a_btn = "14" input_player1_b_btn = "15" input_player2_a_btn = "14" input_player2_b_btn = "15"
However, this breaks the remapping feature, because now any different controllers I connect to the RetroPie will take those button mappings, overriding the Auto Config. This makes the fix above kind of useless.
I wish instead I could modify how the NES emulator takes the inputs. I wish I could do something like:
NES_input_a_btn = input_b_btn NES_input_b_btn = input_y_btn
That might get a little complicated, but the principle is simple. There’s a variable for the specific controller input, there’s a variable for the input of the emulator, so there should be a bridge of some sort in between where you can dynamically mix and match the variables to your liking. This way, the dynamic remapping feature stays intact, but the user still has freedom to make changes like I just stated.
For a little more info, here’s the full story. I have a PS3 Bluetooth controller, and a PS2 controller connected via PSX-to-USB adapter. If my Bluetooth controller runs out of battery, I use the PS2 controller. But if I want to play a NES game, I can’t, because the two controllers have different internal button mappings, like so:
PS3 Face Button ID’s:
Triangle = 12
Circle = 13
X = 14
Square = 15
PS2 (via Adapter) Face Button ID’s:
Triangle = 0
Circle = 1
X = 2
Square = 3
If I hardcode a change to the NES configs, it won’t be usable for both controllers. Does anyone know of a way to get the correct result as I described?cafarellidigitalParticipant03/19/2015 at 11:03Post count: 10
davejaca, thanks for responding! That kind of works, but with a problem.
So, say I start a game, and then open the RetroArch menu, go to the input section and switch the controllers; then I save that config, and overwrite the retroarch.cfg file (as per the instructions in the video you linked). That is the same as taking the current retroarch.cfg file, and editing it directly (I’ve tried it both ways, and can confirm).
In both instances, what is happening is this…
input_player1_joypad_index = 0 input_player2_joypad_index = 1
… is turning into this:
input_player1_joypad_index = 1 input_player2_joypad_index = 0
Basically, Player 1 and 2 are switched. This works for every game and every system. I can turn the Raspberry Pi off and on, and it will work.
However, there is still a problem. The above only works if I connect both controllers to the system before starting a game. If I only connect 1 controller (say I want to play a single player game by myself), then that controller will be seen as Player 2, because it says so in the config file. I won’t be able to control anything, since that controller is Player 2, and there is no Player 1 connected. At this point, if I then connect the 2nd controller, it will be forced to become Player 1. Then if I exit the game and emulator, and then enter a game again, the Players will be switched again (correctly, kind of). This is a bit too whacky of a side-effect for me to call it a solution.
Essentially, my problem is this (as stated from my first post):
Connect one controller, that controller is seen as Player 1.
Connect two controllers, Controller 1 is Player 2, Controller 2 is Player 1.
If I do a jstest on the controllers, Controller 1 correctly identifies as js0, and Controller 2 correctly identifies as js1. So the issue is not occurring in the operating system, as it sees the controllers as their correct input indexes, but in retroarch somewhere.
Thanks for your suggestion, but it’s only a band-aid. In order for it to work, I’ll have to connect both controllers every time I use the system, even if it’s just 1 person playing.
Update: Also, interestingly, the Controller indexes switch for Mupen64Plus, which is not governed by RetroArch settings. This must mean that the issue is not directly related to RetroArch. MAME, however, does not have this issue, and the Controller indexes work just fine.cafarellidigitalParticipant03/19/2015 at 06:45Post count: 10
Good question. I’m not quite sure that’s possible, as all other items that show up in that menu will proceed to the detailed menu before launching. I think that’s just how Emulation Station is built.
Perhaps they could have a better answer for you at the Emulation Station forum: http://emulationstation.org/forum/cafarellidigitalParticipant03/19/2015 at 06:41Post count: 10
I think this can be done by modifying the theme of Emulation Station. As a result, this question is more for Emulation Station, than for RetroPie.
You can find the default Simple theme on your Raspberry Pi in this directory:
There you will find information specific to each console. For the main menu, and system-wide changes, look at the “simple.xml” file, and the “art” folder in the above directory. I believe you can change the color of the background by creating an 8×8 square of color (like “bright.png”, “dark.png”, etc), putting it in the “art” folder, and then modifying the “simple.xml” file to point at the new color file.
Anything beyond what you see in that directory cannot be modified. You can do quite a bit with just the theming system, but anything beyond cosmetic changes is impossible for now.
If you have any other questions, check out the Emulation Station forum: http://emulationstation.org/forum/cafarellidigitalParticipant03/19/2015 at 06:31Post count: 10
I think you may be confused. Raspbian is an operating system (Debian optimized for the Raspberry Pi), whereas XBMC is an application. So the answer is, most likely, no. I’d be surprised if you could open an OS like Raspbian as a virtual environment on a Raspberry Pi.
In fact, RetroPie uses Raspbian as the base OS, and then adds on applications and tweaks from there. So, RetroPie is built inside of Raspbian.
Think of Raspbian as Windows or OSX, and RetroPie as a program running on that OS, like Firefox, Photoshop, or VLC. You can’t open Windows from inside of Photoshop, just like you can’t run Raspbian from inside RetroPie.cafarellidigitalParticipant03/09/2015 at 22:17Post count: 10
The rom directory is /home/pi/RetroPie/roms/[console name here]
The save file is located in the same directory, and with the same filename (except for the file extension) as the game rom you are playing. For instance, if you are playing Sonic the Hedgehog with the default Genesis emulator, and the rom file is named “Sonic the Hedgehog.bin”, then the save file will be located here:
/home/pi/RetroPie/roms/megadrive/Sonic the Hedgehog.statecafarellidigitalParticipant03/09/2015 at 21:55Post count: 10
robertybob: I agree, that is my main concern. The only thing I can hope is that when in the Emulation Station menu, you will have plenty of spare RAM/CPU to power these videos, and then once entering a game, the videos are flushed (is that a thing?) from RAM.
nilsbyte: Ok, I will.