top of page

Running the Mac version of F-117A Nighthawk Stealth Fighter 2.0 with MAME


F-117 Stealth Fighter 2.0 running under MAME emulation
F-117a Stealth Fighter 2.0 running under MAME emulation

This is my guide to running the Mac version of F-117A Nighthawk Stealth Fighter 2.0 under the MAME emulator. It took a lot of testing with various emulators and testing with MAME to figure this all out, so hopefully this guide makes it easier for anyone else who would like to try out this classic flight sim. I'm currently using Win10 so this guide assumes that. The usual caveats apply, you follow this guide at your own risk. If you're uncomfortable doing something then don't!


We'll be covering:

  • Installing MAME and building the virtual Mac.

  • Virtual Mac setup, transferring apps from PC to the Mac and installing F-117.

  • Configuring MAME and over-clocking for a better flight sim experience.


Installing MAME and generating a default config


Installing MAME :

  • First thing to do is get a copy of MAME . You can get it at the MAME download page, at time of writing the latest version is v0.259. These instructions are for that version but I can't imagine it will much different for later versions. You can skip the 'MAME 0.259 full driver information in XML format' download, you won't need it.

  • Once you have it, open the self extracting exe. Windows will probably show you a 'you've downloaded this, are you sure you want to install' dialog.

  • Go ahead and pick a folder to extract to and that's MAME installed.


Mame with the Available filter applied.
MAME with the Available filter applied.

Creating a default config:

  • Now it's time to create some default config files. Open MAME , you should see a huge list of stuff none of which you have. If you want, you can filter this list so it's more useful, I would suggest the 'Available' filter, on the left hand side. As nothing is available yet, it'll be an empty list.

  • Click on the 'General Settings' option at the bottom of the page to open up a settings menu.

  • Click on the 'Save Settings' option, MAME will report the settings have been saved. Now click on the 'Return to Previous Menu' and the settings will close.

  • Then click on the 'Exit' icon (white X, on a red square) at the top right of the page and MAME will exit.

You've now successfully created the Mame.ini config file, you should see this in your MAME folder and a default configuration, if you go to the cfg sub-folder there should be a default.cfg file present.


Building the virtual Mac


We're going to be creating a virtual Mac, in this case it will be Quadra 800. Now your google-fu is going to have to strong, because the roms you need are tricky to find. If you've done any Mac emulation in the past you may already have a Quadra rom, unfortunately the ones used by MAME are different (I found this out the hard way). You're going to have to find:

  • macqd800.zip

  • adbmodem.zip

MAME hardware emulation is a lot more accurate then other emulators you may have come across, this may be why F-117 only works reliably on MAME .


You may be tempted to emulate one of Mac II series as the roms are easier to find, however the mouse is horribly jerky and difficult to use due to an issue in the emulation and it's recommended to use an alternative machine unless you have a specific reason for using a Mac II. The Quadra 800 mouse works perfectly.


We'll need a hard disk image, I would recommend Mac OS/System 7.6.1, it's the last version F-117 can run on, I believe. MAME uses hard disk images in a .chd (compressed hunks of data) format. Fortunately suitable images are easier to find at the MAME Driver:Mac 68K page. It's worth a quick read as there's lots of useful info there. You may have to use 'save link as...' and your browser may complain about it being an unsecure download.




Assuming you have the roms:

Mame: a Quadra 800 appears!
MAME: a Quadra 800 appears!
Mame fails to find the hard disk image
MAME fails to find the hard disk image
  • Copy the roms into the MAME sub-folder roms. They don't require unzipping and should remain as zips.

  • Copy the hard disk image zip into the MAME folder and unzip it.

  • Open up MAME again and if you use the 'Available' filter you should see the 'Macintosh Quadra 800'.

  • If you try and start it by double clicking, you may see a 'Start Empty' option, or a big list of floppy images with 'Start Empty' at the top. If you double click on this option, you'll be asked to select the emulated Quadra bios (the default is fine) and the Mac will try and start but won't find the hard disk image so you'll see the Mac 'start-up disk missing' screen.

  • It's time to exit out of MAME again. Activate the MAME UI with the Scroll Lock (Scr-Lk) key, you should see an overlay pop up briefly which says the MAME UI is active and hit Esc to exit back to the main MAME page.

  • Exit from MAME . If you look in the MAME cfg sub-folder you should see another default config file macqd800.cfg.


Starting up MAME with a hard disk image


To start the Quadra 800 with a hard disk image you can use the command line, or create a windows batch file (I prefer the batch file and put it in my MAME folder). Either way the command to use is:

mame macqd800 -hard1 mac761.chd -ramsize 128M -verbose
  • macqd800 identifies the machine to emulate as a Mac Quadra 800.

  • hard1 identifies the hard disk image to use, mac761.chd.

  • ramsize is the amount of ram the machine should have, a Quadra 800 can have a maximum of 128Mb so why not?

  • verbose logs startup info, I find kind of interesting but it's entirely optional, so feel free to leave it out.

If everything is ok, you should see the following.

The Mac starts up
The Mac starts up
Welcome to your new Mac
Welcome to your new Mac









You may have seen an MAME machine info page that should have reported a resolution of 640x480 and a warning page that the sound is emulated imperfectly, that may be the case but I haven't noticed any issues!


Now is a good time to check everything is ok, that the mouse works, etc. It's also time for a little bit of housekeeping.

  • The resolution should be 640x480 and 256 colours, which is fine for F-117. You can check this by going to the 'Control Panels' option under the Apple menu item and opening the 'Monitors & Sound applet to check this. Change it to these settings if it isn't.

  • You might find the mouse is a little too responsive, I recommend reducing the speed to 'Very slow' in the 'Mouse' control panels applet.

  • The bar at the bottom of the screen is the 'Control Strip', it has a nasty habit of impinging on the display when playing. You can hide it with the 'Control Strip' applet.

  • The desktop is quite dull and grey, check out the 'Desktop Patterns' applet, I quite like 22/74.

  • Once finished you can use the Apple menu or Special menu item to shutdown the Mac, it's recommended to do so or your Mac will complain next time you start it up.


Once shutdown you should see this screen. Now to close MAME we need to enable the MAME UI, the hotkey to enable/disable it is Scroll Lock (Scr-Lk) on Win10. You should see a MAME UI overlay pop up briefly each time you enable or disable it.


We'll come back to it later but for now, enable the MAME UI and hit Esc to close MAME .


Now a quick warning, you really want turn off the MAME UI when you're playing. I have lost count of the number of times I have accidentally killed a MAME session or reset the virtual Mac because I left the MAME UI enabled and used a key combo in the sim that MAME uses for something else.


If you're playing, disable the MAME UI!


Installing apps and F-117


Now it time to start installing some apps and F-117 onto your new Mac. So here's a quick rundown of what you'll need:


  • stuffit_expander_5.5.img - The 7zip of the retro Mac world. This is available as a disk image that MAME supports. I haven't had any issues when using this version in Mac OS 7.6.1 but other versions exist.

  • stuffitdlx551.sit - StuffIt Expander Deluxe like StuffIt Expander, but it also can also support disk images which we'll encounter when we install F-117. I've only been able to find this as a .sit StuffIt archive, this is why we need StuffIt (non deluxe version) to extract the deluxe version (oh the irony!)

  • F-117a_Stealth_Fighter_2.1.sit - The game itself, (why you're reading this!)

  • F117a_Update_2.3.1.sit - The first patch.

  • F117A_Update_2.3.2.image_.sit - The second/final patch.


Installing StuffIt Expander

MAME: mounting a disk image
Mounting a disk image

  • Start up your virtual Mac.

  • Enable the MAME UI with Scr-Lk and hit the Tab key to open the MAME UI menu.

  • Go to the 'File Manager' option, here you can mount floppy disk and cd images.

  • Hit Tab again to close the MAME UI and the disk image should be mounted.

  • Open the disk and start the StuffIt Expander installation.

  • The default options are all fine and you can select it as the preferred helper application during the install process.

  • Once complete shutdown the Mac, open the MAME UI file manager again, and select 'Empty Slot' to remove the disk image.

Selecting an installation folder
Selecting an installation folder

Unmounting the disk image
Unmounting the disk image









Installing StuffIt Deluxe


If you've had a look at the MAME Driver:Mac 68K page, you'll already know the recommended process for transferring files from your host pc to the emulated Mac is with a cd image. You can use whatever software you're comfortable with, I tend to use ImgBurn. The image has to contain StuffIt Expander Deluxe, F-117 and the two patches and should be in .iso format. Choose a suitably short name like f117.iso.


cd image error dialog box
Although it complains about the cd image it mounts it anyway

Once you have your cd image:

  • Start up your mac, enable and open the MAME UI and use the 'File Manager' to mount the cd image as a cd and close the MAME UI.

  • Now you're probably looking at an error dialog box suggesting the cd can't be read from, wondering what has gone wrong. The answer is nothing, just click on the Eject button and your emulated Mac will mount the cd anyway!

  • Copy the files from the cd to a new folder on the Mac hard disk. You may find the files have their names shortened and uppercased.

  • Open the StuffIt application from the desktop, go to File > Expand and start expanding the StuffIt Deluxe Installer.

  • Open the newly created StuffIt Deluxe folder, take a look at the included docs and run the installer.

  • When it comes to registration, type anything into name and supply the serial number.

  • Select the Easy Install and just use the default install location. You get a warning saying after installation the Mac will need to restart.

Mac desktop after installation
Mac desktop after installation
  • Once finished the Mac will ask to restart, now would be a good time to open the MAME UI and unmount the cd image as everything is now on your Mac's hard disk image.

  • Click on the restart button and the Mac will restart. You should see a new desktop icon and a new StuffIt option in the top menu bar.




Installing F-117A Nighthawk Stealth Fighter 2.0


Depending on your cd burning software your StuffIt archives may have different names. I'm not sure if you can skip the first patch and go straight to the second patch, but I tend to install it.


  • Go back to the folder where you copied the F-117 StuffIt archives, highlight the game archive (mine was called F_117_A.SIT) and use the StuffIt menu bar option to expand it.

  • It will expand into a Stealth Fighter folder, move this folder to your hard disk on the desktop.

  • Highlight the first patch (F117A_UP.SIT) and use the StuffIt menu bar option to expand it.

  • This will create a F117a Update 2.3.1 folder, open it and copy the Release Notes and the application into your F-117 folder on your hard disk, you'll want to replace the existing release notes and application.

  • Highlight the second patch (F117A_U2.SIT) and use the StuffIt menu bar option to expand it.

  • This will create an image that StuffIt will automatically mount, so it should appear on your desktop as F117A Version 2.0 Update.

  • Open this image and you should see a README.NOW! document and a F117a232.sea file. This is a self expanding archive so just open it.

  • It will ask where to create a folder, the default location is find and you should find an F117a232 Folder has been created on your hard disk.

  • Open it to find release notes and the application. Copy these to your existing F-117 folder replacing both files with these new versions.

  • Clean up any files/folders and check the application version with File > Get Info, it should be v2.3.2

  • And now finally start the game!

F-117 Aircraft Identification
It's a Backfire!
F117 mission selection
Another day at the office












Optimising the experience


There are now a couple of things we can do to optimise the playing experience.


Overclocking the virtual Mac


Now we have F-117 working we can try and increase the performance of the virtual Mac for a smoother gameplay experience. MAME has an overclocking facility we can take advantage of, but before we can use it, we have to enable it. We need to change our existing cmd line or batch file, mentioned earlier to include the cheat option like so:

   mame macqd800 -hard1 mac761.chd -ramsize 128M -verbose -cheat

When we start up the virtual Mac, we caan open up the MAME UI and access the 'Slider Controls'. We should see quite a comprehensive menu. The Overclock CPU :maincpu is the option we are interested in, use the left and right arrows keys to move the slider.



Overclocking the CPU to 200%
Overclocking the CPU to 200%

In this example I have overclocked the virtual Mac CPU to 200%. When you overclock the CPU the sound will also be overclocked so you may hear sound being played at a higher tempo or repeated fragments of sound. It'll probably depend on the host pc MAME is being run on. Sound vs speed is something you can experiment with to find your preferred experience.


Each time the Mac is started the overclock option will have to applied. It is not saved between sessions. This is a deliberate decision by the MAME dev team. Overclocking increases the risk of crashes on some emulated hardware (although I haven't experienced any yet with the Mac).


Imagine getting to a final boss only to have the emulated machine crash on you, as rage inducing as that might be, at least you'll be aware of the possibility by having to set the overclock each time. It seems a sensible decision by the MAME devs.


Joystick controls


If there's one problem MAME does have, it's joystick controls, and that might not be considered entirely fair, because you could say if there's one problem retro Mac's have, it's joystick controls. Retro Mac's treat their joysticks like a mouse device which creates issues.


Joystick axes are normally absolute axes, they report exactly where they are. For example, if you use Win10 joy.cpl to test moving your joystick x-axis then moving your stick to the right would cause the pointer in the axes box to move to the right but releasing the stick would cause the pointer to jump to the centre position again. This is what we want in flight sims.


But a mouse uses relative axes, you move your mouse to the right the mouse pointer moves right, you stop moving the mouse and the pointer stays exactly where it is. This is what you want from a mouse.


As retro Macs treated their joysticks like a mouse device it used relative axes. So if you release a Mac joystick it doesn't snap back to a centre position. This is not what we want in Mac flight sims!


It means when you turn to the right you need to push right, then push to the left to centre the mouse position to maintain the turn and then push to the left again, to start levelling out then push to the right when level to centre the position!


In fact Gravis who produced the MouseStick and MouseStick II for the Mac had control panel applets to account for this and return to a centre position when the stick was return to centre, like an absolute axis joystick would.


When trying to fix this I came across, an interesting utility ajoy2mouse on aminet. Used with the Mac emulator Shapeshifter on the Amiga, it does for the emulator what the Gravis applets did for their joysticks. Added it to the references below, it's worth a read as it probably explains things better than I did. I haven't gone down the rabbit hole of trying to run WinUAE to run Shapeshifter to run an emulated Mac to run F-117... yet.


Now we can try and get round this by using mapping software to map the joystick x/y axes to mouse x/y axes setting the axes type as absolute. I can do this in my Target app and can see this in Win10. I can get the Win10 mouse pointer to snap back to centre when I release the stick. However MAME does not like this.


MAME has comprehensive native controller support, which isn't surprising when you're trying to emulate a myriad of control schemes, with a myriad of controller hardware, arcade games have used throughout the years. But what it won't do is use an absolute axis as a relative one. From the MAME technical specs:

Attempting to read an absolute axis item as a relative axis always returns zero.

The other Mac emulators I've used have far less controller support, so pretty much do whatever the controller/Win10 tells them, they however, cannot run F-117 reliably in my experience.


I've tried a number of things including:

  • Checking for a suitable MAME plugin.

  • Trying to run the Gravis MouseStick/MouseStick II control applet (bit of a long shot, they require the physical joystick to be present).

  • Searched for a suitable Mac OS 7.6.1 utility.

  • A lot on testing with the MAME Input Settings, including testing input providers, advanced controller configuration, TM Target settings, etc. in all cases either the emulated mouse was unresponsive and the MAME Input Devices showed no axes change, even when using a virtual ThrustmasterMouseDevice or acted as if the mouse axes were relative axes.

If anyone manages to find a solution, please, drop me a message!


Joystick workarounds


F-117 is entirely playable with the keyboard, but that's only my opinion. You can still use a joystick but we'll be simulating keyboard key presses with a controller.


First thing we want to do is sort out the joystick deadzone and limits, you'll need to run up MAME, not from the batch file, just the MAME program to get access to Advanced Options.

  • Select the Quadra 800 and go to System Settings, then Advanced Settings and down to the Input Options section.

  • MAME has a default high joystick deadzone so we want to lower the value (or 0).

  • The joystick saturation is the limit at which the joystick stops responding so a higher value (or 1) is better.

  • Finally lower the joystick threshold.

  • Return to the previous menu and save the system settings before quitting MAME.

Obviously the optimum values will depend on your controller so feel free to experiment.


Now all we have to do is map the controller inputs to the keyboard keys. Start the virtual Mac, enable the MAME UI and go to Input Settings, then the Input Assignments (this system) option. You should see all the input assignments allocated to the mouse and keyboard, I'll cover a joystick axis and a button.


To assign an axis, eg. controller left to left arrow,

  • Scroll down to the left arrow assignment, double click and the entry will change to a couple of left/right arrows. At the bottom of the overlay, you'll see, the existing assignment, 'Kbd LEFT or'.

  • Move your controller left and the assignment will change to 'Kbd LEFT or Joy n Left' (where n is the number of your joystick identified by MAME), and the Left Arrow assignment in the list will also change to 'Kbd LEFT or Joy n Left'.

You can repeat this for the other keyboard arrows/controller directions.

Setting controller axes
Setting controller axes to arrow keys

If the bottom of the overlay shows NONE, showing an empty assignment, add in the original key (in this case keyboard left arrow) pressing it and then select the assignment again to append the joystick left setting, so we end up with 'Kbd LEFT or Joy n Left'.


If it all goes a bit wrong, highlight the assignment, and press the delete key to set it to NONE and then press delete again to return it to the default assignment. It takes a bit of getting used to when you first try and set it up but key press instructions appear at the bottom of the overlay.



Setting a controller button
Setting a controller button to the Return key

To set a button, highlight the assignment, in this case we'll set Return to Joystick button 1.

  • Highlight the Return assignment select it.

  • In my case it showed NONE at the bottom of the overlay so I pressed the Enter key to set it back to Enter, then selected it again and pressed button 1 to set the assignment to 'Kbd ENTER or Joy n Button 1'.


Once down you can return to the previous menu and close the UI. Don't forget to disable the MAME UI, if you're about to play!


When things go wrong


If things go wrong, and the control scheme ends up messed up, it's simple to fix. Simply delete the default.cfg and macqd800.cfg files in the cfg sub folder. MAME will recreate these files when you start it again. You can then reapply any options or mappings you need.


And finally...


A huge shout out to all those devs, maintainers and other contributors to the MAME and others projects used in this guide. Without their dedication, this guide and playing this classic game would not be possible!


Here's a quick video of a test mission from start to finish!




References and further reading


MAME’s User Interface >> Configuring inputs

MAME Documentation >> Technical Specifications >> Input System


bottom of page