1 // license:BSD-3-Clause
2 // copyright-holders:Angelo Salese, David Haywood, Pierpaolo Prazzoli, Tomasz Slanina
3 /********************************************************************
4 
5  Driver for common Hyperstone based games
6 
7  by bits from Angelo Salese, David Haywood,
8     Pierpaolo Prazzoli and Tomasz Slanina
9 
10  Games Supported:
11 
12 
13     Minigame Cool Collection        (c) 1999 SemiCom
14     Jumping Break                   (c) 1999 F2 System
15     Poosho Poosho                   (c) 1999 F2 System
16     New Cross Pang                  (c) 1999 F2 System
17     World Adventure                 (c) 1999 F2 System + Logic
18     Lup Lup Puzzle                  (c) 1999 Omega System       (version 3.0, 2.9 and 1.05)
19     Puzzle Bang Bang                (c) 1999 Omega System       (version 2.8 and 2.9)
20     Super Lup Lup Puzzle            (c) 1999 Omega System       (version 4.0)
21     Vamf 1/2                        (c) 1999 Danbi & F2 System  (Europe version 1.1.0908 and 1.0.0903)
22     Vamp 1/2                        (c) 1999 Danbi & F2 System  (Korea version 1.1.0908)
23     Date Quiz Go Go Episode 2       (c) 2000 SemiCom
24     Mission Craft                   (c) 2000 Sun                (version 2.7 and 2.4)
25     Mr. Dig                         (c) 2000 Sun
26     Diet Family                     (c) 2001 SemiCom
27     Final Godori                    (c) 2001 SemiCom            (version 2.20.5915)
28     Wivern Wings / Wyvern Wings     (c) 2001 SemiCom
29     Mr. Kicker                      (c) 2001 SemiCom
30     Toy Land Adventure              (c) 2001 SemiCom
31     Age Of Heroes - Silkroad 2      (c) 2001 Unico              (v0.63 - 2001/02/07)
32     Boong-Ga Boong-Ga (Spank 'em)   (c) 2001 Taff System
33 
34  Real games bugs:
35  - dquizgo2: bugged video test
36 
37  Notes:
38 
39  Mr Kicker: Doesn't boot without a valid default EEPROM, but no longer seems to fail
40             after you get a high score (since EEPROM rewrite).
41 
42  Boong-Ga Boong-Ga: the test mode is usable with a standard input configuration like the "common" one
43 
44  The Semicom boards (at least) have a strange visible area, with the display output cutting off 4 lines
45  before you'd expect.  It has been confirmed on real hardware that these lines are simply never output,
46  no amount of stretching the screen renders them as visible.  The games are also programmed around this
47  assumption in many places, with visible sprite clipping issues at screen edges otherwise.  This does
48  result in some graphics also being cut off slightly, but that is correct.
49 
50  Undumped Semicom games on similar hardware:
51    Red Wyvern - A semi-sequel or update?
52    Choice III: Joker's Dream (c) 2001 (likely SEMICOM-003 hardware)
53 
54 TODO:
55 - boonggab: simulate photo sensors with a "stroke strength"
56 - boonggab: what are sensors bit used for? are they used in the japanese version?
57 - wyvernsg: fails a protection check after ~1 hour of play?
58 
59 *********************************************************************/
60 
61 #include "emu.h"
62 #include "cpu/e132xs/e132xs.h"
63 #include "cpu/mcs51/mcs51.h"
64 #include "machine/eepromser.h"
65 #include "machine/gen_latch.h"
66 #include "machine/nvram.h"
67 #include "sound/okim6295.h"
68 #include "sound/qs1000.h"
69 #include "sound/ym2151.h"
70 #include "emupal.h"
71 #include "screen.h"
72 #include "speaker.h"
73 
74 
75 class vamphalf_state : public driver_device
76 {
77 public:
vamphalf_state(const machine_config & mconfig,device_type type,const char * tag)78 	vamphalf_state(const machine_config &mconfig, device_type type, const char *tag)
79 		: driver_device(mconfig, type, tag)
80 		, m_maincpu(*this, "maincpu")
81 		, m_wram(*this,  "wram")
82 		, m_wram32(*this, "wram32")
83 		, m_okibank(*this, "okibank")
84 		, m_palette(*this, "palette")
85 		, m_soundlatch(*this, "soundlatch")
86 		, m_eeprom(*this, "eeprom")
87 		, m_gfxdecode(*this, "gfxdecode")
88 		, m_tiles(*this, "tiles", 0U)
89 		, m_okiregion(*this, "oki%u", 1)
90 		, m_photosensors(*this, "PHOTO_SENSORS")
91 		, m_has_extra_gfx(false)
92 	{
93 	}
94 
95 	void common(machine_config &config);
96 	void sound_ym_oki(machine_config &config);
97 	void sound_ym_banked_oki(machine_config &config);
98 	void sound_suplup(machine_config &config);
99 	void sound_qs1000(machine_config &config);
100 	void mrdig(machine_config &config);
101 	void suplup(machine_config &config);
102 	void vamphalf(machine_config &config);
103 	void boonggab(machine_config &config);
104 	void jmpbreak(machine_config &config);
105 	void newxpang(machine_config &config);
106 	void worldadv(machine_config &config);
107 	void aoh(machine_config &config);
108 	void coolmini(machine_config &config);
109 	void mrkicker(machine_config &config);
110 
111 	void init_vamphalf();
112 	void init_vamphalfr1();
113 	void init_vamphafk();
114 	void init_coolmini();
115 	void init_coolminii();
116 	void init_mrdig();
117 	void init_jmpbreak();
118 	void init_jmpbreaka();
119 	void init_poosho();
120 	void init_newxpang();
121 	void init_worldadv();
122 	void init_dtfamily();
123 	void init_dquizgo2();
124 	void init_suplup();
125 	void init_luplup();
126 	void init_luplup29();
127 	void init_luplup10();
128 	void init_puzlbang();
129 	void init_toyland();
130 	void init_aoh();
131 	void init_boonggab();
132 	void init_mrkicker();
133 
134 	DECLARE_CUSTOM_INPUT_MEMBER(boonggab_photo_sensors_r);
135 
136 	u16 eeprom_r(offs_t offset);
137 	u32 eeprom32_r();
138 	void eeprom_w(offs_t offset, u16 data);
139 	void eeprom32_w(u32 data);
140 	void flipscreen_w(offs_t offset, u16 data);
141 	void flipscreen32_w(u32 data);
vram_r(offs_t offset)142 	u16 vram_r(offs_t offset) { return m_tiles[offset]; }
vram_w(offs_t offset,u16 data,u16 mem_mask=~0)143 	void vram_w(offs_t offset, u16 data, u16 mem_mask = ~0) { COMBINE_DATA(&m_tiles[offset]); }
144 
145 	void banked_oki(int chip);
146 
147 	void common_map(address_map &map);
148 	void common_32bit_map(address_map &map);
149 
150 protected:
151 	virtual void video_start() override;
152 
153 	u32 m_flip_bit;
154 	u8 m_palshift;
155 
156 	required_device<cpu_device> m_maincpu;
157 	optional_shared_ptr<u16> m_wram;
158 	optional_shared_ptr<u32> m_wram32;
159 
160 	u16 m_semicom_prot_data[2];
161 	int m_semicom_prot_idx;
162 	int m_semicom_prot_which;
163 
164 	bool irq_active();
165 
166 	optional_memory_bank m_okibank;
167 	required_device<palette_device> m_palette;
168 	optional_device<generic_latch_8_device> m_soundlatch;
169 	required_device<eeprom_serial_93cxx_device> m_eeprom;
170 
171 private:
172 	required_device<gfxdecode_device> m_gfxdecode;
173 
174 	optional_shared_ptr<u16> m_tiles;
175 
176 	optional_memory_region_array<2> m_okiregion;
177 
178 	optional_ioport m_photosensors;
179 
180 	// driver init configuration
181 	bool m_has_extra_gfx;
182 	bool m_flipscreen;
183 
184 	void jmpbreak_flipscreen_w(u16 data);
185 	void boonggab_prize_w(offs_t offset, u16 data);
186 	void boonggab_lamps_w(offs_t offset, u16 data);
187 
188 	u16 vamphalf_speedup_r();
189 	u16 vamphalfr1_speedup_r();
190 	u16 vamphafk_speedup_r();
191 	u16 coolmini_speedup_r();
192 	u16 coolminii_speedup_r();
193 	u16 suplup_speedup_r();
194 	u16 luplup_speedup_r();
195 	u16 luplup29_speedup_r();
196 	u16 luplup10_speedup_r();
197 	u16 puzlbang_speedup_r();
198 	u16 puzlbanga_speedup_r();
199 	u16 mrkicker_speedup_r();
200 	u16 dquizgo2_speedup_r();
201 	u32 aoh_speedup_r();
202 	u16 jmpbreak_speedup_r();
203 	u16 jmpbreaka_speedup_r();
204 	u16 poosho_speedup_r();
205 	u16 newxpang_speedup_r();
206 	u16 worldadv_speedup_r();
207 	u16 mrdig_speedup_r();
208 	u16 dtfamily_speedup_r();
209 	u16 toyland_speedup_r();
210 	u16 boonggab_speedup_r();
211 
212 	void aoh_oki_bank_w(u32 data);
213 	void boonggab_oki_bank_w(offs_t offset, u16 data);
214 	void mrkicker_oki_bank_w(u16 data);
215 	void qs1000_p3_w(u8 data);
216 
217 	u32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
218 	u32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
219 	void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
220 	void draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
221 	void handle_flipped_visible_area(screen_device &screen);
222 	void aoh_io(address_map &map);
223 	void aoh_map(address_map &map);
224 	void banked_oki_map(address_map &map);
225 	void boonggab_io(address_map &map);
226 	void coolmini_io(address_map &map);
227 	void jmpbreak_io(address_map &map);
228 	void worldadv_io(address_map &map);
229 	void mrdig_io(address_map &map);
230 	void mrkicker_io(address_map &map);
231 	void suplup_io(address_map &map);
232 	void vamphalf_io(address_map &map);
233 };
234 
235 class vamphalf_qdsp_state : public vamphalf_state
236 {
237 public:
vamphalf_qdsp_state(const machine_config & mconfig,device_type type,const char * tag)238 	vamphalf_qdsp_state(const machine_config &mconfig, device_type type, const char *tag)
239 		: vamphalf_state(mconfig, type, tag)
240 		, m_qdsp_cpu(*this, "qs1000:cpu")
241 	{
242 	}
243 
244 	void misncrft(machine_config &config);
245 	void yorijori(machine_config &config);
246 	void wyvernwg(machine_config &config);
247 
248 	void init_misncrft();
249 	void init_yorijori();
250 	void init_wyvernwg();
251 
252 private:
253 	required_device<i8052_device> m_qdsp_cpu;
254 
255 	u16 misncrft_speedup_r();
256 	u16 misncrfta_speedup_r();
257 	u32 wivernwg_speedup_r();
258 	u32 wyvernwg_speedup_r();
259 	u32 wyvernwga_speedup_r();
260 
261 	u32 wyvernwg_prot_r();
262 	void wyvernwg_prot_w(u32 data);
263 
264 	void yorijori_32bit_map(address_map &map);
265 	void yorijori_io(address_map &map);
266 	void misncrft_io(address_map &map);
267 	void wyvernwg_io(address_map &map);
268 };
269 
270 class vamphalf_nvram_state : public vamphalf_state
271 {
272 public:
vamphalf_nvram_state(const machine_config & mconfig,device_type type,const char * tag)273 	vamphalf_nvram_state(const machine_config &mconfig, device_type type, const char *tag)
274 		: vamphalf_state(mconfig, type, tag)
275 		, m_nvram(*this, "nvram")
276 	{
277 	}
278 
279 	void finalgdr(machine_config &config);
280 	void mrkickera(machine_config &config);
281 
282 	void init_mrkickera();
283 	void init_finalgdr();
284 
285 private:
286 
287 	void finalgdr_io(address_map &map);
288 	void mrkickera_io(address_map &map);
289 
290 	required_device<nvram_device> m_nvram;
291 
292 	u16 m_finalgdr_backupram_bank;
293 	std::unique_ptr<u8[]> m_finalgdr_backupram;
294 	void finalgdr_backupram_bank_w(u32 data);
295 	u32 finalgdr_backupram_r(offs_t offset);
296 	void finalgdr_backupram_w(offs_t offset, u32 data);
297 
298 	u32 finalgdr_prot_r();
299 	void finalgdr_prot_w(u32 data);
300 
301 	u32 finalgdr_speedup_r();
302 	u32 mrkickera_speedup_r();
303 
304 	void finalgdr_prize_w(u32 data);
305 	void finalgdr_oki_bank_w(u32 data);
306 
307 	void finalgdr_eeprom_w(u32 data);
308 };
309 
eeprom_r(offs_t offset)310 u16 vamphalf_state::eeprom_r(offs_t offset)
311 {
312 	if (offset)
313 		return m_eeprom->do_read();
314 	else
315 		return 0;
316 }
317 
eeprom32_r()318 u32 vamphalf_state::eeprom32_r()
319 {
320 	return m_eeprom->do_read();
321 }
322 
eeprom_w(offs_t offset,u16 data)323 void vamphalf_state::eeprom_w(offs_t offset, u16 data)
324 {
325 	if (offset)
326 	{
327 		m_eeprom->di_write(data & 0x01);
328 		m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
329 		m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
330 
331 		// data & 8?
332 	}
333 }
334 
eeprom32_w(u32 data)335 void vamphalf_state::eeprom32_w(u32 data)
336 {
337 	m_eeprom->di_write(data & 0x01);
338 	m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
339 	m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
340 }
341 
finalgdr_eeprom_w(u32 data)342 void vamphalf_nvram_state::finalgdr_eeprom_w(u32 data)
343 {
344 	m_eeprom->di_write((data & 0x4000) >> 14);
345 	m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE );
346 	m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
347 }
348 
flipscreen_w(offs_t offset,u16 data)349 void vamphalf_state::flipscreen_w(offs_t offset, u16 data)
350 {
351 	if (offset)
352 	{
353 		m_flipscreen = data & m_flip_bit;
354 	}
355 }
356 
flipscreen32_w(u32 data)357 void vamphalf_state::flipscreen32_w(u32 data)
358 {
359 	m_flipscreen = data & m_flip_bit;
360 }
361 
jmpbreak_flipscreen_w(u16 data)362 void vamphalf_state::jmpbreak_flipscreen_w(u16 data)
363 {
364 	m_flipscreen = data & 0x8000;
365 }
366 
367 
wyvernwg_prot_r()368 u32 vamphalf_qdsp_state::wyvernwg_prot_r()
369 {
370 	if (!machine().side_effects_disabled())
371 		m_semicom_prot_idx--;
372 	return (m_semicom_prot_data[m_semicom_prot_which] & (1 << m_semicom_prot_idx)) >> m_semicom_prot_idx;
373 }
374 
wyvernwg_prot_w(u32 data)375 void vamphalf_qdsp_state::wyvernwg_prot_w(u32 data)
376 {
377 	m_semicom_prot_which = data & 1;
378 	m_semicom_prot_idx = 8;
379 }
380 
finalgdr_prot_r()381 u32 vamphalf_nvram_state::finalgdr_prot_r()
382 {
383 	if (!machine().side_effects_disabled())
384 		m_semicom_prot_idx--;
385 	return (m_semicom_prot_data[m_semicom_prot_which] & (1 << m_semicom_prot_idx)) ? 0x8000 : 0;
386 }
387 
finalgdr_prot_w(u32 data)388 void vamphalf_nvram_state::finalgdr_prot_w(u32 data)
389 {
390 	/*
391 	41C6
392 	967E
393 	446B
394 	F94B
395 	*/
396 	if (data == 0x41c6 || data == 0x446b)
397 		m_semicom_prot_which = 0;
398 	else
399 		m_semicom_prot_which = 1;
400 
401 	m_semicom_prot_idx = 8;
402 }
403 
finalgdr_oki_bank_w(u32 data)404 void vamphalf_nvram_state::finalgdr_oki_bank_w(u32 data)
405 {
406 	m_okibank->set_entry((data & 0x300) >> 8);
407 }
408 
finalgdr_backupram_bank_w(u32 data)409 void vamphalf_nvram_state::finalgdr_backupram_bank_w(u32 data)
410 {
411 	m_finalgdr_backupram_bank = (data & 0xff000000) >> 24;
412 }
413 
finalgdr_backupram_r(offs_t offset)414 u32 vamphalf_nvram_state::finalgdr_backupram_r(offs_t offset)
415 {
416 	return m_finalgdr_backupram[offset + m_finalgdr_backupram_bank * 0x80] << 24;
417 }
418 
finalgdr_backupram_w(offs_t offset,u32 data)419 void vamphalf_nvram_state::finalgdr_backupram_w(offs_t offset, u32 data)
420 {
421 	m_finalgdr_backupram[offset + m_finalgdr_backupram_bank * 0x80] = data >> 24;
422 }
423 
finalgdr_prize_w(u32 data)424 void vamphalf_nvram_state::finalgdr_prize_w(u32 data)
425 {
426 	if (data & 0x1000000)
427 	{
428 		// prize 1
429 	}
430 
431 	if (data & 0x2000000)
432 	{
433 		// prize 2
434 	}
435 
436 	if (data & 0x4000000)
437 	{
438 		// prize 3
439 	}
440 }
441 
aoh_oki_bank_w(u32 data)442 void vamphalf_state::aoh_oki_bank_w(u32 data)
443 {
444 	m_okibank->set_entry(data & 0x3);
445 }
446 
boonggab_oki_bank_w(offs_t offset,u16 data)447 void vamphalf_state::boonggab_oki_bank_w(offs_t offset, u16 data)
448 {
449 	if (offset)
450 		m_okibank->set_entry(data & 0x7);
451 }
452 
453 
mrkicker_oki_bank_w(u16 data)454 void vamphalf_state::mrkicker_oki_bank_w(u16 data)
455 {
456 	m_okibank->set_entry(data & 0x3);
457 }
458 
boonggab_prize_w(offs_t offset,u16 data)459 void vamphalf_state::boonggab_prize_w(offs_t offset, u16 data)
460 {
461 	if (offset)
462 	{
463 		// data & 0x01 == motor 1 on
464 		// data & 0x02 == motor 2 on
465 		// data & 0x04 == motor 3 on
466 		// data & 0x08 == prize power 1 on
467 		// data & 0x10 == prize lamp 1 off
468 		// data & 0x20 == prize lamp 2 off
469 		// data & 0x40 == prize lamp 3 off
470 	}
471 }
472 
boonggab_lamps_w(offs_t offset,u16 data)473 void vamphalf_state::boonggab_lamps_w(offs_t offset, u16 data)
474 {
475 	if (offset == 1)
476 	{
477 		// data & 0x0001 == lamp  7 on (why is data & 0x8000 set too?)
478 		// data & 0x0002 == lamp  8 on
479 		// data & 0x0004 == lamp  9 on
480 		// data & 0x0008 == lamp 10 on
481 		// data & 0x0010 == lamp 11 on
482 		// data & 0x0020 == lamp 12 on
483 		// data & 0x0040 == lamp 13 on
484 	}
485 	else if (offset == 3)
486 	{
487 		// data & 0x0100 == lamp  0 on
488 		// data & 0x0200 == lamp  1 on
489 		// data & 0x0400 == lamp  2 on
490 		// data & 0x0800 == lamp  3 on
491 		// data & 0x1000 == lamp  4 on
492 		// data & 0x2000 == lamp  5 on
493 		// data & 0x4000 == lamp  6 on
494 	}
495 }
496 
497 
qs1000_p3_w(u8 data)498 void vamphalf_state::qs1000_p3_w(u8 data)
499 {
500 	if (!BIT(data, 5))
501 		m_soundlatch->acknowledge_w();
502 
503 	membank("qs1000:data")->set_entry(data & 7);
504 }
505 
506 
common_map(address_map & map)507 void vamphalf_state::common_map(address_map &map)
508 {
509 	map(0x00000000, 0x001fffff).ram().share("wram");
510 	map(0x40000000, 0x4003ffff).ram().share("tiles");
511 	map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
512 	map(0xfff00000, 0xffffffff).rom().region("maincpu", 0);
513 }
514 
common_32bit_map(address_map & map)515 void vamphalf_state::common_32bit_map(address_map &map)
516 {
517 	map(0x00000000, 0x001fffff).ram().share("wram32");
518 	map(0x40000000, 0x4003ffff).rw(FUNC(vamphalf_state::vram_r), FUNC(vamphalf_state::vram_w)).share("tiles");
519 	map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
520 	map(0xfff00000, 0xffffffff).rom().region("maincpu", 0);
521 }
522 
yorijori_32bit_map(address_map & map)523 void vamphalf_qdsp_state::yorijori_32bit_map(address_map &map)
524 {
525 	map(0x00000000, 0x001fffff).ram().share("wram32");
526 	map(0x40000000, 0x4003ffff).rw(FUNC(vamphalf_state::vram_r), FUNC(vamphalf_state::vram_w)).share("tiles");
527 	map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
528 	map(0xffe00000, 0xffffffff).rom().region("maincpu", 0);
529 }
530 
vamphalf_io(address_map & map)531 void vamphalf_state::vamphalf_io(address_map &map)
532 {
533 	map(0x0c0, 0x0c1).noprw(); // return 0, when oki chip is read / written
534 	map(0x0c3, 0x0c3).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
535 	map(0x140, 0x143).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
536 	map(0x147, 0x147).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
537 	map(0x1c0, 0x1c3).r(FUNC(vamphalf_state::eeprom_r));
538 	map(0x240, 0x243).w(FUNC(vamphalf_state::flipscreen_w));
539 	map(0x600, 0x603).portr("SYSTEM");
540 	map(0x604, 0x607).portr("P1_P2");
541 	map(0x608, 0x60b).w(FUNC(vamphalf_state::eeprom_w));
542 }
543 
misncrft_io(address_map & map)544 void vamphalf_qdsp_state::misncrft_io(address_map &map)
545 {
546 	map(0x100, 0x103).w(FUNC(vamphalf_state::flipscreen_w));
547 	map(0x200, 0x203).portr("P1_P2");
548 	map(0x240, 0x243).portr("SYSTEM");
549 	map(0x3c0, 0x3c3).w(FUNC(vamphalf_state::eeprom_w));
550 	map(0x400, 0x403).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16);
551 	map(0x580, 0x583).r(FUNC(vamphalf_state::eeprom_r));
552 }
553 
coolmini_io(address_map & map)554 void vamphalf_state::coolmini_io(address_map &map)
555 {
556 	map(0x200, 0x203).w(FUNC(vamphalf_state::flipscreen_w));
557 	map(0x300, 0x303).portr("SYSTEM");
558 	map(0x304, 0x307).portr("P1_P2");
559 	map(0x308, 0x30b).w(FUNC(vamphalf_state::eeprom_w));
560 	map(0x4c0, 0x4c1).noprw(); // return 0, when oki chip is read / written
561 	map(0x4c3, 0x4c3).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
562 	map(0x540, 0x543).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
563 	map(0x544, 0x547).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
564 	map(0x7c0, 0x7c3).r(FUNC(vamphalf_state::eeprom_r));
565 }
566 
mrkicker_io(address_map & map)567 void vamphalf_state::mrkicker_io(address_map &map)
568 {
569 	map(0x002, 0x003).w(FUNC(vamphalf_state::mrkicker_oki_bank_w));
570 	coolmini_io(map);
571 }
572 
suplup_io(address_map & map)573 void vamphalf_state::suplup_io(address_map &map)
574 {
575 	map(0x020, 0x023).w(FUNC(vamphalf_state::eeprom_w));
576 	map(0x040, 0x043).portr("P1_P2");
577 	map(0x060, 0x063).portr("SYSTEM");
578 	map(0x080, 0x081).noprw(); // return 0, when oki chip is read / written
579 	map(0x083, 0x083).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
580 	map(0x0c0, 0x0c3).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
581 	map(0x0c4, 0x0c7).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
582 	map(0x100, 0x103).r(FUNC(vamphalf_state::eeprom_r));
583 }
584 
wyvernwg_io(address_map & map)585 void vamphalf_qdsp_state::wyvernwg_io(address_map &map)
586 {
587 	map(0x1800, 0x1803).rw(FUNC(vamphalf_qdsp_state::wyvernwg_prot_r), FUNC(vamphalf_qdsp_state::wyvernwg_prot_w));
588 	map(0x2000, 0x2003).w(FUNC(vamphalf_state::flipscreen32_w));
589 	map(0x2800, 0x2803).portr("P1_P2");
590 	map(0x3000, 0x3003).portr("SYSTEM");
591 	map(0x5400, 0x5403).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32);
592 	map(0x7000, 0x7003).w(FUNC(vamphalf_state::eeprom32_w));
593 	map(0x7c00, 0x7c03).r(FUNC(vamphalf_state::eeprom32_r));
594 }
595 
finalgdr_io(address_map & map)596 void vamphalf_nvram_state::finalgdr_io(address_map &map)
597 {
598 	map(0x2400, 0x2403).r(FUNC(vamphalf_nvram_state::finalgdr_prot_r));
599 	map(0x2800, 0x2803).w(FUNC(vamphalf_nvram_state::finalgdr_backupram_bank_w));
600 	map(0x2c00, 0x2dff).rw(FUNC(vamphalf_nvram_state::finalgdr_backupram_r), FUNC(vamphalf_nvram_state::finalgdr_backupram_w));
601 	map(0x3000, 0x3007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
602 	map(0x3800, 0x3803).portr("P1_P2");
603 	map(0x3402, 0x3402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
604 	map(0x3c00, 0x3c03).portr("SYSTEM");
605 	map(0x4400, 0x4403).r(FUNC(vamphalf_state::eeprom32_r));
606 	map(0x6000, 0x6003).nopr(); //?
607 	map(0x6000, 0x6003).w(FUNC(vamphalf_nvram_state::finalgdr_eeprom_w));
608 	map(0x6040, 0x6043).w(FUNC(vamphalf_nvram_state::finalgdr_prot_w));
609 	//map(0x6080, 0x6083).w(FUNC(vamphalf_nvram_state::flipscreen32_w)); //?
610 	map(0x6060, 0x6063).w(FUNC(vamphalf_nvram_state::finalgdr_prize_w));
611 	map(0x60a0, 0x60a3).w(FUNC(vamphalf_nvram_state::finalgdr_oki_bank_w));
612 }
613 
mrkickera_io(address_map & map)614 void vamphalf_nvram_state::mrkickera_io(address_map &map)
615 {
616 	map(0x2400, 0x2403).r(FUNC(vamphalf_state::eeprom32_r));
617 	map(0x4000, 0x4003).nopr(); //?
618 	map(0x4000, 0x4003).w(FUNC(vamphalf_nvram_state::finalgdr_eeprom_w));
619 	map(0x4040, 0x4043).w(FUNC(vamphalf_nvram_state::finalgdr_prot_w));
620 	map(0x4084, 0x4087).nopw(); //?
621 	map(0x40a0, 0x40a3).w(FUNC(vamphalf_nvram_state::finalgdr_oki_bank_w));
622 	map(0x6400, 0x6403).r(FUNC(vamphalf_nvram_state::finalgdr_prot_r));
623 	map(0x7000, 0x7007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
624 	map(0x7402, 0x7402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
625 	map(0x7800, 0x7803).portr("P1_P2");
626 	map(0x7c00, 0x7c03).portr("SYSTEM");
627 }
628 
jmpbreak_io(address_map & map)629 void vamphalf_state::jmpbreak_io(address_map &map)
630 {
631 	map(0x0c0, 0x0c3).noprw(); // ?
632 	map(0x100, 0x103).nopw(); // ?
633 	map(0x240, 0x243).portr("P1_P2");
634 	map(0x280, 0x283).w(FUNC(vamphalf_state::eeprom_w));
635 	map(0x2c0, 0x2c3).r(FUNC(vamphalf_state::eeprom_r));
636 	map(0x440, 0x441).noprw(); // return 0, when oki chip is read / written
637 	map(0x443, 0x443).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
638 	map(0x540, 0x543).portr("SYSTEM");
639 	map(0x680, 0x683).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
640 	map(0x684, 0x687).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
641 }
642 
worldadv_io(address_map & map)643 void vamphalf_state::worldadv_io(address_map &map)
644 {
645 	map(0x180, 0x183).w(FUNC(vamphalf_state::eeprom_w));
646 	map(0x280, 0x283).portr("P1_P2");
647 	map(0x340, 0x343).portr("SYSTEM");
648 	map(0x640, 0x641).noprw(); // return 0, when oki chip is read / written
649 	map(0x643, 0x643).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
650 	map(0x700, 0x703).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
651 	map(0x704, 0x707).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
652 	map(0x780, 0x783).r(FUNC(vamphalf_state::eeprom_r));
653 }
654 
mrdig_io(address_map & map)655 void vamphalf_state::mrdig_io(address_map &map)
656 {
657 	map(0x080, 0x081).noprw(); // return 0, when oki chip is read / written
658 	map(0x083, 0x083).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
659 	map(0x0c0, 0x0c3).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
660 	map(0x0c4, 0x0c7).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
661 	map(0x180, 0x183).r(FUNC(vamphalf_state::eeprom_r));
662 	map(0x280, 0x283).portr("SYSTEM");
663 	map(0x3c0, 0x3c3).w(FUNC(vamphalf_state::eeprom_w));
664 	map(0x500, 0x503).portr("P1_P2");
665 }
666 
aoh_map(address_map & map)667 void vamphalf_state::aoh_map(address_map &map)
668 {
669 	map(0x00000000, 0x003fffff).ram().share("wram32");
670 	map(0x40000000, 0x4003ffff).rw(FUNC(vamphalf_state::vram_r), FUNC(vamphalf_state::vram_w)).share("tiles");
671 	map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
672 	map(0x80210000, 0x80210003).portr("SYSTEM");
673 	map(0x80220000, 0x80220003).portr("P1_P2");
674 	map(0xffc00000, 0xffffffff).rom().region("maincpu", 0);
675 }
676 
aoh_io(address_map & map)677 void vamphalf_state::aoh_io(address_map &map)
678 {
679 	map(0x0480, 0x0483).w(FUNC(vamphalf_state::eeprom32_w));
680 	map(0x0622, 0x0622).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
681 	map(0x0662, 0x0662).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
682 	map(0x0640, 0x0647).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
683 	map(0x0680, 0x0683).w(FUNC(vamphalf_state::aoh_oki_bank_w));
684 }
685 
boonggab_io(address_map & map)686 void vamphalf_state::boonggab_io(address_map &map)
687 {
688 	map(0x0c0, 0x0c3).r(FUNC(vamphalf_state::eeprom_r));
689 	map(0x200, 0x203).noprw(); // seems unused
690 	map(0x300, 0x303).w(FUNC(vamphalf_state::flipscreen_w));
691 	map(0x400, 0x403).portr("SYSTEM");
692 	map(0x404, 0x407).portr("P1_P2");
693 	map(0x408, 0x40b).w(FUNC(vamphalf_state::eeprom_w));
694 	map(0x410, 0x413).w(FUNC(vamphalf_state::boonggab_prize_w));
695 	map(0x414, 0x41b).w(FUNC(vamphalf_state::boonggab_lamps_w));
696 	map(0x600, 0x603).w(FUNC(vamphalf_state::boonggab_oki_bank_w));
697 	map(0x700, 0x701).noprw(); // return 0, when oki chip is read / written
698 	map(0x702, 0x703).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask32(0x000000ff);
699 	map(0x743, 0x743).w("ymsnd", FUNC(ym2151_device::register_w));
700 	map(0x747, 0x747).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
701 }
702 
yorijori_io(address_map & map)703 void vamphalf_qdsp_state::yorijori_io(address_map &map)
704 {
705 }
706 
banked_oki_map(address_map & map)707 void vamphalf_state::banked_oki_map(address_map &map)
708 {
709 	map(0x00000, 0x1ffff).rom();
710 	map(0x20000, 0x3ffff).bankr("okibank");
711 }
712 
713 /*
714 Sprite list:
715 
716 Offset+0
717 -------- xxxxxxxx Y offs
718 -------x -------- Don't draw the sprite
719 x------- -------- Flip X
720 -x------ -------- Flip Y
721 
722 Offset+1
723 xxxxxxxx xxxxxxxx Sprite number
724 
725 Offset+2
726 -------- -xxxxxxx Color
727 or
728 -xxxxxxx -------- Color
729 
730 Offset+3
731 -------x xxxxxxxx X offs
732 */
733 
video_start()734 void vamphalf_state::video_start()
735 {
736 	save_item(NAME(m_flipscreen));
737 }
738 
draw_sprites(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)739 void vamphalf_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
740 {
741 	gfx_element *gfx = m_gfxdecode->gfx(0);
742 	rectangle clip = cliprect;
743 	int block;
744 
745 	for (int y = (cliprect.min_y & ~15); y <= (cliprect.max_y | 15); y += 16)
746 	{
747 		clip.min_y = y;
748 		clip.max_y = y + 15;
749 		if (m_flipscreen)
750 		{
751 			block = (y / 16) * 0x800;
752 		}
753 		else
754 		{
755 			block = (16 - (y / 16)) * 0x800;
756 		}
757 
758 		if (clip.min_y < cliprect.min_y)
759 			clip.min_y = cliprect.min_y;
760 
761 		if (clip.max_y > cliprect.max_y)
762 			clip.max_y = cliprect.max_y;
763 
764 		for (u32 cnt = 0; cnt < 0x800; cnt += 8)
765 		{
766 			const int offs = (block + cnt) / 2;
767 
768 			if (m_tiles[offs] & 0x0100) continue;
769 
770 			u32 code = m_tiles[offs+1];
771 			const u32 color = (m_tiles[offs+2] >> m_palshift) & 0x7f;
772 
773 			// boonggab
774 			if (m_has_extra_gfx)
775 			{
776 				code |= ((m_tiles[offs+2] & 0x100) << 8);
777 			}
778 
779 			int x = m_tiles[offs+3] & 0x01ff;
780 			int y = 256 - (m_tiles[offs] & 0x00ff);
781 
782 			int fx = m_tiles[offs] & 0x8000;
783 			int fy = m_tiles[offs] & 0x4000;
784 
785 			if (m_flipscreen)
786 			{
787 				fx = !fx;
788 				fy = !fy;
789 
790 				x = 366 - x;
791 				y = 256 - y;
792 			}
793 
794 			gfx->transpen(bitmap,clip,code,color,fx,fy,x,y,0);
795 		}
796 	}
797 }
798 
799 /*
800 Sprite list:
801 
802 Offset+0
803 -------- xxxxxxxx Y offs
804 ------xx -------- Sprite number hi bits
805 -----x-- -------- Flip X
806 ----x--- -------- Flip Y?
807 
808 Offset+1
809 xxxxxxxx xxxxxxxx Sprite number
810 
811 Offset+2
812 -------- -xxxxxxx Color
813 or
814 -xxxxxxx -------- Color
815 
816 Offset+3
817 -------x xxxxxxxx X offs
818 */
819 
draw_sprites_aoh(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)820 void vamphalf_state::draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
821 {
822 	gfx_element *gfx = m_gfxdecode->gfx(0);
823 	rectangle clip = cliprect;
824 	int block;
825 
826 	for (int y = (cliprect.min_y & ~15); y <= (cliprect.max_y | 15); y += 16)
827 	{
828 		clip.min_y = y;
829 		clip.max_y = y + 15;
830 		if (m_flipscreen)
831 		{
832 			block = (y / 16) * 0x800;
833 		}
834 		else
835 		{
836 			block = (16 - (y / 16)) * 0x800;
837 		}
838 
839 		if (clip.min_y < cliprect.min_y)
840 			clip.min_y = cliprect.min_y;
841 
842 		if (clip.max_y > cliprect.max_y)
843 			clip.max_y = cliprect.max_y;
844 
845 		for (u32 cnt = 0; cnt < 0x800; cnt += 8)
846 		{
847 			const int offs = (block + cnt) / 2;
848 			const u32 code  = (m_tiles[offs+1] & 0xffff) | ((m_tiles[offs] & 0x300) << 8);
849 			const u32 color = (m_tiles[offs+2] >> m_palshift) & 0x7f;
850 
851 			int x = m_tiles[offs+3] & 0x01ff;
852 			int y = 256 - (m_tiles[offs] & 0x00ff);
853 
854 			int fx = m_tiles[offs] & 0x400;
855 			int fy = 0; // not used ? or it's m_tiles[offs] & 0x800?
856 
857 			if (m_flipscreen)
858 			{
859 				fx = !fx;
860 				fy = !fy;
861 
862 				x = 366 - x;
863 				y = 256 - y;
864 			}
865 
866 			gfx->transpen(bitmap,clip,code,color,fx,fy,x,y,0);
867 		}
868 	}
869 }
870 
871 
handle_flipped_visible_area(screen_device & screen)872 void vamphalf_state::handle_flipped_visible_area(screen_device &screen)
873 {
874 	// are there actually registers to handle this?
875 	if (!m_flipscreen)
876 	{
877 		rectangle visarea;
878 		visarea.set(31, 350, 16, 251);
879 		screen.configure(screen.width(), screen.height(), visarea, screen.refresh_attoseconds());
880 	}
881 	else
882 	{
883 		rectangle visarea;
884 		visarea.set(31, 350, 20, 255);
885 		screen.configure(screen.width(), screen.height(), visarea, screen.refresh_attoseconds());
886 	}
887 }
888 
889 
screen_update_common(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)890 u32 vamphalf_state::screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
891 {
892 	handle_flipped_visible_area(screen);
893 	bitmap.fill(0, cliprect);
894 	draw_sprites(screen, bitmap, cliprect);
895 	return 0;
896 }
897 
screen_update_aoh(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)898 u32 vamphalf_state::screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
899 {
900 //  handle_flipped_visible_area(screen); // not on this?
901 	bitmap.fill(0, cliprect);
902 	draw_sprites_aoh(screen, bitmap, cliprect);
903 	return 0;
904 }
905 
CUSTOM_INPUT_MEMBER(vamphalf_state::boonggab_photo_sensors_r)906 CUSTOM_INPUT_MEMBER(vamphalf_state::boonggab_photo_sensors_r)
907 {
908 	static const u16 photo_sensors_table[8] = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 };
909 	u8 res = m_photosensors->read();
910 
911 	switch(res)
912 	{
913 		case 0x01:
914 			return photo_sensors_table[1]; // 5 - 7 points
915 
916 		case 0x02:
917 			return photo_sensors_table[2]; // 8 - 10 points
918 
919 		case 0x04:
920 			return photo_sensors_table[3]; // 11 - 13 points
921 
922 		case 0x08:
923 			return photo_sensors_table[4]; // 14 - 16 points
924 
925 		case 0x10:
926 			return photo_sensors_table[5]; // 17 - 19 points
927 
928 		case 0x20:
929 			return photo_sensors_table[6]; // 20 - 22 points
930 
931 		case 0x40:
932 			return photo_sensors_table[7]; // 23 - 25 points
933 	}
934 
935 	return photo_sensors_table[0];
936 }
937 
938 
939 static INPUT_PORTS_START( common )
940 	PORT_START("P1_P2")
941 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
942 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
943 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
944 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
945 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
946 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
947 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
948 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
949 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
950 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
951 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
952 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
953 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
954 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
955 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
956 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
957 
958 	PORT_START("SYSTEM")
959 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
960 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE1 )
961 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN2 )
962 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE )
963 	PORT_SERVICE_NO_TOGGLE( 0x0010, IP_ACTIVE_LOW )
964 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
965 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START1 )
966 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
967 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
968 INPUT_PORTS_END
969 
INPUT_PORTS_START(finalgdr)970 static INPUT_PORTS_START( finalgdr )
971 	PORT_START("P1_P2")
972 	PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
973 	PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
974 	PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
975 	PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
976 	PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
977 	PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
978 	PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
979 	PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_START1 )
980 	PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
981 	PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
982 	PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
983 	PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
984 	PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
985 	PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
986 	PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
987 	PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_START2 )
988 
989 	PORT_START("SYSTEM")
990 	PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 )
991 	PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_COIN2 )
992 	PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN )
993 	PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_UNKNOWN )
994 	PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN )
995 	PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN )
996 	PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SERVICE1 )
997 	PORT_SERVICE_NO_TOGGLE( 0x00800000, IP_ACTIVE_LOW )
998 INPUT_PORTS_END
999 
1000 static INPUT_PORTS_START( aoh )
1001 	PORT_START("P1_P2")
1002 	PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1003 	PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1004 	PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1005 	PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1006 	PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1007 	PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1008 	PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1009 	PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
1010 	PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1011 	PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
1012 	PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
1013 	PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
1014 	PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
1015 	PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1016 	PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1017 	PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1018 	PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
1019 	PORT_BIT( 0xff000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1020 
1021 	PORT_START("SYSTEM")
1022 	PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN2 )
1023 	PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 )
1024 	PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1025 	PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_UNKNOWN )
1026 	PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // EEPROM bit
1027 	PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_SERVICE1 )
1028 	PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1029 	PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1030 	PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1031 	PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 )
1032 	PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_START1 )
1033 	PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1034 	PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1035 	PORT_SERVICE_NO_TOGGLE( 0x00100000, IP_ACTIVE_LOW )
1036 	PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1037 	PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1038 	PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1039 	PORT_BIT( 0xff000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1040 INPUT_PORTS_END
1041 
1042 static INPUT_PORTS_START( boonggab )
1043 	PORT_START("P1_P2")
1044 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
1045 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
1046 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
1047 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
1048 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED )
1049 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
1050 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1051 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
1052 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_CUSTOM ) // sensor 1
1053 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_CUSTOM ) // sensor 2
1054 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_CUSTOM ) // sensor 3
1055 	PORT_BIT( 0x3800, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(vamphalf_state, boonggab_photo_sensors_r) // photo sensors 1, 2 and 3
1056 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
1057 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
1058 
1059 	PORT_START("SYSTEM")
1060 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1061 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE1 )
1062 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN2 )
1063 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE )
1064 	PORT_SERVICE_NO_TOGGLE( 0x0010, IP_ACTIVE_LOW )
1065 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1066 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1067 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
1068 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1069 
1070 	PORT_START("PHOTO_SENSORS")
1071 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
1072 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
1073 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
1074 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1)
1075 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1)
1076 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(1)
1077 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(1)
1078 INPUT_PORTS_END
1079 
1080 static GFXDECODE_START( gfx_vamphalf )
1081 	GFXDECODE_ENTRY( "gfx", 0, gfx_16x16x8_raw, 0, 0x80 )
1082 GFXDECODE_END
1083 
1084 void vamphalf_state::common(machine_config &config)
1085 {
1086 	E116T(config, m_maincpu, 50000000);    /* 50 MHz */
1087 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_state::common_map);
1088 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1089 
1090 	// various games require fast timing to save settings, probably because our Hyperstone core timings are incorrect
1091 	EEPROM_93C46_16BIT(config, m_eeprom);
1092 	m_eeprom->erase_time(attotime::from_usec(1));
1093 	m_eeprom->write_time(attotime::from_usec(1));
1094 
1095 	/* video hardware */
1096 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1097 	// 28MHz
1098 	screen.set_refresh_hz(59);
1099 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1100 	screen.set_size(512, 256);
1101 	screen.set_visarea(31, 350, 16, 251);
1102 	screen.set_screen_update(FUNC(vamphalf_state::screen_update_common));
1103 	screen.set_palette(m_palette);
1104 
1105 	PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000);
1106 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_vamphalf);
1107 }
1108 
sound_ym_oki(machine_config & config)1109 void vamphalf_state::sound_ym_oki(machine_config &config)
1110 {
1111 	SPEAKER(config, "lspeaker").front_left();
1112 	SPEAKER(config, "rspeaker").front_right();
1113 
1114 	YM2151(config, "ymsnd", XTAL(28'000'000)/8).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.5MHz */
1115 
1116 	okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(28'000'000)/16 , okim6295_device::PIN7_HIGH)); /* 1.75MHz */
1117 	oki1.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
1118 	oki1.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
1119 }
1120 
sound_ym_banked_oki(machine_config & config)1121 void vamphalf_state::sound_ym_banked_oki(machine_config &config)
1122 {
1123 	sound_ym_oki(config);
1124 	subdevice<okim6295_device>("oki1")->set_addrmap(0, &vamphalf_state::banked_oki_map);
1125 }
1126 
sound_suplup(machine_config & config)1127 void vamphalf_state::sound_suplup(machine_config &config)
1128 {
1129 	SPEAKER(config, "lspeaker").front_left();
1130 	SPEAKER(config, "rspeaker").front_right();
1131 
1132 	YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.579545 MHz */
1133 
1134 	okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH)); /* 1.75MHz */
1135 	oki1.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
1136 	oki1.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
1137 }
1138 
sound_qs1000(machine_config & config)1139 void vamphalf_state::sound_qs1000(machine_config &config)
1140 {
1141 	/* sound hardware */
1142 	SPEAKER(config, "lspeaker").front_left();
1143 	SPEAKER(config, "rspeaker").front_right();
1144 
1145 	GENERIC_LATCH_8(config, m_soundlatch);
1146 	m_soundlatch->data_pending_callback().set("qs1000", FUNC(qs1000_device::set_irq));
1147 	m_soundlatch->set_separate_acknowledge(true);
1148 
1149 	qs1000_device &qs1000(QS1000(config, "qs1000", XTAL(24'000'000)));
1150 	qs1000.set_external_rom(true);
1151 	qs1000.p1_in().set("soundlatch", FUNC(generic_latch_8_device::read));
1152 	qs1000.p3_out().set(FUNC(vamphalf_state::qs1000_p3_w));
1153 	qs1000.add_route(0, "lspeaker", 1.0);
1154 	qs1000.add_route(1, "rspeaker", 1.0);
1155 }
1156 
vamphalf(machine_config & config)1157 void vamphalf_state::vamphalf(machine_config &config)
1158 {
1159 	common(config);
1160 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::vamphalf_io);
1161 
1162 	sound_ym_oki(config);
1163 }
1164 
misncrft(machine_config & config)1165 void vamphalf_qdsp_state::misncrft(machine_config &config)
1166 {
1167 	common(config);
1168 	GMS30C2116(config.replace(), m_maincpu, XTAL(50'000'000)); /* 50 MHz */
1169 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_qdsp_state::common_map);
1170 	m_maincpu->set_addrmap(AS_IO, &vamphalf_qdsp_state::misncrft_io);
1171 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1172 
1173 	sound_qs1000(config);
1174 }
1175 
coolmini(machine_config & config)1176 void vamphalf_state::coolmini(machine_config &config)
1177 {
1178 	common(config);
1179 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::coolmini_io);
1180 
1181 	sound_ym_oki(config);
1182 }
1183 
mrkicker(machine_config & config)1184 void vamphalf_state::mrkicker(machine_config &config)
1185 {
1186 	common(config);
1187 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::mrkicker_io);
1188 
1189 	sound_ym_banked_oki(config);
1190 }
1191 
suplup(machine_config & config)1192 void vamphalf_state::suplup(machine_config &config)
1193 {
1194 	common(config);
1195 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::suplup_io);
1196 
1197 	// 14.31818MHz instead 28MHz
1198 	sound_suplup(config);
1199 }
1200 
jmpbreak(machine_config & config)1201 void vamphalf_state::jmpbreak(machine_config &config)
1202 {
1203 	common(config);
1204 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::jmpbreak_io);
1205 
1206 	sound_ym_oki(config);
1207 }
1208 
newxpang(machine_config & config)1209 void vamphalf_state::newxpang(machine_config &config)
1210 {
1211 	common(config);
1212 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::mrdig_io);
1213 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1214 
1215 	sound_ym_oki(config);
1216 }
1217 
worldadv(machine_config & config)1218 void vamphalf_state::worldadv(machine_config &config)
1219 {
1220 	common(config);
1221 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::worldadv_io);
1222 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1223 
1224 	sound_ym_oki(config);
1225 }
1226 
mrdig(machine_config & config)1227 void vamphalf_state::mrdig(machine_config &config)
1228 {
1229 	common(config);
1230 	GMS30C2116(config.replace(), m_maincpu, XTAL(50'000'000));   /* 50 MHz */
1231 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_state::common_map);
1232 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::mrdig_io);
1233 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1234 
1235 	sound_ym_oki(config);
1236 }
1237 
wyvernwg(machine_config & config)1238 void vamphalf_qdsp_state::wyvernwg(machine_config &config)
1239 {
1240 	common(config);
1241 	E132T(config.replace(), m_maincpu, XTAL(50'000'000));    /* 50 MHz */
1242 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_qdsp_state::common_32bit_map);
1243 	m_maincpu->set_addrmap(AS_IO, &vamphalf_qdsp_state::wyvernwg_io);
1244 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1245 
1246 	sound_qs1000(config);
1247 }
1248 
finalgdr(machine_config & config)1249 void vamphalf_nvram_state::finalgdr(machine_config &config)
1250 {
1251 	common(config);
1252 	E132T(config.replace(), m_maincpu, XTAL(50'000'000));    /* 50 MHz */
1253 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_nvram_state::common_32bit_map);
1254 	m_maincpu->set_addrmap(AS_IO, &vamphalf_nvram_state::finalgdr_io);
1255 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1256 
1257 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
1258 
1259 	sound_ym_banked_oki(config);
1260 }
1261 
mrkickera(machine_config & config)1262 void vamphalf_nvram_state::mrkickera(machine_config &config)
1263 {
1264 	common(config);
1265 	E132T(config.replace(), m_maincpu, XTAL(50'000'000));    /* 50 MHz */
1266 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_nvram_state::common_32bit_map);
1267 	m_maincpu->set_addrmap(AS_IO, &vamphalf_nvram_state::mrkickera_io);
1268 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1269 
1270 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
1271 
1272 	sound_ym_banked_oki(config);
1273 }
1274 
aoh(machine_config & config)1275 void vamphalf_state::aoh(machine_config &config)
1276 {
1277 	E132XN(config, m_maincpu, XTAL(20'000'000) * 4); /* 4x internal multiplier */
1278 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_state::aoh_map);
1279 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::aoh_io);
1280 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1281 
1282 	EEPROM_93C46_16BIT(config, m_eeprom);
1283 
1284 	/* video hardware */
1285 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1286 	// 32MHz
1287 	screen.set_refresh_hz(59.185);
1288 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1289 	screen.set_size(512, 512);
1290 	screen.set_visarea(64, 511-64, 16, 255-16);
1291 	screen.set_screen_update(FUNC(vamphalf_state::screen_update_aoh));
1292 	screen.set_palette(m_palette);
1293 
1294 	PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000);
1295 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_vamphalf);
1296 
1297 	/* sound hardware */
1298 	SPEAKER(config, "lspeaker").front_left();
1299 	SPEAKER(config, "rspeaker").front_right();
1300 
1301 	YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
1302 
1303 	okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'000'000)/8, okim6295_device::PIN7_HIGH)); /* 4MHz */
1304 	oki1.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
1305 	oki1.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
1306 
1307 	okim6295_device &oki2(OKIM6295(config, "oki2", XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH)); /* 1MHz */
1308 	oki2.set_addrmap(0, &vamphalf_state::banked_oki_map);
1309 	oki2.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
1310 	oki2.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
1311 }
1312 
boonggab(machine_config & config)1313 void vamphalf_state::boonggab(machine_config &config)
1314 {
1315 	common(config);
1316 	m_maincpu->set_addrmap(AS_IO, &vamphalf_state::boonggab_io);
1317 
1318 	sound_ym_banked_oki(config);
1319 }
1320 
yorijori(machine_config & config)1321 void vamphalf_qdsp_state::yorijori(machine_config &config)
1322 {
1323 	common(config);
1324 	E132T(config.replace(), m_maincpu, XTAL(50'000'000));   /* 50 MHz */
1325 	m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_qdsp_state::yorijori_32bit_map);
1326 	m_maincpu->set_addrmap(AS_IO, &vamphalf_qdsp_state::yorijori_io);
1327 	m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
1328 
1329 	// 27MHz instead 28MHz
1330 	sound_qs1000(config);
1331 }
1332 
1333 /*
1334 
1335 Vamp 1/2 (Semi Vamp)
1336 Danbi, 1999
1337 
1338 Later DANBI PCB:
1339 +-----------------------------------------------+
1340 |     VR1         KA12    VROM1                 |
1341 |                                               |
1342 |                 BS901  AD-65   ROML01  ROMU01 |
1343 |                                ROML00  ROMU00 |
1344 |                     62256                     |
1345 |J                    62256         +----------+|
1346 |A            +------+              |Quicklogic||
1347 |M    DRAM1   |E1-16T|   ROM1       | QL2003   ||
1348 |M            +------+              | XPL84C   ||
1349 |A                    62256         +----------+|
1350 |          GAL1       62256                     |
1351 |      93C46     +----------+     62256         |
1352 |                |Quicklogic|     62256         |
1353 |                | QL2003   |     62256         |
1354 |      50.000MHz | XPL84C   |     62256         |
1355 |B1 B2 B3        +----------+ 28.000MHz         |
1356 +-----------------------------------------------+
1357 
1358      CPU: Hyperstone E1-16T
1359 Graphics: QuickLogic QL2003-XPL84
1360    Sound: Oki M6295 rebaged as AD-65
1361           YM3012/YM2151 rebaged as KA12/BS901
1362     ROMs: ROML00/01, ROMU00/01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1363    DRAM1: TM T2316162A 1M x16 EDO DRAM (SOJ44)
1364 
1365 
1366 Ealier DANBI PCB:
1367 +-----------------------------------------------+
1368 |     VR1          KA3002    VROM1              |
1369 |                                               |
1370 |                  KA51   U6295  ELC     EVI    |
1371 |                                ROML00* ROMU00*|
1372 |                    62256                      |
1373 |                    62256                      |
1374 |J        +----------+              +---------+ |
1375 |A  DRAM1 |GMS30C2116|  ROM1        |  Actel  | |
1376 |M        +----------+              |A40MX04-F| |
1377 |M                   62256          |  PL84   | |
1378 |A          GAL1     62256          +---------+ |
1379 |       93C46                                   |
1380 |                 +---------+    62256          |
1381 |                 |  Actel  |    62256          |
1382 |                 |A40MX04-F|    62256          |
1383 |       50.000MHz |  PL84   |    62256          |
1384 |B1 B2 B3         +---------+ 28.000MHz         |
1385 +-----------------------------------------------+
1386 
1387      CPU: HYUNDAI GMS30C2116
1388 Graphics: Actel A40MX04-F PL84
1389    Sound: Oki M6295 rebaged as U6295
1390           YM3012/YM2151 rebaged as KA3002/KA51
1391     ROMs: ROML01, ROMU01 - SOP44 32MBit mask ROM for ELC & EVI
1392           ROML00, ROMU00 - unpopulated
1393    DRAM1: LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
1394 
1395 
1396 
1397 Both PCBs:
1398    VROM1: Macronix MX27C2000 2MBit DIP32 EPROM
1399     ROM1: ST M27C4001 4MBit DIP32 EPROM
1400 
1401     RAMs: MEMx/CRAMx - HMC HM2H256AJ-15 32K x8 SRAM (SOJ28)
1402     GAL1: PALCE22V10H
1403 
1404 B1 B2 B3: Push buttons for SERV, RESET, TEST
1405      VR1: Volume adjust pot
1406 */
1407 
1408 ROM_START( vamphalf )
1409 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1410 	/* 0 - 0x80000 empty */
1411 	ROM_LOAD( "prg.rom1", 0x80000, 0x80000, CRC(9b1fc6c5) SHA1(acf10a50d2119ac893b6cbd494911982a9352350) ) /* at 0x16554: Europe Version 1.1.0908 */
1412 
1413 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
CRC(bdee9a46)1414 	ROM_LOAD32_WORD( "eur.roml00", 0x000000, 0x200000, CRC(bdee9a46) SHA1(7e240b07377201afbe0cd0911ccee4ad52a74079) )
1415 	ROM_LOAD32_WORD( "eur.romu00", 0x000002, 0x200000, CRC(fa79e8ea) SHA1(feaba99f0a863bc5d27ad91d206168684976b4c2) )
1416 	ROM_LOAD32_WORD( "eur.roml01", 0x400000, 0x200000, CRC(a7995b06) SHA1(8b789b6a00bc177c3329ee4a31722fc65376b975) )
1417 	ROM_LOAD32_WORD( "eur.romu01", 0x400002, 0x200000, CRC(e269f5fe) SHA1(70f1308f11e147dd20f8bd45b91aefc9fd653da6) )
1418 
1419 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1420 	ROM_LOAD( "snd.vrom1", 0x00000, 0x40000, CRC(ee9e371e) SHA1(3ead5333121a77d76e4e40a0e0bf0dbc75f261eb) )
1421 ROM_END
1422 
1423 ROM_START( vamphalfr1 )
1424 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1425 	/* 0 - 0x80000 empty */
1426 	ROM_LOAD( "ws1-01201.rom1", 0x80000, 0x80000, CRC(afa75c19) SHA1(5dac104d1b3c026b6fce4d1f9126c048ebb557ef) ) /* at 0x162B8: Europe Version 1.0.0903 */
1427 
1428 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1429 	ROM_LOAD32_WORD( "elc.roml01", 0x000000, 0x400000, CRC(19df4056) SHA1(8b05769d8e245f8b25bf92013b98c9d7e5ab4548) ) /* only 2 ROMs, though twice as big as other sets */
1430 	ROM_LOAD32_WORD( "evi.romu01", 0x000002, 0x400000, CRC(f9803923) SHA1(adc1d4fa2c6283bc24829f924b58fbd9d1bacdd2) )
1431 
1432 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1433 	ROM_LOAD( "ws1-01202.vrom1", 0x00000, 0x40000, CRC(ee9e371e) SHA1(3ead5333121a77d76e4e40a0e0bf0dbc75f261eb) ) /* same data as other sets */
1434 ROM_END
1435 
1436 
1437 ROM_START( vamphalfk )
1438 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1439 	/* 0 - 0x80000 empty */
1440 	ROM_LOAD( "prom1", 0x80000, 0x80000, CRC(f05e8e96) SHA1(c860e65c811cbda2dc70300437430fb4239d3e2d) ) /* at 0x1653C: Korean Version 1.1.0908 */
1441 
1442 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1443 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(cc075484) SHA1(6496d94740457cbfdac3d918dce2e52957341616) )
1444 	ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(711c8e20) SHA1(1ef7f500d6f5790f5ae4a8b58f96ee9343ef8d92) )
1445 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(626c9925) SHA1(c90c72372d145165a8d3588def12e15544c6223b) )
1446 	ROM_LOAD32_WORD( "romu01", 0x400002, 0x200000, CRC(d5be3363) SHA1(dbdd0586909064e015f190087f338f37bbf205d2) )
1447 
1448 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1449 	ROM_LOAD( "snd.vrom1", 0x00000, 0x40000, CRC(ee9e371e) SHA1(3ead5333121a77d76e4e40a0e0bf0dbc75f261eb) )
1450 ROM_END
1451 
1452 /*
1453 
1454 Super Lup Lup Puzzle / Lup Lup Puzzle
1455 Omega System, 1999
1456 
1457 F-E1-16-001
1458 |----------------------------------------------|
1459 |       M6295       VROM1    N341256           |
1460 |  YM3012                                      |
1461 |       YM2151    |---------|N341256           |
1462 |                 |Quicklogi|                  |
1463 |                 |c        |N341256           |
1464 |J                |QL2003-  |                  |
1465 |A        N341256 |XPL84C   |N341256           |
1466 |M                |---------|                  |
1467 |M        N341256 |---------|N341256           |
1468 |A                |Quicklogi|                  |
1469 |         N341256 |c        |N341256           |
1470 |                 |QL2003-  |                  |
1471 |         N341256 |XPL84C   |N341256           |
1472 |                 |---------|    ROML00  ROMU00|
1473 |93C46            GM71C18163 N341256           |
1474 |PAL          E1-16T             ROML01  ROMU01|
1475 |TEST  ROM1                                    |
1476 |SERV                                          |
1477 |RESET ROM2   50MHz                 14.31818MHz|
1478 |----------------------------------------------|
1479 Notes:
1480       E1-16T clock : 50.000MHz
1481       M6295 clock  : 1.7897725MHz (14.31818/8). Sample Rate = 1789772.5 / 132
1482       YM2151 clock : 3.579545MHz (14.31818/4). Chip stamped 'KA51' on one PCB, BS901 on another
1483       VSync        : 60Hz
1484       N341256      : NKK N341256SJ-15 32K x8 SRAM (SOJ28)
1485       GM71C18163   : LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
1486 
1487       ROMs:
1488            ROML00/01, ROMU00/01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1489            VROM1                - Macronix MX27C2000 2MBit DIP32 EPROM
1490            ROM1/2               - ST M27C4001 4MBit DIP32 EPROM
1491 */
1492 
1493 ROM_START( suplup ) /* version 4.0 / 990518 - also has 'Puzzle Bang Bang' title but it can't be selected */
1494 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1495 	ROM_LOAD( "suplup-rom1.bin", 0x00000, 0x80000, CRC(61fb2dbe) SHA1(21cb8f571b2479de6779b877b656d1ffe5b3516f) )
1496 	ROM_LOAD( "suplup-rom2.bin", 0x80000, 0x80000, CRC(0c176c57) SHA1(f103a1afc528c01cbc18639273ab797fb9afacb1) )
1497 
1498 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1499 	ROM_LOAD32_WORD( "suplup-roml00.bin", 0x000000, 0x200000, CRC(7848e183) SHA1(1db8f0ea8f73f42824423d382b37b4d75fa3e54c) )
1500 	ROM_LOAD32_WORD( "suplup-romu00.bin", 0x000002, 0x200000, CRC(13e3ab7f) SHA1(d5b6b15ca5aef2e2788d2b81e0418062f42bf2f2) )
1501 	ROM_LOAD32_WORD( "suplup-roml01.bin", 0x400000, 0x200000, CRC(15769f55) SHA1(2c13e8da2682ccc7878218aaebe3c3c67d163fd2) )
1502 	ROM_LOAD32_WORD( "suplup-romu01.bin", 0x400002, 0x200000, CRC(6687bc6f) SHA1(cf842dfb2bcdfda0acc0859985bdba91d4a80434) )
1503 
1504 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1505 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(34a56987) SHA1(4d8983648a7f0acf43ff4c9c8aa6c8640ee2bbfe) )
1506 
1507 	ROM_REGION16_BE( 0x80, "eeprom", 0 ) /* Default EEPROM */
1508 	ROM_LOAD( "eeprom-suplup.bin", 0x0000, 0x0080, CRC(e60c9883) SHA1(662dd8fb85eb97a8a4d53886198b269a5f6a6268) )
1509 ROM_END
1510 
1511 ROM_START( luplup ) /* version 3.0 / 990128 */
1512 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1513 	ROM_LOAD( "luplup-rom1.v30", 0x00000, 0x80000, CRC(9ea67f87) SHA1(73d16c056a8d64743181069a01559a43fee529a3) )
1514 	ROM_LOAD( "luplup-rom2.v30", 0x80000, 0x80000, CRC(99840155) SHA1(e208f8731c06b634e84fb73e04f6cdbb8b504b94) )
1515 
1516 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1517 	ROM_LOAD32_WORD( "luplup-roml00",   0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
1518 	ROM_LOAD32_WORD( "luplup-romu00",   0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
1519 	ROM_LOAD32_WORD( "luplup30-roml01", 0x400000, 0x200000, CRC(40e85f94) SHA1(531e67eb4eedf47b0dded52ba2f4942b12cbbe2f) ) /* This one changed between v2.9 & v3.0 */
1520 	ROM_LOAD32_WORD( "luplup30-romu01", 0x400002, 0x200000, CRC(f2645b78) SHA1(b54c3047346c0f40dba0ba23b0d607cc53384edb) ) /* This one changed between v2.9 & v3.0 */
1521 
1522 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1523 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(34a56987) SHA1(4d8983648a7f0acf43ff4c9c8aa6c8640ee2bbfe) )
1524 
1525 	ROM_REGION( 0x0400, "plds", 0 )
1526 	ROM_LOAD( "gal22v10b.gal1", 0x0000, 0x02e5, NO_DUMP ) /* GAL is read protected */
1527 ROM_END
1528 
1529 ROM_START( luplup29 ) /* version 2.9 / 990108 */
1530 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1531 	ROM_LOAD( "luplup-rom1.v29", 0x00000, 0x80000, CRC(36a8b8c1) SHA1(fed3eb2d83adc1b071a12ce5d49d4cab0ca20cc7) )
1532 	ROM_LOAD( "luplup-rom2.v29", 0x80000, 0x80000, CRC(50dac70f) SHA1(0e313114a988cb633a89508fda17eb09023827a2) )
1533 
1534 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1535 	ROM_LOAD32_WORD( "luplup-roml00", 0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
1536 	ROM_LOAD32_WORD( "luplup-romu00", 0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
1537 	ROM_LOAD32_WORD( "luplup-roml01", 0x400000, 0x200000, CRC(41c7ca8c) SHA1(55704f9d54f31bbaa044cd9d10ac2d9cb5e8fb70) )
1538 	ROM_LOAD32_WORD( "luplup-romu01", 0x400002, 0x200000, CRC(16746158) SHA1(a5036a7aaa717fde89d62b7ff7a3fded8b7f5cda) )
1539 
1540 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1541 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(34a56987) SHA1(4d8983648a7f0acf43ff4c9c8aa6c8640ee2bbfe) )
1542 ROM_END
1543 
1544 ROM_START( luplup10 ) /* version 1.05 / 981214 */
1545 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1546 	ROM_LOAD( "p0_rom1.rom1", 0x00000, 0x80000, CRC(a2684e3c) SHA1(9178ab6e7695cfb5bcdac3f3b8f3ea2a86372018) )
1547 	ROM_LOAD( "p1_rom2.rom2", 0x80000, 0x80000, CRC(1043ce44) SHA1(13a23f35ff2335d837f682761f774a70e298e77a) )
1548 
1549 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1550 	ROM_LOAD32_WORD( "roml00.roml00", 0x000000, 0x200000, CRC(e2eeb61e) SHA1(5261cf29cd7e10d86c0dd4bc640ad9c3db99cec3) )
1551 	ROM_LOAD32_WORD( "romu00.romu00", 0x000002, 0x200000, CRC(9ee855b9) SHA1(a51b268a640b667d88a8ceab562607a811602fff) )
1552 	ROM_LOAD32_WORD( "roml01.roml01", 0x400000, 0x200000, CRC(7182864c) SHA1(48789b20d9b8f41d7c9f5690f4f44bc6f15b8cfe) )
1553 	ROM_LOAD32_WORD( "romu01.romu01", 0x400002, 0x200000, CRC(44f76640) SHA1(6a49ed4d5584ecd0496b9ce19aefd5f4e0126da7) )
1554 
1555 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1556 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(34a56987) SHA1(4d8983648a7f0acf43ff4c9c8aa6c8640ee2bbfe) )
1557 
1558 	ROM_REGION( 0x0400, "plds", 0 )
1559 	ROM_LOAD( "gal22v10b.gal1",  0x0000, 0x02e5, CRC(776c5137) SHA1(f6ced83ef803549cc61c14c276f914f267e91ce6) ) /* GAL22V10B at GAL1 */
1560 ROM_END
1561 
1562 ROM_START( puzlbang ) /* version 2.9 / 990108 - Korea only, cannot select title, language and limited selection of background choices, EI: censored  */
1563 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1564 	ROM_LOAD( "pbb-rom1.v29", 0x00000, 0x80000, CRC(eb829586) SHA1(1f8a6af7c51c715724f5a242f4e22f7f6fb1f0ee) )
1565 	ROM_LOAD( "pbb-rom2.v29", 0x80000, 0x80000, CRC(fb84c793) SHA1(a2d27caecdae457d12b48d88d19ce417f69507c6) )
1566 
1567 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1568 	ROM_LOAD32_WORD( "luplup-roml00", 0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
1569 	ROM_LOAD32_WORD( "luplup-romu00", 0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
1570 	ROM_LOAD32_WORD( "luplup-roml01", 0x400000, 0x200000, CRC(41c7ca8c) SHA1(55704f9d54f31bbaa044cd9d10ac2d9cb5e8fb70) )
1571 	ROM_LOAD32_WORD( "luplup-romu01", 0x400002, 0x200000, CRC(16746158) SHA1(a5036a7aaa717fde89d62b7ff7a3fded8b7f5cda) )
1572 
1573 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1574 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(34a56987) SHA1(4d8983648a7f0acf43ff4c9c8aa6c8640ee2bbfe) )
1575 ROM_END
1576 
1577 ROM_START( puzlbanga ) /* version 2.8 / 990106 - Korea only, cannot select title, language or change background selection, EI: censored */
1578 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1579 	ROM_LOAD( "pbb-rom1.v28", 0x00000, 0x80000, CRC(fd21c5ff) SHA1(bc6314bbb2495c140788025153c893d5fd00bdc1) )
1580 	ROM_LOAD( "pbb-rom2.v28", 0x80000, 0x80000, CRC(490ecaeb) SHA1(2b0f25e3d681ddf95b3c65754900c046b5b50b09) )
1581 
1582 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1583 	ROM_LOAD32_WORD( "luplup-roml00", 0x000000, 0x200000, CRC(08b2aa75) SHA1(7577b3ab79c54980307a83186dd1500f044c1bc8) )
1584 	ROM_LOAD32_WORD( "luplup-romu00", 0x000002, 0x200000, CRC(b57f4ca5) SHA1(b968c44a0ceb3274e066fa1d057fb6b017bb3fd3) )
1585 	ROM_LOAD32_WORD( "luplup-roml01", 0x400000, 0x200000, CRC(41c7ca8c) SHA1(55704f9d54f31bbaa044cd9d10ac2d9cb5e8fb70) )
1586 	ROM_LOAD32_WORD( "luplup-romu01", 0x400002, 0x200000, CRC(16746158) SHA1(a5036a7aaa717fde89d62b7ff7a3fded8b7f5cda) )
1587 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1588 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(34a56987) SHA1(4d8983648a7f0acf43ff4c9c8aa6c8640ee2bbfe) )
1589 ROM_END
1590 
1591 /*
1592 
1593 Jumping Break & Poosho Poosho
1594 F2 System, 1999
1595 
1596 sequel to "Die Break" from the Bestri 3 game collection (see crospang.cpp)
1597 
1598 F-E1-16-002
1599 +----------------------------------------------+
1600 |     VR1                   M6295  VROM1 28MHz |
1601 |                 YM3012                       |
1602 |                 YM2151            MEM2       |
1603 |                                   MEM3       |
1604 |               CRAM1               MEM5       |
1605 |               CRAM2               MEM7       |
1606 |J                                             |
1607 |A              MEM1U  +----------++----------+|
1608 |M                     |          ||          ||
1609 |M              MEM1L  |Quicklogic||Quicklogic||
1610 |A                     | QL2003-  || QL2003-  ||
1611 |                      | XPL84C   || XPL84C   ||
1612 |                      |          ||          ||
1613 |                      +----------++----------+|
1614 |             GAL1                             |
1615 | 93C46          DRAM1      ROM1 ROML00  ROMU00|
1616 |P1 P2   50MHz   E1-16T     ROM2 ROML01  ROMU01|
1617 |                                              |
1618 +----------------------------------------------+
1619 
1620 Notes:
1621 CPU: Hyperstone E1-16T @ 50.000MHz
1622 
1623      DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
1624 MEMx/CRAMx - NKK N341256SJ-15 32K x8 SRAM (SOJ28)
1625       GAL1 - PALCE22V10H
1626 
1627 Oki M6295 rebaged as AD-65
1628 YM3012/YM2151 rebaged as KA12/BS901
1629 
1630  P1 - Setup push button
1631  P2 - Reset push button
1632 VR1 - Volume adjust pot
1633 
1634 ROMs:
1635     ROML00/01, ROMU00/01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1636     VROM1                - AMD 27C020 2MBit DIP32 EPROM
1637     ROM1/2               - TMS 27C040 4MBit DIP32 EPROM
1638 
1639 Measured Clocks:
1640   E1-16T  @ 50MHz
1641   YM2151  @ 3.5MHz (28MHz/8)
1642   M6295   @ 1.75MH (28MHz/16), Pin7 High
1643    H-Sync @ 15.625KHz
1644    V-Sync @ 59.189Hz
1645 
1646 */
1647 
1648 ROM_START( jmpbreak ) /* Released February 1999 */
1649 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1650 	ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(7e237f7d) SHA1(042e672be34644311eefc7b998bcdf6a9ea2c28a) )
1651 	ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(c722f7be) SHA1(d8b3c6b5fd0942147e0a61169c3eb6334a3b5a40) )
1652 
1653 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1654 	ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(4b99190a) SHA1(30af068f7d9f9f349db5696c19ab53ac33304271) )
1655 	ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(e93762f8) SHA1(cc589b59e3ab7aa7092e96a1ff8a9de8a499b257) )
1656 	ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(6796a104) SHA1(3f7352cd37f78c1b01f7df45344ee7800db110f9) )
1657 	ROM_LOAD32_WORD( "romu01.bin", 0x400002, 0x200000, CRC(0cc907c8) SHA1(86029eca0870f3b7dd4f1ee8093ccb09077cc00b) )
1658 
1659 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1660 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(1b6e3671) SHA1(bd601460387b56c989785ae03d5bb3c6cdb30a50) )
1661 ROM_END
1662 
1663 ROM_START( jmpbreaka ) // PCB has a New Impeuropex sticker, so sold in the Italian market. There also an hand-written IMP 28.04.99
1664 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 )
1665 	ROM_LOAD( "2.rom1", 0x00000, 0x80000, CRC(553af133) SHA1(e2ae803e8f58426417093cc4b3784dee858f41ef) )
1666 	ROM_LOAD( "3.rom2", 0x80000, 0x80000, CRC(bd0a5eed) SHA1(9aaf83e4dcd4d02fb9b1c3156264c013a6873972) )
1667 
1668 	ROM_REGION( 0x800000, "gfx", 0 ) // these were not dumped for this set
1669 	ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, BAD_DUMP CRC(4b99190a) SHA1(30af068f7d9f9f349db5696c19ab53ac33304271) )
1670 	ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, BAD_DUMP CRC(e93762f8) SHA1(cc589b59e3ab7aa7092e96a1ff8a9de8a499b257) )
1671 	ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, BAD_DUMP CRC(6796a104) SHA1(3f7352cd37f78c1b01f7df45344ee7800db110f9) )
1672 	ROM_LOAD32_WORD( "romu01.bin", 0x400002, 0x200000, BAD_DUMP CRC(0cc907c8) SHA1(86029eca0870f3b7dd4f1ee8093ccb09077cc00b) )
1673 
1674 	ROM_REGION( 0x40000, "oki1", 0 )
1675 	ROM_LOAD( "1.vrom1", 0x00000, 0x40000, CRC(1b6e3671) SHA1(bd601460387b56c989785ae03d5bb3c6cdb30a50) )
1676 
1677 	ROM_REGION( 0x2dd, "plds", 0 )
1678 	ROM_LOAD( "palce22v10h.gal1", 0x000, 0x2dd, CRC(0ff86470) SHA1(0cc2bd2958c71d0bb58081a8f88327b09e92e2ea) )
1679 ROM_END
1680 
1681 ROM_START( poosho ) /* Released November 1999 - Updated sequel to Jumping Break for Korean market */
1682 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1683 	ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(2072c120) SHA1(cf066cd277840fdbb7a854a052a80b2fbb582278) )
1684 	ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(80e70d7a) SHA1(cdafce4bfe7370978414a12aaf482e07a1c89ff8) )
1685 
1686 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1687 	ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(9efb0673) SHA1(3aeae96e591a415c27942dce90fc64c11287097d) )
1688 	ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(fe1d6a02) SHA1(4d451cfc6457f56a98bcec7998713757dbefa2b5) )
1689 	ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(05e81ca0) SHA1(22c6b78e3a0f27195142221bd179a4ecac819684) )
1690 	ROM_LOAD32_WORD( "romu01.bin", 0x400002, 0x200000, CRC(fd2d02c7) SHA1(cc4fb765c6083e36a49f32f0d4e77792eb354f44) )
1691 
1692 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1693 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(1b6e3671) SHA1(bd601460387b56c989785ae03d5bb3c6cdb30a50) )
1694 
1695 	ROM_REGION( 0x0400, "plds", 0 )
1696 	ROM_LOAD( "gal1.bin",  0x0000, 0x02e5, CRC(90352c93) SHA1(cb72e52313dcd9fc0c8b794a1745d54af76a6129) )
1697 ROM_END
1698 
1699 /*
1700 
1701 New Cross Pang
1702 F2 System, 1999
1703 
1704 sequel to "Cross Pang" (see crospang.cpp)
1705 
1706 F-E1-16-002
1707 +----------------------------------------------+
1708 |     VR1                   M6295  VROM1 28MHz |
1709 |                 YM3012                       |
1710 |                 YM2151            MEM2       |
1711 |                                   MEM3       |
1712 |               CRAM1               MEM5       |
1713 |               CRAM2               MEM7       |
1714 |J                                             |
1715 |A              MEM1U  +----------++----------+|
1716 |M                     |          ||          ||
1717 |M              MEM1L  |Quicklogic||Quicklogic||
1718 |A                     | QL2003-  || QL2003-  ||
1719 |                      | XPL84C   || XPL84C   ||
1720 |                      |          ||          ||
1721 |                      +----------++----------+|
1722 |             GAL1                             |
1723 | 93C46          DRAM1     ROM1* ROML00  ROMU00|
1724 |P1 P2   50MHz   E1-16T    ROM2  ROML01  ROMU01|
1725 |                                              |
1726 +----------------------------------------------+
1727 
1728 Notes:
1729 CPU: Hyperstone E1-16T @ 50.000MHz
1730 
1731      DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
1732 MEMx/CRAMx - NKK N341256SJ-15 32K x8 SRAM (SOJ28)
1733       GAL1 - PALCE22V10H
1734 
1735 Oki M6295 rebaged as AD-65
1736 YM3012/YM2151 rebaged as KA12/KA51
1737 
1738  P1 - Setup push button
1739  P2 - Reset push button
1740 VR1 - Volume adjust pot
1741 
1742 ROMs:
1743     ROML00/01, ROMU00/01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1744     VROM1                - TMS 27C020 2MBit DIP32 EPROM
1745   * ROM1                 - Unpopulated space for DIP32 EPROM (up to 4MBit)
1746     ROM2                 - ST M27C4001 4MBit DIP32 EPROM
1747 
1748 Measured Clocks:
1749   E1-16T  @ 50MHz
1750   YM2151  @ 3.5MHz (28MHz/8)
1751   M6295   @ 1.75MH (28MHz/16), Pin7 High
1752    H-Sync @ 15.625KHz
1753    V-Sync @ 59.189Hz
1754 
1755 */
1756 
1757 ROM_START( newxpang ) /* Released January 1999 */
1758 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1759 	/* ROM1 empty */
1760 	ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(6d69c799) SHA1(e8c9b8c00056c4d019b44918a2e03e18cf68b833) )
1761 
1762 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1763 	ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(4f8253d3) SHA1(0a4d5db879da6412326bff3edc3007402883fb02) )
1764 	ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(0ac8f8e4) SHA1(af89b1bb422faa42f5a0980a999803150e7d9f39) )
1765 	ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(66e6e05e) SHA1(032fa6155590bea879ce09ce8d08101c9eed8b7b) )
1766 	ROM_LOAD32_WORD( "romu01.bin", 0x400002, 0x200000, CRC(73907b33) SHA1(63320131f9c1c07ab537c98cf5f31a077fb70799) )
1767 
1768 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1769 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(0f339d68) SHA1(9dc128aa35d37c84c2caee839f69bd0d090bae8f) )
1770 ROM_END
1771 
1772 /*
1773 
1774 World Adventure
1775 F2 System, 1999
1776 
1777 F-E1-16-002
1778 +----------------------------------------------+
1779 |     VR1                   M6295  VROM1 28MHz |
1780 |                 YM3012                       |
1781 |                 YM2151            MEM2       |
1782 |                                   MEM3       |
1783 |               CRAM1               MEM5       |
1784 |               CRAM2               MEM7       |
1785 |J                                             |
1786 |A              MEM1U  +----------++----------+|
1787 |M                     |          ||          ||
1788 |M              MEM1L  |Quicklogic||Quicklogic||
1789 |A                     | QL2003-  || QL2003-  ||
1790 |                      | XPL84C   || XPL84C   ||
1791 |                      |          ||          ||
1792 |                      +----------++----------+|
1793 |             GAL1                             |
1794 | 93C46          DRAM1     ROM1  ROML00  ROMU00|
1795 |P1 P2   50MHz   E1-16T    ROM2  ROML01  ROMU01|
1796 |                                              |
1797 +----------------------------------------------+
1798 
1799 Notes:
1800 CPU: Hyperstone E1-16T @ 50.000MHz
1801 
1802      DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
1803 MEMx/CRAMx - NKK N341256SJ-15 32K x8 SRAM (SOJ28)
1804       GAL1 - PALCE22V10H
1805 
1806 Oki M6295 rebaged as AD-65
1807 YM3012/YM2151
1808 
1809  P1 - Setup push button
1810  P2 - Reset push button
1811 VR1 - Volume adjust pot
1812 
1813 ROMs:
1814     ROML00/01, ROMU00/01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1815     VROM1                - AMIC A278308 2MBit DIP32 EPROM
1816     ROM1/2               - ST M27C4001 4MBit DIP32 EPROM
1817 
1818 Measured Clocks:
1819   E1-16T  @ 50MHz
1820   YM2151  @ 3.5MHz (28MHz/8)
1821   M6295   @ 1.75MH (28MHz/16), Pin7 High
1822    H-Sync @ 15.625KHz
1823    V-Sync @ 59.189Hz
1824 
1825 */
1826 
1827 ROM_START( worldadv ) /* Developed April 1999 */
1828 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1829 	ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(1855c235) SHA1(b4f7488365474248be8473c61bd2545e59132e44) )
1830 	ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(671ddbb0) SHA1(07f856ae33105440e08e4ae353952db4df65ad9f) )
1831 
1832 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1833 	ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(fe422890) SHA1(98c52f924345718a3b86d49b42b8c6fbba596da7) )
1834 	ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(dd1066f5) SHA1(bf10217404eebbddc8bc639e86ca77f935e0b148) )
1835 	ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(9ab76649) SHA1(ba4ae12638e1b25e77e7b7d20e6518bf9ce6bd1b) )
1836 	ROM_LOAD32_WORD( "romu01.bin", 0x400002, 0x200000, CRC(62132228) SHA1(7588fa90424ce4e557d1f43d3944cb89e007d63b) )
1837 
1838 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1839 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(c87cce3b) SHA1(0b189fee8fb87c8fb06a67ae9d901732b89fbf38) )
1840 ROM_END
1841 
1842 /*
1843 
1844 Mr. Dig
1845 SUN, 2000
1846 
1847 Rip-off of Mr. Driller series
1848 
1849 F-E1-16-002
1850 +----------------------------------------------+
1851 |     VR1                   M6295  VROM1 28MHz |
1852 |                 YM3012                       |
1853 |                 YM2151            MEM2       |
1854 |                                   MEM3       |
1855 |               CRAM1               MEM5       |
1856 |               CRAM2               MEM7       |
1857 |J                                             |
1858 |A              MEM1U  +----------++----------+|
1859 |M                     |          ||          ||
1860 |M              MEM1L  |Quicklogic||Quicklogic||
1861 |A                     | QL2003-  || QL2003-  ||
1862 |                      | XPL84C   || XPL84C   ||
1863 |                      |          ||          ||
1864 |                      +----------++----------+|
1865 |                                              |
1866 | 93C46          DRAM1      ROM1 ROML00  ROMH00|
1867 |P1 P2   50MHz  GMS30C2116  ROM2   *       *   |
1868 |                                              |
1869 +----------------------------------------------+
1870 
1871 Notes:
1872 CPU: HYUNDAI GMS30C2116 (Hyperstone E1-16T compatible) @ 50.000MHz
1873 
1874      DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
1875 MEMx/CRAMx - NKK N341256SJ-15 32K x8 SRAM (SOJ28)
1876 
1877 Oki M6295 rebaged as AD-65
1878 YM3012/YM2151 rebaged as KA12/KB2001
1879 
1880  P1 - Setup push button
1881  P2 - Reset push button
1882 VR1 - Volume adjust pot
1883 
1884 ROMs:
1885     ROML00 & ROMH00 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1886   * ROML01 & ROMH01 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
1887     VROM1           - Atmel AT27C020 2MBit DIP32 EPROM
1888     ROM1/2          - MX 27C4000 4MBit DIP32 EPROM
1889 
1890 */
1891 
1892 ROM_START( mrdig )
1893 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1894 	ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(5b960320) SHA1(adf5499a39987041fc93e409bdb5fd07dacec4f9) )
1895 	ROM_LOAD( "rom2.bin", 0x80000, 0x80000, CRC(75d48b64) SHA1(c9c492fb9cabafcf0bc05f44bf80ee6df3c21a1b) )
1896 
1897 	ROM_REGION( 0x800000, "gfx", 0 ) /* 16x16x8 Sprites */
1898 	ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(f6b161ea) SHA1(c417a4c877ffa2fdf5857ecc9c78ffc0c09dc516) )
1899 	ROM_LOAD32_WORD( "romh00.bin", 0x000002, 0x200000, CRC(5477efed) SHA1(e4991ee1b41d512eaa508351b6a78261dfde5a3d) )
1900 
1901 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1902 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(5fd9e1c6) SHA1(fef82ef816af69f31d12fc4634d06d825e8b7416) )
1903 ROM_END
1904 
1905 /*
1906 
1907 Cool Minigame Collection
1908 SemiCom, 1999
1909 
1910 F-E1-16-008
1911 |-------------------------------------------------------|
1912 |UPC1241            YM3012   VROM1                      |
1913 |      LM324  LM324 YM2151                              |
1914 |               MCM6206       M6295   ROML00    ROMU00  |
1915 |                                                       |
1916 |               MCM6206               ROML01    ROMU01  |
1917 |                                                       |
1918 |J              MCM6206               ROML02    ROMU02  |
1919 |A                                                      |
1920 |M              MCM6206               ROML03    ROMU03  |
1921 |M                                                      |
1922 |A              MCM6206                                 |
1923 |                                                       |
1924 |               MCM6206       QL2003    QL2003          |
1925 |                                                28MHz  |
1926 |               MCM6206                                 |
1927 |                                                       |
1928 |               MCM6206  E1-16T   GM71C1816     ROM1    |
1929 |                                                       |
1930 |              93C46                            ROM2    |
1931 |RESET  TEST          50MHz              PAL            |
1932 |-------------------------------------------------------|
1933 
1934 Also known to be found on the F-E1-16-010 PCB
1935 
1936 Notes:
1937 CPU: Hyperstone E1-16T @ 50.000MHz
1938 
1939 Oki M6295 rebaged as AD-65
1940 YM3012/YM2151 rebaged as BS902/KA51
1941 
1942 ROMs:
1943     ROML00 & ROMH00 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1944     ROML01 & ROMH01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1945     ROML02 & ROMH02 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1946     ROML03 & ROMH03 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
1947     VROM1           - MX 27C2000 2MBit DIP32 EPROM
1948     ROM1            - MX 27C4000 4MBit DIP32 EPROM
1949     ROM2            - MX 27C4000 4MBit DIP32 EPROM
1950 
1951 Measured Clocks:
1952    H-Sync @ 15.625KHz
1953    V-Sync @ 59.000Hz
1954 */
1955 
1956 ROM_START( coolmini )
1957 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1958 	ROM_LOAD( "cm-rom1", 0x00000, 0x80000, CRC(9688fa98) SHA1(d5ebeb1407980072f689c3b3a5161263c7082e9a) )
1959 	ROM_LOAD( "cm-rom2", 0x80000, 0x80000, CRC(9d588fef) SHA1(7b6b0ba074c7fa0aecda2b55f411557b015522b6) )
1960 
1961 	ROM_REGION( 0x1000000, "gfx", 0 )  /* 16x16x8 Sprites */
1962 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(4b141f31) SHA1(cf4885789b0df67d00f9f3659c445248c4e72446) )
1963 	ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(9b2fb12a) SHA1(8dce367c4c2cab6e84f586bd8dfea3ea0b6d7225) )
1964 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1e3a04bb) SHA1(9eb84b6a0172a8868f440065c30b4519e0c3fe33) )
1965 	ROM_LOAD32_WORD( "romu01", 0x400002, 0x200000, CRC(06dd1a6c) SHA1(8c707d388848bc5826fbfc48c3035fdaf5018515) )
1966 	ROM_LOAD32_WORD( "roml02", 0x800000, 0x200000, CRC(1e8c12cb) SHA1(f57489e81eb1e476939148cfc8d03f3df03b2a84) )
1967 	ROM_LOAD32_WORD( "romu02", 0x800002, 0x200000, CRC(4551d4fc) SHA1(4ec102120ab99e324d9574bfce93837d8334da06) )
1968 	ROM_LOAD32_WORD( "roml03", 0xc00000, 0x200000, CRC(231650bf) SHA1(065f742a37d5476ec6f72f0bd8ba2cfbe626b872) )
1969 	ROM_LOAD32_WORD( "romu03", 0xc00002, 0x200000, CRC(273d5654) SHA1(0ae3d1c4c4862a8642dbebd7c955b29df29c4938) )
1970 
1971 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1972 	ROM_LOAD( "cm-vrom1", 0x00000, 0x40000, CRC(fcc28081) SHA1(44031df0ee28ca49df12bcb73c83299fac205e21) )
1973 ROM_END
1974 
1975 ROM_START( coolminii )
1976 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
1977 	ROM_LOAD( "cm-rom1.040", 0x00000, 0x80000, CRC(aa94bb86) SHA1(f1d75bf54b75f234cc872779c5b1ff6679778841) )
1978 	ROM_LOAD( "cm-rom2.040", 0x80000, 0x80000, CRC(be7d02c8) SHA1(4897f3c890dd66f94d7a29f7a73c59857e4af218) )
1979 
1980 	ROM_REGION( 0x1000000, "gfx", 0 )  /* 16x16x8 Sprites */
1981 	ROM_LOAD32_WORD( "roml00",     0x000000, 0x200000, CRC(4b141f31) SHA1(cf4885789b0df67d00f9f3659c445248c4e72446) )
1982 	ROM_LOAD32_WORD( "romu00",     0x000002, 0x200000, CRC(9b2fb12a) SHA1(8dce367c4c2cab6e84f586bd8dfea3ea0b6d7225) )
1983 	ROM_LOAD32_WORD( "roml01",     0x400000, 0x200000, CRC(1e3a04bb) SHA1(9eb84b6a0172a8868f440065c30b4519e0c3fe33) )
1984 	ROM_LOAD32_WORD( "romu01",     0x400002, 0x200000, CRC(06dd1a6c) SHA1(8c707d388848bc5826fbfc48c3035fdaf5018515) )
1985 	ROM_LOAD32_WORD( "roml02",     0x800000, 0x200000, CRC(1e8c12cb) SHA1(f57489e81eb1e476939148cfc8d03f3df03b2a84) )
1986 	ROM_LOAD32_WORD( "romu02",     0x800002, 0x200000, CRC(4551d4fc) SHA1(4ec102120ab99e324d9574bfce93837d8334da06) )
1987 	ROM_LOAD32_WORD( "roml03.l03", 0xc00000, 0x200000, CRC(30a7fe2f) SHA1(f2c56728fcbe656bf22239763884518b01b3697c) ) /* only these two changed for the Italian version */
1988 	ROM_LOAD32_WORD( "romu03.u03", 0xc00002, 0x200000, CRC(eb7c943d) SHA1(2a3207dea482a71d7cce017c429a2915ae99fdb1) ) /* only these two changed for the Italian version */
1989 
1990 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
1991 	ROM_LOAD( "cm-vrom1", 0x00000, 0x40000, CRC(fcc28081) SHA1(44031df0ee28ca49df12bcb73c83299fac205e21) )
1992 ROM_END
1993 
1994 /*
1995 
1996 Date Quiz Go Go Episode 2
1997 SemiCom, 2000
1998 
1999 F-E1-16-010
2000 +-----------------------------------------------+
2001 |     VR1          YM3012  VROM1                |
2002 |                  YM2151  M6295   ROML03 ROMU03|
2003 |               CRAM2              ROML02 ROMU02|
2004 |               CRAM1              ROML01 ROMU01|
2005 |               MEM1L              ROML00 ROMU00|
2006 |J              MEM1U                           |
2007 |A              MEM2  +----------++----------+  |
2008 |M                    |          ||          |  |
2009 |M              MEM3  |Quicklogic||Quicklogic| 2|
2010 |A                    | QL2003-  || QL2003-  | 8|
2011 |               MEM6  | XPL84C   || XPL84C   | M|
2012 |                     |          ||          | H|
2013 |               MEM7  +----------++----------+ z|
2014 |                      GAL                      |
2015 |    93C46                       ROM1           |
2016 |P1 P2   50MHz E1-16T   DRAM1    ROM2           |
2017 +-----------------------------------------------+
2018 
2019 Notes:
2020 CPU - Hyperstone E1-16T @ 50.000MHz
2021 
2022 DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
2023 CRAMx - W24M257AK-15 32K x8 SRAM (SOJ28)
2024 MEMx  - UM61256FK-15 32K x8 SRAM (SOJ28)
2025 
2026 Oki M6295 rebaged as AD-65
2027 YM3012/YM2151 rebaged as BS902/KA51
2028 
2029  P1 - Reset push button
2030  P2 - Setup push button
2031 VR1 - Volume adjust pot
2032 
2033 ROMs:
2034     ROML00 & ROMH00 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2035     ROML01 & ROMH01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2036     ROML02 & ROMH02 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2037     ROML03 & ROMH03 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2038     VROM1           - 27C020 2MBit DIP32 EPROM
2039     ROM1            - 27C040 4MBit DIP32 EPROM
2040     ROM2            - 27C040 4MBit DIP32 EPROM
2041 
2042 */
2043 
2044 ROM_START( dquizgo2 )
2045 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2046 	ROM_LOAD( "rom1",         0x00000, 0x080000, CRC(81eef038) SHA1(9c925d1ef261ea85069925ccd1a5aeb939f55d5a) )
2047 	ROM_LOAD( "rom2",         0x80000, 0x080000, CRC(e8789d8a) SHA1(1ee26c26cc7024c5df9d0da630b326021ece9f41) )
2048 
2049 	ROM_REGION( 0xc00000, "gfx", 0 ) /* 16x16x8 Sprites */
2050 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(de811dd7) SHA1(bf31e165440ed2e3cdddd2174521b15afd8b2e69) )
2051 	ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(2bdbfc6b) SHA1(8e755574e3c9692bd8f82c7351fe3623a31ec136) )
2052 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(f574a2a3) SHA1(c6a8aca75bd3a4e4109db5095f3a3edb9b1e6657) )
2053 	ROM_LOAD32_WORD( "romu01", 0x400002, 0x200000, CRC(d05cf02f) SHA1(624316d4ee42c6257bc64747e4260a0d3950f9cd) )
2054 	ROM_LOAD32_WORD( "roml02", 0x800000, 0x200000, CRC(43ca2cff) SHA1(02ad7cce42d917dbefdba2e4e8886fc883b1dc60) )
2055 	ROM_LOAD32_WORD( "romu02", 0x800002, 0x200000, CRC(b8218222) SHA1(1e1aa60e0de9c02b841896512a1163dda280c845) )
2056 	/* roml03 empty */
2057 	/* romu03 empty */
2058 
2059 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
2060 	ROM_LOAD( "vrom1", 0x00000, 0x40000, CRC(24d5b55f) SHA1(cb4d3a22440831e37df0a7fe5433bea708d60f31) )
2061 ROM_END
2062 
2063 /*
2064 
2065 Diet Family
2066 SemiCom, 2001
2067 
2068 F-E1-16-010
2069 +-----------------------------------------------+
2070 |     VR1          YM3012  VROM1                |
2071 |                  YM2151  M6295   ROML03 ROMU03|
2072 |               CRAM2              ROML02 ROMU02|
2073 |               CRAM1              ROML01 ROMU01|
2074 |               MEM1L              ROML00 ROMU00|
2075 |J              MEM1U                           |
2076 |A              MEM2  +----------++----------+  |
2077 |M                    |          ||          |  |
2078 |M              MEM3  |Quicklogic||Quicklogic| 2|
2079 |A                    | QL2003-  || QL2003-  | 8|
2080 |               MEM6  | XPL84C   || XPL84C   | M|
2081 |                     |          ||          | H|
2082 |               MEM7  +----------++----------+ z|
2083 |                      GAL                      |
2084 |    93C46                       ROM1           |
2085 |P1 P2   50MHz E1-16T   DRAM1    ROM2           |
2086 +-----------------------------------------------+
2087 
2088 Notes:
2089 CPU - Hyperstone E1-16T @ 50.000MHz
2090 
2091 DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
2092 CRAMx - W24M257AK-15 32K x8 SRAM (SOJ28)
2093 MEMx  - UM61256FK-15 32K x8 SRAM (SOJ28)
2094 
2095 Oki M6295 rebaged as AD-65
2096 YM3012/YM2151 rebaged as BS902/KA51
2097 
2098  P1 - Reset push button
2099  P2 - Setup push button
2100 VR1 - Volume adjust pot
2101 
2102 ROMs:
2103     ROML00 & ROMH00 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2104     ROML01 & ROMH01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2105     ROML02 & ROMH02 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2106     ROML03 & ROMH03 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2107     VROM1           - 27C040 2MBit DIP32 EPROM
2108     ROM1            - 27C040 4MBit DIP32 EPROM
2109     ROM2            - 27C040 4MBit DIP32 EPROM
2110 
2111 */
2112 
2113 ROM_START( dtfamily )
2114 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2115 	ROM_LOAD( "rom1",         0x00000, 0x080000, CRC(738636d2) SHA1(ba7906df99764ee7e1f505c319d364c64c605ff0) )
2116 	ROM_LOAD( "rom2",         0x80000, 0x080000, CRC(0953f5e4) SHA1(ee8b3c4f9c9301c9815747eab5435e006ec84ca1) )
2117 
2118 	ROM_REGION( 0xc00000, "gfx", 0 ) /* 16x16x8 Sprites */
2119 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(7e2a7520) SHA1(0ff157fe34ff31cd8636af821fe14c12242d757f) )
2120 	ROM_LOAD32_WORD( "romu00", 0x000002, 0x200000, CRC(c170755f) SHA1(019d24979071f0ab2b3c93a5ec9327e6a0b2afa2) )
2121 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(3d487ffe) SHA1(c5608423d608922c0e1ac8bdfaa0de062b2c9821) )
2122 	ROM_LOAD32_WORD( "romu01", 0x400002, 0x200000, CRC(716efedb) SHA1(fb468d93817a49173698872c49a289c257f77a92) )
2123 	ROM_LOAD32_WORD( "roml02", 0x800000, 0x200000, CRC(c3dd3c96) SHA1(2707f690b5850685f782fc04a7dbd1d91f443223) )
2124 	ROM_LOAD32_WORD( "romu02", 0x800002, 0x200000, CRC(80830961) SHA1(b318e9e3a4d1d7dca61d7d4c9ee01f605e2b2f4a) )
2125 	/* roml03 empty */
2126 	/* romu03 empty */
2127 
2128 	/* $00000-$20000 stays the same in all sound banks, */
2129 	/* the second half of the bank is what gets switched */
2130 	ROM_REGION( 0x80000, "oki1", 0 ) /* Oki Samples */
2131 	ROM_LOAD( "vrom1", 0x00000, 0x80000, CRC(4aacaef3) SHA1(c079170dc0ba0b91b1780cd175dc38151d640ff0) )
2132 ROM_END
2133 
2134 /*
2135 
2136 Toy Land Adventure
2137 SemiCom, 2001
2138 
2139 F-E1-16-010
2140 +-----------------------------------------------+
2141 |     VR1          YM3012  VROM1                |
2142 |                  YM2151  M6295   ROML03 ROMU03|
2143 |               CRAM2              ROML02 ROMU02|
2144 |               CRAM1              ROML01 ROMU01|
2145 |               MEM1L              ROML00 ROMU00|
2146 |J              MEM1U                           |
2147 |A              MEM2  +----------++----------+  |
2148 |M                    |          ||          |  |
2149 |M              MEM3  |Quicklogic||Quicklogic| 2|
2150 |A                    | QL2003-  || QL2003-  | 8|
2151 |               MEM6  | XPL84C   || XPL84C   | M|
2152 |                     |          ||          | H|
2153 |               MEM7  +----------++----------+ z|
2154 |                      GAL                      |
2155 |    93C46                       ROM1*          |
2156 |P1 P2   50MHz E1-16T   DRAM1    ROM2           |
2157 +-----------------------------------------------+
2158 
2159 Notes:
2160 CPU - Hyperstone E1-16T @ 50.000MHz
2161 
2162 DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
2163 CRAMx - W24M257AK-15 32K x8 SRAM (SOJ28)
2164 MEMx  - UM61256FK-15 32K x8 SRAM (SOJ28)
2165 
2166 Oki M6295 rebaged as AD-65
2167 YM3012/YM2151 rebaged as BS902/KA51
2168 
2169  P1 - Reset push button
2170  P2 - Setup push button
2171 VR1 - Volume adjust pot
2172 
2173 ROMs:
2174     ROML00 & ROMH00 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2175     ROML01 & ROMH01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2176     ROML02 & ROMH02 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2177     ROML03 & ROMH03 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2178     VROM1           - MX 27C2000 2MBit DIP32 EPROM
2179   * ROM1            - Unpopulated space for DIP32 EPROM (up to 4MBit)
2180     ROM2            - TMS 27C040 4MBit DIP32 EPROM
2181 
2182 */
2183 
2184 ROM_START( toyland )
2185 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2186 	/* ROM1 empty */
2187 	ROM_LOAD( "rom2.bin",         0x80000, 0x080000, CRC(e3455002) SHA1(5ad7884f82fb125d70829accec02f238e7d9593c) )
2188 
2189 	ROM_REGION( 0xc00000, "gfx", 0 ) /* 16x16x8 Sprites */
2190 	ROM_LOAD32_WORD( "roml00.bin", 0x000000, 0x200000, CRC(06f5673d) SHA1(23769015fc9a37d36b0fe4924964650aeca77573) )
2191 	ROM_LOAD32_WORD( "romu00.bin", 0x000002, 0x200000, CRC(8c3db0e4) SHA1(6101ec550ae165338333fb04e0762edee65ca253) )
2192 	ROM_LOAD32_WORD( "roml01.bin", 0x400000, 0x200000, CRC(076a84e1) SHA1(f58cb4cd874e1f3f266a5ccbf8ffb5e0111034d3) )
2193 	ROM_LOAD32_WORD( "romu01.bin", 0x400002, 0x200000, CRC(1bc33d01) SHA1(a2a3e6b473cefe463dbd60bda98cb5a4df2bc81b) )
2194 	/* roml02 empty */
2195 	/* romu02 empty */
2196 	/* roml03 empty */
2197 	/* romu03 empty */
2198 
2199 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
2200 	ROM_LOAD( "vrom1.bin", 0x00000, 0x40000, CRC(d7e6fc5d) SHA1(ab5bca4035299214d98b222320276fbcaedb0898) )
2201 
2202 	ROM_REGION16_BE( 0x80, "eeprom", 0 ) /* Default EEPROM */
2203 	ROM_LOAD( "epr1.ic3", 0x0000, 0x0080, CRC(812f3d87) SHA1(744919ff4b44eaa3c4dcc75a1cc2f231ccbb4a3e) )
2204 
2205 ROM_END
2206 
2207 /*
2208 
2209 Wivern Wings (c) 2001 SemiCom / Wyvern Wings (c) 2001 SemiCom, Game Vision License
2210 
2211    CPU: Hyperstone E1-32T
2212  Video: 2 QuickLogic QL12x16B-XPL84 FPGA
2213  Sound: AdMOS QDSP1000 with QDSP QS1001A sample ROM
2214    OSC: 50MHz, 28MHz & 24MHz
2215 EEPROM: 93C46
2216 
2217 F-E1-32-010-D
2218 +------------------------------------------------------------------+
2219 |    VOL    +-------+  +---------+                                 |
2220 +-+         | QDSP  |  |  U15A   |      +---------+   +---------+  |
2221   |         |QS1001A|  |         |      | ROMH00  |   | ROML00  |  |
2222 +-+         +-------+  +---------+      |         |   |         |  |
2223 |           +-------+                   +---------+   +---------+  |
2224 |           |QDSP   |   +----------+    +---------+   +---------+  |
2225 |           |QS1000 |   |    U7    |    | ROMH01  |   | ROML01  |  |
2226 |J   24MHz  +-------+   +----------+    |         |   |         |  |
2227 |A                                      +---------+   +---------+  |
2228 |M   50MHz           +-----+            +---------+   +---------+  |
2229 |M                   |DRAM2|            | ROMH02  |   | ROML02  |  |
2230 |A     +----------+  +-----+    +-----+ |         |   |         |  |
2231 |      |          |  +-----+    |93C46| +---------+   +---------+  |
2232 |C     |HyperStone|  |DRAM1|    +-----+ +---------+   +---------+  |
2233 |O     |  E1-32T  |  +-----+            | ROMH03  |   | ROML03  |  |
2234 |N     |          |              28MHz  |         |   |         |  |
2235 |N     +----------+                     +---------+   +---------+  |
2236 |E                                                                 |
2237 |C           +----------+           +------------+ +------------+  |
2238 |T           |   GAL1   |           | QuickLogic | | QuickLogic |  |
2239 |O           +----------+           | 0048 BH    | | 0048 BH    |  |
2240 |R           +----------+           | QL12X16B   | | QL12X16B   |  |
2241 |            |   ROM2   |           | -XPL84C    | | -XPL84C    |  |
2242 |            +----------+           +------------+ +------------+  |
2243 |            +----------+            +----+                        |
2244 |            |   ROM1   |            |MEM3|                        |
2245 +-++--+      +----------+            +----+                        |
2246   ||S1|    +-----+                   |MEM2|                        |
2247 +-++--+    |CRAM2|                   +----+                        |
2248 |  +--+    +-----+                   |MEM7|                        |
2249 |  |S2|    |CRAM1|                   +----+                        |
2250 |  +--+    +-----+                   |MEM6|                        |
2251 +------------------------------------+----+------------------------+
2252 
2253 S1 is the setup button
2254 S2 is the reset button
2255 
2256 ROMH & ROML are all MX 29F1610MC-16 flash ROMs
2257 u15A is a MX 29F1610MC-16 flash ROM
2258 u7 is a ST 27c1001
2259 ROM1 & ROM2 are both ST 27C4000D
2260 
2261 */
2262 
2263 ROM_START( wivernwg )
2264 	ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2265 	ROM_LOAD( "rom1", 0x000000, 0x080000, CRC(83eb9a36) SHA1(d9c3b2facf42c137abc2923bbaeae300964ca4a0) ) /* ST 27C4000D with no labels */
2266 	ROM_LOAD( "rom2", 0x080000, 0x080000, CRC(5d657055) SHA1(21baa81b80f28aec4a6be9eaf69709958bf2a129) )
2267 
2268 	ROM_REGION( 0x080000, "qs1000:cpu", 0 ) /* QDSP (8052) Code */
2269 	ROM_LOAD( "u7",  0x00000, 0x20000, CRC(00a3f705) SHA1(f0a6bafd16bea53d4c05c8cc108983cbd41e5757) ) /* ST 27C1001 with no labels */
2270 	ROM_RELOAD(      0x20000, 0x20000 )
2271 	ROM_RELOAD(      0x40000, 0x20000 )
2272 	ROM_RELOAD(      0x60000, 0x20000 )
2273 
2274 	ROM_REGION( 0x1000000, "gfx", 0 )  /* gfx data */
2275 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(fb3541b6) SHA1(4f569ac7bde92c5febf005ab73f76552421ec223) ) /* MX 29F1610MC-16 flash ROMs with no labels */
2276 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(516aca48) SHA1(42cf5678eb4c0ee7da2ab0bd66e4e34b2735c75a) )
2277 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1c764f95) SHA1(ba6ac1376e837b491bc0269f2a1d10577a3d40cb) )
2278 	ROM_LOAD32_WORD( "romh01", 0x400002, 0x200000, CRC(fee42c63) SHA1(a27b5cbca0defa9be85fee91dde1273f445d3372) )
2279 	ROM_LOAD32_WORD( "roml02", 0x800000, 0x200000, CRC(fc846707) SHA1(deaee15ab71927f644dcf576959e2ceaa55bfd44) )
2280 	ROM_LOAD32_WORD( "romh02", 0x800002, 0x200000, CRC(86141c7d) SHA1(22a82cc7d44d655b03867503a83e81f7c82d6c91) )
2281 	ROM_LOAD32_WORD( "l03",    0xc00000, 0x200000, CRC(85aa8db8) SHA1(8ad067f92ff161683ac962ffc5391504145a3d4a) )
2282 	ROM_LOAD32_WORD( "h03",    0xc00002, 0x200000, CRC(ade8af9f) SHA1(05cdc1b38dec9d8a86302f2de794391fd3e376a5) )
2283 
2284 	ROM_REGION( 0x1000000, "qs1000", 0 ) /* Music data / QDSP samples (SFX) */
2285 	ROM_LOAD( "romsnd.u15a", 0x000000, 0x200000, CRC(fc89eedc) SHA1(2ce28bdb773cfa5b5660e4c0a9ef454cb658f2da) ) /* MX 29F1610MC-16 flash ROM with no label */
2286 	ROM_LOAD( "qs1001a",     0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
2287 ROM_END
2288 
2289 ROM_START( wyvernwg )
2290 	ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2291 	ROM_LOAD( "rom1.bin", 0x000000, 0x080000, CRC(66bf3a5c) SHA1(037d5e7a6ef6f5b4ac08a9c811498c668a9d2522) ) /* ST 27c4000D with no labels */
2292 	ROM_LOAD( "rom2.bin", 0x080000, 0x080000, CRC(fd9b5911) SHA1(a01e8c6e5a9009024af385268ba3ba90e1ebec50) )
2293 
2294 	ROM_REGION( 0x080000, "qs1000:cpu", 0 ) /* QDSP (8052) Code */
2295 	ROM_LOAD( "u7",  0x00000, 0x20000, CRC(00a3f705) SHA1(f0a6bafd16bea53d4c05c8cc108983cbd41e5757) ) /* ST 27C1001 with no labels */
2296 	ROM_RELOAD(      0x20000, 0x20000 )
2297 	ROM_RELOAD(      0x40000, 0x20000 )
2298 	ROM_RELOAD(      0x60000, 0x20000 )
2299 
2300 	ROM_REGION( 0x1000000, "gfx", 0 )  /* gfx data */
2301 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(fb3541b6) SHA1(4f569ac7bde92c5febf005ab73f76552421ec223) ) /* MX 29F1610MC-16 flash ROMs with no labels */
2302 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(516aca48) SHA1(42cf5678eb4c0ee7da2ab0bd66e4e34b2735c75a) )
2303 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1c764f95) SHA1(ba6ac1376e837b491bc0269f2a1d10577a3d40cb) )
2304 	ROM_LOAD32_WORD( "romh01", 0x400002, 0x200000, CRC(fee42c63) SHA1(a27b5cbca0defa9be85fee91dde1273f445d3372) )
2305 	ROM_LOAD32_WORD( "roml02", 0x800000, 0x200000, CRC(fc846707) SHA1(deaee15ab71927f644dcf576959e2ceaa55bfd44) )
2306 	ROM_LOAD32_WORD( "romh02", 0x800002, 0x200000, CRC(86141c7d) SHA1(22a82cc7d44d655b03867503a83e81f7c82d6c91) )
2307 	ROM_LOAD32_WORD( "roml03", 0xc00000, 0x200000, CRC(b10bf37c) SHA1(6af835b1e2573f0bb2c17057e016a7aecc8fcde8) )
2308 	ROM_LOAD32_WORD( "romh03", 0xc00002, 0x200000, CRC(e01c2a92) SHA1(f53c2db92d62f595d473b1835c46d426f0dbe6b3) )
2309 
2310 	ROM_REGION( 0x1000000, "qs1000", 0 ) /* Music data / QDSP samples (SFX) */
2311 	ROM_LOAD( "romsnd.u15a", 0x000000, 0x200000, CRC(fc89eedc) SHA1(2ce28bdb773cfa5b5660e4c0a9ef454cb658f2da) ) /* MX 29F1610MC-16 flash ROM with no label */
2312 	ROM_LOAD( "qs1001a",     0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
2313 ROM_END
2314 
2315 ROM_START( wyvernwga )
2316 	ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2317 	ROM_LOAD( "rom1.rom", 0x000000, 0x080000, CRC(586881fd) SHA1(d335bbd91def8fa4935eb2375c9b00471a1f40eb) ) /* ST 27c4000D with no labels */
2318 	ROM_LOAD( "rom2.rom", 0x080000, 0x080000, CRC(938049ec) SHA1(cc10944c99ceb388dd4aafc93377c40540861d14) )
2319 
2320 	ROM_REGION( 0x080000, "qs1000:cpu", 0 ) /* QDSP (8052) Code */
2321 	ROM_LOAD( "u7",  0x00000, 0x20000, CRC(00a3f705) SHA1(f0a6bafd16bea53d4c05c8cc108983cbd41e5757) ) /* ST 27C1001 with no labels */
2322 	ROM_RELOAD(      0x20000, 0x20000 )
2323 	ROM_RELOAD(      0x40000, 0x20000 )
2324 	ROM_RELOAD(      0x60000, 0x20000 )
2325 
2326 	ROM_REGION( 0x1000000, "gfx", 0 )  /* gfx data */
2327 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(fb3541b6) SHA1(4f569ac7bde92c5febf005ab73f76552421ec223) ) /* MX 29F1610MC-16 flash ROMs with no labels */
2328 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(516aca48) SHA1(42cf5678eb4c0ee7da2ab0bd66e4e34b2735c75a) )
2329 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(1c764f95) SHA1(ba6ac1376e837b491bc0269f2a1d10577a3d40cb) )
2330 	ROM_LOAD32_WORD( "romh01", 0x400002, 0x200000, CRC(fee42c63) SHA1(a27b5cbca0defa9be85fee91dde1273f445d3372) )
2331 	ROM_LOAD32_WORD( "roml02", 0x800000, 0x200000, CRC(fc846707) SHA1(deaee15ab71927f644dcf576959e2ceaa55bfd44) )
2332 	ROM_LOAD32_WORD( "romh02", 0x800002, 0x200000, CRC(86141c7d) SHA1(22a82cc7d44d655b03867503a83e81f7c82d6c91) )
2333 	ROM_LOAD32_WORD( "roml03", 0xc00000, 0x200000, CRC(b10bf37c) SHA1(6af835b1e2573f0bb2c17057e016a7aecc8fcde8) )
2334 	ROM_LOAD32_WORD( "romh03", 0xc00002, 0x200000, CRC(e01c2a92) SHA1(f53c2db92d62f595d473b1835c46d426f0dbe6b3) )
2335 
2336 	ROM_REGION( 0x1000000, "qs1000", 0 ) /* Music data / QDSP samples (SFX) */
2337 	ROM_LOAD( "romsnd.u15a", 0x000000, 0x200000, CRC(fc89eedc) SHA1(2ce28bdb773cfa5b5660e4c0a9ef454cb658f2da) ) /* MX 29F1610MC-16 flash ROM with no label */
2338 	ROM_LOAD( "qs1001a",     0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
2339 ROM_END
2340 
2341 /*
2342 
2343 Mission Craft
2344 Sun, 2000
2345 
2346 SUN2000
2347 |---------------------------------------------|
2348 |       |------|  SND-ROM1     ROMH00  ROMH01 |
2349 |       |QDSP  |                              |
2350 |       |QS1001|                              |
2351 |DA1311A|------|  SND-ROM2                    |
2352 |       /------\                              |
2353 |       |QDSP  |               ROML00  ROML01 |
2354 |       |QS1000|                              |
2355 |  24MHz\------/                              |
2356 |                                 |---------| |
2357 |                                 | ACTEL   | |
2358 |J               62256            |A40MX04-F| |
2359 |A  *  PRG-ROM2  62256            |PL84     | |
2360 |M   PAL                          |         | |
2361 |M                    62256 62256 |---------| |
2362 |A                    62256 62256             |
2363 |             |-------|           |---------| |
2364 |             |GMS    |           | ACTEL   | |
2365 |  93C46      |30C2116|           |A40MX04-F| |
2366 |             |       | 62256     |PL84     | |
2367 |  HY5118164C |-------| 62256     |         | |
2368 |                                 |---------| |
2369 |SW2                                          |
2370 |SW1                                          |
2371 |   50MHz                              28MHz  |
2372 |---------------------------------------------|
2373 Notes:
2374       GMS30C2116 - based on Hyperstone technology, clock running at 50.000MHz
2375       QS1001A    - Wavetable audio chip, 1M ROM, manufactured by AdMOS (Now LG Semi.), SOP32
2376       QS1000     - Wavetable audio chip manufactured by AdMOS (Now LG Semi.), QFP100
2377                    provides Creative Waveblaster functionality and General Midi functions
2378       SW1        - Used to enter test mode
2379       SW2        - PCB Reset
2380       *          - Empty socket for additional program ROM
2381 
2382 */
2383 
2384 ROM_START( misncrft ) /* Version 2.7 */
2385 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2386 	/* 0 - 0x80000 empty */
2387 	ROM_LOAD( "prg-rom2.bin", 0x80000, 0x80000, CRC(04d22da6) SHA1(1c5be430000a31f21204fb756fadf2523a546b8b) )
2388 
2389 	ROM_REGION( 0x080000, "qs1000:cpu", 0 ) /* QDSP (8052) Code */
2390 	ROM_LOAD( "snd-rom2.us1", 0x00000, 0x20000, CRC(8821e5b9) SHA1(4b8df97bc61b48aa16ed411614fcd7ed939cac33) )
2391 	ROM_RELOAD(      0x20000, 0x20000 )
2392 	ROM_RELOAD(      0x40000, 0x20000 )
2393 	ROM_RELOAD(      0x60000, 0x20000 )
2394 
2395 	ROM_REGION( 0x800000, "gfx", 0 )
2396 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(748c5ae5) SHA1(28005f655920e18c82eccf05c0c449dac16ee36e) )
2397 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(f34ae697) SHA1(2282e3ef2d100f3eea0167b25b66b35a64ddb0f8) )
2398 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(e37ece7b) SHA1(744361bb73905bc0184e6938be640d3eda4b758d) )
2399 	ROM_LOAD32_WORD( "romh01", 0x400002, 0x200000, CRC(71fe4bc3) SHA1(08110b02707e835bf428d343d5112b153441e255) )
2400 
2401 	ROM_REGION( 0x1000000, "qs1000", 0 )
2402 	ROM_LOAD( "snd-rom1.u15", 0x000000, 0x80000, CRC(fb381da9) SHA1(2b1a5447ed856ab92e44d000f27a04d981e3ac52) )
2403 	ROM_LOAD( "qs1001a.u17",  0x200000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
2404 
2405 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
2406 	ROM_LOAD( "93c46-eeprom-misncrft", 0x0000, 0x0080, CRC(83c813eb) SHA1(fe09ea1b4ad959c11fd904e55f7072dc12235491) )
2407 ROM_END
2408 
2409 ROM_START( misncrfta ) /* Version 2.4 */
2410 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2411 	/* 0 - 0x80000 empty */
2412 	ROM_LOAD( "prg-rom2.bin", 0x80000, 0x80000, CRC(059ae8c1) SHA1(2c72fcf560166cb17cd8ad665beae302832d551c) ) // sldh
2413 
2414 	ROM_REGION( 0x080000, "qs1000:cpu", 0 ) /* QDSP (8052) Code */
2415 	ROM_LOAD( "snd-rom2.us1", 0x00000, 0x20000, CRC(8821e5b9) SHA1(4b8df97bc61b48aa16ed411614fcd7ed939cac33) )
2416 	ROM_RELOAD(      0x20000, 0x20000 )
2417 	ROM_RELOAD(      0x40000, 0x20000 )
2418 	ROM_RELOAD(      0x60000, 0x20000 )
2419 
2420 	ROM_REGION( 0x800000, "gfx", 0 )
2421 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(748c5ae5) SHA1(28005f655920e18c82eccf05c0c449dac16ee36e) )
2422 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(f34ae697) SHA1(2282e3ef2d100f3eea0167b25b66b35a64ddb0f8) )
2423 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(e37ece7b) SHA1(744361bb73905bc0184e6938be640d3eda4b758d) )
2424 	ROM_LOAD32_WORD( "romh01", 0x400002, 0x200000, CRC(71fe4bc3) SHA1(08110b02707e835bf428d343d5112b153441e255) )
2425 
2426 	ROM_REGION( 0x1000000, "qs1000", 0 )
2427 	ROM_LOAD( "snd-rom1.u15", 0x000000, 0x80000, CRC(fb381da9) SHA1(2b1a5447ed856ab92e44d000f27a04d981e3ac52) )
2428 	ROM_LOAD( "qs1001a.u17",  0x200000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
2429 
2430 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
2431 	ROM_LOAD( "93c46-eeprom-misncrfta", 0x0000, 0x0080, CRC(9ad27077) SHA1(7f0e98eff9cf6e1b60c19fc1016b888e50b087e0) )
2432 ROM_END
2433 
2434 /*
2435 
2436 Yori Jori Kuk Kuk
2437 
2438 GOLDEN BELL-002
2439 +----------------------------------------------+
2440 |                  CON6* CON7*                 |
2441 |VR1  24MHz         16C550*    7.3728MHz*      |
2442 |      QS1000 QS1001A SND2              27MHz  |
2443 |                           MEM1L +----------+ |
2444 |   SND5                          |QuickLogic| |
2445 |                           MEM1U | 0152 BA  | |
2446 |J                                | QL12X16B | |
2447 |A                                |  XPL84C  | |
2448 |M                           MEM2 +----------+ |
2449 |M        CRAM2                   +----------+ |
2450 |A        CRAM1              MEM3 |QuickLogic| |
2451 |                                 | 0152 BA  | |
2452 |      DRAM1                 MEM6 | QL12X16B | |
2453 |      DRAM2  E1-32T              |  XPL84C  | |
2454 |                            MEM7 +----------+ |
2455 |P2 P1                93C46                    |
2456 |              PRG1    ROML00 ROML01 L02* L03* |
2457 |          GAL1                                |
2458 |CON2 CON3 CON1* 50MHz ROMH00 ROMH01 H02* H03* |
2459 +----------------------------------------------+
2460 
2461 * Denotes unpopulated component
2462 
2463 Notes:
2464 CPU - Hyperstone E1-32T @ 50.000MHz
2465 
2466 OSC - 50MHz, 27MHz, 24MHz & 7.3728MHz (unpopulated)
2467 
2468 QDSP QS1000 @ 24MHz (silkscreened as SND1)
2469      QS1001A Sample ROM (silkscreened as SND3)
2470      SND2 Additional sound samples
2471      SND5 8052 CPU code for QS1000?
2472 
2473 EEPROM - Atmel 93C46 at U6
2474 
2475 DRAM1 - Hynix GM71C18163CJ5 1M x16 EDO DRAM (SOJ44)
2476 CRAMx - M61C256J-15 32K x8 SRAM (SOJ28)
2477 MEMx  - M61C256J-15 32K x8 SRAM (SOJ28)
2478 
2479  P1 - Reset push button
2480  P2 - Setup push button
2481 VR1 - Volume adjust pot
2482 
2483 16C550 - Asynchronous Comm Element with Autoflow Conrol (all components related to the 16C500 are unpopulated)
2484          7.3728MHz OSC connected to XIN & XOUT of 16C550
2485          CON6 & CON7 connected to 16C550
2486 
2487 CON1 - 20 pin connector (unpopulated)
2488 CON2 - 7 pin connector silkscreened GIFT
2489 CON3 - 6 pin connector silkscreened HOPPER
2490 CON6 - 4 pin connector silkscreened IN (unpopulated)
2491 CON7 - 4 pin connector silkscreened OUT (unpopulated)
2492 
2493 ROMs:
2494     PRG1            - ST M27C160 16MBit DIP42 EPROM
2495     SND2            - ST M27C160 16MBit DIP42 EPROM
2496     SND5            - ST M27C1001 1MBit DIP32 EPROM
2497     ROML00 & ROMH00 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2498     ROML01 & ROMH01 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2499     ROML02 & ROMH02 - Unpopulated
2500     ROML03 & ROMH03 - Unpopulated
2501 
2502 */
2503 
2504 ROM_START( yorijori )
2505 	ROM_REGION32_BE( 0x200000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2506 	ROM_LOAD( "prg1", 0x000000, 0x200000, CRC(0e04eb40) SHA1(0cec9dc91aaf9cf7c459c7baac200cf0fcfddc18) )
2507 
2508 	ROM_REGION( 0x080000, "qs1000:cpu", 0 ) /* QDSP (8052) Code */
2509 	ROM_LOAD( "snd5", 0x00000, 0x20000, CRC(79067367) SHA1(a8f0c02dd616ff8c5fb49dea1a116fea2aced19c) )
2510 	ROM_RELOAD(      0x20000, 0x20000 )
2511 	ROM_RELOAD(      0x40000, 0x20000 )
2512 	ROM_RELOAD(      0x60000, 0x20000 )
2513 
2514 	ROM_REGION( 0x800000, "gfx", 0 )
2515 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(9299ce36) SHA1(cd8a9e2619da93e2015704230e8189a6ae52de69) )
2516 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(16584ff2) SHA1(69dce8c33b246b4327b330233116c1b72a8b7e84) )
2517 	ROM_LOAD32_WORD( "roml01", 0x400000, 0x200000, CRC(b5d1892f) SHA1(20afcd00a506ec0fd1c4fffb2d9c853c8dc61e2e) )
2518 	ROM_LOAD32_WORD( "romh01", 0x400002, 0x200000, CRC(fe0485ef) SHA1(bd1a26aa386803df8e8e137ea5d5a2cdd6ad1197) )
2519 
2520 	ROM_REGION( 0x1000000, "qs1000", 0 )
2521 	ROM_LOAD( "snd2", 0x000000, 0x200000, CRC(8d9a8795) SHA1(482acb3beafc9baa43284c54ac36086c57098465) )
2522 	ROM_LOAD( "qs1001a.snd3",  0x200000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
2523 ROM_END
2524 
2525 /*
2526 
2527 Final Godori (c) SemiCom
2528 
2529 SEMICOM-003a
2530 +---------------------------------------------+
2531 |                     +------+                |
2532 |            YM3012   |  U7  |                |
2533 | VR1                 +------+                |
2534 |            YM2151   M6295                   |
2535 |                                             |
2536 |            +-----+      MEM1l  +----------+ |
2537 |            |CRAM2|             |QuickLogic| |
2538 |            +-----+             | QL12X16B | |
2539 |            +-----+             | XPL84C   | |
2540 |  +-------+ |CRAM2|      MEM1U  |          | |
2541 |J | DRAM1 | +-----+             +----------+ |
2542 |A +-------+ +----------+ MEM3                |
2543 |M +-------+ |          |        +----------+ |
2544 |M | DRAM2 | |HyperStone| MEM7   |QuickLogic| |
2545 |A +-------+ |  E1-32T  |        | QL12X16B | |
2546 |            |          | MEM6   | XPL84C   | |
2547 |     PAL    +----------+        |          | |
2548 |                         MEM2   +----------+ |
2549 |SW1 SW2       61L256S                        |
2550 |        ROM0*  +--------+ +--------+  28MHz  |
2551 |        ROM1   | ROML00 | | ROMH00 |  +-----+|
2552 |               +--------+ +--------+  |93C46||
2553 |   50MHz         ROML01*    ROMH01*   +-----+|
2554 |                                             |
2555 +---------------------------------------------+
2556 
2557 ROM1 & U7 are 27C040
2558 ROML00 & ROMH00 are MX 29F1610MC flash ROMs
2559 ROM0, ROML01 & ROMH01 are unpopulated
2560 YM2151, YM3012 & M6295 badged as BS901, BS902 & U6295
2561 CRAM are MCM6206BAEJ15
2562 DRAM are KM416C1204AJ-6
2563 MEM are MCM6206BAEJ15
2564 61L256S - 32K x 8 bit High Speed CMOS SRAM (game's so called "Backup Data")
2565 
2566 SW1 is the reset button
2567 SW2 is the setup button
2568 VR1 is the volume adjust pot
2569 
2570 */
2571 
2572 ROM_START( finalgdr ) /* version 2.20.5915, Korea only */
2573 	ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2574 	/* rom0 empty */
2575 	ROM_LOAD( "rom1", 0x080000, 0x080000, CRC(45815931) SHA1(80ba7a366994e40a1f520ea18fad82e6b068b279) )
2576 
2577 	ROM_REGION( 0x800000, "gfx", 0 )  /* gfx data */
2578 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(8334459d) SHA1(70ad560dada8aa8ce192e5307bd805744b82fcfe) )
2579 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(f28578a5) SHA1(a5c7b17aff101f1f4f52657d0567a6c9d12a178d) )
2580 	/* roml01 empty */
2581 	/* romh01 empty */
2582 
2583 	/* $00000-$20000 stays the same in all sound banks, */
2584 	/* the second half of the bank is what gets switched */
2585 	ROM_REGION( 0x80000, "oki1", 0 ) /* Oki Samples */
2586 	ROM_LOAD( "u7", 0x000000, 0x080000, CRC(080f61f8) SHA1(df3764b1b07f9fc38685e3706b0f834f62088727) )
2587 ROM_END
2588 
2589 /*
2590 
2591 Mr. Kicker (c) SemiCom
2592 
2593 SEMICOM-003b
2594 +---------------------------------------------+
2595 |                     +------+                |
2596 |            YM3012   |  U7  |                |
2597 | VR1                 +------+                |
2598 |            YM2151   M6295                   |
2599 |                                             |
2600 |            +-----+      MEM1l  +----------+ |
2601 |            |CRAM2|             |QuickLogic| |
2602 |            +-----+             | QL12X16B | |
2603 |            +-----+             | XPL84C   | |
2604 |  +-------+ |CRAM2|      MEM1U  |          | |
2605 |J | DRAM1 | +-----+             +----------+ |
2606 |A +-------+ +----------+ MEM3                |
2607 |M +-------+ |          |        +----------+ |
2608 |M | DRAM2 | |HyperStone| MEM7   |QuickLogic| |
2609 |A +-------+ |  E1-32T  |        | QL12X16B | |
2610 |            |          | MEM6   | XPL84C   | |
2611 |     PAL    +----------+        |          | |
2612 |                         MEM2   +----------+ |
2613 |SW1 SW2       61L256S                        |
2614 |        ROM0*  +--------+ +--------+  28MHz  |
2615 |        ROM1   | ROML00 | | ROMH00 |  +-----+|
2616 |               +--------+ +--------+  |93C46||
2617 |   50MHz         ROML01*    ROMH01*   +-----+|
2618 |                                             |
2619 +---------------------------------------------+
2620 
2621 ROM1 & U7 are 27C040
2622 ROML00 & ROMH00 are MX 29F1610MC flash ROMs
2623 ROM0, ROML01 & ROMH01 are unpopulated
2624 YM2151, YM3012 & M6295 badged as U6651, U6612 & AD-65
2625 CRAM are MCM6206BAEJ15
2626 DRAM are KM416C1204AJ-6
2627 MEM are MCM6206BAEJ15
2628 61L256S - 32K x 8 bit High Speed CMOS SRAM (game's so called "Backup Data")
2629 
2630 SW1 is the reset button
2631 SW2 is the setup button
2632 VR1 is the volume adjust pot
2633 
2634 
2635 F-E1-16-010
2636 +-----------------------------------------------+
2637 |     VR1          YM3012  VROM1                |
2638 |                  YM2151  M6295   ROML03 ROMU03|
2639 |               CRAM2              ROML02 ROMU02|
2640 |               CRAM1              ROML01 ROMU01|
2641 |               MEM1L              ROML00 ROMU00|
2642 |J              MEM1U                           |
2643 |A              MEM2  +----------++----------+  |
2644 |M                    |          ||          |  |
2645 |M              MEM3  |Quicklogic||Quicklogic| 2|
2646 |A                    | QL2003-  || QL2003-  | 8|
2647 |               MEM6  | XPL84C   || XPL84C   | M|
2648 |                     |          ||          | H|
2649 |               MEM7  +----------++----------+ z|
2650 |                      GAL                      |
2651 |    93C46                       ROM1*          |
2652 |P1 P2   50MHz E1-16T   DRAM1    ROM2           |
2653 +-----------------------------------------------+
2654 
2655 Notes:
2656 CPU - Hyperstone E1-16T @ 50.000MHz
2657 
2658 DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
2659 CRAMx - W24M257AK-15 32K x8 SRAM (SOJ28)
2660 MEMx  - UM61256FK-15 32K x8 SRAM (SOJ28)
2661 
2662 Oki M6295 rebaged as AD-65
2663 YM3012/YM2151 rebaged as BS902/KA51
2664 
2665  P1 - Reset push button
2666  P2 - Setup push button
2667 VR1 - Volume adjust pot
2668 
2669 ROMs:
2670     ROML00 & ROMH00 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2671     ROML01 & ROMH01 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2672     ROML02 & ROMH02 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2673     ROML03 & ROMH03 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2674     VROM1           - MX 27C2000 2MBit DIP32 EPROM
2675   * ROM1            - Unpopulated space for DIP32 EPROM (up to 4MBit)
2676     ROM2            - 27C040 4MBit DIP32 EPROM
2677 
2678 */
2679 
2680 ROM_START( mrkickera )
2681 	ROM_REGION32_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2682 	/* rom0 empty */
2683 	ROM_LOAD( "2-semicom.rom1", 0x080000, 0x080000, CRC(d3da29ca) SHA1(b843c650096a1c6d50f99e354ec0c93eb4406c5b) ) /* SEMICOM-003b PCB */
2684 
2685 	ROM_REGION( 0x800000, "gfx", 0 )  /* gfx data */
2686 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(c677aac3) SHA1(356073a29260e8e6c29dd12b2113b30140c6108c) )
2687 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(b6337d4a) SHA1(2f46e2933af7fd0f71083900d5e6e4f602ab4c66) )
2688 	/* roml01 empty */
2689 	/* romh01 empty */
2690 
2691 	/* $00000-$20000 stays the same in all sound banks, */
2692 	/* the second half of the bank is what gets switched */
2693 	ROM_REGION( 0x80000, "oki1", 0 ) /* Oki Samples */
2694 	ROM_LOAD( "at27c040.u7", 0x000000, 0x080000, CRC(e8141fcd) SHA1(256fd1987030e0a1df0a66a228c1fea996cda686) ) /* Mask ROM */
2695 
2696 	ROM_REGION16_BE( 0x80, "eeprom", 0 ) /* Default EEPROM (it doesn't boot without and the game code crashes) (game also refuses to boot if program attempts to rewrite it, CPU bug or protection?) */
2697 	ROM_LOAD( "eeprom-mrkicker.bin", 0x0000, 0x0080, CRC(87afb8f7) SHA1(444203b793c1d7929fc5916f18b510198719cd38) )
2698 ROM_END
2699 
2700 ROM_START( mrkicker )
2701 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2702 	/* rom1 empty */
2703 	ROM_LOAD( "3-semicom.rom2", 0x080000, 0x080000, CRC(3f7fa08b) SHA1(dbffd44d8387e6ed1a4b5ec85ccf64d69a108d88) ) /* F-E1-16-010 PCB */
2704 
2705 	ROM_REGION( 0x800000, "gfx", 0 )  /* gfx data */
2706 	ROM_LOAD32_WORD( "roml00", 0x000000, 0x200000, CRC(c677aac3) SHA1(356073a29260e8e6c29dd12b2113b30140c6108c) )
2707 	ROM_LOAD32_WORD( "romh00", 0x000002, 0x200000, CRC(b6337d4a) SHA1(2f46e2933af7fd0f71083900d5e6e4f602ab4c66) )
2708 	/* roml01 empty */
2709 	/* romh01 empty */
2710 	/* roml02 empty */
2711 	/* romh02 empty */
2712 	/* roml03 empty */
2713 	/* romh03 empty */
2714 
2715 	/* $00000-$20000 stays the same in all sound banks, */
2716 	/* the second half of the bank is what gets switched */
2717 	ROM_REGION( 0x80000, "oki1", 0 ) /* Oki Samples */
2718 	ROM_LOAD( "11-semicom.vrom1", 0x000000, 0x080000, CRC(e8141fcd) SHA1(256fd1987030e0a1df0a66a228c1fea996cda686) ) /* same data as above */
2719 ROM_END
2720 
2721 /*
2722 Age Of Heroes - Silkroad 2
2723 Unico, 2001
2724 
2725 PCB Layout
2726 ----------
2727 
2728 |----------------------------------------|
2729 |UPC1241H  BA4558     32MHz         G05  |
2730 |TL084  YM3012  ROM3   |--------|   G06  |
2731 |VOL ULN2003  M6295(1) |A40MX04 |   G07  |
2732 |       YM2151  ROM4   |PL84    |   G08  |
2733 |     93C46   M6295(2) |        |        |
2734 |J  3.579545MHz 62256  |--------|        |
2735 |A     HY18CV8  62256               G09  |
2736 |M     GAL22V10           EPM7128   G10  |
2737 |M      |--------|20MHz             G11  |
2738 |A      |        |                  G12  |
2739 |       |E1-32XN |                       |
2740 |RESET  |        | 62256            62256|
2741 |TEST   |--------| 62256            62256|
2742 |ROM1    HY5118164                  62256|
2743 |ROM2    HY5118164                  62256|
2744 |----------------------------------------|
2745 Notes:
2746       E1-32XN  - Hyperstone CPU, clock input 20.000MHz (QFP160)
2747       A40MX04  - Actel A40MX04-F FPGA (PLCC84)
2748       EPM7128  - Altera MAX EPM7128TC100 CPLD (TQFP100)
2749       YM2151   - clock 3.579545MHz (DIP24)
2750       M6295(1) - clock 4.000MHz [32/8] pin 7 HIGH (QFP44)
2751       M6295(2) - clock 1.000MHz [32/32] pin 7 HIGH (QFP44)
2752       YM3012   - clock 1.7897725MHz [3.579545/2] (DIP16)
2753       TL084    - Texas Instruments TL084 Quad JFET-Input General-Purpose Operational Amplifier (DIP8)
2754       BA4558   - Rohm BA4558 Dual Operational Amplifier (DIP8)
2755       93C46    - 128 bytes x8 EEPROM (DIP8)
2756       HY5118164- Hynix 1M x16 EDO DRAM (SOJ42)
2757       62256    - 32k x8 SRAM (DIP28)
2758       ROM1/2   - Main program ROMs, type MX29F1610MC-12 (SOP44)
2759       ROM3/4   - M6295 Sound Data ROMs, ROM3 = 27C020, ROM4 = 27C040 (both DIP32)
2760       G05-G12  - GFX Data ROMs, type Intel E28F640J3A120 64M x8 FlashROM (TSOP56)
2761       VSync    - 59.185Hz   \
2762       HSync    - 15.625kHz / via EL4583 & TTi PFM1300
2763 */
2764 
2765 ROM_START( aoh )
2766 	ROM_REGION32_BE( 0x400000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2767 	ROM_LOAD16_WORD_SWAP( "rom1", 0x000000, 0x200000, CRC(2e55ff55) SHA1(b2b7605b87ee609dfbc7c21dfae0ef8d847019f0) )
2768 	ROM_LOAD16_WORD_SWAP( "rom2", 0x200000, 0x200000, CRC(50f8a409) SHA1(a8171b7cf59dd01de1e512ab21607b4f330f40b8) )
2769 
2770 	ROM_REGION( 0x4000000, "gfx", 0 ) /* 16x16x8 Sprites */
2771 	ROM_LOAD32_WORD( "g05", 0x0000002, 0x800000, CRC(64c8f493) SHA1(d487a74c813abbd0a612f8346eed8a7c3ff3e84e) )
2772 	ROM_LOAD32_WORD( "g09", 0x0000000, 0x800000, CRC(c359febb) SHA1(7955385748e24dd076bc4f954b193a53c0a729c5) )
2773 	ROM_LOAD32_WORD( "g06", 0x1000002, 0x800000, CRC(ffbc9fe5) SHA1(5e0e5cfdf6af23db0733c9fedee9c5f9ccde1109) )
2774 	ROM_LOAD32_WORD( "g10", 0x1000000, 0x800000, CRC(08217573) SHA1(10cecdfc3a1ef835a62325b023d3bca8d0aea67d) )
2775 	ROM_LOAD32_WORD( "g07", 0x2000002, 0x800000, CRC(5cb3c86a) SHA1(2e89f467c1a220f2510977677215e040295c3dd0) )
2776 	ROM_LOAD32_WORD( "g11", 0x2000000, 0x800000, CRC(5f0461b8) SHA1(a0ac37d9a357e69367b8fee68bc358bfea5ecca0) )
2777 	ROM_LOAD32_WORD( "g08", 0x3000002, 0x800000, CRC(1fd08aa0) SHA1(376a91220cd6e63418b04d590b232bb1079a40c7) )
2778 	ROM_LOAD32_WORD( "g12", 0x3000000, 0x800000, CRC(e437b35f) SHA1(411d2926d619fba057476864f0e580f608830522) )
2779 
2780 	ROM_REGION( 0x40000, "oki1", 0 ) /* Oki Samples */
2781 	ROM_LOAD( "rom3", 0x00000, 0x40000, CRC(db8cb455) SHA1(6723b4018208d554bd1bf1e0640b72d2f4f47302) )
2782 
2783 	/* $00000-$20000 stays the same in all sound banks, */
2784 	/* the second half of the bank is what gets switched */
2785 	ROM_REGION( 0x80000, "oki2", 0 ) /* Oki Samples */
2786 	ROM_LOAD( "rom4", 0x00000, 0x80000, CRC(bba47755) SHA1(e6eeb5f64eaa88a74536119b731a76921e79f8ff) )
2787 ROM_END
2788 
2789 /*
2790 
2791 Boong-Ga Boong-Ga (Spank'em!)
2792 Taff System, 2001
2793 
2794 TAFF SYSTEM
2795 +-----------------------------------------------+
2796 |     VR1               VROM2                   |
2797 |               YM3012  VROM1  L04*L09* U04*U09*|
2798 |               YM2151  M6295  L03 L08* U03 U08*|
2799 |               CRAM1          L02 L07  U02 U07 |
2800 |               CRAM2          L01 L06  U01 U06 |
2801 |               MEM1L          L00 L05  U00 U05 |
2802 |J              MEM1U                           |
2803 |A              MEM3  +----------++----------+  |
2804 |M                    |          ||          |  |
2805 |M              MEM2  |Quicklogic||Quicklogic|  |
2806 |A                    | QL2003-  || QL2003-  |  |
2807 |               MEM7  | XPL84C   || XPL84C   |  |
2808 |                     |          ||          |  |
2809 |               MEM6  +----------++----------+  |
2810 |           M3     93C46        GAL1     280MHz |
2811 |           M2                                  |
2812 |CN2        M1  P1   DRAM1  E1-16T  ROM0  ROM2* |
2813 |CN3  AL00 AL01 P2          50MHz   ROM1  ROM3* |
2814 +-----------------------------------------------+
2815 
2816 NOTE: All L0x & H0x are silkscreened on the PCB as ROML0x & ROMH0x
2817 
2818 Notes:
2819 CPU - Hyperstone E1-16T @ 50.000MHz
2820 
2821 DRAM1 - LG Semi GM71C18163 1M x16 EDO DRAM (SOJ44)
2822 CRAMx - W24M257AK-15 32K x8 SRAM (SOJ28)
2823 MEMx  - UM61256FK-15 32K x8 SRAM (SOJ28)
2824 GAL1  - GAL22V10B
2825 
2826 Oki M6295 rebaged as AD-65
2827 YM3012/YM2151
2828 
2829  P1 - Reset push button
2830  P2 - Setup push button
2831 VR1 - Volume adjust pot
2832  M1 - 4-Pin header silkscreened MOTOR1
2833  M2 - 4-Pin header silkscreened MOTOR2
2834  M3 - 4-Pin header silkscreened MOTOR3
2835 CN2 - 4-Pin Header
2836 CN3 - 2-Pin Header
2837 AL00 - 10-Pin Header
2838 AL01 - 10-Pin Header
2839 
2840 ROMs:
2841     ROML00/ROMH00 & ROML05/ROMH05 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2842     ROML01/ROMH01 & ROML06/ROMH06 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2843     ROML02/ROMH02 & ROML07/ROMH07 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2844     ROML03/ROMH03                 - Macronix MX29F1610MC-12 SOP44 16MBit FlashROM
2845   * ROML08/ROMH08                 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2846   * ROML04/ROMH04 & ROML09/ROMH09 - Unpopulated space for MX29F1610MC-12 SOP44 16MBit FlashROM
2847     VROM1/VROM2                   - ST M27C4001 4MBit DIP32 EPROM
2848     ROM0/ROM1                     - ST M27C4001 4MBit DIP32 EPROM
2849   * ROM2/ROM3                     - Unpopulated space for DIP32 EPROM (up to 4MBit)
2850 
2851 */
2852 
2853 ROM_START( boonggab )
2854 	ROM_REGION16_BE( 0x100000, "maincpu", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
2855 	/* rom2 empty */
2856 	/* rom3 empty */
2857 	ROM_LOAD( "2.rom0",       0x80000, 0x80000, CRC(3395541b) SHA1(4e822a52d6070bde232285e7ad8fbe74594bbf28) )
2858 	ROM_LOAD( "1.rom1",       0x00000, 0x80000, CRC(50522da1) SHA1(28f92fc818513d7a4934b9f8e5d39243d720cc80) )
2859 
2860 	ROM_REGION( 0x2000000, "gfx", ROMREGION_ERASE00 )  /* 16x16x8 Sprites */
2861 	ROM_LOAD32_WORD( "boong-ga.roml00", 0x0000000, 0x200000, CRC(18be5f92) SHA1(abccc578e5e9652a7829165b485776671938b9d9) )
2862 	ROM_LOAD32_WORD( "boong-ga.romu00", 0x0000002, 0x200000, CRC(0158ba9e) SHA1(b6cb699f0779b26d578043c42a0ce14a59fd8ac5) )
2863 	ROM_LOAD32_WORD( "boong-ga.roml05", 0x0400000, 0x200000, CRC(76d60553) SHA1(13a47aed2e7213be98e55a938887a3c2fb314fbe) )
2864 	ROM_LOAD32_WORD( "boong-ga.romu05", 0x0400002, 0x200000, CRC(35ee8fb5) SHA1(79bd1775087bfaf7624978cec4e912553ca1f027) )
2865 	ROM_LOAD32_WORD( "boong-ga.roml01", 0x0800000, 0x200000, CRC(636e9d5d) SHA1(d478ec905d6e56e4c46889430d8c32de98e9dc14) )
2866 	ROM_LOAD32_WORD( "boong-ga.romu01", 0x0800002, 0x200000, CRC(b8dcf6b7) SHA1(8ea590f92832e6b6a4c27fb1f2aa18bb000f41e0) )
2867 	ROM_LOAD32_WORD( "boong-ga.roml06", 0x0c00000, 0x200000, CRC(8dc521b7) SHA1(37021bb05a582b80a4883bddf677c1d41e6777d2) )
2868 	ROM_LOAD32_WORD( "boong-ga.romu06", 0x0c00002, 0x200000, CRC(f6b83270) SHA1(7971fdb99987ac701c76958a626b0cb75ba31451) )
2869 	ROM_LOAD32_WORD( "boong-ga.roml02", 0x1000000, 0x200000, CRC(d0661c69) SHA1(94f95df19b448565642db8c5aafb2532c0febc37) )
2870 	ROM_LOAD32_WORD( "boong-ga.romu02", 0x1000002, 0x200000, CRC(eac01eb8) SHA1(c730078d8422d566378d6a4b0deb42d2814f0dab) )
2871 	ROM_LOAD32_WORD( "boong-ga.roml07", 0x1400000, 0x200000, CRC(3301813a) SHA1(61997f07ca516eb77c9d9478b42950fd6fc42ac5) )
2872 	ROM_LOAD32_WORD( "boong-ga.romu07", 0x1400002, 0x200000, CRC(3f1c3682) SHA1(969491b0d3be054ddc199db2ced38c76c8f561ee) )
2873 	ROM_LOAD32_WORD( "boong-ga.roml03", 0x1800000, 0x200000, CRC(4d4260b3) SHA1(11a5d0b472b783094d44a5c931ee1cbe816b2a05) )
2874 	ROM_LOAD32_WORD( "boong-ga.romu03", 0x1800002, 0x200000, CRC(4ba00032) SHA1(de9e0640e80204f4906576b20eeaa17f03694b3f) )
2875 	/* roml08 empty */
2876 	/* romu08 empty */
2877 	/* roml04 empty */
2878 	/* romu04 empty */
2879 	/* roml09 empty */
2880 	/* romu09 empty */
2881 
2882 	/* $00000-$20000 stays the same in all sound banks, */
2883 	/* the second half of the bank is what gets switched */
2884 	ROM_REGION( 0x100000, "oki1", 0 ) /* Oki Samples */
2885 	ROM_LOAD( "3.vrom1",      0x00000, 0x80000, CRC(0696bfcb) SHA1(bba61f3cae23271215bbbf8214ce3b73459d5da5) )
2886 	ROM_LOAD( "4.vrom2",      0x80000, 0x80000, CRC(305c2b16) SHA1(fa199c4cd4ebb952d934e3863fca8740eeba9294) )
2887 ROM_END
2888 
2889 bool vamphalf_state::irq_active()
2890 {
2891 	const u32 FCR = m_maincpu->state_int(E132XS_FCR);
2892 	if (!(FCR & (1 << 29))) // int 2 (irq 4)
2893 		return true;
2894 	else
2895 		return false;
2896 }
2897 
banked_oki(int chip)2898 void vamphalf_state::banked_oki(int chip)
2899 {
2900 	assert((m_okiregion[chip].found()) && (m_okibank.found()));
2901 	u8 *ROM = m_okiregion[chip]->base();
2902 	const u32 size = m_okiregion[chip]->bytes();
2903 	if (size > 0x40000)
2904 		m_okibank->configure_entries(0, size / 0x20000, &ROM[0], 0x20000);
2905 	else
2906 		m_okibank->set_base(&ROM[0x20000]);
2907 }
2908 
vamphalf_speedup_r()2909 u16 vamphalf_state::vamphalf_speedup_r()
2910 {
2911 	if (m_maincpu->pc() == 0x82ec)
2912 	{
2913 		if (irq_active())
2914 			m_maincpu->spin_until_interrupt();
2915 		else
2916 			m_maincpu->eat_cycles(50);
2917 	}
2918 
2919 	return m_wram[0x4a7b8 / 2];
2920 }
2921 
vamphalfr1_speedup_r()2922 u16 vamphalf_state::vamphalfr1_speedup_r()
2923 {
2924 	if (m_maincpu->pc() == 0x82ec)
2925 	{
2926 		if (irq_active())
2927 			m_maincpu->spin_until_interrupt();
2928 		else
2929 			m_maincpu->eat_cycles(50);
2930 	}
2931 
2932 	return m_wram[0x4a468 / 2];
2933 }
2934 
vamphafk_speedup_r()2935 u16 vamphalf_state::vamphafk_speedup_r()
2936 {
2937 	if (m_maincpu->pc() == 0x82ec)
2938 	{
2939 		if (irq_active())
2940 			m_maincpu->spin_until_interrupt();
2941 		else
2942 			m_maincpu->eat_cycles(50);
2943 	}
2944 
2945 	return m_wram[0x4a648 / 2];
2946 }
2947 
misncrft_speedup_r()2948 u16 vamphalf_qdsp_state::misncrft_speedup_r()
2949 {
2950 	if (m_maincpu->pc() == 0xff5a)
2951 	{
2952 		if (irq_active())
2953 			m_maincpu->spin_until_interrupt();
2954 		else
2955 			m_maincpu->eat_cycles(50);
2956 	}
2957 
2958 	return m_wram[0x741e8 / 2];
2959 }
2960 
misncrfta_speedup_r()2961 u16 vamphalf_qdsp_state::misncrfta_speedup_r()
2962 {
2963 	if (m_maincpu->pc() == 0xecd6)
2964 	{
2965 		if (irq_active())
2966 			m_maincpu->spin_until_interrupt();
2967 		else
2968 			m_maincpu->eat_cycles(50);
2969 	}
2970 
2971 	return m_wram[0x72e2c / 2];
2972 }
2973 
coolmini_speedup_r()2974 u16 vamphalf_state::coolmini_speedup_r()
2975 {
2976 	if (m_maincpu->pc() == 0x75f88)
2977 	{
2978 		if (irq_active())
2979 			m_maincpu->spin_until_interrupt();
2980 		else
2981 			m_maincpu->eat_cycles(50);
2982 	}
2983 
2984 	return m_wram[0xd2df8 / 2];
2985 }
2986 
coolminii_speedup_r()2987 u16 vamphalf_state::coolminii_speedup_r()
2988 {
2989 	if (m_maincpu->pc() == 0x76024)
2990 	{
2991 		if (irq_active())
2992 			m_maincpu->spin_until_interrupt();
2993 		else
2994 			m_maincpu->eat_cycles(50);
2995 	}
2996 
2997 	return m_wram[0xd30a8 / 2];
2998 }
2999 
suplup_speedup_r()3000 u16 vamphalf_state::suplup_speedup_r()
3001 {
3002 	if (m_maincpu->pc() == 0xaf184)
3003 	{
3004 		if (irq_active())
3005 			m_maincpu->spin_until_interrupt();
3006 		else
3007 			m_maincpu->eat_cycles(50);
3008 	}
3009 
3010 	return m_wram[0x11605c / 2];
3011 }
3012 
luplup_speedup_r()3013 u16 vamphalf_state::luplup_speedup_r()
3014 {
3015 	if (m_maincpu->pc() == 0xaefac)
3016 	{
3017 		if (irq_active())
3018 			m_maincpu->spin_until_interrupt();
3019 		else
3020 			m_maincpu->eat_cycles(50);
3021 	}
3022 
3023 	return m_wram[0x115e84 / 2];
3024 }
3025 
luplup29_speedup_r()3026 u16 vamphalf_state::luplup29_speedup_r()
3027 {
3028 	if (m_maincpu->pc() == 0xae6c0)
3029 	{
3030 		if (irq_active())
3031 			m_maincpu->spin_until_interrupt();
3032 		else
3033 			m_maincpu->eat_cycles(50);
3034 	}
3035 
3036 	return m_wram[0x113f08 / 2];
3037 }
3038 
luplup10_speedup_r()3039 u16 vamphalf_state::luplup10_speedup_r()
3040 {
3041 	if (m_maincpu->pc() == 0xb1128)
3042 	{
3043 		if (irq_active())
3044 			m_maincpu->spin_until_interrupt();
3045 		else
3046 			m_maincpu->eat_cycles(50);
3047 	}
3048 
3049 	return m_wram[0x113b78 / 2];
3050 }
3051 
puzlbang_speedup_r()3052 u16 vamphalf_state::puzlbang_speedup_r()
3053 {
3054 	if (m_maincpu->pc() == 0xae6cc)
3055 	{
3056 		if (irq_active())
3057 			m_maincpu->spin_until_interrupt();
3058 		else
3059 			m_maincpu->eat_cycles(50);
3060 	}
3061 
3062 	return m_wram[0x113f14 / 2];
3063 }
3064 
puzlbanga_speedup_r()3065 u16 vamphalf_state::puzlbanga_speedup_r()
3066 {
3067 	if (m_maincpu->pc() == 0xae6cc)
3068 	{
3069 		if (irq_active())
3070 			m_maincpu->spin_until_interrupt();
3071 		else
3072 			m_maincpu->eat_cycles(50);
3073 	}
3074 
3075 	return m_wram[0x113ecc / 2];
3076 }
3077 
wivernwg_speedup_r()3078 u32 vamphalf_qdsp_state::wivernwg_speedup_r()
3079 {
3080 	if (m_maincpu->pc() == 0x10766)
3081 	{
3082 		if (irq_active())
3083 			m_maincpu->spin_until_interrupt();
3084 		else
3085 			m_maincpu->eat_cycles(50);
3086 	}
3087 
3088 	return m_wram32[0xb4cc4 / 4];
3089 }
3090 
wyvernwg_speedup_r()3091 u32 vamphalf_qdsp_state::wyvernwg_speedup_r()
3092 {
3093 	if (m_maincpu->pc() == 0x10766)
3094 	{
3095 		if (irq_active())
3096 			m_maincpu->spin_until_interrupt();
3097 		else
3098 			m_maincpu->eat_cycles(50);
3099 	}
3100 
3101 	return m_wram32[0xb56f4 / 4];
3102 }
3103 
wyvernwga_speedup_r()3104 u32 vamphalf_qdsp_state::wyvernwga_speedup_r()
3105 {
3106 	if (m_maincpu->pc() == 0x10766)
3107 	{
3108 		if (irq_active())
3109 			m_maincpu->spin_until_interrupt();
3110 		else
3111 			m_maincpu->eat_cycles(50);
3112 	}
3113 
3114 	return m_wram32[0xb74f0 / 4];
3115 }
3116 
finalgdr_speedup_r()3117 u32 vamphalf_nvram_state::finalgdr_speedup_r()
3118 {
3119 	if (m_maincpu->pc() == 0x1c20c)
3120 	{
3121 		if (irq_active())
3122 			m_maincpu->spin_until_interrupt();
3123 		else
3124 			m_maincpu->eat_cycles(50);
3125 	}
3126 
3127 	return m_wram32[0x5e870 / 4];
3128 }
3129 
mrkickera_speedup_r()3130 u32 vamphalf_nvram_state::mrkickera_speedup_r()
3131 {
3132 	if (m_maincpu->pc() == 0x46a30)
3133 	{
3134 		if (irq_active())
3135 			m_maincpu->spin_until_interrupt();
3136 		else
3137 			m_maincpu->eat_cycles(50);
3138 	}
3139 
3140 	return m_wram32[0x701a0 / 4];
3141 }
3142 
mrkicker_speedup_r()3143 u16 vamphalf_state::mrkicker_speedup_r()
3144 {
3145 	if (m_maincpu->pc() == 0x41ec6)
3146 	{
3147 		if (irq_active())
3148 			m_maincpu->spin_until_interrupt();
3149 		else
3150 			m_maincpu->eat_cycles(50);
3151 	}
3152 
3153 	return m_wram[0x63fc0 / 2];
3154 }
3155 
dquizgo2_speedup_r()3156 u16 vamphalf_state::dquizgo2_speedup_r()
3157 {
3158 	if (m_maincpu->pc() == 0xaa630)
3159 	{
3160 		if (irq_active())
3161 			m_maincpu->spin_until_interrupt();
3162 		else
3163 			m_maincpu->eat_cycles(50);
3164 	}
3165 
3166 	return m_wram[0xcdde8 / 2];
3167 }
3168 
aoh_speedup_r()3169 u32 vamphalf_state::aoh_speedup_r()
3170 {
3171 	if (m_maincpu->pc() == 0xb994 || m_maincpu->pc() == 0xba40)
3172 	{
3173 		m_maincpu->eat_cycles(500);
3174 	}
3175 
3176 	return m_wram32[0x28a09c / 4];
3177 }
3178 
jmpbreak_speedup_r()3179 u16 vamphalf_state::jmpbreak_speedup_r()
3180 {
3181 	if (m_maincpu->pc() == 0x984a)
3182 	{
3183 		if (irq_active())
3184 			m_maincpu->spin_until_interrupt();
3185 		else
3186 			m_maincpu->eat_cycles(50);
3187 	}
3188 
3189 	return m_wram[0x906f4 / 2];
3190 }
3191 
jmpbreaka_speedup_r()3192 u16 vamphalf_state::jmpbreaka_speedup_r()
3193 {
3194 	if (m_maincpu->pc() == 0x909ac)
3195 	{
3196 		if (irq_active())
3197 			m_maincpu->spin_until_interrupt();
3198 		else
3199 			m_maincpu->eat_cycles(50);
3200 	}
3201 
3202 	return m_wram[0xe1dfc / 2];
3203 }
3204 
poosho_speedup_r()3205 u16 vamphalf_state::poosho_speedup_r()
3206 {
3207 	if (m_maincpu->pc() == 0xa8c78)
3208 	{
3209 		if (irq_active())
3210 			m_maincpu->spin_until_interrupt();
3211 		else
3212 			m_maincpu->eat_cycles(50);
3213 	}
3214 
3215 	return m_wram[0xc8b58 / 2];
3216 }
3217 
newxpang_speedup_r()3218 u16 vamphalf_state::newxpang_speedup_r()
3219 {
3220 	if (m_maincpu->pc() == 0x8b8e)
3221 	{
3222 		if (irq_active())
3223 			m_maincpu->spin_until_interrupt();
3224 		else
3225 			m_maincpu->eat_cycles(50);
3226 	}
3227 
3228 	return m_wram[0x61218 / 2];
3229 }
3230 
worldadv_speedup_r()3231 u16 vamphalf_state::worldadv_speedup_r()
3232 {
3233 	if (m_maincpu->pc() == 0x93ae)
3234 	{
3235 		if (irq_active())
3236 			m_maincpu->spin_until_interrupt();
3237 		else
3238 			m_maincpu->eat_cycles(50);
3239 	}
3240 
3241 	return m_wram[0xc5e78 / 2];
3242 }
3243 
mrdig_speedup_r()3244 u16 vamphalf_state::mrdig_speedup_r()
3245 {
3246 	if (m_maincpu->pc() == 0xae38)
3247 	{
3248 		if (irq_active())
3249 			m_maincpu->spin_until_interrupt();
3250 		else
3251 			m_maincpu->eat_cycles(50);
3252 	}
3253 
3254 	return m_wram[0x0e0768 / 2];
3255 }
3256 
dtfamily_speedup_r()3257 u16 vamphalf_state::dtfamily_speedup_r()
3258 {
3259 	if (m_maincpu->pc() == 0x12fa6)
3260 	{
3261 		if (irq_active())
3262 			m_maincpu->spin_until_interrupt();
3263 		else
3264 			m_maincpu->eat_cycles(50);
3265 	}
3266 
3267 	return m_wram[0xcc2a8 / 2];
3268 }
3269 
toyland_speedup_r()3270 u16 vamphalf_state::toyland_speedup_r()
3271 {
3272 	if (m_maincpu->pc() == 0x130c2)
3273 	{
3274 		if (irq_active())
3275 			m_maincpu->spin_until_interrupt();
3276 		else
3277 			m_maincpu->eat_cycles(50);
3278 	}
3279 
3280 	return m_wram[0x780d8 / 2];
3281 }
3282 
boonggab_speedup_r()3283 u16 vamphalf_state::boonggab_speedup_r()
3284 {
3285 	if (m_maincpu->pc() == 0x131a6)
3286 	{
3287 		if (irq_active())
3288 			m_maincpu->spin_until_interrupt();
3289 		else
3290 			m_maincpu->eat_cycles(50);
3291 	}
3292 
3293 	return m_wram[0xf1b74 / 2];
3294 }
3295 
init_vamphalf()3296 void vamphalf_state::init_vamphalf()
3297 {
3298 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a7b8, 0x0004a7b9, read16smo_delegate(*this, FUNC(vamphalf_state::vamphalf_speedup_r)));
3299 
3300 	m_palshift = 0;
3301 	m_flip_bit = 0x80;
3302 }
3303 
init_vamphalfr1()3304 void vamphalf_state::init_vamphalfr1()
3305 {
3306 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a468, 0x0004a469, read16smo_delegate(*this, FUNC(vamphalf_state::vamphalfr1_speedup_r)));
3307 
3308 	m_palshift = 0;
3309 	m_flip_bit = 0x80;
3310 }
3311 
init_vamphafk()3312 void vamphalf_state::init_vamphafk()
3313 {
3314 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a648, 0x0004a649, read16smo_delegate(*this, FUNC(vamphalf_state::vamphafk_speedup_r)));
3315 
3316 	m_palshift = 0;
3317 	m_flip_bit = 0x80;
3318 }
3319 
init_misncrft()3320 void vamphalf_qdsp_state::init_misncrft()
3321 {
3322 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x000741e8, 0x000741e9, read16smo_delegate(*this, FUNC(vamphalf_qdsp_state::misncrft_speedup_r)));
3323 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00072e2c, 0x00072e2d, read16smo_delegate(*this, FUNC(vamphalf_qdsp_state::misncrfta_speedup_r)));
3324 	m_palshift = 0;
3325 	m_flip_bit = 1;
3326 
3327 	// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
3328 	m_qdsp_cpu->space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
3329 	membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base() + 0x100, 0x8000-0x100);
3330 }
3331 
init_coolmini()3332 void vamphalf_state::init_coolmini()
3333 {
3334 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x000d2df8, 0x000d2df9, read16smo_delegate(*this, FUNC(vamphalf_state::coolmini_speedup_r)));
3335 
3336 	m_palshift = 0;
3337 	m_flip_bit = 1;
3338 }
3339 
init_coolminii()3340 void vamphalf_state::init_coolminii()
3341 {
3342 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x000d30a8, 0x000d30a9, read16smo_delegate(*this, FUNC(vamphalf_state::coolminii_speedup_r)));
3343 
3344 	m_palshift = 0;
3345 	m_flip_bit = 1;
3346 }
3347 
init_mrkicker()3348 void vamphalf_state::init_mrkicker()
3349 {
3350 	banked_oki(0);
3351 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00063fc0, 0x00063fc1, read16smo_delegate(*this, FUNC(vamphalf_state::mrkicker_speedup_r)));
3352 
3353 	m_palshift = 0;
3354 	m_flip_bit = 1;
3355 }
3356 
init_suplup()3357 void vamphalf_state::init_suplup()
3358 {
3359 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x0011605c, 0x0011605d, read16smo_delegate(*this, FUNC(vamphalf_state::suplup_speedup_r)));
3360 
3361 	m_palshift = 8;
3362 	/* no flipscreen */
3363 }
3364 
init_luplup()3365 void vamphalf_state::init_luplup()
3366 {
3367 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00115e84, 0x00115e85, read16smo_delegate(*this, FUNC(vamphalf_state::luplup_speedup_r)));
3368 
3369 	m_palshift = 8;
3370 	/* no flipscreen */
3371 }
3372 
init_luplup29()3373 void vamphalf_state::init_luplup29()
3374 {
3375 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113f08, 0x00113f09, read16smo_delegate(*this, FUNC(vamphalf_state::luplup29_speedup_r)));
3376 
3377 	m_palshift = 8;
3378 	/* no flipscreen */
3379 }
3380 
init_luplup10()3381 void vamphalf_state::init_luplup10()
3382 {
3383 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113b78, 0x00113b79, read16smo_delegate(*this, FUNC(vamphalf_state::luplup10_speedup_r)));
3384 
3385 	m_palshift = 8;
3386 	/* no flipscreen */
3387 }
3388 
init_puzlbang()3389 void vamphalf_state::init_puzlbang()
3390 {
3391 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113f14, 0x00113f15, read16smo_delegate(*this, FUNC(vamphalf_state::puzlbang_speedup_r)));
3392 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113ecc, 0x00113ecd, read16smo_delegate(*this, FUNC(vamphalf_state::puzlbanga_speedup_r)));
3393 
3394 	m_palshift = 8;
3395 	/* no flipscreen */
3396 }
3397 
init_wyvernwg()3398 void vamphalf_qdsp_state::init_wyvernwg()
3399 {
3400 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b4cc4, 0x00b4cc7, read32smo_delegate(*this, FUNC(vamphalf_qdsp_state::wivernwg_speedup_r)));
3401 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b56f4, 0x00b56f7, read32smo_delegate(*this, FUNC(vamphalf_qdsp_state::wyvernwg_speedup_r)));
3402 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b74f0, 0x00b74f3, read32smo_delegate(*this, FUNC(vamphalf_qdsp_state::wyvernwga_speedup_r)));
3403 	m_palshift = 0;
3404 	m_flip_bit = 1;
3405 
3406 	m_semicom_prot_idx = 8;
3407 	m_semicom_prot_data[0] = 2;
3408 	m_semicom_prot_data[1] = 1;
3409 
3410 	// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
3411 	m_qdsp_cpu->space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
3412 	membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base() + 0x100, 0x8000-0x100);
3413 
3414 	save_item(NAME(m_semicom_prot_idx));
3415 	save_item(NAME(m_semicom_prot_which));
3416 }
3417 
init_yorijori()3418 void vamphalf_qdsp_state::init_yorijori()
3419 {
3420 	// seems close to Final Godori in terms of port mappings, possibly a SemiCom game?
3421 
3422 	m_palshift = 0;
3423 	m_flip_bit = 1;
3424 
3425 	m_semicom_prot_idx = 8;
3426 	m_semicom_prot_data[0] = 2;
3427 	m_semicom_prot_data[1] = 1;
3428 
3429 //  u8 *romx = (u8 *)memregion("maincpu")->base();
3430 	// prevent code dying after a trap 33 by patching it out, why?
3431 //  romx[BYTE4_XOR_BE(0x8ff0)] = 3;
3432 //  romx[BYTE4_XOR_BE(0x8ff1)] = 0;
3433 
3434 	// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
3435 	m_qdsp_cpu->space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
3436 	membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base() + 0x100, 0x8000-0x100);
3437 }
3438 
init_finalgdr()3439 void vamphalf_nvram_state::init_finalgdr()
3440 {
3441 	banked_oki(0);
3442 	m_finalgdr_backupram_bank = 1;
3443 	m_finalgdr_backupram = std::make_unique<u8[]>(0x80*0x100);
3444 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x005e870, 0x005e873, read32smo_delegate(*this, FUNC(vamphalf_nvram_state::finalgdr_speedup_r)));
3445 	m_nvram->set_base(m_finalgdr_backupram.get(), 0x80*0x100);
3446 
3447 	m_palshift = 0;
3448 	m_flip_bit = 1; //?
3449 
3450 	m_semicom_prot_idx = 8;
3451 	m_semicom_prot_data[0] = 2;
3452 	m_semicom_prot_data[1] = 3;
3453 
3454 	save_item(NAME(m_finalgdr_backupram_bank));
3455 	save_pointer(NAME(m_finalgdr_backupram), 0x80*0x100);
3456 	save_item(NAME(m_semicom_prot_idx));
3457 	save_item(NAME(m_semicom_prot_which));
3458 }
3459 
init_mrkickera()3460 void vamphalf_nvram_state::init_mrkickera()
3461 {
3462 	banked_oki(0);
3463 	// backup ram isn't used
3464 	m_finalgdr_backupram_bank = 1;
3465 	m_finalgdr_backupram = std::make_unique<u8[]>(0x80*0x100);
3466 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00701a0, 0x00701a3, read32smo_delegate(*this, FUNC(vamphalf_nvram_state::mrkickera_speedup_r)));
3467 	m_nvram->set_base(m_finalgdr_backupram.get(), 0x80*0x100);
3468 
3469 	m_palshift = 0;
3470 	m_flip_bit = 1; //?
3471 
3472 	m_semicom_prot_idx = 8;
3473 	m_semicom_prot_data[0] = 2;
3474 	m_semicom_prot_data[1] = 3;
3475 
3476 	save_item(NAME(m_semicom_prot_idx));
3477 	save_item(NAME(m_semicom_prot_which));
3478 }
3479 
init_dquizgo2()3480 void vamphalf_state::init_dquizgo2()
3481 {
3482 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00cdde8, 0x00cdde9, read16smo_delegate(*this, FUNC(vamphalf_state::dquizgo2_speedup_r)));
3483 
3484 	m_palshift = 0;
3485 	m_flip_bit = 1;
3486 }
3487 
init_dtfamily()3488 void vamphalf_state::init_dtfamily()
3489 {
3490 	banked_oki(0);
3491 	m_maincpu->space(AS_PROGRAM).install_read_handler(0xcc2a8, 0xcc2a9, read16smo_delegate(*this, FUNC(vamphalf_state::dtfamily_speedup_r)));
3492 
3493 	m_palshift = 0;
3494 	m_flip_bit = 1;
3495 }
3496 
3497 
init_toyland()3498 void vamphalf_state::init_toyland()
3499 {
3500 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x780d8, 0x780d9, read16smo_delegate(*this, FUNC(vamphalf_state::toyland_speedup_r)));
3501 
3502 	m_palshift = 0;
3503 	m_flip_bit = 1;
3504 }
3505 
init_aoh()3506 void vamphalf_state::init_aoh()
3507 {
3508 	banked_oki(1);
3509 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x028a09c, 0x028a09f, read32smo_delegate(*this, FUNC(vamphalf_state::aoh_speedup_r)));
3510 
3511 	m_palshift = 0;
3512 	/* no flipscreen */
3513 }
3514 
init_jmpbreak()3515 void vamphalf_state::init_jmpbreak()
3516 {
3517 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00906f4, 0x00906f5, read16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_speedup_r)));
3518 	m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w)));
3519 
3520 	m_palshift = 0;
3521 }
3522 
init_jmpbreaka()3523 void vamphalf_state::init_jmpbreaka()
3524 {
3525 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x00e1dfc, 0x00e1dfd, read16smo_delegate(*this, FUNC(vamphalf_state::jmpbreaka_speedup_r)));
3526 	m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w)));
3527 
3528 	m_palshift = 0;
3529 }
3530 
init_mrdig()3531 void vamphalf_state::init_mrdig()
3532 {
3533 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0768, 0x0e0769, read16smo_delegate(*this, FUNC(vamphalf_state::mrdig_speedup_r)));
3534 	m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w)));
3535 
3536 	m_palshift = 0;
3537 }
3538 
init_poosho()3539 void vamphalf_state::init_poosho()
3540 {
3541 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c8b58, 0x0c8b59, read16smo_delegate(*this, FUNC(vamphalf_state::poosho_speedup_r)));
3542 	m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w)));
3543 
3544 	m_palshift = 0;
3545 }
3546 
init_newxpang()3547 void vamphalf_state::init_newxpang()
3548 {
3549 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x061218, 0x061219, read16smo_delegate(*this, FUNC(vamphalf_state::newxpang_speedup_r)));
3550 	m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w)));
3551 
3552 	m_palshift = 0;
3553 }
3554 
init_worldadv()3555 void vamphalf_state::init_worldadv()
3556 {
3557 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c5e78, 0x0c5e79, read16smo_delegate(*this, FUNC(vamphalf_state::worldadv_speedup_r)));
3558 	m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w)));
3559 
3560 	m_palshift = 0;
3561 }
3562 
init_boonggab()3563 void vamphalf_state::init_boonggab()
3564 {
3565 	banked_oki(0);
3566 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x000f1b74, 0x000f1b75, read16smo_delegate(*this, FUNC(vamphalf_state::boonggab_speedup_r)));
3567 
3568 	m_palshift = 0;
3569 	m_has_extra_gfx = true;
3570 	m_flip_bit = 1;
3571 }
3572 
3573 GAME( 1999, coolmini,   0,        coolmini,  common,   vamphalf_state,      init_coolmini,  ROT0,   "SemiCom",                       "Cool Minigame Collection", MACHINE_SUPPORTS_SAVE )
3574 GAME( 1999, coolminii,  coolmini, coolmini,  common,   vamphalf_state,      init_coolminii, ROT0,   "SemiCom",                       "Cool Minigame Collection (Italy)", MACHINE_SUPPORTS_SAVE )
3575 
3576 GAME( 1999, jmpbreak,   0,        jmpbreak,  common,   vamphalf_state,      init_jmpbreak,  ROT0,   "F2 System",                     "Jumping Break (set 1)", MACHINE_SUPPORTS_SAVE )
3577 GAME( 1999, jmpbreaka,  jmpbreak, jmpbreak,  common,   vamphalf_state,      init_jmpbreaka, ROT0,   "F2 System",                     "Jumping Break (set 2)", MACHINE_SUPPORTS_SAVE )
3578 
3579 GAME( 1999, poosho,     0,        jmpbreak,  common,   vamphalf_state,      init_poosho,    ROT0,   "F2 System",                     "Poosho Poosho" , MACHINE_SUPPORTS_SAVE )
3580 
3581 GAME( 1999, newxpang,   0,        newxpang,  common,   vamphalf_state,      init_newxpang,  ROT0,   "F2 System",                     "New Cross Pang" , MACHINE_SUPPORTS_SAVE )
3582 
3583 GAME( 1999, worldadv,   0,        worldadv,  common,   vamphalf_state,      init_worldadv,  ROT0,   "Logic / F2 System",             "World Adventure" , MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // game starts to stall for several seconds at a time after it's been running for a certain amount of time
3584 
3585 GAME( 1999, suplup,     0,        suplup,    common,   vamphalf_state,      init_suplup,    ROT0,   "Omega System",                  "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)" , MACHINE_SUPPORTS_SAVE )
3586 GAME( 1999, luplup,     suplup,   suplup,    common,   vamphalf_state,      init_luplup,    ROT0,   "Omega System",                  "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", MACHINE_SUPPORTS_SAVE )
3587 GAME( 1999, luplup29,   suplup,   suplup,    common,   vamphalf_state,      init_luplup29,  ROT0,   "Omega System",                  "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", MACHINE_SUPPORTS_SAVE )
3588 GAME( 1999, luplup10,   suplup,   suplup,    common,   vamphalf_state,      init_luplup10,  ROT0,   "Omega System (Adko license)",   "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 1.05 / 981214)", MACHINE_SUPPORTS_SAVE )
3589 GAME( 1999, puzlbang,   suplup,   suplup,    common,   vamphalf_state,      init_puzlbang,  ROT0,   "Omega System",                  "Puzzle Bang Bang (Korea, version 2.9 / 990108)", MACHINE_SUPPORTS_SAVE )
3590 GAME( 1999, puzlbanga,  suplup,   suplup,    common,   vamphalf_state,      init_puzlbang,  ROT0,   "Omega System",                  "Puzzle Bang Bang (Korea, version 2.8 / 990106)", MACHINE_SUPPORTS_SAVE )
3591 
3592 GAME( 1999, vamphalf,   0,        vamphalf,  common,   vamphalf_state,      init_vamphalf,  ROT0,   "Danbi / F2 System",             "Vamf x1/2 (Europe, version 1.1.0908)", MACHINE_SUPPORTS_SAVE )
3593 GAME( 1999, vamphalfr1, vamphalf, vamphalf,  common,   vamphalf_state,      init_vamphalfr1,ROT0,   "Danbi / F2 System",             "Vamf x1/2 (Europe, version 1.0.0903)", MACHINE_SUPPORTS_SAVE )
3594 GAME( 1999, vamphalfk,  vamphalf, vamphalf,  common,   vamphalf_state,      init_vamphafk,  ROT0,   "Danbi / F2 System",             "Vamp x1/2 (Korea, version 1.1.0908)", MACHINE_SUPPORTS_SAVE )
3595 
3596 GAME( 2000, dquizgo2,   0,        coolmini,  common,   vamphalf_state,      init_dquizgo2,  ROT0,   "SemiCom",                       "Date Quiz Go Go Episode 2" , MACHINE_SUPPORTS_SAVE )
3597 
3598 GAME( 2000, misncrft,   0,        misncrft,  common,   vamphalf_qdsp_state, init_misncrft,  ROT90,  "Sun",                           "Mission Craft (version 2.7)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // game starts to stall for several seconds at a time after it's been running for a certain amount of time (you can usually complete 1 loop)
3599 GAME( 2000, misncrfta,  misncrft, misncrft,  common,   vamphalf_qdsp_state, init_misncrft,  ROT90,  "Sun",                           "Mission Craft (version 2.4)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
3600 
3601 GAME( 2000, mrdig,      0,        mrdig,     common,   vamphalf_state,      init_mrdig,     ROT0,   "Sun",                           "Mr. Dig", MACHINE_SUPPORTS_SAVE )
3602 
3603 GAME( 2001, dtfamily,   0,        mrkicker,  common,   vamphalf_state,      init_dtfamily,  ROT0,   "SemiCom",                       "Diet Family", MACHINE_SUPPORTS_SAVE )
3604 
3605 GAME( 2001, finalgdr,   0,        finalgdr,  finalgdr, vamphalf_nvram_state,init_finalgdr,  ROT0,   "SemiCom",                       "Final Godori (Korea, version 2.20.5915)", MACHINE_SUPPORTS_SAVE )
3606 
3607 GAME( 2001, mrkicker,   0,        mrkicker,  common,   vamphalf_state,      init_mrkicker,  ROT0,   "SemiCom",                       "Mr. Kicker (F-E1-16-010 PCB)", MACHINE_SUPPORTS_SAVE )
3608 GAME( 2001, mrkickera,  mrkicker, mrkickera, finalgdr, vamphalf_nvram_state,init_mrkickera, ROT0,   "SemiCom",                       "Mr. Kicker (SEMICOM-003b PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // if you allow EEPROM saving, then this set corrupts the EEPROM and then won't boot
3609 
3610 GAME( 2001, toyland,    0,        coolmini,  common,   vamphalf_state,      init_toyland,   ROT0,   "SemiCom",                       "Toy Land Adventure", MACHINE_SUPPORTS_SAVE )
3611 
3612 GAME( 2001, wivernwg,   0,        wyvernwg,  common,   vamphalf_qdsp_state, init_wyvernwg,  ROT270, "SemiCom",                       "Wivern Wings", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) // gives a protection error after a certain number of plays / coins?
3613 GAME( 2001, wyvernwg,   wivernwg, wyvernwg,  common,   vamphalf_qdsp_state, init_wyvernwg,  ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
3614 GAME( 2001, wyvernwga,  wivernwg, wyvernwg,  common,   vamphalf_qdsp_state, init_wyvernwg,  ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
3615 
3616 GAME( 2001, aoh,        0,        aoh,       aoh,      vamphalf_state,      init_aoh,       ROT0,   "Unico",                         "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", MACHINE_SUPPORTS_SAVE )
3617 
3618 GAME( 2001, boonggab,   0,        boonggab,  boonggab, vamphalf_state,      init_boonggab,  ROT270, "Taff System",                   "Boong-Ga Boong-Ga (Spank'em!)", MACHINE_SUPPORTS_SAVE )
3619 
3620 GAME( 199?, yorijori,   0,        yorijori,  common,   vamphalf_qdsp_state, init_yorijori,  ROT0,   "Golden Bell Entertainment",     "Yori Jori Kuk Kuk", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
3621