fix global flipscreen.

--
Due to updateflip _always_ flipping visarea when flip is set (confusing!), visarea X was flipped twice when globally going from off->on, causing broken cocktail mode in a bunch of drivers (galaga, digdug, warpwarp, ..). This symptom turned up when these drivers were updated with 'raw' screen params, causing visarea-1 != screen width/height due to blanking area info inside width/height.
This commit is contained in:
Michaël Banaan Ananas 2011-02-26 16:17:17 +00:00
parent 0e7cc87274
commit 14953bd050

View File

@ -445,8 +445,14 @@ static void updateflip(running_machine *machine)
void flip_screen_set(running_machine *machine, int on)
{
flip_screen_x_set(machine, on);
flip_screen_y_set(machine, on);
generic_video_private *state = machine->generic_video_data;
if (on) on = ~0;
if (state->flip_screen_x != on || state->flip_screen_y != on)
{
if (!on) updateflip(machine); // flip visarea back
state->flip_screen_x = state->flip_screen_y = on;
updateflip(machine);
}
}
@ -463,6 +469,7 @@ void flip_screen_set_no_update(running_machine *machine, int on)
* bypass update_flip
*/
generic_video_private *state = machine->generic_video_data;
if (on) on = ~0;
state->flip_screen_x = on;
}