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

feature parity w Batocera Linux (and documenting experience w unified SHARE) #147

Open
udance4ever opened this issue Aug 13, 2024 · 15 comments

Comments

@udance4ever
Copy link

udance4ever commented Aug 13, 2024

ok - this is going to be a beefy post as my preference is not to post a bunch of issues resulting in divergent and fragmented conversation. I sincerely hope this is useful to you, the team and the greater community at the end of the day.

A bit of a background: I've been using Batocera Linux for probably about a year and a half to give old Intel-based Apple hardware new life (had the most success with a 2015MBP) and got quite familiar with configgen and making pull requests. As part of evaluating handheld PCs, I dove back into Windows and was super pleased RetroBat was able to use my existing Batocera Linux SHARE with minimal fuss once I moved to NTFS. RetroBat is part of my inspiration to get an Apple Silicon Mac so I've been looking at the feasibility of porting RetroBat to macOS (#135) and outlining what kind of potential pitfalls I may run into using the same SHARE on macOS, Linux, and Windows.

So here are my findings synthesizing all my notes:

  • What works really well:
    • original retro chiptune feel of ole skool Batocera! (love the video splash art!!)
    • familiar ES layout and controls
    • gamelist.xml - all favorites and image locations preserved going back and forth between Batocera Linux and RetroBat
    • RetroArch finds save files in same locations as Batocera Linux (including an obscure edge case using sub-directories to group multi-disc roms!)
    • BIOS files are found in same places (~95%)
    • portable (I have a triple-boot 1TB NVMe: Batocera Linux, Windows 10 w RetroBat, and macOS Ventura w NTFS-3g)
  • parity (with Batocera Linux) observations
    • RetroBat prioritizes system bezel over default Bezel Project bezel (when game specific one is absent) - I'm not sure what Batocera Linux is doing but it manages use a system level default bezel when Bezel Project bezels (in my case, for vectrex overlays) are installed. In RetroBat, you get the generic Bezel Project bezel all the time.
    • squashfs mount support - though initial research only resulted in squashfuse - seems like resuming work on the Windows port has its share of challenges. (I do like how RetroBat keeps the .uncompressed folder compressed at the OS level - this is a nice touch)
    • option to swap space and Return (space opens menu, Return selects in Batocera Linux)
    • sort out system/scripts (this line and this line attempt to load RetroBat scripts on launch & shutdown and need to temporarily be commented out)
    • RetroBat vs Batocera Linux ES splash - I don't know enough about ES configuration, but when RetroBat is overlaid with Batocera Linux, the RetroBat ES splash screen shows up when booting into Batocera Linux (this is more a cosmetic thing, I just ignore it)
    • means to keep system/batocera.conf and emulation\.emulationstation\.emulationstation\es_settings.cfg in sync
    • keep .cue files for system jaguar so Jaguar CDs that load in Batocera Linux, load in RetroBat (I'm aware there is a jaguarcd directory which is great for someone who wishes to organize further but should be optional - both jaguar and jaguarcd should accept .cue files
    • add .m3u support for amigacdtv and pc98 - I updated es_systems.cfg and what works in Batocera Linux works just fine in RetroBat
    • .xbox360 XBLA support (I realize you have a .m3u convention but just for those coming from Batocera Linux, the .xbox360 basically serves the same function) (related: support for Xbox Live Arcade titles #122)
    • remove MESS group in RetroBat (MESS is officially depreciated)
    • support for ps2 folder memory cards - I tried to update the INI file (and change the memcard in settings) but I think something in emulatorLauncher generates a new PCSX2 INI file and overwrites changes. In Batocera Linux, you can go into Applications -> PXSX2 config, choose a memory folder card and it persists.
    • RetroBat standalone emulators finds saves under saves by initializing the following symlinks under emulators:
      • ppsspp\memstick\PSP -> ../../../saves/psp/PSP
      • vita3k\ux0\user -> ../../../saves/psvita/ux0/user
      • ryujinx\portable\bis\{user\{save,saveMeta},system\user} -> ../../../../../saves/Ryujinx/{saves,saveMeta,system_saves}
      • cemu\mlc01\{sys,usr] -> ../../../saves/wiiu/{sys,usr}
      • xenia-canary\content -> ../../saves/xbox360
      • dolphin-emu (Batocera Linux) symlinks into dolphin (RetroBat) (this one is tricky to set up due to absence of Card A in Windows Dolphin but I got it to work cross-platform!)
      • citra-canary\sdmc -> ../../saves/3ds/Citra/sdmc (Batocera Linux requires symlink from citra-emu -> Citra)
      • rpcs3\dev_hdd0\home -> ../../../saves/ps3/home (not official, intent is to keep saves under one roof)
    • option to relocate roms directory - Batocera Linux has a sharedevice=DEVICES option to mount an arbitrary roms directory.
  • feature ports (biased here ;)
  • emulator differences
    • Windows GSPLUS apple2gs bios name is APPLE2GS.rom vs ROM1 in Batocera Linux
  • possible enhancements on both sides of the fence (both Batocera Linux and RetroBat)
    • ignore macOS ._* metadata (colored tags) in ES
    • dreamcast saves per game VMU file(s) in dreamscast/saves - I actually don't recall what the default is in Batocera Linux - I just know I had to go into RetroArch in RetroBat and enable the option and save to dreamcast.opt so it would read my Dreamcast saves files from Batocera Linux
  • can't get to work in RetroBat
    • windows doesn't bind gamepad (tested w DualSense and homebrew Castlevania Chronicles II: Simon's Quest)
    • psp doesn't bind gamepad (tested w DualSense) - this might be a PPSSPP issue as it doensn't work outside of RetroBat?
    • c64 - system boots but just hangs on LOADING (tested: homebrew Fix it Felix) [UPDATE: Super Mario Bros port works]
    • cdi - Something is reporting Fatal Error: Required Files are missing, the machine cannot be run - if you go into RetroArch, the required files say "present"
    • pc98 - translated Japanese roughly says it can't secure enough memory (ie. out of memory)
  • works but missing advanced functionality
    • coco - load hiscores using MAME plugin in RetroBat - it looks like the RetroBat MAME command line generated is missing a reference to saves\mame\plugins (need to confirm Batocera Linux looks for plugins in saves)
  • RetroArch core issues (doesn't seem RetroBat or Batocera Linux related and reproducible in both)
    • oe2m - can't fire (test: Freedom Fighter) (turns out in "survival" mode, this is intentional!)

    • gameandwatch - Donkey Kong Jr. timing off w massive slowdown (DK II works just fine) (this might actually work ok in Batocera Linux, it seems core related as it failed on Windows 11 on a ROG Ally)

Ok - that was a mouthful! I have no expectations on timelines and what does or does not get done. This documents my experience with RetroBat the last two weeks and may or may not serve as input into future development. I'm sure many of these bullets deserve their own issue thread but as I mentioned above, given the sheer breadth of this "field report", I thought it was important to communicate the bigger picture and go from here.

Props up again for such an amazing job with RetroBat!

@udance4ever udance4ever changed the title feature parity w Batocera Linux (and documenting overall experience using single SHARE) feature parity w Batocera Linux (and documenting experience w unified SHARE) Aug 13, 2024
@Tartifless
Copy link
Member

Wr implemented mess autoboot (using the hashfile) 1 year ago if i remember well...
(But maybe i did not do all systems).

@Tartifless
Copy link
Member

We have support for ps2 folder memory cards, i am sure we added the options... Or was it the "per-game" save...

@Tartifless
Copy link
Member

So, what i have done:

  • keep .cue files for system jaguar
  • add .m3u support for amigacdtv and pc98
  • .xbox360 XBLA support
  • support for ps2 folder memory cards

What already exists:

  • coco autoloader
  • dreamcast saves vmu per game

What does not work:

  • Windows does not autoconfigure controllers ==> normal for windows games
  • PSP works fine with dualsense by me (i have even tested both of these)
  • C64 works fine
  • cdi works fine

@udance4ever
Copy link
Author

udance4ever commented Aug 16, 2024

ok I hope it doesn't get too unwieldy to thread conversations here but let's give it a try:

thank you for adding the new extensions! saw your commit to add .squashfs to 3ds as well.

.xbox360 XBLA support

commented directly on your commit

We have support for ps2 folder memory cards, i am sure we added the options... Or was it the "per-game" save...

folder memory cards have a special directory structure so each game save is in a separate folder which makes it much easier to revision under git (yeah, I'm paranoid about losing my saves Lol) and you don't run into constraints w size of memcard.

please let me know if I missed the option - I didn't see one when I looked through ps2 and when I tried to manually configure the folder mem card (both through INI and going directly into PCSX2), the setting doesn't persist after booting ps2 from RetroBat.

The key difference here is Batocera Linux preserves user changes in the INI file where as it looks like RetroBat rewrites the entire file.

Wr implemented mess autoboot (using the hashfile) 1 year ago if i remember well... (But maybe i did not do all systems).

part of the new coco autoboot implementation in Batocera Linux is paying attention to the "usage" field in the hash files (just for coco short-term to ensure it's solid). The reason is some autoboot commands can get pretty tricky due to memory management tricks - here is one that is coming down the pipe in coco_flop.xml for ssleuth.zip:

    <info name="usage" value="LOADM&quot;SLUTHIGH&quot;:EXEC:LOADM&quot;SLUTHLOW&quot;:EXEC &amp;H073F" />

PSP works fine with dualsense by me (i have even tested both of these)
cdi works fine

good to hear you have both working. I have a thread for PSP in the RetroBat forums so I will follow up there.

as for CDI, what rom did you test with?

C64 works fine

Turns out the Homebrew game included with Batocera Linux hangs in macOS and Windows but the Super Mario Bros port works fine. Have you verified Fix It Felix works on your end?

@Tartifless
Copy link
Member

Hello,
Yes we use the "usage" tag of the hash file for quite some time, but I noticed i did not enable it yet for coco but for other machines.

@Tartifless
Copy link
Member

Tartifless commented Aug 16, 2024

For pcsx2 we had added an option to create a memcard per game (based on the rom name).
I added yesterday also the possibility to use folder.
And no, we do not rewrite the whole file, we added options for memcards in the past, so as usual when an option is added in the features, it needs to be set in retrobat.

We are usually more advanced in terms of features as batocera, since we have done a full review of all options for standalone emulators a few months ago.

@udance4ever
Copy link
Author

udance4ever commented Aug 16, 2024

we added options for memcards in the past, so as usual when an option is added in the features, it needs to be set in retrobat.

ah that makes complete sense now.

ok let me know when you have a release to test with a folder memcard & happy to verify it.

we are in a transitional state though, I notice new games will write to the folder successfully and existing entries sometimes reads (and sometimes not)

at the end of the day, a fresh new folder memcard is sure to work cleanly once you have the option.

pc98 - translated Japanese roughly says it can't secure enough memory (ie. out of memory)

Im booted into RetroBat and moved pc98 to not working - the core runs into an "out of memory" issue that doesn't happen in Batocera Linux or macOS. It may very well be an easy fix and just letting you know pc98 doesn't work by default in RetroBat.

cdi works fine

Something is reporting Fatal Error: Required Files are missing, the machine cannot be run - if you go into RetroArch, the required files say "present" for the same_cdi core.

the error is a bit odd as it sure sounds like a MAME error to me and I double checked my settings and I’ve selected the RetroArch Same CDI core (not MAME)

I suspect it’s working on your end because you have MAME emulating CDI.

@Monkee-code
Copy link

I was wondering about that aspect too:

* parity (with Batocera Linux) observations
  
  * RetroBat standalone emulators saves under `saves`
    
    * `ppsspp\memstick\PSP` -> `../../../saves/psp/PSP`
    * `vita3k\ux0\user` -> `../../../saves/psvita/ux0/user`
    * `ryujinx\portable\bis\{user\{save,saveMeta},system\user}` -> `../../../../../saves/Ryujinx/{saves,saveMeta,system_saves}`
    * `cemu\mlc01\{sys,usr]` -> `../../../saves/wiiu/{sys,usr}`
    * `xenia-canary\content` -> `../../saves/xbox360`
    * dolphin-emu (Batocera Linux) symlinks into dolphin (RetroBat) (this one is tricky to set up due to absence of `Card A` in Windows Dolphin but I got it to work cross-platform!)
    * `citra-canary\sdmc` -> `../../saves/3ds/Citra/sdmc` (Batocera Linux requires symlink from citra-emu -> Citra)
    * `rpcs3\dev_hdd0\home` -> `../../../saves/ps3/home` (not official, intent is to keep saves under one roof)

What is the logic behind this choice?
It makes porting to and from standalone emulators more complicated but I imagine that it brings some advantages?

@Tartifless
Copy link
Member

Initially we had it in emulator folders, but this ticket requested us to move it in saves, in order to be consistent with batocera.

And as keeping it in emulators is not the best option (eg people might delete emulator folders without taking care), we thought it would be a good idea

@Monkee-code
Copy link

I see. This breaks the compatibility with standalone emulators though (especially problematic with installed DLCs and TUs) so it's a win for the compatibility with Retrobat but a loss for the overall compatibility, no?
Could this be a toggle option maybe?

@Tartifless
Copy link
Member

It does not brake compatibility with standalone, can you give specific example ?

@Monkee-code
Copy link

The best example for me was Citra.
When moving from standalone to RetroBat, at first none of the Title Updates and DLC showed up (so most games were broken) because Citra (the RB one) was looking into \saves and everything was inside the emulator.
So I moved my files there but then most games kept being broken because the files I just moved were considered as "installed software" so they were no longer connected to the games themselves.
I had to reinstall everything from scratch to fix it. I honestly don't know why this went so bad though.

@Tartifless
Copy link
Member

You might just have forgotten to move some folders.
But anyway we'll not offer any option to use emulator folder for now, as keeping all in saves folder is more secure.

@udance4ever
Copy link
Author

udance4ever commented Dec 4, 2024

@Tartifless I had time to dive back into RetroBat and found a few more differences (as well as things that have gotten resolved!)

Would you mind giving me write access and a page in the RetroBat wiki?

I think the bulleted summary of all the differences between Batocera Linux and RetroBat in the original post up top better lives in the wiki and I'm happy to own maintaining it to the best of my ability.

Once created, I would put a link to the wiki here, close this issue and we would spawn any new issues on a case-by-case basis.

What do you think? Do you think making this part of the RetroBat documentation is a good idea?

@Tartifless
Copy link
Member

Hello,
The wiki is not the place where we would put differences with other distributions.
The wiki has the purpose to explain RetroBat

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

3 participants