qs1000.cpp : Convert set_irq into WRITE_LINE_MEMBER (#3306)

* qs1000.cpp : Convert set_irq into WRITE_LINE_MEMBER
eolith.cpp, eolith16.cpp, vegaeo.cpp : Cleanup vram handler/drawing pixel
eolith.cpp, ghosteo.cpp, limenko.cpp, vamphalf.cpp, vegaeo.cpp : Modernize soundlatches
eolith.cpp, eolith16.cpp, ghosteo.cpp, limenko.cpp, vamphalf.cpp, vegaeo.cpp : Minor cleanup, Add object finders instead runtime tag lookup, Replace user* -> saner ROM areas
limenko.cpp : Minor cleanup of sprite drawing
eolith.cpp : Add machine_config instead driver_init for hidctch3

* vamphalf : Fix compile
This commit is contained in:
cam900 2018-03-07 19:11:03 +09:00 committed by Vas Crabb
parent 03a3ddd755
commit d6af286bb3
10 changed files with 307 additions and 476 deletions

View File

@ -275,7 +275,7 @@ void qs1000_device::serial_in(uint8_t 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);

View File

@ -69,7 +69,7 @@ public:
// external
void serial_in(uint8_t data);
void set_irq(int state);
DECLARE_WRITE_LINE_MEMBER( set_irq );
DECLARE_WRITE8_MEMBER( wave_w );

View File

@ -106,6 +106,7 @@
#include "cpu/e132xs/e132xs.h"
#include "cpu/mcs51/mcs51.h"
#include "machine/eepromser.h"
#include "machine/gen_latch.h"
#include "speaker.h"
@ -142,33 +143,16 @@ WRITE32_MEMBER(eolith_state::systemcontrol_w)
// bit 0x100 and 0x040 ?
}
READ32_MEMBER(eolith_state::hidctch3_pen1_r)
template<int Player>
READ32_MEMBER(eolith_state::hidctch3_pen_r)
{
//320 x 240
int xpos = m_penx1port->read();
int ypos = m_peny1port->read();
int xpos = m_penxport[Player]->read();
int ypos = m_penyport[Player]->read();
return xpos + (ypos*168*2);
}
READ32_MEMBER(eolith_state::hidctch3_pen2_r)
{
//320 x 240
int xpos = m_penx2port->read();
int ypos = m_peny2port->read();
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));
}
/*************************************
*
@ -176,12 +160,6 @@ WRITE32_MEMBER( eolith_state::sound_w )
*
*************************************/
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)
@ -242,16 +220,24 @@ WRITE8_MEMBER(eolith_state::soundcpu_to_qs1000)
ADDRESS_MAP_START(eolith_state::eolith_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM // fort2b wants ram here
AM_RANGE(0x40000000, 0x401fffff) AM_RAM
AM_RANGE(0x90000000, 0x9003ffff) AM_READWRITE(eolith_vram_r, eolith_vram_w)
AM_RANGE(0x90000000, 0x9003ffff) AM_READWRITE16(eolith_vram_r, eolith_vram_w, 0xffffffff)
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
ADDRESS_MAP_START(eolith_state::hidctch3_map)
AM_IMPORT_FROM(eolith_map)
AM_RANGE(0xfc200000, 0xfc200003) AM_WRITENOP // this generates pens vibration
// It is not clear why the first reads are needed too
AM_RANGE(0xfce00000, 0xfce00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<0>)
AM_RANGE(0xfcf00000, 0xfcf00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<1>)
ADDRESS_MAP_END
/*************************************
*
@ -265,7 +251,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
@ -581,6 +567,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))
@ -601,6 +590,12 @@ MACHINE_CONFIG_START(eolith_state::ironfort)
MCFG_CPU_CLOCK(44900000) /* Normally 45MHz??? but PCB actually had a 44.9MHz OSC, so it's value is used */
MACHINE_CONFIG_END
MACHINE_CONFIG_START(eolith_state::hidctch3)
eolith50(config);
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hidctch3_map)
MACHINE_CONFIG_END
/*************************************
*
@ -667,7 +662,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 +689,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 +715,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 +741,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 +811,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 +884,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 +921,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 +958,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 +1055,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 +1084,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 +1121,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 +1150,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 +1180,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 +1217,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 +1255,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 +1293,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 +1330,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 +1367,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 +1397,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 +1483,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 +1526,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)
@ -1589,21 +1582,6 @@ DRIVER_INIT_MEMBER(eolith_state,hidnc2k)
DRIVER_INIT_CALL(eolith);
}
DRIVER_INIT_MEMBER(eolith_state,hidctch3)
{
m_maincpu->space(AS_PROGRAM).nop_write(0xfc200000, 0xfc200003); // this generates pens vibration
// It is not clear why the first reads are needed too
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfce00000, 0xfce00003, read32_delegate(FUNC(eolith_state::hidctch3_pen1_r),this));
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfce80000, 0xfce80003, read32_delegate(FUNC(eolith_state::hidctch3_pen1_r),this));
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfcf00000, 0xfcf00003, read32_delegate(FUNC(eolith_state::hidctch3_pen2_r),this));
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfcf80000, 0xfcf80003, read32_delegate(FUNC(eolith_state::hidctch3_pen2_r),this));
DRIVER_INIT_CALL(eolith);
}
/* Eolith Speedup Handling */
/*
@ -1755,6 +1733,6 @@ GAME( 1999, nhidctch, 0, eolith45, hidctch2, eolith_state, eolith, RO
GAME( 1999, penfan, 0, eolith45, penfan, eolith_state, eolith, ROT0, "Eolith", "Penfan Girls - Step1. Mild Mind (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // alt title of Ribbon
GAME( 1999, penfana, penfan, eolith45, penfan, eolith_state, eolith, ROT0, "Eolith", "Penfan Girls - Step1. Mild Mind (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 2000, stealsee, 0, eolith45, stealsee, eolith_state, eolith, ROT0, "Moov Generation / Eolith", "Steal See", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 2000, hidctch3, 0, eolith50, hidctch3, eolith_state, hidctch3, ROT0, "Eolith", "Hidden Catch 3 (ver 1.00 / pcb ver 3.05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 2000, hidctch3, 0, hidctch3, hidctch3, eolith_state, eolith, ROT0, "Eolith", "Hidden Catch 3 (ver 1.00 / pcb ver 3.05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 2001, fort2b, 0, eolith50, common, eolith_state, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (World) (ver 1.01 / pcb ver 3.05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // Language selection is greyed out in Service Mode
GAME( 2001, fort2ba, fort2b, eolith50, common, eolith_state, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (Korea) (ver 1.00 / pcb ver 3.05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // ^^

View File

@ -25,15 +25,20 @@ class eolith16_state : public eolith_state
{
public:
eolith16_state(const machine_config &mconfig, device_type type, const char *tag)
: eolith_state(mconfig, type, tag) { }
: eolith_state(mconfig, type, tag)
, m_special_io(*this, "SPECIAL")
{
}
required_ioport m_special_io;
std::unique_ptr<uint16_t[]> m_vram;
std::unique_ptr<uint8_t[]> m_vram;
int m_vbuffer;
DECLARE_WRITE16_MEMBER(eeprom_w);
DECLARE_READ16_MEMBER(eolith16_custom_r);
DECLARE_WRITE16_MEMBER(vram_w);
DECLARE_READ16_MEMBER(vram_r);
DECLARE_WRITE8_MEMBER(vram_w);
DECLARE_READ8_MEMBER(vram_r);
DECLARE_DRIVER_INIT(eolith16);
DECLARE_VIDEO_START(eolith16);
@ -59,33 +64,31 @@ WRITE16_MEMBER(eolith16_state::eeprom_w)
READ16_MEMBER(eolith16_state::eolith16_custom_r)
{
speedup_read();
return ioport("SPECIAL")->read();
return m_special_io->read();
}
WRITE16_MEMBER(eolith16_state::vram_w)
WRITE8_MEMBER(eolith16_state::vram_w)
{
COMBINE_DATA(&m_vram[offset + (0x10000/2) * m_vbuffer]);
COMBINE_DATA(&m_vram[offset + 0x10000 * m_vbuffer]);
}
READ16_MEMBER(eolith16_state::vram_r)
READ8_MEMBER(eolith16_state::vram_r)
{
return m_vram[offset + (0x10000/2) * m_vbuffer];
return m_vram[offset + 0x10000 * m_vbuffer];
}
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(0x50000000, 0x5000ffff) AM_READWRITE8(vram_r, vram_w, 0xffff)
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 )
@ -120,28 +123,18 @@ INPUT_PORTS_END
VIDEO_START_MEMBER(eolith16_state,eolith16)
{
m_vram = std::make_unique<uint16_t[]>(0x10000);
save_pointer(NAME(m_vram.get()), 0x10000);
m_vram = std::make_unique<uint8_t[]>(0x10000*2);
save_pointer(NAME(m_vram.get()), 0x10000*2);
save_item(NAME(m_vbuffer));
}
uint32_t eolith16_state::screen_update_eolith16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int x,y,count;
int color;
count = 0;
for (y=0;y < 204;y++)
for (int y = 0; y < 204; y++)
{
for (x=0;x < 320/2;x++)
for (int x = 0; x < 320; x++)
{
color = m_vram[count + (0x10000/2) * (m_vbuffer ^ 1)] & 0xff;
bitmap.pix16(y, x*2 + 0) = color;
color = (m_vram[count + (0x10000/2) * (m_vbuffer ^ 1)] & 0xff00) >> 8;
bitmap.pix16(y, x*2 + 1) = color;
count++;
bitmap.pix16(y, x) = m_vram[0x10000 * (m_vbuffer ^ 1) + (y * 320) + x] & 0xff;
}
}
return 0;
@ -173,7 +166,6 @@ PALETTE_INIT_MEMBER(eolith16_state,eolith16)
}
MACHINE_CONFIG_START(eolith16_state::eolith16)
MCFG_CPU_ADD("maincpu", E116T, 60000000) /* no internal multiplier */
MCFG_CPU_PROGRAM_MAP(eolith16_map)
@ -251,10 +243,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,36 +88,34 @@ 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_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;
required_device<i2cmem_device> m_i2cmem;
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 +162,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 +179,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 +424,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 +432,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 +587,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 +637,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 +713,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 +726,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 +740,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,24 +38,24 @@ 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_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_videoreg(*this, "videoreg")
, m_gfx_region(*this, "gfx")
{
}
required_device<cpu_device> m_maincpu;
optional_device<okim6295_device> m_oki;
optional_device<qs1000_device> m_qs1000;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
@ -65,8 +65,8 @@ public:
required_shared_ptr<uint32_t> m_md_videoram;
required_shared_ptr<uint32_t> m_bg_videoram;
required_shared_ptr<uint32_t> m_spriteram;
required_shared_ptr<uint32_t> m_spriteram2;
required_shared_ptr<uint32_t> m_videoreg;
required_region_ptr<uint8_t> m_gfx_region;
tilemap_t *m_bg_tilemap;
tilemap_t *m_md_tilemap;
@ -82,8 +82,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 +90,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);
@ -112,7 +109,7 @@ public:
virtual void video_start() override;
uint32_t screen_update_limenko(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_single_sprite(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx,uint32_t code,uint32_t color,int flipx,int flipy,int sx,int sy,int priority);
void draw_sprites(uint32_t *sprites, const rectangle &cliprect, int count);
void draw_sprites(const rectangle &cliprect);
void copy_sprites(bitmap_ind16 &bitmap, bitmap_ind16 &sprites_bitmap, bitmap_ind8 &priority_bitmap, const rectangle &cliprect);
void limenko(machine_config &config);
void spotty(machine_config &config);
@ -132,7 +129,6 @@ WRITE32_MEMBER(limenko_state::limenko_coincounter_w)
}
WRITE32_MEMBER(limenko_state::bg_videoram_w)
{
COMBINE_DATA(&m_bg_videoram[offset]);
@ -166,16 +162,8 @@ WRITE32_MEMBER(limenko_state::spriteram_buffer_w)
// toggle spriterams location in the memory map
m_spriteram_bit ^= 1;
if(m_spriteram_bit)
{
// draw the sprites to the frame buffer
draw_sprites(m_spriteram2,clip,m_prev_sprites_count);
}
else
{
// draw the sprites to the frame buffer
draw_sprites(m_spriteram,clip,m_prev_sprites_count);
}
// draw the sprites to the frame buffer
draw_sprites(clip);
// buffer the next number of sprites to draw
m_prev_sprites_count = (m_videoreg[0] & 0x1ff0000) >> 16;
@ -185,24 +173,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 +191,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,17 +200,16 @@ 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")
AM_RANGE(0x80018000, 0x80018fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x80019000, 0x80019fff) AM_RAM AM_SHARE("spriteram2")
AM_RANGE(0x80018000, 0x80019fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x8001c000, 0x8001dfff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
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 +218,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
@ -261,13 +230,12 @@ ADDRESS_MAP_START(limenko_state::spotty_map)
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")
AM_RANGE(0x80018000, 0x80018fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x80019000, 0x80019fff) AM_RAM AM_SHARE("spriteram2")
AM_RANGE(0x80018000, 0x80019fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x8001c000, 0x8001dfff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
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 +244,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)
@ -423,16 +391,15 @@ void limenko_state::draw_single_sprite(bitmap_ind16 &dest_bmp,const rectangle &c
}
// sprites aren't tile based (except for 8x8 ones)
void limenko_state::draw_sprites(uint32_t *sprites, const rectangle &cliprect, int count)
void limenko_state::draw_sprites(const rectangle &cliprect)
{
int i;
uint8_t *base_gfx = memregion("gfx1")->base();
uint8_t *gfx_max = base_gfx + memregion("gfx1")->bytes();
uint32_t *sprites = m_spriteram + (0x200*2 * m_spriteram_bit);
uint8_t *gfx_max = m_gfx_region + m_gfx_region.bytes();
uint8_t *gfxdata;
for(i = 0; i <= count*2; i += 2)
for(i = 0; i <= m_prev_sprites_count*2; i += 2)
{
int x, width, flipx, y, height, flipy, code, color, pri;
@ -458,7 +425,7 @@ void limenko_state::draw_sprites(uint32_t *sprites, const rectangle &cliprect, i
pri = 2;
}
gfxdata = base_gfx + 64 * code;
gfxdata = m_gfx_region + 64 * code;
/* Bounds checking */
if ( (gfxdata + width * height - 1) >= gfx_max )
@ -715,14 +682,14 @@ static const gfx_layout tile_layout =
8,8,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{ 0,8,16,24,32,40,48,56 },
{ 64*0,64*1,64*2,64*3,64*4,64*5,64*6,64*7 },
64*8,
{ STEP8(0,1) },
{ STEP8(0,8) },
{ STEP8(0,8*8) },
8*8*8,
};
static GFXDECODE_START( limenko )
GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 0, 16 ) /* tiles */
GFXDECODE_ENTRY( "gfx", 0, tile_layout, 0, 16 ) /* tiles */
GFXDECODE_END
@ -756,10 +723,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,17 +811,17 @@ 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 */
ROM_LOAD( "rom.u16", 0x00000, 0x20000, CRC(f66d7e4d) SHA1(44f1851405ba525f1ed53521f4de12545ea9c46a) )
ROM_FILL( 0x20000, 0x60000, 0xff)
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "gfx", 0 )
ROM_LOAD32_BYTE( "rom.u1", 0x000000, 0x200000, CRC(bf33eff6) SHA1(089b6d88d6d744bcfa036c6869f0444d6ceb26c9) )
ROM_LOAD32_BYTE( "rom.u2", 0x000001, 0x200000, CRC(790bbcd5) SHA1(fc52c15fffc77dc3b3bc89a9606223c4fbaa578c) )
ROM_LOAD32_BYTE( "rom.u3", 0x000002, 0x200000, CRC(ec094b12) SHA1(13c105df066ff308cc7e1842907644790946e5b5) )
@ -867,17 +836,17 @@ 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 */
ROM_LOAD( "07.u16", 0x00000, 0x20000, CRC(78acc607) SHA1(30a1aed40d45233dce88c6114989c71aa0f99ff7) )
ROM_FILL( 0x20000, 0x60000, 0xff)
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "gfx", 0 )
ROM_LOAD32_BYTE( "01.u1", 0x000000, 0x200000, CRC(d2c7091a) SHA1(deff050eb0aee89f60d5ad13053e4f1bd4d35961) )
ROM_LOAD32_BYTE( "02.u2", 0x000001, 0x200000, CRC(a0734195) SHA1(8947f351434e2f750c4bdf936238815baaeb8402) )
ROM_LOAD32_BYTE( "03.u3", 0x000002, 0x200000, CRC(0f020280) SHA1(2c10baec8dbb201ee5e1c4c9d6b962e2ed02df7d) )
@ -892,17 +861,17 @@ 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 */
ROM_LOAD( "07.u16", 0x00000, 0x20000, CRC(78acc607) SHA1(30a1aed40d45233dce88c6114989c71aa0f99ff7) )
ROM_FILL( 0x20000, 0x60000, 0xff)
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "gfx", 0 )
ROM_LOAD32_BYTE( "01.u1", 0x000000, 0x200000, CRC(d2c7091a) SHA1(deff050eb0aee89f60d5ad13053e4f1bd4d35961) )
ROM_LOAD32_BYTE( "02.u2", 0x000001, 0x200000, CRC(a0734195) SHA1(8947f351434e2f750c4bdf936238815baaeb8402) )
ROM_LOAD32_BYTE( "03.u3", 0x000002, 0x200000, CRC(0f020280) SHA1(2c10baec8dbb201ee5e1c4c9d6b962e2ed02df7d) )
@ -989,19 +958,19 @@ 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 */
/* sys_rom7 empty */
ROM_REGION( 0x1200000, "gfx1", 0 )
ROM_REGION( 0x1200000, "gfx", 0 )
ROM_LOAD32_BYTE( "cg_rom10", 0x0000000, 0x200000, CRC(93a48489) SHA1(a14157d31b4e9c8eb7ebe1b2f1b707ec8c8561a0) )
ROM_LOAD32_BYTE( "cg_rom20", 0x0000001, 0x200000, CRC(1a6c0258) SHA1(ac7c3b8c2fdfb542103032144a30293d44759fd1) )
ROM_LOAD32_BYTE( "cg_rom30", 0x0000002, 0x200000, CRC(a0559ef4) SHA1(6622f7107b374c9da816b9814fe93347e7422190) )
@ -1051,7 +1020,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) )
@ -1059,9 +1028,9 @@ ROM_START( spotty )
ROM_LOAD( "at89c4051.mcu", 0x000000, 0x01000, CRC(82ceab26) SHA1(9bbc454bdcbc70dc01f10a13c9fc01c884918fe8) )
/* Expand the gfx roms here */
ROM_REGION( 0x200000, "gfx1", ROMREGION_ERASE00 )
ROM_REGION( 0x200000, "gfx", 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 */
@ -1145,8 +1114,8 @@ 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 *dst = memregion("gfx")->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,28 @@ 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_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_photosensors(*this, "PHOTO_SENSORS")
{
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;
@ -104,6 +107,8 @@ public:
optional_memory_region_array<2> m_okiregion;
optional_memory_bank m_okibank;
optional_ioport m_photosensors;
// driver init configuration
int m_flip_bit;
int m_palshift;
@ -115,7 +120,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 +174,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 +434,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 +447,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 +481,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 +518,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,7 +586,7 @@ 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)
@ -849,7 +830,7 @@ uint32_t vamphalf_state::screen_update_aoh(screen_device &screen, bitmap_ind16 &
CUSTOM_INPUT_MEMBER(vamphalf_state::boonggab_photo_sensors_r)
{
static const uint16_t photo_sensors_table[8] = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 };
uint8_t res = ioport("PHOTO_SENSORS")->read();
uint8_t res = m_photosensors->read();
switch(res)
{
@ -1025,14 +1006,14 @@ static const gfx_layout sprites_layout =
16,16,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{ 0,8,16,24, 32,40,48,56, 64,72,80,88 ,96,104,112,120 },
{ 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, 8*128,9*128,10*128,11*128,12*128,13*128,14*128,15*128 },
16*128,
{ STEP8(0,1) },
{ STEP16(0,8) },
{ STEP16(0,8*16) },
16*16*8,
};
static GFXDECODE_START( vamphalf )
GFXDECODE_ENTRY( "gfx1", 0, sprites_layout, 0, 0x80 )
GFXDECODE_ENTRY( "gfx", 0, sprites_layout, 0, 0x80 )
GFXDECODE_END
@ -1094,10 +1075,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)
@ -1332,11 +1317,11 @@ 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 */
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "eur.roml00", 0x000000, 0x200000, CRC(bdee9a46) SHA1(7e240b07377201afbe0cd0911ccee4ad52a74079) )
ROM_LOAD32_WORD( "eur.romu00", 0x000002, 0x200000, CRC(fa79e8ea) SHA1(feaba99f0a863bc5d27ad91d206168684976b4c2) )
ROM_LOAD32_WORD( "eur.roml01", 0x400000, 0x200000, CRC(a7995b06) SHA1(8b789b6a00bc177c3329ee4a31722fc65376b975) )
@ -1347,11 +1332,11 @@ 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 */
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "elc.roml01", 0x000000, 0x400000, CRC(19df4056) SHA1(8b05769d8e245f8b25bf92013b98c9d7e5ab4548) ) /* only 2 roms, though twice as big as other sets */
ROM_LOAD32_WORD( "evi.romu01", 0x000002, 0x400000, CRC(f9803923) SHA1(adc1d4fa2c6283bc24829f924b58fbd9d1bacdd2) )
@ -1361,11 +1346,11 @@ 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 */
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(cc075484) SHA1(6496d94740457cbfdac3d918dce2e52957341616) )
ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(711c8e20) SHA1(1ef7f500d6f5790f5ae4a8b58f96ee9343ef8d92) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(626c9925) SHA1(c90c72372d145165a8d3588def12e15544c6223b) )
@ -1420,11 +1405,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "suplup-roml00.bin", 0x000000, 0x200000, CRC(7848e183) SHA1(1db8f0ea8f73f42824423d382b37b4d75fa3e54c) )
ROM_LOAD32_WORD( "suplup-romu00.bin", 0x000002, 0x200000, CRC(13e3ab7f) SHA1(d5b6b15ca5aef2e2788d2b81e0418062f42bf2f2) )
ROM_LOAD32_WORD( "suplup-roml01.bin", 0x400000, 0x200000, CRC(15769f55) SHA1(2c13e8da2682ccc7878218aaebe3c3c67d163fd2) )
@ -1438,11 +1423,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "luplup-roml00", 0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
ROM_LOAD32_WORD( "luplup-romu00", 0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
ROM_LOAD32_WORD( "luplup30-roml01", 0x400000, 0x200000, CRC(40e85f94) SHA1(531e67eb4eedf47b0dded52ba2f4942b12cbbe2f) ) /* This one changed between v2.9 & v3.0 */
@ -1457,11 +1442,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "luplup-roml00", 0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
ROM_LOAD32_WORD( "luplup-romu00", 0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
ROM_LOAD32_WORD( "luplup-roml01", 0x400000, 0x200000, CRC(41c7ca8c) SHA1(55704f9d54f31bbaa044cd9d10ac2d9cb5e8fb70) )
@ -1473,11 +1458,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "luplup-roml00", 0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
ROM_LOAD32_WORD( "luplup-romu00", 0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
ROM_LOAD32_WORD( "luplup-roml01", 0x400000, 0x200000, CRC(41c7ca8c) SHA1(55704f9d54f31bbaa044cd9d10ac2d9cb5e8fb70) )
@ -1489,11 +1474,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "luplup-roml00", 0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
ROM_LOAD32_WORD( "luplup-romu00", 0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
ROM_LOAD32_WORD( "luplup-roml01", 0x400000, 0x200000, CRC(41c7ca8c) SHA1(55704f9d54f31bbaa044cd9d10ac2d9cb5e8fb70) )
@ -1560,11 +1545,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(4b99190a) SHA1(30af068f7d9f9f349db5696c19ab53ac33304271) )
ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(e93762f8) SHA1(cc589b59e3ab7aa7092e96a1ff8a9de8a499b257) )
ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(6796a104) SHA1(3f7352cd37f78c1b01f7df45344ee7800db110f9) )
@ -1575,11 +1560,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(9efb0673) SHA1(3aeae96e591a415c27942dce90fc64c11287097d) )
ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(fe1d6a02) SHA1(4d451cfc6457f56a98bcec7998713757dbefa2b5) )
ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(05e81ca0) SHA1(22c6b78e3a0f27195142221bd179a4ecac819684) )
@ -1643,11 +1628,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(f6b161ea) SHA1(c417a4c877ffa2fdf5857ecc9c78ffc0c09dc516) )
ROM_LOAD32_WORD( "romh00.bin", 0x000002, 0x200000, CRC(5477efed) SHA1(e4991ee1b41d512eaa508351b6a78261dfde5a3d) )
@ -1690,11 +1675,11 @@ 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) )
ROM_REGION( 0x1000000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x1000000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(4b141f31) SHA1(cf4885789b0df67d00f9f3659c445248c4e72446) )
ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(9b2fb12a) SHA1(8dce367c4c2cab6e84f586bd8dfea3ea0b6d7225) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1e3a04bb) SHA1(9eb84b6a0172a8868f440065c30b4519e0c3fe33) )
@ -1709,11 +1694,11 @@ 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) )
ROM_REGION( 0x1000000, "gfx1", 0 ) /* 16x16x8 Sprites - not dumped from this set, using parent ROMs */
ROM_REGION( 0x1000000, "gfx", 0 ) /* 16x16x8 Sprites - not dumped from this set, using parent ROMs */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(4b141f31) SHA1(cf4885789b0df67d00f9f3659c445248c4e72446) BAD_DUMP )
ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(9b2fb12a) SHA1(8dce367c4c2cab6e84f586bd8dfea3ea0b6d7225) BAD_DUMP )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1e3a04bb) SHA1(9eb84b6a0172a8868f440065c30b4519e0c3fe33) BAD_DUMP )
@ -1781,11 +1766,11 @@ 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) )
ROM_REGION( 0xc00000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0xc00000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(de811dd7) SHA1(bf31e165440ed2e3cdddd2174521b15afd8b2e69) )
ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(2bdbfc6b) SHA1(8e755574e3c9692bd8f82c7351fe3623a31ec136) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(f574a2a3) SHA1(c6a8aca75bd3a4e4109db5095f3a3edb9b1e6657) )
@ -1853,11 +1838,11 @@ 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) )
ROM_REGION( 0xc00000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0xc00000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(7e2a7520) SHA1(0ff157fe34ff31cd8636af821fe14c12242d757f) )
ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(c170755f) SHA1(019d24979071f0ab2b3c93a5ec9327e6a0b2afa2) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(3d487ffe) SHA1(c5608423d608922c0e1ac8bdfaa0de062b2c9821) )
@ -1927,11 +1912,11 @@ 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) )
ROM_REGION( 0xc00000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0xc00000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(06f5673d) SHA1(23769015fc9a37d36b0fe4924964650aeca77573) )
ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(8c3db0e4) SHA1(6101ec550ae165338333fb04e0762edee65ca253) )
ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(076a84e1) SHA1(f58cb4cd874e1f3f266a5ccbf8ffb5e0111034d3) )
@ -2006,7 +1991,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) )
@ -2016,7 +2001,7 @@ ROM_START( wivernwg )
ROM_RELOAD( 0x40000, 0x20000 )
ROM_RELOAD( 0x60000, 0x20000 )
ROM_REGION( 0x1000000, "gfx1", 0 ) /* gfx data */
ROM_REGION( 0x1000000, "gfx", 0 ) /* gfx data */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(fb3541b6) SHA1(4f569ac7bde92c5febf005ab73f76552421ec223) ) /* MX 29F1610MC-16 flash roms with no labels */
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(516aca48) SHA1(42cf5678eb4c0ee7da2ab0bd66e4e34b2735c75a) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1c764f95) SHA1(ba6ac1376e837b491bc0269f2a1d10577a3d40cb) )
@ -2032,7 +2017,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) )
@ -2042,7 +2027,7 @@ ROM_START( wyvernwg )
ROM_RELOAD( 0x40000, 0x20000 )
ROM_RELOAD( 0x60000, 0x20000 )
ROM_REGION( 0x1000000, "gfx1", 0 ) /* gfx data */
ROM_REGION( 0x1000000, "gfx", 0 ) /* gfx data */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(fb3541b6) SHA1(4f569ac7bde92c5febf005ab73f76552421ec223) ) /* MX 29F1610MC-16 flash roms with no labels */
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(516aca48) SHA1(42cf5678eb4c0ee7da2ab0bd66e4e34b2735c75a) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1c764f95) SHA1(ba6ac1376e837b491bc0269f2a1d10577a3d40cb) )
@ -2058,7 +2043,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) )
@ -2068,7 +2053,7 @@ ROM_START( wyvernwga )
ROM_RELOAD( 0x40000, 0x20000 )
ROM_RELOAD( 0x60000, 0x20000 )
ROM_REGION( 0x1000000, "gfx1", 0 ) /* gfx data */
ROM_REGION( 0x1000000, "gfx", 0 ) /* gfx data */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(fb3541b6) SHA1(4f569ac7bde92c5febf005ab73f76552421ec223) ) /* MX 29F1610MC-16 flash roms with no labels */
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(516aca48) SHA1(42cf5678eb4c0ee7da2ab0bd66e4e34b2735c75a) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1c764f95) SHA1(ba6ac1376e837b491bc0269f2a1d10577a3d40cb) )
@ -2130,7 +2115,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) )
@ -2140,7 +2125,7 @@ ROM_START( misncrft ) /* Version 2.7 */
ROM_RELOAD( 0x40000, 0x20000 )
ROM_RELOAD( 0x60000, 0x20000 )
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "gfx", 0 )
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(748c5ae5) SHA1(28005f655920e18c82eccf05c0c449dac16ee36e) )
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(f34ae697) SHA1(2282e3ef2d100f3eea0167b25b66b35a64ddb0f8) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(e37ece7b) SHA1(744361bb73905bc0184e6938be640d3eda4b758d) )
@ -2155,7 +2140,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
@ -2165,7 +2150,7 @@ ROM_START( misncrfta ) /* Version 2.4 */
ROM_RELOAD( 0x40000, 0x20000 )
ROM_RELOAD( 0x60000, 0x20000 )
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "gfx", 0 )
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(748c5ae5) SHA1(28005f655920e18c82eccf05c0c449dac16ee36e) )
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(f34ae697) SHA1(2282e3ef2d100f3eea0167b25b66b35a64ddb0f8) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(e37ece7b) SHA1(744361bb73905bc0184e6938be640d3eda4b758d) )
@ -2254,7 +2239,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 */
@ -2263,7 +2248,7 @@ ROM_START( yorijori )
ROM_RELOAD( 0x40000, 0x20000 )
ROM_RELOAD( 0x60000, 0x20000 )
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "gfx", 0 )
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(9299ce36) SHA1(cd8a9e2619da93e2015704230e8189a6ae52de69) )
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(16584ff2) SHA1(69dce8c33b246b4327b330233116c1b72a8b7e84) )
ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(b5d1892f) SHA1(20afcd00a506ec0fd1c4fffb2d9c853c8dc61e2e) )
@ -2323,11 +2308,11 @@ 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) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* gfx data */
ROM_REGION( 0x800000, "gfx", 0 ) /* gfx data */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(8334459d) SHA1(70ad560dada8aa8ce192e5307bd805744b82fcfe) )
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(f28578a5) SHA1(a5c7b17aff101f1f4f52657d0567a6c9d12a178d) )
/* roml01 empty */
@ -2431,11 +2416,11 @@ 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 */
ROM_REGION( 0x800000, "gfx1", 0 ) /* gfx data */
ROM_REGION( 0x800000, "gfx", 0 ) /* gfx data */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(c677aac3) SHA1(356073a29260e8e6c29dd12b2113b30140c6108c) )
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(b6337d4a) SHA1(2f46e2933af7fd0f71083900d5e6e4f602ab4c66) )
/* roml01 empty */
@ -2451,11 +2436,11 @@ 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 */
ROM_REGION( 0x800000, "gfx1", 0 ) /* gfx data */
ROM_REGION( 0x800000, "gfx", 0 ) /* gfx data */
ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(c677aac3) SHA1(356073a29260e8e6c29dd12b2113b30140c6108c) )
ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(b6337d4a) SHA1(2f46e2933af7fd0f71083900d5e6e4f602ab4c66) )
/* roml01 empty */
@ -2516,11 +2501,11 @@ 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) )
ROM_REGION( 0x4000000, "gfx1", 0 ) /* 16x16x8 Sprites */
ROM_REGION( 0x4000000, "gfx", 0 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "g05", 0x0000002, 0x800000, CRC(64c8f493) SHA1(d487a74c813abbd0a612f8346eed8a7c3ff3e84e) )
ROM_LOAD32_WORD( "g09", 0x0000000, 0x800000, CRC(c359febb) SHA1(7955385748e24dd076bc4f954b193a53c0a729c5) )
ROM_LOAD32_WORD( "g06", 0x1000002, 0x800000, CRC(ffbc9fe5) SHA1(5e0e5cfdf6af23db0733c9fedee9c5f9ccde1109) )
@ -2547,13 +2532,13 @@ 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) )
ROM_LOAD( "1.rom1", 0x00000, 0x80000, CRC(50522da1) SHA1(28f92fc818513d7a4934b9f8e5d39243d720cc80) )
ROM_REGION( 0x2000000, "gfx1", ROMREGION_ERASE00 ) /* 16x16x8 Sprites */
ROM_REGION( 0x2000000, "gfx", ROMREGION_ERASE00 ) /* 16x16x8 Sprites */
ROM_LOAD32_WORD( "boong-ga.roml00", 0x0000000, 0x200000, CRC(18be5f92) SHA1(abccc578e5e9652a7829165b485776671938b9d9) )
ROM_LOAD32_WORD( "boong-ga.romu00", 0x0000002, 0x200000, CRC(0158ba9e) SHA1(b6cb699f0779b26d578043c42a0ce14a59fd8ac5) )
ROM_LOAD32_WORD( "boong-ga.roml05", 0x0400000, 0x200000, CRC(76d60553) SHA1(13a47aed2e7213be98e55a938887a3c2fb314fbe) )
@ -2971,8 +2956,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 +3032,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 +3047,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 +3055,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

@ -27,20 +27,22 @@ 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)
, m_soundlatch(*this, "soundlatch")
, m_system_io(*this, "SYSTEM")
{
}
required_device<generic_latch_8_device> m_soundlatch;
required_ioport m_system_io;
std::unique_ptr<uint32_t[]> m_vega_vram;
uint8_t m_vega_vbuffer;
std::unique_ptr<uint8_t[]> m_vram;
int m_vbuffer;
DECLARE_WRITE32_MEMBER(vega_vram_w);
DECLARE_READ32_MEMBER(vega_vram_r);
DECLARE_WRITE8_MEMBER(vram_w);
DECLARE_READ8_MEMBER(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 +55,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,78 +72,47 @@ 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)
WRITE8_MEMBER(vegaeo_state::vram_w)
{
switch(mem_mask)
{
case 0xffffffff:
vega_vram_w(space,offset,data,0xff000000);
vega_vram_w(space,offset,data,0x00ff0000);
vega_vram_w(space,offset,data,0x0000ff00);
vega_vram_w(space,offset,data,0x000000ff);
return;
case 0xffff0000:
vega_vram_w(space,offset,data,0xff000000);
vega_vram_w(space,offset,data,0x00ff0000);
return;
case 0x0000ffff:
vega_vram_w(space,offset,data,0x0000ff00);
vega_vram_w(space,offset,data,0x000000ff);
return;
default:
// don't write transparent pen
if((data & mem_mask) == mem_mask)
return;
}
COMBINE_DATA(&m_vega_vram[offset + m_vega_vbuffer * (0x14000/4)]);
// don't write transparent pen
if (data != 0xff)
COMBINE_DATA(&m_vram[offset + m_vbuffer * 0x14000]);
}
READ32_MEMBER(vegaeo_state::vega_vram_r)
READ8_MEMBER(vegaeo_state::vram_r)
{
return m_vega_vram[offset + (0x14000/4) * m_vega_vbuffer];
return m_vram[offset + 0x14000 * m_vbuffer];
}
WRITE32_MEMBER(vegaeo_state::vega_misc_w)
{
// other bits ???
m_vega_vbuffer = data & 1;
m_vbuffer = data & 1;
}
READ32_MEMBER(vegaeo_state::vegaeo_custom_read)
{
speedup_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));
return m_system_io->read();
}
ADDRESS_MAP_START(vegaeo_state::vega_map)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM
AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE(vega_vram_r, vega_vram_w)
AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE8(vram_r, vram_w, 0xffffffff)
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
@ -185,34 +151,18 @@ INPUT_PORTS_END
VIDEO_START_MEMBER(vegaeo_state,vega)
{
m_vega_vram = std::make_unique<uint32_t[]>(0x14000*2/4);
save_pointer(NAME(m_vega_vram.get()), 0x14000*2/4);
save_item(NAME(m_vega_vbuffer));
m_vram = std::make_unique<uint8_t[]>(0x14000*2);
save_pointer(NAME(m_vram.get()), 0x14000*2);
save_item(NAME(m_vbuffer));
}
uint32_t vegaeo_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int x,y,count;
int color;
count = 0;
for (y=0;y < 240;y++)
for (int y = 0; y < 240; y++)
{
for (x=0;x < 320/4;x++)
for (int x = 0; x < 320; x++)
{
color = m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff;
bitmap.pix16(y, x*4 + 3) = color;
color = (m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff00) >> 8;
bitmap.pix16(y, x*4 + 2) = color;
color = (m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff0000) >> 16;
bitmap.pix16(y, x*4 + 1) = color;
color = (m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff000000) >> 24;
bitmap.pix16(y, x*4 + 0) = color;
count++;
bitmap.pix16(y, x) = m_vram[0x14000 * (m_vbuffer ^ 1) + (y * 320) + x] & 0xff;
}
}
return 0;
@ -245,10 +195,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 +258,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

@ -10,32 +10,28 @@ 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_maincpu(*this, "maincpu")
, m_soundcpu(*this, "soundcpu")
, m_screen(*this, "screen")
, m_palette(*this, "palette")
, m_qs1000(*this, "qs1000")
, m_in0(*this, "IN0")
, m_penxport(*this, "PEN_X_P%u", 1)
, m_penyport(*this, "PEN_Y_P%u", 1)
, 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);
template<int Player> DECLARE_READ32_MEMBER(hidctch3_pen_r);
DECLARE_WRITE16_MEMBER(eolith_vram_w);
DECLARE_READ16_MEMBER(eolith_vram_r);
DECLARE_WRITE8_MEMBER(sound_p1_w);
DECLARE_READ8_MEMBER(qs1000_p1_r);
DECLARE_WRITE8_MEMBER(qs1000_p1_w);
@ -43,7 +39,6 @@ public:
DECLARE_DRIVER_INIT(eolith);
DECLARE_DRIVER_INIT(landbrk);
DECLARE_DRIVER_INIT(hidctch3);
DECLARE_DRIVER_INIT(hidctch2);
DECLARE_DRIVER_INIT(hidnc2k);
DECLARE_DRIVER_INIT(landbrka);
@ -59,13 +54,14 @@ public:
void ironfort(machine_config &config);
void eolith50(machine_config &config);
void eolith45(machine_config &config);
void hidctch3(machine_config &config);
void eolith_map(address_map &map);
void hidctch3_map(address_map &map);
void sound_io_map(address_map &map);
void sound_prg_map(address_map &map);
protected:
// shared with eolith16.cpp, vegaeo.cpp
optional_ioport m_eepromoutport;
optional_device<qs1000_device> m_qs1000;
void speedup_read();
void init_speedup();
@ -76,20 +72,17 @@ private:
optional_device<i8032_device> m_soundcpu;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<qs1000_device> m_qs1000;
optional_ioport m_in0; // klondkp doesn't have it
optional_ioport m_penx1port;
optional_ioport m_peny1port;
optional_ioport m_penx2port;
optional_ioport m_peny2port;
optional_ioport_array<2> m_penxport;
optional_ioport_array<2> m_penyport;
optional_memory_bank m_sndbank;
int m_coin_counter_bit;
std::unique_ptr<uint16_t[]> m_vram;
int m_buffer;
std::unique_ptr<uint32_t[]> m_vram;
uint8_t m_sound_data;
// speedups - see machine/eolithsp.c
int m_speedup_address;

View File

@ -4,38 +4,27 @@
#include "includes/eolith.h"
WRITE32_MEMBER(eolith_state::eolith_vram_w)
WRITE16_MEMBER(eolith_state::eolith_vram_w)
{
uint32_t *dest = &m_vram[offset+(0x40000/4)*m_buffer];
if (mem_mask == 0xffffffff)
if ((mem_mask == 0xffff) && (data & ~0x8000))
{
// candy needs this to always write to RAM (verified that certain glitches, for example the high score table, don't occur on real hw)
// other games clearly don't.
// is there a cpu bug, or is there more to this logic / a flag which disables it?
if (~data & 0x80000000)
*dest = (*dest & 0x0000ffff) | (data & 0xffff0000);
if (~data & 0x00008000)
*dest = (*dest & 0xffff0000) | (data & 0x0000ffff);
COMBINE_DATA(&m_vram[offset+(0x40000/2)*m_buffer]);
}
else if (((mem_mask == 0xffff0000) && (~data & 0x80000000)) ||
((mem_mask == 0x0000ffff) && (~data & 0x00008000)))
COMBINE_DATA(dest);
}
READ32_MEMBER(eolith_state::eolith_vram_r)
READ16_MEMBER(eolith_state::eolith_vram_r)
{
return m_vram[offset+(0x40000/4)*m_buffer];
return m_vram[offset+(0x40000/2)*m_buffer];
}
VIDEO_START_MEMBER(eolith_state,eolith)
{
m_vram = std::make_unique<uint32_t[]>(0x40000*2/4);
save_pointer(NAME(m_vram.get()), 0x40000*2/4);
m_vram = std::make_unique<uint16_t[]>(0x40000);
save_pointer(NAME(m_vram.get()), 0x40000);
save_item(NAME(m_buffer));
}
@ -43,16 +32,9 @@ uint32_t eolith_state::screen_update_eolith(screen_device &screen, bitmap_ind16
{
for (int y = 0; y < 240; y++)
{
uint32_t *src = &m_vram[(m_buffer ? 0 : 0x10000) | (y * (336 / 2))];
uint16_t *dest = &bitmap.pix16(y);
for (int x = 0; x < 320; x += 2)
for (int x = 0; x < 320; x++)
{
dest[0] = (*src >> 16) & 0x7fff;
dest[1] = (*src >> 0) & 0x7fff;
src++;
dest += 2;
bitmap.pix16(y, x) = m_vram[(0x40000/2) * (m_buffer ^ 1) + (y * 336) + x] & 0x7fff;
}
}