Alright, this is a question that gets asked often, but the answers are not obvious -
What I propose is: I will try to give a definitive answer, and then hopefully one of the mods can change the thread title and STICKY this.
First off, there are four situations that this occurs.
When you launch a game for the first time, a message comes up about not playing games you aren't entitled to. This is called the disclaimer. I believe you have to type OK to bypass this (not wiggle the joystick), but you only have to do it the first time the game is played. And I think it can also be bypassed by adding an empty file named <romname>.ini to your C:\MAME\ini folder. For MAME 0.63 and later, you can bypass this by setting skip_disclaimer to 1 in your mame.ini file.
The next is called the game_info screen and comes up with information about the resolution and processors that the game used and can be bypassed by moving the joystick left then right. For MAME 0.63 and later, you can bypass this by setting skip_gameinfo to 1 in your mame.ini file.
The third is usually called the game_warnings screen and comes up with a message like "This game has known problems: Screen flipping in cocktail mode is not supported. Press OK to continue. " You can wiggle the joystick to bypass this screen.
The last screen is called the BadDumps screen and comes up (in the DOS box) with a message like "Rom XXXYz is missing, XXYE is best available. The game may not work correctly. Press any key to continue."
The last two screens can be skipped by similar settings (-skip_warnings) in the .ini file of NoNameMAME or BuddaMame.
For MAME 0.79 thru 0.99u2, the last two screens may also be bypassed by either sending "-ftr 1" after the game name, or by adding "Frames to Run 1" to either the mame.ini file or the individual gamename.ini file. (Thanks to
Howard Casto for discovering this).
Also, any of the screens can be bypassed by changing the source code and recompiling MAME.
The following info is from my personal updated FAQ page:
How do I get rid of the blasted "Click OK to continue?" screensThree ways: The simplest is to just move your joystick right or left. NOTE: MAME is actually looking for "O" followed by "K", "Analog Joystick X-" followed by "Analog Joystick X+", or "UI LEFT" followed by "UI RIGHT" Therefore, if you are using a keyboard hack and your joystick is mapped to "A" for Left and "D" for Right, you need to remap the UI LEFT and UI RIGHT keys in MAME to "A" and "D" for this method to work.
For DOS MAME, the ArcadeOS front-end has an option to automatically bypass the OK screens, or
You can
recompile the MAME source and then the screens will never even show up. Here's how to do it: Get and apply the patch files from
SirPoonga's site, or follow the changes below. SirPoonga's files give you a mame.ini file setting to turn the screens on and off, my changes just eliminate the screens permanently.
To compile your own without nag screens, follow these changes stolen from the Mameworld compile board:
For MAME 0.60 and previous (line numbers may be different):
Open up mame.c and edit line 1195: if (settingsloaded == 0) and change it to: if (0).
In line 1202: if (showgamewarnings(real_scrbitmap) == 0) change it to: if (1).
For MAME 0.61 and 0.63 (line numbers may be different):
Open up mame.c and edit line 502 -> if (settingsloaded || showcopyright(artwork_get_ui_bitmap()) == 0) I change it to if (1)
In line 505 -> if (showgamewarnings(artwork_get_ui_bitmap()) == 0) I change it to if (1)
For MAME 0.63 and later, you can skip the initial startup screen and the game settings screen through the mame.ini file. Be sure to save any previous ones and run "mame.exe -cc". However, you still get the "Screen flipping is not supported in cocktail mode, The colors are wrong", etc. messages. A fix that I devised to avoid this is as follows:
Open mame.c and around line 505 you will see the following code:
/* show info about incorrect behaviour (wrong colors etc.) */
if (showgamewarnings(artwork_get_ui_bitmap()) == 0)
Change the second line to > if (options.skip_gameinfo || showgamewarnings(artwork_get_ui_bitmap()) == 0)
With this change, if skip gameinfo is enabled in mame.ini, you will not see any incorrect emulation warnings or startup screens. If this setting is disabled, you will see both the game warnings and the game info screens.
***
In my custom compile, I also remove the "Bad or missing rom, Press any Key" screens as follows: (Data provided by Ciro of Emuloader) (Some of the code has changed since he sent this, but you should still be able to figure it out.
"I discover where you can avoid that message (not only "No Good Dump Known", but "bad CRC" and "bad Size" as well).
Follow these steps:
1. Make a backup copy of the file "mame\src\common.c"
2. Open the file "mame\src\common.c"
3. Go to the line 880 (not sure if this is the exact line) You will see this function:
......
/*-------------------------------------------------
display_rom_load_results - display the final
results of ROM loading
-------------------------------------------------*/
static int display_rom_load_results(struct rom_load_data *romdata)
......
4. Comment this "IF" sequence (everything, including the " } " character on the end of it)
The commentary characters are:
- to open the commentary use : " /* " (without the quotes)
- to close the commentary use: " */ " (without the quotes)
...........................
/* if we're not getting out of here, wait for a keypress */
if (!options.gui_host && !bailing)
{
int k;
/* loop until we get one */
printf ("Press any key to continue\n");
do
{
k = code_read_async();
}
while (k == CODE_NONE || k == KEYCODE_LCONTROL);
/* bail on a control + C */
if (keyboard_pressed(KEYCODE_LCONTROL) && keyboard_pressed(KEYCODE_C))
return 1;
}
............................
5. Delete these two commented lines from the "IF" statement or the compiler will generate an error...
/* loop until we get one */
/* bail on a control + C */
6. Save the file and re-compile MAME... That's it!!!
PS: Always keep the .o (object files). If you change only one file, you will not need to wait for all the compilation to be over...
In the compilation folder, just delete the file "common.o" from "mame.obj" folder (this folder can be different for other types of compilation, mine is "mameppro.obj" because I use the Pentium optimized compilation) so it will recompile only the "common.c" file and you will not need to wait too long... "
***
NOTE: If you build a custom compile, I recommend keeping a copy of the original version (with the nag screens) around also. The original version includes the screen sizing routine and the warning screens might tell you something is broken and keep you from looking like an idiot on MAMETesters.