diff options
Diffstat (limited to 'src/mame/drivers/tankbust.cpp')
-rw-r--r-- | src/mame/drivers/tankbust.cpp | 93 |
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(); |