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.
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_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF)
ROM_LOAD("epr-23085a.ic11", 0x0000000, 0x0400000, CRC(5d5b7ad1) SHA1(f58c31b245fc33fa541f9f074548402a63f7c3d3) ) //ic 22
ROM_REGION( 0x8900000, "user1", ROMREGION_ERASEFF)
ROM_LOAD("epr-23085a.ic11", 0x0000000, 0x0400000, CRC(5d5b7ad1) SHA1(f58c31b245fc33fa541f9f074548402a63f7c3d3) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23048.ic17", 0x0800000, 0x0800000, CRC(93d7a63a) SHA1(c50d10b4a3f9db51eae5749f5b665d7c8ab6c898) ) //ic 1
ROM_LOAD("mpr-23049.ic18", 0x1000000, 0x0800000, CRC(003dcce0) SHA1(fb71c8ca9271d2155878c72d8fe2df3031e6c014) ) //ic 2
ROM_LOAD("mpr-23050.ic19", 0x1800000, 0x0800000, CRC(1d6b88a7) SHA1(ba42e9d1d912d88a7ad839b878975ba590634320) ) //ic 3
ROM_LOAD("mpr-23051.ic20", 0x2000000, 0x0800000, CRC(01226aaa) SHA1(a4c6a0eda05e53d0e51b92a4317a86a708a7efdb) ) //ic 4
ROM_LOAD("mpr-23052.ic21", 0x2800000, 0x0800000, CRC(74bee120) SHA1(5a0fb48fa758a2be2e08e3b1298103c5aa748835) ) //ic 5
ROM_LOAD("mpr-23053.ic22", 0x3000000, 0x0800000, CRC(d92d4401) SHA1(a868780f8d2e176ff10781e1c08bf932f34ac504) ) //ic 6
ROM_LOAD("mpr-23054.ic23", 0x3800000, 0x0800000, CRC(78ba02e8) SHA1(0f696a33e1e6671001efc309ed62f084a246ad24) ) //ic 7
ROM_LOAD("mpr-23055.ic24", 0x4000000, 0x0800000, CRC(84319604) SHA1(c3dde162e043a54e1325202b46191b32e8784a1c) ) //ic 8
ROM_LOAD("mpr-23056.ic25", 0x4800000, 0x0800000, CRC(d7386034) SHA1(be1f3ca5f283e428dc59dc072de3e7d36e122d53) ) //ic 9
ROM_LOAD("mpr-23057.ic26", 0x5000000, 0x0800000, CRC(a3f087db) SHA1(b52d7c072cb5c2fdd10d0ac0b62cebe48b229ae3) ) //ic 10
ROM_LOAD("mpr-23058.ic27", 0x5800000, 0x0800000, CRC(61a6cc5d) SHA1(34e52cb076888313a80f2b87876b8d37b91d85a0) ) //ic 11
ROM_LOAD("mpr-23059.ic28", 0x6000000, 0x0800000, CRC(64808024) SHA1(1a6c60c330642b273978d3dd02d95d17d36ee3f2) ) //ic 12
ROM_LOAD("mpr-23060.ic29", 0x6800000, 0x0800000, CRC(67519942) SHA1(fc758d9075625f8140d5d828c8f6b7a91bcc9119) ) //ic 13
ROM_LOAD("mpr-23061.ic30", 0x7000000, 0x0800000, CRC(fb1844c4) SHA1(1d1571516a6dbed0c4ded3b80efde9cc9281f66f) ) //ic 14
ROM_LOAD32_WORD("mpr-23083.ic31", 0x8000000, 0x0400000, CRC(c61d2dfe) SHA1(a05fb979ed7c8040de91716fc8814e6bd995efa2) ) //ic 15
ROM_LOAD32_WORD("mpr-23084.ic32", 0x8000002, 0x0400000, CRC(4ebbbdd9) SHA1(9ad8c1a644850de6e35705318cd1991e1d6e60a8) ) //ic 16
ROM_LOAD("mpr-23048.ic17", 0x0800000, 0x0800000, CRC(93d7a63a) SHA1(c50d10b4a3f9db51eae5749f5b665d7c8ab6c898) )
ROM_LOAD("mpr-23049.ic18", 0x1000000, 0x0800000, CRC(003dcce0) SHA1(fb71c8ca9271d2155878c72d8fe2df3031e6c014) )
ROM_LOAD("mpr-23050.ic19", 0x1800000, 0x0800000, CRC(1d6b88a7) SHA1(ba42e9d1d912d88a7ad839b878975ba590634320) )
ROM_LOAD("mpr-23051.ic20", 0x2000000, 0x0800000, CRC(01226aaa) SHA1(a4c6a0eda05e53d0e51b92a4317a86a708a7efdb) )
ROM_LOAD("mpr-23052.ic21", 0x2800000, 0x0800000, CRC(74bee120) SHA1(5a0fb48fa758a2be2e08e3b1298103c5aa748835) )
ROM_LOAD("mpr-23053.ic22", 0x3000000, 0x0800000, CRC(d92d4401) SHA1(a868780f8d2e176ff10781e1c08bf932f34ac504) )
ROM_LOAD("mpr-23054.ic23", 0x3800000, 0x0800000, CRC(78ba02e8) SHA1(0f696a33e1e6671001efc309ed62f084a246ad24) )
ROM_LOAD("mpr-23055.ic24", 0x4000000, 0x0800000, CRC(84319604) SHA1(c3dde162e043a54e1325202b46191b32e8784a1c) )
ROM_LOAD("mpr-23056.ic25", 0x4800000, 0x0800000, CRC(d7386034) SHA1(be1f3ca5f283e428dc59dc072de3e7d36e122d53) )
ROM_LOAD("mpr-23057.ic26", 0x5000000, 0x0800000, CRC(a3f087db) SHA1(b52d7c072cb5c2fdd10d0ac0b62cebe48b229ae3) )
ROM_LOAD("mpr-23058.ic27", 0x5800000, 0x0800000, CRC(61a6cc5d) SHA1(34e52cb076888313a80f2b87876b8d37b91d85a0) )
ROM_LOAD("mpr-23059.ic28", 0x6000000, 0x0800000, CRC(64808024) SHA1(1a6c60c330642b273978d3dd02d95d17d36ee3f2) )
ROM_LOAD("mpr-23060.ic29", 0x6800000, 0x0800000, CRC(67519942) SHA1(fc758d9075625f8140d5d828c8f6b7a91bcc9119) )
ROM_LOAD("mpr-23061.ic30", 0x7000000, 0x0800000, CRC(fb1844c4) SHA1(1d1571516a6dbed0c4ded3b80efde9cc9281f66f) )
ROM_LOAD("mpr-23083.ic31", 0x7800000, 0x0400000, CRC(c61d2dfe) SHA1(a05fb979ed7c8040de91716fc8814e6bd995efa2) )
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
/* toy fighter - 1999 sega */

View File

@ -395,7 +395,7 @@ READ64_DEVICE_HANDLER( naomibd_r )
}
else
{
mame_printf_verbose("Bad protection offset read %x\n", v->rom_offset);
logerror("Bad protection offset read %x\n", v->rom_offset);
}
}
else
@ -574,20 +574,6 @@ WRITE64_DEVICE_HANDLER( naomibd_w )
v->dma_offset &= 0xffff;
v->dma_offset |= (data >> 16) & 0x1fff0000;
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)
{
@ -607,7 +593,7 @@ WRITE64_DEVICE_HANDLER( naomibd_w )
case 0x1fffc: // decryption key
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
if (v->prot_translate != NULL)
@ -646,7 +632,7 @@ WRITE64_DEVICE_HANDLER( naomibd_w )
}
else
{
mame_printf_verbose("naomibd: protection not handled for this game\n");
logerror("naomibd: protection not handled for this game\n");
}
break;
@ -1043,7 +1029,43 @@ DEVICE_GET_INFO( naomibd )
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_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 --- */
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;
}
}