summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/megatech.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/megatech.cpp')
-rw-r--r--src/mame/drivers/megatech.cpp1495
1 files changed, 0 insertions, 1495 deletions
diff --git a/src/mame/drivers/megatech.cpp b/src/mame/drivers/megatech.cpp
deleted file mode 100644
index 44c865bea2a..00000000000
--- a/src/mame/drivers/megatech.cpp
+++ /dev/null
@@ -1,1495 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood, Barry Rodewald
-/* Sega MegaTech
-
-About MegaTech:
-
-Megatech games are identical to their Genesis/SMS equivalents, however the Megatech cartridges contain
-a BIOS rom with the game instructions. The last part number of the bios ROM is the cart/game ID code.
-
-The instruction rom appears to map at 0x300000 in the cart space.
-
-In Megatech games your coins buy you time to play the game, how you perform in the game does not
-matter, you can die and start a new game providing you still have time, likewise you can be playing
-well and run out of time if you fail to insert more coins. This is the same method Nintendo used
-with their Playchoice 10 system.
-
-The BIOS screen is based around SMS hardware, with an additional Z80 and SMS VDP chip not present on
-a standard Genesis.
-
-SMS games run on Megatech in the Genesis's SMS compatibility mode, where the Genesis Z80 becomes the
-main CPU and the Genesis VDP acts in a mode mimicking the behavior of the SMS VDP. A pin on the carts
-determines which mode the game runs in.
-
-Additions will only be made to this driver if proof that the dumped set are original roms with original
-Sega part numbers is given..
-
-
-Sega Mega Tech Cartridges (Readme by Guru)
--------------------------
-
-These are cart-based games for use with Sega Mega Tech hardware. There are 6 known types of carts. All carts
-are very simple, almost exactly the same as Mega Play carts. They contain just 2 or 3 ROMs.
-PCB 171-6215A has locations for 2 ROMs and is dated 1991. PCB 171-6215A is also used in Mega Play!
-PCB 171-5782 has locations for 2 ROMs and is dated 1989.
-PCB 171-5869A has locations for 3 ROMs and is dated 1989.
-PCB 171-5834 has locations for 3 ROMs and is dated 1989.
-PCB 171-5783 has locations for 2 ROMs and is dated 1989.
-PCB 171-5784 has locations for 2 ROMs and is dated 1989. It also contains a custom Sega IC 315-5235
-
- |------------------------------- ROMs --------------------------------|
- | |
-Game PCB # Sticker on PCB Sticker on cart IC1 IC2 IC3
--------------------------------------------------------------------------------------------------------------------------------------------------
-Altered Beast 171-5782 837-6963-01 610-0239-01 MPR-12538F (834200A) EPR-12368-01 (27C256) n/a
-Space Harrier II 171-5782 837-6963-02 610-0239-02 MPR-11934 (834200) EPR-12368-02 (27256) n/a
-Super Thunder Blade 610-0239-03
-Great Golf 610-0239-04
-Afterburner 610-0239-05
-Out Run 171-5783 837-6963-06 610-0239-06 MPR-11078 (Mask) EPR-12368-06 (27256) n/a
-Alien Syndrome 171-5783 837-6963-07 610-0239-07 MPR-11194 (232011) EPR-12368-07 (27256) n/a
-Shinobi 610-0239-08
-Fantasy Zone 610-0239-09
-Afterburner 171-5784 837-6963-10 610-0239-10 315-5235 (custom) MPR-11271-T (834000) EPR-12368-10 (27256)
-Great Football 171-5783 837-6963-19 610-0239-19 MPR-10576F (831000) EPR-12368-19 (27256) n/a
-World Championship Soccer 171-5782 837-6963-21 610-0239-21 MPR-12607B (uPD23C4000) EPR-12368-21 (27256) n/a
-Tetris 171-5834 837-6963-22 610-0239-22 MPR-12356F (831000) MPR-12357F (831000) EPR-12368-22 (27256)
-Ghouls & Ghosts 171-5869A - 610-0239-23 MPR-12605 (40 pins) MPR-12606 (40 pins) EPR-12368-23 (27256)
-Super Hang On 171-5782 837-6963-24 610-0239-24 MPR-12640 (234000) EPR-12368-24 (27256) n/a
-Forgotten Worlds 171-5782 837-6963-26 610-0239-26 MPR-12672-H (Mask) EPR-12368-26 (27256) n/a
-The Revenge Of Shinobi 171-5782 837-6963-28 610-0239-28 MPR-12675 S44 (uPD23C4000) EPR-12368-28 (27C256) n/a
-Arnold Palmer Tour Golf 171-5782 837-6963-31 610-0239-31 MPR-12645F (834200A) EPR-12368-31 (27256) n/a
-Super Real Basket Ball 171-5782 837-6963-32 610-0239-32 MPR-12904F (838200A) EPR-12368-32 (27256) n/a
-Tommy Lasorda Baseball 171-5782 837-6963-35 610-0239-35 MPR-12706F (834200A) EPR-12368-35 (27256) n/a
-ESWAT 171-5782 837-6963-38 610-0239-38 MPR-13192-H (uPD23C4000) EPR-12368-38 (27256) n/a
-Moonwalker 171-5782 837-6963-40 610-0239-40 MPR-13285A S61 (uPD23C4000) EPR-12368-40 (27256) n/a
-Shadow Dancer 171-5782 837-6963-43 610-0239-43 MPR-13571-S (uPD23C4000) EPR-12368-43 (27256) n/a
-Wrestle War 171-5782 837-6963-48 610-0239-48 MPR-14025-F (834200A) EPR-12368-48 (27256) n/a
-Bonanza Bros. 171-5782 837-6963-49 610-0239-49 MPR-13905A-F (834200A) EPR-12368-49 (27256) n/a
-Streets of Rage 171-5782 837-6963-51 610-0239-51 MPR-14125-SM (uPD23C4000) EPR-12368-51 (27C256) n/a
-Sonic The Hedgehog 171-5782 837-6963-52 610-0239-52 MPR-13913-F (834200A) EPR-12368-52 (27C256) n/a
-Spider-Man 171-5782 837-6963-54 610-0239-54 MPR-14027-SM (uPD23C4000) EPR-12368-54 (27C256) n/a
-California Games 171-5834 837-6963-55-01 610-0239-55 EPR-14494 (27C020) EPR-14495 (27C020) EPR-12368-55 (27C256)
-Mario Lemeux Hockey 171-5782 837-6963-59 610-0239-59 MPR-14376-H (234000) EPR-12368-59 (27256) n/a
-Turbo Outrun 171-5782 837-6963-61 610-0239-61 MPR-14674 (uPD23C4000) EPR-12368-61 (27256) n/a
-Sonic Hedgehog 2 171-6215A 837-6963-62 610-0239-62 MPR-15000A-F (838200) EPR-12368-62 (27256) n/a
-
-*/
-#include "emu.h"
-#include "cpu/z80/z80.h"
-#include "machine/cxd1095.h"
-#include "rendlay.h"
-
-#include "includes/megadriv.h"
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
-
-#include "softlist.h"
-
-#define MASTER_CLOCK 53693100
-
-
-
-class mtech_state : public md_base_state
-{
-public:
- mtech_state(const machine_config &mconfig, device_type type, const char *tag)
- : md_base_state(mconfig, type, tag),
- m_vdp1(*this, "vdp1"),
- m_cart1(*this, "mt_slot1"),
- m_cart2(*this, "mt_slot2"),
- m_cart3(*this, "mt_slot3"),
- m_cart4(*this, "mt_slot4"),
- m_cart5(*this, "mt_slot5"),
- m_cart6(*this, "mt_slot6"),
- m_cart7(*this, "mt_slot7"),
- m_cart8(*this, "mt_slot8"),
- m_bioscpu(*this, "mtbios"),
- m_region_maincpu(*this, "maincpu")
- { }
-
- void megatech_multislot(machine_config &config);
- void megatech_fixedslot(machine_config &config);
-
- void init_mt_crt();
- void init_mt_slot();
-
-protected:
- virtual void machine_reset() override;
-
-private:
-
- void megatech(machine_config &config);
-
- void cart_select_w(uint8_t data);
- uint8_t bios_portc_r();
- uint8_t bios_porte_r();
- void bios_portd_w(uint8_t data);
- void bios_porte_w(uint8_t data);
- uint8_t read_68k_banked_data(offs_t offset);
- void write_68k_banked_data(offs_t offset, uint8_t data);
- void mt_z80_bank_w(uint8_t data);
- uint8_t banked_ram_r(offs_t offset);
- void banked_ram_w(offs_t offset, uint8_t data);
- void bios_port_ctrl_w(uint8_t data);
- uint8_t bios_joypad_r(offs_t offset);
- void bios_port_7f_w(uint8_t data);
- uint8_t vdp1_count_r(offs_t offset);
- u8 sms_count_r(offs_t offset);
- uint8_t sms_ioport_dc_r();
- uint8_t sms_ioport_dd_r();
- void mt_sms_standard_rom_bank_w(address_space &space, offs_t offset, uint8_t data);
-
-
- image_init_result load_cart(device_image_interface &image, generic_slot_device *slot, int gameno);
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart1 ) { return load_cart(image, m_cart1, 0); }
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart2 ) { return load_cart(image, m_cart2, 1); }
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart3 ) { return load_cart(image, m_cart3, 2); }
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart4 ) { return load_cart(image, m_cart4, 3); }
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart5 ) { return load_cart(image, m_cart5, 4); }
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart6 ) { return load_cart(image, m_cart6, 5); }
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart7 ) { return load_cart(image, m_cart7, 6); }
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart8 ) { return load_cart(image, m_cart8, 7); }
-
- uint32_t screen_update_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_menu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank_main);
-
- void megatech_bios_map(address_map &map);
- void megatech_bios_portmap(address_map &map);
-
- uint8_t m_mt_cart_select_reg;
- uint32_t m_bios_port_ctrl;
- int m_current_machine_is_sms; // is the current game SMS based (running on genesis z80, in VDP compatibility mode)
- uint32_t m_bios_ctrl_inputs;
- int m_mt_bank_addr;
-
- int m_cart_is_genesis[8];
-
- void set_genz80_as_md();
- void set_genz80_as_sms();
-
- void switch_cart(int gameno);
-
- std::unique_ptr<uint8_t[]> m_banked_ram;
- std::unique_ptr<uint8_t[]> sms_mainram;
- std::unique_ptr<uint8_t[]> sms_rom;
-
- required_device<sega315_5124_device> m_vdp1;
- required_device<generic_slot_device> m_cart1;
- optional_device<generic_slot_device> m_cart2;
- optional_device<generic_slot_device> m_cart3;
- optional_device<generic_slot_device> m_cart4;
- optional_device<generic_slot_device> m_cart5;
- optional_device<generic_slot_device> m_cart6;
- optional_device<generic_slot_device> m_cart7;
- optional_device<generic_slot_device> m_cart8;
- required_device<cpu_device> m_bioscpu;
- required_memory_region m_region_maincpu;
-
- memory_region *m_cart_reg[8];
-};
-
-
-
-/* not currently used */
-static INPUT_PORTS_START( megatech ) /* Genesis Input Ports */
- PORT_INCLUDE(megadriv)
-
- PORT_START("BIOS_IN0") // port 6
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Select") PORT_CODE(KEYCODE_0)
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
-
- PORT_START("BIOS_IN1") // port 6
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // a few coin inputs here
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service coin") PORT_CODE(KEYCODE_9)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Enter") PORT_CODE(KEYCODE_MINUS)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
-
- PORT_START("BIOS_DSW0")
- PORT_DIPNAME( 0x02, 0x02, "Coin slot 3" )
- PORT_DIPSETTING( 0x00, "Inhibit" )
- PORT_DIPSETTING( 0x02, "Accept" )
- PORT_DIPNAME( 0x01, 0x01, "Coin slot 4" )
- PORT_DIPSETTING( 0x00, "Inhibit" )
- PORT_DIPSETTING( 0x01, "Accept" )
- PORT_DIPNAME( 0x1c, 0x1c, "Coin slot 3/4 value" )
- PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x10, DEF_STR( 1C_4C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_8C ) )
- PORT_DIPSETTING( 0x00, "1 Coin/10 credits" )
- PORT_DIPNAME( 0xe0, 0x60, "Coin slot 2 value" )
- PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x60, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0xa0, DEF_STR( 1C_4C ) )
- PORT_DIPSETTING( 0xc0, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0xe0, DEF_STR( 1C_6C ) )
- PORT_DIPSETTING( 0x00, "Inhibit" )
-
- PORT_START("BIOS_DSW1")
- PORT_DIPNAME( 0x0f, 0x01, "Coin Slot 1 value" )
- PORT_DIPSETTING( 0x00, "Inhibit" )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
- PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 1C_6C ) )
- PORT_DIPSETTING( 0x07, DEF_STR( 1C_7C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_8C ) )
- PORT_DIPSETTING( 0x09, DEF_STR( 1C_9C ) )
- PORT_DIPSETTING( 0x0a, "1 coin/10 credits" )
- PORT_DIPSETTING( 0x0b, "1 coin/11 credits" )
- PORT_DIPSETTING( 0x0c, "1 coin/12 credits" )
- PORT_DIPSETTING( 0x0d, "1 coin/13 credits" )
- PORT_DIPSETTING( 0x0e, "1 coin/14 credits" )
- PORT_DIPSETTING( 0x0f, "1 coin/15 credits" )
- PORT_DIPNAME( 0xf0, 0xa0, "Time per credit" )
- PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
- PORT_DIPSETTING( 0x10, "7:30" )
- PORT_DIPSETTING( 0x20, "7:00" )
- PORT_DIPSETTING( 0x30, "6:30" )
- PORT_DIPSETTING( 0x40, "6:00" )
- PORT_DIPSETTING( 0x50, "5:30" )
- PORT_DIPSETTING( 0x60, "5:00" )
- PORT_DIPSETTING( 0x70, "4:30" )
- PORT_DIPSETTING( 0x80, "4:00" )
- PORT_DIPSETTING( 0x90, "3:30" )
- PORT_DIPSETTING( 0xa0, "3:00" )
- PORT_DIPSETTING( 0xb0, "2:30" )
- PORT_DIPSETTING( 0xc0, "2:00" )
- PORT_DIPSETTING( 0xd0, "1:30" )
- PORT_DIPSETTING( 0xe0, "1:00" )
- PORT_DIPSETTING( 0xf0, "0:30" )
-
-
- PORT_START("BIOS_J1")
- PORT_DIPNAME( 0x0001, 0x0001, "5" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-INPUT_PORTS_END
-
-/* MEGATECH specific */
-
-u8 mtech_state::sms_count_r(offs_t offset)
-{
- if (offset & 0x01)
- return m_vdp->hcount_read();
- else
- return m_vdp->vcount_read();
-}
-
-uint8_t mtech_state::sms_ioport_dc_r()
-{
- /* 2009-05 FP: would it be worth to give separate inputs to SMS? SMS has only 2 keys A,B (which are B,C on megadrive) */
- /* bit 4: TL-A; bit 5: TR-A */
- return (machine().root_device().ioport("PAD1")->read() & 0x3f) | ((machine().root_device().ioport("PAD2")->read() & 0x03) << 6);
-}
-
-uint8_t mtech_state::sms_ioport_dd_r()
-{
- /* 2009-05 FP: would it be worth to give separate inputs to SMS? SMS has only 2 keys A,B (which are B,C on megadrive) */
- /* bit 2: TL-B; bit 3: TR-B; bit 4: RESET; bit 5: unused; bit 6: TH-A; bit 7: TH-B*/
- return ((machine().root_device().ioport("PAD2")->read() & 0x3c) >> 2) | 0x10;
-}
-
-
-void mtech_state::mt_sms_standard_rom_bank_w(address_space &space, offs_t offset, uint8_t data)
-{
- int bank = data & 0x1f;
- //logerror("bank w %02x %02x\n", offset, data);
-
- sms_mainram[0x1ffc + offset] = data;
- switch (offset)
- {
- case 0:
- logerror("bank w %02x %02x\n", offset, data);
- space.install_rom(0x0000, 0xbfff, sms_rom.get());
- space.unmap_write(0x0000, 0xbfff);
- //printf("bank ram??\n");
- break;
- case 1:
- memcpy(sms_rom.get()+0x0000, m_region_maincpu->base()+bank*0x4000, 0x4000);
- break;
- case 2:
- memcpy(sms_rom.get()+0x4000, m_region_maincpu->base()+bank*0x4000, 0x4000);
- break;
- case 3:
- memcpy(sms_rom.get()+0x8000, m_region_maincpu->base()+bank*0x4000, 0x4000);
- break;
-
- }
-}
-
-void mtech_state::set_genz80_as_sms()
-{
- address_space &prg = m_z80snd->space(AS_PROGRAM);
- address_space &io = m_z80snd->space(AS_IO);
-
- // main ram area
- sms_mainram = std::make_unique<uint8_t[]>(0x2000);
- prg.install_ram(0xc000, 0xdfff, 0x2000, sms_mainram.get());
- memset(sms_mainram.get(), 0x00, 0x2000);
-
- // fixed rom bank area
- sms_rom = std::make_unique<uint8_t[]>(0xc000);
- prg.install_rom(0x0000, 0xbfff, sms_rom.get());
-
- memcpy(sms_rom.get(), m_region_maincpu->base(), 0xc000);
-
- prg.install_write_handler(0xfffc, 0xffff, write8m_delegate(*this, FUNC(mtech_state::mt_sms_standard_rom_bank_w)));
-
- // ports
- io.install_read_handler (0x40, 0x41, 0, 0x3e, 0, read8sm_delegate(*this, FUNC(mtech_state::sms_count_r)));
- io.install_write_handler (0x40, 0x41, 0, 0x3e, 0, write8smo_delegate(*m_vdp, FUNC(sega315_5124_device::psg_w)));
- io.install_readwrite_handler (0x80, 0x80, 0, 0x3e, 0, read8smo_delegate(*m_vdp, FUNC(sega315_5124_device::data_read)), write8smo_delegate(*m_vdp, FUNC(sega315_5124_device::data_write)));
- io.install_readwrite_handler (0x81, 0x81, 0, 0x3e, 0, read8smo_delegate(*m_vdp, FUNC(sega315_5124_device::control_read)), write8smo_delegate(*m_vdp, FUNC(sega315_5124_device::control_write)));
-
- io.install_read_handler (0x10, 0x10, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); // super tetris
-
- io.install_read_handler (0xdc, 0xdc, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dc_r)));
- io.install_read_handler (0xdd, 0xdd, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r)));
- io.install_read_handler (0xde, 0xde, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r)));
- io.install_read_handler (0xdf, 0xdf, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); // adams family
-}
-
-
-/* sets the megadrive z80 to it's normal ports / map */
-void mtech_state::set_genz80_as_md()
-{
- address_space &prg = m_z80snd->space(AS_PROGRAM);
-
- prg.install_readwrite_bank(0x0000, 0x1fff, "bank1");
- machine().root_device().membank("bank1")->set_base(m_genz80.z80_prgram.get());
-
- prg.install_ram(0x0000, 0x1fff, m_genz80.z80_prgram.get());
-
- prg.install_readwrite_handler(0x4000, 0x4003, read8sm_delegate(*m_ymsnd, FUNC(ym2612_device::read)), write8sm_delegate(*m_ymsnd, FUNC(ym2612_device::write)));
- prg.install_write_handler (0x6000, 0x6000, write8smo_delegate(*this, FUNC(mtech_state::megadriv_z80_z80_bank_w)));
- prg.install_write_handler (0x6001, 0x6001, write8smo_delegate(*this, FUNC(mtech_state::megadriv_z80_z80_bank_w)));
- prg.install_read_handler (0x6100, 0x7eff, read8smo_delegate(*this, FUNC(mtech_state::megadriv_z80_unmapped_read)));
- prg.install_readwrite_handler(0x7f00, 0x7fff, read8sm_delegate(*this, FUNC(mtech_state::megadriv_z80_vdp_read)), write8sm_delegate(*this, FUNC(mtech_state::megadriv_z80_vdp_write)));
- prg.install_readwrite_handler(0x8000, 0xffff, read8sm_delegate(*this, FUNC(mtech_state::z80_read_68k_banked_data)), write8sm_delegate(*this, FUNC(mtech_state::z80_write_68k_banked_data)));
-}
-
-
-void mtech_state::switch_cart(int gameno)
-{
- logerror("select game %d\n", gameno + 1);
-
- m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- m_z80snd->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- //m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
- //m_z80snd->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
- m_ymsnd->reset();
-
- megadriv_stop_scanline_timer();// stop the scanline timer for the genesis vdp... it can be restarted in video eof when needed
- m_vdp->reset();
-
- /* if the regions exist we're fine */
- if (m_cart_reg[gameno])
- {
- memcpy(m_region_maincpu->base(), m_cart_reg[gameno]->base(), 0x400000);
-
- if (!m_cart_is_genesis[gameno])
- {
- logerror("enabling SMS Z80\n");
- m_current_machine_is_sms = 1;
- set_genz80_as_sms();
- //m_z80snd->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
- m_z80snd->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
- }
- else
- {
- logerror("disabling SMS Z80\n");
- m_current_machine_is_sms = 0;
- set_genz80_as_md();
- m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
- //m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
- }
- }
- else /* else, no cart.. */
- {
- memset(memregion("mtbios")->base() + 0x8000, 0x00, 0x8000);
- memset(m_region_maincpu->base(), 0x00, 0x400000);
- }
-}
-
-void mtech_state::cart_select_w(uint8_t data)
-{
- /* seems to write the slot number..
- but it stores something in (banked?) ram
- because it always seems to show the
- same instructions ... */
- m_mt_cart_select_reg = data;
- switch_cart(m_mt_cart_select_reg);
-}
-
-
-uint8_t mtech_state::bios_portc_r()
-{
- return 0;
-}
-
-uint8_t mtech_state::bios_porte_r()
-{
- return 0;
-}
-
-void mtech_state::bios_portd_w(uint8_t data)
-{
- output().set_value("Alarm_sound", BIT(data, 7));
- m_bios_ctrl_inputs = data & 0x04; // Genesis/SMS input ports disable bit
-}
-
-void mtech_state::bios_porte_w(uint8_t data)
-{
- output().set_value("Flash_screen", BIT(data, 1));
-}
-
-/* this sets 0x300000 which may indicate that the 68k can see the instruction rom
- there, this limiting the max game rom capacity to 3meg. */
-
-uint8_t mtech_state::read_68k_banked_data(offs_t offset)
-{
- address_space &space68k = m_maincpu->space();
- uint8_t ret = space68k.read_byte(m_mt_bank_addr + offset);
- return ret;
-}
-
-void mtech_state::write_68k_banked_data(offs_t offset, uint8_t data)
-{
- address_space &space68k = m_maincpu->space();
- space68k.write_byte(m_mt_bank_addr + offset,data);
-}
-
-void mtech_state::mt_z80_bank_w(uint8_t data)
-{
- m_mt_bank_addr = ((m_mt_bank_addr >> 1) | (data << 23)) & 0xff8000;
-}
-
-uint8_t mtech_state::banked_ram_r(offs_t offset)
-{
- return m_banked_ram[offset + 0x1000 * (m_mt_cart_select_reg & 0x07)];
-}
-
-void mtech_state::banked_ram_w(offs_t offset, uint8_t data)
-{
- m_banked_ram[offset + 0x1000 * (m_mt_cart_select_reg & 0x07)] = data;
-}
-
-
-
-void mtech_state::megatech_bios_map(address_map &map)
-{
- map(0x0000, 0x2fff).rom(); // from bios rom (0x0000-0x2fff populated in ROM)
- map(0x3000, 0x3fff).rw(FUNC(mtech_state::banked_ram_r), FUNC(mtech_state::banked_ram_w)); // copies instruction data here at startup, must be banked
- map(0x4000, 0x5fff).ram(); // plain ram?
- map(0x6000, 0x6000).w(FUNC(mtech_state::mt_z80_bank_w));
- map(0x6400, 0x6407).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
- map(0x6800, 0x6807).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
- map(0x7000, 0x77ff).rom(); // from bios rom (0x7000-0x77ff populated in ROM)
- //map(0x7800, 0x7fff).ram(); // ?
- map(0x8000, 0x9fff).rw(FUNC(mtech_state::read_68k_banked_data), FUNC(mtech_state::write_68k_banked_data)); // window into 68k address space, reads instr rom and writes to reset banks on z80 carts?
-}
-
-
-void mtech_state::bios_port_ctrl_w(uint8_t data)
-{
- m_bios_port_ctrl = data;
-}
-
-/* the test mode accesses the joypad/stick inputs like this */
-uint8_t mtech_state::bios_joypad_r(offs_t offset)
-{
- uint8_t retdata = 0;
-
- if (m_bios_port_ctrl == 0x55)
- {
- /* A keys */
- retdata = ((m_io_pad_3b[0]->read() & 0x40) >> 2) | ((m_io_pad_3b[1]->read() & 0x40) >> 4) | 0xeb;
- }
- else
- {
- if (offset == 0)
- retdata = (m_io_pad_3b[0]->read() & 0x3f) | ((m_io_pad_3b[1]->read() & 0x03) << 6);
- else
- retdata = ((m_io_pad_3b[1]->read() & 0x3c) >> 2) | 0xf0;
-
- }
- return retdata;
-}
-
-void mtech_state::bios_port_7f_w(uint8_t data)
-{
-// popmessage("CPU #3: I/O port 0x7F write, data %02x", data);
-}
-
-
-uint8_t mtech_state::vdp1_count_r(offs_t offset)
-{
- if (offset & 0x01)
- return m_vdp1->hcount_read();
- else
- return m_vdp1->vcount_read();
-}
-
-void mtech_state::megatech_bios_portmap(address_map &map)
-{
- map.global_mask(0xff);
- map(0x3f, 0x3f).w(FUNC(mtech_state::bios_port_ctrl_w));
- map(0x7f, 0x7f).w(FUNC(mtech_state::bios_port_7f_w)); // PSG?
-
- map(0x40, 0x41).mirror(0x3e).r(FUNC(mtech_state::vdp1_count_r));
- map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
- map(0x81, 0x81).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
-
- map(0xdc, 0xdd).r(FUNC(mtech_state::bios_joypad_r)); // player inputs
-}
-
-
-
-void mtech_state::init_mt_slot()
-{
- m_banked_ram = std::make_unique<uint8_t[]>(0x1000*8);
-
- init_megadriv();
-
- // this gets set in DEVICE_IMAGE_LOAD
- memset(m_cart_is_genesis, 0, sizeof(m_cart_is_genesis));
-}
-
-void mtech_state::init_mt_crt()
-{
- uint8_t* pin = memregion("sms_pin")->base();
- init_mt_slot();
-
- m_cart_is_genesis[0] = !pin[0] ? 1 : 0;
-}
-
-
-uint32_t mtech_state::screen_update_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- // if we're running an sms game then use the SMS update.. maybe this should be moved to the megadrive emulation core as compatibility mode is a feature of the chip
- if (!m_current_machine_is_sms)
- screen_update_megadriv(screen, bitmap, cliprect);
- else
- {
- m_vdp->screen_update(screen, bitmap, cliprect);
-#if 0
- // when launching megatech + both sms and megadrive games, the following would be needed...
- for (int y = 0; y < 224; y++)
- {
- uint32_t* lineptr = &bitmap.pix(y);
- uint32_t* srcptr = &m_vdp->get_bitmap().pix(y + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT);
-
- for (int x = 0; x < sega315_5124_device::WIDTH; x++)
- lineptr[x] = srcptr[x];
- }
-#endif
- }
- return 0;
-}
-
-WRITE_LINE_MEMBER(mtech_state::screen_vblank_main)
-{
- if (!m_current_machine_is_sms)
- screen_vblank_megadriv(state);
-}
-
-void mtech_state::machine_reset()
-{
- m_mt_bank_addr = 0;
- md_base_state::machine_reset();
-
- std::string region_tag;
- if (m_cart1->get_rom_size() > 0)
- m_cart_reg[0] = memregion(region_tag.assign(m_cart1->tag()).append(GENERIC_ROM_REGION_TAG));
- else
- m_cart_reg[0] = memregion(":mt_slot1:cart");
- if (m_cart2)
- m_cart_reg[1] = memregion(region_tag.assign(m_cart2->tag()).append(GENERIC_ROM_REGION_TAG));
- if (m_cart3)
- m_cart_reg[2] = memregion(region_tag.assign(m_cart3->tag()).append(GENERIC_ROM_REGION_TAG));
- if (m_cart4)
- m_cart_reg[3] = memregion(region_tag.assign(m_cart4->tag()).append(GENERIC_ROM_REGION_TAG));
- if (m_cart5)
- m_cart_reg[4] = memregion(region_tag.assign(m_cart5->tag()).append(GENERIC_ROM_REGION_TAG));
- if (m_cart6)
- m_cart_reg[5] = memregion(region_tag.assign(m_cart6->tag()).append(GENERIC_ROM_REGION_TAG));
- if (m_cart7)
- m_cart_reg[6] = memregion(region_tag.assign(m_cart7->tag()).append(GENERIC_ROM_REGION_TAG));
- if (m_cart8)
- m_cart_reg[7] = memregion(region_tag.assign(m_cart8->tag()).append(GENERIC_ROM_REGION_TAG));
-
- switch_cart(0);
-}
-
-uint32_t mtech_state::screen_update_menu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- m_vdp1->screen_update(screen, bitmap, cliprect);
- return 0;
-}
-
-
-void mtech_state::megatech(machine_config &config)
-{
- /* basic machine hardware */
- md_ntsc(config);
-
- /* Megatech has an extra SMS based bios *and* an additional screen */
- Z80(config, m_bioscpu, MASTER_CLOCK / 15); /* ?? */
- m_bioscpu->set_addrmap(AS_PROGRAM, &mtech_state::megatech_bios_map);
- m_bioscpu->set_addrmap(AS_IO, &mtech_state::megatech_bios_portmap);
-
- cxd1095_device &io1(CXD1095(config, "io1"));
- io1.in_porta_cb().set_ioport("BIOS_DSW0");
- io1.in_portb_cb().set_ioport("BIOS_DSW1");
- io1.out_porte_cb().set(FUNC(mtech_state::cart_select_w));
-
- cxd1095_device &io2(CXD1095(config, "io2"));
- io2.in_porta_cb().set_ioport("BIOS_IN0");
- io2.in_portb_cb().set_ioport("BIOS_IN1");
- io2.in_portc_cb().set(FUNC(mtech_state::bios_portc_r));
- io2.out_portd_cb().set(FUNC(mtech_state::bios_portd_w));
- io2.in_porte_cb().set(FUNC(mtech_state::bios_porte_r));
- io2.out_porte_cb().set(FUNC(mtech_state::bios_porte_w));
-
- config.set_default_layout(layout_dualhovu);
-
- screen_device &screen(*subdevice<screen_device>("megadriv"));
- screen.set_raw(XTAL(10'738'635)/2,
- sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256,
- sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224);
- screen.set_screen_update(FUNC(mtech_state::screen_update_main));
- screen.screen_vblank().set(FUNC(mtech_state::screen_vblank_main));
-
- m_vdp->n_int().set_inputline(m_z80snd, 0);
-
- screen_device &menu(SCREEN(config, "menu", SCREEN_TYPE_RASTER));
- // check frq
- menu.set_raw(XTAL(10'738'635)/2,
- sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256,
- sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224);
- menu.set_screen_update(FUNC(mtech_state::screen_update_menu));
-
- SEGA315_5246(config, m_vdp1, MASTER_CLOCK / 5); /* ?? */
- m_vdp1->set_screen("menu");
- m_vdp1->set_is_pal(false);
- m_vdp1->n_int().set_inputline(m_bioscpu, 0);
- m_vdp1->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
- m_vdp1->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
-}
-
-
-image_init_result mtech_state::load_cart(device_image_interface &image, generic_slot_device *slot, int gameno)
-{
- uint8_t *ROM;
- const char *pcb_name;
- uint32_t size = slot->common_get_size("rom");
-
- if (!image.loaded_through_softlist())
- return image_init_result::FAIL;
-
- slot->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
- ROM = slot->get_rom_base();
- memcpy(ROM, image.get_software_region("rom"), size);
-
- if ((pcb_name = image.get_feature("pcb_type")) == nullptr)
- return image_init_result::FAIL;
- else
- {
- if (!core_stricmp("genesis", pcb_name))
- {
- osd_printf_debug("cart%d is genesis\n", gameno + 1);
- m_cart_is_genesis[gameno] = 1;
- }
- else if (!core_stricmp("sms", pcb_name))
- {
- osd_printf_debug("cart%d is sms\n", gameno + 1);
- m_cart_is_genesis[gameno] = 0;
- }
- else
- osd_printf_debug("cart%d is invalid\n", gameno + 1);
- }
-
- return image_init_result::PASS;
-}
-
-#define MEGATECH_CARTSLOT(_tag, _load) \
- GENERIC_CARTSLOT(config, _tag, generic_plain_slot, "megatech_cart").set_device_load(FUNC(mtech_state::_load))
-
-void mtech_state::megatech_multislot(machine_config &config)
-{
- megatech(config);
-
- // add cart slots
- MEGATECH_CARTSLOT("mt_slot1", mt_cart1);
- MEGATECH_CARTSLOT("mt_slot2", mt_cart2);
- MEGATECH_CARTSLOT("mt_slot3", mt_cart3);
- MEGATECH_CARTSLOT("mt_slot4", mt_cart4);
- MEGATECH_CARTSLOT("mt_slot5", mt_cart5);
- MEGATECH_CARTSLOT("mt_slot6", mt_cart6);
- MEGATECH_CARTSLOT("mt_slot7", mt_cart7);
- MEGATECH_CARTSLOT("mt_slot8", mt_cart8);
-
- SOFTWARE_LIST(config, "cart_list").set_original("megatech");
-}
-
-
-void mtech_state::megatech_fixedslot(machine_config &config)
-{
- megatech(config);
-
- // add cart slots
- generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "mt_slot1", generic_plain_slot, "megatech_cart"));
- cartslot.set_device_load(FUNC(mtech_state::mt_cart1));
- cartslot.set_user_loadable(false);
-}
-
-
-/* MegaTech Games - Genesis & sms! Games with a timer */
-
-#define MEGATECH_BIOS \
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) \
- ROM_REGION( 0x10000, "mtbios", 0 ) \
- ROM_SYSTEM_BIOS( 0, "ver1", "Ver 1" ) \
- ROMX_LOAD( "epr-12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953), ROM_BIOS(0)) \
- ROM_SYSTEM_BIOS( 1, "ver0a", "Ver 0 Rev A" ) \
- ROMX_LOAD( "epr-12263a.20", 0x000000, 0x8000, CRC(07c3f423) SHA1(50c28bbc2d4349c820d988ae3f20aae3f808545f), ROM_BIOS(1)) \
- ROM_SYSTEM_BIOS( 2, "ver0b", "Ver 0 Rev B" ) \
- ROMX_LOAD( "epr-12263b.20", 0x000000, 0x8000, CRC(ca26c87a) SHA1(987a18bede6e54cd73c4434426eb6c302a37cdc5), ROM_BIOS(2)) \
- ROM_SYSTEM_BIOS( 3, "ver0aa","Ver 0 Rev B (alt?)" ) \
- ROMX_LOAD( "epr-12604a.20", 0x000000, 0x8000, CRC(884e4aa5) SHA1(c9008c431a937c084fb475273093ca0b434b5f47), ROM_BIOS(3))
-
-
-/* no games */
-ROM_START( megatech )
- MEGATECH_BIOS
-ROM_END
-
-
-/* Game 01 - Altered Beast (Genesis) */
-ROM_START( mt_beast ) /* Altered Beast */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12538.ic1", 0x000000, 0x080000, CRC(3bea3dce) SHA1(ec72e4fde191dedeb3f148f132603ed3c23f0f86) )
- ROM_LOAD16_BYTE( "epr-12368-01.ic2", 0x300001, 0x08000, CRC(40cb0088) SHA1(e1711532c29f395a35a1cb34d789015881b5a1ed) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 02 - Space Harrier 2 */
-ROM_START( mt_shar2 ) /* Space Harrier 2 */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp11934.ic1", 0x000000, 0x080000, CRC(932daa09) SHA1(a2d7a76f3604c6227d43229908bfbd02b0ef5fd9) )
- ROM_LOAD16_BYTE( "epr-12368-02.ic2", 0x300001, 0x08000, CRC(c129c66c) SHA1(e7c0c97db9df9eb04e2f9ff561b64305219b8f1f) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 03 - Super Thunder Blade */
-ROM_START( mt_stbld ) /* Super Thunder Blade */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp11996f.ic1", 0x000000, 0x080000, CRC(9355c34e) SHA1(26ff91c2921408673c644b0b1c8931d98524bf63) )
- ROM_LOAD16_BYTE( "epr-12368-03.ic2", 0x300001, 0x08000, CRC(1ba4ac5d) SHA1(9bde57d70189d159ebdc537a9026001abfd0deae) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 04 - Great Golf (SMS) */
-/* Also known to have the ID# MPR-11128 instead of MPR-11129F, same contents */
-ROM_START( mt_ggolf ) /* Great Golf */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp11129f.ic1", 0x000000, 0x020000, CRC(c6611c84) SHA1(eab0eed872dd26b13bcf0b2dd74fcbbc078812c9) )
- ROM_LOAD16_BYTE( "epr-12368-04.ic2", 0x300001, 0x08000, CRC(62e5579b) SHA1(e1f531be5c40a1216d4192baeda9352384444410) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 05 - Great Soccer (SMS) - bad dump */
-ROM_START( mt_gsocr ) /* Great Soccer */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp10747f.ic1", 0x000000, 0x020000, BAD_DUMP CRC(9cf53703) SHA1(c6b4d1de56bd5bf067ec7fc80449c07686d01337) )
- ROM_LOAD16_BYTE( "epr-12368-05.ic2", 0x300001, 0x08000, CRC(bab91fcc) SHA1(a160c9d34b253e93ac54fdcef33f95f44d8fa90c) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 06 - Out Run (SMS) */
-ROM_START( mt_orun ) /* Out Run */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-11078.ic1", 0x000000, 0x040000, CRC(5589d8d2) SHA1(4f9b61b24f0d9fee0448cdbbe8fc05411dbb1102) )
- ROM_LOAD16_BYTE( "epr-12368-06.ic2", 0x300001, 0x08000, CRC(c7c74429) SHA1(22ee261a653e10d66e0d6703c988bb7f236a7571) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 07 - Alien Syndrome (SMS) */
-ROM_START( mt_asyn ) /* Alien Syndrome */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-11194.ic1", 0x000000, 0x040000, CRC(4cc11df9) SHA1(5d786476b275de34efb95f576dd556cf4b335a83) )
- ROM_LOAD16_BYTE( "epr-12368-07.ic2", 0x300001, 0x08000, CRC(14f4a17b) SHA1(0fc010ac95762534892f1ae16986dbf1c25399d3) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 08 - Shinobi (SMS) */
-ROM_START( mt_shnbi ) /* Shinobi */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp11706.ic1", 0x000000, 0x040000, CRC(0c6fac4e) SHA1(7c0778c055dc9c2b0aae1d166dbdb4734e55b9d1) )
- ROM_LOAD16_BYTE( "epr-12368-08.ic2", 0x300001, 0x08000, CRC(103a0459) SHA1(d803ddf7926b83785e8503c985b8c78e7ccb5dac) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 09 - Fantasy Zone (SMS) */
-// note, dump was bad, but the good (uniquely identifiable) parts matched the 'fantasy zone (world) (v1.2).bin' SMS rom
-// so I'm using that until it gets verified.
-ROM_START( mt_fz ) /* Fantasy Zone */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-10118.ic1", 0x000000, 0x020000, CRC(65d7e4e0) SHA1(0278cd120dc3a7707eda9314c46c7f27f9e8fdda) )
- ROM_LOAD16_BYTE( "epr-12368-09.bin", 0x300001, 0x08000, CRC(373d2a70) SHA1(c39dd1003d71a417b12a359126bfef64c7a2fd00) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-
-/* Game 10 - Afterburner (SMS) */
-ROM_START( mt_aftrb ) /* Afterburner */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp11271.ic1", 0x000000, 0x080000, CRC(1c951f8e) SHA1(51531df038783c84640a0cab93122e0b59e3b69a) )
- ROM_LOAD16_BYTE( "epr-12368-10.ic2", 0x300001, 0x08000, CRC(2a7cb590) SHA1(2236963bddc89ca9045b530259cc7b5ccf889eaf) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 11 - Thunder Force II */
-ROM_START( mt_tfor2 ) /* Thunder Force II */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12559.ic1", 0x000000, 0x080000, CRC(b093bee3) SHA1(0bf6194c3d228425f8cf1903ed70d8da1b027b6a) )
- ROM_LOAD16_BYTE( "epr-12368-11.ic2", 0x300001, 0x08000, CRC(f4f27e8d) SHA1(ae1a2823deb416c53838115966f1833d5dac72d4) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 13 - Astro Warrior (SMS) */
-ROM_START( mt_astro ) /* Astro Warrior */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "ep13817.ic2", 0x000000, 0x20000, CRC(299cbb74) SHA1(901697a3535ad70190647f34ad5b30b695d54542) )
- ROM_LOAD16_BYTE( "epr-12368-13.ic1", 0x300001, 0x08000, CRC(4038cbd1) SHA1(696bc1efce45d9f0052b2cf0332a232687c8d6ab) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 19 - Great Football (SMS) */
-ROM_START( mt_gfoot ) /* Great Football */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-10576f.ic1", 0x000000, 0x020000, CRC(2055825f) SHA1(a768f44ce7e50083ffe8c4b5e3ac93ceb7bd3266) )
- ROM_LOAD16_BYTE( "epr-12368-19.ic2", 0x300001, 0x08000, CRC(e27cb37a) SHA1(2b6259957e86d033a5689fd716a9efcfeff7d5ba) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 20 - Last Battle */
-ROM_START( mt_lastb ) /* Last Battle */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12578f.ic1", 0x000000, 0x080000, CRC(531191a0) SHA1(f6bc26e975c01a3e10ab4033e4c5f494627a1e2f) )
- ROM_LOAD16_BYTE( "epr-12368-20.ic2", 0x300001, 0x08000, CRC(e1a71c91) SHA1(c250da18660d8aea86eb2abace41ba46130dabc8) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 21 - World Championship Soccer (Genesis) */
-ROM_START( mt_wcsoc ) /* World Championship Soccer */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12607b.ic1", 0x000000, 0x080000, CRC(bc591b30) SHA1(55e8577171c0933eee53af1dabd0f4c6462d5fc8) )
- ROM_LOAD16_BYTE( "epr-12368-21.ic2", 0x300001, 0x08000, CRC(028ee46b) SHA1(cd8f81d66e5ae62107eb20e0ca5db4b66d4b2987) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 22 - Tetris */
-ROM_START( mt_tetri ) /* Tetris */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_BYTE( "mpr-12356f.ic1", 0x000001, 0x020000, CRC(1e71c1a0) SHA1(44b2312792e49d46d71e0417a7f022e5ffddbbfe) )
- ROM_LOAD16_BYTE( "mpr-12357f.ic2", 0x000000, 0x020000, CRC(d52ca49c) SHA1(a9159892eee2c0cf28ebfcfa99f81f80781851c6) )
- ROM_LOAD16_BYTE( "epr-12368-22.ic3", 0x300001, 0x08000, CRC(1c1b6468) SHA1(568a38f4186167486e39ab4aa2c1ceffd0b81156) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 23 - Ghouls and Ghosts (Genesis) */
-ROM_START( mt_gng ) /* Ghouls and Ghosts */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12605.ic1", 0x000000, 0x020000, CRC(1066c6ab) SHA1(c30e4442732bdb38c96d780542f8550a94d127b0) )
- ROM_LOAD16_WORD_SWAP( "mpr12606.ic2", 0x080000, 0x020000, CRC(d0be7777) SHA1(a44b2a3d427f6973b5c1a3dcd8d1776366acb9f7) )
- ROM_CONTINUE(0x020000,0x60000)
- ROM_LOAD16_BYTE( "epr-12368-23.ic3", 0x300001, 0x08000, CRC(7ee58546) SHA1(ad5bb0934475eacdc5e354f67c96fe0d2512d33b) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 24 - Super Hang-On (Genesis) */
-ROM_START( mt_shang ) /* Super Hang-On */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-12640.ic1", 0x000000, 0x080000, CRC(2fe2cf62) SHA1(4728bcc847deb38b16338cbd0154837cd4a07b7d) )
- ROM_LOAD16_BYTE( "epr-12368-24.ic2", 0x300001, 0x08000, CRC(6c2db7e3) SHA1(8de0a10ed9185c9e98f17784811a79d3ce8c4c03) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 25 - Golden Axe (Genesis) */
-ROM_START( mt_gaxe ) /* Golden Axe */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "12806.ic1", 0x000000, 0x080000, CRC(43456820) SHA1(2f7f1fcd979969ac99426f11ab99999a5494a121) )
- ROM_LOAD16_BYTE( "epr-12368-25.ic2", 0x300001, 0x08000, CRC(1f07ed28) SHA1(9d54192f4c6c1f8a51c38a835c1dd1e4e3e8279e) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 26 - Forgotten Worlds */
-/* why is this pre-swapped like a console dump?? */
-ROM_START( mt_fwrld ) /* Forgotten Worlds */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD( "mpr-12672-h.ic1", 0x000000, 0x080000, CRC(d0ee6434) SHA1(8b9a37c206c332ef23dc71f09ec40e1a92b1f83a) )
- ROM_LOAD16_BYTE( "epr-12368-26.ic2", 0x300001, 0x08000, CRC(4623b573) SHA1(29df4a5c5de66cd9cb7519e4f30000f7dddc2138) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 27 - Mystic Defender */
-ROM_START( mt_mystd ) /* Mystic Defender */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12707.1", 0x000000, 0x080000, CRC(4f2c513d) SHA1(f9bb548b3688170fe18bb3f1b5b54182354143cf) )
- ROM_LOAD16_BYTE( "epr-12368-27.ic2", 0x300001, 0x08000, CRC(caf46f78) SHA1(a9659e86a6a223646338cd8f29c346866e4406c7) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 28 - The Revenge of Shinobi */
-ROM_START( mt_revsh ) /* The Revenge Of Shinobi */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12675.ic1", 0x000000, 0x080000, CRC(672a1d4d) SHA1(5fd0af14c8f2cf8ceab1ae61a5a19276d861289a) )
- ROM_LOAD16_BYTE( "epr-12368-28.ic2", 0x300001, 0x08000, CRC(0d30bede) SHA1(73a090d84b78a570e02fb54a33666dcada52849b) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 29 - Parlour Games (SMS) */
-ROM_START( mt_parlg ) /* Parlour Games */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp11404.ic1", 0x000000, 0x020000, CRC(e030e66c) SHA1(06664daf208f07cb00b603b12eccfc3f01213a17) )
- ROM_LOAD16_BYTE( "epr-12368-29.ic2", 0x300001, 0x08000, CRC(534151e8) SHA1(219238d90c1d3ac07ff64c9a2098b490fff68f04) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
-ROM_END
-
-
-/* Game 31 - Arnold Palmer Tournament Golf */
-ROM_START( mt_tgolf ) /* Arnold Palmer Tournament Golf */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-12645f.ic1", 0x000000, 0x080000, CRC(c07ef8d2) SHA1(9d111fdc7bb92d52bfa048cd134aa488b4f475ef) )
- ROM_LOAD16_BYTE( "epr-12368-31.ic2", 0x300001, 0x08000, CRC(30af7e4a) SHA1(baf91d527393dc90aba9371abcb1e690bcc83c7e) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 32 - Super Real Basketball */
-/* why is this pre-swapped like a console dump?? */
-ROM_START( mt_srbb ) /* Super Real Basketball */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD( "mpr-12904f.ic1", 0x000000, 0x080000, CRC(4346e11a) SHA1(c86725780027ef9783cb7884c8770cc030b0cd0d) )
- ROM_LOAD16_BYTE( "epr-12368-32.ic2", 0x300001, 0x08000, CRC(f70adcbe) SHA1(d4412a7cd59fe282a1c6619aa1051a2a2e00e1aa) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 35 - Tommy Lasorda Baseball */
-ROM_START( mt_tlbba ) /* Tommy Lasorda Baseball */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp12706.ic1", 0x000000, 0x080000, CRC(8901214f) SHA1(f5ec166be1cf9b86623b9d7a78ec903b899da32a) )
- ROM_LOAD16_BYTE( "epr-12368-35.ic2", 0x300001, 0x08000, CRC(67bbe482) SHA1(6fc283b22e68befabb44b2cc61a7f82a71d6f029) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 36 - Columns */
-ROM_START( mt_cols ) /* Columns */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp13193-t.ic1", 0x000000, 0x080000, CRC(8c770e2f) SHA1(02a3626025c511250a3f8fb3176eebccc646cda9) )
- ROM_LOAD16_BYTE( "epr-12368-36.ic3", 0x300001, 0x008000, CRC(a4b29bac) SHA1(c9be866ac96243897d09612fe17562e0481f66e3) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 38 - ESWAT */
-ROM_START( mt_eswat ) /* ESWAT */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp13192-h.ic1", 0x000000, 0x080000, CRC(82f458ef) SHA1(58444b783312def71ecffc4ad021b72a609685cb) )
- ROM_LOAD16_BYTE( "epr-12368-38.ic2", 0x300001, 0x08000, CRC(43c5529b) SHA1(104f85adea6da1612c0aa96d553efcaa387d7aaf) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 39 - Super Monaco Grand Prix (Genesis) */
-ROM_START( mt_smgp ) /* Super Monaco Grand Prix */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "13250.ic1", 0x000000, 0x080000, CRC(189b885f) SHA1(31c06ffcb48b1604989a94e584261457de4f1f46) )
- ROM_LOAD16_BYTE( "epr-12368-39.ic2", 0x300001, 0x08000, CRC(64b3ce25) SHA1(83a9f2432d146a712b037f96f261742f7dc810bb) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 40 - Moon Walker */
-ROM_START( mt_mwalk ) /* Moon Walker */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp13285a.ic1", 0x000000, 0x080000, CRC(189516e4) SHA1(2a79e07da2e831832b8d448cae87a833c85e67c9) )
- ROM_LOAD16_BYTE( "epr-12368-40.ic2", 0x300001, 0x08000, CRC(0482378c) SHA1(734772f3ddb5ff82b76c3514d18a464b2bce8381) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 41 - Crackdown */
-ROM_START( mt_crack ) /* Crackdown */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp13578a-s.ic1", 0x000000, 0x080000, CRC(23f19893) SHA1(09aca793871e2246af4dc24925bc1eda8ff34446) )
- ROM_LOAD16_BYTE( "epr-12368-41.ic2", 0x300001, 0x08000, CRC(3014acec) SHA1(07953e9ae5c23fc7e7d08993b215f4dfa88aa5d7) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 43 - Shadow Dancer */
-ROM_START( mt_shado ) /* Shadow Dancer */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-13571-s.ic1", 0x000000, 0x080000, CRC(56a29310) SHA1(55836177e4a1e2deb68408976b29d0282cf661a9) )
- ROM_LOAD16_BYTE( "epr-12368-43.ic2", 0x300001, 0x08000, CRC(1116cbc7) SHA1(ba6dd21ceadeedf730b71b67acbd20d9067114f3) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 44 - Arrow Flash */
-ROM_START( mt_arrow ) /* Arrow Flash */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr13396h.ic1", 0x000000, 0x080000, CRC(091226e3) SHA1(cb15c6277314f3c4a86b5ae5823f72811d5d269d) )
- ROM_LOAD16_BYTE( "epr-12368-44.ic2", 0x300001, 0x08000, CRC(e653065d) SHA1(96b014fc4df8eb2188ac94ed0a778d974fe6dcad) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 47 - Alien Storm */
-ROM_START( mt_astrm ) /* Alien Storm */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp13941.ic1", 0x000000, 0x080000, CRC(d71b3ee6) SHA1(05f272dad243d132d517c303388248dc4c0482ed) )
- ROM_LOAD16_BYTE( "epr-12368-47.ic2", 0x300001, 0x08000, CRC(31fb683d) SHA1(e356da020bbf817b97fb10c27f75cf5931edf4fc) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 48 - Wrestle War */
-ROM_START( mt_wwar ) /* Wrestle War */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-14025-f.ic1", 0x000000, 0x080000, CRC(26e899fe) SHA1(6d28e154ae2e4196097a2aa96c5acd5dfe7e3d2b) )
- ROM_LOAD16_BYTE( "epr-12368-48.ic2", 0x300001, 0x08000, CRC(25817bc2) SHA1(ba1bbb952aff12fb4d3ecfb10d82c54128439395) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 49 - Bonanza Bros. */
-// original dump of mpr-13905a.ic1 had a size of 0x100000, which is a double dump of the correct size 0x080000
-// the IC is a Fujitsu MB834200A MaskROM by 4Mb (512KB) in a DIP40-600mil package
-ROM_START( mt_bbros ) /* Bonanza Bros. */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-13905a.ic1", 0x000000, 0x080000, CRC(6d617940) SHA1(11d5ff1c2db79632f6dea2edf97f56af2149cea4) )
- ROM_LOAD16_BYTE( "epr-12368-49.ic2", 0x300001, 0x08000, CRC(c5101da2) SHA1(636f30043e2e9291e193ef9a2ead2e97a0bf7380) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 51 - Streets of Rage */
-ROM_START( mt_srage ) /* Streets of Rage */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-14125-s.ic1", 0x000000, 0x080000, CRC(db4ac746) SHA1(c7cc24e2329f279574513fa32bbf79f72f75aeea) )
- ROM_LOAD16_BYTE( "epr-12368-51.ic2", 0x300001, 0x08000, CRC(49b7d6f4) SHA1(96e69851c92715e7daf35b184cf374147a8d2880) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 52 - Sonic The Hedgehog (Genesis) */
-ROM_START( mt_sonic ) /* Sonic The Hedgehog */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp13913.ic1", 0x000000, 0x080000, CRC(480b4b5c) SHA1(ab1dc1f738e3b2d0898a314b123fa71182bf572e) )
- ROM_LOAD16_BYTE( "epr-12368-52.ic2", 0x300001, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-ROM_START( mt_sonia ) /* Sonic (alt)*/
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp13933.ic1", 0x000000, 0x080000, CRC(13775004) SHA1(5decfd35944a2d0e7b996b9a4a12b616a309fd5e) )
- ROM_LOAD16_BYTE( "epr-12368-52.ic2", 0x300001, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 53 - Fire Shark */
- /* alt version with these roms exists, but the content is the same */
- /* (6a221fd6) ep14706.ic1 mp14341.ic1 [even] IDENTICAL */
- /* (09fa48af) ep14707.ic2 mp14341.ic1 [odd] IDENTICAL */
-
-ROM_START( mt_fshrk ) /* Fire Shark */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp14341.ic1", 0x000000, 0x080000, CRC(04d65ebc) SHA1(24338aecdc52b6f416548be722ca475c83dbae96) )
- ROM_LOAD16_BYTE( "epr-12368-53.ic2", 0x300001, 0x08000, CRC(4fa61044) SHA1(7810deea221c10b0b2f5233443d81f4f1998ee58) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 54 - Spiderman */
-ROM_START( mt_spman ) /* Spiderman */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp14027-sm.ic1", 0x000000, 0x080000, CRC(e2c08a06) SHA1(39e592eafd47e2aa6edbb4845d44750057bff890) )
- ROM_LOAD16_BYTE( "epr-12368-54.ic2", 0x300001, 0x08000, CRC(30b68988) SHA1(04eeb0fad732a791b6bc0c0846306d567573649f) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 55 - California Games */
-ROM_START( mt_calga ) /* California Games */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_BYTE( "epr-14494.ic1", 0x000001, 0x040000, CRC(cbe58b1b) SHA1(ea067fc08e644c993f8d13731425c9296c1a2a75) )
- ROM_LOAD16_BYTE( "epr-14495.ic2", 0x000000, 0x040000, CRC(cb956f4f) SHA1(3574c496b79aefdec7d02975490ebe3bb373bc60) )
- ROM_LOAD16_BYTE( "epr-12368-55.ic3", 0x300001, 0x08000, CRC(6f7dd8f5) SHA1(a6cb1aa8c3635738dd9e4d3e0d729d089fd9b599) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 57 - Golden Axe 2 (Genesis) */
-ROM_START( mt_gaxe2 ) /* Golden Axe 2 */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp14272.ic1", 0x000000, 0x080000, CRC(d4784cae) SHA1(b6c286027d06fd850016a2a1ee1f1aeea080c3bb) )
- ROM_LOAD16_BYTE( "epr-12368-57.ic2", 0x300001, 0x08000, CRC(dc9b4433) SHA1(efd3a598569010cdc4bf38ecbf9ed1b4e14ffe36) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 58 - Sports Talk Football */
-ROM_START( mt_stf ) /* Sports Talk Football */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp14356a-f.ic1", 0x000000, 0x100000, CRC(20cf32f6) SHA1(752314346a7a98b3808b3814609e024dc0a4108c) )
- ROM_LOAD16_BYTE( "epr-12368-58.ic2", 0x300001, 0x08000, CRC(dce2708e) SHA1(fcebb1899ee11468f6bda705899f074e7de9d723) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 59 - Mario Lemieux Hockey */
-ROM_START( mt_mlh ) /* Mario Lemieux Hockey */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-14376-h.ic1", 0x000000, 0x80000, CRC(aa9be87e) SHA1(dceed94eaeb30e534f6953a4bc25ff37673b1e6b) )
- ROM_LOAD16_BYTE( "epr-12368-59.ic2", 0x300001, 0x08000, CRC(6d47b438) SHA1(0a145f6438e4e55c957ae559663c37662b685246) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 60 - Kid Chameleon */
-ROM_START( mt_kcham ) /* Kid Chameleon */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp14557.ic1", 0x000000, 0x100000, CRC(e1a889a4) SHA1(a2768eacafc47d371e5276f0cce4b12b6041337a) )
- ROM_LOAD16_BYTE( "epr-12368-60.ic2", 0x300001, 0x08000, CRC(a8e4af18) SHA1(dfa49f6ec4047718f33dba1180f6204dbaff884c) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 61 - Turbo Outrun */
-// original dump of mpr-14674.ic1 had CRC(c2b9a802) SHA1(108cc844c944125f9d271a2f2db094301294e8c2)
-// with the byte at offset 3 being F6 instead of Fe, this seems like a bad dump when compared to the Genesis rom which
-// has been verified on multiple carts, chances are the ROM had developed a fault.
-ROM_START( mt_tout ) /* Turbo Outrun */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mpr-14674.ic1", 0x000000, 0x080000, CRC(453712a2) SHA1(5d2c8430a9a14aac7f19c22617539b0503ab92cd) )
- ROM_LOAD16_BYTE( "epr-12368-61.ic2", 0x300001, 0x08000, CRC(4aa0b2a2) SHA1(bce03f88d6cfd02683d51c28058f6229fda13b49) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-/* Game 62 - Sonic The Hedgehog 2 */
-ROM_START( mt_soni2 ) /* Sonic The Hedgehog 2 */
- MEGATECH_BIOS
-
- ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "mp15000a-f.ic1", 0x000000, 0x100000, CRC(679ebb49) SHA1(557482064677702454562f753460993067ef9e16) )
- ROM_LOAD16_BYTE( "epr-12368-62.ic2", 0x300001, 0x08000, CRC(14a8566f) SHA1(d1d14162144bf068ddd19e9736477ff98fb43f9e) )
-
- ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
-ROM_END
-
-
-
-/* nn */ /* nn is part of the instruction rom name, should there be a game for each number? */
-/* -- */ CONS( 1989, megatech, 0, 0, megatech_multislot, megatech, mtech_state, init_mt_slot, "Sega", "Mega-Tech", MACHINE_IS_BIOS_ROOT )
-/* 01 */ GAME( 1988, mt_beast, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Altered Beast (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 02 */ GAME( 1988, mt_shar2, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Space Harrier II (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 03 */ GAME( 1988, mt_stbld, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Thunder Blade (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 04 */ GAME( 1987, mt_ggolf, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Great Golf (Mega-Tech, SMS based)", MACHINE_NOT_WORKING ) /* sms! */
-/* 05 */ GAME( 198?, mt_gsocr, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Great Soccer (Mega-Tech, SMS based)", MACHINE_NOT_WORKING ) /* sms! also bad */
-/* 06 */ GAME( 1987, mt_orun, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Out Run (Mega-Tech, SMS based)", MACHINE_NOT_WORKING ) /* sms! */
-/* 07 */ GAME( 1987, mt_asyn, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Alien Syndrome (Mega-Tech, SMS based)", MACHINE_NOT_WORKING ) /* sms! */
-/* 08 */ GAME( 1987, mt_shnbi, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Shinobi (Mega-Tech, SMS based)", MACHINE_NOT_WORKING) /* sms */
-/* 09 */ GAME( 1987, mt_fz, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Fantasy Zone (Mega-Tech, SMS based)", MACHINE_NOT_WORKING) /* sms */
-/* 10 */ GAME( 1987, mt_aftrb, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "After Burner (Mega-Tech, SMS based)", MACHINE_NOT_WORKING) /* sms */
-/* 11 */ GAME( 1989, mt_tfor2, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Techno Soft / Sega", "Thunder Force II MD (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 12 */ // unknown
-/* 13 */ GAME( 1986, mt_astro, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Astro Warrior (Mega-Tech, SMS based)", MACHINE_NOT_WORKING ) /* sms! */
-/* 14 */ // unknown
-/* 15 */ // unknown
-/* 16 */ // unknown
-/* 17 */ // unknown
-/* 18 */ // Kung Fu Kid (sms)
-/* 19 */ GAME( 1987, mt_gfoot, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Great Football (Mega-Tech, SMS based)", MACHINE_NOT_WORKING ) /* sms! */
-/* 20 */ GAME( 1989, mt_lastb, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Last Battle (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 21 */ GAME( 1989, mt_wcsoc, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "World Championship Soccer (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 22 */ GAME( 1989, mt_tetri, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Tetris (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 23 */ GAME( 1989, mt_gng, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Capcom / Sega", "Ghouls'n Ghosts (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 24 */ GAME( 1989, mt_shang, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Hang-On (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 25 */ GAME( 1989, mt_gaxe, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Golden Axe (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 26 */ GAME( 1989, mt_fwrld, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Forgotten Worlds (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 27 */ GAME( 1989, mt_mystd, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Mystic Defender (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 28 */ GAME( 1989, mt_revsh, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "The Revenge of Shinobi (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 29 */ GAME( 1987, mt_parlg, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Parlour Games (Mega-Tech, SMS based)", MACHINE_NOT_WORKING ) /* sms! */
-/* 30 */ // unknown
-/* 31 */ GAME( 1989, mt_tgolf, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Arnold Palmer Tournament Golf (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 32 */ GAME( 1989, mt_srbb, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Real Basketball (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 33 */ // unknown
-/* 34 */ // unknown
-/* 35 */ GAME( 1989, mt_tlbba, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Tommy Lasorda Baseball (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 36 */ GAME( 1990, mt_cols, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Columns (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 37 */ // unknown
-/* 38 */ GAME( 1990, mt_eswat, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Cyber Police ESWAT: Enhanced Special Weapons and Tactics (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 39 */ GAME( 1990, mt_smgp, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Monaco GP (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 40 */ GAME( 1990, mt_mwalk, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Michael Jackson's Moonwalker (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 41 */ GAME( 1990, mt_crack, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Crack Down (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 42 */ // unknown
-/* 43 */ GAME( 1990, mt_shado, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Shadow Dancer (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 44 */ GAME( 1990, mt_arrow, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Arrow Flash (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 45 */ // unknown
-/* 46 */ // unknown
-/* 47 */ GAME( 1990, mt_astrm, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Alien Storm (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 48 */ GAME( 1991, mt_wwar, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Wrestle War (Mega-Tech)", MACHINE_NOT_WORKING ) /* Copyright 1989, 1991 Sega */
-/* 49 */ GAME( 1991, mt_bbros, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Bonanza Bros. (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 50 */ // unknown
-/* 51 */ GAME( 1991, mt_srage, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Streets of Rage (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 52 */ GAME( 1991, mt_sonic, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Sonic The Hedgehog (Mega-Tech, set 1)", MACHINE_NOT_WORKING )
-/* */ GAME( 1991, mt_sonia, mt_sonic, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Sonic The Hedgehog (Mega-Tech, set 2)", MACHINE_NOT_WORKING )
-/* 53 */ GAME( 1990, mt_fshrk, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Toaplan / Sega", "Fire Shark (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 54 */ GAME( 1991, mt_spman, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega / Marvel", "Spider-Man vs The Kingpin (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 55 */ GAME( 1991, mt_calga, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "California Games (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 56 */ // unknown
-/* 57 */ GAME( 1991, mt_gaxe2, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Golden Axe II (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 58 */ GAME( 1991, mt_stf, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Joe Montana II: Sports Talk Football (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 59 */ GAME( 1991, mt_mlh, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Mario Lemieux Hockey (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 60 */ GAME( 1992, mt_kcham, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Kid Chameleon (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 61 */ GAME( 1992, mt_tout, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Turbo Outrun (Mega-Tech)", MACHINE_NOT_WORKING )
-/* 62 */ GAME( 1992, mt_soni2, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Sonic The Hedgehog 2 (Mega-Tech)", MACHINE_NOT_WORKING )
-
-/* Games seen in auction (#122011114579), but no confirmed number
-- Action Fighter
-- Enduro Racer
-
-Games seen in auction (#122011114579) known not to be original but manufactured/bootlegged on actual megatech carts.
-The labels are noticeably different than expected. Be careful if thinking of obtaining!
-- After Burner II (GEN)
-- Castle of Illusion Starring Mickey Mouse (GEN)
-- Double Dragon (SMS)
-- Kung Fu Kid (SMS)
-- Quackshot Starring Donald Duck (GEN)
-- Wonderboy (SMS)
-
-more? */