libretro / opera-libretro

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

Allow offscreen reloading on all 4 sides of screen #178

Closed StormedBubbles closed 2 years ago

StormedBubbles commented 2 years ago

Hello,

Currently, many 3DO games only allow lightgun users to shoot off parts of the top of the screen in order to reload. This code change allows lightgun users to fire off any part of any side of the screen to reload in games that have a functioning reload/holster input. It is tested as working with all 3DO lightgun games except for Mad Dog McCree and Space Pirates, which still exhibit the issues outlined in #176, and it is also tested as working with the arcade game Shootout at Old Tucson (which didn't appear to have functioning offscreen reload before this).

I tried investigating the issues outlined in #176, but it seems that there is no place along the screen boundary that consistently acts as an out-of-bounds region for reloading for those two games. The emulator's reload button fires a shot at the middle of the top edge of the screen, which is enough for most games, but it doesn't work for Mad Dog McCree and Space Pirates for some reason.

Further, while testing this code with a friend, we found that 2 lightguns for 2-player games doesn't currently seem possible. I found the note in the code about how the gun acts as player 2, and I wonder if the fact that there are at least two different 3DO gun models is causing this. One model allows daisy chaining with a second gun, and the other only has a single controller plug. Perhaps an alternate device (dual lightguns?) that emulates two guns daisy chained is needed in order to get 2 players working?

trapexit commented 2 years ago

The issue with multiplayer is almost certainly due to the implementation of the lightgun being wrong. The protocol isn't accurately emulated. It was originally fuzzed out but later properly understood but I never got around to reworking the conversion between X, Y coords and the scanline timing used by the 3DO.

trapexit commented 2 years ago

Details http://3dodev.com/documentation/hardware/opera/pbus#lightgun if you're interested.