Rakashazi / emu-ex-plus-alpha

Multi-platform computer & game console emulation system including supporting code (EmuFramework) and core engine (Imagine)
GNU General Public License v3.0
588 stars 145 forks source link

[C64.emu] Joystick port settings can be improved #1589

Closed automatedbugreportingfacility closed 2 months ago

automatedbugreportingfacility commented 2 months ago

Describe the feature

A vast majority of C64 games use joystick port 2 -- according to the database of GameBase64 v19, 18057 games are controlled via port 2, while 2356 games read port 1. Port 2 is the standard one on the C64 due to port 1 conflicting with the keyboard. For example, moving joystick in port 1 on the BASIC ready screen will result in stray characters being typed in as if keys were pressed. https://gaming.stackexchange.com/a/172199 contains a technical explanation as to why that happens.

C64.emu defaults to port 1, referred to as "Normal" in the "Joystick Mode" settings. There are two potential areas for improvement here:

1) The names in the "Joystick Mode" settings are not very clear -- perhaps it'd be a good idea to replace "Normal" and "Swapped" with "Joystick Port 1" and "Joystick Port 2", or at least add the missing info in brackets to describe the state more precisely. 2) There's no way to change the joystick mode to default to port 2, which makes it necessary to adjust configuration for most games.

Rakashazi commented 2 months ago

Thanks for the suggestions. I think for 1, I'll change the text to "Joystick Mapping" to make it more clear that it affects how key bindings are interpreted (Normal -> no changes, Swapped -> port 1 and 2 are swapped, Keyboard Cursor -> joystick key bindings map to keyboard keys)

For 2, I'll add a global option under Options -> System and have it default to "Swapped"

Let me know if you have any other suggestions.

automatedbugreportingfacility commented 2 months ago

Thanks, the solution for 2 is good.

About 1, what's really confusing is what "Normal" / "Swapped" is -- on a real C64, you can connect a joystick to port 1 or port 2, and the settings do not seem to indicate in any way the port number the (emulated) joystick is connected to (in the case of "Normal" or "Swapped"). Without the port number being explicitly communicated to the user, people who are at least slightly familiar with the C64 are going to assume that "Normal" means that the d-pad operates an emulated joystick in port 2 (as "standard" and "normal" is port 2 on the C64, most single player games operate via port 2) and might be confused until they find out it's actually port 1.

Rakashazi commented 2 months ago

I see, in that case a clearer way to word the option may be: Main Joystick Mode -> (Port 1, Port 2, Keyboard Cursor)

Rakashazi commented 2 months ago

Ok, I added this in the last commit. In the future I'll also look into adding support for an external database that selects the proper defaults based on the detected game.