Previous 199869 Revisions Next

r40053 Wednesday 29th July, 2015 at 13:56:15 UTC by Dirk Best
fm7: clean up palette handling, use standard 3-bit palette
[src/mess/drivers]fm7.c
[src/mess/includes]fm7.h
[src/mess/video]fm7.c

trunk/src/mess/drivers/fm7.c
r248564r248565
20832083   MCFG_SCREEN_SIZE(640, 200)
20842084   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
20852085   MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
2086   MCFG_SCREEN_PALETTE("palette")
20872086
2088   MCFG_PALETTE_ADD("palette", 8)
2089   MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
2087   MCFG_PALETTE_ADD_3BIT_BRG("palette")
20902088
20912089   MCFG_CASSETTE_ADD("cassette")
20922090   MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
r248564r248565
21412139   MCFG_SCREEN_SIZE(640, 200)
21422140   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
21432141   MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
2144   MCFG_SCREEN_PALETTE("palette")
21452142
2146   MCFG_PALETTE_ADD("palette", 8)
2147   MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
2143   MCFG_PALETTE_ADD_3BIT_BRG("palette")
21482144
21492145   MCFG_CASSETTE_ADD("cassette")
21502146   MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
r248564r248565
22162212   MCFG_SCREEN_SIZE(640, 200)
22172213   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
22182214   MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
2219   MCFG_SCREEN_PALETTE("palette")
22202215
2221   MCFG_PALETTE_ADD("palette", 8 + 4096)
2222   MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
2216   MCFG_PALETTE_ADD_3BIT_BRG("palette")
2217   MCFG_PALETTE_ADD("av_palette", 4096)
22232218
22242219   MCFG_CASSETTE_ADD("cassette")
22252220   MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
r248564r248565
22952290   MCFG_SCREEN_SIZE(640, 200)
22962291   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
22972292   MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
2298   MCFG_SCREEN_PALETTE("palette")
22992293
2300   MCFG_PALETTE_ADD("palette", 8)
2301   MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
2294   MCFG_PALETTE_ADD_3BIT_BRG("palette")
23022295
23032296   MCFG_CASSETTE_ADD("cassette")
23042297   MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
r248564r248565
23482341   MCFG_SCREEN_SIZE(640, 200)
23492342   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
23502343   MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
2351   MCFG_SCREEN_PALETTE("palette")
23522344
2353   MCFG_PALETTE_ADD("palette", 8)
2354   MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
2345   MCFG_PALETTE_ADD_3BIT_BRG("palette")
23552346
23562347   MCFG_CASSETTE_ADD("cassette")
23572348   MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
trunk/src/mess/includes/fm7.h
r248564r248565
7373   UINT16 vram_offset2;
7474   UINT8 fm7_pal[8];
7575   UINT16 fm77av_pal_selected;
76   UINT8 fm77av_pal_r[4096];
77   UINT8 fm77av_pal_g[4096];
78   UINT8 fm77av_pal_b[4096];
7976   UINT8 subrom;  // currently active sub CPU ROM (AV only)
8077   UINT8 cgrom;  // currently active CGROM (AV only)
8178   UINT8 modestatus;
r248564r248565
148145      m_joy2(*this, "joy2"),
149146      m_dsw(*this, "DSW"),
150147      m_palette(*this, "palette"),
148      m_av_palette(*this, "av_palette"),
151149      m_avbank1(*this, "av_bank1"),
152150      m_avbank2(*this, "av_bank2"),
153151      m_avbank3(*this, "av_bank3"),
r248564r248565
293291   DECLARE_DRIVER_INIT(fm7);
294292   virtual void machine_reset();
295293   virtual void video_start();
296   DECLARE_PALETTE_INIT(fm7);
297294   DECLARE_MACHINE_START(fm7);
298295   DECLARE_MACHINE_START(fm77av);
299296   DECLARE_MACHINE_START(fm11);
300297   DECLARE_MACHINE_START(fm16);
301   UINT32 screen_update_fm7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
298   UINT32 screen_update_fm7(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
302299   TIMER_CALLBACK_MEMBER(fm7_beeper_off);
303300   TIMER_CALLBACK_MEMBER(fm77av_encoder_ack);
304301   TIMER_CALLBACK_MEMBER(fm7_timer_irq);
r248564r248565
367364   required_ioport m_joy2;
368365   required_ioport m_dsw;
369366   required_device<palette_device> m_palette;
367   optional_device<palette_device> m_av_palette;
370368
371369   optional_device<address_map_bank_device> m_avbank1;
372370   optional_device<address_map_bank_device> m_avbank2;
trunk/src/mess/video/fm7.c
r248564r248565
916916
917917WRITE8_MEMBER(fm7_state::fm7_palette_w)
918918{
919   UINT8 r = 0,g = 0,b = 0;
920
921   if(data & 0x04)
922      g = 0xff;
923   if(data & 0x02)
924      r = 0xff;
925   if(data & 0x01)
926      b = 0xff;
927
928   m_palette->set_pen_color(offset,rgb_t(r,g,b));
919   m_palette->set_pen_color(offset, rgb_t(pal1bit(data >> 1), pal1bit(data >> 2), pal1bit(data >> 0)));
929920   m_video.fm7_pal[offset] = data & 0x07;
930921}
931922
r248564r248565
955946         m_video.fm77av_pal_selected = val;
956947         break;
957948      case 2:
958         m_video.fm77av_pal_b[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
959         m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
960            rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
961            m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
962            m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
949         m_av_palette->set_pen_blue_level(m_video.fm77av_pal_selected, data << 4);
963950         break;
964951      case 3:
965         m_video.fm77av_pal_r[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
966         m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
967            rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
968            m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
969            m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
952         m_av_palette->set_pen_red_level(m_video.fm77av_pal_selected, data << 4);
970953         break;
971954      case 4:
972         m_video.fm77av_pal_g[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
973         m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
974            rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
975            m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
976            m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
955         m_av_palette->set_pen_green_level(m_video.fm77av_pal_selected, data << 4);
977956         break;
978957   }
979958}
r248564r248565
14371416   m_video.vsync_flag = 0;
14381417}
14391418
1440UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
1419UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
14411420{
14421421   UINT8 code_r = 0,code_g = 0,code_b = 0;
14431422   UINT8 code_r2 = 0,code_g2 = 0,code_b2 = 0;
r248564r248565
14851464               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);
14861465               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);
14871466               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);
1488               col += 8;  // use analog palette
1489               bitmap.pix16(y, x*8+(7-b)) =  col;
1467               bitmap.pix32(y, x*8+(7-b)) = m_av_palette->pen_color(col);
14901468            }
14911469         }
14921470      }
r248564r248565
15061484            for (b = 0; b < 8; b++)
15071485            {
15081486               col = (((code_r >> b) & 0x01) ? 4 : 0) + (((code_g >> b) & 0x01) ? 2 : 0) + (((code_b >> b) & 0x01) ? 1 : 0);
1509               bitmap.pix16(y, x*8+(7-b)) = col;
1487               bitmap.pix32(y, x*8+(7-b)) = m_palette->pen_color(col);
15101488            }
15111489         }
15121490      }
15131491   }
15141492   return 0;
15151493}
1516
1517static const rgb_t fm7_initial_palette[8] = {
1518   rgb_t(0x00, 0x00, 0x00), // 0
1519   rgb_t(0x00, 0x00, 0xff), // 1
1520   rgb_t(0xff, 0x00, 0x00), // 2
1521   rgb_t(0xff, 0x00, 0xff), // 3
1522   rgb_t(0x00, 0xff, 0x00), // 4
1523   rgb_t(0x00, 0xff, 0xff), // 5
1524   rgb_t(0xff, 0xff, 0x00), // 6
1525   rgb_t(0xff, 0xff, 0xff), // 7
1526};
1527
1528PALETTE_INIT_MEMBER(fm7_state, fm7)
1529{
1530   int x;
1531
1532   palette.set_pen_colors(0, fm7_initial_palette, ARRAY_LENGTH(fm7_initial_palette));
1533   for(x=0;x<8;x++)
1534      m_video.fm7_pal[x] = x;
1535}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team