Nintedo 64 gamepads make me crazy!

Hi everyone! I’ve bought 4 N64 gamepads to play old games on PC with Archlinux. Theses gamepads are not orginal, they’re made in china and are directly USB devices. So, I can use every buttons on all emulators/cores but with mupen64’score A and B are also C-Down and C-Left. I don’t found any solution to map correctly the C-buttons to play games like “Goldeneye” I see, with killer instinct gold" I can set the C-buttons (but I loose L) and save the mapping configuration for the core, but if I change another N64’s game, it doesn’t work. Is there a method to use correctly a N64-like gamepad?

If you try the ParaLLEl-N64 core, it has a core option that will remove that behavior and make the buttons stop moving around with certain games. I think it’s called “alternate mapping” or something like that.

i really need an option inside the “ParaLLEI-N64” core, to use the D-Pad of my Xbox 360 Gamepad, like main Stick, but this core, current not allow that, and with Mupen64Plus i can’t start it because ever happen a Segmentation Fault an immediately close RetroArch.

i try to play with right analog but is uncomfortable. i don’t understand why an option to use the d-pad like main stick it not available. and well with “mupen64plus” emulator, i can’t do the retroachievements. but i can customize the controls like i need.

my content of file
~/.config/mupen64plus/mupen64plus.cfg :

# Mupen64Plus Configuration File
# This file is automatically read and written by the Mupen64Plus Core library

[Audio-SDL]

# Mupen64Plus SDL Audio Plugin config parameter version number
Version = 1
# Frequency which is used if rom doesn't want to change it
DEFAULT_FREQUENCY = 33600
# Swaps left and right channels
SWAP_CHANNELS = True
# Size of primary buffer in output samples. This is where audio is loaded after it's extracted from n64's memory.
PRIMARY_BUFFER_SIZE = 16384
# Fullness level target for Primary audio buffer, in equivalent output samples
PRIMARY_BUFFER_TARGET = 10240
# Size of secondary buffer in output samples. This is SDL's hardware buffer.
SECONDARY_BUFFER_SIZE = 2048
# Audio resampling algorithm.  1 = unfiltered, 2 = SINC resampling (Best Quality, requires libsamplerate)
RESAMPLE = 1
# Volume control type: 1 = SDL (only affects Mupen64Plus output)  2 = OSS mixer (adjusts master PC volume)
VOLUME_CONTROL_TYPE = 1
# Percentage change each time the volume is increased or decreased
VOLUME_ADJUST = 5
# Default volume when a game is started.  Only used if VOLUME_CONTROL_TYPE is 1
VOLUME_DEFAULT = 70


[Core]

# Mupen64Plus Core config parameter set version number.  Please don't change this version number.
Version = 1.010000
# Draw on-screen display if True, otherwise don't draw OSD
OnScreenDisplay = True
# Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more
R4300Emulator = 2
# Disable compiled jump commands in dynamic recompiler (should be set to False)
NoCompiledJump = False
# Disable 4MB expansion RAM pack. May be necessary for some games
DisableExtraMem = False
# Increment the save state slot after each save operation
AutoStateSlotIncrement = False
# Activate the R4300 debugger when ROM execution begins, if core was built with Debugger support
EnableDebugger = False
# Save state slot (0-9) to use when saving/loading the emulator state
CurrentStateSlot = 1
# Path to directory where screenshots are saved. If this is blank, the default value of ${UserConfigPath}/screenshot will be used
ScreenshotPath = ""
# Path to directory where emulator save states (snapshots) are saved. If this is blank, the default value of ${UserConfigPath}/save will be used
SaveStatePath = ""
# Path to directory where SRAM/EEPROM data (in-game saves) are stored. If this is blank, the default value of ${UserConfigPath}/save will be used
SaveSRAMPath = ""
# Path to a directory to search when looking for shared data files
SharedDataPath = ""
# Delay interrupt after DMA SI read/write
DelaySI = True
# Force number of cycles per emulated instruction
CountPerOp = 0


[CoreEvents]

# Mupen64Plus CoreEvents config parameter set version number.  Please don't change
Version = 1
# SDL keysym for stopping the emulator
Kbd Mapping Stop = 27
# SDL keysym for switching between fullscreen/windowed modes
Kbd Mapping Fullscreen = 323
# SDL keysym for saving the emulator state
Kbd Mapping Save State = 286
# SDL keysym for loading the emulator state
Kbd Mapping Load State = 288
# SDL keysym for advancing the save state slot
Kbd Mapping Increment Slot = 0
# SDL keysym for resetting the emulator
Kbd Mapping Reset = 290
# SDL keysym for slowing down the emulator
Kbd Mapping Speed Down = 291
# SDL keysym for speeding up the emulator
Kbd Mapping Speed Up = 292
# SDL keysym for taking a screenshot
Kbd Mapping Screenshot = 293
# SDL keysym for pausing the emulator
Kbd Mapping Pause = 112
# SDL keysym for muting/unmuting the sound
Kbd Mapping Mute = 109
# SDL keysym for increasing the volume
Kbd Mapping Increase Volume = 93
# SDL keysym for decreasing the volume
Kbd Mapping Decrease Volume = 91
# SDL keysym for temporarily going really fast
Kbd Mapping Fast Forward = 102
# SDL keysym for advancing by one frame when paused
Kbd Mapping Frame Advance = 47
# SDL keysym for pressing the game shark button
Kbd Mapping Gameshark = 103
# Joystick event string for stopping the emulator
Joy Mapping Stop = ""
# Joystick event string for switching between fullscreen/windowed modes
Joy Mapping Fullscreen = ""
# Joystick event string for saving the emulator state
Joy Mapping Save State = ""
# Joystick event string for loading the emulator state
Joy Mapping Load State = ""
# Joystick event string for advancing the save state slot
Joy Mapping Increment Slot = ""
# Joystick event string for taking a screenshot
Joy Mapping Screenshot = ""
# Joystick event string for pausing the emulator
Joy Mapping Pause = ""
# Joystick event string for muting/unmuting the sound
Joy Mapping Mute = ""
# Joystick event string for increasing the volume
Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
# Joystick event string for pressing the game shark button
Joy Mapping Gameshark = ""


[Input-SDL-Control1]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 0
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = 0
# SDL joystick name (or Keyboard)
name = "Microsoft X-Box 360 pad"
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = True
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 5
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "16384,16384"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = ""
DPad L = ""
DPad D = ""
DPad U = ""
Start = "button(7)"
Z Trig = "axis(5+,2+)"
B Button = "button(2,1)"
A Button = "button(0,3)"
C Button R = "axis(4+)"
C Button L = "axis(4-)"
C Button D = "axis(3+)"
C Button U = "axis(3-)"
R Trig = "button(5)"
L Trig = "button(4)"
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = "hat(0 Left Right)"
Y Axis = "hat(0 Up Down)"


[Input-SDL-Control2]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 0
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = 1
# SDL joystick name (or Keyboard)
name = "LUKEN USB Control"
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = True
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 1
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "4096,4096"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = ""
DPad L = ""
DPad D = ""
DPad U = ""
Start = "button(9)"
Z Trig = "button(1)"
B Button = "button(3)"
A Button = "button(2)"
C Button R = "button(7)"
C Button L = ""
C Button D = ""
C Button U = "button(5)"
R Trig = "button(0)"
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = "axis(0-,0+)"
Y Axis = "axis(1-,1+)"


[Input-SDL-Control3]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 0
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = 2
# SDL joystick name (or Keyboard)
name = "Keyboard"
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = True
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 2
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "4096,4096"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = "key(100)"
DPad L = "key(97)"
DPad D = "key(115)"
DPad U = "key(119)"
Start = "key(13)"
Z Trig = "key(122)"
B Button = "key(306)"
A Button = "key(120)"
C Button R = "key(108)"
C Button L = "key(106)"
C Button D = "key(107)"
C Button U = "key(97,105)"
R Trig = "key(99)"
L Trig = "key(120)"
Mempak switch = "key(44)"
Rumblepak switch = "key(46)"
# Analog axis configuration mappings
X Axis = "key(276,275)"
Y Axis = "key(273,274)"


[Input-SDL-Control4]

# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 0
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = 3
# SDL joystick name (or Keyboard)
name = ""
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = False
# Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
plugin = 1
# If True, then mouse buttons may be used with this controller
mouse = False
# Scaling factor for mouse movements.  For X, Y axes.
MouseSensitivity = "2.00,2.00"
# The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
AnalogDeadzone = "4096,4096"
# An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
AnalogPeak = "32768,32768"
# Digital button configuration mappings
DPad R = ""
DPad L = ""
DPad D = ""
DPad U = ""
Start = ""
Z Trig = ""
B Button = ""
A Button = ""
C Button R = ""
C Button L = ""
C Button D = ""
C Button U = ""
R Trig = ""
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = ""
Y Axis = ""


[UI-Console]

# Mupen64Plus UI-Console config parameter set version number.  Please don't change
Version = 1
# Directory in which to search for plugins
PluginDir = "./"
# Filename of video plugin
VideoPlugin = "mupen64plus-video-glide64.so"
# Filename of audio plugin
AudioPlugin = "mupen64plus-audio-sdl.so"
# Filename of input plugin
InputPlugin = "mupen64plus-input-sdl.so"
# Filename of RSP plugin
RspPlugin = "mupen64plus-rsp-hle.so"


[UI-wx]

# Directory in which to search for plugins
PluginDir = "/usr/lib/i386-linux-gnu/mupen64plus//"
# Filename of video plugin
VideoPlugin = "mupen64plus-video-glide64.so"
# Filename of audio plugin
AudioPlugin = "mupen64plus-audio-sdl.so"
# Filename of input plugin
InputPlugin = "mupen64plus-input-sdl.so"
# Filename of RSP plugin
RspPlugin = "mupen64plus-rsp-hle.so"
# Where to search for games
GamesPath = "/media/Wine/Juegos/N64/Roms"
# Whether to run game in main frame or in external frame. Running in external frame works better on Linux.
VideoExtension = "external"


[Video-General]

Fullscreen = False
# Width of output window or fullscreen width
ScreenWidth = 1018
# Height of output window or fullscreen height
ScreenHeight = 714
# If true, activate the SDL_GL_SWAP_CONTROL attribute
VerticalSync = True


[Video-Glide64]

# Card ID
card_id = 0
# Depth bias level
depth_bias = 1
# Auto-detect microcode
autodetect_ucode = True
# Force microcode
ucode = 0
# Wireframe display
wireframe = False
# Wireframe mode: 0=Normal colors, 1=Vertex colors, 2=Red only
wfmode = 0
# Filtering mode: 0=None, 1=Force bilinear, 2=Force point-sampled
filtering = 2
# Fog enabled
fog = True
# Buffer clear on every frame
buff_clear = True
# Vertical sync
vsync = True
# Fast CRC
fast_crc = True
# Buffer swapping method: 0=Old, 1=New, 2=Hybrid
swapmode = 1
# LOD calculation: 0=Off, 1=Fast, 2=Precise
lodmode = 2
# Logging
logging = False
log_clear = False
elogging = False
# Filter cache
filter_cache = False
# Detect CPU writes
detect_cpu_write = True
# Display unknown combines as red
unk_as_red = False
# Log unknown combines
log_unk = False
unk_clear = False
# Wrap textures too big for tmem
wrap_big_tex = False
# Zelda corona fix
flame_corona = False
# Display performance stats (add together desired flags): 1=FPS counter, 2=VI/s counter, 4=% speed, 8=FPS transparent
show_fps = 0
# Clock enabled
clock = False
# Clock is 24-hour
clock_24_hr = False
# Framebuffer read every frame
fb_read_always = True
# Framebuffer read alpha
fb_read_alpha = True
# Smart framebuffer
fb_smart = True
# Motion blur
motionblur = False
# Hi-res framebuffer
fb_hires = False
# Get framebuffer info
fb_get_info = True
# Clear framebuffer
fb_clear = True
# Depth buffer render
fb_render = True
# Use custom INI settings
custom_ini = False
# Texture filter: 0=None, 1=Blur edges, 2=Super 2xSai, 3=Hq2x, 4=Hq4x
tex_filter = 0
# Disable dithered alpha
noditheredalpha = False
# Disable GLSL combiners
noglsl = False
# Use framebuffer objects
fbo = True
# Disable aux buffer
disable_auxbuf = False