MisterB Posted December 5, 2015 Posted December 5, 2015 I am working to simplify my setup by standardizing on a handful of emulators and a minimal set of input configurations. But I want to use original controllers wherever possible. To that end, I have been spending a lot of time setting up RetroArch and the BlissBox 4-Play to play nicely together. Ultimately I found that nearly everything works well out of the box! If you run the retroarch-joyconfig program with a PS2 controller attached, then the default 4-play controller mapping combined with RA's default Retropad/core input mapping removed a lot of complexity. You can swap controllers on the fly to match whatever system you are playing...and it just works. But... The biggest challenge that I have faced is getting this setup to play work cleanly with Nintendo 64 system. By default, the Mupen64Plus core in RetroArch assumes that you are using an XBOX or DualShock-style controller, and goes through some strange hoops to support the N64's C-buttons. So when you try to use a real N64 controller, it's almost unusable. The below RA configuration settings allow you to cleanly use a real N64 controller connected to a BlissBox 4-Play in RetroArch/Mupen64Plus. All of the details of what the config settings so and how to apply them are in the file. So I won't describe them any further here I hope this helps save other people some time and frustration. Please try it out and if you find any issues with it, let me know, and I will update this post accordingly! ############################################################################### # RetroArch input mapping file for using real N64 controllers in # Mupen64Plus with a BlissBox 4-Play adapter. # # The default input mapping for the Mupen64 core assumes the player is using # an XBOX or PS Dualshock-style controller. Because these controllers do not # have enough face buttons to emulate the N64 C-buttons in addition to A & B, # the core provides 2 ways to send C-button input: # 1) Retropad right analog stick # 2) Retropad Y => C-Left, X => C-Up # Holding R2 overrides Retropad A & B to map B => C-Down and A => C-Right # # When attempting to use a real N64 controller, the R2 button override # functionality isn't needed. In fact, it greatly confuses the configuration. # There are also a few additional tweaks required to improve usability. # So this input file overrides the 'default' 4-Play input assignments # settings to support a real N64 controller layout without any additional # remapping at the RA core level. # # Consider 'default' 4-Play input settings to be those set by # retroarch-joyconfig when using a BlissBox 4-Play with a PS2-DualShock # controller. The following changes were applied to that config to make # everything play nicely together: # # 1) Limited C-Button input to only the right analog stick by disabling the # the Retropad buttons that are normally mapped to C-button functions: # - Retropad inputs X, Y, and R2 mapped to "nul" # 2) Assign Retropad's right-analog inputs to the 4-Play's N64 # C-button assignments: # - Remove the default Retropad right analog inputs by # mapping to "nul" # - Assign Retropad right analog inputs to the real N64 # C-button inputs # 3) Swap the position of the A & B buttons to match the real N64 layout # 4) Z-Trigger assignment changed from 4-Play's SELECT to L2 # 5) Disable remaining buttons that don't exist on a real N64 controller: # - Retropad inputs SELECT, L3, R3 mapped to "nul" # # In order to effectively use this configuration, you should NOT have any # core input remapping files enabled. Check the following settings: # auto_remaps_enable = "false" # input_remap_binds_enable = "false" # input_remapping_path = "" # # These settings can be applied by merging them into your retroarch.cfg # file, or the per-core config if applicable. If you do this, you need to # disable the joypad autoconfig functionality, since the autoconfig settings # are higher priority and will override settings included in the master # .cfg file. You can disable the autoconfig by changing the following # setting: # input_autodetect_enable = "false" # # This config can also be applied through the core-specific configs. Simply # add these settings to "<RA_Config_Dir>\Mupen64Plus\Mupen64Plus.cfg". RA # will automatically look for this file and override the main .cfg settings # with anything in there. If you use this method, you still need to disable # the joypad autoconfig settings as mentioned above. # # The final method for applying these settings is to use the append config # functionality from the command line: "--appendconfig file1.cfg,file2.cfg" # Just pass the file containing these settings to that option. If you use # this approach, you DO NOT need to disable the joypad autoconfig. The # appendconfig setting has the highest precendece, and will override all # other configuration settings used by RetroArch. ############################################################################### input_player1_b_btn = "0" input_player1_y_btn = "nul" input_player1_select_btn = "nul" input_player1_start_btn = "5" input_player1_up_btn = "10" input_player1_down_btn = "11" input_player1_left_btn = "12" input_player1_right_btn = "13" input_player1_a_btn = "1" input_player1_x_btn = "nul" input_player1_l_btn = "6" input_player1_r_btn = "7" input_player1_l2_btn = "4" input_player1_r2_btn = "nul" input_player1_l3_btn = "nul" input_player1_r3_btn = "nul" input_player1_l_x_plus_axis = "+0" input_player1_l_x_minus_axis = "-0" input_player1_l_y_plus_axis = "+1" input_player1_l_y_minus_axis = "-1" input_player1_r_x_plus_btn = "9" input_player1_r_x_minus_btn = "2" input_player1_r_y_plus_btn = "8" input_player1_r_y_minus_btn = "3" input_player1_r_x_plus_axis = "nul" input_player1_r_x_minus_axis = "nul" input_player1_r_y_plus_axis = "nul" input_player1_r_y_minus_axis = "nul" input_player2_b_btn = "0" input_player2_y_btn = "nul" input_player2_select_btn = "nul" input_player2_start_btn = "5" input_player2_up_btn = "10" input_player2_down_btn = "11" input_player2_left_btn = "12" input_player2_right_btn = "13" input_player2_a_btn = "1" input_player2_x_btn = "nul" input_player2_l_btn = "6" input_player2_r_btn = "7" input_player2_l2_btn = "4" input_player2_r2_btn = "nul" input_player2_l3_btn = "nul" input_player2_r3_btn = "nul" input_player2_l_x_plus_axis = "+0" input_player2_l_x_minus_axis = "-0" input_player2_l_y_plus_axis = "+1" input_player2_l_y_minus_axis = "-1" input_player2_r_x_plus_btn = "9" input_player2_r_x_minus_btn = "2" input_player2_r_y_plus_btn = "8" input_player2_r_y_minus_btn = "3" input_player2_r_x_plus_axis = "nul" input_player2_r_x_minus_axis = "nul" input_player2_r_y_plus_axis = "nul" input_player2_r_y_minus_axis = "nul" input_player3_b_btn = "0" input_player3_y_btn = "nul" input_player3_select_btn = "nul" input_player3_start_btn = "5" input_player3_up_btn = "10" input_player3_down_btn = "11" input_player3_left_btn = "12" input_player3_right_btn = "13" input_player3_a_btn = "1" input_player3_x_btn = "nul" input_player3_l_btn = "6" input_player3_r_btn = "7" input_player3_l2_btn = "4" input_player3_r2_btn = "nul" input_player3_l3_btn = "nul" input_player3_r3_btn = "nul" input_player3_l_x_plus_axis = "+0" input_player3_l_x_minus_axis = "-0" input_player3_l_y_plus_axis = "+1" input_player3_l_y_minus_axis = "-1" input_player3_r_x_plus_btn = "9" input_player3_r_x_minus_btn = "2" input_player3_r_y_plus_btn = "8" input_player3_r_y_minus_btn = "3" input_player3_r_x_plus_axis = "nul" input_player3_r_x_minus_axis = "nul" input_player3_r_y_plus_axis = "nul" input_player3_r_y_minus_axis = "nul" input_player4_b_btn = "0" input_player4_y_btn = "nul" input_player4_select_btn = "nul" input_player4_start_btn = "5" input_player4_up_btn = "10" input_player4_down_btn = "11" input_player4_left_btn = "12" input_player4_right_btn = "13" input_player4_a_btn = "1" input_player4_x_btn = "nul" input_player4_l_btn = "6" input_player4_r_btn = "7" input_player4_l2_btn = "4" input_player4_r2_btn = "nul" input_player4_l3_btn = "nul" input_player4_r3_btn = "nul" input_player4_l_x_plus_axis = "+0" input_player4_l_x_minus_axis = "-0" input_player4_l_y_plus_axis = "+1" input_player4_l_y_minus_axis = "-1" input_player4_r_x_plus_btn = "9" input_player4_r_x_minus_btn = "2" input_player4_r_y_plus_btn = "8" input_player4_r_y_minus_btn = "3" input_player4_r_x_plus_axis = "nul" input_player4_r_x_minus_axis = "nul" input_player4_r_y_plus_axis = "nul" input_player4_r_y_minus_axis = "nul"
ulao Posted December 14, 2015 Posted December 14, 2015 By default, the Mupen64Plus core in RetroArch assumes that you are using an XBOX or DualShock-style controller, and goes through some strange hoops to support the N64's C-buttons. Is it that maybe they are using xinput instead of DX? Not sure it would help but x360ce could possibly translate DX to xinput in that one case.
MisterB Posted February 4, 2016 Author Posted February 4, 2016 Noi, it doesn't have to do with the input software layer, but the physical layout of those gamepads (only 4 face buttons - X,Y,A, versus a real N64 (6 face buttons - A,B, 4xC)
Recommended Posts
Archived
This topic is now archived and is closed to further replies.