trunk/src/mame/video/gtia.c
| r31981 | r31982 | |
| 193 | 193 | save_item(NAME(m_w.gractl)); |
| 194 | 194 | save_item(NAME(m_w.hitclr)); |
| 195 | 195 | save_item(NAME(m_w.cons)); |
| 196 | |
| 197 | save_item(NAME(m_lumpf1)); |
| 198 | save_item(NAME(m_huepm0)); |
| 199 | save_item(NAME(m_huepm1)); |
| 200 | save_item(NAME(m_huepm2)); |
| 201 | save_item(NAME(m_huepm3)); |
| 202 | save_item(NAME(m_huepm4)); |
| 203 | save_item(NAME(m_huepf2)); |
| 204 | save_item(NAME(m_huebk)); |
| 205 | |
| 196 | 206 | machine().save().register_postload(save_prepost_delegate(FUNC(gtia_device::gtia_postload), this)); |
| 197 | 207 | } |
| 198 | 208 | |
| r31981 | r31982 | |
| 224 | 234 | m_r.cons = 0x07; /* console keys */ |
| 225 | 235 | SETCOL_B(ILL, 0x3e); /* bright red */ |
| 226 | 236 | SETCOL_B(EOR, 0xff); /* yellow */ |
| 237 | |
| 238 | m_lumpf1 = 0; |
| 239 | m_huepm0 = 0; |
| 240 | m_huepm1 = 0; |
| 241 | m_huepm2 = 0; |
| 242 | m_huepm3 = 0; |
| 243 | m_huepm4 = 0; |
| 244 | m_huepf2 = 0; |
| 245 | m_huebk = 0; |
| 227 | 246 | } |
| 228 | 247 | |
| 229 | 248 | |
| r31981 | r31982 | |
| 458 | 477 | { |
| 459 | 478 | /* used for mixing hue/lum of different colors */ |
| 460 | 479 | // static UINT8 lumpm0=0,lumpm1=0,lumpm2=0,lumpm3=0,lumpm4=0; |
| 461 | | static UINT8 lumpf1=0; |
| 462 | 480 | // static UINT8 lumpf2=0; |
| 463 | 481 | // static UINT8 lumbk= 0; |
| 464 | | static UINT8 huepm0=0,huepm1=0,huepm2=0,huepm3=0,huepm4=0; |
| 465 | 482 | // static UINT8 huepf1=0; |
| 466 | | static UINT8 huepf2=0,huebk= 0; |
| 467 | 483 | |
| 468 | 484 | switch (offset & 31) |
| 469 | 485 | { |
| r31981 | r31982 | |
| 569 | 585 | SETCOL_B(P000, data); /* set player 0 both pixels 0 */ |
| 570 | 586 | SETCOL_L(P001, data); /* set player 0 left pixel 0 */ |
| 571 | 587 | SETCOL_R(P010, data); /* set player 0 right pixel 0 */ |
| 572 | | SPLIT_HUE(data, huepm0); |
| 573 | | data = huepm0 | lumpf1; |
| 588 | SPLIT_HUE(data, m_huepm0); |
| 589 | data = m_huepm0 | m_lumpf1; |
| 574 | 590 | SETCOL_R(P001, data); /* set player 0 right pixel 1 */ |
| 575 | 591 | SETCOL_L(P010, data); /* set player 0 left pixel 1 */ |
| 576 | 592 | SETCOL_B(P011, data); /* set player 0 both pixels 1 */ |
| r31981 | r31982 | |
| 589 | 605 | SETCOL_B(P100, data); /* set player 1 both pixels 0 */ |
| 590 | 606 | SETCOL_L(P101, data); /* set player 1 left pixel 0 */ |
| 591 | 607 | SETCOL_R(P110, data); /* set player 1 right pixel 0 */ |
| 592 | | SPLIT_HUE(data, huepm1); |
| 593 | | data = huepm1 | lumpf1; |
| 608 | SPLIT_HUE(data, m_huepm1); |
| 609 | data = m_huepm1 | m_lumpf1; |
| 594 | 610 | SETCOL_R(P101, data); /* set player 1 right pixel 1 */ |
| 595 | 611 | SETCOL_L(P110, data); /* set player 1 left pixel 1 */ |
| 596 | 612 | SETCOL_B(P111, data); /* set player 1 both pixels 1 */ |
| r31981 | r31982 | |
| 609 | 625 | SETCOL_B(P200, data); /* set player 2 both pixels 0 */ |
| 610 | 626 | SETCOL_L(P201, data); /* set player 2 left pixel 0 */ |
| 611 | 627 | SETCOL_R(P210, data); /* set player 2 right pixel 0 */ |
| 612 | | SPLIT_HUE(data, huepm2); |
| 613 | | data = huepm2 | lumpf1; |
| 628 | SPLIT_HUE(data, m_huepm2); |
| 629 | data = m_huepm2 | m_lumpf1; |
| 614 | 630 | SETCOL_R(P201, data); /* set player 2 right pixel 1 */ |
| 615 | 631 | SETCOL_L(P210, data); /* set player 2 left pixel 1 */ |
| 616 | 632 | SETCOL_B(P211, data); /* set player 2 both pixels 1 */ |
| r31981 | r31982 | |
| 629 | 645 | SETCOL_B(P300, data); /* set player 3 both pixels 0 */ |
| 630 | 646 | SETCOL_L(P301, data); /* set player 3 left pixel 0 */ |
| 631 | 647 | SETCOL_R(P310, data); /* set player 3 right pixel 0 */ |
| 632 | | SPLIT_HUE(data, huepm3); |
| 633 | | data = huepm3 | lumpf1; |
| 648 | SPLIT_HUE(data, m_huepm3); |
| 649 | data = m_huepm3 | m_lumpf1; |
| 634 | 650 | SETCOL_R(P301, data); /* set player 3 right pixel 1 */ |
| 635 | 651 | SETCOL_L(P310, data); /* set player 3 left pixel 1 */ |
| 636 | 652 | SETCOL_B(P311, data); /* set player 3 both pixels 1 */ |
| r31981 | r31982 | |
| 656 | 672 | |
| 657 | 673 | SETCOL_B(PF1, data); /* set playfield 1 color */ |
| 658 | 674 | SETCOL_B(GT2+5, data); /* set GTIA mode 2 color 5 */ |
| 659 | | SPLIT_LUM(data, lumpf1); |
| 660 | | data = huepf2 | lumpf1; |
| 675 | SPLIT_LUM(data, m_lumpf1); |
| 676 | data = m_huepf2 | m_lumpf1; |
| 661 | 677 | SETCOL_R(T01, data); /* set text mode right pixel 1 */ |
| 662 | 678 | SETCOL_L(T10, data); /* set text mode left pixel 1 */ |
| 663 | 679 | SETCOL_B(T11, data); /* set text mode both pixels 1 */ |
| 664 | | data = huebk | lumpf1; |
| 680 | data = m_huebk | m_lumpf1; |
| 665 | 681 | SETCOL_R(G01, data); /* set graphics mode right pixel 1 */ |
| 666 | 682 | SETCOL_L(G10, data); /* set graphics mode left pixel 1 */ |
| 667 | 683 | SETCOL_B(G11, data); /* set graphics mode both pixels 1 */ |
| 668 | | data = huepm0 | lumpf1; |
| 684 | data = m_huepm0 | m_lumpf1; |
| 669 | 685 | SETCOL_R(P001, data); /* set player 0 right pixel 1 */ |
| 670 | 686 | SETCOL_L(P010, data); /* set player 0 left pixel 1 */ |
| 671 | 687 | SETCOL_B(P011, data); /* set player 0 both pixels 1 */ |
| 672 | | data = huepm1 | lumpf1; |
| 688 | data = m_huepm1 | m_lumpf1; |
| 673 | 689 | SETCOL_R(P101, data); /* set player 1 right pixel 1 */ |
| 674 | 690 | SETCOL_L(P110, data); /* set player 1 left pixel 1 */ |
| 675 | 691 | SETCOL_B(P111, data); /* set player 1 both pixels 1 */ |
| 676 | | data = huepm2 | lumpf1; |
| 692 | data = m_huepm2 | m_lumpf1; |
| 677 | 693 | SETCOL_R(P201, data); /* set player 2 right pixel 1 */ |
| 678 | 694 | SETCOL_L(P210, data); /* set player 2 left pixel 1 */ |
| 679 | 695 | SETCOL_B(P211, data); /* set player 2 both pixels 1 */ |
| 680 | | data = huepm3 | lumpf1; |
| 696 | data = m_huepm3 | m_lumpf1; |
| 681 | 697 | SETCOL_R(P301, data); /* set player 3 right pixel 1 */ |
| 682 | 698 | SETCOL_L(P310, data); /* set player 3 left pixel 1 */ |
| 683 | 699 | SETCOL_B(P311, data); /* set player 3 both pixels 1 */ |
| 684 | | data = huepm4 | lumpf1; |
| 700 | data = m_huepm4 | m_lumpf1; |
| 685 | 701 | SETCOL_R(P401, data); /* set missiles right pixel 1 */ |
| 686 | 702 | SETCOL_L(P410, data); /* set missiles left pixel 1 */ |
| 687 | 703 | SETCOL_B(P411, data); /* set missiles both pixels 1 */ |
| r31981 | r31982 | |
| 699 | 715 | SETCOL_B(T00, data); /* set text mode both pixels 0 */ |
| 700 | 716 | SETCOL_L(T01, data); /* set text mode left pixel 0 */ |
| 701 | 717 | SETCOL_R(T10, data); /* set text mode right pixel 0 */ |
| 702 | | SPLIT_HUE(data, huepf2); |
| 703 | | data = huepf2 | lumpf1; |
| 718 | SPLIT_HUE(data, m_huepf2); |
| 719 | data = m_huepf2 | m_lumpf1; |
| 704 | 720 | SETCOL_R(T01, data); /* set text mode right pixel 1 */ |
| 705 | 721 | SETCOL_L(T10, data); /* set text mode left pixel 1 */ |
| 706 | 722 | SETCOL_B(T11, data); /* set text mode both pixels 1 */ |
| r31981 | r31982 | |
| 718 | 734 | SETCOL_B(P400, data); /* set p/m xor mode both pixels 0 */ |
| 719 | 735 | SETCOL_L(P401, data); /* set p/m xor mode left pixel 0 */ |
| 720 | 736 | SETCOL_R(P410, data); /* set p/m xor mode right pixel 0 */ |
| 721 | | SPLIT_HUE(data, huepm4); |
| 722 | | data = huepm4 | lumpf1; |
| 737 | SPLIT_HUE(data, m_huepm4); |
| 738 | data = m_huepm4 | m_lumpf1; |
| 723 | 739 | SETCOL_R(P401, data); /* set p/m xor mode right pixel 1 */ |
| 724 | 740 | SETCOL_L(P410, data); /* set p/m xor mode left pixel 1 */ |
| 725 | 741 | SETCOL_B(P411, data); /* set p/m xor mode both pixels 1 */ |
| r31981 | r31982 | |
| 744 | 760 | SETCOL_B(G00, data); /* set 2 color graphics both pixels 0 */ |
| 745 | 761 | SETCOL_L(G01, data); /* set 2 color graphics left pixel 0 */ |
| 746 | 762 | SETCOL_R(G10, data); /* set 2 color graphics right pixel 0 */ |
| 747 | | SPLIT_HUE(data, huebk); |
| 748 | | data = huebk | lumpf1; |
| 763 | SPLIT_HUE(data, m_huebk); |
| 764 | data = m_huebk | m_lumpf1; |
| 749 | 765 | SETCOL_R(G01, data); /* set 2 color graphics right pixel 1 */ |
| 750 | 766 | SETCOL_L(G10, data); /* set 2 color graphics left pixel 1 */ |
| 751 | 767 | SETCOL_B(G11, data); /* set 2 color graphics both pixels 1 */ |