What's new

Controller Detected by M64+ and SDLJoytest, but no buttons in game

Redgeneral

New member
Controller: SNOPY SG-505
Identified as: 'Generic USB Joystick ' (with several spaces at end and between words)
SDLJoyTest: Controller 0, identified all inputs - numbers used for creating profile in InputAutoCfg.ini

Mupen64Plus version: Mupen64Plus SDL Input Plugin version 1.99.4 with CuteMupen 0.1.0

Mupen64Plus: Identifies joystick ID, but does not respond to any buttons. D-Pad or thumb-sticks - will respond to keyboard

Joystick works fine with other programs on XP PC

Joystick Profile:
Code:
[Generic   USB  Joystick  ]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = hat(0 Right)
DPad L = hat(0 Left)
DPad D = hat(0 Down)
DPad U = hat(0 Up)
Start = button(9)
Z Trig = button(3)
B Button = button(1)
A Button = button(0)
C Button R = axis(3+)
C Button L = axis(3-)
C Button D = axis(2+)
C Button U = axis(2-)
R Trig = button(5)
L Trig = button(4)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

Image of joystick:
SNOPY-SG-505-USB-Duble-Shock-PC-_4427_1.jpg




Any assistance would be greatly appreciated
Thank you
 

Richard42

Emulator Developer
If it responds to keyboard input but not the joystick then probably it did not identify the auto-configuration. It automatically falls back to keyboard if it cannot find a good joystick.

Can you run it from the DOS prompt and post the output? It gives a lot of debug info and should be helpful.
 
OP
R

Redgeneral

New member
Ran through the dos prompt and after the emulation was stopped, the prompt displayed the following (copied from log.txt):
Code:
 __  __                         __   _  _   ____  _             
|  \/  |_   _ _ __   ___ _ __  / /_ | || | |  _ \| |_   _ ___ 
| |\/| | | | | '_ \ / _ \ '_ \| '_ \| || |_| |_) | | | | / __|  
| |  | | |_| | |_) |  __/ | | | (_) |__   _|  __/| | |_| \__ \  
|_|  |_|\__,_| .__/ \___|_| |_|\___/   |_| |_|   |_|\__,_|___/  
             |_|         http://code.google.com/p/mupen64plus/  
Mupen64Plus Console User-Interface Version 1.99.4

UI-console: attached to core library 'Mupen64Plus Core' version 1.99.4
            Includes support for Dynamic Recompiler.
Core: Goodname: Legend of Zelda, The - Ocarina of Time (U) (V1.0) [!]
Core: Name: THE LEGEND OF ZELDA
Core: MD5: 5BD1FE107BF8106B2AB6650ABECD54D6
Core: CRC: ec7011b7 7616d72b
Core: Imagetype: .z64 (native)
Core: Rom size: 33554432 bytes (or 32 Mb or 256 Megabits)
Core: Version: 1449
Core: Manufacturer: 43000000
Core: Country: USA
UI-Console: Cheat codes disabled.
UI-console: using Video plugin: 'Mupen64Plus OpenGL Video Plugin by Rice' v1.99.4
UI-console: using Audio plugin: 'Mupen64Plus SDL Audio Plugin' v1.99.4
Input: N64 Controller #1: Using SDL joystick 0 ('Generic   USB  Joystick  ')
Input: N64 Controller #2: Using keyboard/mouse
Input: N64 Controller #3: Using keyboard/mouse
Input: N64 Controller #4: Using keyboard/mouse
UI-console: using Input plugin: 'Mupen64Plus SDL Input Plugin' v1.99.4
UI-console: using RSP plugin: 'Hacktarux/Azimer High-Level Emulation RSP Plugin' v1.99.4
Input: N64 Controller #1: Using SDL joystick 0 ('Generic   USB  Joystick  ')
Input: N64 Controller #2: Using keyboard/mouse
Input: N64 Controller #3: Using keyboard/mouse
Input: N64 Controller #4: Using keyboard/mouse
Input: 4 controller(s) found, 1 plugged in and usable in the emulator
Input: Mupen64Plus SDL Input Plugin version 1.99.4 initialized.
Video: SSE processing enabled.
Video: Found ROM 'THE LEGEND OF ZELDA', CRC b71170ec2bd71676-45
Video: Enabled hacks for game: 'THE LEGEND OF ZELDA'
Video: Initializing OpenGL Device Context.
Core: Setting 32-bit video mode: 640x480
Video: Using OpenGL: NVIDIA Corporation - GeForce 7600 GS/PCI/SSE2 : 2.1.2
Video: OpenGL Combiner: Fragment Program
Audio: Initializing SDL audio subsystem...
Core: Starting R4300 emulator: Dynamic Recompiler
Core Status: Stopping emulation.
Core: R4300 emulator finished.
Core Status: Rom closed.

Also here is the cfg file (from application data):
Code:
# Mupen64Plus Configuration File
# This file is automatically read and written by the Mupen64Plus Core library

[Core]

# 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 = 0
# 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 save states are saved. If this is blank, the default value of ${UserConfigPath}/save will be used
SaveStatePath = ""
# Path to a directory to search when looking for shared data files
SharedDataPath = ""
# 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 = ""


[Video-General]

# Use fullscreen mode if True, or windowed mode if False
Fullscreen = False
# Width of output window or fullscreen width
ScreenWidth = 640
# Height of output window or fullscreen height
ScreenHeight = 480


[UI-Console]

# Directory in which to search for plugins
PluginDir = ".\"
# Filename of video plugin
VideoPlugin = "mupen64plus-video-rice.dll"
# Filename of audio plugin
AudioPlugin = "mupen64plus-audio-sdl.dll"
# Filename of input plugin
InputPlugin = "mupen64plus-input-sdl.dll"
# Filename of RSP plugin
RspPlugin = "mupen64plus-rsp-hle.dll"


[UI-wx]

# Directory in which to search for plugins
PluginDir = "C:\Program Files\emulated\wxMupen64Plus\"
# Filename of video plugin
VideoPlugin = "mupen64plus-video-rice.dll"
# Filename of audio plugin
AudioPlugin = "mupen64plus-audio-sdl.dll"
# Filename of input plugin
InputPlugin = "mupen64plus-input-sdl.dll"
# Filename of RSP plugin
RspPlugin = "mupen64plus-rsp-hle.dll"
# Where to search for games
GamesPath = "F:\Roms\N64 roms"


[Video-Rice]

# Frame Buffer Emulation (0=ROM default, 1=disable)
FrameBufferSetting = 0
# Frequency to write back the frame buffer (0=every frame, 1=every other frame, etc)
FrameBufferWriteBackControl = 0
# Render-to-texture emulation (0=none, 1=ignore, 2=normal, 3=write back, 4=write back and reload)
RenderToTexture = 0
# Control when the screen will be updated (0=ROM default, 1=VI origin update, 2=VI origin change, 3=CI change, 4=first CI change, 5=first primitive draw, 6=before screen clear, 7=after screen drawn)
ScreenUpdateSetting = 4
# Force to use normal alpha blender
NormalAlphaBlender = False
# Use a faster algorithm to speed up texture loading and CRC computation
FastTextureLoading = False
# Use different texture coordinate clamping code
AccurateTextureMapping = True
# Force emulated frame buffers to be in N64 native resolution
InN64Resolution = False
# Try to reduce Video RAM usage (should never be used)
SaveVRAM = False
# Enable this option to have better render-to-texture quality
DoubleSizeForSmallTxtrBuf = False
# Force to use normal color combiner
DefaultCombinerDisable = False
# Enable game-specific settings from INI file
EnableHacks = True
# If enabled, graphics will be drawn in WinFrame mode instead of solid and texture mode
WinFrameMode = False
# N64 Texture Memory Full Emulation (may fix some games, may break others)
FullTMEMEmulation = False
# Enable vertex clipper for fog operations
OpenGLVertexClipper = False
# Enable/Disable SSE optimizations for capable CPUs
EnableSSE = True
# Use GPU vertex shader
EnableVertexShader = False
# If this option is enabled, the plugin will skip every other frame
SkipFrame = False
# If enabled, texture enhancement will be done only for TxtRect ucode
TexRectOnly = False
# If enabled, texture enhancement will be done only for textures width+height<=128
SmallTextureOnly = False
# Enable hi-resolution texture file loading
LoadHiResTextures = False
# Enable texture dumping
DumpTexturesToFiles = False
# Display On-screen FPS
ShowFPS = False
# Enable/Disable Mipmaping
EnableMipmaping = True
# Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog)
FogMethod = 0
# Force to use texture filtering or not (0=auto: n64 choose, 1=force no filtering, 2=force filtering)
ForceTextureFilter = 0
# Choose wich texture filtering method will be used by your graphic card(0=no filtering, 1=bilinear, 2=trilinear)
TextureFilteringMethod = 1
# Primary texture enhancement filter (0=None, 1=2X, 2=2XSAI, 3=HQ2X, 4=LQ2X, 5=HQ4X, 6=Sharpen, 7=Sharpen More, 8=External, 9=Mirrored)
TextureEnhancement = 0
# Secondary texture enhancement filter (0 = none, 1-4 = filtered)
TextureEnhancementControl = 0
# Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits)
TextureQuality = 0
# Z-buffer depth (only 16 or 32)
OpenGLDepthBufferSetting = 16
# Enable/Disable MultiSampling (0=off, 2,4,8,16=quality)
MultiSampling = 0
# Color bit depth for rendering window (0=32 bits, 1=16 bits)
ColorQuality = 0
# OpenGL level to support (0=auto, 1=OGL_1.1, 2=OGL_1.2, 3=OGL_1.3, 4=OGL_1.4, 5=OGL_1.4_V2, 6=OGL_TNT2, 7=NVIDIA_OGL, 8=OGL_FRAGMENT_PROGRAM)
OpenGLRenderSetting = 0
# Enable/Disable Anisotropic Filtering for Mipmaping (0=no filtering, 2-16=quality). This is uneffective if EnableMipmaping is false. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering
AnisotropicFiltering = 0


[Audio-SDL]

# Frequency which is used if rom doesn't want to change it
DEFAULT_FREQUENCY = 33600
# Swaps left and right channels
SWAP_CHANNELS = False
# 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 = 2
# 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 = 80


[Input-SDL-Control2]

# Specifies whether this input device is currently enabled
plugged = False
# Expansion pack type, if any
plugin = 1
# Whether mouse use is enabled
mouse = False
# Specifies which input device to use
device = -2
# For analog controls, specifies the dead zone
AnalogDeadzone = "4096,4096"
# For analog controls, specifies the peak value
AnalogPeak = "32768,32768"
# Right button on the digital pad
DPad R = ""
# Left button on the digital pad
DPad L = ""
# Down button on the digital pad
DPad D = ""
# Up button on the digital pad
DPad U = ""
Start = ""
Z Trig = ""
B Button = ""
A Button = ""
# C-Right button
C Button R = ""
# C-Left button
C Button L = ""
# C-Down button
C Button D = ""
# C-Up button
C Button U = ""
R Trig = ""
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Horizontal analog axis
X Axis = ""
# Vertical analog axis
Y Axis = ""


[Input-SDL-Control3]

# Specifies whether this input device is currently enabled
plugged = False
# Expansion pack type, if any
plugin = 1
# Whether mouse use is enabled
mouse = False
# Specifies which input device to use
device = -2
# For analog controls, specifies the dead zone
AnalogDeadzone = "4096,4096"
# For analog controls, specifies the peak value
AnalogPeak = "32768,32768"
# Right button on the digital pad
DPad R = ""
# Left button on the digital pad
DPad L = ""
# Down button on the digital pad
DPad D = ""
# Up button on the digital pad
DPad U = ""
Start = ""
Z Trig = ""
B Button = ""
A Button = ""
# C-Right button
C Button R = ""
# C-Left button
C Button L = ""
# C-Down button
C Button D = ""
# C-Up button
C Button U = ""
R Trig = ""
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Horizontal analog axis
X Axis = ""
# Vertical analog axis
Y Axis = ""


[Input-SDL-Control4]

# Specifies whether this input device is currently enabled
plugged = False
# Expansion pack type, if any
plugin = 1
# Whether mouse use is enabled
mouse = False
# Specifies which input device to use
device = -2
# For analog controls, specifies the dead zone
AnalogDeadzone = "4096,4096"
# For analog controls, specifies the peak value
AnalogPeak = "32768,32768"
# Right button on the digital pad
DPad R = ""
# Left button on the digital pad
DPad L = ""
# Down button on the digital pad
DPad D = ""
# Up button on the digital pad
DPad U = ""
Start = ""
Z Trig = ""
B Button = ""
A Button = ""
# C-Right button
C Button R = ""
# C-Left button
C Button L = ""
# C-Down button
C Button D = ""
# C-Up button
C Button U = ""
R Trig = ""
L Trig = ""
Mempak switch = ""
Rumblepak switch = ""
# Horizontal analog axis
X Axis = ""
# Vertical analog axis
Y Axis = ""


[Input-SDL-Control1]

# 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
# Specifies which joystick is bound to this controller: -2=Keyboard/mouse, -1=Auto config, 0 or more= SDL Joystick number
device = 0
# 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(304)"
C Button R = "key(108)"
C Button L = "key(106)"
C Button D = "key(107)"
C Button U = "key(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)"
 
Last edited:

Richard42

Emulator Developer
If you look at the last input section in your config file ([Input-SDL-Control1]), you can see that all of the buttons are set to their keyboard defaults. Even though it recognizes the joystick name, it still uses the values stored in the config file, not the auto-configuration. It looks like your config got messed up a bit; I bet it was due to some unforeseen interaction between the input plugin and cutemupen. It's easy to fix for your case (just delete your config file or this section and it will auto-detect your joystick).

It kind of makes me think I should get rid of the saved input configuration and only rely on the auto-config, but then users would have problems setting up their own personalized config through a GUI front-end.
 
OP
R

Redgeneral

New member
Deleting config solved all my problems - thank you

A generated config seems fine until it stops being generated with the new controller configuration (such as my problem) - auto config for controllers seems to be a better idea, if there is a preference control file as well

Surely any program that can edit config file could be altered to edit the auto config file
- check if the plugged in joystick is listed in the auto config
- if so, bring up button bindings, edit and then save
- if not on the auto config, edit button bindings and add to the config file

There could be a preference control file to assign named controllers and an alternative if it is not present to each n64 controller port
- [e.g. controller 1 -> defualt: generic usb joystick else: keyboard else2: none / controller 2 -> default: xbox 360 controller else: none / controller 3 -> default: none else: none / controller 4 -> default: none else: none]
- This could also be edited by the GUI frontend or by Mupen prompt commands
- The fresh install mupen would have the default for controller 1 listed as keyboard, user then swaps this for a joystick with the keyboard moved to the alternative


Thank you for solving with my problem, it is greatly appreciated.

I'm now off to play rayman 2
 

Top