RetroBat-Official / retrobat-setup

Configure and build the RetroBat Setup
https://www.retrobat.org
Other
104 stars 16 forks source link

RetroBat macOS port #135

Closed udance4ever closed 1 month ago

udance4ever commented 1 month ago

Has anyone in your community taken on starting a port of RetroBat to macOS?

ES-DE is now available for macOS and many of the standalone emulators work quite well on Apple Silicon so I think the time is ripe.

I know C# is more native to Windows and skimming the code (super quick), it doesn't look like its too far fetched to get emulatorLauncher to build in macOS as most of the work is back end config & command line generation? (please correct me if there are other critical emulator setup tasks Im not aware of!)

I have an Apple Silicon MBP on the way this week & prepared to give porting RetroBat a shot & figure you have a better sense of what might be challenging up front (esp if you've already thought about it) & you might be interested in making this a team effort as you clearly did an amazing job adhering to the directory structures in Batocera Linux & making RetroBat portable.

Tartifless commented 1 month ago

No one has ever looked into that, i don't know is Emulationstation can be built on macos

udance4ever commented 1 month ago

hey thanks for being patient while I scoped this out. I got an Apple Silicon mac 2 days ago and tried running everything under the sun. A minimal port looks promising!

All the standalone emulators launch in ES-DE as you would expect: 3ds, gamecube, switch, wii, wiiu, ps2, ps3, psp, and MAME.

I found a bug related to launching cores in RetroArch but I don’t think it should be too hard to fix. Once that happens, 53 more systems come online.

I was surprised how much works just updating es_find_rules.xml and es_systems.xml

I know you have a wiki - have you posted a complete bulleted list of all the features you’ve implemented in RetroBat somewhere for review?

I’d like to get a better sense of the scope of what you built on top of ES-DE so I’m not biting more than I can chew 🐘 lol

If you do hear anyone who would love to see RetroBat for macOS - definitely send them my way!

Tartifless commented 1 month ago

Hello, You know we don't use ES-DE, right ? es_find_rules does not exist.

ES-DE is a totally different project and cannot be used with RetroBat as the emulationstation version is very different from ours.

udance4ever commented 1 month ago

aha - now it makes sense. the reason RetroBat is so compatible with the Batocera Linux directory structure is you are using a fork of batocera-emulationstation.

How much effort was it to target the build for Windows? Have you documented some of the major challenges you ran into somewhere?

I imagine with some work, we can get batocera-emulationstation to build on macOS as well.

I'd like to know how you decided to rewrite configgen in C#? Why didn't you use the existing Python code as Python in itself is meant to be portable?

ps. just got Xenia up in the current beta macOS - very exciting to see pieces fall into place!

Tartifless commented 1 month ago

Hello, Originally the ES from batocera is based on fcamod, so one could say that Retrobat had this version first, before Batocera...

When it comes to configgen, it was originally a port from batocera in c# but there was only Retroarch at that time.and very few options. Since then Retrobat and Batocera are separated and have their own way of adding systems/options.

Decision to use c# is more because it's the better choice for windows platform and because developers prefer c#.

udance4ever commented 2 weeks ago

hey I hit an exciting milestone! I got batocera-emulationstation compiled on macOS! 🎉

This is only a milestone as I get a black screen due to OpenGL errors: https://pastebin.com/vL6PcTdY

I'll reach out to the ES-DE developer to see if I can glean any insight how OpenGL is bootstrapped on macOS.

if anyone else stumbles on this thread - I've parked my commits (building on an M1) here:

https://github.com/udance4ever/batocera-emulationstation/tree/macOS_port