trunk/src/mess/drivers/fm7.c
| r248564 | r248565 | |
| 2083 | 2083 | MCFG_SCREEN_SIZE(640, 200) |
| 2084 | 2084 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) |
| 2085 | 2085 | MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7) |
| 2086 | | MCFG_SCREEN_PALETTE("palette") |
| 2087 | 2086 | |
| 2088 | | MCFG_PALETTE_ADD("palette", 8) |
| 2089 | | MCFG_PALETTE_INIT_OWNER(fm7_state, fm7) |
| 2087 | MCFG_PALETTE_ADD_3BIT_BRG("palette") |
| 2090 | 2088 | |
| 2091 | 2089 | MCFG_CASSETTE_ADD("cassette") |
| 2092 | 2090 | MCFG_CASSETTE_FORMATS(fm7_cassette_formats) |
| r248564 | r248565 | |
| 2141 | 2139 | MCFG_SCREEN_SIZE(640, 200) |
| 2142 | 2140 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) |
| 2143 | 2141 | MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7) |
| 2144 | | MCFG_SCREEN_PALETTE("palette") |
| 2145 | 2142 | |
| 2146 | | MCFG_PALETTE_ADD("palette", 8) |
| 2147 | | MCFG_PALETTE_INIT_OWNER(fm7_state, fm7) |
| 2143 | MCFG_PALETTE_ADD_3BIT_BRG("palette") |
| 2148 | 2144 | |
| 2149 | 2145 | MCFG_CASSETTE_ADD("cassette") |
| 2150 | 2146 | MCFG_CASSETTE_FORMATS(fm7_cassette_formats) |
| r248564 | r248565 | |
| 2216 | 2212 | MCFG_SCREEN_SIZE(640, 200) |
| 2217 | 2213 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) |
| 2218 | 2214 | MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7) |
| 2219 | | MCFG_SCREEN_PALETTE("palette") |
| 2220 | 2215 | |
| 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) |
| 2223 | 2218 | |
| 2224 | 2219 | MCFG_CASSETTE_ADD("cassette") |
| 2225 | 2220 | MCFG_CASSETTE_FORMATS(fm7_cassette_formats) |
| r248564 | r248565 | |
| 2295 | 2290 | MCFG_SCREEN_SIZE(640, 200) |
| 2296 | 2291 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) |
| 2297 | 2292 | MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7) |
| 2298 | | MCFG_SCREEN_PALETTE("palette") |
| 2299 | 2293 | |
| 2300 | | MCFG_PALETTE_ADD("palette", 8) |
| 2301 | | MCFG_PALETTE_INIT_OWNER(fm7_state, fm7) |
| 2294 | MCFG_PALETTE_ADD_3BIT_BRG("palette") |
| 2302 | 2295 | |
| 2303 | 2296 | MCFG_CASSETTE_ADD("cassette") |
| 2304 | 2297 | MCFG_CASSETTE_FORMATS(fm7_cassette_formats) |
| r248564 | r248565 | |
| 2348 | 2341 | MCFG_SCREEN_SIZE(640, 200) |
| 2349 | 2342 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) |
| 2350 | 2343 | MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7) |
| 2351 | | MCFG_SCREEN_PALETTE("palette") |
| 2352 | 2344 | |
| 2353 | | MCFG_PALETTE_ADD("palette", 8) |
| 2354 | | MCFG_PALETTE_INIT_OWNER(fm7_state, fm7) |
| 2345 | MCFG_PALETTE_ADD_3BIT_BRG("palette") |
| 2355 | 2346 | |
| 2356 | 2347 | MCFG_CASSETTE_ADD("cassette") |
| 2357 | 2348 | MCFG_CASSETTE_FORMATS(fm7_cassette_formats) |
trunk/src/mess/includes/fm7.h
| r248564 | r248565 | |
| 73 | 73 | UINT16 vram_offset2; |
| 74 | 74 | UINT8 fm7_pal[8]; |
| 75 | 75 | UINT16 fm77av_pal_selected; |
| 76 | | UINT8 fm77av_pal_r[4096]; |
| 77 | | UINT8 fm77av_pal_g[4096]; |
| 78 | | UINT8 fm77av_pal_b[4096]; |
| 79 | 76 | UINT8 subrom; // currently active sub CPU ROM (AV only) |
| 80 | 77 | UINT8 cgrom; // currently active CGROM (AV only) |
| 81 | 78 | UINT8 modestatus; |
| r248564 | r248565 | |
| 148 | 145 | m_joy2(*this, "joy2"), |
| 149 | 146 | m_dsw(*this, "DSW"), |
| 150 | 147 | m_palette(*this, "palette"), |
| 148 | m_av_palette(*this, "av_palette"), |
| 151 | 149 | m_avbank1(*this, "av_bank1"), |
| 152 | 150 | m_avbank2(*this, "av_bank2"), |
| 153 | 151 | m_avbank3(*this, "av_bank3"), |
| r248564 | r248565 | |
| 293 | 291 | DECLARE_DRIVER_INIT(fm7); |
| 294 | 292 | virtual void machine_reset(); |
| 295 | 293 | virtual void video_start(); |
| 296 | | DECLARE_PALETTE_INIT(fm7); |
| 297 | 294 | DECLARE_MACHINE_START(fm7); |
| 298 | 295 | DECLARE_MACHINE_START(fm77av); |
| 299 | 296 | DECLARE_MACHINE_START(fm11); |
| 300 | 297 | 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); |
| 302 | 299 | TIMER_CALLBACK_MEMBER(fm7_beeper_off); |
| 303 | 300 | TIMER_CALLBACK_MEMBER(fm77av_encoder_ack); |
| 304 | 301 | TIMER_CALLBACK_MEMBER(fm7_timer_irq); |
| r248564 | r248565 | |
| 367 | 364 | required_ioport m_joy2; |
| 368 | 365 | required_ioport m_dsw; |
| 369 | 366 | required_device<palette_device> m_palette; |
| 367 | optional_device<palette_device> m_av_palette; |
| 370 | 368 | |
| 371 | 369 | optional_device<address_map_bank_device> m_avbank1; |
| 372 | 370 | optional_device<address_map_bank_device> m_avbank2; |
trunk/src/mess/video/fm7.c
| r248564 | r248565 | |
| 916 | 916 | |
| 917 | 917 | WRITE8_MEMBER(fm7_state::fm7_palette_w) |
| 918 | 918 | { |
| 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))); |
| 929 | 920 | m_video.fm7_pal[offset] = data & 0x07; |
| 930 | 921 | } |
| 931 | 922 | |
| r248564 | r248565 | |
| 955 | 946 | m_video.fm77av_pal_selected = val; |
| 956 | 947 | break; |
| 957 | 948 | 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); |
| 963 | 950 | break; |
| 964 | 951 | 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); |
| 970 | 953 | break; |
| 971 | 954 | 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); |
| 977 | 956 | break; |
| 978 | 957 | } |
| 979 | 958 | } |
| r248564 | r248565 | |
| 1437 | 1416 | m_video.vsync_flag = 0; |
| 1438 | 1417 | } |
| 1439 | 1418 | |
| 1440 | | UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 1419 | UINT32 fm7_state::screen_update_fm7(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 1441 | 1420 | { |
| 1442 | 1421 | UINT8 code_r = 0,code_g = 0,code_b = 0; |
| 1443 | 1422 | UINT8 code_r2 = 0,code_g2 = 0,code_b2 = 0; |
| r248564 | r248565 | |
| 1485 | 1464 | 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); |
| 1486 | 1465 | 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); |
| 1487 | 1466 | 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); |
| 1490 | 1468 | } |
| 1491 | 1469 | } |
| 1492 | 1470 | } |
| r248564 | r248565 | |
| 1506 | 1484 | for (b = 0; b < 8; b++) |
| 1507 | 1485 | { |
| 1508 | 1486 | 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); |
| 1510 | 1488 | } |
| 1511 | 1489 | } |
| 1512 | 1490 | } |
| 1513 | 1491 | } |
| 1514 | 1492 | return 0; |
| 1515 | 1493 | } |
| 1516 | | |
| 1517 | | static 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 | | |
| 1528 | | PALETTE_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 | | } |