summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <mamehaze@gmail.com>2018-12-08 13:47:24 +0000
committer ajrhacker <ajrhacker@users.noreply.github.com>2018-12-08 08:47:24 -0500
commit4345e8d455f2f73419415cde5b33472e11a06181 (patch)
tree4a40e11a960a4b7b195130698013520716760ae3
parent185856f28fd262ceab68701537334f98c9ff19a5 (diff)
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)
-rw-r--r--src/mame/video/seta2.cpp17
1 files changed, 17 insertions, 0 deletions
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);