libretro / opera-libretro

Port of 4DO/libfreedo to libretro.
66 stars 38 forks source link

3DO ALG reload issue - Space Pirates + Mad Dog McCree #176

Open prince-rakeem opened 2 years ago

prince-rakeem commented 2 years ago

Hi,

I am using lr-opera 1.0.0 3849c96 on a Pi4 running Retropie with RA 1.9.14 with Sinden lightguns.

I am having an issue with a couple 3DO American Laser Games. For both Space Pirates and Mad Dog McCree I am unable to reload. All other ALG games I have tried the reload works fine (Crime Patrol 1+2, Mad Dog 2, Last Bounty Hunter). I have settings > input > port 1 controls > gun reload mapped to mouse 3 (pump action on my lightgun).

One thing to note about Mad Dog McCree is on an initial load of the game I can shoot/reload on the main menu using the pump action, but in game it fires shots (same as the trigger). Once the .srm file is created, If I exit the game and start it again reload no longer works, it instead fires shots.

Please let me know what additional details I can provide.

alessandropaggi commented 1 year ago

I'm using lr-opera 1.0.0 8a49bb8 on a Pi4 running Retropie with RA 1.12.0, and I'm experiencing the same issue on Mad Dog McCree. The reload works for a while (few scenes) but after that it stops working until I reset the emulator. Then the reload starts working again for a few scenes, and then it stops working again.

trapexit commented 1 year ago

I apologize for not being very active on Opera but I've been pretty busy with work and other projects. I'll try to look into this in the coming weeks.

alessandropaggi commented 1 year ago

I apologize for not being very active on Opera but I've been pretty busy with work and other projects. I'll try to look into this in the coming weeks.

No problem, take your time. And thanks for looking into it.

StormedBubbles commented 1 year ago

Hi,

Just leaving this here for future reference when the lightgun code is revised.

In the current code, the r variable in opera_pbus.c being equal to 0 (which should happen at the screen's top-left position) denotes an offscreen position, so firing a shot when r = 0 will reload the gun. That position seemingly can't be reached manually by using an emulated lightgun device (even after disabling the reloading tweaks I made last year).

Setting r = 0 when RetroArch's LIGHTGUN_IS_OFFSCREEN is true allows reloading to work as intended for all games, it seems (including the two problem games mentioned above as well as the arcade versions of Shootout at Old Tucson and Mad Dog II: The Lost Gold).