summaryrefslogtreecommitdiff
path: root/emulators/xmame/patches/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/xmame/patches/patch-ab')
-rw-r--r--emulators/xmame/patches/patch-ab158
1 files changed, 158 insertions, 0 deletions
diff --git a/emulators/xmame/patches/patch-ab b/emulators/xmame/patches/patch-ab
new file mode 100644
index 00000000000..80d23bf7a7b
--- /dev/null
+++ b/emulators/xmame/patches/patch-ab
@@ -0,0 +1,158 @@
+$NetBSD: patch-ab,v 1.15 2002/12/08 13:09:46 kristerw Exp $
+--- src/unix/video.c.orig 2002-12-01 11:26:42.000000000 -0700
++++ src/unix/video.c 2002-12-07 15:08:00.000000000 -0700
+@@ -48,6 +48,10 @@
+ static int video_ror = 0;
+ static int video_rol = 0;
+
++static int video_width;
++static int video_height;
++static int video_depth;
++
+ static struct mame_bitmap *adjusted_bitmap = NULL;
+
+
+@@ -351,7 +355,7 @@
+ options.use_artwork = ARTWORK_USE_NONE;
+ }
+
+-void orient_rect(struct rectangle *rect, struct mame_bitmap *bitmap)
++void orient_rect(struct rectangle *rect)
+ {
+ int temp;
+
+@@ -370,16 +374,16 @@
+ /* apply X flip */
+ if (blit_flipx)
+ {
+- temp = bitmap->width - rect->min_x - 1;
+- rect->min_x = bitmap->width - rect->max_x - 1;
++ temp = video_width - rect->min_x - 1;
++ rect->min_x = video_width - rect->max_x - 1;
+ rect->max_x = temp;
+ }
+
+ /* apply Y flip */
+ if (blit_flipy)
+ {
+- temp = bitmap->height - rect->min_y - 1;
+- rect->min_y = bitmap->height - rect->max_y - 1;
++ temp = video_height - rect->min_y - 1;
++ rect->min_y = video_height - rect->max_y - 1;
+ rect->max_y = temp;
+ }
+ }
+@@ -417,17 +421,18 @@
+ normal_widthscale *= 2;
+ }
+ }
+-
++
+ if (blit_swapxy)
+ {
+- visual_width = params->height;
+- visual_height = params->width;
++ visual_width = video_width = params->height;
++ visual_height = video_height = params->width;
+ }
+ else
+ {
+- visual_width = params->width;
+- visual_height = params->height;
++ visual_width = video_width = params->width;
++ visual_height = video_height = params->height;
+ }
++ video_depth = params->depth;
+
+ if (!blit_swapxy)
+ aspect_ratio = (double)params->aspect_x
+@@ -524,9 +529,8 @@
+
+ if (blit_flipx || blit_flipy || blit_swapxy)
+ {
+- bitmap_free(adjusted_bitmap);
+- adjusted_bitmap = bitmap_alloc_depth(visual_width,
+- visual_height, params->depth);
++ adjusted_bitmap = bitmap_alloc_depth(video_width,
++ video_height, video_depth);
+ if (!adjusted_bitmap)
+ return -1;
+ }
+@@ -626,21 +630,21 @@
+
+ static void update_visible_area(struct mame_display *display)
+ {
++ normal_visual = display->game_visible_area;
++
+ if (blit_swapxy)
+ {
+- normal_visual.min_x = display->game_visible_area.min_y;
+- normal_visual.max_x = display->game_visible_area.max_y;
+- normal_visual.min_y = display->game_visible_area.min_x;
+- normal_visual.max_y = display->game_visible_area.max_x;
++ video_width = display->game_bitmap->height;
++ video_height = display->game_bitmap->width;
+ }
+ else
+ {
+- normal_visual.min_x = display->game_visible_area.min_x;
+- normal_visual.max_x = display->game_visible_area.max_x;
+- normal_visual.min_y = display->game_visible_area.min_y;
+- normal_visual.max_y = display->game_visible_area.max_y;
++ video_width = display->game_bitmap->width;
++ video_height = display->game_bitmap->height;
+ }
+
++ orient_rect(&normal_visual);
++
+ /*
+ * round to 8, since the new dirty code works with 8x8 blocks,
+ * and we need to round to sizeof(long) for the long copies anyway
+@@ -656,6 +660,17 @@
+ display->game_visible_area.min_y,
+ display->game_visible_area.max_x,
+ display->game_visible_area.max_y);
++
++ /*
++ * Allocate a new destination bitmap for the code that handles
++ * rotation/flipping.
++ */
++ if (blit_flipx || blit_flipy || blit_swapxy)
++ {
++ bitmap_free(adjusted_bitmap);
++ adjusted_bitmap = bitmap_alloc_depth(video_width,
++ video_height, video_depth);
++ }
+ }
+
+ static void update_palette(struct mame_display *display, int force_dirty)
+@@ -692,7 +707,6 @@
+ static void update_debug_display(struct mame_display *display)
+ {
+ struct sysdep_palette_struct *backup_palette = current_palette;
+- struct rectangle backup_updatebounds = updatebounds;
+
+ if (!debug_palette)
+ {
+@@ -714,10 +728,8 @@
+ }
+
+ current_palette = debug_palette;
+- updatebounds = debug_visual;
+ sysdep_update_display(display->debug_bitmap);
+ current_palette = backup_palette;
+- updatebounds = backup_updatebounds;
+ }
+
+ static void osd_free_colors(void)
+@@ -988,8 +1000,8 @@
+ {
+ int x, y;
+ int bx1, bx2, by1, by2;
+-
+- orient_rect(&bounds, destbitmap);
++
++ orient_rect(&bounds);
+
+ bx1 = bounds.min_x;
+ bx2 = bounds.max_x;