dragoonDorise / EmuDeck

Emulator configurator for Steam Deck
GNU General Public License v3.0
2.85k stars 207 forks source link

Suggestion - Replace all MAME cores with the standalone release #121

Closed Sterophonick closed 2 years ago

Sterophonick commented 2 years ago

Using really old versions of MAME such as MAME2003 and MAME2010 like being used here is never a good idea outside of the realm of devices with weak CPUs like the Raspberry Pi. The usage of such versions ensures outdated ROM sets and old emulation glitches remain present in the modern era. Steam Deck is plenty capable of running a modern version of MAME at full speed in just about any Arcade game. To top that off, the current release of MAME as a libretro core is just a really bad port. Screwy joystick support, unusable UI scaling, and unpredictable machine support for more oddball machines.

Sterophonick commented 2 years ago

I get that this project uses Flatpaks for all the emulators, and MAME doesn't have its own Flatpak or AppImage (it does have a Snap but everybody hates Snap), but there's a way around that.

So, I have my MAME folder, extracted from the Arch Linux package: https://archlinux.org/packages/community/x86_64/mame/

image

Notice that mame.sh script.

#!/bin/bash
export SDL_JOYSTICK_HIDAPI=0
export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
./mame "$@"

LD_LIBRARY_PATH exposes another directory for mame to look for dependencies.

And then, we can add all the libraries as needed to a folder named lib: image

This has worked with live environments of Manjaro and EndeavourOS. I don't have a Steam Deck to test with.

Sterophonick commented 2 years ago

MAME doesn't rely on the standard emulator form of loading games where there's a single ROM file. Instead it relies on ROM sets zipped together in a certain directory, launched as mame pacman for example if you wanted to launch Pac-Man and pacman.zip was present in the provided ROMs directory. A new ROMs directory can be provided with the -rompath parameter.

UI controls are remappable. The important ones are Config Menu and UI Cancel. Pressing the UI Cancel mapping within a game will close the emulator, and Config Menu will open up the in-game UI where you can reset it, change controls, change DIP switches, and the like. image image image These controls are stored in cfg/default.cfg.

AchillesPDX commented 2 years ago

I get that this project uses Flatpaks for all the emulators, and MAME doesn't have its own Flatpak or AppImage (it does have a Snap but everybody hates Snap), but there's a way around that.

So, I have my MAME folder, extracted from the Arch Linux package: https://archlinux.org/packages/community/x86_64/mame/

image

Notice that mame.sh script.

#!/bin/bash
export SDL_JOYSTICK_HIDAPI=0
export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
./mame "$@"

LD_LIBRARY_PATH exposes another directory for mame to look for dependencies.

And then, we can add all the libraries as needed to a folder named lib: image

This has worked with live environments of Manjaro and EndeavourOS. I don't have a Steam Deck to test with.

Would love to look into this but I'm not a super-savvy linux user, just a guy who likes to tinker who also happens to have a Steam Deck. Where are you pulling the libraries from? I want to see if this even works on the Deck.

Sterophonick commented 2 years ago

Pulling all these libraries from the Arch repos.

Godsbane commented 2 years ago

prelim work - fixed by #207 PR still needs - launcher script, binary, config files

dragoonDorise commented 2 years ago

Added standalone Mame as an option in 0.17.6

drewbaumann commented 2 years ago

Added standalone Mame as an option in 0.17.6

Is it possible to launch a game directly from steam into the standalone MAME? I haven't had success.

Godsbane commented 2 years ago

yes, it works fine. Did you use the Mame parser, and put your games in the arcade folder? are your games from the right romset, and do you have the bios files with the roms?

On Fri, Aug 12, 2022 at 12:51 PM Drew Baumann @.***> wrote:

Added standalone Mame as an option in 0.17.6

Is it possible to launch a game directly from steam into the standalone MAME? I haven't had success.

— Reply to this email directly, view it on GitHub https://github.com/dragoonDorise/EmuDeck/issues/121#issuecomment-1213320545, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAM3AOOENQNM3WZ6QL66OPLVYZ6HJANCNFSM5VGSHQJQ . You are receiving this because you commented.Message ID: @.***>

drewbaumann commented 2 years ago

@Godsbane Thanks for your response. This is what I did, and please correct me if I incorrectly used the software:

  1. Uninstalled Emudeck

  2. Install MAME flatpak via discover

  3. Reinstalled Emudeck with easy installer

  4. Transferred rom to mame directory in the roms directory

  5. Opened up Steam Rom Manager

  6. Ensured that the parsers for Arcade - MAME were all checked

  7. Clicked Preview, Generate App List, it found the rom, and I saved the list

  8. Open Steam

  9. Find game in collection (or non-steam games)

  10. Attempt to open - fails

  11. Look at properties, see it points to retroarch CleanShot 2022-08-12 at 10 50 23

  12. Go into Emulation Station, change emulator to MAME standalone, and successfully launch from there

So given that information, did I make a mistake somewhere along the way?

Godsbane commented 2 years ago

Which specific folder is your game in? It appears you are trying to use the mame2003 folder and parser. (This is for mame2003 core in retroarch)

The correct location is Emulation/roms/arcade for mame standalone.

If you wish to use MAME standalone, I recommend you turn off the other parsers for the RetroArch versions unless you need them for some reason.

Also quick edit - you do not need to install it from discover. The Emudeck install script does this.

drewbaumann commented 2 years ago

I just fixed the rom directory, uninstalled and reinstalled emudeck, and we are in business! Thank you for the support!