Merge pull request #1022 from ajrhacker/vlm_map

Convert VLM5030 to device_memory_interface; correct region lengths
This commit is contained in:
R. Belmont 2016-07-01 10:52:45 -04:00 committed by GitHub
commit 1b49471f51
13 changed files with 131 additions and 89 deletions

View File

@ -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);

View File

@ -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);

View File

@ -159,14 +159,18 @@ static const int vlm5030_speed_table[8] =
const device_type VLM5030 = &device_creator<vlm5030_device>;
// 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)

View File

@ -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;

View File

@ -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)

View File

@ -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
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, 0x4000, CRC(0c8a3605) SHA1(d886b66d3861c3a90a1825ccf5bf0011831ca366) ) // same data in both halves
ROM_END
ROM_START( manhatan )
@ -335,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
/*
@ -401,29 +417,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 )

View File

@ -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) )

View File

@ -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

View File

@ -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

View File

@ -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
@ -1415,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
@ -1458,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
@ -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

View File

@ -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

View File

@ -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;

View File

@ -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<UINT16> m_spriteram;
optional_shared_ptr<UINT16> m_paletteram;
optional_shared_ptr<UINT8> m_gx400_shared_ram;
optional_shared_ptr<UINT8> m_voiceram;
/* video-related */
tilemap_t *m_background;