Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document the porting process for existing LibRetro / RetroArch cores #2

Open
csolisr opened this issue Oct 21, 2023 · 1 comment
Open

Comments

@csolisr
Copy link

csolisr commented Oct 21, 2023

Hydra seems to have a similar architecture to projects such as RetroArch, where emulation cores hook to a unified management and rendering backend. What differences, if any, exist between the Hydra specification and the LibRetro specification? And what changes would be required to port a LibRetro core to Hydra, if possible?

@OFFTKP
Copy link
Member

OFFTKP commented Oct 26, 2023

Sorry for keeping you waiting, I just saw this!

The Hydra API aims to provide as many features as possible to emulator developers for creating cores. It is still a work in progress and constantly evolving until release (interfaces may change, thus creating cores at this early stage may require changes in the future). Indeed there's similarities between LibRetro and Hydra, and many functions match one to one, so porting should not be too difficult for a lot of cores. Hydra uses an object oriented approach to designing cores, splitting features into small interfaces that cores can inherit from. For example, there's separate interfaces for rendering, input, cheats, etc. Thanks to this approach, cores don't need to define any unneeded API functions, making Hydra cores easy to write and later extend.

Here's an example of an actively maintained Hydra core for Panda3DS: https://github.com/wheremyfoodat/Panda3DS/blob/master/src/hydra_core.cpp

I will leave this issue open, as a porting process would be good to have in the future, but it will have to be after the API gets to a more stable point.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants