trunk/src/mame/machine/pgmprot_igs027a_type1.c
| r24584 | r24585 | |
| 572 | 572 | { |
| 573 | 573 | case 0x13: // getting some kind of list maybe? |
| 574 | 574 | { |
| 575 | | |
| 575 | // 2d seems to be used when there is more data available |
| 576 | // 74 seems to be used when there isn't.. (end of buffer reached?) |
| 576 | 577 | m_valueresponse = 0x74<<16; // 2d or 74! (based on?) |
| 577 | 578 | |
| 578 | 579 | } |
| r24584 | r24585 | |
| 605 | 606 | m_valueresponse = 0x74<<16; |
| 606 | 607 | break; |
| 607 | 608 | |
| 608 | | case 0x47: // ASIC status? |
| 609 | | m_valueresponse = 0x74<<16; |
| 609 | |
| 610 | // 47 and 52 are used to get the images during the intro sequence, different each loop |
| 611 | // also some other gfx? |
| 612 | case 0x47: |
| 613 | printf("which %04x\n", m_value0); |
| 614 | m_valueresponse = 0x00740047; |
| 610 | 615 | break; |
| 611 | 616 | |
| 612 | | case 0x52: // ASIC status? |
| 613 | | { |
| 614 | | // how is this selected? |
| 615 | | |
| 616 | | //if (m_value0 == 6) { |
| 617 | | m_valueresponse = (0x74<<16)|1; // |1? |
| 618 | | //} else { |
| 619 | | // m_valueresponse = 0x74<<16; |
| 620 | | //} |
| 621 | | } |
| 617 | case 0x52: |
| 618 | printf("which %04x\n", m_value0); |
| 619 | m_valueresponse = 0x00740060; |
| 622 | 620 | break; |
| 623 | 621 | |
| 622 | |
| 623 | |
| 624 | |
| 624 | 625 | case 0x54: // ?? |
| 625 | 626 | m_puzzli_54_trigger = 1; |
| 626 | 627 | m_valueresponse = 0x36<<16; |
| r24584 | r24585 | |
| 631 | 632 | break; |
| 632 | 633 | |
| 633 | 634 | |
| 635 | |
| 636 | |
| 634 | 637 | // 63/67 are used on startup to get the z80 music at least |
| 635 | | |
| 636 | 638 | case 0x63: // used as a read address by the 68k code (related to previous uploaded values like cave?) should point at a table of ~0x80 in size? seems to use values as further pointers? |
| 637 | | if (m_value0==0x0002) |
| 639 | if (m_value0==0x0000) |
| 638 | 640 | { |
| 641 | m_valueresponse = 0x001694a8; |
| 642 | } |
| 643 | else if (m_value0==0x0001) |
| 644 | { |
| 645 | m_valueresponse = 0x0016cfae; |
| 646 | } |
| 647 | else if (m_value0==0x0002) |
| 648 | { |
| 639 | 649 | m_valueresponse = 0x0016ebf2; // right for puzzli2 , wrong for puzzli2s, probably calculated from the writes then? |
| 640 | 650 | } |
| 651 | else if (m_value0==0x0003) // before 'cast' screen |
| 652 | { |
| 653 | m_valueresponse = 0x0016faa8; |
| 654 | } |
| 641 | 655 | else |
| 642 | 656 | { |
| 657 | printf("unk case x63\n"); |
| 643 | 658 | m_valueresponse = 0x00600000; // wrong |
| 644 | 659 | |
| 645 | 660 | } |
| 646 | 661 | break; |
| 647 | 662 | |
| 648 | 663 | case 0x67: // used as a read address by the 68k code (related to previous uploaded values like cave?) directly reads ~0xDBE from the address.. |
| 649 | | if (m_value0==0x0002) |
| 664 | if ( (m_value0==0x0000) || (m_value0==0x0001) || (m_value0==0x0002) || (m_value0==0x0003) ) |
| 650 | 665 | { |
| 651 | 666 | m_valueresponse = 0x00166178; // right for puzzli2 , wrong for puzzli2s, probably calculated from the writes then? |
| 652 | 667 | } |
| 653 | 668 | else |
| 654 | 669 | { |
| 670 | printf("unk case x67\n"); |
| 655 | 671 | m_valueresponse = 0x00400000; // wrong |
| 656 | 672 | } |
| 657 | 673 | break; |