summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/misc/amuzy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/misc/amuzy.cpp')
-rw-r--r--src/mame/misc/amuzy.cpp547
1 files changed, 547 insertions, 0 deletions
diff --git a/src/mame/misc/amuzy.cpp b/src/mame/misc/amuzy.cpp
new file mode 100644
index 00000000000..f5cdaedfa1e
--- /dev/null
+++ b/src/mame/misc/amuzy.cpp
@@ -0,0 +1,547 @@
+// license:BSD-3-Clause
+// copyright-holders:R. Belmont
+/******************************************************************************
+
+ amuzy.cpp - Amuzy cartridge arcade/medal system
+ Skeleton by R. Belmont
+
+ H8/3007 CPU
+ Yamaha YGV625 sprite processor and CRTC
+ OKI M9810 sound
+
+ Many series of games were done on this platform. As of now, games
+ for the following series have been dumped:
+
+ ??? means cart code not verified
+ *** means no versions dumped + cart code non verified
+
+ "for girls series"
+ GA4004-0 - Wan Wan Dash - ワンワンダッシュ
+ GB4004-0 - Docchi Fighter - ドッチファイター
+*** GC4004-0 - Kingyo Carnival - 金魚カーニバル
+ GD4004-0 - Mogu Mogu Hammer - モグモグハンマー
+*** GE4004-0 - Ninniki Ninja Battle - ニンニキ忍者バトル
+*** GF4004-0 - Waku Waku Diving - わくわくダイビング
+*** GG4004-0 - Shippe Jungle - しっぺジャングル
+*** GH4004-0 - Katori Pachin - 蚊とりパッチン
+ more?
+
+ "kids medal series"
+ KA4004-0 - Wanikko Punch - ワニッコパンチ
+ KB4004-0 - Boo Boo Donpatchi - ブーブードンパッチ
+ KC4004-0 - Fisherman Battle - フィッシャーマンバトル
+ KD4004-0 - Haunted Hunter - ホーンテッドハンター
+ KE4004-0 - Zenigata Ponta - 銭形ポン太
+ KF4004-0 - Rodeo King - ロデオキング
+ KG4004-0 - Dojokko Tsukami - どじょっ子つかみ
+ KH4004-0 - Katori Attack - 蚊とりアタック
+*** KI4004-0 - ??? (maybe unreleased) - ???
+ KJ4004-0 - Shippe Champion - しっぺチャンピオン
+*** KK4004-0 - ??? (maybe unreleased) - ???
+ KL4004-0 - Wanpaku Pirates - わんぱくパイレーツ
+ KM4004-0 - Itazura Cockroach - いたずらコックローチ
+ more?
+
+ "kids and kiddy series"
+ YA4004-0 - Acchi Muite Hoi Battle - あっちむいてホイバトル
+*** YB4004-0 - Yubi Zumou Senshuken - 指ずもう選手権
+*** YC4004-0 - Dekopin Janken - デコピンじゃんけん
+*** YD4004-0 - Tsuna Hiki Champ - つなひきチャンプ
+*** YE4004-0 - Chanbara Kids - チャンバラキッズ
+*** YF4004-0 - Baba Nuki Shiyouze! - ばばぬきしようぜ!
+*** YG4004-0 - Gachinko Ude Zumou - ガチンコ腕ずもう
+*** YH4004-0 - Jarinko Kenshi - じゃりんこ拳士
+ more?
+
+ Other series for which hardware hasn't been verified to be the same are:
+ 'family amusement series'
+ 'kids medal twin series'
+ 'KW series'
+ 'mass medal series'
+ 'new kids series'
+
+
+ For mmhammer:
+ NMI vector is valid but doesn't return (error handler?)
+ Timer/counter B0 IRQ vector is valid and runs
+ SCI0 and SCI1 (UART) IRQs are valid
+ All other vectors are RTE.
+
+===============================================================================
+
+ YGV625 preliminary pinout
+
+ D15-0 CPU data bus
+ A13-1 CPU address bus
+ A0[WRH_N] CPU address bus/write pulse input
+ CS_N chip select
+ RD_N Read pulse input
+ WRL_N Light (?) pulse input
+ WAIT_N CPU pass wait (tristate)
+ READY_N CPU bus ready (tristate)
+ INT_N irq (open drain)
+ C16_N CPU bus width selection
+ LEND_N endian control
+ RESET_N reset input
+
+ MD31-0 CG memory data bus
+ MA24-1 CG memory address bus
+ CE3-0_N CG memory chip enable
+ OE3-0_N CG memory output enable
+ WEH_N, WEL_N CG memory write enable
+
+===============================================================================
+
+ cart pinout
+
+ +------------------------------------------+
+ | |
+ | +------+ +------+ +------+ |
+ | | | | | | | |
+ | |CHIP 1| |CHIP 2| |CHIP 3| |
+ | | | | | | | |
+ | +------+ +------+ +------+ |
+ | |
+ ++ +-+ +-+ ++
+ |_____| |________________________| |_____|
+ A66 A01
+
+ +------------------------------------------+
+ | |
+ | |
+ | |
+ | |
+ | |
+ | |
+ | |
+ ++ +-+ +-+ ++
+ |_____| |________________________| |_____|
+ B01 B66
+
+
+
+ A | | B |
+ ---------------
+ GND |01| GND ---------+
+ A08 |02| D00 |
+ A09 |03| D01 |
+ A10 |04| D02 |
+ A11 |05| D03 |
+ A12 |06| D04 |
+ A13 |07| D05 |
+ A14 |08| D06 |
+ A15 |09| D07 | CHIP U2
+ VCC |10| VCC |
+ A16 |11| A00 |
+ A17 |12| A01 |
+ A18 |13| A02 |
+ A19 |14| A03 |
+ A20 |15| A04 |
+ A21 |16| A05 |
+ CE |17| A06 |
+ OE |18| A07 |
+ GND |19| GND |
+ WE_U2|20| A19 ---------+
+ RE_U2|21| A18 |
+ D15 |22| A17 |
+ D14 |23| A16 |
+ D13 |24| A15 |
+ D12 |25| A14 |
+ D11 |26| A13 |
+ D10 |27| A12 |
+ VCC |28| VCC |
+ D09 |29| A11 |
+ D08 |30| A10 | CHIP U1
+ D07 |31| A09 |
+ D06 |32| A08 |
+ D05 |33| A07 |
+ D04 |34| A06 |
+ D03 |35| A05 |
+ D02 |36| A04 |
+ GND |37| GND |
+ D01 |38| A03 |
+ D00 |39| A02 |
+ CE |40| A01 |
+ OE |41| A00 |
+ WE_U1|42| A00 ---------+
+ RE_U3|43| A01 |
+ D00 |44| A02 |
+ D01 |45| A03 |
+ VCC |46| VCC |
+ D02 |47| A04 |
+ D03 |48| A05 |
+ D04 |49| A06 |
+ D05 |50| A07 |
+ D06 |51| A08 |
+ D07 |52| A09 |
+ GND |53| GND |
+ D08 |54| A10 | CHIP U3
+ D09 |55| A11 |
+ D10 |56| A12 |
+ D11 |57| A13 |
+ D12 |58| A14 |
+ D13 |59| A15 |
+ VCC |60| VCC |
+ D14 |61| A16 |
+ D15 |62| A17 |
+ CE |63| A18 |
+ OE |64| A19 |
+ WE |65| A20 |
+ GND |66| GND ---------+
+ --------------
+ A | | B
+******************************************************************************/
+
+#include "emu.h"
+
+#include "cpu/h8/h83006.h"
+#include "machine/ram.h"
+#include "machine/timer.h"
+#include "sound/okim9810.h"
+
+#include "emupal.h"
+#include "screen.h"
+#include "speaker.h"
+
+
+namespace {
+
+class amuzy_state : public driver_device
+{
+public:
+ amuzy_state(const machine_config &mconfig, device_type type, const char *tag);
+
+ void amuzy(machine_config &config);
+
+private:
+ required_device<h83007_device> m_maincpu;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ required_device<okim9810_device> m_oki;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline);
+
+ void amuzy_map(address_map &map) ATTR_COLD;
+
+ u16 status_r(offs_t offset);
+ void status_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ u16 m_status[2]{};
+
+ u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+};
+
+amuzy_state::amuzy_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+ m_oki(*this, "oki")
+{
+ std::fill(std::begin(m_status), std::end(m_status), 0);
+
+}
+
+u32 amuzy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ screen.priority().fill(0, cliprect);
+ return 0;
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(amuzy_state::scanline)
+{
+}
+
+// video or FIFO status bits
+u16 amuzy_state::status_r(offs_t offset)
+{
+ // Note: if bit 0 doesn't act like a heartbeat then a watchdog reset will eventually occur.
+ if (offset == 0)
+ return (m_status[0] & 0xfffe) | m_screen->vblank();
+
+ // PC=0xb2ee, FIFO empty?
+ m_status[1] ^= 0x20;
+ return m_status[1];
+}
+
+void amuzy_state::status_w(offs_t offset, u16 data, u16 mem_mask)
+{
+ COMBINE_DATA(&m_status[offset]);
+}
+
+
+void amuzy_state::amuzy_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x200000, 0x20ffff).ram();
+ // 0x220000- 0x22000d YGV625 CG memory readback?
+ // 0x600000- 0x601fff) YGV625 display list
+ map(0x600000, 0x603fff).ram();
+ // 0x603c00- 0x603c7f (at least) YGV625 registers
+ map(0x603c4c, 0x603c4f).rw(FUNC(amuzy_state::status_r), FUNC(amuzy_state::status_w));
+}
+
+void amuzy_state::amuzy(machine_config &config)
+{
+ H83007(config, m_maincpu, 20_MHz_XTAL); // 20 MHz rated part, 20 MHz oscillator module is present
+ m_maincpu->set_addrmap(AS_PROGRAM, &amuzy_state::amuzy_map);
+ m_maincpu->read_port7().set_ioport("IN0");
+ m_maincpu->read_portb().set_ioport("IN1");
+
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ // screen parameters are completely made up
+ m_screen->set_refresh_hz(59.62);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
+ m_screen->set_size(64*8, 32*8);
+ m_screen->set_visarea(80, 400-1, 16, 240-1);
+ m_screen->set_screen_update(FUNC(amuzy_state::screen_update));
+ m_screen->set_palette(m_palette);
+
+ PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 256);
+
+ TIMER(config, "scantimer").configure_scanline(FUNC(amuzy_state::scanline), m_screen, 0, 1);
+
+ SPEAKER(config, "speaker", 2).front();
+
+ OKIM9810(config, m_oki, XTAL(4'096'000));
+ m_oki->add_route(0, "speaker", 1.00, 0);
+ m_oki->add_route(1, "speaker", 1.00, 1);
+}
+
+static INPUT_PORTS_START( amuzy )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x01, "IN0" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("IN1")
+ // boobood PC=1756 xor.b #h'f8, r4l (-> active high for bits 0-2, hopper related?)
+ PORT_DIPNAME( 0x01, 0x00, "IN1" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+ROM_START( mmhammer )
+ ROM_REGION(0x80000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "s29al004d70tfi01.u1", 0x000000, 0x080000, CRC(f6aa7880) SHA1(c3dfdc5250875c365c7146b6fe6288d1605d17e5) )
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "s29al016d70tfi01.u2", 0x000000, 0x200000, CRC(beb65917) SHA1(835a0ceef2fdfee2730d88e04a4a131575048979) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "s29al016d70tfi01.u3", 0x000000, 0x200000, CRC(cedb6c55) SHA1(c2981b2547468723da6f5416a81b937b293576fc) )
+ROM_END
+
+ROM_START( docchift )
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "s29al004d70tfi01.u1", 0x000000, 0x080000, CRC(b69d97f6) SHA1(8ecb6300d435200cf694f6f0d6a847d60354dbae) )
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "s29al016d70tfi01.u2", 0x000000, 0x200000, CRC(044f004b) SHA1(c9f8797fcd5f67831311e4fea2621d7337c74fa2) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "s29al016d70tfi01.u3", 0x000000, 0x200000, CRC(fb668dbd) SHA1(49514b0c886578f065e47d9c7a5453e09622ba55) )
+ROM_END
+
+ROM_START( amhbattl )
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "s29al004d70tfi01.u1", 0x000000, 0x080000, CRC(b24f7bf4) SHA1(254e814c26a1430d6fecc68e07e7ee2cdab77f21) )
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "s29al016d70tfi01.u2", 0x000000, 0x200000, CRC(cb1fd823) SHA1(f425a37ca425315f294366298146c3f6547a28c0) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "s29al016d70tfi01.u3", 0x000000, 0x200000, CRC(f5bfb1e8) SHA1(e36be311782e4bcbd00a8bc93473f23e5c39c67a) )
+ROM_END
+
+ROM_START( shpchamp ) // HA9022-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "s29al004.u1", 0x000000, 0x080000, CRC(194dc931) SHA1(eae05e6627d09daa4b71154f665237348bf0947c) ) // 11xxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "s29al016.u2", 0x000000, 0x200000, CRC(677cf07b) SHA1(f30892aa18da14c2077e8847a295112616b06386) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "s29al016.u3", 0x000000, 0x200000, CRC(d218c777) SHA1(7cb09925419864ec784f31802b10e9649eba3e58) )
+ROM_END
+
+ROM_START( zenponta ) // HA9020-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "29f400.u1", 0x000000, 0x080000, CRC(1debce88) SHA1(035cb45da6c44fa54756282401003c60b44174eb) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "29f016.u2", 0x000000, 0x200000, CRC(0ae3354b) SHA1(05c22650ab8c60ad09d30ca83c0d3c628f4be622) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "29lv160.u3", 0x000000, 0x200000, CRC(76ed6b4a) SHA1(5b3523353771d91c0382b8c2440cae795a8207ed) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00
+ROM_END
+
+ROM_START( wwdash )
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "s29al004d70tfi01.u1", 0x000000, 0x080000, CRC(b8984518) SHA1(23f8f2988a44bf0f0a14c39363f97f8e1b12cf62) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "s29al016d70tfi01.u2", 0x000000, 0x200000, CRC(c02c4fed) SHA1(e3fd56621fc7ca4558f3044a1b13b6b58dd4c368) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "s29al016d70tfi01.u3", 0x000000, 0x200000, CRC(cd66dc10) SHA1(76051b248882f7b5c0adfd0ae62283a16d440523) )
+ROM_END
+
+ROM_START( boobood ) // HA9019-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "29f400.u1", 0x000000, 0x080000, CRC(79411d05) SHA1(31727db741aa14224e60d7baa817081ba272c8cf) ) // 11xxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "29f016a.u2", 0x000000, 0x200000, CRC(edf8d7e2) SHA1(aee4d70dfd0fcb0d766365722b8712bb3a63efb4) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "29lv160.u3", 0x000000, 0x200000, CRC(684523f0) SHA1(ca96918abde4ec63f33d82cf30b121f2ac05f68d) ) // 1xxxxxxxxxxxxxxxxxxxx = 0xFF
+ROM_END
+
+ROM_START( fishbatl ) // HA9008-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "29f400.u1", 0x000000, 0x080000, CRC(9d6a8322) SHA1(4819370bb1f092f1c018353f153e623e0297a263) ) // 11xxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "29f016a.u2", 0x000000, 0x200000, CRC(95f664f8) SHA1(050f074f7646336b6ce7f5e9c34d50d68d0a9a00) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "29lv160.u3", 0x000000, 0x200000, CRC(dc8f6b48) SHA1(75f92d38b1e716e3c1c0cdb25f444671789dd23a) )
+ROM_END
+
+ROM_START( wanpakup ) // HA9020-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "29f400.u1", 0x000000, 0x080000, CRC(8280d58f) SHA1(2be99ae6ddae795495a09fcbab55c880a0adb890) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "29f016a.u2", 0x000000, 0x200000, CRC(ae4b65ad) SHA1(5afb0dbaa37ba90c03ed18929062f6e2c136dca0) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "29lv160.u3", 0x000000, 0x200000, CRC(91fe39d5) SHA1(e900824a9edc47edb9444812daa2e416f8365e0c) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00
+ROM_END
+
+ROM_START( wanpunch ) // HA9008-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "u1", 0x000000, 0x080000, CRC(822c8b08) SHA1(685a0aaa4bb71c75706a97f270e229d89fb26fbf) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "u2", 0x000000, 0x200000, CRC(52862706) SHA1(a8ea16bafccad0cddcfa238402268bd8a2d4788b) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "u3", 0x000000, 0x200000, CRC(48c3eee9) SHA1(291aaf0ffd5c46ed84e616508cff7c930790660a) )
+ROM_END
+
+ROM_START( hhunter ) // HA9008-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "u1", 0x000000, 0x080000, CRC(3fbee974) SHA1(093f3a50ab867c88f6093f7e704c9e4e3b916fa0) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "u2", 0x000000, 0x200000, CRC(b95a7b36) SHA1(7604c6df90836656fd1c861748a7a9035d7818c2) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "u3", 0x000000, 0x200000, CRC(766ab340) SHA1(aa0b857ec5da879c33c678aa9f0d4e0d8dca65bf) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00
+ROM_END
+
+ROM_START( rodeokng ) // HA9019-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "u1", 0x000000, 0x080000, CRC(2a91d532) SHA1(7770be6297196f8c7e525e10a244cf416759d0b7) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "u2", 0x000000, 0x200000, CRC(d636a639) SHA1(35aba71c0a10762cd91dda4d08a711768d74679a) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "u3", 0x000000, 0x200000, CRC(3072eeed) SHA1(dab01071f4dc7131f7e78972c9a9042a2e8ac6d6) )
+ROM_END
+
+ROM_START( dojokkot ) // HA9020-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "u1", 0x000000, 0x080000, CRC(38873dce) SHA1(36f1372dd80a9354209e5e274ebdff93a81d626d) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "u2", 0x000000, 0x200000, CRC(00756334) SHA1(747c5873f4b8a04b1956b447575a27ae23c57457) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "u3", 0x000000, 0x200000, CRC(1123e2ce) SHA1(b702230d2494ecda9d90c42f87ab2396c316552d) )
+ROM_END
+
+ROM_START( itazurac ) // HA9022-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "u1", 0x000000, 0x080000, CRC(3262a286) SHA1(d5cf6749269e59c54c544ab6a0c324cf4dab176a) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ // this ROM wouldn't read consistently: most times it gave 0x88 and sometimes 0x00 at offset 0. Here we go with 0x88.
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "u2", 0x000000, 0x200000, CRC(5103b215) SHA1(5fe42bd0d29d2cfc9e0d35162ee15e3ff55c4bcb) )
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "u3", 0x000000, 0x200000, CRC(76ce7b79) SHA1(749bc519cf66c0aec615881824e417719af78d2b) )
+ROM_END
+
+ROM_START( katori ) // HA9020-0
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "29f400.u1", 0x000000, 0x080000, CRC(34b03727) SHA1(16d18ff7d322f1c1b297de89de3737d407c5a27e) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x1000000, "oki", ROMREGION_ERASEFF )
+ ROM_LOAD( "29f016.u2", 0x000000, 0x200000, CRC(ee7f2bb6) SHA1(1638d5196499fd3669a97fc9e64adacf59bc6108) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00
+
+ ROM_REGION(0x200000, "gfx", 0 )
+ ROM_LOAD( "mx29lv160.u3", 0x000000, 0x200000, CRC(f57c33f6) SHA1(3d5dd858e94156c4c7b1f6b8934b0f7667fd66ad) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00
+ROM_END
+
+} // anonymous namespace
+
+GAME( 2005, boobood, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Boo Boo Donpatchi (Japan, ver 1.01)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2005, dojokkot, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Dojokko Tsukami (Japan, ver 1.02)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2005, fishbatl, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Fisherman Battle (Japan, ver 1.03)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2005, hhunter, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Haunted Hunter (Japan, ver 1.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2005, katori, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Katori Attack (Japan, ver 1.03)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2005, rodeokng, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Rodeo King (Japan, ver 1.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2005, wanpunch, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Wanikko Punch (Japan, ver 1.20)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2005, zenponta, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Zenigata Ponta (Japan, ver 1.02)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2006, amhbattl, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Acchi Muite Hoi Battle (Japan, ver 1.04)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2006, wanpakup, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Wanpaku Pirates (Japan, ver 1.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2007, docchift, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Docchi Fighter (Japan, ver 1.02)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2007, itazurac, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Itazura Cockroach (Japan, ver 1.02)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2007, wwdash, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Wan Wan Dash (Japan, ver 1.01)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2008, mmhammer, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Mogu Mogu Hammer (Japan, ver 1.01)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2008, shpchamp, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Shippe Champion (Japan, ver 1.02)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )