qs1000.cpp : Convert set_irq, serial_in into WRITE_LINE_MEMBER (#3294)

eolith.cpp, ghosteo.cpp, limenko.cpp, vamphalf.cpp, vegaeo.cpp : Modernize soundlatches
eolith.cpp, eolith16.cpp, ghosteo.cpp, limenko.cpp, vamphalf.cpp, vegaeo.cpp : Replace user* -> saner ROM areas
This commit is contained in:
cam900 2018-03-04 16:31:00 +09:00 committed by Vas Crabb
parent 7e7dedea6e
commit f555e1627b
9 changed files with 191 additions and 278 deletions

View File

@ -262,20 +262,16 @@ void qs1000_device::device_start()
//-------------------------------------------------
// serial_in - send data to the chip
//-------------------------------------------------
void qs1000_device::serial_in(uint8_t data)
WRITE_LINE_MEMBER(qs1000_device::serial_in)
{
m_serial_data_in = data;
// Signal to the CPU that data is available
m_cpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE);
m_cpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(qs1000_device::serial_w), this), data);
}
//-------------------------------------------------
// set_irq - interrupt the internal CPU
//-------------------------------------------------
void qs1000_device::set_irq(int state)
WRITE_LINE_MEMBER(qs1000_device::set_irq)
{
// Signal to the CPU that data is available
m_cpu->set_input_line(MCS51_INT1_LINE, state ? ASSERT_LINE : CLEAR_LINE);
@ -292,6 +288,19 @@ READ8_MEMBER(qs1000_device::data_to_i8052)
}
//-------------------------------------------------
// serial_w - write serial data to the chip
//-------------------------------------------------
TIMER_CALLBACK_MEMBER(qs1000_device::serial_w)
{
m_serial_data_in = param;
// Signal to the CPU that data is available
m_cpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE);
m_cpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE);
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------

View File

@ -68,8 +68,8 @@ public:
//template <class Object> devcb_base &set_serial_w_callback(Object &&cb) { return m_serial_w_cb.set_callback(std::forward<Object>(cb)); }
// external
void serial_in(uint8_t data);
void set_irq(int state);
DECLARE_WRITE_LINE_MEMBER( serial_in );
DECLARE_WRITE_LINE_MEMBER( set_irq );
DECLARE_WRITE8_MEMBER( wave_w );
@ -102,6 +102,7 @@ protected:
virtual void rom_bank_updated() override;
private:
TIMER_CALLBACK_MEMBER( serial_w );
static constexpr unsigned QS1000_CHANNELS = 32;
static constexpr offs_t QS1000_ADDRESS_MASK = 0x00ffffff;

View File

@ -160,28 +160,12 @@ READ32_MEMBER(eolith_state::hidctch3_pen2_r)
return xpos + (ypos*168*2);
}
WRITE32_MEMBER( eolith_state::sound_w )
{
// printf("CPU Command: %x\n", m_sound_data);
m_sound_data = data;
m_soundcpu->set_input_line(MCS51_INT0_LINE, ASSERT_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(250));
}
/*************************************
*
* Sound CPU
*
*************************************/
READ8_MEMBER( eolith_state::sound_cmd_r )
{
m_soundcpu->set_input_line(MCS51_INT0_LINE, CLEAR_LINE);
return m_sound_data;
}
WRITE8_MEMBER( eolith_state::sound_p1_w )
{
// .... xxxx - Data ROM bank (32kB)
@ -220,19 +204,6 @@ WRITE8_MEMBER( eolith_state::qs1000_p1_w )
}
/*************************************
*
* Sound CPU <-> QS1000 CPU
*
*************************************/
WRITE8_MEMBER(eolith_state::soundcpu_to_qs1000)
{
m_qs1000->serial_in(data);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(250));
}
/*************************************
*
* Main CPU memory map
@ -245,10 +216,10 @@ ADDRESS_MAP_START(eolith_state::eolith_map)
AM_RANGE(0x90000000, 0x9003ffff) AM_READWRITE(eolith_vram_r, eolith_vram_w)
AM_RANGE(0xfc000000, 0xfc000003) AM_READ(eolith_custom_r)
AM_RANGE(0xfc400000, 0xfc400003) AM_WRITE(systemcontrol_w)
AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(sound_w)
AM_RANGE(0xfc800000, 0xfc800003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
AM_RANGE(0xfca00000, 0xfca00003) AM_READ_PORT("DSW1")
AM_RANGE(0xfcc00000, 0xfcc0005b) AM_WRITENOP // crt registers ?
AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("user1", 0)
AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("maindata", 0)
AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
ADDRESS_MAP_END
@ -265,7 +236,7 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(eolith_state::sound_io_map)
AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("sound_bank")
AM_RANGE(0x8000, 0x8000) AM_READ(sound_cmd_r)
AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -553,7 +524,7 @@ MACHINE_CONFIG_START(eolith_state::eolith45)
MCFG_CPU_PROGRAM_MAP(sound_prg_map)
MCFG_CPU_IO_MAP(sound_io_map)
MCFG_MCS51_PORT_P1_OUT_CB(WRITE8(eolith_state, sound_p1_w))
MCFG_MCS51_SERIAL_TX_CB(WRITE8(eolith_state, soundcpu_to_qs1000)) // Sound CPU -> QS1000 CPU serial link
MCFG_MCS51_SERIAL_TX_CB(DEVWRITE8("qs1000", qs1000_device, serial_in)) // Sound CPU -> QS1000 CPU serial link
MCFG_MACHINE_RESET_OVERRIDE(eolith_state,eolith)
@ -581,6 +552,9 @@ MACHINE_CONFIG_START(eolith_state::eolith45)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", MCS51_INT0_LINE))
MCFG_SOUND_ADD("qs1000", QS1000, XTAL(24'000'000))
MCFG_QS1000_EXTERNAL_ROM(true)
MCFG_QS1000_IN_P1_CB(READ8(eolith_state, qs1000_p1_r))
@ -667,7 +641,7 @@ ROM_START( ironfort )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u43", 0x00000, 0x80000, CRC(29f55825) SHA1(e048ec0f5d83d4b64aa48d706fa0947afcdc1a3d) ) /* 27C040 eprom with no label */
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "if00-00.u39", 0x0000000, 0x400000, CRC(63b74601) SHA1(c111ecf55359e9005a3ec1fe1202a34624f8b242) )
ROM_LOAD32_WORD_SWAP( "if00-01.u34", 0x0000002, 0x400000, CRC(890470b3) SHA1(57df122ab01744b47ebd38554eb6a7d780977be2) )
ROM_LOAD32_WORD_SWAP( "if00-02.u40", 0x0800000, 0x400000, CRC(63b5cca5) SHA1(4ec8b813c7e465f659a4a2361ddfbad763bf6e6a) )
@ -694,7 +668,7 @@ ROM_START( ironfortc )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u43.bin", 0x00000, 0x80000, CRC(f1f19c9a) SHA1(98531ecedd1277e6d10395794a66d615df7ddbd6) ) /* 27C040 eprom with no label */
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "if00-00.u39", 0x0000000, 0x400000, CRC(63b74601) SHA1(c111ecf55359e9005a3ec1fe1202a34624f8b242) )
ROM_LOAD32_WORD_SWAP( "if00-01.u34", 0x0000002, 0x400000, CRC(890470b3) SHA1(57df122ab01744b47ebd38554eb6a7d780977be2) )
ROM_LOAD32_WORD_SWAP( "if00-02.u40", 0x0800000, 0x400000, CRC(63b5cca5) SHA1(4ec8b813c7e465f659a4a2361ddfbad763bf6e6a) )
@ -720,7 +694,7 @@ ROM_START( linkypip )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u43.bin", 0x00000, 0x80000, CRC(9ef937de) SHA1(b121d683898311baaa1e2aba199dec0c1d59f55a) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "lp00.u39", 0x0000000, 0x400000, CRC(c1e71bbc) SHA1(f54b374b05ce6044944ba10ba8a634eb661b092d) )
ROM_LOAD32_WORD_SWAP( "lp01.u34", 0x0000002, 0x400000, CRC(30780c08) SHA1(15d7bf1397c25eb813c79fc9cea88ac427b1d9c7) )
ROM_LOAD32_WORD_SWAP( "lp02.u40", 0x0800000, 0x400000, CRC(3381bd2c) SHA1(78b30f3940e5c9887ab4ad398bde356671deabb5) )
@ -746,7 +720,7 @@ ROM_START( hidnctch )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "hc_u43.bin", 0x00000, 0x80000, CRC(635b4478) SHA1(31ea4a9725e0c329447c7d221c22494c905f6940) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "hc0_u39.bin", 0x0000000, 0x400000, CRC(eefb6add) SHA1(a0f6f2cf86699a666be0647274d8c9381782640d) )
ROM_LOAD32_WORD_SWAP( "hc1_u34.bin", 0x0000002, 0x400000, CRC(482f3e52) SHA1(7a527c6af4c80e10cc25219a04ccf7c7ea1b23af) )
ROM_LOAD32_WORD_SWAP( "hc2_u40.bin", 0x0800000, 0x400000, CRC(914a1544) SHA1(683cb007ace50d1ba88253da6ad71dc3a395299d) )
@ -816,7 +790,7 @@ ROM_START( nhidctch )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u43", 0x00000, 0x80000, CRC(44296fdb) SHA1(1faf7061342d4c86f6ca416d922cb98ffb72f250) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "hc000.u39", 0x0000000, 0x400000, CRC(eefb6add) SHA1(a0f6f2cf86699a666be0647274d8c9381782640d) )
ROM_LOAD32_WORD_SWAP( "hc001.u34", 0x0000002, 0x400000, CRC(482f3e52) SHA1(7a527c6af4c80e10cc25219a04ccf7c7ea1b23af) )
ROM_LOAD32_WORD_SWAP( "hc002.u40", 0x0800000, 0x400000, CRC(914a1544) SHA1(683cb007ace50d1ba88253da6ad71dc3a395299d) )
@ -889,7 +863,7 @@ ROM_START( hidctch2 )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u43", 0x00000, 0x80000, CRC(326d1dbc) SHA1(b33434cd263dc40ee2b6562f72a87a0439a9833e) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00", 0x0000000, 0x200000, CRC(c6b1bc84) SHA1(205d1dc5079562b11cef72fef25a3c570eaecf78) )
ROM_LOAD32_WORD_SWAP( "01", 0x0000002, 0x200000, CRC(5a1c1ab3) SHA1(3c07a98f9ea8b30bac5a260403e688314fd12abb) )
ROM_LOAD32_WORD_SWAP( "02", 0x0400000, 0x200000, CRC(3f7815aa) SHA1(ed46cbe03fde5cab15e004812036b0aaa00fc628) )
@ -926,7 +900,7 @@ ROM_START( hidctch2a )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "hc2j.u43", 0x00000, 0x80000, CRC(8d3b8394) SHA1(29093ee13eb3609abc670d6722f3095f03045af6) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00", 0x0000000, 0x200000, CRC(c6b1bc84) SHA1(205d1dc5079562b11cef72fef25a3c570eaecf78) )
ROM_LOAD32_WORD_SWAP( "01", 0x0000002, 0x200000, CRC(5a1c1ab3) SHA1(3c07a98f9ea8b30bac5a260403e688314fd12abb) )
ROM_LOAD32_WORD_SWAP( "02", 0x0400000, 0x200000, CRC(3f7815aa) SHA1(ed46cbe03fde5cab15e004812036b0aaa00fc628) )
@ -963,7 +937,7 @@ ROM_START( hidnc2k )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "27c040.u43", 0x00000, 0x80000, CRC(05063136) SHA1(9c1b3066a571b1e52d57cfe790a55257b37d5b89) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "hc2000-0.u39", 0x0000000, 0x400000, CRC(10d4fd9a) SHA1(8ecbc0708a41d27ddd5fa1b01eed6411a4f3e6ec) )
ROM_LOAD32_WORD_SWAP( "hc2000-1.u34", 0x0000002, 0x400000, CRC(6e029c0a) SHA1(e217f6269e1c2a38f414c7220005e8bb6c636c57) )
ROM_LOAD32_WORD_SWAP( "hc2000-2.u40", 0x0800000, 0x400000, CRC(1dc3fb7f) SHA1(c0cc5cac0be5e4e01fa1eaa9dc30f652431263ce) )
@ -1060,7 +1034,7 @@ ROM_START( raccoon )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "racoon-u.43", 0x00000, 0x80000, CRC(711ee026) SHA1(c55dfaa24cbaa7a613657cfb25e7f0085f1e4cbf) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "racoon.u10", 0x0000000, 0x200000, CRC(f702390e) SHA1(47520ba0e6d3f044136a517ebbec7426a66ce33d) )
ROM_LOAD32_WORD_SWAP( "racoon.u1", 0x0000002, 0x200000, CRC(49775125) SHA1(2b8ee9dd767465999c828d65bb02b8aaad94177c) )
ROM_LOAD32_WORD_SWAP( "racoon.u11", 0x0400000, 0x200000, CRC(3f23f368) SHA1(eb1ea51def2cde5e7e4f334888294b794aa03dfc) )
@ -1089,7 +1063,7 @@ ROM_START( landbrk )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom3.u43", 0x00000, 0x80000, CRC(8429189a) SHA1(f38e4792426ca2c138c44053a6c7525906281dff) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00.bin", 0x0000000, 0x200000, CRC(a803aace) SHA1(52a9e27b4f400767a953aa01321a9fa7cdbf3976) )
ROM_LOAD32_WORD_SWAP( "01.bin", 0x0000002, 0x200000, CRC(439c95cc) SHA1(18830024b2e43f0a89a7bd32841fbcb574e50fc6) )
ROM_LOAD32_WORD_SWAP( "02.bin", 0x0400000, 0x200000, CRC(a0c2828c) SHA1(967dc467d25f093749aa0146ebf54959c9803b92) )
@ -1126,7 +1100,7 @@ ROM_START( landbrka )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "lb_1.u43", 0x00000, 0x80000, CRC(f8bbcf44) SHA1(ad85a890ae2f921cd08c1897b4d9a230ccf9e072) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "lb2-000.u39", 0x0000000, 0x400000, CRC(b37faf7a) SHA1(30e9af3957ada7c72d85f55add221c2e9b3ea823) )
ROM_LOAD32_WORD_SWAP( "lb2-001.u34", 0x0000002, 0x400000, CRC(07e620c9) SHA1(19f95316208fb4e52cef78f18c5d93460a644566) )
ROM_LOAD32_WORD_SWAP( "lb2-002.u40", 0x0800000, 0x400000, CRC(3bb4bca6) SHA1(115029be4a4e322549a35f3ae5093ec161e9a421) )
@ -1155,7 +1129,7 @@ ROM_START( landbrkb )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "lb_040.u43", 0x00000, 0x80000, CRC(a81d681b) SHA1(e92b0217a86271dd1e51bef75f5b4fda7a8415ed) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "lb2-000.u39", 0x0000000, 0x400000, CRC(b37faf7a) SHA1(30e9af3957ada7c72d85f55add221c2e9b3ea823) )
ROM_LOAD32_WORD_SWAP( "lb2-001.u34", 0x0000002, 0x400000, CRC(07e620c9) SHA1(19f95316208fb4e52cef78f18c5d93460a644566) )
ROM_LOAD32_WORD_SWAP( "lb2-002.u40", 0x0800000, 0x400000, CRC(3bb4bca6) SHA1(115029be4a4e322549a35f3ae5093ec161e9a421) )
@ -1185,7 +1159,7 @@ ROM_START( penfan )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "pfg.u43", 0x00000, 0x80000, CRC(84977191) SHA1(2566bcbf0815e02d27cad6f2118eb3a1ed7e9ebc) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00.u5", 0x0000000, 0x200000, CRC(77ce2855) SHA1(715d12db11871750b886406673a6f3934b0b1a57) )
ROM_LOAD32_WORD_SWAP( "01.u1", 0x0000002, 0x200000, CRC(a7d7299d) SHA1(e0c4d399ac0d2525d80249d908c72a51b701e9b0) )
ROM_LOAD32_WORD_SWAP( "02.u6", 0x0400000, 0x200000, CRC(79b05a66) SHA1(8e6ffa751267147679fde84b5c8b9ef954e4a1d0) )
@ -1222,7 +1196,7 @@ ROM_START( penfana )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "27c040.u43", 0x00000, 0x80000, CRC(a7637f8b) SHA1(aadfaa03b43cd325ddbc04fe7b60ca704a9891a5) ) /* no rom label or sticker */
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00.u5", 0x0000000, 0x200000, CRC(77ce2855) SHA1(715d12db11871750b886406673a6f3934b0b1a57) )
ROM_LOAD32_WORD_SWAP( "01.u1", 0x0000002, 0x200000, CRC(a7d7299d) SHA1(e0c4d399ac0d2525d80249d908c72a51b701e9b0) )
ROM_LOAD32_WORD_SWAP( "02.u6", 0x0400000, 0x200000, CRC(79b05a66) SHA1(8e6ffa751267147679fde84b5c8b9ef954e4a1d0) )
@ -1260,7 +1234,7 @@ ROM_START( stealsee )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "ss.u43", 0x00000, 0x80000, CRC(b0a1a965) SHA1(e13f336035a266da66ca8f95b92cac7295323989) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00.u5", 0x0000000, 0x200000, CRC(59d247a7) SHA1(a206cbb27f8054baca76dc72e6f45be4c9a914b1) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_LOAD32_WORD_SWAP( "01.u1", 0x0000002, 0x200000, CRC(255764f2) SHA1(b1d25898961ddbed9865620269cb0cd0ab506cd9) )
ROM_LOAD32_WORD_SWAP( "02.u6", 0x0400000, 0x200000, CRC(ebc33180) SHA1(7f59263754e9e2c32a5942daed60770dc4d4f6b5) )
@ -1298,7 +1272,7 @@ ROM_START( candy )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "cc.u43", 0x00000, 0x80000, CRC(837c9967) SHA1(ccb38ec986d7cd598a48ee1c3806566c360fd783) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00.u5", 0x0000000, 0x200000, CRC(04bc53e4) SHA1(093651c4d4148dc36260d7a6cd8c322ba9a63195) )
ROM_LOAD32_WORD_SWAP( "01.u1", 0x0000002, 0x200000, CRC(288229f1) SHA1(56e3ae101f8acc5d1e9bcc28b74ee48aa456bf28) )
ROM_LOAD32_WORD_SWAP( "02.u6", 0x0400000, 0x200000, CRC(5d3b130c) SHA1(e247d0dd3a1909296c2a754733f10170d264825c) )
@ -1335,7 +1309,7 @@ ROM_START( fort2b )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "1.u43", 0x00000, 0x80000, CRC(b2279485) SHA1(022591b260be28820f04a1c1fdd61cb9b68d6703) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00.u5", 0x0000000, 0x200000, CRC(4437b595) SHA1(b87518110955947264d93b1f377289f1741ce5dc) )
ROM_LOAD32_WORD_SWAP( "01.u1", 0x0000002, 0x200000, CRC(2a410aed) SHA1(def822ead339180aa3e0ebb266b6a6eb1271a2ae) )
ROM_LOAD32_WORD_SWAP( "02.u6", 0x0400000, 0x200000, CRC(12f0e4c0) SHA1(fa1e1c3510af61b4058507f1aca801377cafffb4) )
@ -1372,7 +1346,7 @@ ROM_START( fort2ba )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "ftii012.u43", 0x00000, 0x80000, CRC(6424e05f) SHA1(2f02f103de180561e372ce897f8410a11c4cb58d) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "ftii000.u39", 0x0000000, 0x400000, CRC(be74121d) SHA1(ee072044f84e11c48537d79bd9766bf8cc28f002) )
ROM_LOAD32_WORD_SWAP( "ftii004.u34", 0x0000002, 0x400000, CRC(d4399f98) SHA1(88f5a1097f44d2070cfc96c9cd83342d1975dcfe) )
ROM_LOAD32_WORD_SWAP( "ftii001.u40", 0x0800000, 0x400000, CRC(35c396ff) SHA1(d05dee021e1a93e224b05949c18a5107e0aceb4d) )
@ -1402,7 +1376,7 @@ ROM_START( puzzlekg )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u43.bin", 0x00000, 0x80000, CRC(c3db7424) SHA1(5ee2be0f06fddb0c74fc6e82679b275cc4e86bcc) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "u10.bin", 0x0000000, 0x200000, CRC(c9c3064b) SHA1(10a46d4674c1ef64e50dfcb5eb44953206fe6163) )
ROM_LOAD32_WORD_SWAP( "u1.bin", 0x0000002, 0x200000, CRC(6b4b369d) SHA1(3f528e557f2846d7c50afa332797e8bc541eeba8) )
ROM_LOAD32_WORD_SWAP( "u11.bin", 0x0400000, 0x200000, CRC(92615236) SHA1(dc602cb4c2a3d671cc60b075b399cf3efb67d3d3) )
@ -1488,7 +1462,7 @@ ROM_START( hidctch3 )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u43", 0x00000, 0x80000, CRC(7b861339) SHA1(fca7d47d7d538774ec6462deebc0a367ac073b67) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00", 0x0000000, 0x200000, CRC(7fe5cd46) SHA1(8190614a1cf1df6472590b43036200a1075bfe58) )
ROM_LOAD32_WORD_SWAP( "01", 0x0000002, 0x200000, CRC(09463ec9) SHA1(0287da2e65521a61c06ad927e913243d023f0d72) )
ROM_LOAD32_WORD_SWAP( "02", 0x0400000, 0x200000, CRC(e5a08ebf) SHA1(0ce2414b547a027710ee4ea8f890cc2fa23dff9a) )
@ -1531,9 +1505,7 @@ DRIVER_INIT_MEMBER(eolith_state,eolith)
init_speedup();
// Configure the sound ROM banking
membank("sound_bank")->configure_entries(0, 16, memregion("sounddata")->base(), 0x8000);
save_item(NAME(m_sound_data));
m_sndbank->configure_entries(0, 16, memregion("sounddata")->base(), 0x8000);
}
DRIVER_INIT_MEMBER(eolith_state,landbrk)

View File

@ -78,14 +78,14 @@ ADDRESS_MAP_START(eolith16_state::eolith16_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM
AM_RANGE(0x50000000, 0x5000ffff) AM_READWRITE(vram_r, vram_w)
AM_RANGE(0x90000000, 0x9000002f) AM_WRITENOP //?
AM_RANGE(0xff000000, 0xff1fffff) AM_ROM AM_REGION("user2", 0)
AM_RANGE(0xff000000, 0xff1fffff) AM_ROM AM_REGION("maindata", 0)
AM_RANGE(0xffe40000, 0xffe40001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0xffe80000, 0xffe80001) AM_WRITE(eeprom_w)
AM_RANGE(0xffea0000, 0xffea0001) AM_READ(eolith16_custom_r)
AM_RANGE(0xffea0002, 0xffea0003) AM_READ_PORT("SYSTEM")
AM_RANGE(0xffec0000, 0xffec0001) AM_READNOP // not used?
AM_RANGE(0xffec0002, 0xffec0003) AM_READ_PORT("INPUTS")
AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
ADDRESS_MAP_END
static INPUT_PORTS_START( eolith16 )
@ -251,10 +251,10 @@ Notes:
*/
ROM_START( klondkp )
ROM_REGION16_BE( 0x80000, "user1", 0 ) /* E1-16T program code */
ROM_REGION16_BE( 0x80000, "maincpu", 0 ) /* E1-16T program code */
ROM_LOAD( "kd.u5", 0x000000, 0x080000, CRC(591f0c73) SHA1(a9f338204c77a724fa6a6e08d78ca89bd5191aba) )
ROM_REGION16_BE( 0x200000, "user2", 0 ) /* gfx data */
ROM_REGION16_BE( 0x200000, "maindata", 0 ) /* gfx data */
ROM_LOAD16_WORD_SWAP( "kd.u31", 0x000000, 0x200000, CRC(e5dd12b5) SHA1(0a0cd75cbcdccce3575e5a58ba09c88452e1a5ee) )
ROM_REGION( 0x80000, "oki", 0 ) /* oki samples */

View File

@ -88,13 +88,15 @@ class ghosteo_state : public driver_device
{
public:
ghosteo_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_qs1000(*this, "qs1000"),
m_i2cmem(*this, "i2cmem"),
m_s3c2410(*this, "s3c2410"),
m_soundlatch(*this, "soundlatch"),
m_system_memory(*this, "systememory") { }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_qs1000(*this, "qs1000")
, m_i2cmem(*this, "i2cmem")
, m_s3c2410(*this, "s3c2410")
, m_soundlatch(*this, "soundlatch")
, m_system_memory(*this, "systememory")
, m_flash(*this, "flash")
{ }
required_device<cpu_device> m_maincpu;
required_device<qs1000_device> m_qs1000;
@ -102,22 +104,19 @@ public:
required_device<s3c2410_device> m_s3c2410;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<uint32_t> m_system_memory;
required_region_ptr<uint8_t> m_flash;
int m_security_count;
uint32_t m_bballoon_port[20];
struct nand_t m_nand;
DECLARE_READ32_MEMBER(bballoon_speedup_r);
DECLARE_READ32_MEMBER(touryuu_port_10000000_r);
DECLARE_WRITE32_MEMBER(soundlatch_w);
DECLARE_READ8_MEMBER(qs1000_p1_r);
DECLARE_WRITE8_MEMBER(qs1000_p1_w);
DECLARE_WRITE8_MEMBER(qs1000_p2_w);
DECLARE_WRITE8_MEMBER(qs1000_p3_w);
int m_rom_pagesize;
uint8_t* m_flash;
DECLARE_DRIVER_INIT(touryuu);
DECLARE_DRIVER_INIT(bballoon);
virtual void machine_start() override;
@ -164,11 +163,6 @@ NAND Flash Controller (4KB internal buffer)
24-ch external interrupts Controller (Wake-up source 16-ch)
*/
READ8_MEMBER( ghosteo_state::qs1000_p1_r )
{
return m_soundlatch->read(space, 0);
}
WRITE8_MEMBER( ghosteo_state::qs1000_p1_w )
{
}
@ -186,7 +180,7 @@ WRITE8_MEMBER( ghosteo_state::qs1000_p3_w )
membank("qs1000:bank")->set_entry(data & 0x07);
if (!BIT(data, 5))
m_qs1000->set_irq(CLEAR_LINE);
m_soundlatch->acknowledge_w(space, 0, !BIT(data, 5));
}
@ -431,7 +425,7 @@ ADDRESS_MAP_START(ghosteo_state::bballoon_map)
AM_RANGE(0x10000000, 0x10000003) AM_READ_PORT("10000000")
AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
AM_RANGE(0x10300000, 0x10300003) AM_WRITE(soundlatch_w)
AM_RANGE(0x10300000, 0x10300003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
ADDRESS_MAP_END
@ -439,7 +433,7 @@ ADDRESS_MAP_START(ghosteo_state::touryuu_map)
AM_RANGE(0x10000000, 0x10000003) AM_READ(touryuu_port_10000000_r)
AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
AM_RANGE(0x10300000, 0x10300003) AM_WRITE(soundlatch_w)
AM_RANGE(0x10300000, 0x10300003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
ADDRESS_MAP_END
@ -594,18 +588,8 @@ READ32_MEMBER(ghosteo_state::bballoon_speedup_r)
return ret;
}
WRITE32_MEMBER(ghosteo_state::soundlatch_w)
{
m_soundlatch->write(space, 0, data);
m_qs1000->set_irq(ASSERT_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
void ghosteo_state::machine_start()
{
m_flash = (uint8_t *)memregion( "user1")->base();
// Set up the QS1000 program ROM banking, taking care not to overlap the internal RAM
machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
membank("qs1000:bank")->configure_entries(0, 8, memregion("qs1000:cpu")->base()+0x100, 0x10000);
@ -654,10 +638,12 @@ MACHINE_CONFIG_START(ghosteo_state::ghosteo)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("qs1000", qs1000_device, set_irq))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_SOUND_ADD("qs1000", QS1000, XTAL(24'000'000))
MCFG_QS1000_EXTERNAL_ROM(true)
MCFG_QS1000_IN_P1_CB(READ8(ghosteo_state, qs1000_p1_r))
MCFG_QS1000_IN_P1_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_QS1000_OUT_P1_CB(WRITE8(ghosteo_state, qs1000_p1_w))
MCFG_QS1000_OUT_P2_CB(WRITE8(ghosteo_state, qs1000_p2_w))
MCFG_QS1000_OUT_P3_CB(WRITE8(ghosteo_state, qs1000_p3_w))
@ -728,7 +714,7 @@ Notes:
// The NAND dumps are missing the ECC data. We calculate it on the fly, because the games require it, but really it should be dumped hence the 'BAD DUMP' flags
ROM_START( bballoon )
ROM_REGION( 0x2000000, "user1", 0 ) /* ARM 32 bit code */
ROM_REGION( 0x2000000, "flash", 0 ) /* ARM 32 bit code */
ROM_LOAD( "flash.u1", 0x000000, 0x2000000, BAD_DUMP CRC(73285634) SHA1(4d0210c1bebdf3113a99978ffbcd77d6ee854168) ) // missing ECC data
// banked every 0x10000 bytes ?
@ -741,7 +727,7 @@ ROM_START( bballoon )
ROM_END
ROM_START( hapytour ) /* Same hardware: GHOST Ver1.1 2003.03.28 */
ROM_REGION( 0x2000000, "user1", 0 ) /* ARM 32 bit code */
ROM_REGION( 0x2000000, "flash", 0 ) /* ARM 32 bit code */
ROM_LOAD( "flash.u1", 0x000000, 0x2000000, BAD_DUMP CRC(49deb7f9) SHA1(708a27d7177cf6261a49ded975c2bbb6c2427742) ) // missing ECC data
// banked every 0x10000 bytes ?
@ -755,7 +741,7 @@ ROM_END
ROM_START( touryuu )
ROM_REGION( 0x4200000, "user1", 0 ) /* ARM 32 bit code */
ROM_REGION( 0x4200000, "flash", 0 ) /* ARM 32 bit code */
ROM_LOAD( "u1.bin", 0x000000, 0x4200000, CRC(49b6856e) SHA1(639123d2fabac4e79c9315fb87f72b13f9ae8761) )
// banked every 0x10000 bytes ?

View File

@ -38,20 +38,21 @@ class limenko_state : public driver_device
{
public:
limenko_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_oki(*this, "oki"),
m_qs1000(*this, "qs1000"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_mainram(*this, "mainram"),
m_fg_videoram(*this, "fg_videoram"),
m_md_videoram(*this, "md_videoram"),
m_bg_videoram(*this, "bg_videoram"),
m_spriteram(*this, "spriteram"),
m_spriteram2(*this, "spriteram2"),
m_videoreg(*this, "videoreg") { }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_oki(*this, "oki")
, m_qs1000(*this, "qs1000")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
, m_soundlatch(*this, "soundlatch")
, m_mainram(*this, "mainram")
, m_fg_videoram(*this, "fg_videoram")
, m_md_videoram(*this, "md_videoram")
, m_bg_videoram(*this, "bg_videoram")
, m_spriteram(*this, "spriteram")
, m_spriteram2(*this, "spriteram2")
, m_videoreg(*this, "videoreg")
{ }
required_device<cpu_device> m_maincpu;
optional_device<okim6295_device> m_oki;
@ -82,8 +83,6 @@ public:
DECLARE_WRITE32_MEMBER(bg_videoram_w);
DECLARE_WRITE32_MEMBER(md_videoram_w);
DECLARE_WRITE32_MEMBER(fg_videoram_w);
DECLARE_WRITE32_MEMBER(spotty_soundlatch_w);
DECLARE_WRITE32_MEMBER(limenko_soundlatch_w);
DECLARE_WRITE32_MEMBER(spriteram_buffer_w);
DECLARE_WRITE8_MEMBER(spotty_sound_cmd_w);
DECLARE_READ8_MEMBER(spotty_sound_cmd_r);
@ -92,7 +91,6 @@ public:
DECLARE_READ32_MEMBER(legendoh_speedup_r);
DECLARE_READ32_MEMBER(sb2003_speedup_r);
DECLARE_READ32_MEMBER(spotty_speedup_r);
DECLARE_READ8_MEMBER(qs1000_p1_r);
DECLARE_WRITE8_MEMBER(qs1000_p1_w);
DECLARE_WRITE8_MEMBER(qs1000_p2_w);
DECLARE_WRITE8_MEMBER(qs1000_p3_w);
@ -185,24 +183,6 @@ WRITE32_MEMBER(limenko_state::spriteram_buffer_w)
SOUND FUNCTIONS
*****************************************************************************************************/
WRITE32_MEMBER(limenko_state::limenko_soundlatch_w)
{
m_soundlatch->write(space, 0, data >> 16);
m_qs1000->set_irq(ASSERT_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
WRITE32_MEMBER(limenko_state::spotty_soundlatch_w)
{
m_soundlatch->write(space, 0, data >> 16);
}
READ8_MEMBER(limenko_state::qs1000_p1_r)
{
return m_soundlatch->read(space, 0);
}
WRITE8_MEMBER(limenko_state::qs1000_p1_w)
{
}
@ -221,7 +201,7 @@ WRITE8_MEMBER(limenko_state::qs1000_p3_w)
membank("qs1000:bank")->set_entry(data & 0x07);
if (!BIT(data, 5))
m_qs1000->set_irq(CLEAR_LINE);
m_soundlatch->acknowledge_w(space, 0, !BIT(data, 5));
}
/*****************************************************************************************************
@ -230,7 +210,7 @@ WRITE8_MEMBER(limenko_state::qs1000_p3_w)
ADDRESS_MAP_START(limenko_state::limenko_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram")
AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("user2",0)
AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("maindata",0)
AM_RANGE(0x80000000, 0x80007fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0x80008000, 0x8000ffff) AM_RAM_WRITE(md_videoram_w) AM_SHARE("md_videoram")
AM_RANGE(0x80010000, 0x80017fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
@ -240,7 +220,7 @@ ADDRESS_MAP_START(limenko_state::limenko_map)
AM_RANGE(0x8001e000, 0x8001ebff) AM_RAM // ? not used
AM_RANGE(0x8001ffec, 0x8001ffff) AM_RAM AM_SHARE("videoreg")
AM_RANGE(0x8003e000, 0x8003e003) AM_WRITE(spriteram_buffer_w)
AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
ADDRESS_MAP_END
ADDRESS_MAP_START(limenko_state::limenko_io_map)
@ -249,7 +229,7 @@ ADDRESS_MAP_START(limenko_state::limenko_io_map)
AM_RANGE(0x1000, 0x1003) AM_READ_PORT("IN2")
AM_RANGE(0x4000, 0x4003) AM_WRITE(limenko_coincounter_w)
AM_RANGE(0x4800, 0x4803) AM_WRITE_PORT("EEPROMOUT")
AM_RANGE(0x5000, 0x5003) AM_WRITE(limenko_soundlatch_w)
AM_RANGE(0x5000, 0x5003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000).cswidth(32)
ADDRESS_MAP_END
@ -267,7 +247,7 @@ ADDRESS_MAP_START(limenko_state::spotty_map)
AM_RANGE(0x8001e000, 0x8001ebff) AM_RAM // ? not used
AM_RANGE(0x8001ffec, 0x8001ffff) AM_RAM AM_SHARE("videoreg")
AM_RANGE(0x8003e000, 0x8003e003) AM_WRITE(spriteram_buffer_w)
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
ADDRESS_MAP_END
ADDRESS_MAP_START(limenko_state::spotty_io_map)
@ -276,7 +256,7 @@ ADDRESS_MAP_START(limenko_state::spotty_io_map)
AM_RANGE(0x0800, 0x0803) AM_WRITENOP // hopper related
AM_RANGE(0x1000, 0x1003) AM_READ_PORT("IN2")
AM_RANGE(0x4800, 0x4803) AM_WRITE_PORT("EEPROMOUT")
AM_RANGE(0x5000, 0x5003) AM_WRITE(spotty_soundlatch_w)
AM_RANGE(0x5000, 0x5003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000).cswidth(32)
ADDRESS_MAP_END
WRITE8_MEMBER(limenko_state::spotty_sound_cmd_w)
@ -756,10 +736,12 @@ MACHINE_CONFIG_START(limenko_state::limenko)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("qs1000", qs1000_device, set_irq))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_SOUND_ADD("qs1000", QS1000, XTAL(24'000'000))
MCFG_QS1000_EXTERNAL_ROM(true)
MCFG_QS1000_IN_P1_CB(READ8(limenko_state, qs1000_p1_r))
MCFG_QS1000_IN_P1_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_QS1000_OUT_P1_CB(WRITE8(limenko_state, qs1000_p1_w))
MCFG_QS1000_OUT_P2_CB(WRITE8(limenko_state, qs1000_p2_w))
MCFG_QS1000_OUT_P3_CB(WRITE8(limenko_state, qs1000_p3_w))
@ -842,10 +824,10 @@ Notes:
*/
ROM_START( dynabomb )
ROM_REGION32_BE( 0x200000, "user1", 0 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x200000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD16_WORD_SWAP( "rom.u6", 0x000000, 0x200000, CRC(457e015d) SHA1(3afb56cdf903c9084c1f283dc50ec504ce3e199f) )
ROM_REGION32_BE( 0x400000, "user2", ROMREGION_ERASEFF )
ROM_REGION32_BE( 0x400000, "maindata", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "rom.u5", 0x000000, 0x200000, CRC(7e837adf) SHA1(8613fa187b8d4574b3935aa439aec2515033d64c) )
ROM_REGION( 0x80000, "qs1000:cpu", 0 ) /* QS1000 CPU */
@ -867,10 +849,10 @@ ROM_START( dynabomb )
ROM_END
ROM_START( sb2003 ) /* No specific Country/Region */
ROM_REGION32_BE( 0x200000, "user1", 0 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x200000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD16_WORD_SWAP( "sb2003_05.u6", 0x00000000, 0x200000, CRC(8aec4554) SHA1(57a12b142eb7bf08dd1e78d3c79222001bbaa636) )
ROM_REGION32_BE( 0x400000, "user2", ROMREGION_ERASEFF )
ROM_REGION32_BE( 0x400000, "maindata", ROMREGION_ERASEFF )
// u5 empty
ROM_REGION( 0x80000, "qs1000:cpu", 0 ) /* QS1000 CPU */
@ -892,10 +874,10 @@ ROM_START( sb2003 ) /* No specific Country/Region */
ROM_END
ROM_START( sb2003a ) /* Asia Region */
ROM_REGION32_BE( 0x200000, "user1", 0 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x200000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD16_WORD_SWAP( "sb2003a_05.u6", 0x000000, 0x200000, CRC(265e45a7) SHA1(b9c8b63aa89c08f3d9d404621e301b122f85389a) )
ROM_REGION32_BE( 0x400000, "user2", ROMREGION_ERASEFF )
ROM_REGION32_BE( 0x400000, "maindata", ROMREGION_ERASEFF )
// u5 empty
ROM_REGION( 0x80000, "qs1000:cpu", 0 ) /* QS1000 CPU */
@ -989,13 +971,13 @@ Link up 2 cabinets, up to 4 players can play at a time as a team
*/
ROM_START( legendoh )
ROM_REGION32_BE( 0x200000, "user1", ROMREGION_ERASEFF ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x200000, "maincpu", ROMREGION_ERASEFF ) /* Hyperstone CPU Code */
/* sys_rom1 empty */
/* sys_rom2 empty */
/* sys_rom3 empty */
ROM_LOAD16_WORD_SWAP( "01.sys_rom4", 0x180000, 0x80000, CRC(49b4a91f) SHA1(21619e8cd0b2fba8c2e08158497575a1760f52c5) )
ROM_REGION32_BE( 0x400000, "user2", 0 )
ROM_REGION32_BE( 0x400000, "maindata", 0 )
ROM_LOAD16_WORD_SWAP( "sys_rom6", 0x000000, 0x200000, CRC(5c13d467) SHA1(ed07b7e1b22293e256787ab079d00c2fb070bf4f) )
ROM_LOAD16_WORD_SWAP( "sys_rom5", 0x200000, 0x200000, CRC(19dc8d23) SHA1(433687c6aa24b9456436eecb1dcb57814af3009d) )
/* sys_rom8 empty */
@ -1051,7 +1033,7 @@ SW2 = Reset
*/
ROM_START( spotty )
ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASEFF ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASEFF ) /* Hyperstone CPU Code */
/* sys_rom1 empty */
ROM_LOAD16_WORD_SWAP( "sys_rom2", 0x080000, 0x80000, CRC(6ded8d9b) SHA1(547c532f4014d818c4412244b60dbc439496de20) )
@ -1061,7 +1043,7 @@ ROM_START( spotty )
/* Expand the gfx roms here */
ROM_REGION( 0x200000, "gfx1", ROMREGION_ERASE00 )
ROM_REGION( 0x200000, "user2", ROMREGION_ERASE00 )
ROM_REGION( 0x200000, "maindata", ROMREGION_ERASE00 )
ROM_LOAD32_BYTE( "gc_rom1", 0x000000, 0x80000, CRC(ea03f9c5) SHA1(5038c03c519c774da253f9ae4fa205e7eeaa2780) )
ROM_LOAD32_BYTE( "gc_rom3", 0x000001, 0x80000, CRC(0ddac0b9) SHA1(f4ac8e6dd7f1cbdeb97139008982e6c17a3d18b9) )
/* gc_rom2 empty */
@ -1146,7 +1128,7 @@ DRIVER_INIT_MEMBER(limenko_state,sb2003)
DRIVER_INIT_MEMBER(limenko_state,spotty)
{
uint8_t *dst = memregion("gfx1")->base();
uint8_t *src = memregion("user2")->base();
uint8_t *src = memregion("maindata")->base();
int x;
/* expand 4bpp roms to 8bpp space */

View File

@ -63,6 +63,7 @@ TODO:
#include "cpu/e132xs/e132xs.h"
#include "cpu/mcs51/mcs51.h"
#include "machine/eepromser.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "sound/okim6295.h"
#include "sound/qs1000.h"
@ -75,26 +76,29 @@ class vamphalf_state : public driver_device
{
public:
vamphalf_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_qs1000(*this, "qs1000"),
m_eeprom(*this, "eeprom"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_tiles(*this,"tiles"),
m_wram(*this,"wram"),
m_tiles32(*this,"tiles32"),
m_wram32(*this,"wram32"),
m_okiregion(*this, "oki%u", 1),
m_okibank(*this,"okibank") {
m_has_extra_gfx = 0;
}
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_qs1000(*this, "qs1000")
, m_eeprom(*this, "eeprom")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
, m_soundlatch(*this, "soundlatch")
, m_tiles(*this,"tiles")
, m_wram(*this,"wram")
, m_tiles32(*this,"tiles32")
, m_wram32(*this,"wram32")
, m_okiregion(*this, "oki%u", 1)
, m_okibank(*this,"okibank")
{
m_has_extra_gfx = 0;
}
required_device<cpu_device> m_maincpu;
optional_device<qs1000_device> m_qs1000;
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<uint16_t> m_tiles;
optional_shared_ptr<uint16_t> m_wram;
@ -115,7 +119,6 @@ public:
int m_semicom_prot_which;
uint16_t m_finalgdr_backupram_bank;
std::unique_ptr<uint8_t[]> m_finalgdr_backupram;
uint8_t m_qs1000_data;
DECLARE_WRITE16_MEMBER(flipscreen_w);
DECLARE_WRITE32_MEMBER(flipscreen32_w);
@ -170,9 +173,6 @@ public:
DECLARE_WRITE32_MEMBER(aoh_oki_bank_w);
DECLARE_WRITE16_MEMBER(boonggab_oki_bank_w);
DECLARE_WRITE16_MEMBER(mrkicker_oki_bank_w);
DECLARE_WRITE32_MEMBER(wyvernwg_snd_w);
DECLARE_WRITE16_MEMBER(misncrft_snd_w);
DECLARE_READ8_MEMBER(qs1000_p1_r);
DECLARE_WRITE8_MEMBER(qs1000_p3_w);
virtual void video_start() override;
@ -433,30 +433,10 @@ WRITE16_MEMBER(vamphalf_state::boonggab_lamps_w)
}
WRITE32_MEMBER( vamphalf_state::wyvernwg_snd_w )
{
m_qs1000_data = data & 0xff;
m_qs1000->set_irq(ASSERT_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
WRITE16_MEMBER( vamphalf_state::misncrft_snd_w )
{
m_qs1000_data = data & 0xff;
m_qs1000->set_irq(ASSERT_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
READ8_MEMBER( vamphalf_state::qs1000_p1_r )
{
return m_qs1000_data;
}
WRITE8_MEMBER( vamphalf_state::qs1000_p3_w )
{
if (!BIT(data, 5))
m_qs1000->set_irq(CLEAR_LINE);
m_soundlatch->acknowledge_w(space, 0, !BIT(data, 5));
membank("qs1000:data")->set_entry(data & 7);
}
@ -466,21 +446,21 @@ ADDRESS_MAP_START(vamphalf_state::common_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram")
AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles")
AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
ADDRESS_MAP_END
ADDRESS_MAP_START(vamphalf_state::common_32bit_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32")
AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32")
AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
ADDRESS_MAP_END
ADDRESS_MAP_START(vamphalf_state::yorijori_32bit_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32")
AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32")
AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
ADDRESS_MAP_END
ADDRESS_MAP_START(vamphalf_state::vamphalf_io)
@ -500,7 +480,7 @@ ADDRESS_MAP_START(vamphalf_state::misncrft_io)
AM_RANGE(0x200, 0x203) AM_READ_PORT("P1_P2")
AM_RANGE(0x240, 0x243) AM_READ_PORT("SYSTEM")
AM_RANGE(0x3c0, 0x3c3) AM_WRITE(eeprom_w)
AM_RANGE(0x400, 0x403) AM_WRITE(misncrft_snd_w)
AM_RANGE(0x400, 0x403) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16)
AM_RANGE(0x580, 0x583) AM_READ(eeprom_r)
ADDRESS_MAP_END
@ -537,7 +517,7 @@ ADDRESS_MAP_START(vamphalf_state::wyvernwg_io)
AM_RANGE(0x2000, 0x2003) AM_WRITE(flipscreen32_w)
AM_RANGE(0x2800, 0x2803) AM_READ_PORT("P1_P2")
AM_RANGE(0x3000, 0x3003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x5400, 0x5403) AM_WRITE(wyvernwg_snd_w)
AM_RANGE(0x5400, 0x5403) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
AM_RANGE(0x7000, 0x7003) AM_WRITE(eeprom32_w)
AM_RANGE(0x7c00, 0x7c03) AM_READ(eeprom32_r)
ADDRESS_MAP_END
@ -605,13 +585,13 @@ ADDRESS_MAP_START(vamphalf_state::aoh_map)
AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
AM_RANGE(0x80210000, 0x80210003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x80220000, 0x80220003) AM_READ_PORT("P1_P2")
AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
ADDRESS_MAP_END
ADDRESS_MAP_START(vamphalf_state::aoh_io)
AM_RANGE(0x0480, 0x0483) AM_WRITE(eeprom32_w)
AM_RANGE(0x0620, 0x0623) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x0000ff00)
AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("oki_1", okim6295_device, read, write, 0x0000ff00)
AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x0000ff00)
AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00)
AM_RANGE(0x0680, 0x0683) AM_WRITE(aoh_oki_bank_w)
ADDRESS_MAP_END
@ -1094,10 +1074,14 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(vamphalf_state::sound_qs1000)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("qs1000", qs1000_device, set_irq))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_SOUND_ADD("qs1000", QS1000, XTAL(24'000'000))
MCFG_QS1000_EXTERNAL_ROM(true)
MCFG_QS1000_IN_P1_CB(READ8(vamphalf_state, qs1000_p1_r))
MCFG_QS1000_IN_P1_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_QS1000_OUT_P3_CB(WRITE8(vamphalf_state, qs1000_p3_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
@ -1228,7 +1212,7 @@ MACHINE_CONFIG_START(vamphalf_state::aoh)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_OKIM6295_ADD("oki_1", XTAL(32'000'000)/8, PIN7_HIGH) /* 4MHz */
MCFG_OKIM6295_ADD("oki1", XTAL(32'000'000)/8, PIN7_HIGH) /* 4MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
@ -1332,7 +1316,7 @@ B1 B2 B3: Push buttons for SERV, RESET, TEST
*/
ROM_START( vamphalf )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* 0 - 0x80000 empty */
ROM_LOAD( "prg.rom1", 0x80000, 0x80000, CRC(9b1fc6c5) SHA1(acf10a50d2119ac893b6cbd494911982a9352350) ) /* at 0x16554: Europe Version 1.1.0908 */
@ -1347,7 +1331,7 @@ ROM_START( vamphalf )
ROM_END
ROM_START( vamphalfr1 )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* 0 - 0x80000 empty */
ROM_LOAD( "ws1-01201.rom1", 0x80000, 0x80000, CRC(afa75c19) SHA1(5dac104d1b3c026b6fce4d1f9126c048ebb557ef) ) /* at 0x162B8: Europe Version 1.0.0903 */
@ -1361,7 +1345,7 @@ ROM_END
ROM_START( vamphalfk )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* 0 - 0x80000 empty */
ROM_LOAD( "prom1", 0x80000, 0x80000, CRC(f05e8e96) SHA1(c860e65c811cbda2dc70300437430fb4239d3e2d) ) /* at 0x1653C: Korean Version 1.1.0908 */
@ -1420,7 +1404,7 @@ Notes:
*/
ROM_START( suplup ) /* version 4.0 / 990518 - also has 'Puzzle Bang Bang' title but it can't be selected */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "suplup-rom1.bin", 0x00000, 0x80000, CRC(61fb2dbe) SHA1(21cb8f571b2479de6779b877b656d1ffe5b3516f) )
ROM_LOAD( "suplup-rom2.bin", 0x80000, 0x80000, CRC(0c176c57) SHA1(f103a1afc528c01cbc18639273ab797fb9afacb1) )
@ -1438,7 +1422,7 @@ ROM_START( suplup ) /* version 4.0 / 990518 - also has 'Puzzle Bang Bang' title
ROM_END
ROM_START( luplup ) /* version 3.0 / 990128 */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "luplup-rom1.v30", 0x00000, 0x80000, CRC(9ea67f87) SHA1(73d16c056a8d64743181069a01559a43fee529a3) )
ROM_LOAD( "luplup-rom2.v30", 0x80000, 0x80000, CRC(99840155) SHA1(e208f8731c06b634e84fb73e04f6cdbb8b504b94) )
@ -1457,7 +1441,7 @@ ROM_END
ROM_START( luplup29 ) /* version 2.9 / 990108 */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "luplup-rom1.v29", 0x00000, 0x80000, CRC(36a8b8c1) SHA1(fed3eb2d83adc1b071a12ce5d49d4cab0ca20cc7) )
ROM_LOAD( "luplup-rom2.v29", 0x80000, 0x80000, CRC(50dac70f) SHA1(0e313114a988cb633a89508fda17eb09023827a2) )
@ -1473,7 +1457,7 @@ ROM_END
ROM_START( puzlbang ) /* version 2.9 / 990108 - Korea only, cannot select title, language and limited selection of background choices, EI: censored */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "pbb-rom1.v29", 0x00000, 0x80000, CRC(eb829586) SHA1(1f8a6af7c51c715724f5a242f4e22f7f6fb1f0ee) )
ROM_LOAD( "pbb-rom2.v29", 0x80000, 0x80000, CRC(fb84c793) SHA1(a2d27caecdae457d12b48d88d19ce417f69507c6) )
@ -1489,7 +1473,7 @@ ROM_END
ROM_START( puzlbanga ) /* version 2.8 / 990106 - Korea only, cannot select title, language or change background selection, EI: censored */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "pbb-rom1.v28", 0x00000, 0x80000, CRC(fd21c5ff) SHA1(bc6314bbb2495c140788025153c893d5fd00bdc1) )
ROM_LOAD( "pbb-rom2.v28", 0x80000, 0x80000, CRC(490ecaeb) SHA1(2b0f25e3d681ddf95b3c65754900c046b5b50b09) )
@ -1560,7 +1544,7 @@ Measured Clocks:
*/
ROM_START( jmpbreak ) /* Released February 1999 */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(7e237f7d) SHA1(042e672be34644311eefc7b998bcdf6a9ea2c28a) )
ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(c722f7be) SHA1(d8b3c6b5fd0942147e0a61169c3eb6334a3b5a40) )
@ -1575,7 +1559,7 @@ ROM_START( jmpbreak ) /* Released February 1999 */
ROM_END
ROM_START( poosho ) /* Released November 1999 - Updated sequel to Jumping Break for Korean market */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(2072c120) SHA1(cf066cd277840fdbb7a854a052a80b2fbb582278) )
ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(80e70d7a) SHA1(cdafce4bfe7370978414a12aaf482e07a1c89ff8) )
@ -1643,7 +1627,7 @@ ROMs:
*/
ROM_START( mrdig )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(5b960320) SHA1(adf5499a39987041fc93e409bdb5fd07dacec4f9) )
ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(75d48b64) SHA1(c9c492fb9cabafcf0bc05f44bf80ee6df3c21a1b) )
@ -1690,7 +1674,7 @@ F-E1-16-008
*/
ROM_START( coolmini )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "cm-rom1.040", 0x00000, 0x80000, CRC(9688fa98) SHA1(d5ebeb1407980072f689c3b3a5161263c7082e9a) )
ROM_LOAD( "cm-rom2.040", 0x80000, 0x80000, CRC(9d588fef) SHA1(7b6b0ba074c7fa0aecda2b55f411557b015522b6) )
@ -1709,7 +1693,7 @@ ROM_START( coolmini )
ROM_END
ROM_START( coolminii )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "cm-rom1.040", 0x00000, 0x80000, CRC(aa94bb86) SHA1(f1d75bf54b75f234cc872779c5b1ff6679778841) )
ROM_LOAD( "cm-rom2.040", 0x80000, 0x80000, CRC(be7d02c8) SHA1(4897f3c890dd66f94d7a29f7a73c59857e4af218) )
@ -1781,7 +1765,7 @@ ROMs:
*/
ROM_START( dquizgo2 )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1", 0x00000, 0x080000, CRC(81eef038) SHA1(9c925d1ef261ea85069925ccd1a5aeb939f55d5a) )
ROM_LOAD( "rom2", 0x80000, 0x080000, CRC(e8789d8a) SHA1(1ee26c26cc7024c5df9d0da630b326021ece9f41) )
@ -1853,7 +1837,7 @@ ROMs:
*/
ROM_START( dtfamily )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1", 0x00000, 0x080000, CRC(738636d2) SHA1(ba7906df99764ee7e1f505c319d364c64c605ff0) )
ROM_LOAD( "rom2", 0x80000, 0x080000, CRC(0953f5e4) SHA1(ee8b3c4f9c9301c9815747eab5435e006ec84ca1) )
@ -1927,7 +1911,7 @@ ROMs:
*/
ROM_START( toyland )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* ROM1 empty */
ROM_LOAD( "rom2.bin", 0x80000, 0x080000, CRC(e3455002) SHA1(5ad7884f82fb125d70829accec02f238e7d9593c) )
@ -2006,7 +1990,7 @@ ROM1 & ROM2 are both ST 27c4000D
*/
ROM_START( wivernwg )
ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1", 0x000000, 0x080000, CRC(83eb9a36) SHA1(d9c3b2facf42c137abc2923bbaeae300964ca4a0) ) /* ST 27C4000D with no labels */
ROM_LOAD( "rom2", 0x080000, 0x080000, CRC(5d657055) SHA1(21baa81b80f28aec4a6be9eaf69709958bf2a129) )
@ -2032,7 +2016,7 @@ ROM_START( wivernwg )
ROM_END
ROM_START( wyvernwg )
ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1.bin", 0x000000, 0x080000, CRC(66bf3a5c) SHA1(037d5e7a6ef6f5b4ac08a9c811498c668a9d2522) ) /* ST 27c4000D with no labels */
ROM_LOAD( "rom2.bin", 0x080000, 0x080000, CRC(fd9b5911) SHA1(a01e8c6e5a9009024af385268ba3ba90e1ebec50) )
@ -2058,7 +2042,7 @@ ROM_START( wyvernwg )
ROM_END
ROM_START( wyvernwga )
ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "rom1.rom", 0x000000, 0x080000, CRC(586881fd) SHA1(d335bbd91def8fa4935eb2375c9b00471a1f40eb) ) /* ST 27c4000D with no labels */
ROM_LOAD( "rom2.rom", 0x080000, 0x080000, CRC(938049ec) SHA1(cc10944c99ceb388dd4aafc93377c40540861d14) )
@ -2130,7 +2114,7 @@ Notes:
*/
ROM_START( misncrft ) /* Version 2.7 */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* 0 - 0x80000 empty */
ROM_LOAD( "prg-rom2.bin", 0x80000, 0x80000, CRC(04d22da6) SHA1(1c5be430000a31f21204fb756fadf2523a546b8b) )
@ -2155,7 +2139,7 @@ ROM_START( misncrft ) /* Version 2.7 */
ROM_END
ROM_START( misncrfta ) /* Version 2.4 */
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* 0 - 0x80000 empty */
ROM_LOAD( "prg-rom2.bin", 0x80000, 0x80000, CRC(059ae8c1) SHA1(2c72fcf560166cb17cd8ad665beae302832d551c) ) // sldh
@ -2254,7 +2238,7 @@ ROMs:
*/
ROM_START( yorijori )
ROM_REGION32_BE( 0x200000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x200000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD( "prg1", 0x000000, 0x200000, CRC(0e04eb40) SHA1(0cec9dc91aaf9cf7c459c7baac200cf0fcfddc18) )
ROM_REGION( 0x080000, "qs1000:cpu", 0 ) /* QDSP (8052) Code */
@ -2323,7 +2307,7 @@ VR1 is the volume adjust pot
*/
ROM_START( finalgdr ) /* version 2.20.5915, Korea only */
ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* rom0 empty */
ROM_LOAD( "rom1", 0x080000, 0x080000, CRC(45815931) SHA1(80ba7a366994e40a1f520ea18fad82e6b068b279) )
@ -2431,7 +2415,7 @@ ROMs:
*/
ROM_START( mrkickera )
ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* rom0 empty */
ROM_LOAD( "2-semicom.rom1", 0x080000, 0x080000, CRC(d3da29ca) SHA1(b843c650096a1c6d50f99e354ec0c93eb4406c5b) ) /* SEMICOM-003b PCB */
@ -2451,7 +2435,7 @@ ROM_START( mrkickera )
ROM_END
ROM_START( mrkicker )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* rom1 empty */
ROM_LOAD( "3-semicom.rom2", 0x080000, 0x080000, CRC(3f7fa08b) SHA1(dbffd44d8387e6ed1a4b5ec85ccf64d69a108d88) ) /* F-E1-16-010 PCB */
@ -2516,7 +2500,7 @@ Notes:
*/
ROM_START( aoh )
ROM_REGION32_BE( 0x400000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION32_BE( 0x400000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_LOAD16_WORD_SWAP( "rom1", 0x000000, 0x200000, CRC(2e55ff55) SHA1(b2b7605b87ee609dfbc7c21dfae0ef8d847019f0) )
ROM_LOAD16_WORD_SWAP( "rom2", 0x200000, 0x200000, CRC(50f8a409) SHA1(a8171b7cf59dd01de1e512ab21607b4f330f40b8) )
@ -2530,7 +2514,7 @@ ROM_START( aoh )
ROM_LOAD32_WORD( "g08", 0x3000002, 0x800000, CRC(1fd08aa0) SHA1(376a91220cd6e63418b04d590b232bb1079a40c7) )
ROM_LOAD32_WORD( "g12", 0x3000000, 0x800000, CRC(e437b35f) SHA1(411d2926d619fba057476864f0e580f608830522) )
ROM_REGION( 0x40000, "oki_1", 0 ) /* Oki Samples */
ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
ROM_LOAD( "rom3", 0x00000, 0x40000, CRC(db8cb455) SHA1(6723b4018208d554bd1bf1e0640b72d2f4f47302) )
/* $00000-$20000 stays the same in all sound banks, */
@ -2547,7 +2531,7 @@ Taff System, 2001
*/
ROM_START( boonggab )
ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
/* rom2 empty */
/* rom3 empty */
ROM_LOAD( "2.rom0", 0x80000, 0x80000, CRC(3395541b) SHA1(4e822a52d6070bde232285e7ad8fbe74594bbf28) )
@ -2971,8 +2955,6 @@ DRIVER_INIT_MEMBER(vamphalf_state,misncrft)
// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100);
save_item(NAME(m_qs1000_data));
}
DRIVER_INIT_MEMBER(vamphalf_state,coolmini)
@ -3049,7 +3031,6 @@ DRIVER_INIT_MEMBER(vamphalf_state,wyvernwg)
machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100);
save_item(NAME(m_qs1000_data));
save_item(NAME(m_semicom_prot_idx));
save_item(NAME(m_semicom_prot_which));
}
@ -3065,7 +3046,7 @@ DRIVER_INIT_MEMBER(vamphalf_state,yorijori)
m_semicom_prot_data[0] = 2;
m_semicom_prot_data[1] = 1;
// uint8_t *romx = (uint8_t *)memregion("user1")->base();
// uint8_t *romx = (uint8_t *)memregion("maincpu")->base();
// prevent code dying after a trap 33 by patching it out, why?
// romx[BYTE4_XOR_BE(0x8ff0)] = 3;
// romx[BYTE4_XOR_BE(0x8ff1)] = 0;
@ -3073,8 +3054,6 @@ DRIVER_INIT_MEMBER(vamphalf_state,yorijori)
// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100);
save_item(NAME(m_qs1000_data));
}
DRIVER_INIT_MEMBER(vamphalf_state,finalgdr)

View File

@ -18,7 +18,6 @@
#include "cpu/e132xs/e132xs.h"
#include "machine/at28c16.h"
#include "machine/gen_latch.h"
#include "sound/qs1000.h"
#include "speaker.h"
@ -27,10 +26,8 @@ class vegaeo_state : public eolith_state
{
public:
vegaeo_state(const machine_config &mconfig, device_type type, const char *tag)
: eolith_state(mconfig, type, tag),
m_soundlatch(*this, "soundlatch") { }
: eolith_state(mconfig, type, tag) { }
required_device<generic_latch_8_device> m_soundlatch;
std::unique_ptr<uint32_t[]> m_vega_vram;
uint8_t m_vega_vbuffer;
@ -39,8 +36,6 @@ public:
DECLARE_READ32_MEMBER(vega_vram_r);
DECLARE_WRITE32_MEMBER(vega_misc_w);
DECLARE_READ32_MEMBER(vegaeo_custom_read);
DECLARE_WRITE32_MEMBER(soundlatch_w);
DECLARE_READ8_MEMBER(qs1000_p1_r);
DECLARE_WRITE8_MEMBER(qs1000_p1_w);
DECLARE_WRITE8_MEMBER(qs1000_p2_w);
DECLARE_WRITE8_MEMBER(qs1000_p3_w);
@ -53,11 +48,6 @@ public:
void vega_map(address_map &map);
};
READ8_MEMBER( vegaeo_state::qs1000_p1_r )
{
return m_soundlatch->read(space, 0);
}
WRITE8_MEMBER( vegaeo_state::qs1000_p1_w )
{
}
@ -75,7 +65,7 @@ WRITE8_MEMBER( vegaeo_state::qs1000_p3_w )
membank("qs1000:bank")->set_entry(data & 0x07);
if (!BIT(data, 5))
m_qs1000->set_irq(CLEAR_LINE);
m_soundlatch->acknowledge_w(space, 0, !BIT(data, 5));
}
WRITE32_MEMBER(vegaeo_state::vega_vram_w)
@ -127,14 +117,6 @@ READ32_MEMBER(vegaeo_state::vegaeo_custom_read)
return ioport("SYSTEM")->read();
}
WRITE32_MEMBER(vegaeo_state::soundlatch_w)
{
m_soundlatch->write(space, 0, data);
m_qs1000->set_irq(ASSERT_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
ADDRESS_MAP_START(vegaeo_state::vega_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM
@ -142,11 +124,11 @@ ADDRESS_MAP_START(vegaeo_state::vega_map)
AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x000000ff)
AM_RANGE(0xfc200000, 0xfc2003ff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
AM_RANGE(0xfc400000, 0xfc40005b) AM_WRITENOP // crt registers ?
AM_RANGE(0xfc600000, 0xfc600003) AM_WRITE(soundlatch_w)
AM_RANGE(0xfc600000, 0xfc600003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
AM_RANGE(0xfca00000, 0xfca00003) AM_WRITE(vega_misc_w)
AM_RANGE(0xfcc00000, 0xfcc00003) AM_READ(vegaeo_custom_read)
AM_RANGE(0xfce00000, 0xfce00003) AM_READ_PORT("P1_P2")
AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("user1", 0)
AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("maindata", 0)
AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
ADDRESS_MAP_END
@ -245,10 +227,12 @@ MACHINE_CONFIG_START(vegaeo_state::vega)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("qs1000", qs1000_device, set_irq))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_SOUND_ADD("qs1000", QS1000, XTAL(24'000'000))
MCFG_QS1000_EXTERNAL_ROM(true)
MCFG_QS1000_IN_P1_CB(READ8(vegaeo_state, qs1000_p1_r))
MCFG_QS1000_IN_P1_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_QS1000_OUT_P1_CB(WRITE8(vegaeo_state, qs1000_p1_w))
MCFG_QS1000_OUT_P2_CB(WRITE8(vegaeo_state, qs1000_p2_w))
MCFG_QS1000_OUT_P3_CB(WRITE8(vegaeo_state, qs1000_p3_w))
@ -306,7 +290,7 @@ ROM_START( crazywar )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */
ROM_LOAD( "u7", 0x00000, 0x80000, CRC(697c2505) SHA1(c787007f05d2ddf1706e15e9d9ef9b2479708f12) )
ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_REGION32_BE( 0x2000000, "maindata", ROMREGION_ERASE00 ) /* Game Data - banked ROM, swapping necessary */
ROM_LOAD32_WORD_SWAP( "00", 0x0000000, 0x200000, CRC(fbb917ae) SHA1(1fd975cda06b3cb748503b7c8009e6184b46af3f) )
ROM_LOAD32_WORD_SWAP( "01", 0x0000002, 0x200000, CRC(59308556) SHA1(bc8c28531fca009be5b7b3b1a4a9b3ebcc9d3c3a) )
ROM_LOAD32_WORD_SWAP( "02", 0x0400000, 0x200000, CRC(34813167) SHA1(d04c71164b36af78425dcd637e60aee45c39a1ba) )

View File

@ -2,6 +2,7 @@
// copyright-holders:Tomasz Slanina,Pierpaolo Prazzoli
#include "cpu/mcs51/mcs51.h"
#include "machine/gen_latch.h"
#include "machine/timer.h"
#include "sound/qs1000.h"
#include "screen.h"
@ -10,36 +11,34 @@ class eolith_state : public driver_device
{
public:
eolith_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_eepromoutport(*this, "EEPROMOUT"),
m_qs1000(*this, "qs1000"),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_in0(*this, "IN0"),
m_penx1port(*this, "PEN_X_P1"),
m_peny1port(*this, "PEN_Y_P1"),
m_penx2port(*this, "PEN_X_P2"),
m_peny2port(*this, "PEN_Y_P2"),
m_sndbank(*this, "sound_bank")
{ }
: driver_device(mconfig, type, tag)
, m_eepromoutport(*this, "EEPROMOUT")
, m_qs1000(*this, "qs1000")
, m_maincpu(*this, "maincpu")
, m_soundcpu(*this, "soundcpu")
, m_screen(*this, "screen")
, m_palette(*this, "palette")
, m_soundlatch(*this, "soundlatch")
, m_in0(*this, "IN0")
, m_penx1port(*this, "PEN_X_P1")
, m_peny1port(*this, "PEN_Y_P1")
, m_penx2port(*this, "PEN_X_P2")
, m_peny2port(*this, "PEN_Y_P2")
, m_sndbank(*this, "sound_bank")
{ }
DECLARE_CUSTOM_INPUT_MEMBER(eolith_speedup_getvblank);
DECLARE_CUSTOM_INPUT_MEMBER(stealsee_speedup_getvblank);
DECLARE_READ32_MEMBER(eolith_custom_r);
DECLARE_WRITE32_MEMBER(systemcontrol_w);
DECLARE_WRITE32_MEMBER(sound_w);
DECLARE_READ32_MEMBER(hidctch3_pen1_r);
DECLARE_READ32_MEMBER(hidctch3_pen2_r);
DECLARE_WRITE32_MEMBER(eolith_vram_w);
DECLARE_READ32_MEMBER(eolith_vram_r);
DECLARE_READ8_MEMBER(sound_cmd_r);
DECLARE_WRITE8_MEMBER(sound_p1_w);
DECLARE_READ8_MEMBER(qs1000_p1_r);
DECLARE_WRITE8_MEMBER(qs1000_p1_w);
DECLARE_WRITE8_MEMBER(soundcpu_to_qs1000);
DECLARE_DRIVER_INIT(eolith);
DECLARE_DRIVER_INIT(landbrk);
@ -76,6 +75,7 @@ private:
optional_device<i8032_device> m_soundcpu;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch;
optional_ioport m_in0; // klondkp doesn't have it
optional_ioport m_penx1port;