1 // license:BSD-3-Clause
2 // copyright-holders:David Haywood, Barry Rodewald
3 /* Sega MegaTech
4
5 About MegaTech:
6
7 Megatech games are identical to their Genesis/SMS equivalents, however the Megatech cartridges contain
8 a BIOS rom with the game instructions. The last part number of the bios ROM is the cart/game ID code.
9
10 The instruction rom appears to map at 0x300000 in the cart space.
11
12 In Megatech games your coins buy you time to play the game, how you perform in the game does not
13 matter, you can die and start a new game providing you still have time, likewise you can be playing
14 well and run out of time if you fail to insert more coins. This is the same method Nintendo used
15 with their Playchoice 10 system.
16
17 The BIOS screen is based around SMS hardware, with an additional Z80 and SMS VDP chip not present on
18 a standard Genesis.
19
20 SMS games run on Megatech in the Genesis's SMS compatibility mode, where the Genesis Z80 becomes the
21 main CPU and the Genesis VDP acts in a mode mimicking the behavior of the SMS VDP. A pin on the carts
22 determines which mode the game runs in.
23
24 Additions will only be made to this driver if proof that the dumped set are original roms with original
25 Sega part numbers is given..
26
27
28 Sega Mega Tech Cartridges (Readme by Guru)
29 -------------------------
30
31 These are cart-based games for use with Sega Mega Tech hardware. There are 6 known types of carts. All carts
32 are very simple, almost exactly the same as Mega Play carts. They contain just 2 or 3 ROMs.
33 PCB 171-6215A has locations for 2 ROMs and is dated 1991. PCB 171-6215A is also used in Mega Play!
34 PCB 171-5782 has locations for 2 ROMs and is dated 1989.
35 PCB 171-5869A has locations for 3 ROMs and is dated 1989.
36 PCB 171-5834 has locations for 3 ROMs and is dated 1989.
37 PCB 171-5783 has locations for 2 ROMs and is dated 1989.
38 PCB 171-5784 has locations for 2 ROMs and is dated 1989. It also contains a custom Sega IC 315-5235
39
40 |------------------------------- ROMs --------------------------------|
41 | |
42 Game PCB # Sticker on PCB Sticker on cart IC1 IC2 IC3
43 -------------------------------------------------------------------------------------------------------------------------------------------------
44 Altered Beast 171-5782 837-6963-01 610-0239-01 MPR-12538F (834200A) EPR-12368-01 (27C256) n/a
45 Space Harrier II 171-5782 837-6963-02 610-0239-02 MPR-11934 (834200) EPR-12368-02 (27256) n/a
46 Super Thunder Blade 610-0239-03
47 Great Golf 610-0239-04
48 Afterburner 610-0239-05
49 Out Run 171-5783 837-6963-06 610-0239-06 MPR-11078 (Mask) EPR-12368-06 (27256) n/a
50 Alien Syndrome 171-5783 837-6963-07 610-0239-07 MPR-11194 (232011) EPR-12368-07 (27256) n/a
51 Shinobi 610-0239-08
52 Fantasy Zone 610-0239-09
53 Afterburner 171-5784 837-6963-10 610-0239-10 315-5235 (custom) MPR-11271-T (834000) EPR-12368-10 (27256)
54 Great Football 171-5783 837-6963-19 610-0239-19 MPR-10576F (831000) EPR-12368-19 (27256) n/a
55 World Championship Soccer 171-5782 837-6963-21 610-0239-21 MPR-12607B (uPD23C4000) EPR-12368-21 (27256) n/a
56 Tetris 171-5834 837-6963-22 610-0239-22 MPR-12356F (831000) MPR-12357F (831000) EPR-12368-22 (27256)
57 Ghouls & Ghosts 171-5869A - 610-0239-23 MPR-12605 (40 pins) MPR-12606 (40 pins) EPR-12368-23 (27256)
58 Super Hang On 171-5782 837-6963-24 610-0239-24 MPR-12640 (234000) EPR-12368-24 (27256) n/a
59 Forgotten Worlds 171-5782 837-6963-26 610-0239-26 MPR-12672-H (Mask) EPR-12368-26 (27256) n/a
60 The Revenge Of Shinobi 171-5782 837-6963-28 610-0239-28 MPR-12675 S44 (uPD23C4000) EPR-12368-28 (27C256) n/a
61 Arnold Palmer Tour Golf 171-5782 837-6963-31 610-0239-31 MPR-12645F (834200A) EPR-12368-31 (27256) n/a
62 Super Real Basket Ball 171-5782 837-6963-32 610-0239-32 MPR-12904F (838200A) EPR-12368-32 (27256) n/a
63 Tommy Lasorda Baseball 171-5782 837-6963-35 610-0239-35 MPR-12706F (834200A) EPR-12368-35 (27256) n/a
64 ESWAT 171-5782 837-6963-38 610-0239-38 MPR-13192-H (uPD23C4000) EPR-12368-38 (27256) n/a
65 Moonwalker 171-5782 837-6963-40 610-0239-40 MPR-13285A S61 (uPD23C4000) EPR-12368-40 (27256) n/a
66 Shadow Dancer 171-5782 837-6963-43 610-0239-43 MPR-13571-S (uPD23C4000) EPR-12368-43 (27256) n/a
67 Wrestle War 171-5782 837-6963-48 610-0239-48 MPR-14025-F (834200A) EPR-12368-48 (27256) n/a
68 Bonanza Bros. 171-5782 837-6963-49 610-0239-49 MPR-13905A-F (834200A) EPR-12368-49 (27256) n/a
69 Streets of Rage 171-5782 837-6963-51 610-0239-51 MPR-14125-SM (uPD23C4000) EPR-12368-51 (27C256) n/a
70 Sonic The Hedgehog 171-5782 837-6963-52 610-0239-52 MPR-13913-F (834200A) EPR-12368-52 (27C256) n/a
71 Spider-Man 171-5782 837-6963-54 610-0239-54 MPR-14027-SM (uPD23C4000) EPR-12368-54 (27C256) n/a
72 California Games 171-5834 837-6963-55-01 610-0239-55 EPR-14494 (27C020) EPR-14495 (27C020) EPR-12368-55 (27C256)
73 Mario Lemeux Hockey 171-5782 837-6963-59 610-0239-59 MPR-14376-H (234000) EPR-12368-59 (27256) n/a
74 Turbo Outrun 171-5782 837-6963-61 610-0239-61 MPR-14674 (uPD23C4000) EPR-12368-61 (27256) n/a
75 Sonic Hedgehog 2 171-6215A 837-6963-62 610-0239-62 MPR-15000A-F (838200) EPR-12368-62 (27256) n/a
76
77 */
78 #include "emu.h"
79 #include "cpu/z80/z80.h"
80 #include "machine/cxd1095.h"
81 #include "rendlay.h"
82
83 #include "includes/megadriv.h"
84 #include "bus/generic/slot.h"
85 #include "bus/generic/carts.h"
86
87 #include "softlist.h"
88
89 #define MASTER_CLOCK 53693100
90
91
92
93 class mtech_state : public md_base_state
94 {
95 public:
mtech_state(const machine_config & mconfig,device_type type,const char * tag)96 mtech_state(const machine_config &mconfig, device_type type, const char *tag)
97 : md_base_state(mconfig, type, tag),
98 m_vdp1(*this, "vdp1"),
99 m_cart1(*this, "mt_slot1"),
100 m_cart2(*this, "mt_slot2"),
101 m_cart3(*this, "mt_slot3"),
102 m_cart4(*this, "mt_slot4"),
103 m_cart5(*this, "mt_slot5"),
104 m_cart6(*this, "mt_slot6"),
105 m_cart7(*this, "mt_slot7"),
106 m_cart8(*this, "mt_slot8"),
107 m_bioscpu(*this, "mtbios"),
108 m_region_maincpu(*this, "maincpu")
109 { }
110
111 void megatech_multislot(machine_config &config);
112 void megatech_fixedslot(machine_config &config);
113
114 void init_mt_crt();
115 void init_mt_slot();
116
117 private:
118
119 void megatech(machine_config &config);
120
121 void cart_select_w(uint8_t data);
122 uint8_t bios_portc_r();
123 uint8_t bios_porte_r();
124 void bios_portd_w(uint8_t data);
125 void bios_porte_w(uint8_t data);
126 uint8_t read_68k_banked_data(offs_t offset);
127 void write_68k_banked_data(offs_t offset, uint8_t data);
128 void mt_z80_bank_w(uint8_t data);
129 uint8_t banked_ram_r(offs_t offset);
130 void banked_ram_w(offs_t offset, uint8_t data);
131 void bios_port_ctrl_w(uint8_t data);
132 uint8_t bios_joypad_r(offs_t offset);
133 void bios_port_7f_w(uint8_t data);
134 uint8_t vdp1_count_r(offs_t offset);
135 u8 sms_count_r(offs_t offset);
136 uint8_t sms_ioport_dc_r();
137 uint8_t sms_ioport_dd_r();
138 void mt_sms_standard_rom_bank_w(address_space &space, offs_t offset, uint8_t data);
139
140 DECLARE_MACHINE_RESET(megatech);
141
142 image_init_result load_cart(device_image_interface &image, generic_slot_device *slot, int gameno);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart1)143 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart1 ) { return load_cart(image, m_cart1, 0); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart2)144 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart2 ) { return load_cart(image, m_cart2, 1); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart3)145 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart3 ) { return load_cart(image, m_cart3, 2); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart4)146 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart4 ) { return load_cart(image, m_cart4, 3); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart5)147 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart5 ) { return load_cart(image, m_cart5, 4); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart6)148 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart6 ) { return load_cart(image, m_cart6, 5); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart7)149 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart7 ) { return load_cart(image, m_cart7, 6); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mt_cart8)150 DECLARE_DEVICE_IMAGE_LOAD_MEMBER( mt_cart8 ) { return load_cart(image, m_cart8, 7); }
151
152 uint32_t screen_update_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
153 uint32_t screen_update_menu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
154 DECLARE_WRITE_LINE_MEMBER(screen_vblank_main);
155
156 void megatech_bios_map(address_map &map);
157 void megatech_bios_portmap(address_map &map);
158
159 uint8_t m_mt_cart_select_reg;
160 uint32_t m_bios_port_ctrl;
161 int m_current_machine_is_sms; // is the current game SMS based (running on genesis z80, in VDP compatibility mode)
162 uint32_t m_bios_ctrl_inputs;
163 int m_mt_bank_addr;
164
165 int m_cart_is_genesis[8];
166
167 void set_genz80_as_md();
168 void set_genz80_as_sms();
169
170 void switch_cart(int gameno);
171
172 std::unique_ptr<uint8_t[]> m_banked_ram;
173 std::unique_ptr<uint8_t[]> sms_mainram;
174 std::unique_ptr<uint8_t[]> sms_rom;
175
176 required_device<sega315_5124_device> m_vdp1;
177 required_device<generic_slot_device> m_cart1;
178 optional_device<generic_slot_device> m_cart2;
179 optional_device<generic_slot_device> m_cart3;
180 optional_device<generic_slot_device> m_cart4;
181 optional_device<generic_slot_device> m_cart5;
182 optional_device<generic_slot_device> m_cart6;
183 optional_device<generic_slot_device> m_cart7;
184 optional_device<generic_slot_device> m_cart8;
185 required_device<cpu_device> m_bioscpu;
186 required_memory_region m_region_maincpu;
187
188 memory_region *m_cart_reg[8];
189 };
190
191
192
193 /* not currently used */
194 static INPUT_PORTS_START( megatech ) /* Genesis Input Ports */
PORT_INCLUDE(megadriv)195 PORT_INCLUDE(megadriv)
196
197 PORT_START("BIOS_IN0") // port 6
198 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Select") PORT_CODE(KEYCODE_0)
199 PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
200 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
201 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
202 PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
203 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
204 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
205 PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
206 PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
207 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
208 PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
209 PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
210 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
211 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
212 PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
213 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
214 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
215 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
216 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
217 PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
218
219 PORT_START("BIOS_IN1") // port 6
220 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // a few coin inputs here
221 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
222 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
223 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
224 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service coin") PORT_CODE(KEYCODE_9)
225 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Enter") PORT_CODE(KEYCODE_MINUS)
226 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
227 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
228
229 PORT_START("BIOS_DSW0")
230 PORT_DIPNAME( 0x02, 0x02, "Coin slot 3" )
231 PORT_DIPSETTING( 0x00, "Inhibit" )
232 PORT_DIPSETTING( 0x02, "Accept" )
233 PORT_DIPNAME( 0x01, 0x01, "Coin slot 4" )
234 PORT_DIPSETTING( 0x00, "Inhibit" )
235 PORT_DIPSETTING( 0x01, "Accept" )
236 PORT_DIPNAME( 0x1c, 0x1c, "Coin slot 3/4 value" )
237 PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
238 PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )
239 PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
240 PORT_DIPSETTING( 0x10, DEF_STR( 1C_4C ) )
241 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_5C ) )
242 PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) )
243 PORT_DIPSETTING( 0x04, DEF_STR( 1C_8C ) )
244 PORT_DIPSETTING( 0x00, "1 Coin/10 credits" )
245 PORT_DIPNAME( 0xe0, 0x60, "Coin slot 2 value" )
246 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) )
247 PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
248 PORT_DIPSETTING( 0x60, DEF_STR( 1C_2C ) )
249 PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) )
250 PORT_DIPSETTING( 0xa0, DEF_STR( 1C_4C ) )
251 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_5C ) )
252 PORT_DIPSETTING( 0xe0, DEF_STR( 1C_6C ) )
253 PORT_DIPSETTING( 0x00, "Inhibit" )
254
255 PORT_START("BIOS_DSW1")
256 PORT_DIPNAME( 0x0f, 0x01, "Coin Slot 1 value" )
257 PORT_DIPSETTING( 0x00, "Inhibit" )
258 PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
259 PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
260 PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C ) )
261 PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
262 PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C ) )
263 PORT_DIPSETTING( 0x06, DEF_STR( 1C_6C ) )
264 PORT_DIPSETTING( 0x07, DEF_STR( 1C_7C ) )
265 PORT_DIPSETTING( 0x08, DEF_STR( 1C_8C ) )
266 PORT_DIPSETTING( 0x09, DEF_STR( 1C_9C ) )
267 PORT_DIPSETTING( 0x0a, "1 coin/10 credits" )
268 PORT_DIPSETTING( 0x0b, "1 coin/11 credits" )
269 PORT_DIPSETTING( 0x0c, "1 coin/12 credits" )
270 PORT_DIPSETTING( 0x0d, "1 coin/13 credits" )
271 PORT_DIPSETTING( 0x0e, "1 coin/14 credits" )
272 PORT_DIPSETTING( 0x0f, "1 coin/15 credits" )
273 PORT_DIPNAME( 0xf0, 0xa0, "Time per credit" )
274 PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
275 PORT_DIPSETTING( 0x10, "7:30" )
276 PORT_DIPSETTING( 0x20, "7:00" )
277 PORT_DIPSETTING( 0x30, "6:30" )
278 PORT_DIPSETTING( 0x40, "6:00" )
279 PORT_DIPSETTING( 0x50, "5:30" )
280 PORT_DIPSETTING( 0x60, "5:00" )
281 PORT_DIPSETTING( 0x70, "4:30" )
282 PORT_DIPSETTING( 0x80, "4:00" )
283 PORT_DIPSETTING( 0x90, "3:30" )
284 PORT_DIPSETTING( 0xa0, "3:00" )
285 PORT_DIPSETTING( 0xb0, "2:30" )
286 PORT_DIPSETTING( 0xc0, "2:00" )
287 PORT_DIPSETTING( 0xd0, "1:30" )
288 PORT_DIPSETTING( 0xe0, "1:00" )
289 PORT_DIPSETTING( 0xf0, "0:30" )
290
291
292 PORT_START("BIOS_J1")
293 PORT_DIPNAME( 0x0001, 0x0001, "5" )
294 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
295 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
296 PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
297 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
298 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
299 PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
300 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
301 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
302 PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
303 PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
304 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
305 PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
306 PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
307 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
308 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
309 PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
310 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
311 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
312 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
313 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
314 PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
315 PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
316 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
317 INPUT_PORTS_END
318
319 /* MEGATECH specific */
320
321 u8 mtech_state::sms_count_r(offs_t offset)
322 {
323 if (offset & 0x01)
324 return m_vdp->hcount_read();
325 else
326 return m_vdp->vcount_read();
327 }
328
sms_ioport_dc_r()329 uint8_t mtech_state::sms_ioport_dc_r()
330 {
331 /* 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) */
332 /* bit 4: TL-A; bit 5: TR-A */
333 return (machine().root_device().ioport("PAD1")->read() & 0x3f) | ((machine().root_device().ioport("PAD2")->read() & 0x03) << 6);
334 }
335
sms_ioport_dd_r()336 uint8_t mtech_state::sms_ioport_dd_r()
337 {
338 /* 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) */
339 /* bit 2: TL-B; bit 3: TR-B; bit 4: RESET; bit 5: unused; bit 6: TH-A; bit 7: TH-B*/
340 return ((machine().root_device().ioport("PAD2")->read() & 0x3c) >> 2) | 0x10;
341 }
342
343
mt_sms_standard_rom_bank_w(address_space & space,offs_t offset,uint8_t data)344 void mtech_state::mt_sms_standard_rom_bank_w(address_space &space, offs_t offset, uint8_t data)
345 {
346 int bank = data & 0x1f;
347 //logerror("bank w %02x %02x\n", offset, data);
348
349 sms_mainram[0x1ffc + offset] = data;
350 switch (offset)
351 {
352 case 0:
353 logerror("bank w %02x %02x\n", offset, data);
354 space.install_rom(0x0000, 0xbfff, sms_rom.get());
355 space.unmap_write(0x0000, 0xbfff);
356 //printf("bank ram??\n");
357 break;
358 case 1:
359 memcpy(sms_rom.get()+0x0000, m_region_maincpu->base()+bank*0x4000, 0x4000);
360 break;
361 case 2:
362 memcpy(sms_rom.get()+0x4000, m_region_maincpu->base()+bank*0x4000, 0x4000);
363 break;
364 case 3:
365 memcpy(sms_rom.get()+0x8000, m_region_maincpu->base()+bank*0x4000, 0x4000);
366 break;
367
368 }
369 }
370
set_genz80_as_sms()371 void mtech_state::set_genz80_as_sms()
372 {
373 address_space &prg = m_z80snd->space(AS_PROGRAM);
374 address_space &io = m_z80snd->space(AS_IO);
375
376 // main ram area
377 sms_mainram = std::make_unique<uint8_t[]>(0x2000);
378 prg.install_ram(0xc000, 0xdfff, 0x2000, sms_mainram.get());
379 memset(sms_mainram.get(), 0x00, 0x2000);
380
381 // fixed rom bank area
382 sms_rom = std::make_unique<uint8_t[]>(0xc000);
383 prg.install_rom(0x0000, 0xbfff, sms_rom.get());
384
385 memcpy(sms_rom.get(), m_region_maincpu->base(), 0xc000);
386
387 prg.install_write_handler(0xfffc, 0xffff, write8m_delegate(*this, FUNC(mtech_state::mt_sms_standard_rom_bank_w)));
388
389 // ports
390 io.install_read_handler (0x40, 0x41, 0, 0x3e, 0, read8sm_delegate(*this, FUNC(mtech_state::sms_count_r)));
391 io.install_write_handler (0x40, 0x41, 0, 0x3e, 0, write8smo_delegate(*m_vdp, FUNC(sega315_5124_device::psg_w)));
392 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)));
393 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)));
394
395 io.install_read_handler (0x10, 0x10, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); // super tetris
396
397 io.install_read_handler (0xdc, 0xdc, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dc_r)));
398 io.install_read_handler (0xdd, 0xdd, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r)));
399 io.install_read_handler (0xde, 0xde, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r)));
400 io.install_read_handler (0xdf, 0xdf, read8smo_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); // adams family
401 }
402
403
404 /* sets the megadrive z80 to it's normal ports / map */
set_genz80_as_md()405 void mtech_state::set_genz80_as_md()
406 {
407 address_space &prg = m_z80snd->space(AS_PROGRAM);
408
409 prg.install_readwrite_bank(0x0000, 0x1fff, "bank1");
410 machine().root_device().membank("bank1")->set_base(m_genz80.z80_prgram.get());
411
412 prg.install_ram(0x0000, 0x1fff, m_genz80.z80_prgram.get());
413
414 prg.install_readwrite_handler(0x4000, 0x4003, read8sm_delegate(*m_ymsnd, FUNC(ym2612_device::read)), write8sm_delegate(*m_ymsnd, FUNC(ym2612_device::write)));
415 prg.install_write_handler (0x6000, 0x6000, write8smo_delegate(*this, FUNC(mtech_state::megadriv_z80_z80_bank_w)));
416 prg.install_write_handler (0x6001, 0x6001, write8smo_delegate(*this, FUNC(mtech_state::megadriv_z80_z80_bank_w)));
417 prg.install_read_handler (0x6100, 0x7eff, read8smo_delegate(*this, FUNC(mtech_state::megadriv_z80_unmapped_read)));
418 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)));
419 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)));
420 }
421
422
switch_cart(int gameno)423 void mtech_state::switch_cart(int gameno)
424 {
425 logerror("select game %d\n", gameno + 1);
426
427 m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
428 m_z80snd->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
429 //m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
430 //m_z80snd->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
431 m_ymsnd->reset();
432
433 megadriv_stop_scanline_timer();// stop the scanline timer for the genesis vdp... it can be restarted in video eof when needed
434 m_vdp->reset();
435
436 /* if the regions exist we're fine */
437 if (m_cart_reg[gameno])
438 {
439 memcpy(m_region_maincpu->base(), m_cart_reg[gameno]->base(), 0x400000);
440
441 if (!m_cart_is_genesis[gameno])
442 {
443 logerror("enabling SMS Z80\n");
444 m_current_machine_is_sms = 1;
445 set_genz80_as_sms();
446 //m_z80snd->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
447 m_z80snd->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
448 }
449 else
450 {
451 logerror("disabling SMS Z80\n");
452 m_current_machine_is_sms = 0;
453 set_genz80_as_md();
454 m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
455 //m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
456 }
457 }
458 else /* else, no cart.. */
459 {
460 memset(memregion("mtbios")->base() + 0x8000, 0x00, 0x8000);
461 memset(m_region_maincpu->base(), 0x00, 0x400000);
462 }
463 }
464
cart_select_w(uint8_t data)465 void mtech_state::cart_select_w(uint8_t data)
466 {
467 /* seems to write the slot number..
468 but it stores something in (banked?) ram
469 because it always seems to show the
470 same instructions ... */
471 m_mt_cart_select_reg = data;
472 switch_cart(m_mt_cart_select_reg);
473 }
474
475
bios_portc_r()476 uint8_t mtech_state::bios_portc_r()
477 {
478 return 0;
479 }
480
bios_porte_r()481 uint8_t mtech_state::bios_porte_r()
482 {
483 return 0;
484 }
485
bios_portd_w(uint8_t data)486 void mtech_state::bios_portd_w(uint8_t data)
487 {
488 output().set_value("Alarm_sound", BIT(data, 7));
489 m_bios_ctrl_inputs = data & 0x04; // Genesis/SMS input ports disable bit
490 }
491
bios_porte_w(uint8_t data)492 void mtech_state::bios_porte_w(uint8_t data)
493 {
494 output().set_value("Flash_screen", BIT(data, 1));
495 }
496
497 /* this sets 0x300000 which may indicate that the 68k can see the instruction rom
498 there, this limiting the max game rom capacity to 3meg. */
499
read_68k_banked_data(offs_t offset)500 uint8_t mtech_state::read_68k_banked_data(offs_t offset)
501 {
502 address_space &space68k = m_maincpu->space();
503 uint8_t ret = space68k.read_byte(m_mt_bank_addr + offset);
504 return ret;
505 }
506
write_68k_banked_data(offs_t offset,uint8_t data)507 void mtech_state::write_68k_banked_data(offs_t offset, uint8_t data)
508 {
509 address_space &space68k = m_maincpu->space();
510 space68k.write_byte(m_mt_bank_addr + offset,data);
511 }
512
mt_z80_bank_w(uint8_t data)513 void mtech_state::mt_z80_bank_w(uint8_t data)
514 {
515 m_mt_bank_addr = ((m_mt_bank_addr >> 1) | (data << 23)) & 0xff8000;
516 }
517
banked_ram_r(offs_t offset)518 uint8_t mtech_state::banked_ram_r(offs_t offset)
519 {
520 return m_banked_ram[offset + 0x1000 * (m_mt_cart_select_reg & 0x07)];
521 }
522
banked_ram_w(offs_t offset,uint8_t data)523 void mtech_state::banked_ram_w(offs_t offset, uint8_t data)
524 {
525 m_banked_ram[offset + 0x1000 * (m_mt_cart_select_reg & 0x07)] = data;
526 }
527
528
529
megatech_bios_map(address_map & map)530 void mtech_state::megatech_bios_map(address_map &map)
531 {
532 map(0x0000, 0x2fff).rom(); // from bios rom (0x0000-0x2fff populated in ROM)
533 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
534 map(0x4000, 0x5fff).ram(); // plain ram?
535 map(0x6000, 0x6000).w(FUNC(mtech_state::mt_z80_bank_w));
536 map(0x6400, 0x6407).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
537 map(0x6800, 0x6807).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
538 map(0x7000, 0x77ff).rom(); // from bios rom (0x7000-0x77ff populated in ROM)
539 //map(0x7800, 0x7fff).ram(); // ?
540 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?
541 }
542
543
bios_port_ctrl_w(uint8_t data)544 void mtech_state::bios_port_ctrl_w(uint8_t data)
545 {
546 m_bios_port_ctrl = data;
547 }
548
549 /* the test mode accesses the joypad/stick inputs like this */
bios_joypad_r(offs_t offset)550 uint8_t mtech_state::bios_joypad_r(offs_t offset)
551 {
552 uint8_t retdata = 0;
553
554 if (m_bios_port_ctrl == 0x55)
555 {
556 /* A keys */
557 retdata = ((m_io_pad_3b[0]->read() & 0x40) >> 2) | ((m_io_pad_3b[1]->read() & 0x40) >> 4) | 0xeb;
558 }
559 else
560 {
561 if (offset == 0)
562 retdata = (m_io_pad_3b[0]->read() & 0x3f) | ((m_io_pad_3b[1]->read() & 0x03) << 6);
563 else
564 retdata = ((m_io_pad_3b[1]->read() & 0x3c) >> 2) | 0xf0;
565
566 }
567 return retdata;
568 }
569
bios_port_7f_w(uint8_t data)570 void mtech_state::bios_port_7f_w(uint8_t data)
571 {
572 // popmessage("CPU #3: I/O port 0x7F write, data %02x", data);
573 }
574
575
vdp1_count_r(offs_t offset)576 uint8_t mtech_state::vdp1_count_r(offs_t offset)
577 {
578 if (offset & 0x01)
579 return m_vdp1->hcount_read();
580 else
581 return m_vdp1->vcount_read();
582 }
583
megatech_bios_portmap(address_map & map)584 void mtech_state::megatech_bios_portmap(address_map &map)
585 {
586 map.global_mask(0xff);
587 map(0x3f, 0x3f).w(FUNC(mtech_state::bios_port_ctrl_w));
588 map(0x7f, 0x7f).w(FUNC(mtech_state::bios_port_7f_w)); // PSG?
589
590 map(0x40, 0x41).mirror(0x3e).r(FUNC(mtech_state::vdp1_count_r));
591 map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write));
592 map(0x81, 0x81).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write));
593
594 map(0xdc, 0xdd).r(FUNC(mtech_state::bios_joypad_r)); // player inputs
595 }
596
597
598
init_mt_slot()599 void mtech_state::init_mt_slot()
600 {
601 m_banked_ram = std::make_unique<uint8_t[]>(0x1000*8);
602
603 init_megadriv();
604
605 // this gets set in DEVICE_IMAGE_LOAD
606 memset(m_cart_is_genesis, 0, sizeof(m_cart_is_genesis));
607 }
608
init_mt_crt()609 void mtech_state::init_mt_crt()
610 {
611 uint8_t* pin = memregion("sms_pin")->base();
612 init_mt_slot();
613
614 m_cart_is_genesis[0] = !pin[0] ? 1 : 0;
615 }
616
617
screen_update_main(screen_device & screen,bitmap_rgb32 & bitmap,const rectangle & cliprect)618 uint32_t mtech_state::screen_update_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
619 {
620 // 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
621 if (!m_current_machine_is_sms)
622 screen_update_megadriv(screen, bitmap, cliprect);
623 else
624 {
625 m_vdp->screen_update(screen, bitmap, cliprect);
626 #if 0
627 // when launching megatech + both sms and megadrive games, the following would be needed...
628 for (int y = 0; y < 224; y++)
629 {
630 uint32_t* lineptr = &bitmap.pix(y);
631 uint32_t* srcptr = &m_vdp->get_bitmap().pix(y + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT);
632
633 for (int x = 0; x < sega315_5124_device::WIDTH; x++)
634 lineptr[x] = srcptr[x];
635 }
636 #endif
637 }
638 return 0;
639 }
640
WRITE_LINE_MEMBER(mtech_state::screen_vblank_main)641 WRITE_LINE_MEMBER(mtech_state::screen_vblank_main)
642 {
643 if (!m_current_machine_is_sms)
644 screen_vblank_megadriv(state);
645 }
646
MACHINE_RESET_MEMBER(mtech_state,megatech)647 MACHINE_RESET_MEMBER(mtech_state, megatech)
648 {
649 m_mt_bank_addr = 0;
650 MACHINE_RESET_CALL_MEMBER(megadriv);
651
652 std::string region_tag;
653 if (m_cart1->get_rom_size() > 0)
654 m_cart_reg[0] = memregion(region_tag.assign(m_cart1->tag()).append(GENERIC_ROM_REGION_TAG));
655 else
656 m_cart_reg[0] = memregion(":mt_slot1:cart");
657 if (m_cart2)
658 m_cart_reg[1] = memregion(region_tag.assign(m_cart2->tag()).append(GENERIC_ROM_REGION_TAG));
659 if (m_cart3)
660 m_cart_reg[2] = memregion(region_tag.assign(m_cart3->tag()).append(GENERIC_ROM_REGION_TAG));
661 if (m_cart4)
662 m_cart_reg[3] = memregion(region_tag.assign(m_cart4->tag()).append(GENERIC_ROM_REGION_TAG));
663 if (m_cart5)
664 m_cart_reg[4] = memregion(region_tag.assign(m_cart5->tag()).append(GENERIC_ROM_REGION_TAG));
665 if (m_cart6)
666 m_cart_reg[5] = memregion(region_tag.assign(m_cart6->tag()).append(GENERIC_ROM_REGION_TAG));
667 if (m_cart7)
668 m_cart_reg[6] = memregion(region_tag.assign(m_cart7->tag()).append(GENERIC_ROM_REGION_TAG));
669 if (m_cart8)
670 m_cart_reg[7] = memregion(region_tag.assign(m_cart8->tag()).append(GENERIC_ROM_REGION_TAG));
671
672 switch_cart(0);
673 }
674
screen_update_menu(screen_device & screen,bitmap_rgb32 & bitmap,const rectangle & cliprect)675 uint32_t mtech_state::screen_update_menu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
676 {
677 m_vdp1->screen_update(screen, bitmap, cliprect);
678 return 0;
679 }
680
681
megatech(machine_config & config)682 void mtech_state::megatech(machine_config &config)
683 {
684 /* basic machine hardware */
685 md_ntsc(config);
686
687 /* Megatech has an extra SMS based bios *and* an additional screen */
688 Z80(config, m_bioscpu, MASTER_CLOCK / 15); /* ?? */
689 m_bioscpu->set_addrmap(AS_PROGRAM, &mtech_state::megatech_bios_map);
690 m_bioscpu->set_addrmap(AS_IO, &mtech_state::megatech_bios_portmap);
691
692 cxd1095_device &io1(CXD1095(config, "io1"));
693 io1.in_porta_cb().set_ioport("BIOS_DSW0");
694 io1.in_portb_cb().set_ioport("BIOS_DSW1");
695 io1.out_porte_cb().set(FUNC(mtech_state::cart_select_w));
696
697 cxd1095_device &io2(CXD1095(config, "io2"));
698 io2.in_porta_cb().set_ioport("BIOS_IN0");
699 io2.in_portb_cb().set_ioport("BIOS_IN1");
700 io2.in_portc_cb().set(FUNC(mtech_state::bios_portc_r));
701 io2.out_portd_cb().set(FUNC(mtech_state::bios_portd_w));
702 io2.in_porte_cb().set(FUNC(mtech_state::bios_porte_r));
703 io2.out_porte_cb().set(FUNC(mtech_state::bios_porte_w));
704
705 MCFG_MACHINE_RESET_OVERRIDE(mtech_state, megatech)
706
707 config.set_default_layout(layout_dualhovu);
708
709 screen_device &screen(*subdevice<screen_device>("megadriv"));
710 screen.set_raw(XTAL(10'738'635)/2,
711 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,
712 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);
713 screen.set_screen_update(FUNC(mtech_state::screen_update_main));
714 screen.screen_vblank().set(FUNC(mtech_state::screen_vblank_main));
715
716 m_vdp->n_int().set_inputline(m_z80snd, 0);
717
718 screen_device &menu(SCREEN(config, "menu", SCREEN_TYPE_RASTER));
719 // check frq
720 menu.set_raw(XTAL(10'738'635)/2,
721 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,
722 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);
723 menu.set_screen_update(FUNC(mtech_state::screen_update_menu));
724
725 SEGA315_5246(config, m_vdp1, MASTER_CLOCK / 5); /* ?? */
726 m_vdp1->set_screen("menu");
727 m_vdp1->set_is_pal(false);
728 m_vdp1->n_int().set_inputline(m_bioscpu, 0);
729 m_vdp1->add_route(ALL_OUTPUTS, "lspeaker", 0.25);
730 m_vdp1->add_route(ALL_OUTPUTS, "rspeaker", 0.25);
731 }
732
733
load_cart(device_image_interface & image,generic_slot_device * slot,int gameno)734 image_init_result mtech_state::load_cart(device_image_interface &image, generic_slot_device *slot, int gameno)
735 {
736 uint8_t *ROM;
737 const char *pcb_name;
738 uint32_t size = slot->common_get_size("rom");
739
740 if (!image.loaded_through_softlist())
741 return image_init_result::FAIL;
742
743 slot->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
744 ROM = slot->get_rom_base();
745 memcpy(ROM, image.get_software_region("rom"), size);
746
747 if ((pcb_name = image.get_feature("pcb_type")) == nullptr)
748 return image_init_result::FAIL;
749 else
750 {
751 if (!core_stricmp("genesis", pcb_name))
752 {
753 osd_printf_debug("cart%d is genesis\n", gameno + 1);
754 m_cart_is_genesis[gameno] = 1;
755 }
756 else if (!core_stricmp("sms", pcb_name))
757 {
758 osd_printf_debug("cart%d is sms\n", gameno + 1);
759 m_cart_is_genesis[gameno] = 0;
760 }
761 else
762 osd_printf_debug("cart%d is invalid\n", gameno + 1);
763 }
764
765 return image_init_result::PASS;
766 }
767
768 #define MEGATECH_CARTSLOT(_tag, _load) \
769 GENERIC_CARTSLOT(config, _tag, generic_plain_slot, "megatech_cart").set_device_load(FUNC(mtech_state::_load))
770
megatech_multislot(machine_config & config)771 void mtech_state::megatech_multislot(machine_config &config)
772 {
773 megatech(config);
774
775 // add cart slots
776 MEGATECH_CARTSLOT("mt_slot1", mt_cart1);
777 MEGATECH_CARTSLOT("mt_slot2", mt_cart2);
778 MEGATECH_CARTSLOT("mt_slot3", mt_cart3);
779 MEGATECH_CARTSLOT("mt_slot4", mt_cart4);
780 MEGATECH_CARTSLOT("mt_slot5", mt_cart5);
781 MEGATECH_CARTSLOT("mt_slot6", mt_cart6);
782 MEGATECH_CARTSLOT("mt_slot7", mt_cart7);
783 MEGATECH_CARTSLOT("mt_slot8", mt_cart8);
784
785 SOFTWARE_LIST(config, "cart_list").set_original("megatech");
786 }
787
788
megatech_fixedslot(machine_config & config)789 void mtech_state::megatech_fixedslot(machine_config &config)
790 {
791 megatech(config);
792
793 // add cart slots
794 generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "mt_slot1", generic_plain_slot, "megatech_cart"));
795 cartslot.set_device_load(FUNC(mtech_state::mt_cart1));
796 cartslot.set_user_loadable(false);
797 }
798
799
800 /* MegaTech Games - Genesis & sms! Games with a timer */
801
802 #define MEGATECH_BIOS \
803 ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) \
804 ROM_REGION( 0x10000, "mtbios", 0 ) \
805 ROM_SYSTEM_BIOS( 0, "ver1", "Ver 1" ) \
806 ROMX_LOAD( "epr-12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953), ROM_BIOS(0)) \
807 ROM_SYSTEM_BIOS( 1, "ver0a", "Ver 0 Rev A" ) \
808 ROMX_LOAD( "epr-12263a.20", 0x000000, 0x8000, CRC(07c3f423) SHA1(50c28bbc2d4349c820d988ae3f20aae3f808545f), ROM_BIOS(1)) \
809 ROM_SYSTEM_BIOS( 2, "ver0b", "Ver 0 Rev B" ) \
810 ROMX_LOAD( "epr-12263b.20", 0x000000, 0x8000, CRC(ca26c87a) SHA1(987a18bede6e54cd73c4434426eb6c302a37cdc5), ROM_BIOS(2)) \
811 ROM_SYSTEM_BIOS( 3, "ver0aa","Ver 0 Rev B (alt?)" ) \
812 ROMX_LOAD( "epr-12604a.20", 0x000000, 0x8000, CRC(884e4aa5) SHA1(c9008c431a937c084fb475273093ca0b434b5f47), ROM_BIOS(3))
813
814
815 /* no games */
816 ROM_START( megatech )
817 MEGATECH_BIOS
818 ROM_END
819
820
821 /* Game 01 - Altered Beast (Genesis) */
822 ROM_START( mt_beast ) /* Altered Beast */
823 MEGATECH_BIOS
824
825 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
826 ROM_LOAD16_WORD_SWAP( "mp12538.ic1", 0x000000, 0x080000, CRC(3bea3dce) SHA1(ec72e4fde191dedeb3f148f132603ed3c23f0f86) )
827 ROM_LOAD16_BYTE( "epr-12368-01.ic2", 0x300001, 0x08000, CRC(40cb0088) SHA1(e1711532c29f395a35a1cb34d789015881b5a1ed) )
828
829 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
830 ROM_END
831
832
833 /* Game 02 - Space Harrier 2 */
834 ROM_START( mt_shar2 ) /* Space Harrier 2 */
835 MEGATECH_BIOS
836
837 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
838 ROM_LOAD16_WORD_SWAP( "mp11934.ic1", 0x000000, 0x080000, CRC(932daa09) SHA1(a2d7a76f3604c6227d43229908bfbd02b0ef5fd9) )
839 ROM_LOAD16_BYTE( "epr-12368-02.ic2", 0x300001, 0x08000, CRC(c129c66c) SHA1(e7c0c97db9df9eb04e2f9ff561b64305219b8f1f) )
840
841 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
842 ROM_END
843
844
845 /* Game 03 - Super Thunder Blade */
846 ROM_START( mt_stbld ) /* Super Thunder Blade */
847 MEGATECH_BIOS
848
849 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
850 ROM_LOAD16_WORD_SWAP( "mp11996f.ic1", 0x000000, 0x080000, CRC(9355c34e) SHA1(26ff91c2921408673c644b0b1c8931d98524bf63) )
851 ROM_LOAD16_BYTE( "epr-12368-03.ic2", 0x300001, 0x08000, CRC(1ba4ac5d) SHA1(9bde57d70189d159ebdc537a9026001abfd0deae) )
852
853 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
854 ROM_END
855
856
857 /* Game 04 - Great Golf (SMS) */
858 /* Also known to have the ID# MPR-11128 instead of MPR-11129F, same contents */
859 ROM_START( mt_ggolf ) /* Great Golf */
860 MEGATECH_BIOS
861
862 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
863 ROM_LOAD16_WORD_SWAP( "mp11129f.ic1", 0x000000, 0x020000, CRC(c6611c84) SHA1(eab0eed872dd26b13bcf0b2dd74fcbbc078812c9) )
864 ROM_LOAD16_BYTE( "epr-12368-04.ic2", 0x300001, 0x08000, CRC(62e5579b) SHA1(e1f531be5c40a1216d4192baeda9352384444410) )
865
866 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
867 ROM_END
868
869
870 /* Game 05 - Great Soccer (SMS) - bad dump */
871 ROM_START( mt_gsocr ) /* Great Soccer */
872 MEGATECH_BIOS
873
874 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
875 ROM_LOAD16_WORD_SWAP( "mp10747f.ic1", 0x000000, 0x020000, BAD_DUMP CRC(9cf53703) SHA1(c6b4d1de56bd5bf067ec7fc80449c07686d01337) )
876 ROM_LOAD16_BYTE( "epr-12368-05.ic2", 0x300001, 0x08000, CRC(bab91fcc) SHA1(a160c9d34b253e93ac54fdcef33f95f44d8fa90c) )
877
878 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
879 ROM_END
880
881
882 /* Game 06 - Out Run (SMS) */
883 ROM_START( mt_orun ) /* Out Run */
884 MEGATECH_BIOS
885
886 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
887 ROM_LOAD16_WORD_SWAP( "mpr-11078.ic1", 0x000000, 0x040000, CRC(5589d8d2) SHA1(4f9b61b24f0d9fee0448cdbbe8fc05411dbb1102) )
888 ROM_LOAD16_BYTE( "epr-12368-06.ic2", 0x300001, 0x08000, CRC(c7c74429) SHA1(22ee261a653e10d66e0d6703c988bb7f236a7571) )
889
890 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
891 ROM_END
892
893
894 /* Game 07 - Alien Syndrome (SMS) */
895 ROM_START( mt_asyn ) /* Alien Syndrome */
896 MEGATECH_BIOS
897
898 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
899 ROM_LOAD16_WORD_SWAP( "mpr-11194.ic1", 0x000000, 0x040000, CRC(4cc11df9) SHA1(5d786476b275de34efb95f576dd556cf4b335a83) )
900 ROM_LOAD16_BYTE( "epr-12368-07.ic2", 0x300001, 0x08000, CRC(14f4a17b) SHA1(0fc010ac95762534892f1ae16986dbf1c25399d3) )
901
902 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
903 ROM_END
904
905
906 /* Game 08 - Shinobi (SMS) */
907 ROM_START( mt_shnbi ) /* Shinobi */
908 MEGATECH_BIOS
909
910 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
911 ROM_LOAD16_WORD_SWAP( "mp11706.ic1", 0x000000, 0x040000, CRC(0c6fac4e) SHA1(7c0778c055dc9c2b0aae1d166dbdb4734e55b9d1) )
912 ROM_LOAD16_BYTE( "epr-12368-08.ic2", 0x300001, 0x08000, CRC(103a0459) SHA1(d803ddf7926b83785e8503c985b8c78e7ccb5dac) )
913
914 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
915 ROM_END
916
917
918 /* Game 09 - Fantasy Zone (SMS) */
919 // note, dump was bad, but the good (uniquely identifiable) parts matched the 'fantasy zone (world) (v1.2).bin' SMS rom
920 // so I'm using that until it gets verified.
921 ROM_START( mt_fz ) /* Fantasy Zone */
922 MEGATECH_BIOS
923
924 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
925 ROM_LOAD16_WORD_SWAP( "mpr-10118.ic1", 0x000000, 0x020000, CRC(65d7e4e0) SHA1(0278cd120dc3a7707eda9314c46c7f27f9e8fdda) )
926 ROM_LOAD16_BYTE( "epr-12368-09.bin", 0x300001, 0x08000, CRC(373d2a70) SHA1(c39dd1003d71a417b12a359126bfef64c7a2fd00) )
927
928 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
929 ROM_END
930
931
932
933 /* Game 10 - Afterburner (SMS) */
934 ROM_START( mt_aftrb ) /* Afterburner */
935 MEGATECH_BIOS
936
937 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
938 ROM_LOAD16_WORD_SWAP( "mp11271.ic1", 0x000000, 0x080000, CRC(1c951f8e) SHA1(51531df038783c84640a0cab93122e0b59e3b69a) )
939 ROM_LOAD16_BYTE( "epr-12368-10.ic2", 0x300001, 0x08000, CRC(2a7cb590) SHA1(2236963bddc89ca9045b530259cc7b5ccf889eaf) )
940
941 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
942 ROM_END
943
944
945 /* Game 11 - Thunder Force II */
946 ROM_START( mt_tfor2 ) /* Thunder Force II */
947 MEGATECH_BIOS
948
949 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
950 ROM_LOAD16_WORD_SWAP( "mp12559.ic1", 0x000000, 0x080000, CRC(b093bee3) SHA1(0bf6194c3d228425f8cf1903ed70d8da1b027b6a) )
951 ROM_LOAD16_BYTE( "epr-12368-11.ic2", 0x300001, 0x08000, CRC(f4f27e8d) SHA1(ae1a2823deb416c53838115966f1833d5dac72d4) )
952
953 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
954 ROM_END
955
956
957 /* Game 13 - Astro Warrior (SMS) */
958 ROM_START( mt_astro ) /* Astro Warrior */
959 MEGATECH_BIOS
960
961 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
962 ROM_LOAD16_WORD_SWAP( "ep13817.ic2", 0x000000, 0x20000, CRC(299cbb74) SHA1(901697a3535ad70190647f34ad5b30b695d54542) )
963 ROM_LOAD16_BYTE( "epr-12368-13.ic1", 0x300001, 0x08000, CRC(4038cbd1) SHA1(696bc1efce45d9f0052b2cf0332a232687c8d6ab) )
964
965 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
966 ROM_END
967
968
969 /* Game 19 - Great Football (SMS) */
970 ROM_START( mt_gfoot ) /* Great Football */
971 MEGATECH_BIOS
972
973 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
974 ROM_LOAD16_WORD_SWAP( "mpr-10576f.ic1", 0x000000, 0x020000, CRC(2055825f) SHA1(a768f44ce7e50083ffe8c4b5e3ac93ceb7bd3266) )
975 ROM_LOAD16_BYTE( "epr-12368-19.ic2", 0x300001, 0x08000, CRC(e27cb37a) SHA1(2b6259957e86d033a5689fd716a9efcfeff7d5ba) )
976
977 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
978 ROM_END
979
980
981 /* Game 20 - Last Battle */
982 ROM_START( mt_lastb ) /* Last Battle */
983 MEGATECH_BIOS
984
985 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
986 ROM_LOAD16_WORD_SWAP( "mp12578f.ic1", 0x000000, 0x080000, CRC(531191a0) SHA1(f6bc26e975c01a3e10ab4033e4c5f494627a1e2f) )
987 ROM_LOAD16_BYTE( "epr-12368-20.ic2", 0x300001, 0x08000, CRC(e1a71c91) SHA1(c250da18660d8aea86eb2abace41ba46130dabc8) )
988
989 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
990 ROM_END
991
992
993 /* Game 21 - World Championship Soccer (Genesis) */
994 ROM_START( mt_wcsoc ) /* World Championship Soccer */
995 MEGATECH_BIOS
996
997 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
998 ROM_LOAD16_WORD_SWAP( "mp12607b.ic1", 0x000000, 0x080000, CRC(bc591b30) SHA1(55e8577171c0933eee53af1dabd0f4c6462d5fc8) )
999 ROM_LOAD16_BYTE( "epr-12368-21.ic2", 0x300001, 0x08000, CRC(028ee46b) SHA1(cd8f81d66e5ae62107eb20e0ca5db4b66d4b2987) )
1000
1001 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1002 ROM_END
1003
1004
1005 /* Game 22 - Tetris */
1006 ROM_START( mt_tetri ) /* Tetris */
1007 MEGATECH_BIOS
1008
1009 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1010 ROM_LOAD16_BYTE( "mpr-12356f.ic1", 0x000001, 0x020000, CRC(1e71c1a0) SHA1(44b2312792e49d46d71e0417a7f022e5ffddbbfe) )
1011 ROM_LOAD16_BYTE( "mpr-12357f.ic2", 0x000000, 0x020000, CRC(d52ca49c) SHA1(a9159892eee2c0cf28ebfcfa99f81f80781851c6) )
1012 ROM_LOAD16_BYTE( "epr-12368-22.ic3", 0x300001, 0x08000, CRC(1c1b6468) SHA1(568a38f4186167486e39ab4aa2c1ceffd0b81156) )
1013
1014 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1015 ROM_END
1016
1017
1018 /* Game 23 - Ghouls and Ghosts (Genesis) */
1019 ROM_START( mt_gng ) /* Ghouls and Ghosts */
1020 MEGATECH_BIOS
1021
1022 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1023 ROM_LOAD16_WORD_SWAP( "mp12605.ic1", 0x000000, 0x020000, CRC(1066c6ab) SHA1(c30e4442732bdb38c96d780542f8550a94d127b0) )
1024 ROM_LOAD16_WORD_SWAP( "mpr12606.ic2", 0x080000, 0x020000, CRC(d0be7777) SHA1(a44b2a3d427f6973b5c1a3dcd8d1776366acb9f7) )
1025 ROM_CONTINUE(0x020000,0x60000)
1026 ROM_LOAD16_BYTE( "epr-12368-23.ic3", 0x300001, 0x08000, CRC(7ee58546) SHA1(ad5bb0934475eacdc5e354f67c96fe0d2512d33b) )
1027
1028 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1029 ROM_END
1030
1031
1032 /* Game 24 - Super Hang-On (Genesis) */
1033 ROM_START( mt_shang ) /* Super Hang-On */
1034 MEGATECH_BIOS
1035
1036 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1037 ROM_LOAD16_WORD_SWAP( "mpr-12640.ic1", 0x000000, 0x080000, CRC(2fe2cf62) SHA1(4728bcc847deb38b16338cbd0154837cd4a07b7d) )
1038 ROM_LOAD16_BYTE( "epr-12368-24.ic2", 0x300001, 0x08000, CRC(6c2db7e3) SHA1(8de0a10ed9185c9e98f17784811a79d3ce8c4c03) )
1039
1040 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1041 ROM_END
1042
1043
1044 /* Game 25 - Golden Axe (Genesis) */
1045 ROM_START( mt_gaxe ) /* Golden Axe */
1046 MEGATECH_BIOS
1047
1048 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1049 ROM_LOAD16_WORD_SWAP( "12806.ic1", 0x000000, 0x080000, CRC(43456820) SHA1(2f7f1fcd979969ac99426f11ab99999a5494a121) )
1050 ROM_LOAD16_BYTE( "epr-12368-25.ic2", 0x300001, 0x08000, CRC(1f07ed28) SHA1(9d54192f4c6c1f8a51c38a835c1dd1e4e3e8279e) )
1051
1052 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1053 ROM_END
1054
1055
1056 /* Game 26 - Forgotten Worlds */
1057 /* why is this pre-swapped like a console dump?? */
1058 ROM_START( mt_fwrld ) /* Forgotten Worlds */
1059 MEGATECH_BIOS
1060
1061 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1062 ROM_LOAD( "mpr-12672-h.ic1", 0x000000, 0x080000, CRC(d0ee6434) SHA1(8b9a37c206c332ef23dc71f09ec40e1a92b1f83a) )
1063 ROM_LOAD16_BYTE( "epr-12368-26.ic2", 0x300001, 0x08000, CRC(4623b573) SHA1(29df4a5c5de66cd9cb7519e4f30000f7dddc2138) )
1064
1065 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1066 ROM_END
1067
1068
1069 /* Game 27 - Mystic Defender */
1070 ROM_START( mt_mystd ) /* Mystic Defender */
1071 MEGATECH_BIOS
1072
1073 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1074 ROM_LOAD16_WORD_SWAP( "mp12707.1", 0x000000, 0x080000, CRC(4f2c513d) SHA1(f9bb548b3688170fe18bb3f1b5b54182354143cf) )
1075 ROM_LOAD16_BYTE( "epr-12368-27.ic2", 0x300001, 0x08000, CRC(caf46f78) SHA1(a9659e86a6a223646338cd8f29c346866e4406c7) )
1076
1077 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1078 ROM_END
1079
1080
1081 /* Game 28 - The Revenge of Shinobi */
1082 ROM_START( mt_revsh ) /* The Revenge Of Shinobi */
1083 MEGATECH_BIOS
1084
1085 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1086 ROM_LOAD16_WORD_SWAP( "mp12675.ic1", 0x000000, 0x080000, CRC(672a1d4d) SHA1(5fd0af14c8f2cf8ceab1ae61a5a19276d861289a) )
1087 ROM_LOAD16_BYTE( "epr-12368-28.ic2", 0x300001, 0x08000, CRC(0d30bede) SHA1(73a090d84b78a570e02fb54a33666dcada52849b) )
1088
1089 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1090 ROM_END
1091
1092
1093 /* Game 29 - Parlour Games (SMS) */
1094 ROM_START( mt_parlg ) /* Parlour Games */
1095 MEGATECH_BIOS
1096
1097 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1098 ROM_LOAD16_WORD_SWAP( "mp11404.ic1", 0x000000, 0x020000, CRC(e030e66c) SHA1(06664daf208f07cb00b603b12eccfc3f01213a17) )
1099 ROM_LOAD16_BYTE( "epr-12368-29.ic2", 0x300001, 0x08000, CRC(534151e8) SHA1(219238d90c1d3ac07ff64c9a2098b490fff68f04) )
1100
1101 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASEFF )
1102 ROM_END
1103
1104
1105 /* Game 31 - Arnold Palmer Tournament Golf */
1106 ROM_START( mt_tgolf ) /* Arnold Palmer Tournament Golf */
1107 MEGATECH_BIOS
1108
1109 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1110 ROM_LOAD16_WORD_SWAP( "mpr-12645f.ic1", 0x000000, 0x080000, CRC(c07ef8d2) SHA1(9d111fdc7bb92d52bfa048cd134aa488b4f475ef) )
1111 ROM_LOAD16_BYTE( "epr-12368-31.ic2", 0x300001, 0x08000, CRC(30af7e4a) SHA1(baf91d527393dc90aba9371abcb1e690bcc83c7e) )
1112
1113 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1114 ROM_END
1115
1116
1117 /* Game 32 - Super Real Basketball */
1118 /* why is this pre-swapped like a console dump?? */
1119 ROM_START( mt_srbb ) /* Super Real Basketball */
1120 MEGATECH_BIOS
1121
1122 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1123 ROM_LOAD( "mpr-12904f.ic1", 0x000000, 0x080000, CRC(4346e11a) SHA1(c86725780027ef9783cb7884c8770cc030b0cd0d) )
1124 ROM_LOAD16_BYTE( "epr-12368-32.ic2", 0x300001, 0x08000, CRC(f70adcbe) SHA1(d4412a7cd59fe282a1c6619aa1051a2a2e00e1aa) )
1125
1126 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1127 ROM_END
1128
1129
1130 /* Game 35 - Tommy Lasorda Baseball */
1131 ROM_START( mt_tlbba ) /* Tommy Lasorda Baseball */
1132 MEGATECH_BIOS
1133
1134 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1135 ROM_LOAD16_WORD_SWAP( "mp12706.ic1", 0x000000, 0x080000, CRC(8901214f) SHA1(f5ec166be1cf9b86623b9d7a78ec903b899da32a) )
1136 ROM_LOAD16_BYTE( "epr-12368-35.ic2", 0x300001, 0x08000, CRC(67bbe482) SHA1(6fc283b22e68befabb44b2cc61a7f82a71d6f029) )
1137
1138 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1139 ROM_END
1140
1141
1142 /* Game 36 - Columns */
1143 ROM_START( mt_cols ) /* Columns */
1144 MEGATECH_BIOS
1145
1146 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1147 ROM_LOAD16_WORD_SWAP( "mp13193-t.ic1", 0x000000, 0x080000, CRC(8c770e2f) SHA1(02a3626025c511250a3f8fb3176eebccc646cda9) )
1148 ROM_LOAD16_BYTE( "epr-12368-36.ic3", 0x300001, 0x008000, CRC(a4b29bac) SHA1(c9be866ac96243897d09612fe17562e0481f66e3) )
1149
1150 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1151 ROM_END
1152
1153
1154 /* Game 38 - ESWAT */
1155 ROM_START( mt_eswat ) /* ESWAT */
1156 MEGATECH_BIOS
1157
1158 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1159 ROM_LOAD16_WORD_SWAP( "mp13192-h.ic1", 0x000000, 0x080000, CRC(82f458ef) SHA1(58444b783312def71ecffc4ad021b72a609685cb) )
1160 ROM_LOAD16_BYTE( "epr-12368-38.ic2", 0x300001, 0x08000, CRC(43c5529b) SHA1(104f85adea6da1612c0aa96d553efcaa387d7aaf) )
1161
1162 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1163 ROM_END
1164
1165
1166 /* Game 39 - Super Monaco Grand Prix (Genesis) */
1167 ROM_START( mt_smgp ) /* Super Monaco Grand Prix */
1168 MEGATECH_BIOS
1169
1170 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1171 ROM_LOAD16_WORD_SWAP( "13250.ic1", 0x000000, 0x080000, CRC(189b885f) SHA1(31c06ffcb48b1604989a94e584261457de4f1f46) )
1172 ROM_LOAD16_BYTE( "epr-12368-39.ic2", 0x300001, 0x08000, CRC(64b3ce25) SHA1(83a9f2432d146a712b037f96f261742f7dc810bb) )
1173
1174 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1175 ROM_END
1176
1177
1178 /* Game 40 - Moon Walker */
1179 ROM_START( mt_mwalk ) /* Moon Walker */
1180 MEGATECH_BIOS
1181
1182 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1183 ROM_LOAD16_WORD_SWAP( "mp13285a.ic1", 0x000000, 0x080000, CRC(189516e4) SHA1(2a79e07da2e831832b8d448cae87a833c85e67c9) )
1184 ROM_LOAD16_BYTE( "epr-12368-40.ic2", 0x300001, 0x08000, CRC(0482378c) SHA1(734772f3ddb5ff82b76c3514d18a464b2bce8381) )
1185
1186 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1187 ROM_END
1188
1189
1190 /* Game 41 - Crackdown */
1191 ROM_START( mt_crack ) /* Crackdown */
1192 MEGATECH_BIOS
1193
1194 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1195 ROM_LOAD16_WORD_SWAP( "mp13578a-s.ic1", 0x000000, 0x080000, CRC(23f19893) SHA1(09aca793871e2246af4dc24925bc1eda8ff34446) )
1196 ROM_LOAD16_BYTE( "epr-12368-41.ic2", 0x300001, 0x08000, CRC(3014acec) SHA1(07953e9ae5c23fc7e7d08993b215f4dfa88aa5d7) )
1197
1198 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1199 ROM_END
1200
1201
1202 /* Game 43 - Shadow Dancer */
1203 ROM_START( mt_shado ) /* Shadow Dancer */
1204 MEGATECH_BIOS
1205
1206 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1207 ROM_LOAD16_WORD_SWAP( "mpr-13571-s.ic1", 0x000000, 0x080000, CRC(56a29310) SHA1(55836177e4a1e2deb68408976b29d0282cf661a9) )
1208 ROM_LOAD16_BYTE( "epr-12368-43.ic2", 0x300001, 0x08000, CRC(1116cbc7) SHA1(ba6dd21ceadeedf730b71b67acbd20d9067114f3) )
1209
1210 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1211 ROM_END
1212
1213
1214 /* Game 44 - Arrow Flash */
1215 ROM_START( mt_arrow ) /* Arrow Flash */
1216 MEGATECH_BIOS
1217
1218 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1219 ROM_LOAD16_WORD_SWAP( "mpr13396h.ic1", 0x000000, 0x080000, CRC(091226e3) SHA1(cb15c6277314f3c4a86b5ae5823f72811d5d269d) )
1220 ROM_LOAD16_BYTE( "epr-12368-44.ic2", 0x300001, 0x08000, CRC(e653065d) SHA1(96b014fc4df8eb2188ac94ed0a778d974fe6dcad) )
1221
1222 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1223 ROM_END
1224
1225
1226 /* Game 47 - Alien Storm */
1227 ROM_START( mt_astrm ) /* Alien Storm */
1228 MEGATECH_BIOS
1229
1230 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1231 ROM_LOAD16_WORD_SWAP( "mp13941.ic1", 0x000000, 0x080000, CRC(d71b3ee6) SHA1(05f272dad243d132d517c303388248dc4c0482ed) )
1232 ROM_LOAD16_BYTE( "epr-12368-47.ic2", 0x300001, 0x08000, CRC(31fb683d) SHA1(e356da020bbf817b97fb10c27f75cf5931edf4fc) )
1233
1234 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1235 ROM_END
1236
1237
1238 /* Game 48 - Wrestle War */
1239 ROM_START( mt_wwar ) /* Wrestle War */
1240 MEGATECH_BIOS
1241
1242 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1243 ROM_LOAD16_WORD_SWAP( "mpr-14025-f.ic1", 0x000000, 0x080000, CRC(26e899fe) SHA1(6d28e154ae2e4196097a2aa96c5acd5dfe7e3d2b) )
1244 ROM_LOAD16_BYTE( "epr-12368-48.ic2", 0x300001, 0x08000, CRC(25817bc2) SHA1(ba1bbb952aff12fb4d3ecfb10d82c54128439395) )
1245
1246 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1247 ROM_END
1248
1249
1250 /* Game 49 - Bonanza Bros. */
1251 // original dump of mpr-13905a.ic1 had a size of 0x100000, which is a double dump of the correct size 0x080000
1252 // the IC is a Fujitsu MB834200A MaskROM by 4Mb (512KB) in a DIP40-600mil package
1253 ROM_START( mt_bbros ) /* Bonanza Bros. */
1254 MEGATECH_BIOS
1255
1256 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1257 ROM_LOAD16_WORD_SWAP( "mpr-13905a.ic1", 0x000000, 0x080000, CRC(6d617940) SHA1(11d5ff1c2db79632f6dea2edf97f56af2149cea4) )
1258 ROM_LOAD16_BYTE( "epr-12368-49.ic2", 0x300001, 0x08000, CRC(c5101da2) SHA1(636f30043e2e9291e193ef9a2ead2e97a0bf7380) )
1259
1260 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1261 ROM_END
1262
1263
1264 /* Game 51 - Streets of Rage */
1265 ROM_START( mt_srage ) /* Streets of Rage */
1266 MEGATECH_BIOS
1267
1268 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1269 ROM_LOAD16_WORD_SWAP( "mpr-14125-s.ic1", 0x000000, 0x080000, CRC(db4ac746) SHA1(c7cc24e2329f279574513fa32bbf79f72f75aeea) )
1270 ROM_LOAD16_BYTE( "epr-12368-51.ic2", 0x300001, 0x08000, CRC(49b7d6f4) SHA1(96e69851c92715e7daf35b184cf374147a8d2880) )
1271
1272 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1273 ROM_END
1274
1275
1276 /* Game 52 - Sonic The Hedgehog (Genesis) */
1277 ROM_START( mt_sonic ) /* Sonic The Hedgehog */
1278 MEGATECH_BIOS
1279
1280 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1281 ROM_LOAD16_WORD_SWAP( "mp13913.ic1", 0x000000, 0x080000, CRC(480b4b5c) SHA1(ab1dc1f738e3b2d0898a314b123fa71182bf572e) )
1282 ROM_LOAD16_BYTE( "epr-12368-52.ic2", 0x300001, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) )
1283
1284 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1285 ROM_END
1286
1287
1288 ROM_START( mt_sonia ) /* Sonic (alt)*/
1289 MEGATECH_BIOS
1290
1291 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1292 ROM_LOAD16_WORD_SWAP( "mp13933.ic1", 0x000000, 0x080000, CRC(13775004) SHA1(5decfd35944a2d0e7b996b9a4a12b616a309fd5e) )
1293 ROM_LOAD16_BYTE( "epr-12368-52.ic2", 0x300001, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) )
1294
1295 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1296 ROM_END
1297
1298
1299 /* Game 53 - Fire Shark */
1300 /* alt version with these roms exists, but the content is the same */
1301 /* (6a221fd6) ep14706.ic1 mp14341.ic1 [even] IDENTICAL */
1302 /* (09fa48af) ep14707.ic2 mp14341.ic1 [odd] IDENTICAL */
1303
1304 ROM_START( mt_fshrk ) /* Fire Shark */
1305 MEGATECH_BIOS
1306
1307 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1308 ROM_LOAD16_WORD_SWAP( "mp14341.ic1", 0x000000, 0x080000, CRC(04d65ebc) SHA1(24338aecdc52b6f416548be722ca475c83dbae96) )
1309 ROM_LOAD16_BYTE( "epr-12368-53.ic2", 0x300001, 0x08000, CRC(4fa61044) SHA1(7810deea221c10b0b2f5233443d81f4f1998ee58) )
1310
1311 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1312 ROM_END
1313
1314
1315 /* Game 54 - Spiderman */
1316 ROM_START( mt_spman ) /* Spiderman */
1317 MEGATECH_BIOS
1318
1319 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1320 ROM_LOAD16_WORD_SWAP( "mp14027-sm.ic1", 0x000000, 0x080000, CRC(e2c08a06) SHA1(39e592eafd47e2aa6edbb4845d44750057bff890) )
1321 ROM_LOAD16_BYTE( "epr-12368-54.ic2", 0x300001, 0x08000, CRC(30b68988) SHA1(04eeb0fad732a791b6bc0c0846306d567573649f) )
1322
1323 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1324 ROM_END
1325
1326
1327 /* Game 55 - California Games */
1328 ROM_START( mt_calga ) /* California Games */
1329 MEGATECH_BIOS
1330
1331 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1332 ROM_LOAD16_BYTE( "epr-14494.ic1", 0x000001, 0x040000, CRC(cbe58b1b) SHA1(ea067fc08e644c993f8d13731425c9296c1a2a75) )
1333 ROM_LOAD16_BYTE( "epr-14495.ic2", 0x000000, 0x040000, CRC(cb956f4f) SHA1(3574c496b79aefdec7d02975490ebe3bb373bc60) )
1334 ROM_LOAD16_BYTE( "epr-12368-55.ic3", 0x300001, 0x08000, CRC(6f7dd8f5) SHA1(a6cb1aa8c3635738dd9e4d3e0d729d089fd9b599) )
1335
1336 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1337 ROM_END
1338
1339
1340 /* Game 57 - Golden Axe 2 (Genesis) */
1341 ROM_START( mt_gaxe2 ) /* Golden Axe 2 */
1342 MEGATECH_BIOS
1343
1344 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1345 ROM_LOAD16_WORD_SWAP( "mp14272.ic1", 0x000000, 0x080000, CRC(d4784cae) SHA1(b6c286027d06fd850016a2a1ee1f1aeea080c3bb) )
1346 ROM_LOAD16_BYTE( "epr-12368-57.ic2", 0x300001, 0x08000, CRC(dc9b4433) SHA1(efd3a598569010cdc4bf38ecbf9ed1b4e14ffe36) )
1347
1348 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1349 ROM_END
1350
1351
1352 /* Game 58 - Sports Talk Football */
1353 ROM_START( mt_stf ) /* Sports Talk Football */
1354 MEGATECH_BIOS
1355
1356 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1357 ROM_LOAD16_WORD_SWAP( "mp14356a-f.ic1", 0x000000, 0x100000, CRC(20cf32f6) SHA1(752314346a7a98b3808b3814609e024dc0a4108c) )
1358 ROM_LOAD16_BYTE( "epr-12368-58.ic2", 0x300001, 0x08000, CRC(dce2708e) SHA1(fcebb1899ee11468f6bda705899f074e7de9d723) )
1359
1360 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1361 ROM_END
1362
1363
1364 /* Game 59 - Mario Lemieux Hockey */
1365 ROM_START( mt_mlh ) /* Mario Lemieux Hockey */
1366 MEGATECH_BIOS
1367
1368 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1369 ROM_LOAD16_WORD_SWAP( "mpr-14376-h.ic1", 0x000000, 0x80000, CRC(aa9be87e) SHA1(dceed94eaeb30e534f6953a4bc25ff37673b1e6b) )
1370 ROM_LOAD16_BYTE( "epr-12368-59.ic2", 0x300001, 0x08000, CRC(6d47b438) SHA1(0a145f6438e4e55c957ae559663c37662b685246) )
1371
1372 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1373 ROM_END
1374
1375
1376 /* Game 60 - Kid Chameleon */
1377 ROM_START( mt_kcham ) /* Kid Chameleon */
1378 MEGATECH_BIOS
1379
1380 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1381 ROM_LOAD16_WORD_SWAP( "mp14557.ic1", 0x000000, 0x100000, CRC(e1a889a4) SHA1(a2768eacafc47d371e5276f0cce4b12b6041337a) )
1382 ROM_LOAD16_BYTE( "epr-12368-60.ic2", 0x300001, 0x08000, CRC(a8e4af18) SHA1(dfa49f6ec4047718f33dba1180f6204dbaff884c) )
1383
1384 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1385 ROM_END
1386
1387
1388 /* Game 61 - Turbo Outrun */
1389 // original dump of mpr-14674.ic1 had CRC(c2b9a802) SHA1(108cc844c944125f9d271a2f2db094301294e8c2)
1390 // with the byte at offset 3 being F6 instead of Fe, this seems like a bad dump when compared to the Genesis rom which
1391 // has been verified on multiple carts, chances are the ROM had developed a fault.
1392 ROM_START( mt_tout ) /* Turbo Outrun */
1393 MEGATECH_BIOS
1394
1395 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1396 ROM_LOAD16_WORD_SWAP( "mpr-14674.ic1", 0x000000, 0x080000, CRC(453712a2) SHA1(5d2c8430a9a14aac7f19c22617539b0503ab92cd) )
1397 ROM_LOAD16_BYTE( "epr-12368-61.ic2", 0x300001, 0x08000, CRC(4aa0b2a2) SHA1(bce03f88d6cfd02683d51c28058f6229fda13b49) )
1398
1399 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1400 ROM_END
1401
1402
1403 /* Game 62 - Sonic The Hedgehog 2 */
1404 ROM_START( mt_soni2 ) /* Sonic The Hedgehog 2 */
1405 MEGATECH_BIOS
1406
1407 ROM_REGION16_BE( 0x400000, "mt_slot1:cart", ROMREGION_ERASE00 )
1408 ROM_LOAD16_WORD_SWAP( "mp15000a-f.ic1", 0x000000, 0x100000, CRC(679ebb49) SHA1(557482064677702454562f753460993067ef9e16) )
1409 ROM_LOAD16_BYTE( "epr-12368-62.ic2", 0x300001, 0x08000, CRC(14a8566f) SHA1(d1d14162144bf068ddd19e9736477ff98fb43f9e) )
1410
1411 ROM_REGION( 0x01, "sms_pin", ROMREGION_ERASE00 )
1412 ROM_END
1413
1414
1415
1416 /* nn */ /* nn is part of the instruction rom name, should there be a game for each number? */
1417 /* -- */ CONS( 1989, megatech, 0, 0, megatech_multislot, megatech, mtech_state, init_mt_slot, "Sega", "Mega-Tech", MACHINE_IS_BIOS_ROOT )
1418 /* 01 */ GAME( 1988, mt_beast, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Altered Beast (Mega-Tech)", MACHINE_NOT_WORKING )
1419 /* 02 */ GAME( 1988, mt_shar2, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Space Harrier II (Mega-Tech)", MACHINE_NOT_WORKING )
1420 /* 03 */ GAME( 1988, mt_stbld, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Thunder Blade (Mega-Tech)", MACHINE_NOT_WORKING )
1421 /* 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! */
1422 /* 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 */
1423 /* 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! */
1424 /* 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! */
1425 /* 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 */
1426 /* 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 */
1427 /* 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 */
1428 /* 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 )
1429 /* 12 */ // unknown
1430 /* 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! */
1431 /* 14 */ // unknown
1432 /* 15 */ // unknown
1433 /* 16 */ // unknown
1434 /* 17 */ // unknown
1435 /* 18 */ // Kung Fu Kid (sms)
1436 /* 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! */
1437 /* 20 */ GAME( 1989, mt_lastb, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Last Battle (Mega-Tech)", MACHINE_NOT_WORKING )
1438 /* 21 */ GAME( 1989, mt_wcsoc, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "World Championship Soccer (Mega-Tech)", MACHINE_NOT_WORKING )
1439 /* 22 */ GAME( 1989, mt_tetri, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Tetris (Mega-Tech)", MACHINE_NOT_WORKING )
1440 /* 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 )
1441 /* 24 */ GAME( 1989, mt_shang, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Hang-On (Mega-Tech)", MACHINE_NOT_WORKING )
1442 /* 25 */ GAME( 1989, mt_gaxe, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Golden Axe (Mega-Tech)", MACHINE_NOT_WORKING )
1443 /* 26 */ GAME( 1989, mt_fwrld, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Forgotten Worlds (Mega-Tech)", MACHINE_NOT_WORKING )
1444 /* 27 */ GAME( 1989, mt_mystd, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Mystic Defender (Mega-Tech)", MACHINE_NOT_WORKING )
1445 /* 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 )
1446 /* 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! */
1447 /* 30 */ // unknown
1448 /* 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 )
1449 /* 32 */ GAME( 1989, mt_srbb, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Real Basketball (Mega-Tech)", MACHINE_NOT_WORKING )
1450 /* 33 */ // unknown
1451 /* 34 */ // unknown
1452 /* 35 */ GAME( 1989, mt_tlbba, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Tommy Lasorda Baseball (Mega-Tech)", MACHINE_NOT_WORKING )
1453 /* 36 */ GAME( 1990, mt_cols, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Columns (Mega-Tech)", MACHINE_NOT_WORKING )
1454 /* 37 */ // unknown
1455 /* 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 )
1456 /* 39 */ GAME( 1990, mt_smgp, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Super Monaco GP (Mega-Tech)", MACHINE_NOT_WORKING )
1457 /* 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 )
1458 /* 41 */ GAME( 1990, mt_crack, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Crack Down (Mega-Tech)", MACHINE_NOT_WORKING )
1459 /* 42 */ // unknown
1460 /* 43 */ GAME( 1990, mt_shado, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Shadow Dancer (Mega-Tech)", MACHINE_NOT_WORKING )
1461 /* 44 */ GAME( 1990, mt_arrow, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Arrow Flash (Mega-Tech)", MACHINE_NOT_WORKING )
1462 /* 45 */ // unknown
1463 /* 46 */ // unknown
1464 /* 47 */ GAME( 1990, mt_astrm, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Alien Storm (Mega-Tech)", MACHINE_NOT_WORKING )
1465 /* 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 */
1466 /* 49 */ GAME( 1991, mt_bbros, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Bonanza Bros. (Mega-Tech)", MACHINE_NOT_WORKING )
1467 /* 50 */ // unknown
1468 /* 51 */ GAME( 1991, mt_srage, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Streets of Rage (Mega-Tech)", MACHINE_NOT_WORKING )
1469 /* 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 )
1470 /* */ 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 )
1471 /* 53 */ GAME( 1990, mt_fshrk, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Toaplan / Sega", "Fire Shark (Mega-Tech)", MACHINE_NOT_WORKING )
1472 /* 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 )
1473 /* 55 */ GAME( 1991, mt_calga, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "California Games (Mega-Tech)", MACHINE_NOT_WORKING )
1474 /* 56 */ // unknown
1475 /* 57 */ GAME( 1991, mt_gaxe2, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Golden Axe II (Mega-Tech)", MACHINE_NOT_WORKING )
1476 /* 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 )
1477 /* 59 */ GAME( 1991, mt_mlh, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Mario Lemieux Hockey (Mega-Tech)", MACHINE_NOT_WORKING )
1478 /* 60 */ GAME( 1992, mt_kcham, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Kid Chameleon (Mega-Tech)", MACHINE_NOT_WORKING )
1479 /* 61 */ GAME( 1992, mt_tout, megatech, megatech_fixedslot, megatech, mtech_state, init_mt_crt, ROT0, "Sega", "Turbo Outrun (Mega-Tech)", MACHINE_NOT_WORKING )
1480 /* 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 )
1481
1482 /* Games seen in auction (#122011114579), but no confirmed number
1483 - Action Fighter
1484 - Enduro Racer
1485
1486 Games seen in auction (#122011114579) known not to be original but manufactured/bootlegged on actual megatech carts.
1487 The labels are noticeably different than expected. Be careful if thinking of obtaining!
1488 - After Burner II (GEN)
1489 - Castle of Illusion Starring Mickey Mouse (GEN)
1490 - Double Dragon (SMS)
1491 - Kung Fu Kid (SMS)
1492 - Quackshot Starring Donald Duck (GEN)
1493 - Wonderboy (SMS)
1494
1495 more? */
1496