I even put two buttons on my 3rd cp, for the save state feature... however , it blows ........ it has to have a number attached to it.... so once you hit save state, it ask for a slot number so I hit player 1 start, or number 1........ works fine , til you need to overwirght it..... won't do it.....it gives an error..... so with out a key board it blows.......... and who wants to to do the extra work for each game , mkchamps patch is automatic:) he included his source...........I feel he violated NO rules:) but opinions are like bungholes , and that is mine:)................ML
Yup it bugged me to have to hit a key after save or load as well. I edited the source to make it default to only use a single slot and not ask for a slot.
When you build, find the file src\emu\ui.c
Just delete the crossed out lines from this method handler_load_save. Probably don't need the /* check for cancel key */ part either, but it does no harm.
This is what my ui.c file has for 0.143
/*-------------------------------------------------
handler_load_save - leads the user through
specifying a game to save or load
-------------------------------------------------*/
static UINT32 handler_load_save(running_machine &machine, render_container *container, UINT32 state)
{
char filename[20];
input_code code; char file = 0;
/* if we're not in the middle of anything, skip */
if (state == LOADSAVE_NONE)
return 0;
/* okay, we're waiting for a key to select a slot; display a message */
if (state == LOADSAVE_SAVE)
ui_draw_message_window(container, "Select position to save to");
else
ui_draw_message_window(container, "Select position to load from"); /* check for cancel key */
if (ui_input_pressed(machine, IPT_UI_CANCEL))
{
/* display a popup indicating things were cancelled */
if (state == LOADSAVE_SAVE)
popmessage("Save cancelled");
else
popmessage("Load cancelled");
/* reset the state */
machine.resume();
return UI_HANDLER_CANCEL;
}
/* check for A-Z or 0-9 */
for (input_item_id id = ITEM_ID_A; id <= ITEM_ID_Z; id++)
if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id)))
file = id - ITEM_ID_A + 'a';
if (file == 0)
for (input_item_id id = ITEM_ID_0; id <= ITEM_ID_9; id++)
if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id)))
file = id - ITEM_ID_0 + '0';
if (file == 0)
for (input_item_id id = ITEM_ID_0_PAD; id <= ITEM_ID_9_PAD; id++)
if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id)))
file = id - ITEM_ID_0_PAD + '0';
if (file == 0)
return state; /* display a popup indicating that the save will proceed */
sprintf(filename, "%c", file);
if (state == LOADSAVE_SAVE)
{
popmessage("Save to position %c", file);
machine.schedule_save(filename);
}
else
{
popmessage("Load from position %c", file);
machine.schedule_load(filename);
}
/* remove the pause and reset the state */
machine.resume();
return UI_HANDLER_CANCEL;
}