trunk/src/mess/drivers/camplynx.c
| r248558 | r248559 | |
| 127 | 127 | DECLARE_MACHINE_RESET(lynx128k); |
| 128 | 128 | MC6845_UPDATE_ROW(lynx128k_update_row); |
| 129 | 129 | // common |
| 130 | | DECLARE_PALETTE_INIT(camplynx); |
| 131 | 130 | required_device<palette_device> m_palette; |
| 132 | 131 | private: |
| 133 | 132 | UINT8 m_port80; |
| r248558 | r248559 | |
| 464 | 463 | m_maincpu->set_input_line(0, data); |
| 465 | 464 | } |
| 466 | 465 | |
| 467 | | |
| 468 | | static const UINT8 lynx48k_palette[8*3] = |
| 469 | | { |
| 470 | | 0x00, 0x00, 0x00, /* 0 Black */ |
| 471 | | 0x00, 0x00, 0xff, /* 1 Blue */ |
| 472 | | 0xff, 0x00, 0x00, /* 2 Red */ |
| 473 | | 0xff, 0x00, 0xff, /* 3 Magenta */ |
| 474 | | 0x00, 0xff, 0x00, /* 4 Green */ |
| 475 | | 0x00, 0xff, 0xff, /* 5 Cyan */ |
| 476 | | 0xff, 0xff, 0x00, /* 6 Yellow */ |
| 477 | | 0xff, 0xff, 0xff, /* 7 White */ |
| 478 | | }; |
| 479 | | |
| 480 | | PALETTE_INIT_MEMBER(camplynx_state, camplynx) |
| 481 | | { |
| 482 | | UINT8 r, b, g, i=0, color_count = 8; |
| 483 | | |
| 484 | | while (color_count--) |
| 485 | | { |
| 486 | | r = lynx48k_palette[i++]; g = lynx48k_palette[i++]; b = lynx48k_palette[i++]; |
| 487 | | palette.set_pen_color(7-color_count, rgb_t(r, g, b)); |
| 488 | | } |
| 489 | | } |
| 490 | | |
| 491 | 466 | MC6845_UPDATE_ROW( camplynx_state::lynx48k_update_row ) |
| 492 | 467 | { |
| 493 | 468 | UINT8 *RAM = machine().root_device().memregion("maincpu")->base(); |
| 494 | | const rgb_t *palette = m_palette->palette()->entry_list_raw(); |
| 495 | 469 | UINT8 r,g,b,x; |
| 496 | 470 | UINT32 *p = &bitmap.pix32(y); |
| 497 | 471 | UINT16 mem = ((ma << 2) + (ra << 5)) & 0x3fff; |
| r248558 | r248559 | |
| 502 | 476 | g = RAM[0x1c000+mem+x]; |
| 503 | 477 | b = RAM[0x10000+mem+x]; |
| 504 | 478 | |
| 505 | | *p++ = palette[(BIT(r, 7) << 1) | (BIT(g, 7) << 2) | (BIT(b, 7))]; |
| 506 | | *p++ = palette[(BIT(r, 6) << 1) | (BIT(g, 6) << 2) | (BIT(b, 6))]; |
| 507 | | *p++ = palette[(BIT(r, 5) << 1) | (BIT(g, 5) << 2) | (BIT(b, 5))]; |
| 508 | | *p++ = palette[(BIT(r, 4) << 1) | (BIT(g, 4) << 2) | (BIT(b, 4))]; |
| 509 | | *p++ = palette[(BIT(r, 3) << 1) | (BIT(g, 3) << 2) | (BIT(b, 3))]; |
| 510 | | *p++ = palette[(BIT(r, 2) << 1) | (BIT(g, 2) << 2) | (BIT(b, 2))]; |
| 511 | | *p++ = palette[(BIT(r, 1) << 1) | (BIT(g, 1) << 2) | (BIT(b, 1))]; |
| 512 | | *p++ = palette[(BIT(r, 0) << 1) | (BIT(g, 0) << 2) | (BIT(b, 0))]; |
| 479 | *p++ = m_palette->pen_color((BIT(b, 7) << 2) | (BIT(g, 7) << 1) | (BIT(r, 7))); |
| 480 | *p++ = m_palette->pen_color((BIT(b, 6) << 2) | (BIT(g, 6) << 1) | (BIT(r, 6))); |
| 481 | *p++ = m_palette->pen_color((BIT(b, 5) << 2) | (BIT(g, 5) << 1) | (BIT(r, 5))); |
| 482 | *p++ = m_palette->pen_color((BIT(b, 4) << 2) | (BIT(g, 4) << 1) | (BIT(r, 4))); |
| 483 | *p++ = m_palette->pen_color((BIT(b, 3) << 2) | (BIT(g, 3) << 1) | (BIT(r, 3))); |
| 484 | *p++ = m_palette->pen_color((BIT(b, 2) << 2) | (BIT(g, 2) << 1) | (BIT(r, 2))); |
| 485 | *p++ = m_palette->pen_color((BIT(b, 1) << 2) | (BIT(g, 1) << 1) | (BIT(r, 1))); |
| 486 | *p++ = m_palette->pen_color((BIT(b, 0) << 2) | (BIT(g, 0) << 1) | (BIT(r, 0))); |
| 513 | 487 | } |
| 514 | 488 | } |
| 515 | 489 | |
| 516 | 490 | MC6845_UPDATE_ROW( camplynx_state::lynx128k_update_row ) |
| 517 | 491 | { |
| 518 | 492 | UINT8 *RAM = machine().root_device().memregion("maincpu")->base(); |
| 519 | | const rgb_t *palette = m_palette->palette()->entry_list_raw(); |
| 520 | 493 | UINT8 r,g,b,x; |
| 521 | 494 | UINT32 green_bank, *p = &bitmap.pix32(y); |
| 522 | 495 | UINT16 mem = ((ma << 2) + (ra << 6)) & 0x3fff; |
| r248558 | r248559 | |
| 532 | 505 | b = RAM[0x24000+mem+x]; |
| 533 | 506 | g = RAM[green_bank+x]; |
| 534 | 507 | |
| 535 | | *p++ = palette[(BIT(r, 7) << 1) | (BIT(g, 7) << 2) | (BIT(b, 7))]; |
| 536 | | *p++ = palette[(BIT(r, 6) << 1) | (BIT(g, 6) << 2) | (BIT(b, 6))]; |
| 537 | | *p++ = palette[(BIT(r, 5) << 1) | (BIT(g, 5) << 2) | (BIT(b, 5))]; |
| 538 | | *p++ = palette[(BIT(r, 4) << 1) | (BIT(g, 4) << 2) | (BIT(b, 4))]; |
| 539 | | *p++ = palette[(BIT(r, 3) << 1) | (BIT(g, 3) << 2) | (BIT(b, 3))]; |
| 540 | | *p++ = palette[(BIT(r, 2) << 1) | (BIT(g, 2) << 2) | (BIT(b, 2))]; |
| 541 | | *p++ = palette[(BIT(r, 1) << 1) | (BIT(g, 1) << 2) | (BIT(b, 1))]; |
| 542 | | *p++ = palette[(BIT(r, 0) << 1) | (BIT(g, 0) << 2) | (BIT(b, 0))]; |
| 508 | *p++ = m_palette->pen_color((BIT(b, 7) << 2) | (BIT(g, 7) << 1) | (BIT(r, 7))); |
| 509 | *p++ = m_palette->pen_color((BIT(b, 6) << 2) | (BIT(g, 6) << 1) | (BIT(r, 6))); |
| 510 | *p++ = m_palette->pen_color((BIT(b, 5) << 2) | (BIT(g, 5) << 1) | (BIT(r, 5))); |
| 511 | *p++ = m_palette->pen_color((BIT(b, 4) << 2) | (BIT(g, 4) << 1) | (BIT(r, 4))); |
| 512 | *p++ = m_palette->pen_color((BIT(b, 3) << 2) | (BIT(g, 3) << 1) | (BIT(r, 3))); |
| 513 | *p++ = m_palette->pen_color((BIT(b, 2) << 2) | (BIT(g, 2) << 1) | (BIT(r, 2))); |
| 514 | *p++ = m_palette->pen_color((BIT(b, 1) << 2) | (BIT(g, 1) << 1) | (BIT(r, 1))); |
| 515 | *p++ = m_palette->pen_color((BIT(b, 0) << 2) | (BIT(g, 0) << 1) | (BIT(r, 0))); |
| 543 | 516 | } |
| 544 | 517 | } |
| 545 | 518 | |
| r248558 | r248559 | |
| 557 | 530 | MCFG_SCREEN_SIZE(512, 480) |
| 558 | 531 | MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479) |
| 559 | 532 | MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) |
| 560 | | MCFG_PALETTE_ADD("palette", 8) |
| 561 | | MCFG_PALETTE_INIT_OWNER(camplynx_state, camplynx) |
| 562 | 533 | |
| 534 | MCFG_PALETTE_ADD_3BIT_RGB("palette") |
| 535 | |
| 563 | 536 | /* sound hardware */ |
| 564 | 537 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 565 | 538 | MCFG_SOUND_ADD("dac", DAC, 0) |
| r248558 | r248559 | |
| 595 | 568 | MCFG_SCREEN_SIZE(512, 480) |
| 596 | 569 | MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479) |
| 597 | 570 | MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) |
| 598 | | MCFG_PALETTE_ADD("palette", 8) |
| 599 | | MCFG_PALETTE_INIT_OWNER(camplynx_state, camplynx) |
| 600 | 571 | |
| 572 | MCFG_PALETTE_ADD_3BIT_RGB("palette") |
| 573 | |
| 601 | 574 | /* sound hardware */ |
| 602 | 575 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 603 | 576 | MCFG_SOUND_ADD("dac", DAC, 0) |