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) |