libretro-mirrors / libretro-arb

For proposed improvements to libretro API.
8 stars 2 forks source link

Run multiple instances of the same game #43

Open arthurlutz opened 2 years ago

arthurlutz commented 2 years ago

This is a far fetched issue I'm submitting, but it's a way to start discussing this idea.

The idea would be to enable a multiplayer mode for single player games where players would play side by side the same game. For example a 2 player launch would launch two windows side by side with an instance of retroarch configured for player1's gamepad on the left and an instance of retroarch configured for player2's gamepad on the right. The players would then manually synchronize and play together (for speed or points, or anything the imagination can think of). 4 players would split the screen in four. With the size of flat screen TVs and the small resolution of retro games, this would be visually feasible right ?

Original issue submitted on https://github.com/libretro/RetroArch/issues/2024 @RobLoach suggested I post the issue here with a mention of the following (I don't know what it means) :

have a libretro_instance_t* context be passed around to each core call

RobLoach commented 2 years ago

Would be pretty nice to pass a void* or similar across all calls so that we wouldn't have to be so dependant on globals or singletons. 🙏

RobLoach commented 2 years ago

@arthurlutz The best option for this right now is to run another instance of the core and game in a different thread.

eadmaster commented 2 years ago

I think this should be generalized to also allow different games and even cores. Possible use cases:

arthurlutz commented 2 years ago

+1 for the connectivity "emulation" and link "emulation.

Not sure I understand the 3rd bullet point.

eadmaster commented 2 years ago

Not sure I understand the 3rd bullet point.

This would allow to check manual scans and maps directly in RA without terminating the current content.

Btw, i guess this way it is more a Frontend-related issue, not libretro API related...