diff options
Diffstat (limited to 'src/mame/drivers/neogeo.cpp')
-rw-r--r-- | src/mame/drivers/neogeo.cpp | 89 |
1 files changed, 26 insertions, 63 deletions
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp index bec0233cf24..d8afdcc4310 100644 --- a/src/mame/drivers/neogeo.cpp +++ b/src/mame/drivers/neogeo.cpp @@ -1351,38 +1351,22 @@ void neogeo_base_state::init_audio() void neogeo_base_state::init_ym() { - uint8_t *ROM; - uint32_t len; - // Resetting a sound device causes the core to update() it and generate samples if it's not up to date. - // Thus we preemptively reset it here while the old pointers are still valid so it's up to date and - // doesn't generate samples below when we reset it for the new pointers. m_ym->reset(); - // all these region_free / region_alloc machinery is needed because current YM emulation does not allow - // to pass a ROM pointer different from a "ymsnd" / "ymsnd.deltat" region, and therefore we need to copy - // the ROM(s) from the cart to the corresponding region(s) with appropriate names... + address_space &adpcm_a_space = m_ym->space(0); + adpcm_a_space.unmap_readwrite(0x000000, 0xffffff); + if (m_slots[m_curr_slot] && m_slots[m_curr_slot]->get_ym_size()) - { - ROM = m_slots[m_curr_slot]->get_ym_base(); - len = m_slots[m_curr_slot]->get_ym_size(); - if (memregion(":ymsnd")) - machine().memory().region_free(":ymsnd"); - machine().memory().region_alloc(":ymsnd", len, 1, ENDIANNESS_LITTLE); - memcpy(memregion(":ymsnd")->base(), ROM, len); - } + adpcm_a_space.install_rom(0, m_slots[m_curr_slot]->get_ym_size() - 1, m_slots[m_curr_slot]->get_ym_base()); - if (memregion(":ymsnd.deltat")) - machine().memory().region_free(":ymsnd.deltat"); - if (m_slots[m_curr_slot] && m_slots[m_curr_slot]->get_ymdelta_size()) - { - ROM = m_slots[m_curr_slot]->get_ymdelta_base(); - len = m_slots[m_curr_slot]->get_ymdelta_size(); - machine().memory().region_alloc(":ymsnd.deltat", len, 1, ENDIANNESS_LITTLE); - memcpy(memregion(":ymsnd.deltat")->base(), ROM, len); - } + address_space &adpcm_b_space = m_ym->space(1); + adpcm_b_space.unmap_readwrite(0x000000, 0xffffff); - m_ym->reset(); // reset it again to get the new pointers + if (m_slots[m_curr_slot] && m_slots[m_curr_slot]->get_ymdelta_size()) + adpcm_b_space.install_rom(0, m_slots[m_curr_slot]->get_ymdelta_size() - 1, m_slots[m_curr_slot]->get_ymdelta_base()); + else if (m_slots[m_curr_slot] && m_slots[m_curr_slot]->get_ym_size()) + adpcm_b_space.install_rom(0, m_slots[m_curr_slot]->get_ym_size() - 1, m_slots[m_curr_slot]->get_ym_base()); } void neogeo_base_state::init_sprites() @@ -1980,11 +1964,10 @@ MACHINE_CONFIG_START(neogeo_base_state::neogeo_stereo) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_MODIFY("ymsnd") - MCFG_SOUND_ROUTE(0, "lspeaker", 0.28) - MCFG_SOUND_ROUTE(0, "rspeaker", 0.28) - MCFG_SOUND_ROUTE(1, "lspeaker", 0.98) - MCFG_SOUND_ROUTE(2, "rspeaker", 0.98) + m_ym->add_route(0, "lspeaker", 0.28); + m_ym->add_route(0, "rspeaker", 0.28); + m_ym->add_route(1, "lspeaker", 0.98); + m_ym->add_route(2, "rspeaker", 0.98); MACHINE_CONFIG_END @@ -2008,10 +1991,9 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(ngarcade_base_state::neogeo_mono) SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_MODIFY("ymsnd") - MCFG_SOUND_ROUTE(0, "speaker", 0.28) - MCFG_SOUND_ROUTE(1, "speaker", 0.49) - MCFG_SOUND_ROUTE(2, "speaker", 0.49) + m_ym->add_route(0, "speaker", 0.28); + m_ym->add_route(1, "speaker", 0.49); + m_ym->add_route(2, "speaker", 0.49); MACHINE_CONFIG_END @@ -2314,8 +2296,7 @@ MACHINE_CONFIG_END ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ ROM_REGION( 0x20000, "cslot1:audiocpu", 0 ) \ ROM_LOAD( name, 0x00000, 0x10000, hash ) \ - ROM_RELOAD( 0x10000, 0x10000 ) \ - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) + ROM_RELOAD( 0x10000, 0x10000 ) #define NEO_BIOS_AUDIO_128K(name, hash) \ NEOGEO_BIOS \ @@ -2323,8 +2304,7 @@ MACHINE_CONFIG_END ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ ROM_REGION( 0x30000, "cslot1:audiocpu", 0 ) \ ROM_LOAD( name, 0x00000, 0x20000, hash ) \ - ROM_RELOAD( 0x10000, 0x20000 ) \ - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) + ROM_RELOAD( 0x10000, 0x20000 ) #define NEO_BIOS_AUDIO_256K(name, hash) \ NEOGEO_BIOS \ @@ -2332,8 +2312,7 @@ MACHINE_CONFIG_END ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ ROM_REGION( 0x50000, "cslot1:audiocpu", 0 ) \ ROM_LOAD( name, 0x00000, 0x40000, hash ) \ - ROM_RELOAD( 0x10000, 0x40000 ) \ - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) + ROM_RELOAD( 0x10000, 0x40000 ) #define NEO_BIOS_AUDIO_512K(name, hash) \ NEOGEO_BIOS \ @@ -2341,9 +2320,7 @@ MACHINE_CONFIG_END ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ ROM_REGION( 0x90000, "cslot1:audiocpu", 0 ) \ ROM_LOAD( name, 0x00000, 0x80000, hash ) \ - ROM_RELOAD( 0x10000, 0x80000 ) \ - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) - + ROM_RELOAD( 0x10000, 0x80000 ) #define NEO_BIOS_AUDIO_ENCRYPTED_128K(name, hash) \ NEOGEO_BIOS \ @@ -2351,24 +2328,23 @@ MACHINE_CONFIG_END ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ ROM_REGION( 0x90000, "cslot1:audiocpu", ROMREGION_ERASEFF ) \ ROM_REGION( 0x80000, "cslot1:audiocrypt", 0 ) \ - ROM_LOAD( name, 0x00000, 0x20000, hash ) \ - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) + ROM_LOAD( name, 0x00000, 0x20000, hash ) + #define NEO_BIOS_AUDIO_ENCRYPTED_256K(name, hash) \ NEOGEO_BIOS \ ROM_REGION( 0x20000, "audiobios", 0 ) \ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ ROM_REGION( 0x90000, "cslot1:audiocpu", ROMREGION_ERASEFF ) \ ROM_REGION( 0x80000, "cslot1:audiocrypt", 0 ) \ - ROM_LOAD( name, 0x00000, 0x40000, hash ) \ - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) + ROM_LOAD( name, 0x00000, 0x40000, hash ) + #define NEO_BIOS_AUDIO_ENCRYPTED_512K(name, hash) \ NEOGEO_BIOS \ ROM_REGION( 0x20000, "audiobios", 0 ) \ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ ROM_REGION( 0x90000, "cslot1:audiocpu", ROMREGION_ERASEFF ) \ ROM_REGION( 0x80000, "cslot1:audiocrypt", 0 ) \ - ROM_LOAD( name, 0x00000, 0x80000, hash ) \ - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) + ROM_LOAD( name, 0x00000, 0x80000, hash ) @@ -2411,8 +2387,6 @@ ROM_START( neogeo ) ROM_REGION( 0x20000, "fixedbios", 0 ) ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) - ROM_REGION( 0x100000, "sprites", ROMREGION_ERASEFF ) ROM_END @@ -2441,10 +2415,6 @@ ROM_START( aes ) ROM_REGION( 0x20000, "fixed", ROMREGION_ERASEFF ) - ROM_REGION( 0x1000000, "ymsnd", ROMREGION_ERASEFF ) - - ROM_REGION( 0x1000000, "ymsnd.deltat", ROMREGION_ERASEFF ) - ROM_REGION( 0x900000, "sprites", ROMREGION_ERASEFF ) ROM_END @@ -6473,7 +6443,6 @@ ROM_START( dragonsh ) ROM_REGION( 0x30000, "cslot1:audiocpu", ROMREGION_ERASEFF ) // not present - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) ROM_REGION( 0x200000, "cslot1:ymsnd", ROMREGION_ERASE00 ) ROM_LOAD( "sram.v1", 0x000000, 0x200000, NO_DUMP ) // was a dead AXS2000PC 2MB sram card, battery dead, data lost. @@ -7099,7 +7068,6 @@ ROM_START( kizuna4p ) /* same cartridge as kizuna - 4-player mode is enabled by ROM_LOAD16_WORD_SWAP_BIOS( 0, "sp-45.sp1",0x00000, 0x080000, CRC(03cc9f6a) SHA1(cdf1f49e3ff2bac528c21ed28449cf35b7957dc1) ) ROM_SYSTEM_BIOS( 1, "japan", "Japan MVS (J3)" ) ROM_LOAD16_WORD_SWAP_BIOS( 1, "japan-j3.bin",0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) ) - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) ROM_REGION( 0x30000, "cslot1:audiocpu", 0 ) ROM_LOAD( "216-m1.m1", 0x00000, 0x20000, CRC(1b096820) SHA1(72852e78c620038f8dafde5e54e02e418c31be9c) ) /* mask rom TC531001 */ @@ -7796,7 +7764,6 @@ ROM_START( irrmaze ) /* MVS ONLY RELEASE */ ROM_REGION16_BE( 0x20000, "mainbios", 0 ) /* special BIOS with trackball support, we only have one Irritating Maze bios and thats asia */ ROM_LOAD16_WORD_SWAP("236-bios.sp1", 0x00000, 0x020000, CRC(853e6b96) SHA1(de369cb4a7df147b55168fa7aaf0b98c753b735e) ) - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) ROM_REGION( 0x30000, "cslot1:audiocpu", 0 ) ROM_LOAD( "236-m1.m1", 0x00000, 0x20000, CRC(880a1abd) SHA1(905afa157aba700e798243b842792e50729b19a0) ) /* TC531001 */ @@ -10944,7 +10911,6 @@ ROM_START( svcboot ) ROM_REGION( 0x20000, "audiobios", 0 ) ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) ROM_REGION( 0x50000, "cslot1:audiocpu", 0 ) ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) ) @@ -10982,7 +10948,6 @@ ROM_START( svcplus ) ROM_REGION( 0x20000, "audiobios", 0 ) ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) ROM_REGION( 0x50000, "cslot1:audiocpu", 0 ) ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) ) @@ -11021,7 +10986,6 @@ ROM_START( svcplusa ) ROM_REGION( 0x20000, "audiobios", 0 ) ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) ROM_REGION( 0x50000, "cslot1:audiocpu", 0 ) ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) ) @@ -11058,7 +11022,6 @@ ROM_START( svcsplus ) ROM_REGION( 0x20000, "audiobios", 0 ) ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) - ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) ROM_REGION( 0x50000, "cslot1:audiocpu", 0 ) ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) ) |