MAME for OS/2 FAQ

By Marty Amodeo

That startup logo is very pretty, but I get a little sick of it after a while. How do I get rid of it?

Well, you don't have to get rid of it, but you don't have to sit there and wait for it to go away either. If you press a key, it will go away and the main MAME window will open.

There is a bug in the Matrox unified driver in versions less that 2.20.055 which will cause MAME to crash on startup if you are in a 24 or 32 bit color mode. If you upgrade to 2.21.055, MAME will start but you will not see the pretty colored gradient initial test pattern for some odd reason. The rest of the program will work properly however. Personally, I just keep it in 16 bit color modes because the drivers themselves seem to be much more stable that way.
 * Why does it crash on startup in DIVE.DLL with my Matrox graphics card?

Do you have EnDIVE enabled? If so disable it immediately. It breaks many (or in my experience EVERY) DIVE app. Perhaps in future driver releases it will be less broken, but for now, disable it. (You can find this setting on the "Advanced" page of your Matrox settings notebook.)
 * Ok that information didn't help. Why is it still crashing with my Matrox graphics card?

Hopefully it shouldn't. I have changed the initial background from an RGB (24 bit color) image which DIVE seemed to choke on sometimes, to a 16 bit color one (and also changed it from flowery rainbow colors to a "manly" greyscale). If you still can't even get MAME started, e-mail me with a full description of your system including: processor type/speed, video card, driver version, OS/2 version, and any FixPacks you've installed.
 * I disabled EnDIVE. Why does it still crash with my Matrox card?

Probably an error on my part somewhere, but it could be a DIVE or MMPM quirk of some sort. Also note that not all of the supported games work in the DOS version either. If you notice a problem that I did not mention in BUGS.TXT and it works fine in the DOS version, please mail me about it.
 * Why doesn't game xxx run properly? I thought you said this was MAME .35 beta 11.

By default, MAME will grab control of the mouse and the mouse pointer will disappear. If you would like to change this, change the input options. You can change the defaults or on a game by game basis. To make the mouse re-appear if it is "grabbed", just pause the game (with the P key).
 * What did you do to my mouse and how do I stop that from happening?

Can't you hear it? Use OS/2's standard volume control or your favorite mixer to change the volume.
 * So where's the sound?

Do you have a WinOS/2 or DOS session running that is using the sound card? Close any non-OS/2 native applications that may utilize digital audio. Another possibility is that you have picked settings that are not supported for your sound card. MAME does NOT auto-detect ANYTHING related to sound. It will blindly accept any parameters you pass it, so choose correctly or disable sound.
 * My volume is at max! I still don't hear anything!

Please record the MCI error(s) and e-mail me.
 * When I start up a game, I get an MCI error. Why?

Because I told it to operate that way. I will include an option to change this, but it has not been implemented yet.
 * Why doesn't my game's sound get interrupted when another part of the system wants to make a noise?

Just resize the window. If your mouse cursor is "grabbed", you have to pause the game first.
 * I don't like the screen size. How do I change it?

Because my previous compiler (Watcom 10.0) was a piece of garbage. To amend this problem, I upgraded to Watcom 11.0. The problem persisted (if not worsened!). I have now decided to dump Watcom altogether and use a real compiler. I'm using EGCS with all of the optimizations enabled. Big difference huh?
 * Why is the emulation SO much faster than MAME .31?

Perhaps you have the sound quality set very high. Try reducing the frequency and quality of the sound to increase speed. You may also disable the sound for a big speed boost.
 * The emulation is slower than I'd like it to be. How can I speed it up?

Perhaps your computer doesn't have the necessary "horsepower" to run this version of MAME. Try disabling the sound altogether and allowing some frame skipping to occur.
 * I'm at 8KHz 8-bit audio. Why is the emulation is STILL really slow?

The DOS version makes use of the FM synthesis capabilities of your sound card. MAMEOS2 does not and has to use your main CPU to synthesize FM. This requires a lot more overhead. Perhaps in a future release, I'll figure out how to use the MIDI subsystem to synthesize FM.
 * The DOS version doesn't slow down that much with sound enabled. Why?

Because my new GPMIXER code is coded in C. I'm going to redo it in assembly for the "real" release.
 * Why does sound slow everything down so much more than in MAME .34 final?

Perhaps you have the sound quality set very low. Try increasing the frequency and quality of the sound. The sound may also be of poor quality if you are not operating at full emulation speed. Try increasing your frame skip or allowing automatic frame skip regulation. If you are operating at full speed and it still sounds bad, then this may be a bug. Write to me about it.
 * Why is the sound really bad?

Congratulations! You found a bug. Check the BUGS.TXT file to see if I already knew about it and if not, write me.
 * MAME crashes when I do xxx. Why?

Not at all. In all of my work and testing on this program I have NEVER had an unrecoverable system crash resulting from MAME. The worst that will happen is that the application itself will crash and since OS/2 actually has some memory protection, etc., your system will come back to you unharmed. All of the situations where the application itself crashes have been reproducable in my experience. So, if you find that doing a certain sequence of things or starting a certain game results in a crash, don't do it! (and tell me about it)
 * Reading some of these questions makes me nervous. Is this thing really unstable?

Why not? I feel that I've offered some nice enhancements that the DOS version doesn't have. Now I also have nearly comparable speed and comparable sound quality.
 * Why did you bother porting MAME to OS/2? The DOS version works just fine in OS/2.

They indicate the state of the LEDs on the coin slots or start buttons of various arcade machines. If you don't like them, you can have your keyboard LED's flash instead. Select the option under Game->OS/2 Specific Options.
 * What are those goofy looking happy faces?

You probably have not installed the joystick device driver. Unzip the JOYSTICK.ZIP file and read the README file.
 * I have a joystick, but MAME doesn't detect it. Why?

Sounds like you need to recalibrate the joystick. Go to the input options and click the Recalibrate button. Then move the joystick to all extremes.
 * I have my joystick configured, but I can't move all the way to the << INSERT A DIRECTION HERE >>.

Probably because it is, but maybe not. In order to get accurate timing, to regulate to 60 fps, I had to use a busy wait loop because the DosSleep function has a granularity of 32 ms. My busy wait loop is not wasteful or a complete processor hog, however. In my loop, it calls DosSleep with a parameter of 0 which will allow another program of equal or higher priority to execute. If there is no such program, then MAME will continue to execute. You will notice that although your trusty CPU meter is pegged, your system is still very responsive. If this bothers you however, you can use TIMER0 for timing.
 * Why does my Warpcenter CPU meter or other CPU meter say that my processor is being 100% utilized while MAME is running?

Most of the CPU meters measure utilization by idle time. They do this by creating a thread of idle priority class and tallying up how much time it was allowed to execute. MAME will not allow any threads of idle priority to execute while the emulator thread is running because it is never idle.
 * I still don't understand why my CPU meter is pegged.

TIMER0 is a device driver present in Warp 4 and (don't quote me on this) Warp 3 Fixpak 26 and higher. It allows me to block my emulator thread for a much finer measurement of time than the standard OS/2 functions. This allows MAME to give some CPU slices back to the operating system (and other applications) for a period less than 32ms. The drawback is that there are some DOS applications, including WinOS/2 itself, that cannot function while this driver is being used by an OS/2 application. If you need to run any DOS or WinOS/2 applications while running MAMEOS2, do not enable this option. Otherwise, I recommend it.
 * What is TIMER0? Do I want to use it? Do I need any special software?

When I can reliably build and run the Scitech MGL sample applications on my system. So far, they cause horrible crashes for me, severely hampering my development efforts.
 * When are you going to implement full screen support?

I'm certainly going to try! The MAME team moves very quickly, but given enough time, I'll be able to get the OS/2 version out at around the same time as the DOS and Windows and Unix versions. I know it's been a long time since my last release, but when my life finally settles down, I should be able to keep up pretty well.
 * Are you going to keep up with the latest DOS versions?

Under the game menu, select the Cheat option. This option will be marked when cheating is enabled. Next go to the MAME settings with the TAB key and pick the appropriate cheating options. This can be enabled or disabled at any time, while a game is running or not.
 * These games are too hard. How do I cheat?

Two reasons:
 * Why is your new executable much larger than the previous ones?
 * 1) MAME now supports more games (ie. there's a LOT more code),
 * 2) I'm using GCC which allows me to make the size/speed tradeoff in favour of SPEED! The Watcom compiler puked when I tried these options.

I decided to change it, partly to easily identify different versions of MAME, partly to look less "frilly" and more "business-like". ;-)
 * What happened to the pretty rainbow colors?

Did you re-create it? You should. The indices that I used to look up the games have changed from one version to another and your quick list probably points to garbage by now. Also, you may have noticed that the full game names are now displayed.
 * My quick list/favorites list doesn't look the way I remember it. Why?