libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.14k stars 1.82k forks source link

(Bounty) Qemu port #7025

Open anothername99 opened 6 years ago

anothername99 commented 6 years ago

This bounty is for porting Qemu to libretro. To complete the bounty, we need these features:

Bountysource link: https://www.bountysource.com/issues/61468869-bounty-qemu-port

ghost commented 6 years ago

What kind of machine config? Is there an existing format or would something new have to be created?

CD/DVD image swapping through XMB

I think this would likely alienate too many people from even attempting to port the core as not many people understand how this works in RA nor want to... IMO it would be best to leave that part up to the existing RA team if anything is needed there... cores need to be able to work properly in other non-RA frontends also.

Only the recompiler is needed. KVM can come later (or not at all).

Is there an expectation of certain guest architectures to be supported? Like x86, x64, ppc, sparc etc. I would assume it would have to be a separate core for each arch due to how qemu works.

anothername99 commented 6 years ago

A plain text file with the typical commands should be enough. Something like:

qemu-libretro -cpu pentium -boot order=d -drive file=disk1.cow -m 1024 -soundhw es1370

If there is a better format, we can go with that too, as long as we don't put these things under Core Settings because that would break any emulated machine too easily. Relative paths are also important because the user might move the emulated machine to another harddrive for instance.

cores need to be able to work properly in other non-RA frontends also.

Are there frontends that don't support swapping disc images? I imagine this to be a big problem for cores like Beetle PSX too. I'm ok with dropping the requirement for this first bounty though.

Is there an expectation of certain guest architectures to be supported?

I kinda assumed that qemu is one big thing. Would there be additional work necessary to support all guest architectures? In that case, the bounty hunter can pick one guest architecture. I'm mainly interested in x86, arm and ppc.

ghost commented 6 years ago

qemu itself builds completely separate programs for each arch, and all the machine types share common function names, so yea you can't easily build all the arches into one binary, it was never designed to work that way.

anothername99 commented 6 years ago

We have some cores that are split into different binaries (e.g. Reicast vs Reicast OIT, Beetle PSX vs Beetle PSX HW). That shouldn't be an issue in my opinion. The question is whether the different arches require more porting work. If not, then I want all arches (in different binaries if needed).

Kreijstal commented 6 months ago

Ah wow this is very interesting

vadosnaprimer commented 4 months ago

Does this thing do anything useful? https://gitlab.com/oxr463/qemu-libretro