RetroAchievements / RAVBA

GB/GBC/GBA emulator with RetroAchievements support (modified version of VisualBoyAdvance-M)
7 stars 1 forks source link

[Feature request]: Merge back into main vba-m project #10

Open ZachBacon opened 2 months ago

ZachBacon commented 2 months ago

Request box

So I'm one of the developers of VBA-M and someone brought into attention that this fork exists (mind you by accident since the readme links to our discord)

Reason box

The reason why I'm requesting this, is we would like to see this folded back into the main application. You're free to submit a Pull request, or could just port this ourselves. I'm primarily requesting this as polite as I can be as one of the main developers of vba-m. I do hope we can have a fruitful collaboration.

Examples

N/A

Jamiras commented 2 months ago

The fork as it exists was made for developing achievements. The original implementation was done in 2013, as we simply needed an emulator to modify. Now, most GameBoy development is done in RALibretro (our custom libretro frontend), and the VBA-M fork is only updated every few years. I redid the integration in 2019, resulting in this repository.

The changes in the fork are loading the RAIntegration.dll via the instructions documented here. You can see the individual changes in the closed pull requests in this repository. The RAIntegration.dll provides the tools necessary for developers to create achievements, but it's heavily bound to the Windows APIs. As such, the resulting executable only builds/runs on Windows.

If you were to integrate with RetroAchievements upstream, I would recommend using the rc_client set of functions from the rcheevos library. This library is cross-platform and supports the achievement runtime but relies on the emulator to provide the UI and networking code. If that is undesirable, or unfeasible, we could still open a PR to merge these changes into upstream. Even if it were limited to the Windows builds, it would be preferable to not have to maintain a separate fork.

rc_client also supports the DLL via an extension, so it could still be used if upstream was modified to use rc_client. The aforementioned PRs could be used to guide the integration, but it would still pretty much have to be redone from scratch.

ZachBacon commented 2 months ago

Thanks for the information. Yeah I'll look into it. It probably won't land in the next version we're looking to cut soon, but the version after that I will personally see about landing it in.