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.
Why does it crash on startup in DIVE.DLL with my Matrox graphics card?
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.
Ok that information didn't help. Why is it still crashing 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.)
I disabled EnDIVE. Why does it still crash with my Matrox 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.
Why doesn't game xxx run properly? I thought you said this was MAME .35 beta 11.
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.
What did you do to my mouse and how do I stop that from happening??
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).
So where's the sound?
Can't you hear it? Use OS/2's standard volume control or your favorite mixer to change the volume.
My volume is at max! I still don't hear anything!
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.
When I start up a game, I get an MCI error. Why?
Please record the MCI error(s) and e-mail me.
Why doesn't my game's sound get interrupted when another part of the system wants to make a noise?
Because I told it to operate that way. I will include an option to change this, but it has not been implemented yet.
I don't like the screen size. How do I change it?
Just resize the window. If your mouse cursor is "grabbed", you have to pause the game first.
Why is the emulation SO much faster than MAME .31?
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?
The emulation is slower than I'd like it to be. How can I speed it up?
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.
I'm at 8KHz 8-bit audio. Why is the emulation is STILL really slow?
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.
The DOS version doesn't slow down that much with sound enabled. Why?
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.
Why does sound slow everything down so much more than in MAME .34 final?
Because my new GPMIXER code is coded in C. I'm going to redo it in assembly for the "real" release.
Why is the sound really bad?
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.
MAME crashes when I do xxx. Why?
Congratulations! You found a bug. Check the BUGS.TXT file to see if I already knew about it and if not, write me.
Reading some of these questions makes me nervous. Is this thing really unstable?
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)
Why did you bother porting MAME to OS/2? The DOS version works just fine in OS/2.
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.
What are those goofy looking happy faces?
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.
I have a joystick, but MAME doesn't detect it. Why?
You probably have not installed the joystick device driver. Unzip the JOYSTICK.ZIP file and read the README file.
I have my joystick configured, but I can't move all the way to the << INSERT A DIRECTION HERE >>.
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.
hy does my Warpcenter CPU meter or other CPU meter say that my processor is being 100% utilized while MAME is running?
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.
I still don't understand why my CPU meter is pegged.
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.
What is TIMER0? Do I want to use it? Do I need any special software?
TIMER0 is a device driver present in Warp 4 and (don't quote me on this) Warp 3 Fixpack 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.
When are you going to implement full screen support?
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.
Are you going to keep up with the latest DOS versions?
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.
These games are too hard. How do I cheat?
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.
Why is your new executable much larger than the previous ones?
Two reasons: 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 favor of SPEED! The Watcom compiler puked when I tried these options.
What happened to the pretty rainbow colors?
I decided to change it, partly to easily identify different versions of MAME, partly to look less "frilly" and more "business-like". ;-)
My quick list / favorites list doesn't look the way I remember it. Why?
Did you re-create it? You should. The indicies 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.