New NextThing SNES Gamepad not Working

I just got a new gamepad, and it does not appear to be compatible with MonoGame.

(its the controller at the bottom of this page which looks like an SNES controller: https://getchip.com/pages/store)

My game works fine with XBOX One and 360 controllers, but this one doesn’t seem to be detected. However, windows detects it and registers button presses, and it work for other applications (tested with an emulator and some steam games).

-	GamePad.GetCapabilities(PlayerIndex.One)	{Microsoft.Xna.Framework.Input.GamePadCapabilities}	Microsoft.Xna.Framework.Input.GamePadCapabilities
		GamePadType	Unknown	Microsoft.Xna.Framework.Input.GamePadType
		HasAButton	false	bool
		HasBButton	false	bool
		HasBackButton	false	bool
		HasBigButton	false	bool
		HasDPadDownButton	false	bool
		HasDPadLeftButton	false	bool
		HasDPadRightButton	false	bool
		HasDPadUpButton	false	bool
		HasLeftShoulderButton	false	bool
		HasLeftStickButton	false	bool
		HasLeftTrigger	false	bool
		HasLeftVibrationMotor	false	bool
		HasLeftXThumbStick	false	bool
		HasLeftYThumbStick	false	bool
		HasRightShoulderButton	false	bool
		HasRightStickButton	false	bool
		HasRightTrigger	false	bool
		HasRightVibrationMotor	false	bool
		HasRightXThumbStick	false	bool
		HasRightYThumbStick	false	bool
		HasStartButton	false	bool
		HasVoiceSupport	false	bool
		HasXButton	false	bool
		HasYButton	false	bool
		IsConnected	false	bool

Is there anything on my end that I can do to get this working? I am not building Monogame from source.

What flavour of MonoGame are you using? DirectX or OpenGL? DirectX uses XInput, which should just work. I can’t recall what the OpenGL version did in the 3.5 release. I think it used OpenTK’s input which may need some mapping for the controller.

I am targeting:

…\MonoGame\v3.0\Assemblies\Windows\MonoGame.Framework.dll

“MonoGame for Windows Desktop (DirectX)”

Version 3.5.1.1679

So it sounds like it is using DX under the hood.

I’d recommend trying the latest development builds of MonoGame. They switched to SDL instead of OpenTK which solved the gamepad issues I was having (different issues than yours).

I have a couple USB SNES controllers myself and they work, although they are different than what you have and the mapping is a bit wacked out on them.

Unfortunately I am on the latest version already I think. Do you know what version you’re on? My version is 3.5.1.1679

I was actually referring to the latest development branch build, which is 3.6.0.1227. I believe 3.6 is when they made the switch to SDL.

He is talking about this

Yes that’s correct, but he doesn’t need to build from source if he doesn’t want to. The downloads page has links for the development build installers.
http://www.monogame.net/downloads/

Here’s the one for Windows.
http://teamcity.monogame.net/repository/download/MonoGame_PackagingWindows/latest.lastSuccessful/MonoGameSetup.exe?guest=1

1 Like

This is not relevant for a Windows DX project, that only changed for OpenGL projects. It’s XInput in the backend for Windows DX in 3.5 and develop. I don’t know how/if you can map keys if they’re not recognized by XInput though

I would have thought the change would be framework wide, no?

I am now on 3.6 and still no luck. I also tried the GL version of MonoGame, and it also does not detect the gamepad.

When I run this SDL input sample app, it does detect my gamepad. Do you know where MonoGame stores its gamepad mapping database? (something like this: https://github.com/gabomdq/SDL_GameControllerDB)

I suspect it just needs to be updated.

You’re right, if it works in latest SDL and not in MG it’s because the mapping is not up to date. In develop the mapping is updated to a newer version that supports your controller. The mapping is embedded in the MG Frameworm .dll, so there’s no easy way to update it. We should probably change that :thinking:

1 Like