From b9032a023abf81c23481ba02d258c1cf1ef26896 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 30 Jun 2016 21:00:45 -0400 Subject: [PATCH 1/2] Convert VLM5030 to device_memory_interface; correct region lengths --- src/devices/bus/msx_cart/konami.cpp | 13 +++++++- src/devices/bus/msx_cart/konami.h | 1 + src/devices/sound/vlm5030.cpp | 42 ++++++++++++------------ src/devices/sound/vlm5030.h | 14 ++++---- src/mame/drivers/ddribble.cpp | 10 ++++-- src/mame/drivers/jailbrek.cpp | 50 ++++++++++++----------------- src/mame/drivers/nemesis.cpp | 39 +++++++++++++--------- src/mame/drivers/punchout.cpp | 13 ++++++-- src/mame/drivers/rockrage.cpp | 6 ++++ src/mame/drivers/trackfld.cpp | 19 +++++++---- src/mame/drivers/yiear.cpp | 7 ++++ src/mame/includes/jailbrek.h | 1 - src/mame/includes/nemesis.h | 2 -- 13 files changed, 129 insertions(+), 88 deletions(-) diff --git a/src/devices/bus/msx_cart/konami.cpp b/src/devices/bus/msx_cart/konami.cpp index d9d129888fd..ed0a7f8b3f9 100644 --- a/src/devices/bus/msx_cart/konami.cpp +++ b/src/devices/bus/msx_cart/konami.cpp @@ -879,11 +879,17 @@ msx_cart_keyboard_master::msx_cart_keyboard_master(const machine_config &mconfig } +static ADDRESS_MAP_START( vlm_map, AS_0, 8, msx_cart_keyboard_master ) + AM_RANGE(0x0000, 0xffff) AM_READ(read_vlm) +ADDRESS_MAP_END + + static MACHINE_CONFIG_FRAGMENT( msx_cart_keyboard_master ) // This is actually incorrect. The sound output is passed back into the MSX machine where it is mixed internally and output through the system 'speaker'. MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("vlm5030", VLM5030, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) MACHINE_CONFIG_END @@ -909,7 +915,6 @@ void msx_cart_keyboard_master::initialize_cartridge() { fatalerror("keyboard_master: Invalid ROM size\n"); } - m_vlm5030->set_rom(&m_rom_vlm5030[0]); } @@ -923,6 +928,12 @@ READ8_MEMBER(msx_cart_keyboard_master::read_cart) } +READ8_MEMBER(msx_cart_keyboard_master::read_vlm) +{ + return m_rom_vlm5030[offset]; +} + + WRITE8_MEMBER(msx_cart_keyboard_master::io_20_w) { m_vlm5030->rst((data & 0x01) ? 1 : 0); diff --git a/src/devices/bus/msx_cart/konami.h b/src/devices/bus/msx_cart/konami.h index e26533bce29..aecbc320f92 100644 --- a/src/devices/bus/msx_cart/konami.h +++ b/src/devices/bus/msx_cart/konami.h @@ -185,6 +185,7 @@ public: virtual DECLARE_READ8_MEMBER(read_cart) override; + DECLARE_READ8_MEMBER(read_vlm); DECLARE_WRITE8_MEMBER(io_20_w); DECLARE_READ8_MEMBER(io_00_r); diff --git a/src/devices/sound/vlm5030.cpp b/src/devices/sound/vlm5030.cpp index d47981affbb..90295f2807e 100644 --- a/src/devices/sound/vlm5030.cpp +++ b/src/devices/sound/vlm5030.cpp @@ -159,14 +159,18 @@ static const int vlm5030_speed_table[8] = const device_type VLM5030 = &device_creator; +// default address map +static ADDRESS_MAP_START( vlm5030, AS_0, 8, vlm5030_device ) + AM_RANGE(0x0000, 0xffff) AM_ROM +ADDRESS_MAP_END + vlm5030_device::vlm5030_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, VLM5030, "VLM5030", tag, owner, clock, "vlm5030", __FILE__), device_sound_interface(mconfig, *this), + device_memory_interface(mconfig, *this), + m_space_config("samples", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(vlm5030)), m_channel(nullptr), m_coeff(nullptr), - m_region(*this, DEVICE_SELF), - m_rom(nullptr), - m_address_mask(0), m_address(0), m_pin_BSY(0), m_pin_ST(0), @@ -198,6 +202,16 @@ vlm5030_device::vlm5030_device(const machine_config &mconfig, const char *tag, d memset(m_x, 0, sizeof(m_x)); } +//------------------------------------------------- +// memory_space_config - return a description of +// any address spaces owned by this device +//------------------------------------------------- + +const address_space_config *vlm5030_device::memory_space_config(address_spacenum spacenum) const +{ + return (spacenum == AS_0) ? &m_space_config : nullptr; +} + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -216,13 +230,8 @@ void vlm5030_device::device_start() device_reset(); m_phase = PH_IDLE; - m_rom = m_region->base(); - m_address_mask = (m_region->bytes() - 1) & 0xffff; - m_channel = machine().sound().stream_alloc(*this, 0, 1, clock() / 440); - /* don't restore "UINT8 *m_rom" when use vlm5030_set_rom() */ - save_item(NAME(m_address)); save_item(NAME(m_pin_BSY)); save_item(NAME(m_pin_ST)); @@ -275,8 +284,8 @@ int vlm5030_device::get_bits(int sbit,int bits) int offset = m_address + (sbit>>3); int data; - data = m_rom[offset&m_address_mask] + - (((int)m_rom[(offset+1)&m_address_mask])*256); + data = space(AS_0).read_byte(offset) | + space(AS_0).read_byte(offset+1)<<8; data >>= (sbit&7); data &= (0xff>>(8-bits)); @@ -296,7 +305,7 @@ int vlm5030_device::parse_frame() m_old_k[i] = m_new_k[i]; /* command byte check */ - cmd = m_rom[m_address&m_address_mask]; + cmd = space(AS_0).read_byte(m_address); if( cmd & 0x01 ) { /* extend frame */ m_new_energy = m_new_pitch = 0; @@ -388,13 +397,6 @@ void vlm5030_device::restore_state() m_current_k[i] = m_old_k[i] + (m_target_k[i] - m_old_k[i]) * interp_effect / FR_SIZE; } -/* set speech rom address */ -// TO DO: rewrite using device_memory_interface to get rid of this ridiculous hack -void vlm5030_device::set_rom(void *speech_rom) -{ - m_rom = (UINT8 *)speech_rom; -} - /* get BSY pin level */ READ_LINE_MEMBER( vlm5030_device::bsy ) { @@ -467,8 +469,8 @@ WRITE_LINE_MEMBER( vlm5030_device::st ) else { /* indirect accedd mode */ table = (m_latch_data&0xfe) + (((int)m_latch_data&1)<<8); - m_address = (((int)m_rom[table&m_address_mask])<<8) - | m_rom[(table+1)&m_address_mask]; + m_address = (space(AS_0).read_byte(table)<<8) + | space(AS_0).read_byte(table+1); #if 0 /* show unsupported parameter message */ if( m_interp_step != 1) diff --git a/src/devices/sound/vlm5030.h b/src/devices/sound/vlm5030.h index 00264e4710c..ca5dca436d7 100644 --- a/src/devices/sound/vlm5030.h +++ b/src/devices/sound/vlm5030.h @@ -6,15 +6,12 @@ #define __VLM5030_H__ class vlm5030_device : public device_t, - public device_sound_interface + public device_sound_interface, public device_memory_interface { public: vlm5030_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); ~vlm5030_device() {} - /* set speech rom address */ - void set_rom(void *speech_rom); - /* get BSY pin level */ DECLARE_READ_LINE_MEMBER( bsy ); @@ -35,10 +32,16 @@ protected: virtual void device_start() override; virtual void device_reset() override; + // device_memory_interface overrides + virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + // configuration state + const address_space_config m_space_config; + // internal state sound_stream * m_channel; @@ -47,9 +50,6 @@ private: /* need to save state */ - required_memory_region m_region; - UINT8 *m_rom; - int m_address_mask; UINT16 m_address; UINT8 m_pin_BSY; UINT8 m_pin_ST; diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp index 68e9cf8af0c..54f269efa4e 100644 --- a/src/mame/drivers/ddribble.cpp +++ b/src/mame/drivers/ddribble.cpp @@ -80,8 +80,6 @@ READ8_MEMBER(ddribble_state::ddribble_vlm5030_busy_r) WRITE8_MEMBER(ddribble_state::ddribble_vlm5030_ctrl_w) { - UINT8 *SPEECH_ROM = memregion("vlm")->base(); - /* b7 : vlm data bus OE */ /* b6 : VLM5030-RST */ @@ -94,7 +92,7 @@ WRITE8_MEMBER(ddribble_state::ddribble_vlm5030_ctrl_w) m_vlm->vcu(data & 0x10 ? 1 : 0); /* b3 : ROM bank select */ - m_vlm->set_rom(&SPEECH_ROM[data & 0x08 ? 0x10000 : 0]); + membank("vlmbank")->set_entry(data & 0x08 ? 1 : 0); /* b2 : SSG-C rc filter enable */ m_filter3->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */ @@ -142,6 +140,10 @@ static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8, ddribble_state ) AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ ADDRESS_MAP_END +static ADDRESS_MAP_START( vlm_map, AS_0, 8, ddribble_state ) + AM_RANGE(0x0000, 0xffff) AM_ROMBANK("vlmbank") +ADDRESS_MAP_END + static INPUT_PORTS_START( ddribble ) PORT_START("P1") KONAMI8_B132(1) @@ -226,6 +228,7 @@ GFXDECODE_END void ddribble_state::machine_start() { membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x2000); + membank("vlmbank")->configure_entries(0, 2, memregion("vlm")->base(), 0x10000); save_item(NAME(m_int_enable_0)); save_item(NAME(m_int_enable_1)); @@ -298,6 +301,7 @@ static MACHINE_CONFIG_START( ddribble, ddribble_state ) MCFG_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) MCFG_FILTER_RC_ADD("filter1", 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) diff --git a/src/mame/drivers/jailbrek.cpp b/src/mame/drivers/jailbrek.cpp index 5d988d24f36..a300bea837a 100644 --- a/src/mame/drivers/jailbrek.cpp +++ b/src/mame/drivers/jailbrek.cpp @@ -157,6 +157,11 @@ static ADDRESS_MAP_START( jailbrek_map, AS_PROGRAM, 8, jailbrek_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END +static ADDRESS_MAP_START( vlm_map, AS_0, 8, jailbrek_state ) + ADDRESS_MAP_GLOBAL_MASK(0x1fff) + AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("vlm", 0x2000) +ADDRESS_MAP_END + static INPUT_PORTS_START( jailbrek ) @@ -279,6 +284,7 @@ static MACHINE_CONFIG_START( jailbrek, jailbrek_state ) MCFG_SOUND_ADD("vlm", VLM5030, VOICE_CLOCK) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) MACHINE_CONFIG_END @@ -288,6 +294,15 @@ MACHINE_CONFIG_END ***************************************************************************/ + /* + Check if the rom used for the speech is not a 2764, but a 27128. If a + 27128 is used then the data is stored in the upper half of the eprom. + (The schematics and board refer to a 2764, but all the boards I have seen + use a 27128. According to the schematics pin 26 is tied high so if a 2764 + is used then the pin is ignored, but if a 27128 is used then pin 26 + represents address line A13.) + */ + ROM_START( jailbrek ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "507p03.11d", 0x8000, 0x4000, CRC(a0b88dfd) SHA1(f999e382b9d3b812fca41f4d0da3ea692fef6b19) ) @@ -310,7 +325,7 @@ ROM_START( jailbrek ) ROM_LOAD( "507j12.6f", 0x0140, 0x0100, CRC(0266c7db) SHA1(a8f21e86e6d974c9bfd92a147689d0e7316d66e2) ) /* sprites lookup */ ROM_REGION( 0x4000, "vlm", 0 ) /* speech rom */ - ROM_LOAD( "507l01.8c", 0x0000, 0x4000, CRC(0c8a3605) SHA1(d886b66d3861c3a90a1825ccf5bf0011831ca366) ) + ROM_LOAD( "507l01.8c", 0x0000, 0x2000, CRC(0c8a3605) SHA1(d886b66d3861c3a90a1825ccf5bf0011831ca366) ) ROM_END ROM_START( manhatan ) @@ -391,8 +406,8 @@ ROM_START( jailbrekb ) ROM_LOAD( "prom.d6", 0x0040, 0x0100, CRC(d4fe5c97) SHA1(972e9dab6c53722545dd3a43e3ada7921e88708b) ) /* char lookup */ ROM_LOAD( "prom.e6", 0x0140, 0x0100, CRC(0266c7db) SHA1(a8f21e86e6d974c9bfd92a147689d0e7316d66e2) ) /* sprites lookup */ - ROM_REGION( 0x2000, "vlm", 0 ) /* speech rom */ - ROM_LOAD( "2.i6", 0x0000, 0x2000, CRC(d91d15e3) SHA1(475fe50aafbf8f2fb79880ef0e2c25158eda5270) ) + ROM_REGION( 0x4000, "vlm", 0 ) /* speech rom */ + ROM_LOAD( "2.i6", 0x2000, 0x4000, CRC(d91d15e3) SHA1(475fe50aafbf8f2fb79880ef0e2c25158eda5270) ) ROM_REGION( 0x0004, "plds", 0 ) ROM_LOAD( "k4.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8 */ @@ -401,29 +416,6 @@ ROM_START( jailbrekb ) ROM_LOAD( "k8.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8 */ ROM_END -DRIVER_INIT_MEMBER(jailbrek_state,jailbrek) -{ - UINT8 *SPEECH_ROM = memregion("vlm")->base(); - int ind; - - /* - Check if the rom used for the speech is not a 2764, but a 27128. If a - 27128 is used then the data is stored in the upper half of the eprom. - (The schematics and board refer to a 2764, but all the boards I have seen - use a 27128. According to the schematics pin 26 is tied high so if a 2764 - is used then the pin is ignored, but if a 27128 is used then pin 26 - represents address line A13.) - */ - - if (memregion("vlm")->bytes() == 0x4000) - { - for (ind = 0; ind < 0x2000; ++ind) - { - SPEECH_ROM[ind] = SPEECH_ROM[ind + 0x2000]; - } - } -} - -GAME( 1986, jailbrek, 0, jailbrek, jailbrek, jailbrek_state, jailbrek, ROT0, "Konami", "Jail Break", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, jailbrekb,jailbrek, jailbrek, jailbrek, jailbrek_state, jailbrek, ROT0, "bootleg","Jail Break (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, manhatan, jailbrek, jailbrek, jailbrek, jailbrek_state, jailbrek, ROT0, "Konami", "Manhattan 24 Bunsyo (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, jailbrek, 0, jailbrek, jailbrek, driver_device, 0, ROT0, "Konami", "Jail Break", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, jailbrekb,jailbrek, jailbrek, jailbrek, driver_device, 0, ROT0, "bootleg","Jail Break (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, manhatan, jailbrek, jailbrek, jailbrek, driver_device, 0, ROT0, "Konami", "Manhattan 24 Bunsyo (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp index 6fac76bf94b..80a7b4fb6fc 100644 --- a/src/mame/drivers/nemesis.cpp +++ b/src/mame/drivers/nemesis.cpp @@ -433,6 +433,12 @@ static ADDRESS_MAP_START( gx400_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0xe405, 0xe405) AM_DEVWRITE("ay2", ay8910_device, data_w) ADDRESS_MAP_END +// gx400 voice data is not in a ROM but in sound RAM at $8000 +static ADDRESS_MAP_START( gx400_vlm_map, AS_0, 8, nemesis_state ) + ADDRESS_MAP_GLOBAL_MASK(0x7ff) + AM_RANGE(0x000, 0x7ff) AM_RAM AM_SHARE("voiceram") +ADDRESS_MAP_END + /******************************************************************************/ static ADDRESS_MAP_START( salamand_map, AS_PROGRAM, 16, nemesis_state ) @@ -555,6 +561,11 @@ static ADDRESS_MAP_START( sal_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0xf000, 0xf000) AM_WRITE(salamand_speech_start_w) ADDRESS_MAP_END +static ADDRESS_MAP_START( salamand_vlm_map, AS_0, 8, nemesis_state ) + ADDRESS_MAP_GLOBAL_MASK(0x3fff) + AM_RANGE(0x0000, 0x3fff) AM_ROM +ADDRESS_MAP_END + static ADDRESS_MAP_START( blkpnthr_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM @@ -611,6 +622,11 @@ static ADDRESS_MAP_START( hcrash_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x190f80, 0x190fff) AM_SHARE("yscroll2") ADDRESS_MAP_END +static ADDRESS_MAP_START( hcrash_vlm_map, AS_0, 8, nemesis_state ) + ADDRESS_MAP_GLOBAL_MASK(0x3fff) + AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("vlm", 0x4000) +ADDRESS_MAP_END + /******************************************************************************/ static INPUT_PORTS_START( nemesis ) @@ -1450,10 +1466,6 @@ void nemesis_state::machine_start() save_item(NAME(m_tilemap_flip)); save_item(NAME(m_flipscreen)); save_item(NAME(m_irq_port_last)); - - /* gx400 voice data is not in a ROM but in sound RAM at $8000 */ - if (m_vlm != nullptr && memregion("vlm")->bytes() == 0x800) - m_vlm->set_rom(m_voiceram); } void nemesis_state::machine_reset() @@ -1584,6 +1596,7 @@ static MACHINE_CONFIG_START( gx400, nemesis_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) + MCFG_DEVICE_ADDRESS_MAP(AS_0, gx400_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -1700,6 +1713,7 @@ static MACHINE_CONFIG_START( rf2_gx400, nemesis_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) + MCFG_DEVICE_ADDRESS_MAP(AS_0, gx400_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -1737,6 +1751,7 @@ static MACHINE_CONFIG_START( salamand, nemesis_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("vlm", VLM5030, 3579545) + MCFG_DEVICE_ADDRESS_MAP(AS_0, salamand_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 2.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 2.50) @@ -1932,6 +1947,7 @@ static MACHINE_CONFIG_START( hcrash, nemesis_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("vlm", VLM5030, 3579545) + MCFG_DEVICE_ADDRESS_MAP(AS_0, hcrash_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) @@ -2024,8 +2040,6 @@ ROM_START( rf2 ) ROM_REGION( 0x0200, "k005289", 0 ) /* 2x 256 byte for 0005289 wavetable data */ ROM_LOAD( "400-a01.fse", 0x00000, 0x0100, CRC(5827b1e8) SHA1(fa8cf5f868cfb08bce203baaebb6c4055ee2a000) ) ROM_LOAD( "400-a02.fse", 0x00100, 0x0100, CRC(2f44f970) SHA1(7ab46f9d5d587665782cefc623b8de0124a6d38a) ) - - ROM_REGION( 0x800, "vlm", ROMREGION_ERASE00 ) /* dummy region to set the correct vlm address mask */ ROM_END ROM_START( twinbee ) @@ -2041,8 +2055,6 @@ ROM_START( twinbee ) ROM_REGION( 0x0200, "k005289", 0 ) /* 2x 256 byte for 0005289 wavetable data */ ROM_LOAD( "400-a01.fse", 0x00000, 0x0100, CRC(5827b1e8) SHA1(fa8cf5f868cfb08bce203baaebb6c4055ee2a000) ) ROM_LOAD( "400-a02.fse", 0x00100, 0x0100, CRC(2f44f970) SHA1(7ab46f9d5d587665782cefc623b8de0124a6d38a) ) - - ROM_REGION( 0x800, "vlm", ROMREGION_ERASE00 ) /* dummy region to set the correct vlm address mask */ ROM_END ROM_START( gradius ) @@ -2058,8 +2070,6 @@ ROM_START( gradius ) ROM_REGION( 0x0200, "k005289", 0 ) /* 2x 256 byte for 0005289 wavetable data */ ROM_LOAD( "400-a01.fse", 0x00000, 0x0100, CRC(5827b1e8) SHA1(fa8cf5f868cfb08bce203baaebb6c4055ee2a000) ) ROM_LOAD( "400-a02.fse", 0x00100, 0x0100, CRC(2f44f970) SHA1(7ab46f9d5d587665782cefc623b8de0124a6d38a) ) - - ROM_REGION( 0x800, "vlm", ROMREGION_ERASE00 ) /* dummy region to set the correct vlm address mask */ ROM_END ROM_START( gwarrior ) @@ -2075,8 +2085,6 @@ ROM_START( gwarrior ) ROM_REGION( 0x0200, "k005289", 0 ) /* 2x 256 byte for 0005289 wavetable data */ ROM_LOAD( "400-a01.fse", 0x00000, 0x0100, CRC(5827b1e8) SHA1(fa8cf5f868cfb08bce203baaebb6c4055ee2a000) ) ROM_LOAD( "400-a02.fse", 0x00100, 0x0100, CRC(2f44f970) SHA1(7ab46f9d5d587665782cefc623b8de0124a6d38a) ) - - ROM_REGION( 0x800, "vlm", ROMREGION_ERASE00 ) /* dummy region to set the correct vlm address mask */ ROM_END ROM_START( salamand ) @@ -2341,7 +2349,7 @@ ROM_START( hcrash ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound */ ROM_LOAD( "790-c09.n2", 0x00000, 0x8000, CRC(a68a8cce) SHA1(a54966b9cbbe37b2be6a2276ee09c81452d9c0ca) ) - ROM_REGION( 0x80000, "vlm", 0 ) /* VLM5030 data data */ + ROM_REGION( 0x08000, "vlm", 0 ) /* VLM5030 data */ ROM_LOAD( "790-c08.j4", 0x04000, 0x04000, CRC(cfb844bc) SHA1(43b7adb6093e707212204118087ef4f79b0dbc1f) ) ROM_CONTINUE( 0x00000, 0x04000 ) /* Board is wired for 27C128, top half of EPROM is blank */ @@ -2359,7 +2367,7 @@ ROM_START( hcrashc ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound */ ROM_LOAD( "790-c09.n2", 0x00000, 0x8000, CRC(a68a8cce) SHA1(a54966b9cbbe37b2be6a2276ee09c81452d9c0ca) ) - ROM_REGION( 0x80000, "vlm", 0 ) /* VLM5030 data data */ + ROM_REGION( 0x08000, "vlm", 0 ) /* VLM5030 data */ ROM_LOAD( "790-c08.j4", 0x04000, 0x04000, CRC(cfb844bc) SHA1(43b7adb6093e707212204118087ef4f79b0dbc1f) ) ROM_CONTINUE( 0x00000, 0x04000 ) /* Board is wired for 27C128, top half of EPROM is blank */ @@ -2712,6 +2720,7 @@ static MACHINE_CONFIG_START( bubsys, nemesis_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) + MCFG_DEVICE_ADDRESS_MAP(AS_0, gx400_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -2731,8 +2740,6 @@ ROM_START( bubsys ) ROM_LOAD( "400a1.2b", 0x000, 0x100, CRC(5827b1e8) SHA1(fa8cf5f868cfb08bce203baaebb6c4055ee2a000) ) ROM_LOAD( "400a2.1b", 0x100, 0x100, CRC(2f44f970) SHA1(7ab46f9d5d587665782cefc623b8de0124a6d38a) ) - ROM_REGION( 0x800, "vlm", ROMREGION_ERASE00 ) /* dummy region to set the correct vlm address mask */ - ROM_REGION( 0x4000, "sram", 0 ) // raw RAM dumps, just for emulation aid, to be removed ... ROM_LOAD( "sram1.ic1", 0x0000, 0x2000, CRC(45fc9453) SHA1(eeb4ff2c2c9d3b6ea9d0f0e8fd4873f2cce2cff9) ) ROM_LOAD( "sram2.ic3", 0x2000, 0x2000, CRC(dda768be) SHA1(e98bae3ccf63eb67193346e9c40257a3ddb88e59) ) diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp index 48619c32e3a..baf9a21a0a5 100644 --- a/src/mame/drivers/punchout.cpp +++ b/src/mame/drivers/punchout.cpp @@ -205,6 +205,12 @@ static ADDRESS_MAP_START( punchout_io_map, AS_IO, 8, punchout_state ) ADDRESS_MAP_END +static ADDRESS_MAP_START( punchout_vlm_map, AS_0, 8, punchout_state ) + ADDRESS_MAP_GLOBAL_MASK(0x3fff) + AM_RANGE(0x0000, 0x3fff) AM_ROM +ADDRESS_MAP_END + + // Super Punch-Out!! comes with an extra security PCB that plugs into the Z80 socket // CHS1-01-EXP, has Z80 CPU, RP5C01, RP5H01 @@ -673,6 +679,7 @@ static MACHINE_CONFIG_START( punchout, punchout_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch2") MCFG_SOUND_ADD("vlm", VLM5030, XTAL_21_4772MHz/6) + MCFG_DEVICE_ADDRESS_MAP(AS_0, punchout_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MACHINE_CONFIG_END @@ -1124,7 +1131,7 @@ ROM_START( spnchout ) ROM_LOAD( "chs1-b-8f_white.8f", 0x1a00, 0x0200, CRC(1663eed7) SHA1(90ff876a6b885f8a80c17531cde8b91864f1a6a5) ) /* B */ ROM_LOAD( "chs1-v.2d", 0x2000, 0x0100, CRC(71dc0d48) SHA1(dd6609f547d74887f520d7e71a1a00317ff181d0) ) /* timing - not used */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for the VLM5030 data */ + ROM_REGION( 0x4000, "vlm", 0 ) /* 16k for the VLM5030 data */ ROM_LOAD( "chs1-c.6p", 0x0000, 0x4000, CRC(ad8b64b8) SHA1(0f1232a10faf71b782f9f6653cca8570243c17e0) ) ROM_END @@ -1270,7 +1277,7 @@ ROM_START( spnchoutj ) ROM_LOAD( "chs1-b-8f_white.8f", 0x1a00, 0x0200, CRC(1663eed7) SHA1(90ff876a6b885f8a80c17531cde8b91864f1a6a5) ) /* B */ ROM_LOAD( "chs1-v.2d", 0x2000, 0x0100, CRC(71dc0d48) SHA1(dd6609f547d74887f520d7e71a1a00317ff181d0) ) /* timing - not used */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for the VLM5030 data */ + ROM_REGION( 0x4000, "vlm", 0 ) /* 16k for the VLM5030 data */ ROM_LOAD( "chs1c6pa.bin", 0x0000, 0x4000, CRC(d05fb730) SHA1(9f4c4c7e5113739312558eff4d3d3e42d513aa31) ) ROM_END @@ -1326,7 +1333,7 @@ ROM_START( armwrest ) ROM_LOAD( "chv1-b.3c", 0x0c00, 0x0100, CRC(c3f92ea2) SHA1(1a82cca1b9a8d9bd4a1d121d8c131a7d0be554bc) ) /* priority encoder - not used */ ROM_LOAD( "chpv-v.2d", 0x0d00, 0x0100, CRC(71dc0d48) SHA1(dd6609f547d74887f520d7e71a1a00317ff181d0) ) /* timing - not used */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for the VLM5030 data */ + ROM_REGION( 0x4000, "vlm", 0 ) /* 16k for the VLM5030 data */ ROM_LOAD( "chv1-c.6p", 0x0000, 0x4000, CRC(31b52896) SHA1(395f59ac38b46042f79e9224ac6bc7d3dc299906) ) ROM_END diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp index 7a988fda984..182c849eec8 100644 --- a/src/mame/drivers/rockrage.cpp +++ b/src/mame/drivers/rockrage.cpp @@ -124,6 +124,11 @@ static ADDRESS_MAP_START( rockrage_sound_map, AS_PROGRAM, 8, rockrage_state ) AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ ADDRESS_MAP_END +static ADDRESS_MAP_START( rockrage_vlm_map, AS_0, 8, rockrage_state ) + ADDRESS_MAP_GLOBAL_MASK(0x7fff) + AM_RANGE(0x0000, 0x7fff) AM_ROM +ADDRESS_MAP_END + /*************************************************************************** Input Ports @@ -285,6 +290,7 @@ static MACHINE_CONFIG_START( rockrage, rockrage_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) + MCFG_DEVICE_ADDRESS_MAP(AS_0, rockrage_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MACHINE_CONFIG_END diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index b3175552f4d..3dd51fb2cf5 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -427,6 +427,11 @@ static ADDRESS_MAP_START( hyprolyb_sound_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0xe004, 0xe004) AM_MIRROR(0x1ff8) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, write) ADDRESS_MAP_END +static ADDRESS_MAP_START( vlm_map, AS_0, 8, trackfld_state ) + ADDRESS_MAP_GLOBAL_MASK(0x1fff) + AM_RANGE(0x0000, 0x1fff) AM_ROM +ADDRESS_MAP_END + static INPUT_PORTS_START( trackfld ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -935,6 +940,7 @@ static MACHINE_CONFIG_START( trackfld, trackfld_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("vlm", VLM5030, VLM_CLOCK) + MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -992,6 +998,7 @@ static MACHINE_CONFIG_START( yieartf, trackfld_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("vlm", VLM5030, VLM_CLOCK) + MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1078,7 +1085,7 @@ ROM_START( trackfld ) ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", 0 ) /* 8k for the VLM5030 data */ ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) ROM_END @@ -1110,7 +1117,7 @@ ROM_START( trackfldnz ) ROM_LOAD( "gold.18d", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ ROM_LOAD( "gold.4j", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", 0 ) /* 8k for the VLM5030 data */ ROM_LOAD( "gold.d9", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) ROM_END @@ -1142,7 +1149,7 @@ ROM_START( trackfldc ) ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", 0 ) /* 8k for the VLM5030 data */ ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) ROM_END @@ -1173,7 +1180,7 @@ ROM_START( hyprolym ) /* GX361 */ ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", 0 ) /* 8k for the VLM5030 data */ ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) /* 361-d15.c09 */ ROM_END @@ -1372,7 +1379,7 @@ ROM_START( mastkin ) ROM_LOAD( "prom.3", 0x0020, 0x0100, NO_DUMP ) /* sprite lookup table */ ROM_LOAD( "prom.2", 0x0120, 0x0100, NO_DUMP ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", 0 ) /* 8k for the VLM5030 data */ ROM_LOAD( "mk2", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) ROM_END @@ -1498,7 +1505,7 @@ ROM_START( reaktor ) ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", 0 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", 0 ) /* 8k for the VLM5030 data */ ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) ROM_END diff --git a/src/mame/drivers/yiear.cpp b/src/mame/drivers/yiear.cpp index 5455b206a16..550e7152f14 100644 --- a/src/mame/drivers/yiear.cpp +++ b/src/mame/drivers/yiear.cpp @@ -157,6 +157,12 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, yiear_state ) ADDRESS_MAP_END +static ADDRESS_MAP_START( vlm_map, AS_0, 8, yiear_state ) + ADDRESS_MAP_GLOBAL_MASK(0x1fff) + AM_RANGE(0x0000, 0x1fff) AM_ROM +ADDRESS_MAP_END + + static INPUT_PORTS_START( yiear ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -301,6 +307,7 @@ static MACHINE_CONFIG_START( yiear, yiear_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */ + MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/includes/jailbrek.h b/src/mame/includes/jailbrek.h index 61eeb440c6b..01f5aef35d0 100644 --- a/src/mame/includes/jailbrek.h +++ b/src/mame/includes/jailbrek.h @@ -51,7 +51,6 @@ public: DECLARE_WRITE8_MEMBER(colorram_w); DECLARE_READ8_MEMBER(speech_r); DECLARE_WRITE8_MEMBER(speech_w); - DECLARE_DRIVER_INIT(jailbrek); TILE_GET_INFO_MEMBER(get_bg_tile_info); virtual void machine_start() override; virtual void machine_reset() override; diff --git a/src/mame/includes/nemesis.h b/src/mame/includes/nemesis.h index 1d86132e94c..c6f37219a07 100644 --- a/src/mame/includes/nemesis.h +++ b/src/mame/includes/nemesis.h @@ -22,7 +22,6 @@ public: m_spriteram(*this, "spriteram"), m_paletteram(*this, "paletteram"), m_gx400_shared_ram(*this, "gx400_shared"), - m_voiceram(*this, "voiceram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_filter1(*this, "filter1"), @@ -49,7 +48,6 @@ public: required_shared_ptr m_spriteram; optional_shared_ptr m_paletteram; optional_shared_ptr m_gx400_shared_ram; - optional_shared_ptr m_voiceram; /* video-related */ tilemap_t *m_background; From cd502b4fdba620de705dcc1a675ae308a366933e Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 1 Jul 2016 09:46:58 -0400 Subject: [PATCH 2/2] Fix VLM loading in jailbrek and clones (nw) --- src/mame/drivers/jailbrek.cpp | 11 ++++++----- src/mame/drivers/trackfld.cpp | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/jailbrek.cpp b/src/mame/drivers/jailbrek.cpp index a300bea837a..60164d7e823 100644 --- a/src/mame/drivers/jailbrek.cpp +++ b/src/mame/drivers/jailbrek.cpp @@ -159,7 +159,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( vlm_map, AS_0, 8, jailbrek_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("vlm", 0x2000) + AM_RANGE(0x0000, 0x1fff) AM_ROM ADDRESS_MAP_END @@ -325,7 +325,7 @@ ROM_START( jailbrek ) ROM_LOAD( "507j12.6f", 0x0140, 0x0100, CRC(0266c7db) SHA1(a8f21e86e6d974c9bfd92a147689d0e7316d66e2) ) /* sprites lookup */ ROM_REGION( 0x4000, "vlm", 0 ) /* speech rom */ - ROM_LOAD( "507l01.8c", 0x0000, 0x2000, CRC(0c8a3605) SHA1(d886b66d3861c3a90a1825ccf5bf0011831ca366) ) + ROM_LOAD( "507l01.8c", 0x0000, 0x4000, CRC(0c8a3605) SHA1(d886b66d3861c3a90a1825ccf5bf0011831ca366) ) // same data in both halves ROM_END ROM_START( manhatan ) @@ -350,7 +350,8 @@ ROM_START( manhatan ) ROM_LOAD( "507j12.6f", 0x0140, 0x0100, CRC(0266c7db) SHA1(a8f21e86e6d974c9bfd92a147689d0e7316d66e2) ) /* sprites lookup */ ROM_REGION( 0x4000, "vlm", 0 ) /* speech rom */ - ROM_LOAD( "507p01.8c", 0x0000, 0x4000, CRC(973fa351) SHA1(ac360d05ed4d03334e00c80e70d5ae939d93af5f) ) + ROM_LOAD( "507p01.8c", 0x2000, 0x2000, CRC(973fa351) SHA1(ac360d05ed4d03334e00c80e70d5ae939d93af5f) ) // top half is blank + ROM_CONTINUE( 0x0000, 0x2000 ) ROM_END /* @@ -406,8 +407,8 @@ ROM_START( jailbrekb ) ROM_LOAD( "prom.d6", 0x0040, 0x0100, CRC(d4fe5c97) SHA1(972e9dab6c53722545dd3a43e3ada7921e88708b) ) /* char lookup */ ROM_LOAD( "prom.e6", 0x0140, 0x0100, CRC(0266c7db) SHA1(a8f21e86e6d974c9bfd92a147689d0e7316d66e2) ) /* sprites lookup */ - ROM_REGION( 0x4000, "vlm", 0 ) /* speech rom */ - ROM_LOAD( "2.i6", 0x2000, 0x4000, CRC(d91d15e3) SHA1(475fe50aafbf8f2fb79880ef0e2c25158eda5270) ) + ROM_REGION( 0x2000, "vlm", 0 ) /* speech rom */ + ROM_LOAD( "2.i6", 0x0000, 0x2000, CRC(d91d15e3) SHA1(475fe50aafbf8f2fb79880ef0e2c25158eda5270) ) ROM_REGION( 0x0004, "plds", 0 ) ROM_LOAD( "k4.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8 */ diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index 3dd51fb2cf5..2884a752704 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -1422,7 +1422,7 @@ ROM_START( wizzquiz ) ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", ROMREGION_ERASE00 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", ROMREGION_ERASE00 ) /* 8k for the VLM5030 data */ /* not used */ ROM_END @@ -1465,7 +1465,7 @@ ROM_START( wizzquiza ) ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ - ROM_REGION( 0x10000, "vlm", ROMREGION_ERASE00 ) /* 64k for speech rom */ + ROM_REGION( 0x2000, "vlm", ROMREGION_ERASE00 ) /* 8k for the VLM5030 data */ /* not used */ ROM_END