mgba-emu / mgba

mGBA Game Boy Advance Emulator
https://mgba.io/
Mozilla Public License 2.0
5.76k stars 794 forks source link

0.11 rumble not working #3360

Open Hexaae opened 3 days ago

Hexaae commented 3 days ago

mGBA 0.11-8612-49bddb92e Today I played again Pokemon Pinball (GBA), WarioWare (GBA) and Drill Dozer (GBA) with Switch Pro Controller (EasySMX x10). The only one with working rumble is WarioWare. Game Boy Player features enabled by default.

I also tried Pokemon Pinball (GBC) and rumble is working.

(List of GBA games with rumble support: https://consolemods.org/wiki/GBA:List_of_GBA_Games_with_Rumble_Support )

Squall-Leonhart commented 23 hours ago

With " Game Boy Player features enabled by default." checked, the Rumble setting ungreys on the "Options" screen where it defaults to 'Off' in Pokemon Pinball (GBA).

Rumble is immediately felt upon switching it to 'On'.

Tested 0.10.3, and nightly.

endrift commented 23 hours ago

Squall, you're missing the context here: https://github.com/mgba-emu/mgba/issues/3147

Squall-Leonhart commented 23 hours ago

Is this an initial amplitude problem?, some of those 3rd party controls have an underated motor controller for their minimum rotation to actually move.

This was a problem with the original Xbox controller, once 360 brought compatibilitly to pc the driver always did an initial full strength kick off (iirc, we did similar in X360CE to emulate the behavior?) which would explain the Xbox mode being fine.

endrift commented 22 hours ago

Actually wait, the title says 0.10.3, but the text says 0.11. We already knew there were issues in 0.10.3, but I at least partially fixed those. Is the title wrong?

Hexaae commented 21 hours ago

Actually wait, the title says 0.10.3, but the text says 0.11. We already knew there were issues in 0.10.3, but I at least partially fixed those. Is the title wrong?

Ooops, yes sorry. Correct version is in the first msg.

The strange thing is rumble (& gyro) do work fine for example in Wario Ware but there is no effect in those other games, so I think is something in the rumble emulation with some games only... Does it work for you with mentioned games or it's just me?

@Squall-Leonhart No rumble is ok (even when set to min/max power) with other games but with those mentioned games simply absent...

With Pokemon Pinball (GBA) (not working) for example I see these settings selected but greyed out: image

With Wario Ware (GBA) (working): image

As far as I can remember it was fixed at some point (after a change in rumble algorithm code) but it seems it returned... ... I've found it: image

Squall-Leonhart commented 19 hours ago

Just to be clear Hexaae, i was talking about the games own options screen,

Running the game without GB Player being force abled in mgba will force the option back to Off on the next start,

You said drilldozer was broken in the previous bugs case which uses a small motor, while warioware uses a bigger motor but both are working in this case?

endrift commented 19 hours ago

The cartridge interface to both Drill Dozer and WarioWare is identical. The size of the physical motor is irrelevant, only how much software keeps it on for. Last time we determined that the Switch mode firmware for the controller itself was buggy and handled frequent updates poorly. I don't know what exactly it did wrong but I was able to reproduce issues with the controller itself with an actual Switch. I attempted to make updates less frequent which fixed it on my end. I am unsure if there was a firmware update in the meantime.

Also, *Hexaae.

Squall-Leonhart commented 19 hours ago

I moved my testing over to Windows 11, with an Xbox Series control+official receiver and rumble is indeed not working in the latest nightly.

endrift commented 19 hours ago

Wonder if something broke with SDL when I updated recently. I'll test it on my own end soon.

Hexaae commented 18 hours ago

In game(s) rumble was enabled of course, checked.

Tested X10 controller both in BT/XBox and BT/NS with rumble 5/5... But feel no rumble in Drill Dozer or Pokemon pinball. Wario Ware is ok.

Checked also with GameSir Tarantula Pro (T3), same issue...

Squall-Leonhart commented 18 hours ago

0.10.3 Forced GB Player = Rumble Default = Rumble

0.11.8523 Forced GB Player = Rumble Default = Rumble

0.11.8612 Forced GB Player = No Rumble Default = Rumble

Drill Dozer is one of the only ones you get rumble on both original hardware and GB Player (Edit, without rom patches)

Edit 2, wrong 0.11 version cited for no rumble case.

Hexaae commented 18 hours ago

@Squall-Leonhart Are you using an original XBox One BT controller? Have to check with mine... With clones I can always reproduce the issue, also with 0.10.3.

Squall-Leonhart commented 18 hours ago

Are you using an original XBox One BT controller?

I have one of the Xbox One S/X variants, and several Series variants, using an official receiver because Bluetooth has had some historic problems with the rumble crashing the controller.

PS: mgba doesn't uncheck the GB Player override if you have started a game with "enable gb player features by default", shut emulation down and then uncheck "enable gb player features by default" - Restart or unchecking it yourself is required.

If we're seeing the same thing Drill Dozer rumble should work as long as it is booted without GB Player features.

Regression range is September 19th to 30th, possibility implicating merged new-sio branch.

Hexaae commented 17 hours ago

What's really strange is that Wario Ware (GBA) does work perfectly fine with gyro + rumble, so it looks like game-specific... If it was a controller incompatibility nothing should work, I guess. Could have something to do with this other report? (test tool does not rumble for me either)

Hexaae commented 5 hours ago

Tested with my original XBox One BT (1708) controller (BT/XBox mode) and rumble is not working with those games, except Wario Ware as always.