Previous 199869 Revisions Next

r32332 Tuesday 23rd September, 2014 at 22:45:41 UTC by Angelo Salese
Moved protection vectors from hachamfb to hachamf, making the latter to work properly too [Angelo Salese]
[src/mame/drivers]nmk16.c

trunk/src/mame/drivers/nmk16.c
r32331r32332
515515settings,the latter is in a TIMER_DEVICE_CALLBACK to avoid sync problems.
516516To make a long story short,this MCU is an alternative version of the same protection
517517used by the MJ-8956 games (there are even the same kind of error codes!(i.e the number
518printed on the up-left corner of the screen)...
518printed on the up-left corner of the screen).
519519
520Note: I'm 100% sure of the Thunder Dragon vectors because I've compared it with the
521bootleg sets,I'm *not* 100% sure of the Hacha Mecha Fighter vectors because I don't have
522anything to compare and I don't know if for example an option should be there if you lose a
523life,but the game looks pretty much hard without it.
524
525520******************************************************************************************/
526521
527522
r32331r32332
550545//td     - hmf
551546//008D9E - 00796e
552547/*
548(Old notes, for reference)
549
553550007B9E: bra     7b9c
554551007BA0: move.w  #$10, $f907a.l
555552007BA8: bsr     8106
r32331r32332
614611WRITE16_MEMBER(nmk16_state::hachamf_mainram_w)
615612{
616613   COMBINE_DATA(&m_mainram[offset]);
617
614#define DUMMYA 0x7b9c
615// 7960
618616   switch(offset)
619617   {
620618      case 0xe058/2: PROT_INPUT(0xe058/2,0xc71f,0xe000/2,0x00080000); break;
r32331r32332
622620      case 0xe51e/2: PROT_INPUT(0xe51e/2,0x0f82,0xe008/2,0x00080008); break;
623621      case 0xe6b4/2: PROT_INPUT(0xe6b4/2,0x79be,0xe00c/2,0x0008000a); break;
624622      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;
628626      case 0xe12e/2: PROT_JSR(0xe12e,0x8019,0x9642);//OK-9642
629                  PROT_JSR(0xe12e,0x8022,0xda06); break;
627                   PROT_JSR(0xe12e,0x8022,0xda06); break;
630628      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;
632630      case 0xe14e/2: PROT_JSR(0xe14e,0x800b,0xb3f2);//b3f2 - OK
633                  PROT_JSR(0xe14e,0x8004,0x8994); break;
631                  PROT_JSR(0xe14e,0x8004,0x8994); break;
634632      case 0xe15e/2: PROT_JSR(0xe15e,0x803c,0xb59e);//b59e - OK
635                  PROT_JSR(0xe15e,0x8035,0x8d0c); break;
633                  PROT_JSR(0xe15e,0x8035,0x8c36); break;
636634      case 0xe16e/2: PROT_JSR(0xe16e,0x801d,0x9ac2);//9ac2 - OK
637                  PROT_JSR(0xe16e,0x8026,0x8c36); break;
635                   PROT_JSR(0xe16e,0x8026,0x8d0c); break;
638636      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
642640      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;
646644      case 0xe1be/2: PROT_JSR(0xe1be,0x8022,0xda06);//da06
647                  PROT_JSR(0xe1be,0x801b,0xb3f2); break;
645                  PROT_JSR(0xe1be,0x801b,0xb3f2); break;
648646      case 0xe1ce/2: PROT_JSR(0xe1ce,0x8003,0x81aa);//81aa
649                  PROT_JSR(0xe1ce,0x800c,0xb59e); break;
647                  PROT_JSR(0xe1ce,0x800c,0xb59e); break;
650648      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
656654      case 0xef00/2:
657655         if(m_mainram[0xef00/2] == 0x60fe)
658656         {
r32331r32332
664662         }
665663         break;
666664   }
665#undef DUMMYA   
667666}
668667
668
669669static ADDRESS_MAP_START( hachamf_map, AS_PROGRAM, 16, nmk16_state )
670670   AM_RANGE(0x000000, 0x03ffff) AM_ROM
671671   /* I/O Region */
r32331r32332
77257725GAME( 1991, tdragon,  0,        tdragon,       tdragon,      driver_device,  0,             ROT270, "NMK (Tecmo license)","Thunder Dragon (8th Jan. 1992, unprotected)", 0 )
77267726GAME( 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 )
77277727
7728GAME( 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
7728GAME( 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
77297729GAME( 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?
77307730
77317731GAME( 1992, macross,  0,        macross,  macross, nmk16_state,    nmk,      ROT270, "Banpresto",                    "Super Spacefortress Macross / Chou-Jikuu Yousai Macross", 0 )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team