diff options
| author | 2011-02-26 16:17:17 +0000 | |
|---|---|---|
| committer | 2011-02-26 16:17:17 +0000 | |
| commit | 14953bd05038722b9f8af90846e76cdaed72d15d (patch) | |
| tree | 6e8d392e82d95950ee48e174e12df0c5f4993424 | |
| parent | 0e7cc87274717130dab4c12193a97a007673fd4f (diff) | |
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.
| -rw-r--r-- | src/emu/video/generic.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/emu/video/generic.c b/src/emu/video/generic.c index a654f957f59..f76c2e81dba 100644 --- a/src/emu/video/generic.c +++ b/src/emu/video/generic.c @@ -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; } |
