Naomi update [R. Belmont, Deunan Knute, Alex, Mr. Mudkips, Frank Bukor]

- Use new dump for ic31/32, ROM board test passes now
- Add protection hookup for Marvel vs. Capcom 2, game is playable w/sound

I'm not removing GAME_NOT_WORKING because I don't trust the Naomi emulation
in general that much yet, although I was able to coin up and play (slowly ;-)

Dump is uploading.
This commit is contained in:
R. Belmont 2009-08-20 18:25:42 +00:00
parent 4750c6b9d5
commit d49a0062f8
2 changed files with 66 additions and 45 deletions

View File

@ -2910,39 +2910,39 @@ EXP: MARVEL VS. CAPCOM 2
Note: the following game is one of the few known regular Naomi game to have a rom test item in its specific test mode menu. Note: the following game is one of the few known regular Naomi game to have a rom test item in its specific test mode menu.
So the Naomi regular board test item is unreliable in this circumstance. So the Naomi regular board test item is unreliable in this circumstance.
protection notes:
CPU 'maincpu' (PC=0C001014): unmapped program memory qword write to 0231FCF8 = 00000000E2534910 & 00000000FFFFFFFF
CPU 'maincpu': warning - attempt to direct-map address 02534910 in program space
CPU 'maincpu' (PC=02534910): unmapped program memory qword read from 02534910 & 000000000000FFFF
CPU 'maincpu': warning - attempt to direct-map address 02534912 in program space
CPU 'maincpu' (PC=02534912): unmapped program memory qword read from 02534910 & 00000000FFFF0000
CPU 'maincpu': warning - attempt to direct-map address 02534914 in program space
*/ */
ROM_START( mvsc2 ) ROM_START( mvsc2 )
ROM_REGION( 0x200000, "maincpu", 0) ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS NAOMI_BIOS
ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF) ROM_REGION( 0x8900000, "user1", ROMREGION_ERASEFF)
ROM_LOAD("epr-23085a.ic11", 0x0000000, 0x0400000, CRC(5d5b7ad1) SHA1(f58c31b245fc33fa541f9f074548402a63f7c3d3) ) //ic 22 ROM_LOAD("epr-23085a.ic11", 0x0000000, 0x0400000, CRC(5d5b7ad1) SHA1(f58c31b245fc33fa541f9f074548402a63f7c3d3) )
ROM_RELOAD( 0x400000, 0x400000) ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23048.ic17", 0x0800000, 0x0800000, CRC(93d7a63a) SHA1(c50d10b4a3f9db51eae5749f5b665d7c8ab6c898) ) //ic 1 ROM_LOAD("mpr-23048.ic17", 0x0800000, 0x0800000, CRC(93d7a63a) SHA1(c50d10b4a3f9db51eae5749f5b665d7c8ab6c898) )
ROM_LOAD("mpr-23049.ic18", 0x1000000, 0x0800000, CRC(003dcce0) SHA1(fb71c8ca9271d2155878c72d8fe2df3031e6c014) ) //ic 2 ROM_LOAD("mpr-23049.ic18", 0x1000000, 0x0800000, CRC(003dcce0) SHA1(fb71c8ca9271d2155878c72d8fe2df3031e6c014) )
ROM_LOAD("mpr-23050.ic19", 0x1800000, 0x0800000, CRC(1d6b88a7) SHA1(ba42e9d1d912d88a7ad839b878975ba590634320) ) //ic 3 ROM_LOAD("mpr-23050.ic19", 0x1800000, 0x0800000, CRC(1d6b88a7) SHA1(ba42e9d1d912d88a7ad839b878975ba590634320) )
ROM_LOAD("mpr-23051.ic20", 0x2000000, 0x0800000, CRC(01226aaa) SHA1(a4c6a0eda05e53d0e51b92a4317a86a708a7efdb) ) //ic 4 ROM_LOAD("mpr-23051.ic20", 0x2000000, 0x0800000, CRC(01226aaa) SHA1(a4c6a0eda05e53d0e51b92a4317a86a708a7efdb) )
ROM_LOAD("mpr-23052.ic21", 0x2800000, 0x0800000, CRC(74bee120) SHA1(5a0fb48fa758a2be2e08e3b1298103c5aa748835) ) //ic 5 ROM_LOAD("mpr-23052.ic21", 0x2800000, 0x0800000, CRC(74bee120) SHA1(5a0fb48fa758a2be2e08e3b1298103c5aa748835) )
ROM_LOAD("mpr-23053.ic22", 0x3000000, 0x0800000, CRC(d92d4401) SHA1(a868780f8d2e176ff10781e1c08bf932f34ac504) ) //ic 6 ROM_LOAD("mpr-23053.ic22", 0x3000000, 0x0800000, CRC(d92d4401) SHA1(a868780f8d2e176ff10781e1c08bf932f34ac504) )
ROM_LOAD("mpr-23054.ic23", 0x3800000, 0x0800000, CRC(78ba02e8) SHA1(0f696a33e1e6671001efc309ed62f084a246ad24) ) //ic 7 ROM_LOAD("mpr-23054.ic23", 0x3800000, 0x0800000, CRC(78ba02e8) SHA1(0f696a33e1e6671001efc309ed62f084a246ad24) )
ROM_LOAD("mpr-23055.ic24", 0x4000000, 0x0800000, CRC(84319604) SHA1(c3dde162e043a54e1325202b46191b32e8784a1c) ) //ic 8 ROM_LOAD("mpr-23055.ic24", 0x4000000, 0x0800000, CRC(84319604) SHA1(c3dde162e043a54e1325202b46191b32e8784a1c) )
ROM_LOAD("mpr-23056.ic25", 0x4800000, 0x0800000, CRC(d7386034) SHA1(be1f3ca5f283e428dc59dc072de3e7d36e122d53) ) //ic 9 ROM_LOAD("mpr-23056.ic25", 0x4800000, 0x0800000, CRC(d7386034) SHA1(be1f3ca5f283e428dc59dc072de3e7d36e122d53) )
ROM_LOAD("mpr-23057.ic26", 0x5000000, 0x0800000, CRC(a3f087db) SHA1(b52d7c072cb5c2fdd10d0ac0b62cebe48b229ae3) ) //ic 10 ROM_LOAD("mpr-23057.ic26", 0x5000000, 0x0800000, CRC(a3f087db) SHA1(b52d7c072cb5c2fdd10d0ac0b62cebe48b229ae3) )
ROM_LOAD("mpr-23058.ic27", 0x5800000, 0x0800000, CRC(61a6cc5d) SHA1(34e52cb076888313a80f2b87876b8d37b91d85a0) ) //ic 11 ROM_LOAD("mpr-23058.ic27", 0x5800000, 0x0800000, CRC(61a6cc5d) SHA1(34e52cb076888313a80f2b87876b8d37b91d85a0) )
ROM_LOAD("mpr-23059.ic28", 0x6000000, 0x0800000, CRC(64808024) SHA1(1a6c60c330642b273978d3dd02d95d17d36ee3f2) ) //ic 12 ROM_LOAD("mpr-23059.ic28", 0x6000000, 0x0800000, CRC(64808024) SHA1(1a6c60c330642b273978d3dd02d95d17d36ee3f2) )
ROM_LOAD("mpr-23060.ic29", 0x6800000, 0x0800000, CRC(67519942) SHA1(fc758d9075625f8140d5d828c8f6b7a91bcc9119) ) //ic 13 ROM_LOAD("mpr-23060.ic29", 0x6800000, 0x0800000, CRC(67519942) SHA1(fc758d9075625f8140d5d828c8f6b7a91bcc9119) )
ROM_LOAD("mpr-23061.ic30", 0x7000000, 0x0800000, CRC(fb1844c4) SHA1(1d1571516a6dbed0c4ded3b80efde9cc9281f66f) ) //ic 14 ROM_LOAD("mpr-23061.ic30", 0x7000000, 0x0800000, CRC(fb1844c4) SHA1(1d1571516a6dbed0c4ded3b80efde9cc9281f66f) )
ROM_LOAD32_WORD("mpr-23083.ic31", 0x8000000, 0x0400000, CRC(c61d2dfe) SHA1(a05fb979ed7c8040de91716fc8814e6bd995efa2) ) //ic 15 ROM_LOAD("mpr-23083.ic31", 0x7800000, 0x0400000, CRC(c61d2dfe) SHA1(a05fb979ed7c8040de91716fc8814e6bd995efa2) )
ROM_LOAD32_WORD("mpr-23084.ic32", 0x8000002, 0x0400000, CRC(4ebbbdd9) SHA1(9ad8c1a644850de6e35705318cd1991e1d6e60a8) ) //ic 16 ROM_LOAD("mpr-23084.ic32", 0x8000000, 0x0400000, CRC(e228cdfd) SHA1(d02a2e3557bd24cf34c5ddb42d41ca15e78ae885) )
// DMA protection data
ROM_LOAD("88000000.bin", 0x8800000, 0x025f00, CRC(77d79823) SHA1(2545d28eee47114e8ffb9bc6d7a910e90fc48420) )
ROM_LOAD("88026440.bin", 0x8830000, 0x016520, CRC(dad9ebbd) SHA1(39c0697caa2b5ee11d99e75726e92ed86a23f10b) )
ROM_LOAD("8803bda0.bin", 0x8850000, 0x01e5e0, CRC(9e0b8202) SHA1(729bed557c1a00da13c990603bbadab38d90285e) )
ROM_LOAD("8805a560.bin", 0x8870000, 0x0017a0, CRC(7bc27482) SHA1(6ce6074cf47989f42af02deb7aac52883912784a) )
ROM_LOAD("8805b720.bin", 0x8880000, 0x02b5a0, CRC(485d0aef) SHA1(853f4b49b489cc512c906edcaf3cd8b5bf4c64c0) )
ROM_LOAD("8808b7e0.bin", 0x88a0000, 0x013ec0, CRC(0fc8f363) SHA1(dad30d43cef89d01ce80301b1d796aabad755de6) )
ROM_END ROM_END
/* toy fighter - 1999 sega */ /* toy fighter - 1999 sega */

View File

@ -395,7 +395,7 @@ READ64_DEVICE_HANDLER( naomibd_r )
} }
else else
{ {
mame_printf_verbose("Bad protection offset read %x\n", v->rom_offset); logerror("Bad protection offset read %x\n", v->rom_offset);
} }
} }
else else
@ -574,20 +574,6 @@ WRITE64_DEVICE_HANDLER( naomibd_w )
v->dma_offset &= 0xffff; v->dma_offset &= 0xffff;
v->dma_offset |= (data >> 16) & 0x1fff0000; v->dma_offset |= (data >> 16) & 0x1fff0000;
v->dma_offset_flags = (data>>28); v->dma_offset_flags = (data>>28);
// if the flag is cleared that lets the protection chip go,
// we need to handle this specially.
if (!(v->dma_offset_flags & NAOMIBD_FLAG_ADDRESS_SHUFFLE))
{
if (!strcmp(device->machine->gamedrv->name, "qmegamis"))
{
v->dma_offset = 0x9000000;
}
else
{
logerror("Protected DMA not handled for this game\n");
}
}
} }
if(ACCESSING_BITS_0_15) if(ACCESSING_BITS_0_15)
{ {
@ -607,7 +593,7 @@ WRITE64_DEVICE_HANDLER( naomibd_w )
case 0x1fffc: // decryption key case 0x1fffc: // decryption key
v->prot_key = data; v->prot_key = data;
mame_printf_verbose("Protection: set up read @ %x, key %x (PIO %x DMA %x) [%s]\n", v->prot_offset, v->prot_key, v->rom_offset, v->dma_offset, cpuexec_describe_context(device->machine)); // printf("Protection: set up read @ %x, key %x (PIO %x DMA %x) [%s]\n", v->prot_offset, v->prot_key, v->rom_offset, v->dma_offset, cpuexec_describe_context(device->machine));
// translate address if necessary // translate address if necessary
if (v->prot_translate != NULL) if (v->prot_translate != NULL)
@ -646,7 +632,7 @@ WRITE64_DEVICE_HANDLER( naomibd_w )
} }
else else
{ {
mame_printf_verbose("naomibd: protection not handled for this game\n"); logerror("naomibd: protection not handled for this game\n");
} }
break; break;
@ -1043,7 +1029,43 @@ DEVICE_GET_INFO( naomibd )
case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(naomibd_state); break; case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(naomibd_state); break;
case DEVINFO_INT_INLINE_CONFIG_BYTES: info->i = sizeof(naomibd_config); break; case DEVINFO_INT_INLINE_CONFIG_BYTES: info->i = sizeof(naomibd_config); break;
case DEVINFO_INT_CLASS: info->i = DEVICE_CLASS_PERIPHERAL; break; case DEVINFO_INT_CLASS: info->i = DEVICE_CLASS_PERIPHERAL; break;
case DEVINFO_INT_DMAOFFSET: info->i = get_safe_token(device)->dma_offset; break; case DEVINFO_INT_DMAOFFSET:
// printf("DMA source %x, flags %x\n", get_safe_token(device)->dma_offset, get_safe_token(device)->dma_offset_flags);
// if the flag is cleared that lets the protection chip go,
// we need to handle this specially.
if (!(get_safe_token(device)->dma_offset_flags & NAOMIBD_FLAG_ADDRESS_SHUFFLE))
{
if (!strcmp(device->machine->gamedrv->name, "qmegamis"))
{
info->i = 0x9000000;
break;
}
else if (!strcmp(device->machine->gamedrv->name, "mvsc2"))
{
switch (get_safe_token(device)->dma_offset)
{
case 0x08000000: info->i = 0x8800000; break;
case 0x08026440: info->i = 0x8830000; break;
case 0x0803bda0: info->i = 0x8850000; break;
case 0x0805a560: info->i = 0x8870000; break;
case 0x0805b720: info->i = 0x8880000; break;
case 0x0808b7e0: info->i = 0x88a0000; break;
default:
info->i = get_safe_token(device)->dma_offset;
break;
}
return;
}
else
{
logerror("Protected DMA not handled for this game (dma_offset %x)\n", get_safe_token(device)->dma_offset);
}
}
info->i = get_safe_token(device)->dma_offset;
break;
/* --- the following bits of info are returned as pointers --- */ /* --- the following bits of info are returned as pointers --- */
case DEVINFO_PTR_ROM_REGION: info->romregion = NULL; break; case DEVINFO_PTR_ROM_REGION: info->romregion = NULL; break;
@ -1072,4 +1094,3 @@ DEVICE_GET_INFO( naomibd )
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break; case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
} }
} }