summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tankbust.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tankbust.cpp')
-rw-r--r--src/mame/drivers/tankbust.cpp93
1 files changed, 44 insertions, 49 deletions
diff --git a/src/mame/drivers/tankbust.cpp b/src/mame/drivers/tankbust.cpp
index f10f539a2cf..3c4c097ea47 100644
--- a/src/mame/drivers/tankbust.cpp
+++ b/src/mame/drivers/tankbust.cpp
@@ -128,52 +128,49 @@ READ8_MEMBER(tankbust_state::debug_output_area_r)
-PALETTE_INIT_MEMBER(tankbust_state, tankbust)
+void tankbust_state::tankbust_palette(palette_device &palette) const
{
- const uint8_t *color_prom = memregion("proms")->base();
- int i;
-
- for (i = 0; i < 128; i++)
+ uint8_t const *const color_prom = memregion("proms")->base();
+ for (int i = 0; i < 128; i++)
{
- int bit0,bit1,bit2,r,g,b;
-
-//7 6 5 4 3 2 1 0
-//bb r r r g g g - bad (for sure - no green for tank)
-//bb g g g r r r - bad (for sure - no yellow, no red)
-//gg r r r b b b - bad
-//gg b b b r r r - bad
-//rr b b b g g g - bad
-
-//rr g g g b b b - very close (green,yellow,red present)
-
-//rr r g g g b b - bad
-//rr r g g b b b - bad
-//rr g g g b b r - bad
-
-//rr g g b b x x - bad (x: unused)
-//rr g g x x b b - bad but still close
-//rr g g r g b b - bad but still close
-//rr g g g r b b - bad but still close
-
-
- /* blue component */
- bit0 = (color_prom[i] >> 0) & 0x01;
- bit1 = (color_prom[i] >> 1) & 0x01;
- bit2 = (color_prom[i] >> 2) & 0x01;
- b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- /* green component */
- bit0 = (color_prom[i] >> 3) & 0x01;
- bit1 = (color_prom[i] >> 4) & 0x01;
- bit2 = (color_prom[i] >> 5) & 0x01;
- g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- /* red component */
- bit0 = (color_prom[i] >> 6) & 0x01;
- bit1 = (color_prom[i] >> 7) & 0x01;
- r = 0x55 * bit0 + 0xaa * bit1;
-
- palette.set_pen_color(i,rgb_t(r,g,b));
+ int bit0, bit1, bit2;
+
+ //7 6 5 4 3 2 1 0
+ //bb r r r g g g - bad (for sure - no green for tank)
+ //bb g g g r r r - bad (for sure - no yellow, no red)
+ //gg r r r b b b - bad
+ //gg b b b r r r - bad
+ //rr b b b g g g - bad
+
+ //rr g g g b b b - very close (green,yellow,red present)
+
+ //rr r g g g b b - bad
+ //rr r g g b b b - bad
+ //rr g g g b b r - bad
+
+ //rr g g b b x x - bad (x: unused)
+ //rr g g x x b b - bad but still close
+ //rr g g r g b b - bad but still close
+ //rr g g g r b b - bad but still close
+
+ // blue component
+ bit0 = BIT(color_prom[i], 0);
+ bit1 = BIT(color_prom[i], 1);
+ bit2 = BIT(color_prom[i], 2);
+ int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ // green component
+ bit0 = BIT(color_prom[i], 3);
+ bit1 = BIT(color_prom[i], 4);
+ bit2 = BIT(color_prom[i], 5);
+ int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ // red component
+ bit0 = BIT(color_prom[i], 6);
+ bit1 = BIT(color_prom[i], 7);
+ int const r = 0x55 * bit0 + 0xaa * bit1;
+
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -356,12 +353,10 @@ MACHINE_CONFIG_START(tankbust_state::tankbust)
MCFG_SCREEN_VISIBLE_AREA ( 16*8, 56*8-1, 1*8, 31*8-1 )
// MCFG_SCREEN_VISIBLE_AREA ( 0*8, 64*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tankbust_state, screen_update)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tankbust)
+ MCFG_SCREEN_PALETTE(m_palette)
- MCFG_PALETTE_ADD( "palette", 128 )
- MCFG_PALETTE_INIT_OWNER(tankbust_state, tankbust)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_tankbust);
+ PALETTE(config, m_palette, FUNC(tankbust_state::tankbust_palette), 128);
/* sound hardware */
SPEAKER(config, "mono").front_center();