From 4345e8d455f2f73419415cde5b33472e11a06181 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sat, 8 Dec 2018 13:47:24 +0000 Subject: seta2.cpp: use special bit (maybe legacy mode / fixed config bit?) for grdians map screen overlay (#4380) * trying to improve map screen (nw) * seta2: cause 'special' bit in grdians to force an offset / colour instead of using the ones specified (needed on the map screen, might really be hardcoded logic) * whitespace (nw) --- src/mame/video/seta2.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/mame/video/seta2.cpp b/src/mame/video/seta2.cpp index 5e4b9753dc8..a734069d163 100644 --- a/src/mame/video/seta2.cpp +++ b/src/mame/video/seta2.cpp @@ -408,6 +408,8 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) int global_sizex = xoffs & 0xfc00; int global_sizey = yoffs & 0xfc00; + + int special = num & 0x4000; // ignore various things including global offsets, zoom. different palette selection too? bool opaque = num & 0x2000; int use_global_size = num & 0x1000; int use_shadow = num & 0x0800; @@ -415,6 +417,13 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) xoffs &= 0x3ff; yoffs &= 0x3ff; + if (special) + { + use_shadow = 0; + // which_gfx = 4 << 8; + global_yoffset = -0x90; + } + // Number of single-sprites num = (num & 0x00ff) + 1; @@ -439,7 +448,9 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) int local_sizex = sx & 0xfc00; int local_sizey = sy & 0xfc00; sx &= 0x3ff; + sy += global_yoffset; + sy &= 0x1ff; if (sy & 0x100) @@ -552,6 +563,12 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) int y = (line >> 3); line &= 0x7; + if (special) + { + // grdians map... + color = 0x7ff; + } + for (int x = 0; x <= sizex; x++) { int realcode = (basecode + (flipy ? sizey - y : y)*(sizex + 1)) + (flipx ? sizex - x : x); -- cgit v1.2.3