trunk/src/mame/drivers/nmk16.c
| r32331 | r32332 | |
| 515 | 515 | settings,the latter is in a TIMER_DEVICE_CALLBACK to avoid sync problems. |
| 516 | 516 | To make a long story short,this MCU is an alternative version of the same protection |
| 517 | 517 | used by the MJ-8956 games (there are even the same kind of error codes!(i.e the number |
| 518 | | printed on the up-left corner of the screen)... |
| 518 | printed on the up-left corner of the screen). |
| 519 | 519 | |
| 520 | | Note: I'm 100% sure of the Thunder Dragon vectors because I've compared it with the |
| 521 | | bootleg sets,I'm *not* 100% sure of the Hacha Mecha Fighter vectors because I don't have |
| 522 | | anything to compare and I don't know if for example an option should be there if you lose a |
| 523 | | life,but the game looks pretty much hard without it. |
| 524 | | |
| 525 | 520 | ******************************************************************************************/ |
| 526 | 521 | |
| 527 | 522 | |
| r32331 | r32332 | |
| 550 | 545 | //td - hmf |
| 551 | 546 | //008D9E - 00796e |
| 552 | 547 | /* |
| 548 | (Old notes, for reference) |
| 549 | |
| 553 | 550 | 007B9E: bra 7b9c |
| 554 | 551 | 007BA0: move.w #$10, $f907a.l |
| 555 | 552 | 007BA8: bsr 8106 |
| r32331 | r32332 | |
| 614 | 611 | WRITE16_MEMBER(nmk16_state::hachamf_mainram_w) |
| 615 | 612 | { |
| 616 | 613 | COMBINE_DATA(&m_mainram[offset]); |
| 617 | | |
| 614 | #define DUMMYA 0x7b9c |
| 615 | // 7960 |
| 618 | 616 | switch(offset) |
| 619 | 617 | { |
| 620 | 618 | case 0xe058/2: PROT_INPUT(0xe058/2,0xc71f,0xe000/2,0x00080000); break; |
| r32331 | r32332 | |
| 622 | 620 | case 0xe51e/2: PROT_INPUT(0xe51e/2,0x0f82,0xe008/2,0x00080008); break; |
| 623 | 621 | case 0xe6b4/2: PROT_INPUT(0xe6b4/2,0x79be,0xe00c/2,0x0008000a); break; |
| 624 | 622 | case 0xe10e/2: PROT_JSR(0xe10e,0x8007,0x870a);//870a not 9d66 |
| 625 | | PROT_JSR(0xe10e,0x8000,0xd9c6); break; |
| 626 | | case 0xe11e/2: PROT_JSR(0xe11e,0x8038,0x972a);//972a |
| 627 | | PROT_JSR(0xe11e,0x8031,0xd1f8); break; |
| 623 | PROT_JSR(0xe10e,0x8000,0xd9c6); break; |
| 624 | case 0xe11e/2: PROT_JSR(0xe11e,0x8038,DUMMYA);//972a - (unused) |
| 625 | PROT_JSR(0xe11e,0x8031,0x7a54); break; |
| 628 | 626 | case 0xe12e/2: PROT_JSR(0xe12e,0x8019,0x9642);//OK-9642 |
| 629 | | PROT_JSR(0xe12e,0x8022,0xda06); break; |
| 627 | PROT_JSR(0xe12e,0x8022,0xda06); break; |
| 630 | 628 | case 0xe13e/2: PROT_JSR(0xe13e,0x802a,0x9d66);//9d66 not 9400 - OK |
| 631 | | PROT_JSR(0xe13e,0x8013,0x81aa); break; |
| 629 | PROT_JSR(0xe13e,0x8013,0x81aa); break; |
| 632 | 630 | case 0xe14e/2: PROT_JSR(0xe14e,0x800b,0xb3f2);//b3f2 - OK |
| 633 | | PROT_JSR(0xe14e,0x8004,0x8994); break; |
| 631 | PROT_JSR(0xe14e,0x8004,0x8994); break; |
| 634 | 632 | case 0xe15e/2: PROT_JSR(0xe15e,0x803c,0xb59e);//b59e - OK |
| 635 | | PROT_JSR(0xe15e,0x8035,0x8d0c); break; |
| 633 | PROT_JSR(0xe15e,0x8035,0x8c36); break; |
| 636 | 634 | case 0xe16e/2: PROT_JSR(0xe16e,0x801d,0x9ac2);//9ac2 - OK |
| 637 | | PROT_JSR(0xe16e,0x8026,0x8c36); break; |
| 635 | PROT_JSR(0xe16e,0x8026,0x8d0c); break; |
| 638 | 636 | case 0xe17e/2: PROT_JSR(0xe17e,0x802e,0xc366);//c366 - OK |
| 639 | | PROT_JSR(0xe17e,0x8017,0x870a); break; |
| 640 | | case 0xe18e/2: PROT_JSR(0xe18e,0x8004,0xd620); //unused |
| 641 | | PROT_JSR(0xe18e,0x8008,0x972a); break; //unused |
| 637 | PROT_JSR(0xe17e,0x8017,0x870a); break; |
| 638 | case 0xe18e/2: PROT_JSR(0xe18e,0x8004,DUMMYA); //unused |
| 639 | PROT_JSR(0xe18e,0x8008,DUMMYA); break; //unused |
| 642 | 640 | case 0xe19e/2: PROT_JSR(0xe19e,0x8030,0xd9c6);//OK-d9c6 |
| 643 | | PROT_JSR(0xe19e,0x8039,0x9642); break; |
| 644 | | case 0xe1ae/2: PROT_JSR(0xe1ae,0x8011,0xd1f8);//d1f8 not c67e |
| 645 | | PROT_JSR(0xe1ae,0x802a,0x9d66); break; |
| 641 | PROT_JSR(0xe19e,0x8039,0x9642); break; |
| 642 | case 0xe1ae/2: PROT_JSR(0xe1ae,0x8011,0x7a54);//d1f8 not c67e |
| 643 | PROT_JSR(0xe1ae,0x802a,0x9d66); break; |
| 646 | 644 | case 0xe1be/2: PROT_JSR(0xe1be,0x8022,0xda06);//da06 |
| 647 | | PROT_JSR(0xe1be,0x801b,0xb3f2); break; |
| 645 | PROT_JSR(0xe1be,0x801b,0xb3f2); break; |
| 648 | 646 | case 0xe1ce/2: PROT_JSR(0xe1ce,0x8003,0x81aa);//81aa |
| 649 | | PROT_JSR(0xe1ce,0x800c,0xb59e); break; |
| 647 | PROT_JSR(0xe1ce,0x800c,0xb59e); break; |
| 650 | 648 | case 0xe1de/2: PROT_JSR(0xe1de,0x8034,0x8994);//8994 - OK |
| 651 | | PROT_JSR(0xe1de,0x803d,0x9ac2); break; |
| 652 | | case 0xe1ee/2: PROT_JSR(0xe1ee,0x8015,0x8d0c);//8d0c not 82f6 |
| 653 | | PROT_JSR(0xe1ee,0x802e,0xc366); break; |
| 654 | | case 0xe1fe/2: PROT_JSR(0xe1fe,0x8026,0x8c36);//8c36 |
| 655 | | PROT_JSR(0xe1fe,0x8016,0xd620); break; //unused |
| 649 | PROT_JSR(0xe1de,0x803d,0x9ac2); break; |
| 650 | case 0xe1ee/2: PROT_JSR(0xe1ee,0x8015,0x8c36);//8d0c not 82f6 |
| 651 | PROT_JSR(0xe1ee,0x802e,0xc366); break; |
| 652 | case 0xe1fe/2: PROT_JSR(0xe1fe,0x8026,0x8d0c);//8c36 |
| 653 | PROT_JSR(0xe1fe,0x8016,DUMMYA); break; //unused |
| 656 | 654 | case 0xef00/2: |
| 657 | 655 | if(m_mainram[0xef00/2] == 0x60fe) |
| 658 | 656 | { |
| r32331 | r32332 | |
| 664 | 662 | } |
| 665 | 663 | break; |
| 666 | 664 | } |
| 665 | #undef DUMMYA |
| 667 | 666 | } |
| 668 | 667 | |
| 668 | |
| 669 | 669 | static ADDRESS_MAP_START( hachamf_map, AS_PROGRAM, 16, nmk16_state ) |
| 670 | 670 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| 671 | 671 | /* I/O Region */ |
| r32331 | r32332 | |
| 7725 | 7725 | GAME( 1991, tdragon, 0, tdragon, tdragon, driver_device, 0, ROT270, "NMK (Tecmo license)","Thunder Dragon (8th Jan. 1992, unprotected)", 0 ) |
| 7726 | 7726 | GAME( 1991, tdragon1, tdragon, tdragon_prot, tdragon_prot, nmk16_state, tdragon_prot, ROT270, "NMK (Tecmo license)","Thunder Dragon (4th Jun. 1991, protected)", GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) |
| 7727 | 7727 | |
| 7728 | | GAME( 1991, hachamf, 0, hachamf_prot, hachamf_prot, nmk16_state, hachamf_prot, ROT0, "NMK", "Hacha Mecha Fighter (19th Sep. 1991, protected)", GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING ) // lots of things wrong due to protection |
| 7728 | GAME( 1991, hachamf, 0, hachamf_prot, hachamf_prot, nmk16_state, hachamf_prot, ROT0, "NMK", "Hacha Mecha Fighter (19th Sep. 1991, protected)", GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // lots of things wrong due to protection |
| 7729 | 7729 | GAME( 1991, hachamfb, hachamf,hachamf, hachamfb, driver_device, 0, ROT0, "bootleg", "Hacha Mecha Fighter (19th Sep. 1991, unprotected, bootleg Thunder Dragon conversion)", 0 ) // appears to be a Thunder Dragon conversion, could be bootleg? |
| 7730 | 7730 | |
| 7731 | 7731 | GAME( 1992, macross, 0, macross, macross, nmk16_state, nmk, ROT270, "Banpresto", "Super Spacefortress Macross / Chou-Jikuu Yousai Macross", 0 ) |