libretro / fuse-libretro

A port of the Fuse Unix Spectrum Emulator to libretro
GNU General Public License v3.0
36 stars 47 forks source link

Controls do not work in Retroarch 1.8.4 #78

Closed ToniBC closed 3 years ago

ToniBC commented 4 years ago

I was testing and the controls for this core stopped working in Retroarch 1.8.4.

The core works, but nothing on the keyboard works, you can't press any keys, it's as if the keyboard and remote control support were disabled.

The Retroarch menu and hot keys work, but the controls of the core itself do not.

In previous versions, with the same updated core, but for example in Retroarch 1.7.7 it works without problems, therefore, it seems to be something of the new Retroarch that blocks the controls in this core.

Thank you.

ToniBC commented 4 years ago

After 2h testing and testing things, I found the possible fault, although I found no sense.

All versions of Retroarch from 1.7.7 to 1.8.4 in their default configuration on Windows x64 (Retroarch x64) fail. Apparently the core Fuse has something weird, but I found the option that activates the controls again from the core.

In the Retroarch configuration file (retroarch.cfg), by default, I put a fragment, put these values.

input_libretro_device_p1 = "1"
input_libretro_device_p10 = "1"
input_libretro_device_p11 = "1"
input_libretro_device_p12 = "1"
input_libretro_device_p13 = "1"
input_libretro_device_p14 = "1"
input_libretro_device_p15 = "1"
input_libretro_device_p16 = "1"
input_libretro_device_p2 = "1"
input_libretro_device_p3 = "1"
input_libretro_device_p4 = "1"
input_libretro_device_p5 = "1"
input_libretro_device_p6 = "1"
input_libretro_device_p7 = "1"
input_libretro_device_p8 = "1"
input_libretro_device_p9 = "1"

With these values, the core Fuse does not work, but if we change only the following line:

input_libretro_device_p3 = "259"

Everything works again.

The truth is very strange, I find no logic and I found this by chance.

You should look to see what it can be, but for now this works.

ghost commented 4 years ago

In the readme it states -

For keyboard games: Set users 1 and 2 to none, and user 3 to Sinclair Keyboard. You won't have any joystick and the embedded keyboard won't work, but the entire physical keyboard will be available for you to type in those text adventure commands.

Could this be your issue. It works for me.

ToniBC commented 4 years ago

It is true, as indicated in the documentation.

The problem is that by default the core does not assign user 3 the "Sinclair Keyboard" and therefore, you cannot start any game, I think before that option was assigned.

In a clean installation of Retroarch, you download the core, load a game and you can't do anything. Many will encounter this problem and think that the core is broken.

When you put user 3 with that option, you have control of the emulator again and with users 1 and 2 on some joystick in principle everything works.

Thank you.

ghost commented 4 years ago

The maintainer of this core 'leiradel' hasn't been around for nearly a year and doesn't seem to want to update it in any way (by looking at the issues for updates etc.). The core is a very old version of Fuse v1.1 (probably one of the oldest in Retroarch) and could do with a serious update. Let's hope someone will take up the job!

ToniBC commented 4 years ago

I put some time ago to update the core. It seemed strange to me that such a popular system is so neglected, everything focuses on Amstrad and other systems.

The only thing left is to report all the errors we find, to give life and visivility and see if any programmer is encouraged to give a little push.

At the moment it works and it is very much appreciated that this core is, but it needs a small revision, many times it is something relatively quick to update, but they are so many things that of course, they focus on the preferences of each programmer, that we must remember that they do by fan.

XR4x4 commented 4 years ago

I have an issue, I'm assuming the same problem as above, I can set Sinclair Keyboard as port 3 controls and I can get my keyboard to work, the problem is, it does not disable the Lakka/Retroarch/Fuse keyboard while the game is active so keys like "p" and "Space" still pause and speed up fuse.

ghost commented 4 years ago

You'll need to activate 'Game Focus' mode by pressing the 'Scroll Lock' key (default). This will disable all the Retroarch shortcut keys.

ToniBC commented 4 years ago

Another problem with the controls, which I mentioned is solved by assigning the Sinclair keyboard to player 3, but the problem is also in the core options. In these options, you can assign the Spectrum keyboard keys on the gamepad buttons, but the buttons, I think remember, X and A, even if you assign a key to them, they don't work. For example, you put the number 1 key on the Spectrum keyboard and assign it to all the buttons on the remote in the core options, since all the buttons work less than 2, which I think were the X and A.

Gazdaman commented 4 years ago

I noticed similar issues and was about to give up on using the core.

In the end it sent me on a path that worked out quite well for me. I ended up having a very basic core remap file, and then created an option .opt file for each of my games, mapping almost all of them to their keyboard default mappings (1 or 2 games as exception to this).

What I ended up with was quite a very good functional core where all my games pretty much work when loaded. Whichever key needed mapped to start a game, I mapped this to the "Start" key on my controller.

It was a tedious task that took a bit of research to find or work out each games keyboard default controls and then mapping them to each game. A days work I guess.

While it would be great to get an updated core with a newer version of fuse and some of the bugs fixed, I am actually very happy with my results.

One other point I would highlight is that I had some conflicts with the default autoconfig controller profiles provided in RetroArch. I made my own to ensure different controller types matched each others layouts (particularly A, B, X, Y). Just something to watch out for.

I have attached a zip here of my setup files, which can be unzipped directly to the retroarch folder and then these games will be ready to go if your rom name matched the .opt file, or they can be used as an example to help achieve similar or improve the core

. My option files should work across all platforms, (Windows, Android tested) provided your gamepad is mapped correctly to the default layout. I use Xbox controllers for windows and Ipega handhelds for my Android phone/tablet.

ZX Spectrum Configs.zip

Further to the above, I have my games and controls working on RetroArch 1.8.8 so the controls are not completely broke, just sensitive to change. If in doubt, delete any core/game remap file and start again in case you broke something while tinkering.