[Guide] Play Non-Arcade systems with MAME or MESS

pdp1 -ptap1 “/storage/emulated/0/RetroArch/system/mame/roms/pdp1/spacewar1.rim” -ui_active

thats how i have it written for android

as far as bgfx settings , is that within mame settings? or retroarch gui settings?..i dont mess around with that stuff just yet but if i knew the exact settings and if it were android compatible then i can write it in the cmd file to launch the game

i used the wrong game but the muncher is the same exact except change the game name in the cmd file

BGFX is a standalone MAME option and needs to be enabled in the mame.ini

#
# OSD VIDEO OPTIONS
#
video                     auto   <-- change to bgfx
numscreens                1
window                    0
maximize                  1
waitvsync                 0
syncrefresh               0
monitorprovider           auto

I don’t know if is the same for android.

If I remember correctly you also have to turn hlsl off.

hlsl_enable 1 <--- change to 0


I already tried the command line method and still no luck with munching squares. Oh well.

I have a private MAME layout for the PDP-1 that requires a custom compile of MAME. (If you’d like to give that a try.) It colors the lamps amber and moves them to the lower part of the screen. It also moves them to the right so they are all exposed.

I did this for myself back when I was developing the raster graphic. It has more in common with my new vector shader border.

1 Like

Yea that looks awesome…the 1 i also been looking fir but can’t find is the coleco ms pacman…I know there’s a donkey kong bezel but seems noone ever made a ms pacman one and idk why because that 1 is a super classic also

When u tried the munched game in RetroArch, how was ur folder structure?.. mame and RetroArch together have a strict file structure to follow for it to work. Basically u need a pdp1 folder…then another folder inside that named the same… inside the 2nd folder u put the bios both zipped and unzipped… back out to the 1st pdp1 folder and that will have the pdp1 folder with bios inside and it should also have the rim file and the cmd file… as a precaution id also add a pdp1 ini file in the mame ini folder… it should work for sure after that

Yeah, you are working way too hard. The RA MAME method does not need to be that complicated. And what BIOS are you referring to? The PDP-1 didn’t have a CPU let alone a BIOS.

I have no explanation for how you got munching squares to work but your explanation doesn’t come close to explaining a clear method.

FYI my original post was about the recent change in MAME 0.134 that allows you to use a pdp1 folder and the traditional SL method.

0.133 and backwards the only way to run the PDP-1 in RA was to enable “boot from cli” in the core options and run it from the command line like the standalone MAME.

I made a request to the developers to update the pdp-1 and create a hash xml and they graciously complied.

If the OP @zachmorris would care to try munching squares I would be thankful.

Well, this might be the most obscure yet, so kudos to @Duimon and @sanchezmike01 for really pushing the limits!

I didn’t do anything special to make this work, but it does work. However, this system is… well not user friendly. Given the history I read up on it, I’m not surprised. Kudos to MAME for emulating it!

I got the latest version of the MAME core available, and the software list romset (zipfile I found was named pdp1_ptp.zip), and the latest mame hash file (pdp1_pdp.xml) and put it in the correct hash folder.

The folder name for the game files has to be pdp1, so the game folder stucture is:

...path_to_games/pdp1 (folder)
      spacewar.zip (game file)
      munching.zip (game file)
      ddt.zip (game file)

and then you load the game just as the first post says. There’s some caveats here though:

  • RA / MAME segfaulted approximately 50% of the time. Just loading the game again it would work ¯_(ツ)_/¯. (maybe it’s a bug worthy of noting to the MAME core folks)
  • To actually start the game, you have to read the instructions helpfully placed in the hash xml file (pasted below). I had to use RA’s keyboard focus toggle to get controls to work.

Without any bezels or special compiled core, all three of the systems available ‘games’ start. (DDT, which is apparently some sort of computer debugger apparently is very complex, so I didn’t even atttempt to make it do anything)

Spacewar:

Spacewar!
Load with Ctrl-Enter
Action            Fat Ship    Thin Ship
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Turn Left         S           Right-arrow
Turn Right        A           Left-arrow
Thrust            D           Up-arrow
Fire              F           Down-arrow
Hyperspace        Z           /
Miscellaneous
~~~~~~~~~~~~~
Toggle on/off main star and its gravity: Num-6
Toggle on/off background stars: Num-4

Munching (Squares):

Munching Squares

Load with Ctrl-Enter

At start, it will appear to do nothing. You need to adjust one or more
of the test-word switches (Ctrl+A/S/D/F/G/H/J/K/L/;/\/Z/X/C/V/B/N).

Ctrl+J,K or L will produce the "expec" square patterns

I was wondering what those hotkeys were. OK, mystery solved. I have actually been emulating this successfully since I discovered it in 2018.

Thanks @zachmorris!!!

Edit. Maybe I should have read the pdp1_ptp.xml. :rofl:

1 Like

Hi all, I am trying to run the M20 system from mame/mess but it seems that the mame cores available for android and switch do not offer some of the drivers for non arcade systems. When trying to launch the m20 machine with e.g. “mame-current” on android, I get the error message that the driver is not available. Do you know if non-arcade cores will be coming (back) to android and switch?

hmmm the other game and watch games are playable with mame …you have to use alternate rendering cuz their are slow in RA otherwise

and with alternate rendering they are loking not so nice

2 Likes

Running this was not easy. I wasn’t able to get it to work with the standard method listed here, i had to use cmd files, since MAME needed an extra ‘bios’ flag set.

Here’s an example: Running startrek

Need the m20 romset and bios files (m20.zip, m20_8086.zip) Create a cmd file with the following included:

m20 -bios 0 -flop1 /path_to_m20_files/startrek.zip -rp /path_to_m20_files/

It will boot up, but then you need to switch your keyboard to us (i think i used backslash to do this, it was a lot of trial and error).

I also tried getting mdsos working, and got it to boot with the following cmd file:

m20 -bios 2 -flop1 /path_to_m20_files/msdos20.zip -rp /path_to_m20_files/

(press “Y” to boot into msdos) Then I got stuck when msdos was asking for a new date. I couldn’t figure out the format it wanted.

Some helpful info on the difficulty of the m20 in mame is here.

Hi, thanks a lot for looking into this! Getting the m20 to work is a bit fiddly indeed. I wrote the m20 emulation article on z80ne, glad you found it and that it was useful. With the information provided there, I can run m20 software with stand-alone mame and with the help of this thread here I managed to run it with retroarch/ mess on linux/ retropie.

What I still cannot get to work, and what is currently my goal, is to run the m20 on retrorach releases on android and on the switch. I suspect that for those versions there is simply no non-arcade mame/ mess cores, or at least none that offer the m20, but I might be wrong. Which platform did you use for your test @zachmorris?

On android I am on retroarch 1.14.0 (git e3c92b0) and I have the following mame-cores available:

  • Arcade (MAME - Current)
  • Arcade (MAME 2000/ 2003mw/ 2003/ 2003+)
  • Arcade (MAME 2010)

I create a cmd with the driver name, bios and floppy arguments and run it. With above mentioned cores I get the error message in the log “Driver m20 not found”, then the app just crashes. This is not unexpected, since they all seem to be arcade cores. I cannot find any non-arcade/ mess cores, so the questions are, am I doing something wrong, am I overlooking the right core to use, or are they just not being built and if so, are the devs planning to make them available?

On switch I am on v1.12.0, the only cores that seem to be available are:

  • Arcade (MAME 2000/ 2003/ 2003+)

Here, the additional problem is, that the switch version won’t even let me launch cmd files. When loading the cmd as content, it only offers a list of “suggested” cores, with mame not being in the list. But even if this is solvable (e.g. upgrading to v1.14), I suspect that the arcade cores won’t work either. EDIT: I updated my switch version to v1.14 as well, with the same result.

Ah, I misunderstood. I guess thats a problem with Android and Switch then. The only MAME core that includes the other drivers is the ‘current’ core as far as i know. Looking at Android, the core name is mamearcade_libretro, so I’m guessing they removed all the other drivers on Android (simply because it wouldn’t compile or was too big for Android to be able to accept).

Good article btw! I’d never heard of the M20 before. Given the technical detail you provide, i’m guessing you might be capable of rolling your own core if you care to (similar to same_cdi, which compiles just the driver(s) required for the CD-i)

Ok, thanks for confirming that the issue is likely with android/ switch environment. Interesting option building my own core, however one would need to build for android and switch which probably adds another level of complexity.

Just out of curiosity, what are the reasons for the forking mame into same_cdi? It should be possible to select to build just one driver with original mame, too?

Hi @zachmorris, thanks again for pointing me towards same_cdi. I would be interested to reproduce this to build the M20 driver, or ideally, if possible build the whole MESS subset.

I have looked into the documentation of building cores to see if I can get mame/ same_cdi android core built on my machine, but it seems the official documentation does not apply, as I cannot find a “libretro/jni” folder inside the projects.

Lastly I looked into where libretro-super might include the same_cdi core, but I do not see it listed in the build scripts for Android here and here.

Is there some documentation of the steps needed to turn mame into same_cdi and how to get it to build for Android? Thanks :slight_smile:

does anybody knows if there is a way to emulate the CD-i WITH the Digital Video Card via mame?

The build system i think was recently removed and replaced with github CI/CD, so those build scripts may no longer be applicable. You can probably get better direction on compiling for Android at the libretro discord>programming channel.

Compiling just one driver is pretty easy actually. Heres what you can do:

  1. Download / Clone the MAME core

  2. Edit the Makefile.libretro so that it mimicks the same_cdi version here (or just copy over the same_cdi makefile and edit it for M20). You would only have to add a few lines to the top to ID the correct drivers (I included everything in the olivetti directory, but I’m not explicitly sure they’re all needed):

SUBTARGET ?= mess
SOURCES ?= src/mame/olivetti/m20.cpp,src/mame/olivetti/m20_kbd.cpp,src/mame/olivetti/m20_8086.cpp,src/mame/olivetti/m24.cpp,src/mame/olivetti/m24_kbd.cpp,src/mame/olivetti/m24_z8000.cpp,src/mame/olivetti/olivpc1.cpp
SAME_SYSTEM ?= same_m20

And then there’s some bits at the end of the makefile to rename the compiled core.

I tried this myself and it does compile (didn’t try for Android though)

1 Like

Digital Video titles won’t work because MAME doesn’t emulate the MPEG card. I dont think there’s any emulator that currently does.

1 Like