mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +03:00
fm7: clean up palette handling, use standard 3-bit palette
This commit is contained in:
parent
ce76c779c6
commit
f3494231d3
@ -2083,10 +2083,8 @@ static MACHINE_CONFIG_START( fm7, fm7_state )
|
||||
MCFG_SCREEN_SIZE(640, 200)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8)
|
||||
MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
|
||||
MCFG_PALETTE_ADD_3BIT_BRG("palette")
|
||||
|
||||
MCFG_CASSETTE_ADD("cassette")
|
||||
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
|
||||
@ -2141,10 +2139,8 @@ static MACHINE_CONFIG_START( fm8, fm7_state )
|
||||
MCFG_SCREEN_SIZE(640, 200)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8)
|
||||
MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
|
||||
MCFG_PALETTE_ADD_3BIT_BRG("palette")
|
||||
|
||||
MCFG_CASSETTE_ADD("cassette")
|
||||
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
|
||||
@ -2216,10 +2212,9 @@ static MACHINE_CONFIG_START( fm77av, fm7_state )
|
||||
MCFG_SCREEN_SIZE(640, 200)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8 + 4096)
|
||||
MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
|
||||
MCFG_PALETTE_ADD_3BIT_BRG("palette")
|
||||
MCFG_PALETTE_ADD("av_palette", 4096)
|
||||
|
||||
MCFG_CASSETTE_ADD("cassette")
|
||||
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
|
||||
@ -2295,10 +2290,8 @@ static MACHINE_CONFIG_START( fm11, fm7_state )
|
||||
MCFG_SCREEN_SIZE(640, 200)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8)
|
||||
MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
|
||||
MCFG_PALETTE_ADD_3BIT_BRG("palette")
|
||||
|
||||
MCFG_CASSETTE_ADD("cassette")
|
||||
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
|
||||
@ -2348,10 +2341,8 @@ static MACHINE_CONFIG_START( fm16beta, fm7_state )
|
||||
MCFG_SCREEN_SIZE(640, 200)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8)
|
||||
MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
|
||||
MCFG_PALETTE_ADD_3BIT_BRG("palette")
|
||||
|
||||
MCFG_CASSETTE_ADD("cassette")
|
||||
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
|
||||
|
@ -73,9 +73,6 @@ struct fm7_video_t
|
||||
UINT16 vram_offset2;
|
||||
UINT8 fm7_pal[8];
|
||||
UINT16 fm77av_pal_selected;
|
||||
UINT8 fm77av_pal_r[4096];
|
||||
UINT8 fm77av_pal_g[4096];
|
||||
UINT8 fm77av_pal_b[4096];
|
||||
UINT8 subrom; // currently active sub CPU ROM (AV only)
|
||||
UINT8 cgrom; // currently active CGROM (AV only)
|
||||
UINT8 modestatus;
|
||||
@ -148,6 +145,7 @@ public:
|
||||
m_joy2(*this, "joy2"),
|
||||
m_dsw(*this, "DSW"),
|
||||
m_palette(*this, "palette"),
|
||||
m_av_palette(*this, "av_palette"),
|
||||
m_avbank1(*this, "av_bank1"),
|
||||
m_avbank2(*this, "av_bank2"),
|
||||
m_avbank3(*this, "av_bank3"),
|
||||
@ -293,12 +291,11 @@ public:
|
||||
DECLARE_DRIVER_INIT(fm7);
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
DECLARE_PALETTE_INIT(fm7);
|
||||
DECLARE_MACHINE_START(fm7);
|
||||
DECLARE_MACHINE_START(fm77av);
|
||||
DECLARE_MACHINE_START(fm11);
|
||||
DECLARE_MACHINE_START(fm16);
|
||||
UINT32 screen_update_fm7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_fm7(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
TIMER_CALLBACK_MEMBER(fm7_beeper_off);
|
||||
TIMER_CALLBACK_MEMBER(fm77av_encoder_ack);
|
||||
TIMER_CALLBACK_MEMBER(fm7_timer_irq);
|
||||
@ -367,6 +364,7 @@ public:
|
||||
required_ioport m_joy2;
|
||||
required_ioport m_dsw;
|
||||
required_device<palette_device> m_palette;
|
||||
optional_device<palette_device> m_av_palette;
|
||||
|
||||
optional_device<address_map_bank_device> m_avbank1;
|
||||
optional_device<address_map_bank_device> m_avbank2;
|
||||
|
@ -916,16 +916,7 @@ READ8_MEMBER(fm7_state::fm7_palette_r)
|
||||
|
||||
WRITE8_MEMBER(fm7_state::fm7_palette_w)
|
||||
{
|
||||
UINT8 r = 0,g = 0,b = 0;
|
||||
|
||||
if(data & 0x04)
|
||||
g = 0xff;
|
||||
if(data & 0x02)
|
||||
r = 0xff;
|
||||
if(data & 0x01)
|
||||
b = 0xff;
|
||||
|
||||
m_palette->set_pen_color(offset,rgb_t(r,g,b));
|
||||
m_palette->set_pen_color(offset, rgb_t(pal1bit(data >> 1), pal1bit(data >> 2), pal1bit(data >> 0)));
|
||||
m_video.fm7_pal[offset] = data & 0x07;
|
||||
}
|
||||
|
||||
@ -955,25 +946,13 @@ WRITE8_MEMBER(fm7_state::fm77av_analog_palette_w)
|
||||
m_video.fm77av_pal_selected = val;
|
||||
break;
|
||||
case 2:
|
||||
m_video.fm77av_pal_b[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
|
||||
m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
|
||||
rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
|
||||
m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
|
||||
m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
|
||||
m_av_palette->set_pen_blue_level(m_video.fm77av_pal_selected, data << 4);
|
||||
break;
|
||||
case 3:
|
||||
m_video.fm77av_pal_r[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
|
||||
m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
|
||||
rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
|
||||
m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
|
||||
m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
|
||||
m_av_palette->set_pen_red_level(m_video.fm77av_pal_selected, data << 4);
|
||||
break;
|
||||
case 4:
|
||||
m_video.fm77av_pal_g[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
|
||||
m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
|
||||
rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
|
||||
m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
|
||||
m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
|
||||
m_av_palette->set_pen_green_level(m_video.fm77av_pal_selected, data << 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1437,7 +1416,7 @@ void fm7_state::video_start()
|
||||
m_video.vsync_flag = 0;
|
||||
}
|
||||
|
||||
UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
UINT8 code_r = 0,code_g = 0,code_b = 0;
|
||||
UINT8 code_r2 = 0,code_g2 = 0,code_b2 = 0;
|
||||
@ -1485,8 +1464,7 @@ UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
col = (((code_b >> b) & 0x01) ? 8 : 0) | (((code_b2 >> b) & 0x01) ? 4 : 0) | (((code_b3 >> b) & 0x01) ? 2 : 0) | (((code_b4 >> b) & 0x01) ? 1 : 0);
|
||||
col |= (((code_g >> b) & 0x01) ? 128 : 0) | (((code_g2 >> b) & 0x01) ? 64 : 0) | (((code_g3 >> b) & 0x01) ? 32 : 0) | (((code_g4 >> b) & 0x01) ? 16 : 0);
|
||||
col |= (((code_r >> b) & 0x01) ? 2048 : 0) | (((code_r2 >> b) & 0x01) ? 1024 : 0) | (((code_r3 >> b) & 0x01) ? 512 : 0) | (((code_r4 >> b) & 0x01) ? 256 : 0);
|
||||
col += 8; // use analog palette
|
||||
bitmap.pix16(y, x*8+(7-b)) = col;
|
||||
bitmap.pix32(y, x*8+(7-b)) = m_av_palette->pen_color(col);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1506,30 +1484,10 @@ UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
for (b = 0; b < 8; b++)
|
||||
{
|
||||
col = (((code_r >> b) & 0x01) ? 4 : 0) + (((code_g >> b) & 0x01) ? 2 : 0) + (((code_b >> b) & 0x01) ? 1 : 0);
|
||||
bitmap.pix16(y, x*8+(7-b)) = col;
|
||||
bitmap.pix32(y, x*8+(7-b)) = m_palette->pen_color(col);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const rgb_t fm7_initial_palette[8] = {
|
||||
rgb_t(0x00, 0x00, 0x00), // 0
|
||||
rgb_t(0x00, 0x00, 0xff), // 1
|
||||
rgb_t(0xff, 0x00, 0x00), // 2
|
||||
rgb_t(0xff, 0x00, 0xff), // 3
|
||||
rgb_t(0x00, 0xff, 0x00), // 4
|
||||
rgb_t(0x00, 0xff, 0xff), // 5
|
||||
rgb_t(0xff, 0xff, 0x00), // 6
|
||||
rgb_t(0xff, 0xff, 0xff), // 7
|
||||
};
|
||||
|
||||
PALETTE_INIT_MEMBER(fm7_state, fm7)
|
||||
{
|
||||
int x;
|
||||
|
||||
palette.set_pen_colors(0, fm7_initial_palette, ARRAY_LENGTH(fm7_initial_palette));
|
||||
for(x=0;x<8;x++)
|
||||
m_video.fm7_pal[x] = x;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user