FM-Towns in RetroArch

Has anyone successfully got FM-Towns working? I’ve found some info regarding the mame core but I don’t know if this is still relevant.

In MAME? I guess.

This guide is quite up to date, I hope it will help you. I haven’t tried the MAME sub systems yet.

1 Like

Thanks m8 got it working :+1::+1::+1:


There are a couple of tricks when you start increasing your FM-Towns game library.


Use the “fmtownshr” folder. This system has the increased memory needed by some games so you won’t have to mess with memory command line switches.


Enable alternative rendering at the default 640x480 in the "config/MAME/fmtownshr.opt


mame_alternate_renderer = "enabled"
mame_altres = "640x480"

This will keep the FM-Towns from switching between 240 and 480 modes during boot.


The FM-Towns by default expects the mouse to be on port 2 and an FM-Towns pad to be on port one, so your mouse won’t work. There are a couple of ways to fix this but I find it easiest to just remap the machine controls. You can use this as your “saves/mame/cfg/fmtownshr.cfg”…

<?xml version="1.0"?>
<!-- This file is autogenerated; comments and unknown tags will be stripped -->
<mameconfig version="10">
    <system name="fmtownshr">
            <device instance="floppydisk1" directory="" />
            <device instance="floppydisk2" directory="" />
            <device instance="cdrom" directory="" />
            <device instance="memcard" directory="" />
            <device instance="harddisk1" directory="" />
            <device instance="harddisk2" directory="" />
            <device instance="harddisk3" directory="" />
            <device instance="harddisk4" directory="" />
            <device instance="harddisk5" directory="" />
            <keyboard tag=":" enabled="1" />
            <port tag=":pad2:mouse:BUTTONS" type="P2_BUTTON1" mask="16" defvalue="16">
                <newseq type="standard">
            <port tag=":pad2:mouse:BUTTONS" type="P2_BUTTON2" mask="32" defvalue="32">
                <newseq type="standard">
            <port tag=":pad2:mouse:MOUSE_X" type="P2_MOUSE_X" mask="65535" defvalue="0">
                <newseq type="standard">
            <port tag=":pad2:mouse:MOUSE_Y" type="P2_MOUSE_Y" mask="65535" defvalue="0">
                <newseq type="standard">

…to avoid having to remap things yourself.


When using a strict SL method for this system, some games will have a boot or system disk ZIP in the MAME SL library that pairs with the SL CHD library. You will need to select the ZIP to run the game and the CHD will have to be in a folder with the same name as the ZIP.

If there is no ZIP for the game in the library, you will need to create a dummy ZIP. The name of the ZIP can be found in the hash xml “fmtowns_cd.xml”.


<software name="daikok2">

The fmtowns_cd.xml has a great list at the beginning that shows if a game won’t run, and if it has a matching floppy ZIP.

EDIT: The above mentioned list is a “missing” list. :upside_down_face: (Doh!)


does the alternate rendering keep all systems running with mame , from switching res ?

did´t knew that this setting would change such behavior :thinking: :sweat_smile:


Mostly. It forces all screens to the defined resolution.

You can define any resolution, up to 4K, but I would stick with the default 640x480.

This also give you access to high res rendering in systems like the Vectrex, which is rendered quite well by MAME. (Nice bright points in the corners.)

But anything even as high as 800x600 makes it hard to see small things. (Like tank shots in Armor Attack.)

I may have to make some image copies that match the mame rom names, just in case someone wants to use the MAME SL for Vectrex. :grin:

And turn off the viewport flip if HSM has added Vectrex to his flip list.

1 Like

yeah i just used it for vector games in high res … :grinning: didn´t exactly knew what this do otherwise besides changing the res of a game but that it also controls the “system” settings or disable it res swapping…its new to me :slightly_smiling_face:

1 Like

Cheers chaps for all the info! Appreciate it :+1:

1 Like

Yeah the res switching was a bit of a pain, Atari ST was a pain also as switching to low res mode in core options gave a strange graphical defect while running a preset (not sure if it did that without a shader). I just changed the opposite direction scanline multiplier in hi res mode like you mentioned to me :+1:

I can’t make this work. Can someone explain what i’m doing wrong?

I’m using MAME current core. I’m trying to run After Burner.

I created a Retroarch\system\mame\hash folder and placed the “fmtowns_cd.xml” from the link inside.

I created a folder named “fmtownshr” in my Roms folder. Inside that folder i placed the “” bios, taken from the MAME set.

In that same folder i also created a subfolder names “aburner” because that’s the software list for the game according to the hash. And in that subfolder i placed the “After Burner (Japan) (Rev 1).chd”, named according to the hash file.

MAME crashes when i try to load the CHD. That’s as far as i went.


Hi m8, I just opened FM-Towns Marty system directly from the mame core and loaded the chd via the mame gui. I say that like it was nothing but I struggled a bit with it tbh, luckily @p3st helped me with it. I only wanted to launch a particular game so I could grab some footage.

in mame ? just wondering cuz the ST etc. has a own core^^

Oh no Atari ran in it’s own core, FM via mame like you showed me :beers:

You can’t load the CHD directly, as content.

The zip needs to be outside the “aburner” folder, in the root of the “fmtownshr” folder.

I didn’t mention before, because Boz said he already had it working. but you will need the “” file from the MAME roms, also in the root.

It looks like this list is a “missing” list. :innocent: You will just have to look in the software list roms to see if the game has a matching boot or system disk.



Is that the correct files/structure?

I’m loading the and i’m now getting an error about missing files.

Could you post your MAME.opt settings? I tried changing some of them but still, no dice.

1 Like

Yeah I should have thought of that. aburner is probably an arcade rom too, so softlists and softlists auto media needs to be enabled. Here is my OPT.


mame_alternate_renderer = "enabled"
mame_altres = "640x480"
mame_auto_save = "disabled"
mame_boot_from_cli = "disabled"
mame_boot_to_bios = "disabled"
mame_boot_to_osd = "disabled"
mame_buttons_profiles = "enabled"
mame_cheats_enable = "disabled"
mame_cpu_overclock = "150"
mame_lightgun_mode = "none"
mame_lightgun_offscreen_mode = "free"
mame_mame_4way_enable = "disabled"
mame_mame_paths_enable = "disabled"
mame_media_type = "rom"
mame_mouse_enable = "enabled"
mame_read_config = "disabled"
mame_saves = "game"
mame_softlists_auto_media = "enabled"
mame_softlists_enable = "enabled"
mame_throttle = "disabled"
mame_write_config = "disabled"

I recommend a separate OPT for each softlist machine, so it doesn’t mess with your global MAME settings.


Those .opt settings did the trick.



One thing i noticed with the “alternate rendering” and forcing 640x480 is a very bad pixel shimmering effect. In some games like Flying Shark, the image looks like it has “waves” and it’s not very stable. Normal rendering looks correct but you get RetroArch flicker itself whenever there’s a resolution change.

I think the later is the better poison to pick.

FM TOWNS or FM TOWNS Marty’s “alternate rendering” looks better at higher resolutions. I use this value because I have a 4K TV. mame_altres = “2880x2160” It probably consumes machine power.

I think 1440x1080 is good for a 1080 monitor if the machine has room.

I agree that disabling “alternate rendering” makes it look better, but the problem is that the shader takes a long time to load.

My advice on alternate rendering was really geared towards the Mega Bezel. Without alternate rendering it will cause the shader to reload at times.