trunk/src/mame/machine/pgmprot_igs027a_type1.c
| r24588 | r24589 | |
| 564 | 564 | |
| 565 | 565 | /* preliminary */ |
| 566 | 566 | |
| 567 | static int hackcount = 0; |
| 568 | static int hackcount2 = 0; |
| 569 | |
| 567 | 570 | void pgm_arm_type1_state::command_handler_puzzli2(int pc) |
| 568 | 571 | { |
| 569 | 572 | printf("%08x: %02x %04x\n",pc, m_ddp3lastcommand, m_value0); |
| r24588 | r24589 | |
| 572 | 575 | { |
| 573 | 576 | case 0x13: // getting some kind of list maybe? |
| 574 | 577 | { |
| 578 | hackcount++; |
| 579 | |
| 580 | if (hackcount<10) |
| 581 | { |
| 582 | m_valueresponse = 0x002d0008; |
| 583 | } |
| 584 | else |
| 585 | { |
| 586 | hackcount=0; |
| 587 | m_valueresponse = 0x00740008; |
| 588 | } |
| 575 | 589 | // 2d seems to be used when there is more data available |
| 576 | 590 | // 74 seems to be used when there isn't.. (end of buffer reached?) |
| 577 | | m_valueresponse = 0x74<<16; // 2d or 74! (based on?) |
| 591 | // 2d or 74! (based on?) |
| 578 | 592 | |
| 579 | 593 | } |
| 580 | 594 | break; |
| r24588 | r24589 | |
| 582 | 596 | case 0x31: |
| 583 | 597 | { |
| 584 | 598 | // how is this selected? command 54? |
| 599 | hackcount2++; |
| 585 | 600 | |
| 586 | | // just a wild guess |
| 587 | | if (m_puzzli_54_trigger) { |
| 588 | | // pc == 1387de |
| 589 | | m_valueresponse = 0x63<<16; // ? |
| 590 | | } else { |
| 591 | | // pc == 14cf58 |
| 592 | | m_valueresponse = 0xd2<<16; |
| 601 | if (hackcount2<30) |
| 602 | { |
| 603 | m_valueresponse = 0x00d20008; |
| 593 | 604 | } |
| 605 | else |
| 606 | { |
| 607 | hackcount2=0; |
| 608 | m_valueresponse = 0x00630008; |
| 609 | } |
| 594 | 610 | |
| 595 | | m_puzzli_54_trigger = 0; |
| 596 | 611 | } |
| 597 | 612 | break; |
| 598 | 613 | |