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