summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/retofinv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/retofinv.cpp')
-rw-r--r--src/mame/video/retofinv.cpp53
1 files changed, 44 insertions, 9 deletions
diff --git a/src/mame/video/retofinv.cpp b/src/mame/video/retofinv.cpp
index 40eac74a158..34997a7409c 100644
--- a/src/mame/video/retofinv.cpp
+++ b/src/mame/video/retofinv.cpp
@@ -14,22 +14,57 @@
PALETTE_INIT_MEMBER(retofinv_state, retofinv)
{
- const uint8_t *color_prom = memregion("proms")->base();
+ const uint8_t *palette_prom = memregion("palette")->base();
+ const uint8_t *clut_prom = memregion("clut")->base();
int i;
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
- int r = pal4bit(color_prom[i + 0x000]);
- int g = pal4bit(color_prom[i + 0x100]);
- int b = pal4bit(color_prom[i + 0x200]);
+ int r = pal4bit(palette_prom[i + 0x000]);
+ int g = pal4bit(palette_prom[i + 0x100]);
+ int b = pal4bit(palette_prom[i + 0x200]);
palette.set_indirect_color(i, rgb_t(r, g, b));
}
- /* color_prom now points to the beginning of the lookup table */
- color_prom += 0x300;
+ /* fg chars (1bpp) */
+ for (i = 0; i < 0x200; i++)
+ {
+ uint8_t ctabentry;
+
+ if (i & 0x01)
+ ctabentry = i >> 1;
+ else
+ ctabentry = 0;
+
+ palette.set_pen_indirect(i, ctabentry);
+ }
+
+ /* sprites and bg tiles clut */
+ for (i = 0; i < 0x800; i++)
+ {
+ // descramble the address
+ int j = BITSWAP16(i,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2);
+ palette.set_pen_indirect(i + 0x200, clut_prom[j]);
+ }
+}
+
+PALETTE_INIT_MEMBER(retofinv_state, retofinv_bl)
+{
+ const uint8_t *palette_prom = memregion("palette")->base();
+ const uint8_t *clut_prom = memregion("clut")->base();
+ int i;
+ /* create a lookup table for the palette */
+ for (i = 0; i < 0x100; i++)
+ {
+ int r = pal4bit(palette_prom[i + 0x000]);
+ int g = pal4bit(palette_prom[i + 0x100]);
+ int b = pal4bit(palette_prom[i + 0x200]);
+
+ palette.set_indirect_color(i, rgb_t(r, g, b));
+ }
/* fg chars (1bpp) */
for (i = 0; i < 0x200; i++)
@@ -44,11 +79,11 @@ PALETTE_INIT_MEMBER(retofinv_state, retofinv)
palette.set_pen_indirect(i, ctabentry);
}
- /* sprites and bg tiles */
+ /* sprites and bg tiles clut */
for (i = 0; i < 0x800; i++)
{
- uint8_t ctabentry = BITSWAP8(color_prom[i],4,5,6,7,3,2,1,0);
- palette.set_pen_indirect(i + 0x200, ctabentry);
+ // descramble the data
+ palette.set_pen_indirect(i + 0x200, BITSWAP8(clut_prom[i], 4,5,6,7,3,2,1,0));
}
}