1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria,Vas Crabb
3 /***************************************************************************
4
5 Dooyong games
6
7 driver by Nicola Salmoria
8
9 The Last Day Z80 Z80 2xYM2203
10 Gulf Storm Z80 Z80 2xYM2203
11 Pollux Z80 Z80 2xYM2203
12 Blue Hawk Z80 Z80 YM2151 OKI6295
13 Sadari Z80 Z80 YM2151 OKI6295
14 Flying Tiger Z80 Z80 YM2151 OKI6295
15 Gun Dealer '94 Z80 Z80 YM2151 OKI6295
16 Super-X 68000 Z80 YM2151 OKI6295
17 R-Shark 68000 Z80 YM2151 OKI6295
18 Pop Bingo 68000 Z80 YM2151 OKI6295
19
20 These games all run on different but similar hardware. A common thing that they
21 all have is tilemaps hardcoded in ROM.
22
23 TODO:
24 - port A of both of the YM2203 is constantly read and stored in memory -
25 function unknown
26 - bluehawk and flytiger main programs often write to the program ROM
27 area in the range 0x0000-0x001f. They always write the same sequence
28 of values. Is there a peripheral mapped here, or is it just the same
29 bug in two games?
30 - rshark main program regularly writes 0x0000 to 0x0C0018 and 0x0C001A -
31 is this a watchdog or some other peripheral, or just a bug?
32 - superx main program regularly writes 0x0000 to 0x080018 and 0x08001A -
33 is this a watchdog or some other peripheral, or just a bug (presumably
34 it's the same thing rshark has, but at a different address)?
35 - bluehawk flytiger, superx, rshark and popbingo sound programs write
36 regularly to the ROM area - 0x00 is written to 0x0003 and 0xF7 is
37 written to 0x0004 - is this just a bug, or is there something
38 connected there? Possibly a watchdog?
39 Primella:
40 - does the game really support cocktail mode as service mode suggests?
41 - are buttons 2 and 3 used as service mode suggests?
42 Pop Bingo
43 - some unknown reads / writes
44
45 18.02.2011. Tomasz Slanina
46 --------------------------
47 Few notes about the 2xYM2203 games:
48
49 Interrupts are generated by both YM chips. Sound CPU checks interrupt source
50 (tests timer flag in 1st YM) and restarts appropriate timer
51 (and clears int line) then process sfx or music data.
52
53 Due to bad timing/incorrect int line handling - interrupt is skipped if
54 fires when another one is being processed and int line is still asserted
55 (and not cleared). This situation results in missing or incomplete audio,
56 because one of interrupt sources is _dead_ (timer never restarts).
57
58 Music tempo and audio pitch depends on (unknown) YM clocks.
59 Sound cpu runs currently at 8 MHz to avoid jerky music when there's (too)
60 many SFX scheduled.
61
62 Reference video:
63 - pollux : https://www.youtube.com/watch?v=SuUvX9U9dxo
64
65 Currently there's some workaround implemented - both YM lines are OR-ed to
66 allow nested (and in fact - delayed) interrupts. It's temporary solution
67 until we find real PCB and verify clocks and trace int lines.
68
69 Pollux:
70 Many (all? at least pollux, primella and flying tiger) use some kind of
71 banked palette RAM. Bit 1 at address 0xf008 controls banking (both palettes
72 are almost identical, except for much darker BG layer colors).
73
74
75 ***************************************************************************/
76
77 #include "emu.h"
78 #include "video/dooyong.h"
79
80 #include "cpu/m68000/m68000.h"
81 #include "cpu/z80/z80.h"
82 #include "machine/gen_latch.h"
83 #include "machine/input_merger.h"
84 #include "machine/timer.h"
85 #include "sound/2203intf.h"
86 #include "sound/okim6295.h"
87 #include "sound/ym2151.h"
88
89 #include "emupal.h"
90 #include "screen.h"
91 #include "speaker.h"
92
93
94 namespace {
95
96 class dooyong_state : public driver_device
97 {
98 protected:
dooyong_state(const machine_config & mconfig,device_type type,const char * tag)99 dooyong_state(const machine_config &mconfig, device_type type, const char *tag)
100 : driver_device(mconfig, type, tag)
101 , m_maincpu(*this, "maincpu")
102 , m_audiocpu(*this, "audiocpu")
103 , m_gfxdecode(*this, "gfxdecode")
104 , m_palette(*this, "palette")
105 , m_bg(*this, "bg%u", 1U)
106 , m_fg(*this, "fg%u", 1U)
107 {
108 }
109
110 void sound_2151_4mhz(machine_config &config);
111 void bluehawk_sound_map(address_map &map);
112
113 required_device<cpu_device> m_maincpu;
114 required_device<cpu_device> m_audiocpu;
115 required_device<gfxdecode_device> m_gfxdecode;
116 required_device<palette_device> m_palette;
117 optional_device_array<dooyong_rom_tilemap_device, 2> m_bg;
118 optional_device_array<dooyong_rom_tilemap_device, 2> m_fg;
119 };
120
121 class dooyong_z80_state : public dooyong_state
122 {
123 public:
dooyong_z80_state(const machine_config & mconfig,device_type type,const char * tag)124 dooyong_z80_state(const machine_config &mconfig, device_type type, const char *tag)
125 : dooyong_state(mconfig, type, tag)
126 , m_tx(*this, "tx")
127 , m_spriteram(*this, "spriteram")
128 , m_mainbank(*this, "mainbank")
129 {
130 }
131
132 void bluehawk(machine_config &config);
133 void flytiger(machine_config &config);
134 void primella(machine_config &config);
135
136 protected:
137 enum
138 {
139 SPRITE_12BIT = 0x01,
140 SPRITE_HEIGHT = 0x02,
141 SPRITE_YSHIFT_BLUEHAWK = 0x04,
142 SPRITE_YSHIFT_FLYTIGER = 0x08
143 };
144
flip_screen_w(u8 data)145 void flip_screen_w(u8 data)
146 {
147 flip_screen_set(data);
148 }
149
bankswitch_w(u8 data)150 void bankswitch_w(u8 data)
151 {
152 m_mainbank->set_entry(data & 0x07);
153 if (data & 0xf8) popmessage("bankswitch %02x",data);
154 }
155
lastday_tx_r(offs_t offset)156 u8 lastday_tx_r(offs_t offset)
157 {
158 const bool lane(BIT(offset, 11));
159 return m_tx->tileram_r(offset & 0x07ffU) >> (lane ? 8 : 0);
160 }
161
lastday_tx_w(offs_t offset,u8 data)162 void lastday_tx_w(offs_t offset, u8 data)
163 {
164 const bool lane(BIT(offset, 11));
165 m_tx->tileram_w(offset & 0x07ffU, u16(data) << (lane ? 8 : 0), lane ? 0xff00U : 0x00ffU);
166 }
167
bluehawk_tx_r(offs_t offset)168 u8 bluehawk_tx_r(offs_t offset)
169 {
170 const bool lane(BIT(offset, 0));
171 return m_tx->tileram_r(offset >> 1) >> (lane ? 8 : 0);
172 }
173
bluehawk_tx_w(offs_t offset,u8 data)174 void bluehawk_tx_w(offs_t offset, u8 data)
175 {
176 const bool lane(BIT(offset, 0));
177 m_tx->tileram_w(offset >> 1, u16(data) << (lane ? 8 : 0), lane ? 0xff00U : 0x00ffU);
178 }
179
paletteram_flytiger_r(offs_t offset)180 u8 paletteram_flytiger_r(offs_t offset)
181 {
182 if (m_palette_bank) offset |= 0x800;
183 return m_paletteram_flytiger[offset];
184 }
185
paletteram_flytiger_w(offs_t offset,u8 data)186 void paletteram_flytiger_w(offs_t offset, u8 data)
187 {
188 if (m_palette_bank) offset |= 0x800;
189 m_paletteram_flytiger[offset] = data;
190 const u16 value = m_paletteram_flytiger[offset & ~1] | (m_paletteram_flytiger[offset | 1] << 8);
191 m_palette->set_pen_color(offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0));
192 }
193
194 void primella_ctrl_w(u8 data);
195 void flytiger_ctrl_w(u8 data);
196
197 u32 screen_update_bluehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
198 u32 screen_update_flytiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
199 u32 screen_update_primella(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
200
DECLARE_MACHINE_START(cpu_z80)201 DECLARE_MACHINE_START(cpu_z80)
202 {
203 m_mainbank->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
204 }
205
DECLARE_VIDEO_START(bluehawk)206 DECLARE_VIDEO_START(bluehawk)
207 {
208 }
209
DECLARE_VIDEO_START(flytiger)210 DECLARE_VIDEO_START(flytiger)
211 {
212 m_paletteram_flytiger = make_unique_clear<u8[]>(0x1000);
213 save_pointer(NAME(m_paletteram_flytiger), 0x1000);
214
215 m_palette_bank = 0;
216
217 /* Register for save/restore */
218 save_item(NAME(m_palette_bank));
219 save_item(NAME(m_flytiger_pri));
220 }
221
DECLARE_VIDEO_START(primella)222 DECLARE_VIDEO_START(primella)
223 {
224 /* Register for save/restore */
225 save_item(NAME(m_tx_pri));
226 }
227
bluehawk_tile_callback(u16 attr,u32 & code,u32 & color)228 void bluehawk_tile_callback(u16 attr, u32 &code, u32 &color)
229 {
230 code = attr & 0x3ff;
231 color = (attr & 0x3c00) >> 10;
232 }
233
234 void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, unsigned extensions = 0);
235
236 void sound_2151(machine_config &config);
237 void bluehawk_map(address_map &map);
238 void flytiger_map(address_map &map);
239 void primella_map(address_map &map);
240
241 std::unique_ptr<u8[]> m_paletteram_flytiger;
242 u8 m_sprites_disabled = 0;
243 u8 m_flytiger_pri = 0;
244 u8 m_tx_pri = 0;
245 u8 m_palette_bank = 0;
246
247 required_device<dooyong_ram_tilemap_device> m_tx;
248 optional_device<buffered_spriteram8_device> m_spriteram;
249
250 required_memory_bank m_mainbank;
251 };
252
253 class dooyong_z80_ym2203_state : public dooyong_z80_state
254 {
255 public:
dooyong_z80_ym2203_state(const machine_config & mconfig,device_type type,const char * tag)256 dooyong_z80_ym2203_state(const machine_config &mconfig, device_type type, const char *tag)
257 : dooyong_z80_state(mconfig, type, tag)
258 {
259 }
260
261 void lastday(machine_config &config);
262 void gulfstrm(machine_config &config);
263 void pollux(machine_config &config);
264
265 protected:
266 void lastday_ctrl_w(u8 data);
267 void pollux_ctrl_w(u8 data);
268 u8 unk_r();
269
270 u32 screen_update_lastday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
271 u32 screen_update_gulfstrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
272 u32 screen_update_pollux(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
273
DECLARE_VIDEO_START(lastday)274 DECLARE_VIDEO_START(lastday)
275 {
276 /* Register for save/restore */
277 save_item(NAME(m_sprites_disabled));
278 }
279
DECLARE_VIDEO_START(gulfstrm)280 DECLARE_VIDEO_START(gulfstrm)
281 {
282 m_palette_bank = 0;
283
284 /* Register for save/restore */
285 save_item(NAME(m_palette_bank));
286 }
287
DECLARE_VIDEO_START(pollux)288 DECLARE_VIDEO_START(pollux)
289 {
290 m_paletteram_flytiger = make_unique_clear<u8[]>(0x1000);
291 save_pointer(NAME(m_paletteram_flytiger), 0x1000);
292
293 m_palette_bank = 0;
294
295 /* Register for save/restore */
296 save_item(NAME(m_palette_bank));
297 }
298
299 void sound_2203(machine_config &config);
300
301 void lastday_map(address_map &map);
302 void gulfstrm_map(address_map &map);
303 void pollux_map(address_map &map);
304
305 void lastday_sound_map(address_map &map);
306 void pollux_sound_map(address_map &map);
307 };
308
309
310 class dooyong_68k_state : public dooyong_state
311 {
312 protected:
dooyong_68k_state(const machine_config & mconfig,device_type type,const char * tag)313 dooyong_68k_state(const machine_config &mconfig, device_type type, const char *tag)
314 : dooyong_state(mconfig, type, tag)
315 , m_spriteram(*this, "spriteram")
316 {
317 }
318
ctrl_w(u8 data)319 void ctrl_w(u8 data)
320 {
321 /* bit 0 flips screen */
322 flip_screen_set(data & 0x01);
323
324 /* bit 4 changes tilemaps priority */
325 m_bg2_priority = data & 0x10;
326
327 /* bit 5 used but unknown */
328 }
329
330 TIMER_DEVICE_CALLBACK_MEMBER(scanline);
331
332 void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
333
334 u16 m_bg2_priority = 0;
335 required_device<buffered_spriteram16_device> m_spriteram;
336 };
337
338
339 class rshark_state : public dooyong_68k_state
340 {
341 public:
rshark_state(const machine_config & mconfig,device_type type,const char * tag)342 rshark_state(const machine_config &mconfig, device_type type, const char *tag)
343 : dooyong_68k_state(mconfig, type, tag)
344 {
345 }
346
347 void rshark(machine_config &config);
348 void superx(machine_config &config);
349
350 protected:
351 u32 screen_update_rshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
352
video_start()353 virtual void video_start() override
354 {
355 /* Register for save/restore */
356 save_item(NAME(m_bg2_priority));
357 }
358
rshark_tile_callback(u16 attr,u32 & code,u32 & color)359 void rshark_tile_callback(u16 attr, u32 &code, u32 &color)
360 {
361 code = attr & 0x1fff; // uses more code bits; because rshark and superx are uses 16x16 tiles for tilemap instead 32x32 tiles
362 color = 0; // use external ROM
363 }
364
365 void dooyong_68k(machine_config &config);
366
367 void rshark_map(address_map &map);
368 void superx_map(address_map &map);
369 };
370
371
372 class popbingo_state : public dooyong_68k_state
373 {
374 public:
popbingo_state(const machine_config & mconfig,device_type type,const char * tag)375 popbingo_state(const machine_config &mconfig, device_type type, const char *tag)
376 : dooyong_68k_state(mconfig, type, tag)
377 , m_screen(*this, "screen")
378 {
379 }
380
381 void popbingo(machine_config &config);
382
383 protected:
384 u32 screen_update_popbingo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
385
video_start()386 virtual void video_start() override
387 {
388 m_screen->register_screen_bitmap(m_bg_bitmap[0]);
389 m_screen->register_screen_bitmap(m_bg_bitmap[1]);
390
391 /* Register for save/restore */
392 save_item(NAME(m_bg2_priority)); // Not used atm
393 }
394
popbingo_tile_callback(u16 attr,u32 & code,u32 & color)395 void popbingo_tile_callback(u16 attr, u32 &code, u32 &color)
396 {
397 code = attr & 0x7ff;
398 color = 0;
399 }
400
401 void popbingo_map(address_map &map);
402
403 private:
404 bitmap_ind16 m_bg_bitmap[2];
405
406 required_device<screen_device> m_screen;
407 };
408
409
410 /* Control registers seem to be different on every game */
411
lastday_ctrl_w(u8 data)412 void dooyong_z80_ym2203_state::lastday_ctrl_w(u8 data)
413 {
414 /* bits 0 and 1 are coin counters */
415 machine().bookkeeping().coin_counter_w(0, data & 0x01);
416 machine().bookkeeping().coin_counter_w(1, data & 0x02);
417
418 /* bit 3 is used but unknown */
419
420 /* bit 4 disables sprites */
421 m_sprites_disabled = data & 0x10;
422
423 /* bit 6 is flip screen */
424 flip_screen_set(data & 0x40);
425 }
426
pollux_ctrl_w(u8 data)427 void dooyong_z80_ym2203_state::pollux_ctrl_w(u8 data)
428 {
429 // printf("pollux_ctrl_w %02x\n", data);
430
431 /* bit 0 is flip screen */
432 flip_screen_set(data & 0x01);
433
434 /* bits 6 and 7 are coin counters */
435 machine().bookkeeping().coin_counter_w(0, data & 0x80);
436 machine().bookkeeping().coin_counter_w(1, data & 0x40);
437
438 /* bit 1 is used but unknown - palette banking (both write and display based on pollux bombs) */
439 const u8 last_palbank = m_palette_bank;
440 if (m_paletteram_flytiger) m_palette_bank = BIT(data, 1);
441 if (last_palbank != m_palette_bank)
442 {
443 m_bg[0]->set_palette_bank(m_palette_bank << 6);
444 m_fg[0]->set_palette_bank(m_palette_bank << 6);
445 m_tx->set_palette_bank(m_palette_bank << 6);
446 }
447
448 /* bit 2 is continuously toggled (unknown) */
449
450 /* bit 4 is used but unknown - display disable? */
451 }
452
453
primella_ctrl_w(u8 data)454 void dooyong_z80_state::primella_ctrl_w(u8 data)
455 {
456 /* bits 0-2 select ROM bank */
457 m_mainbank->set_entry(data & 0x07);
458
459 /* bit 3 disables tx layer */
460 m_tx_pri = data & 0x08;
461
462 /* bit 4 flips screen */
463 flip_screen_set(data & 0x10);
464
465 /* bit 5 used but unknown */
466
467 // logerror("%04x: bankswitch = %02x\n",m_maincpu->pc(),data&0xe0);
468 }
469
470
flytiger_ctrl_w(u8 data)471 void dooyong_z80_state::flytiger_ctrl_w(u8 data)
472 {
473 /* bit 0 is flip screen */
474 flip_screen_set(data & 0x01);
475
476 /* bits 1, 2 used but unknown */
477
478 /* bit 3 palette banking */
479 const u8 last_palbank = m_palette_bank;
480 m_palette_bank = BIT(data, 3);
481 if (last_palbank != m_palette_bank)
482 {
483 m_bg[0]->set_palette_bank(m_palette_bank << 6);
484 m_fg[0]->set_palette_bank(m_palette_bank << 6);
485 m_tx->set_palette_bank(m_palette_bank << 6);
486 }
487
488 /* bit 4 changes tilemaps priority */
489 m_flytiger_pri = data & 0x10;
490 }
491
492
draw_sprites(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect,unsigned extensions)493 void dooyong_z80_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, unsigned extensions)
494 {
495 /* Sprites take 32 bytes each in memory:
496 MSB LSB
497 [offs + 0x00] cccc cccc (bits 7-0 of gfx code)
498 [offs + 0x01] cccx CCCC (bits 10-8 of gfx code, bit 8 of x position, bits 3-0 of color code)
499 [offs + 0x02] yyyy yyyy
500 [offs + 0x03] xxxx xxxx (bits 7-0 of x offset)
501 ...
502 [offs + 0x1c] ?hhh XY*c (bits 2-0 of height, x flip, y flip, * see note, bit 11 of gfx code)
503 ...
504 ? = unused/unknown
505 E = enable
506 c = gfx code
507 x = x position
508 y = y position
509 C = color code
510 w = width
511 X = x flip
512 Y = y flip
513 * = alters y position in bluehawk and flytiger - see code below
514 bit 11 of gfx code only used by gulfstrm, pollux, bluehawk and flytiger
515 height only used by pollux, bluehawk and flytiger
516 x flip and y flip only used by pollux and flytiger */
517
518 const u8 *const buffered_spriteram = m_spriteram->buffer();
519 for (int offs = 0; offs < m_spriteram->bytes(); offs += 32)
520 {
521 int sx = buffered_spriteram[offs+3] | ((buffered_spriteram[offs+1] & 0x10) << 4);
522 int sy = buffered_spriteram[offs+2];
523 int code = buffered_spriteram[offs] | ((buffered_spriteram[offs+1] & 0xe0) << 3);
524 int color = buffered_spriteram[offs+1] & 0x0f;
525
526 //TODO: This priority mechanism works for known games, but seems a bit strange.
527 //Are we missing something? (The obvious spare palette bit isn't it.)
528 const int pri = (((color == 0x00) || (color == 0x0f)) ? 0xfc : 0xf0);
529
530 bool flipx = false, flipy = false;
531 int height = 0;
532 if (extensions)
533 {
534 const u8 ext = buffered_spriteram[offs+0x1c];
535
536 if (extensions & SPRITE_12BIT)
537 code |= ((ext & 0x01) << 11);
538
539 if (extensions & SPRITE_HEIGHT)
540 {
541 height = (ext & 0x70) >> 4;
542 code &= ~height;
543
544 flipx = ext & 0x08;
545 flipy = ext & 0x04;
546 }
547
548 if (extensions & SPRITE_YSHIFT_BLUEHAWK)
549 sy += 6 - ((~ext & 0x02) << 7);
550
551 if (extensions & SPRITE_YSHIFT_FLYTIGER)
552 sy -=(ext & 0x02) << 7;
553 }
554
555 if (flip_screen())
556 {
557 sx = 498 - sx;
558 sy = 240 - (16 * height) - sy;
559 flipx = !flipx;
560 flipy = !flipy;
561 }
562
563 color |= m_palette_bank << 6;
564
565 for (int y = 0; y <= height; y++)
566 {
567 m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
568 code + y,
569 color,
570 flipx, flipy,
571 sx, sy + (16 * (flipy ? (height - y) : y)),
572 screen.priority(),
573 pri, 15);
574 }
575 }
576 }
577
578
screen_update_lastday(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)579 u32 dooyong_z80_ym2203_state::screen_update_lastday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
580 {
581 bitmap.fill(m_palette->black_pen(), cliprect);
582 screen.priority().fill(0, cliprect);
583
584 /* Text layer is offset on this machine */
585 m_tx->set_scrolly(flip_screen() ? -8 : 8);
586
587 m_bg[0]->draw(screen, bitmap, cliprect, 0, 1);
588 m_fg[0]->draw(screen, bitmap, cliprect, 0, 2);
589 m_tx->draw(screen, bitmap, cliprect, 0, 4);
590
591 if (!m_sprites_disabled)
592 draw_sprites(screen, bitmap, cliprect);
593
594 return 0;
595 }
596
screen_update_gulfstrm(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)597 u32 dooyong_z80_ym2203_state::screen_update_gulfstrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
598 {
599 bitmap.fill(m_palette->black_pen(), cliprect);
600 screen.priority().fill(0, cliprect);
601
602 /* Text layer is offset on this machine */
603 m_tx->set_scrolly(flip_screen() ? -8 : 8);
604
605 m_bg[0]->draw(screen, bitmap, cliprect, 0, 1);
606 m_fg[0]->draw(screen, bitmap, cliprect, 0, 2);
607 m_tx->draw(screen, bitmap, cliprect, 0, 4);
608
609 draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT);
610
611 return 0;
612 }
613
screen_update_pollux(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)614 u32 dooyong_z80_ym2203_state::screen_update_pollux(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
615 {
616 bitmap.fill(m_palette->black_pen(), cliprect);
617 screen.priority().fill(0, cliprect);
618
619 m_bg[0]->draw(screen, bitmap, cliprect, 0, 1);
620 m_fg[0]->draw(screen, bitmap, cliprect, 0, 2);
621 m_tx->draw(screen, bitmap, cliprect, 0, 4);
622
623 draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT);
624
625 return 0;
626 }
627
screen_update_flytiger(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)628 u32 dooyong_z80_state::screen_update_flytiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
629 {
630 bitmap.fill(m_palette->black_pen(), cliprect);
631 screen.priority().fill(0, cliprect);
632
633 if (m_flytiger_pri)
634 {
635 m_fg[0]->draw(screen, bitmap, cliprect, 0, 1);
636 m_bg[0]->draw(screen, bitmap, cliprect, 0, 2);
637 }
638 else
639 {
640 m_bg[0]->draw(screen, bitmap, cliprect, 0, 1);
641 m_fg[0]->draw(screen, bitmap, cliprect, 0, 2);
642 }
643 m_tx->draw(screen, bitmap, cliprect, 0, 4);
644
645 draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT | SPRITE_YSHIFT_FLYTIGER);
646
647 return 0;
648 }
649
650
screen_update_bluehawk(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)651 u32 dooyong_z80_state::screen_update_bluehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
652 {
653 bitmap.fill(m_palette->black_pen(), cliprect);
654 screen.priority().fill(0, cliprect);
655
656 m_bg[0]->draw(screen, bitmap, cliprect, 0, 1);
657 m_fg[0]->draw(screen, bitmap, cliprect, 0, 2);
658 m_fg[1]->draw(screen, bitmap, cliprect, 0, 4);
659 m_tx->draw(screen, bitmap, cliprect, 0, 4);
660
661 draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT | SPRITE_YSHIFT_BLUEHAWK);
662
663 return 0;
664 }
665
screen_update_primella(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)666 u32 dooyong_z80_state::screen_update_primella(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
667 {
668 bitmap.fill(m_palette->black_pen(), cliprect);
669
670 m_bg[0]->draw(screen, bitmap, cliprect, 0, 0);
671 if (m_tx_pri) m_tx->draw(screen, bitmap, cliprect, 0, 0);
672 m_fg[0]->draw(screen, bitmap, cliprect, 0, 0);
673 if (!m_tx_pri) m_tx->draw(screen, bitmap, cliprect, 0, 0);
674
675 return 0;
676 }
677
678
draw_sprites(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)679 void dooyong_68k_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
680 {
681 /* Sprites take 8 16-bit words each in memory:
682 MSB LSB
683 [offs + 0] ???? ???? ???? ???E
684 [offs + 1] ???? ???? hhhh wwww
685 [offs + 2] ???? ???? ???? ????
686 [offs + 3] cccc cccc cccc cccc
687 [offs + 4] ???? ???x xxxx xxxx
688 [offs + 5] ???? ???? ???? ????
689 [offs + 6] ???? ???y yyyy yyyy
690 [offs + 7] ???? ???? ???? CCCC
691 ? = unused/unknown
692 E = enable
693 c = gfx code
694 x = x offset
695 y = y offset (signed)
696 C = color code
697 w = width
698 h = height */
699
700 const u16 *const buffered_spriteram = m_spriteram->buffer();
701 for (int offs = (m_spriteram->bytes() / 2) - 8; offs >= 0; offs -= 8)
702 {
703 if (buffered_spriteram[offs] & 0x0001) /* enable */
704 {
705 int code = buffered_spriteram[offs+3];
706 const int color = buffered_spriteram[offs+7] & 0x000f;
707 //TODO: This priority mechanism works for known games, but seems a bit strange.
708 //Are we missing something? (The obvious spare palette bit isn't it.)
709 const int pri = GFX_PMASK_4 | (((color == 0x00) || (color == 0x0f)) ? GFX_PMASK_2 : 0);
710 const int width = buffered_spriteram[offs+1] & 0x000f;
711 const int height = (buffered_spriteram[offs+1] & 0x00f0) >> 4;
712
713 const bool flip = flip_screen();
714 int sx = buffered_spriteram[offs+4] & 0x01ff;
715 int sy = (s16)buffered_spriteram[offs+6] & 0x01ff;
716 if (sy & 0x0100) sy |= ~(int)0x01ff; // Correctly sign-extend 9-bit number
717 if (flip)
718 {
719 sx = 498 - (16 * width) - sx;
720 sy = 240 - (16 * height) - sy;
721 }
722
723 for (int y = 0; y <= height; y++)
724 {
725 const int _y = sy + (16 * (flip ? (height - y) : y));
726 for (int x = 0; x <= width; x++)
727 {
728 const int _x = sx + (16 * (flip ? (width - x) : x));
729 m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
730 code,
731 color,
732 flip, flip,
733 _x, _y,
734 screen.priority(),
735 pri, 15);
736 code++;
737 }
738 }
739 }
740 }
741 }
742
743
screen_update_rshark(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)744 u32 rshark_state::screen_update_rshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
745 {
746 bitmap.fill(m_palette->black_pen(), cliprect);
747 screen.priority().fill(0, cliprect);
748
749 m_bg[0]->draw(screen, bitmap, cliprect, 0, 1);
750 m_bg[1]->draw(screen, bitmap, cliprect, 0, (m_bg2_priority ? 2 : 1));
751 m_fg[0]->draw(screen, bitmap, cliprect, 0, 2);
752 m_fg[1]->draw(screen, bitmap, cliprect, 0, 2);
753
754 draw_sprites(screen, bitmap, cliprect);
755
756 return 0;
757 }
758
759
screen_update_popbingo(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)760 u32 popbingo_state::screen_update_popbingo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
761 {
762 bitmap.fill(m_palette->black_pen(), cliprect);
763 screen.priority().fill(0, cliprect);
764
765 m_bg_bitmap[0].fill(m_palette->black_pen(), cliprect);
766 m_bg[0]->draw(screen, m_bg_bitmap[0], cliprect, 0, 1);
767
768 m_bg_bitmap[1].fill(m_palette->black_pen(), cliprect);
769 m_bg[1]->draw(screen, m_bg_bitmap[1], cliprect, 0, 1);
770
771 for (int y = cliprect.top(); cliprect.bottom() >= y; y++)
772 {
773 const u16 *const bg_src(&m_bg_bitmap[0].pix(y, 0));
774 const u16 *const bg2_src(&m_bg_bitmap[1].pix(y, 0));
775 u16 *const dst(&bitmap.pix(y, 0));
776 for (int x = cliprect.left(); cliprect.right() >= x; x++)
777 dst[x] = 0x100U | (bg_src[x] << 4) | bg2_src[x];
778 }
779
780 draw_sprites(screen, bitmap, cliprect);
781
782 return 0;
783 }
784
785
786 /***************************************************************************
787
788 Memory Structure(s)
789
790 ***************************************************************************/
791
lastday_map(address_map & map)792 void dooyong_z80_ym2203_state::lastday_map(address_map &map)
793 {
794 map(0x0000, 0x7fff).rom();
795 map(0x8000, 0xbfff).bankr(m_mainbank);
796 map(0xc000, 0xc007).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
797 map(0xc008, 0xc00f).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
798 map(0xc010, 0xc010).portr("SYSTEM");
799 map(0xc010, 0xc010).w(FUNC(dooyong_z80_ym2203_state::lastday_ctrl_w)); /* coin counter, flip screen */
800 map(0xc011, 0xc011).portr("P1");
801 map(0xc011, 0xc011).w(FUNC(dooyong_z80_ym2203_state::bankswitch_w));
802 map(0xc012, 0xc012).portr("P2");
803 map(0xc012, 0xc012).w("soundlatch", FUNC(generic_latch_8_device::write));
804 map(0xc013, 0xc013).portr("DSWA");
805 map(0xc014, 0xc014).portr("DSWB");
806 map(0xc800, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
807 map(0xd000, 0xdfff).rw(FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w));
808 map(0xe000, 0xefff).ram();
809 map(0xf000, 0xffff).ram().share("spriteram");
810 }
811
pollux_map(address_map & map)812 void dooyong_z80_ym2203_state::pollux_map(address_map &map)
813 {
814 map(0x0000, 0x7fff).rom();
815 map(0x8000, 0xbfff).bankr(m_mainbank);
816 map(0xc000, 0xcfff).ram();
817 map(0xd000, 0xdfff).ram().share("spriteram");
818 map(0xe000, 0xefff).rw(FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w));
819 map(0xf000, 0xf000).portr("DSWA").w(FUNC(dooyong_z80_ym2203_state::bankswitch_w));
820 map(0xf001, 0xf001).portr("DSWB");
821 map(0xf002, 0xf002).portr("P1");
822 map(0xf003, 0xf003).portr("P2");
823 map(0xf004, 0xf004).portr("SYSTEM");
824 map(0xf008, 0xf008).w(FUNC(dooyong_z80_ym2203_state::pollux_ctrl_w)); /* coin counter, flip screen */
825 map(0xf010, 0xf010).w("soundlatch", FUNC(generic_latch_8_device::write));
826 map(0xf018, 0xf01f).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
827 map(0xf020, 0xf027).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
828 map(0xf800, 0xffff).rw(FUNC(dooyong_z80_ym2203_state::paletteram_flytiger_r), FUNC(dooyong_z80_ym2203_state::paletteram_flytiger_w));
829 }
830
gulfstrm_map(address_map & map)831 void dooyong_z80_ym2203_state::gulfstrm_map(address_map &map)
832 {
833 map(0x0000, 0x7fff).rom();
834 map(0x8000, 0xbfff).bankr(m_mainbank);
835 map(0xc000, 0xcfff).ram();
836 map(0xd000, 0xdfff).ram().share("spriteram");
837 map(0xe000, 0xefff).rw(FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w));
838 map(0xf000, 0xf000).portr("DSWA").w(FUNC(dooyong_z80_ym2203_state::bankswitch_w));
839 map(0xf001, 0xf001).portr("DSWB");
840 map(0xf002, 0xf002).portr("P2");
841 map(0xf003, 0xf003).portr("P1");
842 map(0xf004, 0xf004).portr("SYSTEM");
843 map(0xf008, 0xf008).w(FUNC(dooyong_z80_ym2203_state::pollux_ctrl_w)); /* coin counter, flip screen */
844 map(0xf010, 0xf010).w("soundlatch", FUNC(generic_latch_8_device::write));
845 map(0xf018, 0xf01f).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
846 map(0xf020, 0xf027).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
847 map(0xf800, 0xffff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
848 }
849
bluehawk_map(address_map & map)850 void dooyong_z80_state::bluehawk_map(address_map &map)
851 {
852 map(0x0000, 0x7fff).rom();
853 map(0x8000, 0xbfff).bankr(m_mainbank);
854 map(0xc000, 0xc000).portr("DSWA");
855 map(0xc000, 0xc000).w(FUNC(dooyong_z80_state::flip_screen_w));
856 map(0xc001, 0xc001).portr("DSWB");
857 map(0xc002, 0xc002).portr("P1");
858 map(0xc003, 0xc003).portr("P2");
859 map(0xc004, 0xc004).portr("SYSTEM");
860 map(0xc008, 0xc008).w(FUNC(dooyong_z80_state::bankswitch_w));
861 map(0xc010, 0xc010).w("soundlatch", FUNC(generic_latch_8_device::write));
862 map(0xc018, 0xc01f).w(m_fg[1], FUNC(dooyong_rom_tilemap_device::ctrl_w));
863 map(0xc040, 0xc047).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
864 map(0xc048, 0xc04f).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
865 map(0xc800, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
866 map(0xd000, 0xdfff).rw(FUNC(dooyong_z80_state::bluehawk_tx_r), FUNC(dooyong_z80_state::bluehawk_tx_w));
867 map(0xe000, 0xefff).ram().share("spriteram");
868 map(0xf000, 0xffff).ram();
869 }
870
flytiger_map(address_map & map)871 void dooyong_z80_state::flytiger_map(address_map &map)
872 {
873 map(0x0000, 0x7fff).rom();
874 map(0x8000, 0xbfff).bankr(m_mainbank);
875 map(0xc000, 0xcfff).ram().share("spriteram");
876 map(0xd000, 0xdfff).ram();
877 map(0xe000, 0xe000).portr("P1");
878 map(0xe000, 0xe000).w(FUNC(dooyong_z80_state::bankswitch_w));
879 map(0xe002, 0xe002).portr("P2");
880 map(0xe004, 0xe004).portr("SYSTEM");
881 map(0xe006, 0xe006).portr("DSWA");
882 map(0xe008, 0xe008).portr("DSWB");
883 map(0xe010, 0xe010).w(FUNC(dooyong_z80_state::flytiger_ctrl_w)); /* coin counter, flip screen */
884 map(0xe020, 0xe020).w("soundlatch", FUNC(generic_latch_8_device::write));
885 map(0xe030, 0xe037).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
886 map(0xe040, 0xe047).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
887 map(0xe800, 0xefff).rw(FUNC(dooyong_z80_state::paletteram_flytiger_r), FUNC(dooyong_z80_state::paletteram_flytiger_w));
888 map(0xf000, 0xffff).rw(FUNC(dooyong_z80_state::lastday_tx_r), FUNC(dooyong_z80_state::lastday_tx_w));
889 }
890
primella_map(address_map & map)891 void dooyong_z80_state::primella_map(address_map &map)
892 {
893 map(0x0000, 0x7fff).rom();
894 map(0x8000, 0xbfff).bankr(m_mainbank);
895 map(0xc000, 0xcfff).ram();
896 map(0xd000, 0xd3ff).ram(); /* what is this? looks like a palette? scratchpad RAM maybe? */
897 map(0xe000, 0xefff).rw(FUNC(dooyong_z80_state::bluehawk_tx_r), FUNC(dooyong_z80_state::bluehawk_tx_w));
898 map(0xf000, 0xf7ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
899 map(0xf800, 0xf800).portr("DSWA");
900 map(0xf800, 0xf800).w(FUNC(dooyong_z80_state::primella_ctrl_w)); /* bank switch, flip screen etc */
901 map(0xf810, 0xf810).portr("DSWB");
902 map(0xf810, 0xf810).w("soundlatch", FUNC(generic_latch_8_device::write));
903 map(0xf820, 0xf820).portr("P1");
904 map(0xf830, 0xf830).portr("P2");
905 map(0xf840, 0xf840).portr("SYSTEM");
906 map(0xfc00, 0xfc07).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
907 map(0xfc08, 0xfc0f).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w));
908 }
909
rshark_map(address_map & map)910 void rshark_state::rshark_map(address_map &map)
911 {
912 map.global_mask(0xfffff); /* super-x needs this and is similar */
913 map(0x000000, 0x03ffff).rom();
914 map(0x040000, 0x04cfff).ram();
915 map(0x04d000, 0x04dfff).ram().share("spriteram");
916 map(0x04e000, 0x04ffff).ram();
917 map(0x0c0002, 0x0c0003).portr("DSW");
918 map(0x0c0004, 0x0c0005).portr("P1_P2");
919 map(0x0c0006, 0x0c0007).portr("SYSTEM");
920 map(0x0c4000, 0x0c400f).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
921 map(0x0c4010, 0x0c401f).w(m_bg[1], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
922 map(0x0c8000, 0x0c8fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
923 map(0x0c0013, 0x0c0013).w("soundlatch", FUNC(generic_latch_8_device::write));
924 map(0x0c0015, 0x0c0015).w(FUNC(rshark_state::ctrl_w)); /* flip screen + unknown stuff */
925 map(0x0cc000, 0x0cc00f).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
926 map(0x0cc010, 0x0cc01f).w(m_fg[1], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
927 }
928
superx_map(address_map & map)929 void rshark_state::superx_map(address_map &map)
930 {
931 map.global_mask(0xfffff);
932 map(0x000000, 0x03ffff).rom();
933 map(0x0d0000, 0x0dcfff).ram();
934 map(0x0dd000, 0x0ddfff).ram().share("spriteram");
935 map(0x0de000, 0x0dffff).ram();
936 map(0x080002, 0x080003).portr("DSW");
937 map(0x080004, 0x080005).portr("P1_P2");
938 map(0x080006, 0x080007).portr("SYSTEM");
939 map(0x084000, 0x08400f).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
940 map(0x084010, 0x08401f).w(m_bg[1], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
941 map(0x088000, 0x088fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
942 map(0x080013, 0x080013).w("soundlatch", FUNC(generic_latch_8_device::write));
943 map(0x080015, 0x080015).w(FUNC(rshark_state::ctrl_w)); /* flip screen + unknown stuff */
944 map(0x08c000, 0x08c00f).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
945 map(0x08c010, 0x08c01f).w(m_fg[1], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
946 }
947
popbingo_map(address_map & map)948 void popbingo_state::popbingo_map(address_map &map)
949 {
950 map.global_mask(0xfffff);
951 map(0x000000, 0x03ffff).rom();
952 map(0x040000, 0x04cfff).ram();
953 map(0x04d000, 0x04dfff).ram().share("spriteram");
954 map(0x04e000, 0x04ffff).ram();
955 map(0x0c0002, 0x0c0003).portr("DSW");
956 map(0x0c0004, 0x0c0005).portr("P1_P2");
957 map(0x0c0006, 0x0c0007).portr("SYSTEM");
958 map(0x0c0013, 0x0c0013).w("soundlatch", FUNC(generic_latch_8_device::write));
959 map(0x0c0015, 0x0c0015).w(FUNC(popbingo_state::ctrl_w));
960 map(0x0c0018, 0x0c001b).nopw(); // ?
961 map(0x0c4000, 0x0c400f).w(m_bg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
962 map(0x0c4010, 0x0c401f).w(m_bg[1], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
963 map(0x0c8000, 0x0c8fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
964 //map(0x08c000, 0x08c00f).w(m_fg[0], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); apparently not present
965 //map(0x08c010, 0x08c01f).w(m_fg[1], FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); apparently not present
966 map(0x0dc000, 0x0dc01f).ram(); // registers of some kind?
967 }
968
lastday_sound_map(address_map & map)969 void dooyong_z80_ym2203_state::lastday_sound_map(address_map &map)
970 {
971 map(0x0000, 0x7fff).rom();
972 map(0xc000, 0xc7ff).ram();
973 map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read));
974 map(0xf000, 0xf001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
975 map(0xf002, 0xf003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
976 }
977
pollux_sound_map(address_map & map)978 void dooyong_z80_ym2203_state::pollux_sound_map(address_map &map)
979 {
980 map(0x0000, 0xefff).rom();
981 map(0xf000, 0xf7ff).ram();
982 map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read));
983 map(0xf802, 0xf803).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
984 map(0xf804, 0xf805).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
985 }
986
bluehawk_sound_map(address_map & map)987 void dooyong_state::bluehawk_sound_map(address_map &map)
988 {
989 map(0x0000, 0xefff).rom();
990 map(0xf000, 0xf7ff).ram();
991 map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read));
992 map(0xf808, 0xf809).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
993 map(0xf80a, 0xf80a).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
994 }
995
996 /***************************************************************************
997
998 Z80 Generic port definitions
999
1000 ***************************************************************************/
1001
1002 INPUT_PORTS_START( dooyongz80_generic )
1003 PORT_START("DSWA")
1004 PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_LOW, "SWA:1" )
1005 PORT_DIPNAME( 0x02, 0x02, "Coin Type" ) PORT_DIPLOCATION("SWA:2")
1006 PORT_DIPSETTING( 0x02, "A" )
1007 PORT_DIPSETTING( 0x00, "B" )
1008 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWA:3")
1009 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1010 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
1011 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SWA:4")
1012 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
1013 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1014 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:5,6")
1015 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1016 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1017 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1018 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1019 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1020 PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1021 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1022 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1023 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWA:7,8")
1024 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1025 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1026 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1027 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWA", 0x02, EQUALS, 0x02)
1028 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1029 PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1030 PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1031 PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSWA", 0x02, NOTEQUALS, 0x02)
1032
1033 PORT_START("DSWB")
1034 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:1,2")
1035 PORT_DIPSETTING( 0x00, "1" )
1036 PORT_DIPSETTING( 0x02, "2" )
1037 PORT_DIPSETTING( 0x03, "3" )
1038 PORT_DIPSETTING( 0x01, "4" )
1039 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SWB:3,4")
1040 PORT_DIPSETTING( 0x08, DEF_STR( Easy ) )
1041 PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) )
1042 PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
1043 PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
1044 PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SWB:5" )
1045 PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SWB:6" )
1046 PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SWB:7" )
1047 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SWB:8")
1048 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
1049 PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
1050
1051 PORT_START("P1")
1052 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
1053 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
1054 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
1055 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
1056 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1057 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1058 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1059 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1060
1061 PORT_START("P2")
1062 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
1063 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
1064 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
1065 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
1066 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1067 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1068 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1069 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1070
1071 PORT_START("SYSTEM")
1072 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1073 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
1074 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
1075 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
1076 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1077 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1078 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1079 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1080 INPUT_PORTS_END
1081
1082 /***************************************************************************
1083
1084 M68 Generic port definitions
1085
1086 ***************************************************************************/
1087
1088 INPUT_PORTS_START( dooyongm68_generic )
1089 PORT_START("DSW")
1090 PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_LOW, "SWA:1" )
1091 PORT_DIPNAME( 0x0002, 0x0002, "Coin Type" ) PORT_DIPLOCATION("SWA:2")
1092 PORT_DIPSETTING( 0x0002, "A" )
1093 PORT_DIPSETTING( 0x0000, "B" )
1094 PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWA:3")
1095 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
1096 PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
1097 PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SWA:4")
1098 PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
1099 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1100 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:5,6")
1101 PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1102 PORT_DIPSETTING( 0x0030, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1103 PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1104 PORT_DIPSETTING( 0x0020, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1105 PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1106 PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1107 PORT_DIPSETTING( 0x0020, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1108 PORT_DIPSETTING( 0x0030, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1109 PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWA:7,8")
1110 PORT_DIPSETTING( 0x0040, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1111 PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1112 PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1113 PORT_DIPSETTING( 0x0080, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1114 PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1115 PORT_DIPSETTING( 0x0080, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1116 PORT_DIPSETTING( 0x0040, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1117 PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1118 PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:1,2")
1119 PORT_DIPSETTING( 0x0000, "1" )
1120 PORT_DIPSETTING( 0x0200, "2" )
1121 PORT_DIPSETTING( 0x0300, "3" )
1122 PORT_DIPSETTING( 0x0100, "4" )
1123 PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SWB:3,4")
1124 PORT_DIPSETTING( 0x0800, DEF_STR( Easy ) )
1125 PORT_DIPSETTING( 0x0c00, DEF_STR( Normal ) )
1126 PORT_DIPSETTING( 0x0400, DEF_STR( Hard ) )
1127 PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
1128 PORT_DIPUNUSED_DIPLOC( 0x1000, 0x1000, "SWB:5" )
1129 PORT_DIPUNUSED_DIPLOC( 0x2000, 0x2000, "SWB:6" )
1130 PORT_DIPUNUSED_DIPLOC( 0x4000, 0x4000, "SWB:7" )
1131 PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SWB:8")
1132 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1133 PORT_DIPSETTING( 0x8000, DEF_STR( Yes ) )
1134
1135 PORT_START("P1_P2")
1136 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
1137 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
1138 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
1139 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
1140 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1141 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1142 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1143 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
1144 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
1145 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
1146 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
1147 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
1148 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1149 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1150 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1151 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
1152
1153 PORT_START("SYSTEM")
1154 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1155 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
1156 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN2 )
1157 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
1158 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 )
1159 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1160 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1161 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1162 INPUT_PORTS_END
1163
1164 /***************************************************************************
1165
1166 Game-specific port definitions
1167
1168 ***************************************************************************/
1169
1170 INPUT_PORTS_START( lastday )
1171 PORT_INCLUDE( dooyongz80_generic )
1172
1173 PORT_MODIFY("DSWB")
1174 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:5,6")
1175 PORT_DIPSETTING( 0x30, "Every 200000" )
1176 PORT_DIPSETTING( 0x20, "Every 240000" )
1177 PORT_DIPSETTING( 0x10, "280000" )
1178 PORT_DIPSETTING( 0x00, DEF_STR( None ) )
1179 PORT_DIPNAME( 0x40, 0x40, "Speed" ) PORT_DIPLOCATION("SWB:7")
1180 PORT_DIPSETTING( 0x00, DEF_STR( Low ) )
1181 PORT_DIPSETTING( 0x40, DEF_STR( High ) )
1182
1183 PORT_MODIFY("SYSTEM")
1184 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
1185 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1186 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
1187 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_TILT ) /* maybe, but I'm not sure */
1188 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1189 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
1190 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1191 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1192 INPUT_PORTS_END
1193
1194 INPUT_PORTS_START( gulfstrm )
1195 PORT_INCLUDE( dooyongz80_generic )
1196
1197 PORT_MODIFY("DSWB")
1198 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:5,6")
1199 PORT_DIPSETTING( 0x30, "Every 300,000" )
1200 PORT_DIPSETTING( 0x20, "Every 400,000" )
1201 PORT_DIPSETTING( 0x10, "Every 500,000" )
1202 PORT_DIPSETTING( 0x00, DEF_STR( None ) )
1203 PORT_DIPNAME( 0x40, 0x40, "Power Rise(?)" ) PORT_DIPLOCATION("SWB:7")
1204 PORT_DIPSETTING( 0x40, "1" )
1205 PORT_DIPSETTING( 0x00, "2" )
1206
1207 PORT_MODIFY("SYSTEM")
1208 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1209 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1210 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
1211 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1212 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") /* ??? */
1213 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
1214 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
1215 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1216 INPUT_PORTS_END
1217
1218 INPUT_PORTS_START( pollux )
1219 PORT_INCLUDE( dooyongz80_generic )
1220
1221 PORT_MODIFY("SYSTEM")
1222 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1223 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1224 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
1225 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1226 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") // palette cycle effects need this to work
1227 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
1228 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
1229 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1230 INPUT_PORTS_END
1231
1232 INPUT_PORTS_START( bluehawk )
1233 PORT_INCLUDE( dooyongz80_generic )
1234 INPUT_PORTS_END
1235
1236 INPUT_PORTS_START( flytiger )
1237 PORT_INCLUDE( dooyongz80_generic )
1238
1239 PORT_MODIFY("DSWB")
1240 PORT_DIPNAME( 0x40, 0x40, "Auto Fire" ) PORT_DIPLOCATION("SWB:7") /* Mainly (only?) for 3-way charge */
1241 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1242 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
1243
1244 PORT_MODIFY("SYSTEM")
1245 // PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") // allows title screen + ending screen colours to cycle (but I'm not sure they're meant to, reference shots suggest not, maybe a debug port?)
1246 INPUT_PORTS_END
1247
1248 INPUT_PORTS_START( sadari )
1249 PORT_INCLUDE( dooyongz80_generic )
1250
1251 PORT_MODIFY("DSWB")
1252 PORT_DIPNAME( 0x03, 0x01, "Show Girl" ) PORT_DIPLOCATION("SWB:1,2")
1253 PORT_DIPSETTING( 0x00, "Skip Skip Skip" )
1254 PORT_DIPSETTING( 0x03, "Dress Dress Dress" )
1255 PORT_DIPSETTING( 0x02, "Dress Half Half" )
1256 PORT_DIPSETTING( 0x01, "Dress Half Naked" )
1257 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SWB:5")
1258 PORT_DIPSETTING( 0x10, DEF_STR( Upright ) )
1259 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
1260 PORT_DIPNAME( 0x40, 0x40, "Girl Show Point" ) PORT_DIPLOCATION("SWB:7")
1261 PORT_DIPSETTING( 0x40, "Other Country" )
1262 PORT_DIPSETTING( 0x00, DEF_STR( Asia ) )
1263
1264 PORT_MODIFY("P1")
1265 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1266
1267 PORT_MODIFY("P2")
1268 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1269 INPUT_PORTS_END
1270
1271 INPUT_PORTS_START( primella )
1272 PORT_INCLUDE( dooyongz80_generic )
1273
1274 PORT_MODIFY("DSWB")
1275 PORT_DIPNAME( 0x03, 0x01, "Show Girl" ) PORT_DIPLOCATION("SWB:1,2")
1276 PORT_DIPSETTING( 0x00, "Skip Skip Skip" )
1277 PORT_DIPSETTING( 0x03, "Dress Dress Dress" )
1278 PORT_DIPSETTING( 0x02, "Dress Half Half" )
1279 PORT_DIPSETTING( 0x01, "Dress Half Naked" )
1280 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SWB:5")
1281 PORT_DIPSETTING( 0x10, DEF_STR( Upright ) )
1282 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
1283 INPUT_PORTS_END
1284
1285 INPUT_PORTS_START( rshark )
1286 PORT_INCLUDE( dooyongm68_generic )
1287
1288 PORT_MODIFY("DSW")
1289 PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWA:7,8")
1290 PORT_DIPSETTING( 0x0040, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1291 PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1292 PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1293 PORT_DIPSETTING( 0x0080, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW", 0x0002, EQUALS, 0x0002)
1294 PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1295 PORT_DIPSETTING( 0x0080, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1296 PORT_DIPSETTING( 0x0040, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1297 PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002)
1298 INPUT_PORTS_END
1299
1300 INPUT_PORTS_START( superx )
1301 PORT_INCLUDE( dooyongm68_generic )
1302
1303 PORT_MODIFY("DSW") /* In documentation this switch enables "service mode" but it never had any effect in game */
1304 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:1")
1305 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1306 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1307 INPUT_PORTS_END
1308
1309 INPUT_PORTS_START( popbingo )
1310 PORT_INCLUDE( dooyongm68_generic )
1311
1312 PORT_MODIFY("DSW")
1313 PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWA:3")
1314 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
1315 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1316 PORT_DIPNAME( 0x0100, 0x0100, "VS Max Round" ) PORT_DIPLOCATION("SWB:1")
1317 PORT_DIPSETTING( 0x0100, "3" )
1318 PORT_DIPSETTING( 0x0000, "1" )
1319 PORT_DIPUNKNOWN_DIPLOC( 0x0200, 0x0200, "SWB:2" )
1320 PORT_DIPNAME( 0x4000, 0x4000, "Blocks Don't Drop" ) PORT_DIPLOCATION("SWB:7")
1321 PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
1322 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1323 PORT_DIPUNKNOWN_DIPLOC( 0x8000, 0x8000, "SWB:8" )
1324 INPUT_PORTS_END
1325
1326 /***************************************************************************
1327
1328 Graphics definitions
1329
1330 ***************************************************************************/
1331
1332 const gfx_layout lastday_charlayout =
1333 {
1334 8,8,
1335 RGN_FRAC(1,2),
1336 4,
1337 { STEP2(0,4), STEP2(RGN_FRAC(1,2), 4) },
1338 { STEP4(0,1), STEP4(8,1) },
1339 { STEP8(0,2*8) },
1340 8*8*2
1341 };
1342
1343 const gfx_layout bluehawk_charlayout =
1344 {
1345 8,8,
1346 RGN_FRAC(1,1),
1347 4,
1348 { STEP4(0,1) },
1349 { STEP8(0,4) },
1350 { STEP8(0,4*8) },
1351 8*8*4
1352 };
1353
1354 const gfx_layout tilelayout =
1355 {
1356 32,32,
1357 RGN_FRAC(1,1),
1358 4,
1359 { STEP4(0,4) },
1360 {
1361 STEP4(0,1), STEP4(16,1),
1362 STEP4(4*8*32,1), STEP4(4*8*32+16,1),
1363 STEP4(2*4*8*32,1), STEP4(2*4*8*32+16,1),
1364 STEP4(3*4*8*32,1), STEP4(3*4*8*32+16,1)
1365 },
1366 { STEP32(0,4*8) },
1367 32*32*4
1368 };
1369
1370 const gfx_layout spritelayout =
1371 {
1372 16,16,
1373 RGN_FRAC(1,1),
1374 4,
1375 { STEP4(0,4) },
1376 { STEP4(0,1), STEP4(16,1), STEP4(4*8*16,1), STEP4(4*8*16+16,1) },
1377 { STEP16(0,4*8) },
1378 128*8
1379 };
1380
1381 const gfx_layout rshark_spritelayout =
1382 {
1383 16,16,
1384 RGN_FRAC(1,1),
1385 4,
1386 { STEP4(0,1) },
1387 { STEP8(0,4), STEP8(4*8*16,4) },
1388 { STEP16(0,4*8) },
1389 128*8
1390 };
1391
1392 GFXDECODE_START( gfx_lastday )
1393 GFXDECODE_ENTRY( "tx", 0, lastday_charlayout, 0, 16+64 )
1394 GFXDECODE_ENTRY( "sprite", 0, spritelayout, 256, 16+64 )
1395 GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16+64 )
1396 GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 16+64 )
1397 GFXDECODE_END
1398
GFXDECODE_START(gfx_flytiger)1399 GFXDECODE_START( gfx_flytiger )
1400 GFXDECODE_ENTRY( "tx", 0, lastday_charlayout, 0, 16+64 )
1401 GFXDECODE_ENTRY( "sprite", 0, spritelayout, 256, 16+64 )
1402 GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16+64 )
1403 GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 32+64 )
1404 GFXDECODE_END
1405
1406 GFXDECODE_START( gfx_bluehawk )
1407 GFXDECODE_ENTRY( "tx", 0, bluehawk_charlayout, 0, 16 )
1408 GFXDECODE_ENTRY( "sprite", 0, spritelayout, 256, 16 )
1409 GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16 )
1410 GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 16 )
1411 GFXDECODE_ENTRY( "fg1", 0, tilelayout, 0, 16 )
1412 GFXDECODE_END
1413
1414 GFXDECODE_START( gfx_primella )
1415 GFXDECODE_ENTRY( "tx", 0, bluehawk_charlayout, 0, 16 )
1416 /* no sprites */
1417 GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16 )
1418 GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 16 )
1419 GFXDECODE_END
1420
1421 GFXDECODE_START( gfx_rshark )
1422 /* no chars */
1423 GFXDECODE_ENTRY( "sprite", 0, rshark_spritelayout, 0, 16 )
1424 GFXDECODE_ENTRY( "fg1", 0, spritelayout, 256, 16 )
1425 GFXDECODE_ENTRY( "fg0", 0, spritelayout, 512, 16 )
1426 GFXDECODE_ENTRY( "bg1", 0, spritelayout, 768, 16 )
1427 GFXDECODE_ENTRY( "bg0", 0, spritelayout, 1024, 16 )
1428 GFXDECODE_END
1429
1430 GFXDECODE_START( gfx_popbingo )
1431 /* no chars */
1432 GFXDECODE_ENTRY( "sprite", 0, rshark_spritelayout, 0, 16 )
1433 GFXDECODE_ENTRY( "bg0", 0, tilelayout, 0, 1 )
1434 GFXDECODE_ENTRY( "bg1", 0, tilelayout, 0, 1 )
1435
1436 GFXDECODE_END
1437
1438 u8 dooyong_z80_ym2203_state::unk_r()
1439 {
1440 return 0;
1441 }
1442
1443
1444 /***************************************************************************
1445
1446 Machine driver(s)
1447
1448 ***************************************************************************/
1449
sound_2203(machine_config & config)1450 void dooyong_z80_ym2203_state::sound_2203(machine_config &config)
1451 {
1452 INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
1453
1454 SPEAKER(config, "mono").front_center();
1455
1456 GENERIC_LATCH_8(config, "soundlatch");
1457
1458 ym2203_device &ym1(YM2203(config, "ym1", 1500000));
1459 ym1.irq_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>));
1460 ym1.port_a_read_callback().set(FUNC(dooyong_z80_ym2203_state::unk_r));
1461 ym1.add_route(ALL_OUTPUTS, "mono", 0.40);
1462
1463 ym2203_device &ym2(YM2203(config, "ym2", 1500000));
1464 ym2.irq_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>));
1465 ym2.port_a_read_callback().set(FUNC(dooyong_z80_ym2203_state::unk_r));
1466 ym2.add_route(ALL_OUTPUTS, "mono", 0.40);
1467 }
1468
sound_2151(machine_config & config)1469 void dooyong_z80_state::sound_2151(machine_config &config)
1470 {
1471 SPEAKER(config, "mono").front_center();
1472
1473 GENERIC_LATCH_8(config, "soundlatch");
1474
1475 ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579'545_MHz_XTAL));
1476 ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
1477 ymsnd.add_route(0, "mono", 0.50);
1478 ymsnd.add_route(1, "mono", 0.50);
1479
1480 OKIM6295(config, "oki", 1_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60);
1481 }
1482
sound_2151_4mhz(machine_config & config)1483 void dooyong_state::sound_2151_4mhz(machine_config &config)
1484 {
1485 SPEAKER(config, "mono").front_center();
1486
1487 GENERIC_LATCH_8(config, "soundlatch");
1488
1489 ym2151_device &ymsnd(YM2151(config, "ymsnd", 16_MHz_XTAL/4)); /* 4MHz (16MHz/4 for most, 8Mhz/2 for Super-X) */
1490 ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
1491 ymsnd.add_route(0, "mono", 0.50);
1492 ymsnd.add_route(1, "mono", 0.50);
1493
1494 OKIM6295(config, "oki", 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); /* 1MHz (16MHz/16 for most, 8Mhz/8 for Super-X) */
1495 }
1496
lastday(machine_config & config)1497 void dooyong_z80_ym2203_state::lastday(machine_config &config)
1498 {
1499 /* basic machine hardware */
1500 Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8MHz verified for Last Day / D-day */
1501 m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::lastday_map);
1502 m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
1503
1504 Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4MHz verified for Last Day / D-day */
1505 m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::lastday_sound_map);
1506
1507 MCFG_MACHINE_START_OVERRIDE(dooyong_z80_ym2203_state, cpu_z80)
1508
1509 /* video hardware */
1510 BUFFERED_SPRITERAM8(config, m_spriteram);
1511
1512 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1513 screen.set_refresh_hz(60);
1514 screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
1515 screen.set_size(64*8, 32*8);
1516 screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
1517 screen.set_screen_update(FUNC(dooyong_z80_ym2203_state::screen_update_lastday));
1518 screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
1519 screen.set_palette(m_palette);
1520
1521 GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastday);
1522 PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
1523 DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 2, "bg0_tmap", 0x00000, -1);
1524 DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 3, "fg0_tmap", 0x00000, -1);
1525 m_fg[0]->set_transparent_pen(15);
1526 DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0);
1527
1528 MCFG_VIDEO_START_OVERRIDE(dooyong_z80_ym2203_state, lastday)
1529
1530 /* sound hardware */
1531 INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline(m_audiocpu, 0);
1532
1533 SPEAKER(config, "mono").front_center();
1534
1535 GENERIC_LATCH_8(config, "soundlatch");
1536
1537 ym2203_device &ym1(YM2203(config, "ym1", 16_MHz_XTAL/4)); /* 4MHz verified for Last Day / D-day */
1538 ym1.irq_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>));
1539 ym1.port_a_read_callback().set(FUNC(dooyong_z80_ym2203_state::unk_r));
1540 ym1.add_route(ALL_OUTPUTS, "mono", 0.40);
1541
1542 ym2203_device &ym2(YM2203(config, "ym2", 16_MHz_XTAL/4)); /* 4MHz verified for Last Day / D-day */
1543 ym2.irq_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>));
1544 ym2.port_a_read_callback().set(FUNC(dooyong_z80_ym2203_state::unk_r));
1545 ym2.add_route(ALL_OUTPUTS, "mono", 0.40);
1546 }
1547
gulfstrm(machine_config & config)1548 void dooyong_z80_ym2203_state::gulfstrm(machine_config &config)
1549 {
1550 /* basic machine hardware */
1551 Z80(config, m_maincpu, 8000000); /* ??? */
1552 m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::gulfstrm_map);
1553 m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
1554
1555 Z80(config, m_audiocpu, 8000000); /* ??? */
1556 m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::lastday_sound_map);
1557
1558 MCFG_MACHINE_START_OVERRIDE(dooyong_z80_ym2203_state, cpu_z80)
1559
1560 /* video hardware */
1561 BUFFERED_SPRITERAM8(config, m_spriteram);
1562
1563 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1564 screen.set_refresh_hz(60);
1565 screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
1566 screen.set_size(64*8, 32*8);
1567 screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
1568 screen.set_screen_update(FUNC(dooyong_z80_ym2203_state::screen_update_gulfstrm));
1569 screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
1570 screen.set_palette(m_palette);
1571
1572 GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastday);
1573 PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
1574 DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 2, "bg0_tmap", 0x00000, -1);
1575 DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 3, "fg0_tmap", 0x00000, -1);
1576 m_fg[0]->set_transparent_pen(15);
1577 DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0);
1578
1579 MCFG_VIDEO_START_OVERRIDE(dooyong_z80_ym2203_state, gulfstrm)
1580
1581 /* sound hardware */
1582 sound_2203(config); /* 3.579545MHz */
1583 }
1584
pollux(machine_config & config)1585 void dooyong_z80_ym2203_state::pollux(machine_config &config)
1586 {
1587 /* basic machine hardware */
1588 Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8Mhz */
1589 m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::pollux_map);
1590 m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
1591
1592 Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4Mhz */
1593 m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_ym2203_state::pollux_sound_map);
1594
1595 MCFG_MACHINE_START_OVERRIDE(dooyong_z80_ym2203_state, cpu_z80)
1596
1597 /* video hardware */
1598 BUFFERED_SPRITERAM8(config, m_spriteram);
1599
1600 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1601 screen.set_refresh_hz(60);
1602 screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
1603 screen.set_size(64*8, 32*8);
1604 screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
1605 screen.set_screen_update(FUNC(dooyong_z80_ym2203_state::screen_update_pollux));
1606 screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
1607 screen.set_palette(m_palette);
1608
1609 GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastday);
1610 PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024*2);
1611 DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 2, "bg0_tmap", 0x00000, -1);
1612 DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 3, "fg0_tmap", 0x00000, -1);
1613 m_fg[0]->set_transparent_pen(15);
1614 DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0);
1615
1616 MCFG_VIDEO_START_OVERRIDE(dooyong_z80_ym2203_state, pollux)
1617
1618 /* sound hardware */
1619 sound_2203(config); /* 1.5MHz verified */
1620 }
1621
bluehawk(machine_config & config)1622 void dooyong_z80_state::bluehawk(machine_config &config)
1623 {
1624 /* basic machine hardware */
1625 Z80(config, m_maincpu, 8000000); /* ??? */
1626 m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_map);
1627 m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
1628
1629 Z80(config, m_audiocpu, 4000000); /* ??? */
1630 m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_sound_map);
1631
1632 MCFG_MACHINE_START_OVERRIDE(dooyong_z80_state, cpu_z80)
1633
1634 /* video hardware */
1635 BUFFERED_SPRITERAM8(config, m_spriteram);
1636
1637 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1638 screen.set_refresh_hz(60);
1639 screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
1640 screen.set_size(64*8, 32*8);
1641 screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
1642 screen.set_screen_update(FUNC(dooyong_z80_state::screen_update_bluehawk));
1643 screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
1644 screen.set_palette(m_palette);
1645
1646 GFXDECODE(config, m_gfxdecode, m_palette, gfx_bluehawk);
1647 PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
1648
1649 DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 2, "bg0", 0x3c000, 0x4000);
1650 m_bg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback));
1651
1652 DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 3, "fg0", 0x3c000, 0x4000);
1653 m_fg[0]->set_transparent_pen(15);
1654 m_fg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback));
1655
1656 DOOYONG_ROM_TILEMAP(config, m_fg[1], m_gfxdecode, 4, "fg1", 0x1c000, 0x4000);
1657 m_fg[1]->set_transparent_pen(15);
1658 m_fg[1]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback));
1659
1660 DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0);
1661
1662 MCFG_VIDEO_START_OVERRIDE(dooyong_z80_state, bluehawk)
1663
1664 /* sound hardware */
1665 sound_2151(config); /* 3.579545MHz or 4Mhz ??? */
1666 }
1667
flytiger(machine_config & config)1668 void dooyong_z80_state::flytiger(machine_config &config)
1669 {
1670 /* basic machine hardware */
1671 Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8MHz */
1672 m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::flytiger_map);
1673 m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
1674
1675 Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4Mhz */
1676 m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_sound_map);
1677
1678 MCFG_MACHINE_START_OVERRIDE(dooyong_z80_state, cpu_z80)
1679
1680 /* video hardware */
1681 BUFFERED_SPRITERAM8(config, m_spriteram);
1682
1683 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1684 screen.set_refresh_hz(60);
1685 screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
1686 screen.set_size(64*8, 32*8);
1687 screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1 );
1688 screen.set_screen_update(FUNC(dooyong_z80_state::screen_update_flytiger));
1689 screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
1690 screen.set_palette(m_palette);
1691
1692 GFXDECODE(config, m_gfxdecode, m_palette, gfx_flytiger);
1693 PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024*2);
1694 DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 2, "bg0", 0x3c000, 0x4000);
1695 m_bg[0]->set_transparent_pen(15);
1696 DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 3, "fg0", 0x3c000, 0x4000);
1697 m_fg[0]->set_transparent_pen(15);
1698 DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0);
1699
1700 MCFG_VIDEO_START_OVERRIDE(dooyong_z80_state, flytiger)
1701
1702 /* sound hardware */
1703 sound_2151(config);
1704 }
1705
primella(machine_config & config)1706 void dooyong_z80_state::primella(machine_config &config)
1707 {
1708 /* basic machine hardware */
1709 Z80(config, m_maincpu, 16_MHz_XTAL/2); /* 8MHz */
1710 m_maincpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::primella_map);
1711 m_maincpu->set_vblank_int("screen", FUNC(dooyong_state::irq0_line_hold));
1712
1713 Z80(config, m_audiocpu, 16_MHz_XTAL/4); /* 4MHz */
1714 m_audiocpu->set_addrmap(AS_PROGRAM, &dooyong_z80_state::bluehawk_sound_map);
1715
1716 MCFG_MACHINE_START_OVERRIDE(dooyong_z80_state, cpu_z80)
1717
1718 /* video hardware */
1719 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1720 screen.set_refresh_hz(60);
1721 screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
1722 screen.set_size(64*8, 32*8);
1723 screen.set_visarea(8*8, (64-8)*8-1, 0*8, 32*8-1 );
1724 screen.set_screen_update(FUNC(dooyong_z80_state::screen_update_primella));
1725 screen.set_palette(m_palette);
1726
1727 GFXDECODE(config, m_gfxdecode, m_palette, gfx_primella);
1728 PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
1729
1730 DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 1, "bg0", -0x4000, 0x4000);
1731 m_bg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback));
1732
1733 DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 2, "fg0", -0x4000, 0x4000);
1734 m_fg[0]->set_transparent_pen(15);
1735 m_fg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback));
1736
1737 DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0);
1738
1739 MCFG_VIDEO_START_OVERRIDE(dooyong_z80_state, primella)
1740
1741 /* sound hardware */
1742 sound_2151_4mhz(config); /* PCB has only 1 OSC at 16Mhz */
1743 }
1744
1745
TIMER_DEVICE_CALLBACK_MEMBER(dooyong_68k_state::scanline)1746 TIMER_DEVICE_CALLBACK_MEMBER(dooyong_68k_state::scanline)
1747 {
1748 int scanline = param;
1749
1750 if (scanline == 248) // vblank-out irq
1751 m_maincpu->set_input_line(5, HOLD_LINE);
1752
1753 if (scanline == 120) // timer irq?
1754 m_maincpu->set_input_line(6, HOLD_LINE);
1755 }
1756
1757
dooyong_68k(machine_config & config)1758 void rshark_state::dooyong_68k(machine_config &config)
1759 {
1760 // basic machine hardware
1761 M68000(config, m_maincpu, 8_MHz_XTAL); // 8MHz measured on Super-X
1762 TIMER(config, "scantimer").configure_scanline(FUNC(rshark_state::scanline), "screen", 0, 1);
1763
1764 Z80(config, m_audiocpu, 8_MHz_XTAL/2); // 4MHz measured on Super-X
1765 m_audiocpu->set_addrmap(AS_PROGRAM, &rshark_state::bluehawk_sound_map);
1766
1767 // video hardware
1768 BUFFERED_SPRITERAM16(config, m_spriteram);
1769
1770 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1771 screen.set_refresh_hz(60);
1772 screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
1773 screen.set_size(64*8, 32*8);
1774 screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
1775 screen.set_screen_update(FUNC(rshark_state::screen_update_rshark));
1776 screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
1777 screen.set_palette(m_palette);
1778
1779 GFXDECODE(config, m_gfxdecode, m_palette, gfx_rshark);
1780 PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
1781
1782 RSHARK_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 4, "bg0", 0x00000, 0x20000, "tmap_hi", 0x60000, 0x20000);
1783 m_bg[0]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback));
1784
1785 RSHARK_ROM_TILEMAP(config, m_bg[1], m_gfxdecode, 3, "bg1", 0x00000, 0x20000, "tmap_hi", 0x40000, 0x20000);
1786 m_bg[1]->set_transparent_pen(15);
1787 m_bg[1]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback));
1788
1789 RSHARK_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 2, "fg0", 0x00000, 0x20000, "tmap_hi", 0x20000, 0x20000);
1790 m_fg[0]->set_transparent_pen(15);
1791 m_fg[0]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback));
1792
1793 RSHARK_ROM_TILEMAP(config, m_fg[1], m_gfxdecode, 1, "fg1", 0x00000, 0x20000, "tmap_hi", 0x00000, 0x20000);
1794 m_fg[1]->set_transparent_pen(15);
1795 m_fg[1]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback));
1796
1797 // sound hardware
1798 sound_2151_4mhz(config);
1799 }
1800
rshark(machine_config & config)1801 void rshark_state::rshark(machine_config &config)
1802 {
1803 dooyong_68k(config);
1804
1805 m_maincpu->set_addrmap(AS_PROGRAM, &rshark_state::rshark_map);
1806 }
1807
superx(machine_config & config)1808 void rshark_state::superx(machine_config &config)
1809 {
1810 dooyong_68k(config);
1811
1812 m_maincpu->set_addrmap(AS_PROGRAM, &rshark_state::superx_map);
1813 }
1814
popbingo(machine_config & config)1815 void popbingo_state::popbingo(machine_config &config)
1816 {
1817 // basic machine hardware
1818 M68000(config, m_maincpu, 20_MHz_XTAL/2); // 10MHz measured
1819 m_maincpu->set_addrmap(AS_PROGRAM, &popbingo_state::popbingo_map);
1820 TIMER(config, "scantimer").configure_scanline(FUNC(popbingo_state::scanline), "screen", 0, 1);
1821
1822 Z80(config, m_audiocpu, 16_MHz_XTAL/4); // 4MHz measured
1823 m_audiocpu->set_addrmap(AS_PROGRAM, &popbingo_state::bluehawk_sound_map);
1824
1825 // video hardware
1826 BUFFERED_SPRITERAM16(config, m_spriteram);
1827
1828 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1829 m_screen->set_refresh_hz(60);
1830 m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
1831 m_screen->set_size(64*8, 32*8);
1832 m_screen->set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
1833 m_screen->set_screen_update(FUNC(popbingo_state::screen_update_popbingo));
1834 m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising));
1835 m_screen->set_palette(m_palette);
1836
1837 GFXDECODE(config, m_gfxdecode, m_palette, gfx_popbingo);
1838 PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
1839
1840 DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 1, "bg0", 0x00000, 0x4000);
1841 m_bg[0]->set_tile_callback(FUNC(popbingo_state::popbingo_tile_callback));
1842
1843 DOOYONG_ROM_TILEMAP(config, m_bg[1], m_gfxdecode, 2, "bg1", 0x00000, 0x4000);
1844 m_bg[1]->set_tile_callback(FUNC(popbingo_state::popbingo_tile_callback));
1845
1846 // sound hardware
1847 sound_2151_4mhz(config);
1848 }
1849
1850 } // anonymous namespace
1851
1852
1853 /***************************************************************************
1854
1855 ROM definition(s)
1856
1857 ***************************************************************************/
1858
1859 ROM_START( lastday ) /* 90030003 PCB */
1860 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
1861 ROM_LOAD( "lday3.s5", 0x00000, 0x10000, CRC(a06dfb1e) SHA1(c6220eda8c01d55862700e369db7291dbbedc8c8) )
1862 ROM_LOAD( "4.u5", 0x10000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
1863
1864 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
1865 ROM_LOAD( "1.d3", 0x00000, 0x08000, CRC(dd4316fd) SHA1(496e6657bb76d91f488a2464d1af1be095ab9105) ) /* empty */
1866 ROM_CONTINUE( 0x00000, 0x08000 )
1867
1868 ROM_REGION( 0x8000, "tx", 0 ) /* chars */
1869 ROM_LOAD( "2.j4", 0x00000, 0x08000, CRC(83eb572c) SHA1(e915afd55d505bce202206c9ecfa89bad561ef6c) ) /* empty */
1870 ROM_CONTINUE( 0x00000, 0x08000 )
1871
1872 ROM_REGION16_BE( 0x40000, "sprite", 0 ) /* sprites */
1873 ROM_LOAD16_BYTE( "16.d14", 0x00000, 0x20000, CRC(df503504) SHA1(daa58a7bc24415b5f59b7c7cc918bc85de9702a3) )
1874 ROM_LOAD16_BYTE( "15.a14", 0x00001, 0x20000, CRC(cd990442) SHA1(891b2163db23ab0bb40cbadce6e06fc067d0532f) )
1875
1876 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
1877 ROM_LOAD16_BYTE( "6.s9", 0x00000, 0x20000, CRC(1054361d) SHA1(52566786ca8177404be8b66fd7de94ac25fc49ea) )
1878 ROM_LOAD16_BYTE( "9.s11", 0x00001, 0x20000, CRC(6952ef4d) SHA1(b4e5ec02e97df213fe0bd4cd8a2ca77d7ecf8ad5) )
1879 ROM_LOAD16_BYTE( "7.u9", 0x40000, 0x20000, CRC(6e57a888) SHA1(8efe876ea3c788b83e8291f7fc6f55b90de158c8) )
1880 ROM_LOAD16_BYTE( "10.u11", 0x40001, 0x20000, CRC(a5548dca) SHA1(9914e01c1739c3bfd868a01e53c9030726ced4ea) )
1881
1882 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
1883 ROM_LOAD16_BYTE( "12.s13", 0x00000, 0x20000, CRC(992bc4af) SHA1(94570ebd1ee6acf1871cf914907acd12dca4026e) )
1884 ROM_LOAD16_BYTE( "14.s14", 0x00001, 0x20000, CRC(a79abc85) SHA1(3e63dad11db9b7420331403a1d551d8c041c4cc2) )
1885
1886 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* background tilemaps */
1887 ROM_LOAD16_BYTE( "5.r9", 0x00000, 0x10000, CRC(4789bae8) SHA1(6ffecc16eb8c9c783b02c4ef68cb5098b01fafef) )
1888 ROM_LOAD16_BYTE( "8.r11", 0x00001, 0x10000, CRC(92402b9a) SHA1(2ca8078d2687afbe7b6fc5412de16c6fbc11a650) )
1889
1890 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
1891 ROM_LOAD16_BYTE( "11.r13", 0x00000, 0x10000, CRC(04b961de) SHA1(7a94c9d0800d79048660cf3758708a346ead33f9) )
1892 ROM_LOAD16_BYTE( "13.r14", 0x00001, 0x10000, CRC(6bdbd887) SHA1(a54f26f9ddd72b8b8f7a030610c1c4a5f94a3358) )
1893 ROM_END
1894
1895 ROM_START( lastdaya ) /* 90030003 PCB */
1896 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
1897 ROM_LOAD( "lday3.s5", 0x00000, 0x10000, CRC(a06dfb1e) SHA1(c6220eda8c01d55862700e369db7291dbbedc8c8) )
1898 ROM_LOAD( "4.u5", 0x10000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
1899
1900 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
1901 ROM_LOAD( "e1.d3", 0x00000, 0x08000, CRC(ce96e106) SHA1(5ef1f221618abd757e02db79c3d7016100f30c07) ) /* empty */
1902 ROM_CONTINUE( 0x00000, 0x08000 )
1903
1904 ROM_REGION( 0x08000, "tx", 0 ) /* chars */
1905 ROM_LOAD( "2.j4", 0x00000, 0x08000, CRC(83eb572c) SHA1(e915afd55d505bce202206c9ecfa89bad561ef6c) ) /* empty */
1906 ROM_CONTINUE( 0x00000, 0x08000 )
1907
1908 ROM_REGION16_BE( 0x40000, "sprite", 0 ) /* sprites */
1909 ROM_LOAD16_BYTE( "16.d14", 0x00000, 0x20000, CRC(df503504) SHA1(daa58a7bc24415b5f59b7c7cc918bc85de9702a3) )
1910 ROM_LOAD16_BYTE( "15.a14", 0x00001, 0x20000, CRC(cd990442) SHA1(891b2163db23ab0bb40cbadce6e06fc067d0532f) )
1911
1912 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
1913 ROM_LOAD16_BYTE( "e6.s9", 0x00000, 0x20000, CRC(7623c443) SHA1(abfed648a8cc438dbb7de9c23a663082667ca366) )
1914 ROM_LOAD16_BYTE( "e9.s11", 0x00001, 0x20000, CRC(717f6a0e) SHA1(0b2d98fa5b8734210df18bce7725972fd42a6e4a) )
1915 ROM_LOAD16_BYTE( "7.u9", 0x40000, 0x20000, CRC(6e57a888) SHA1(8efe876ea3c788b83e8291f7fc6f55b90de158c8) )
1916 ROM_LOAD16_BYTE( "10.u11", 0x40001, 0x20000, CRC(a5548dca) SHA1(9914e01c1739c3bfd868a01e53c9030726ced4ea) )
1917
1918 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
1919 ROM_LOAD16_BYTE( "12.s13", 0x00000, 0x20000, CRC(992bc4af) SHA1(94570ebd1ee6acf1871cf914907acd12dca4026e) )
1920 ROM_LOAD16_BYTE( "14.s14", 0x00001, 0x20000, CRC(a79abc85) SHA1(3e63dad11db9b7420331403a1d551d8c041c4cc2) )
1921
1922 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* bg tilemaps */
1923 ROM_LOAD16_BYTE( "e5.r9", 0x00000, 0x10000, CRC(5f801410) SHA1(382c1bcd69a6a5c245d2ba7603bc273fba840c8f) )
1924 ROM_LOAD16_BYTE( "e8.r11", 0x00001, 0x10000, CRC(a7b8250b) SHA1(4bd79c09dacf69e1993353d7fcc7746d1324e9b0) )
1925
1926 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
1927 ROM_LOAD16_BYTE( "11.r13", 0x00000, 0x10000, CRC(04b961de) SHA1(7a94c9d0800d79048660cf3758708a346ead33f9) )
1928 ROM_LOAD16_BYTE( "13.r14", 0x00001, 0x10000, CRC(6bdbd887) SHA1(a54f26f9ddd72b8b8f7a030610c1c4a5f94a3358) )
1929 ROM_END
1930
1931 ROM_START( ddaydoo ) /* 90030003 PCB */
1932 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
1933 ROM_LOAD( "3.s5", 0x00000, 0x10000, CRC(7817d4f3) SHA1(b85db234c04f248fd2927a2224380783780673f5)) /* closest to 'lastday' set */
1934 ROM_LOAD( "4.u5", 0x10000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
1935
1936 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
1937 ROM_LOAD( "1.d3", 0x00000, 0x08000, CRC(dd4316fd) SHA1(496e6657bb76d91f488a2464d1af1be095ab9105) ) /* empty */
1938 ROM_CONTINUE( 0x00000, 0x08000 )
1939
1940 ROM_REGION( 0x08000, "tx", 0 ) /* chars */
1941 ROM_LOAD( "2.j4", 0x00000, 0x08000, CRC(83eb572c) SHA1(e915afd55d505bce202206c9ecfa89bad561ef6c) ) /* empty */
1942 ROM_CONTINUE( 0x00000, 0x08000 )
1943
1944 ROM_REGION16_BE( 0x40000, "sprite", 0 ) /* sprites */
1945 ROM_LOAD16_BYTE( "16.d14", 0x00000, 0x20000, CRC(df503504) SHA1(daa58a7bc24415b5f59b7c7cc918bc85de9702a3) )
1946 ROM_LOAD16_BYTE( "15.a14", 0x00001, 0x20000, CRC(cd990442) SHA1(891b2163db23ab0bb40cbadce6e06fc067d0532f) )
1947
1948 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
1949 ROM_LOAD16_BYTE( "6.s9", 0x00000, 0x20000, CRC(1054361d) SHA1(52566786ca8177404be8b66fd7de94ac25fc49ea) )
1950 ROM_LOAD16_BYTE( "9.s11", 0x00001, 0x20000, CRC(6952ef4d) SHA1(b4e5ec02e97df213fe0bd4cd8a2ca77d7ecf8ad5) )
1951 ROM_LOAD16_BYTE( "7.u9", 0x40000, 0x20000, CRC(6e57a888) SHA1(8efe876ea3c788b83e8291f7fc6f55b90de158c8) )
1952 ROM_LOAD16_BYTE( "10.u11", 0x40001, 0x20000, CRC(a5548dca) SHA1(9914e01c1739c3bfd868a01e53c9030726ced4ea) )
1953
1954 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
1955 ROM_LOAD16_BYTE( "12.s13", 0x00000, 0x20000, CRC(992bc4af) SHA1(94570ebd1ee6acf1871cf914907acd12dca4026e) )
1956 ROM_LOAD16_BYTE( "14.s14", 0x00001, 0x20000, CRC(a79abc85) SHA1(3e63dad11db9b7420331403a1d551d8c041c4cc2) )
1957
1958 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* background tilemaps */
1959 ROM_LOAD16_BYTE( "5.r9", 0x00000, 0x10000, CRC(4789bae8) SHA1(6ffecc16eb8c9c783b02c4ef68cb5098b01fafef) )
1960 ROM_LOAD16_BYTE( "8.r11", 0x00001, 0x10000, CRC(92402b9a) SHA1(2ca8078d2687afbe7b6fc5412de16c6fbc11a650) )
1961
1962 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
1963 ROM_LOAD16_BYTE( "11.r13", 0x00000, 0x10000, CRC(04b961de) SHA1(7a94c9d0800d79048660cf3758708a346ead33f9) )
1964 ROM_LOAD16_BYTE( "13.r14", 0x00001, 0x10000, CRC(6bdbd887) SHA1(a54f26f9ddd72b8b8f7a030610c1c4a5f94a3358) )
1965 ROM_END
1966
1967 ROM_START( gulfstrm )
1968 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
1969 ROM_LOAD( "1.l4", 0x00000, 0x20000, CRC(59e0478b) SHA1(dd6e48c6e91ddb087d20336eab79bbadd968d4b1) )
1970
1971 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
1972 ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
1973
1974 ROM_REGION( 0x08000, "tx", 0 ) /* chars */
1975 ROM_LOAD( "2.s4", 0x00000, 0x08000, CRC(c2d65a25) SHA1(a198b42c0737b253aca5bab6fb58ab561ccc1d5c) ) /* empty */
1976 ROM_CONTINUE( 0x00000, 0x08000 )
1977
1978 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
1979 ROM_LOAD16_BYTE( "14.b1", 0x00000, 0x20000, CRC(67bdf73d) SHA1(3e357448b6f255fdec731f143afa3d3149523ed2) )
1980 ROM_LOAD16_BYTE( "16.c1", 0x00001, 0x20000, CRC(7770a76f) SHA1(4f9f5245f59008b26ed60e636285ea85271744e7) )
1981 ROM_LOAD16_BYTE( "15.b1", 0x40000, 0x20000, CRC(84803f7e) SHA1(74b694c0d20c5b016b9d7258b0296229972151d5) )
1982 ROM_LOAD16_BYTE( "17.e1", 0x40001, 0x20000, CRC(94706500) SHA1(8f4a6f7ce20b1b50577271601c2c2632b5a2292c) )
1983
1984 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
1985 ROM_LOAD16_BYTE( "4.d8", 0x00000, 0x20000, CRC(858fdbb6) SHA1(4c317ab6069a8509287d3df88cf4272f512a40a3) )
1986 ROM_LOAD16_BYTE( "5.b9", 0x00001, 0x20000, CRC(c0a552e8) SHA1(31dcb14eb8815c609b0bf4d5f1ea17b26ab18aec) )
1987 ROM_LOAD16_BYTE( "6.d8", 0x40000, 0x20000, CRC(20eedda3) SHA1(8c8b1284e07f5380037f8431f2649aa99fd47542) )
1988 ROM_LOAD16_BYTE( "7.d9", 0x40001, 0x20000, CRC(294f8c40) SHA1(b7afb87510ab52682151ff2b13029427487589ec) )
1989
1990 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
1991 ROM_LOAD16_BYTE( "12.r8", 0x00000, 0x20000, CRC(ec3ad3e7) SHA1(276da309b788091cd6e5faada2ff9e5b0df2caea) )
1992 ROM_LOAD16_BYTE( "13.r9", 0x00001, 0x20000, CRC(c64090cb) SHA1(5dab576e5f454c62c7826d477b3f699e979753ad) )
1993
1994 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* background tilemaps */
1995 ROM_LOAD16_BYTE( "8.e8", 0x00000, 0x10000, CRC(8d7f4693) SHA1(a7c8573d9e54c8230decc3e88f76ae729d77b096) )
1996 ROM_LOAD16_BYTE( "9.e9", 0x00001, 0x10000, CRC(34d440c4) SHA1(74b0e15e75f62106177234b6ea54a5d312628802) )
1997
1998 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
1999 ROM_LOAD16_BYTE( "10.n8", 0x00000, 0x10000, CRC(b4f15bf4) SHA1(cb203390c3f917f213807a23c442e43bc6bcfc67) )
2000 ROM_LOAD16_BYTE( "11.n9", 0x00001, 0x10000, CRC(7dfe4a9c) SHA1(40982b5b266e4a928544ab5ec330080935588c57) )
2001 ROM_END
2002
2003 ROM_START( gulfstrma )
2004 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2005 ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(d04fb06b) SHA1(bdf09ab692f90e3dea815605998f75b6478c8047) )
2006
2007 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2008 ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
2009
2010 ROM_REGION( 0x08000, "tx", 0 ) /* chars */
2011 ROM_LOAD( "2.s4", 0x00000, 0x08000, CRC(c2d65a25) SHA1(a198b42c0737b253aca5bab6fb58ab561ccc1d5c) ) /* empty */
2012 ROM_CONTINUE( 0x00000, 0x08000 )
2013
2014 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2015 ROM_LOAD16_BYTE( "14.b1", 0x00000, 0x20000, CRC(67bdf73d) SHA1(3e357448b6f255fdec731f143afa3d3149523ed2) )
2016 ROM_LOAD16_BYTE( "16.c1", 0x00001, 0x20000, CRC(7770a76f) SHA1(4f9f5245f59008b26ed60e636285ea85271744e7) )
2017 ROM_LOAD16_BYTE( "15.b1", 0x40000, 0x20000, CRC(84803f7e) SHA1(74b694c0d20c5b016b9d7258b0296229972151d5) )
2018 ROM_LOAD16_BYTE( "17.e1", 0x40001, 0x20000, CRC(94706500) SHA1(8f4a6f7ce20b1b50577271601c2c2632b5a2292c) )
2019
2020 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2021 ROM_LOAD16_BYTE( "4.d8", 0x00000, 0x20000, CRC(858fdbb6) SHA1(4c317ab6069a8509287d3df88cf4272f512a40a3) )
2022 ROM_LOAD16_BYTE( "5.b9", 0x00001, 0x20000, CRC(c0a552e8) SHA1(31dcb14eb8815c609b0bf4d5f1ea17b26ab18aec) )
2023 ROM_LOAD16_BYTE( "6.d8", 0x40000, 0x20000, CRC(20eedda3) SHA1(8c8b1284e07f5380037f8431f2649aa99fd47542) )
2024 ROM_LOAD16_BYTE( "7.d9", 0x40001, 0x20000, CRC(294f8c40) SHA1(b7afb87510ab52682151ff2b13029427487589ec) )
2025
2026 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
2027 ROM_LOAD16_BYTE( "12.bin", 0x00000, 0x20000, CRC(3e3d3b57) SHA1(398a6cac7144ba7bacaa36c593bcb4b3c051eb0f) )
2028 ROM_LOAD16_BYTE( "13.bin", 0x00001, 0x20000, CRC(66fcce80) SHA1(6ab2b7cd49447d374cde40b98db0a6209dcad461) )
2029
2030 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* background tilemaps */
2031 ROM_LOAD16_BYTE( "8.e8", 0x00000, 0x10000, CRC(8d7f4693) SHA1(a7c8573d9e54c8230decc3e88f76ae729d77b096) )
2032 ROM_LOAD16_BYTE( "9.e9", 0x00001, 0x10000, CRC(34d440c4) SHA1(74b0e15e75f62106177234b6ea54a5d312628802) )
2033
2034 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2035 ROM_LOAD16_BYTE( "10.bin", 0x00000, 0x10000, CRC(08149140) SHA1(ff0094883ca0fc81bae991d6ea62d0064d6f7c47) )
2036 ROM_LOAD16_BYTE( "11.bin", 0x00001, 0x10000, CRC(2ed7545b) SHA1(6a70743bbb03ef694310f2b5531f384209db62a1) )
2037 ROM_END
2038
2039 ROM_START( gulfstrmb )
2040 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2041 ROM_LOAD( "1.l4", 0x00000, 0x20000, CRC(aabd95a5) SHA1(f1d3ade952e96b288e2cd4b172931862b16b4af9) ) // sldh
2042
2043 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2044 ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
2045
2046 ROM_REGION( 0x08000, "tx", 0 ) /* chars */
2047 ROM_LOAD( "2.s4", 0x00000, 0x08000, CRC(c2d65a25) SHA1(a198b42c0737b253aca5bab6fb58ab561ccc1d5c) ) /* empty */
2048 ROM_CONTINUE( 0x00000, 0x08000 )
2049
2050 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2051 ROM_LOAD16_BYTE( "14.b1", 0x00000, 0x20000, CRC(67bdf73d) SHA1(3e357448b6f255fdec731f143afa3d3149523ed2) )
2052 ROM_LOAD16_BYTE( "16.c1", 0x00001, 0x20000, CRC(7770a76f) SHA1(4f9f5245f59008b26ed60e636285ea85271744e7) )
2053 ROM_LOAD16_BYTE( "15.b1", 0x40000, 0x20000, CRC(84803f7e) SHA1(74b694c0d20c5b016b9d7258b0296229972151d5) )
2054 ROM_LOAD16_BYTE( "17.e1", 0x40001, 0x20000, CRC(94706500) SHA1(8f4a6f7ce20b1b50577271601c2c2632b5a2292c) )
2055
2056 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2057 ROM_LOAD16_BYTE( "4.d8", 0x00000, 0x20000, CRC(858fdbb6) SHA1(4c317ab6069a8509287d3df88cf4272f512a40a3) )
2058 ROM_LOAD16_BYTE( "5.b9", 0x00001, 0x20000, CRC(c0a552e8) SHA1(31dcb14eb8815c609b0bf4d5f1ea17b26ab18aec) )
2059 ROM_LOAD16_BYTE( "6.d8", 0x40000, 0x20000, CRC(20eedda3) SHA1(8c8b1284e07f5380037f8431f2649aa99fd47542) )
2060 ROM_LOAD16_BYTE( "7.d9", 0x40001, 0x20000, CRC(294f8c40) SHA1(b7afb87510ab52682151ff2b13029427487589ec) )
2061
2062 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
2063 ROM_LOAD16_BYTE( "12.bin", 0x00000, 0x20000, CRC(3e3d3b57) SHA1(398a6cac7144ba7bacaa36c593bcb4b3c051eb0f) )
2064 ROM_LOAD16_BYTE( "13.bin", 0x00001, 0x20000, CRC(66fcce80) SHA1(6ab2b7cd49447d374cde40b98db0a6209dcad461) )
2065
2066 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* background tilemaps */
2067 ROM_LOAD16_BYTE( "8.e8", 0x00000, 0x10000, CRC(8d7f4693) SHA1(a7c8573d9e54c8230decc3e88f76ae729d77b096) )
2068 ROM_LOAD16_BYTE( "9.e9", 0x00001, 0x10000, CRC(34d440c4) SHA1(74b0e15e75f62106177234b6ea54a5d312628802) )
2069
2070 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2071 ROM_LOAD16_BYTE( "10.bin", 0x00000, 0x10000, CRC(08149140) SHA1(ff0094883ca0fc81bae991d6ea62d0064d6f7c47) )
2072 ROM_LOAD16_BYTE( "11.bin", 0x00001, 0x10000, CRC(2ed7545b) SHA1(6a70743bbb03ef694310f2b5531f384209db62a1) )
2073 ROM_END
2074
2075 ROM_START( gulfstrmm )
2076 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2077 ROM_LOAD( "18.l4", 0x00000, 0x20000, CRC(d38e2667) SHA1(3690d708c7be85871d6bb32a774d711a30782126) )
2078
2079 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2080 ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
2081
2082 ROM_REGION( 0x08000, "tx", 0 ) /* chars */
2083 ROM_LOAD( "2.bin", 0x00000, 0x08000, CRC(cb555d96) SHA1(ebc1dee91a09a829db2ae6fc1616c7c989f7f1c2) ) /* empty */
2084 ROM_CONTINUE( 0x00000, 0x08000 )
2085
2086 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2087 ROM_LOAD16_BYTE( "14.b1", 0x00000, 0x20000, CRC(67bdf73d) SHA1(3e357448b6f255fdec731f143afa3d3149523ed2) )
2088 ROM_LOAD16_BYTE( "16.c1", 0x00001, 0x20000, CRC(7770a76f) SHA1(4f9f5245f59008b26ed60e636285ea85271744e7) )
2089 ROM_LOAD16_BYTE( "15.b1", 0x40000, 0x20000, CRC(84803f7e) SHA1(74b694c0d20c5b016b9d7258b0296229972151d5) )
2090 ROM_LOAD16_BYTE( "17.e1", 0x40001, 0x20000, CRC(94706500) SHA1(8f4a6f7ce20b1b50577271601c2c2632b5a2292c) )
2091
2092 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2093 ROM_LOAD16_BYTE( "4.d8", 0x00000, 0x20000, CRC(858fdbb6) SHA1(4c317ab6069a8509287d3df88cf4272f512a40a3) )
2094 ROM_LOAD16_BYTE( "5.b9", 0x00001, 0x20000, CRC(c0a552e8) SHA1(31dcb14eb8815c609b0bf4d5f1ea17b26ab18aec) )
2095 ROM_LOAD16_BYTE( "6.d8", 0x40000, 0x20000, CRC(20eedda3) SHA1(8c8b1284e07f5380037f8431f2649aa99fd47542) )
2096 ROM_LOAD16_BYTE( "7.d9", 0x40001, 0x20000, CRC(294f8c40) SHA1(b7afb87510ab52682151ff2b13029427487589ec) )
2097
2098 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
2099 ROM_LOAD16_BYTE( "12.bin", 0x00000, 0x20000, CRC(3e3d3b57) SHA1(398a6cac7144ba7bacaa36c593bcb4b3c051eb0f) )
2100 ROM_LOAD16_BYTE( "13.bin", 0x00001, 0x20000, CRC(66fcce80) SHA1(6ab2b7cd49447d374cde40b98db0a6209dcad461) )
2101
2102 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* background tilemaps */
2103 ROM_LOAD16_BYTE( "8.e8", 0x00000, 0x10000, CRC(8d7f4693) SHA1(a7c8573d9e54c8230decc3e88f76ae729d77b096) )
2104 ROM_LOAD16_BYTE( "9.e9", 0x00001, 0x10000, CRC(34d440c4) SHA1(74b0e15e75f62106177234b6ea54a5d312628802) )
2105
2106 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2107 ROM_LOAD16_BYTE( "10.bin", 0x00000, 0x10000, CRC(08149140) SHA1(ff0094883ca0fc81bae991d6ea62d0064d6f7c47) )
2108 ROM_LOAD16_BYTE( "11.bin", 0x00001, 0x10000, CRC(2ed7545b) SHA1(6a70743bbb03ef694310f2b5531f384209db62a1) )
2109 ROM_END
2110
2111 ROM_START( gulfstrmk )
2112 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2113 ROM_LOAD( "18.4l", 0x00000, 0x20000, CRC(02bcf56d) SHA1(7f13710e9291ca6afd1a534489883607eee4e35a) )
2114
2115 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2116 ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
2117
2118 ROM_REGION( 0x08000, "tx", 0 ) /* chars */
2119 ROM_LOAD( "2.bin", 0x00000, 0x08000, CRC(cb555d96) SHA1(ebc1dee91a09a829db2ae6fc1616c7c989f7f1c2) ) /* empty */
2120 ROM_CONTINUE( 0x00000, 0x08000 )
2121
2122 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2123 ROM_LOAD16_BYTE( "14.b1", 0x00000, 0x20000, CRC(67bdf73d) SHA1(3e357448b6f255fdec731f143afa3d3149523ed2) )
2124 ROM_LOAD16_BYTE( "16.c1", 0x00001, 0x20000, CRC(7770a76f) SHA1(4f9f5245f59008b26ed60e636285ea85271744e7) )
2125 ROM_LOAD16_BYTE( "15.b1", 0x40000, 0x20000, CRC(84803f7e) SHA1(74b694c0d20c5b016b9d7258b0296229972151d5) )
2126 ROM_LOAD16_BYTE( "17.e1", 0x40001, 0x20000, CRC(94706500) SHA1(8f4a6f7ce20b1b50577271601c2c2632b5a2292c) )
2127
2128 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2129 ROM_LOAD16_BYTE( "4.d8", 0x00000, 0x20000, CRC(858fdbb6) SHA1(4c317ab6069a8509287d3df88cf4272f512a40a3) )
2130 ROM_LOAD16_BYTE( "5.b9", 0x00001, 0x20000, CRC(c0a552e8) SHA1(31dcb14eb8815c609b0bf4d5f1ea17b26ab18aec) )
2131 ROM_LOAD16_BYTE( "6.d8", 0x40000, 0x20000, CRC(20eedda3) SHA1(8c8b1284e07f5380037f8431f2649aa99fd47542) )
2132 ROM_LOAD16_BYTE( "7.d9", 0x40001, 0x20000, CRC(294f8c40) SHA1(b7afb87510ab52682151ff2b13029427487589ec) )
2133
2134 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles */
2135 ROM_LOAD16_BYTE( "12.bin", 0x00000, 0x20000, CRC(3e3d3b57) SHA1(398a6cac7144ba7bacaa36c593bcb4b3c051eb0f) )
2136 ROM_LOAD16_BYTE( "13.bin", 0x00001, 0x20000, CRC(66fcce80) SHA1(6ab2b7cd49447d374cde40b98db0a6209dcad461) )
2137
2138 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* background tilemaps */
2139 ROM_LOAD16_BYTE( "8.e8", 0x00000, 0x10000, CRC(8d7f4693) SHA1(a7c8573d9e54c8230decc3e88f76ae729d77b096) )
2140 ROM_LOAD16_BYTE( "9.e9", 0x00001, 0x10000, CRC(34d440c4) SHA1(74b0e15e75f62106177234b6ea54a5d312628802) )
2141
2142 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2143 ROM_LOAD16_BYTE( "10.bin", 0x00000, 0x10000, CRC(08149140) SHA1(ff0094883ca0fc81bae991d6ea62d0064d6f7c47) )
2144 ROM_LOAD16_BYTE( "11.bin", 0x00001, 0x10000, CRC(2ed7545b) SHA1(6a70743bbb03ef694310f2b5531f384209db62a1) )
2145 ROM_END
2146
2147 ROM_START( pollux )
2148 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2149 ROM_LOAD( "pollux2.bin", 0x00000, 0x10000, CRC(45e10d4e) SHA1(ece25fcc0acda9a8cfc00f3132a87469037b5a4e) )
2150
2151 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2152 ROM_LOAD( "pollux3.bin", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
2153
2154 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2155 ROM_LOAD( "pollux1.bin", 0x08000, 0x08000, CRC(7f7135da) SHA1(0f77841e52b3d7e731d5142fba9ed5cd57343305) )
2156 ROM_CONTINUE( 0x00000, 0x08000 )
2157
2158 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2159 ROM_LOAD16_WORD_SWAP( "dy-pl-m2_be023.bin", 0x00000, 0x80000, CRC(bdea6f7d) SHA1(b418710a6d12aa53037acf7bbec85a26dfac9ebe) )
2160
2161 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2162 ROM_LOAD16_WORD_SWAP( "dy-pl-m1_be015.bin", 0x00000, 0x80000, CRC(1d2dedd2) SHA1(9bcb1c80f05eabbca2c0738e409d3cadfc14b0c8) )
2163
2164 ROM_REGION16_BE( 0x80000, "fg0", 0 ) /* tiles */
2165 ROM_LOAD16_BYTE( "pollux6.bin", 0x00000, 0x20000, CRC(b0391db5) SHA1(0c522c5074dc7c0a639ebfb7b9a9eddc90314081) )
2166 ROM_LOAD16_BYTE( "pollux7.bin", 0x00001, 0x20000, CRC(632f6e10) SHA1(a3605cbe7a9dc04cd8c1ab50110f72d93c78208b) )
2167 ROM_FILL( 0x40000, 0x40000, 0xff )
2168
2169 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* bg tilemaps */
2170 ROM_LOAD16_BYTE( "pollux9.bin", 0x00000, 0x10000, CRC(378d8914) SHA1(ef95903971673bc26774fe2aff17e1581a7f0eb9) )
2171 ROM_LOAD16_BYTE( "pollux8.bin", 0x00001, 0x10000, CRC(8859fa70) SHA1(7b1b9edde3f762c7ae1f0b847aa17e30140e9ffa) )
2172
2173 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2174 ROM_LOAD16_BYTE( "pollux5.bin", 0x00000, 0x10000, CRC(ac090d34) SHA1(6b554450d8d46165e25fd6f12ab4c4b9b63dcd35) )
2175 ROM_LOAD16_BYTE( "pollux4.bin", 0x00001, 0x10000, CRC(2c6bd3be) SHA1(6648264be83588a01f264e7ec72d84e29e0d4795) )
2176 ROM_END
2177
2178 ROM_START( polluxa )
2179 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2180 ROM_LOAD( "dooyong2.bin", 0x00000, 0x10000, CRC(e4ea8dbd) SHA1(19652261981672fae896e3065f1f5078f7ae93b6) )
2181
2182 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2183 ROM_LOAD( "pollux3.bin", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
2184
2185 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2186 ROM_LOAD( "dooyong1.bin", 0x08000, 0x08000, CRC(a7d820b2) SHA1(bbcc3690f91a4bd4f0cff5da25cbfeceb7a19437) )
2187 ROM_CONTINUE( 0x00000, 0x08000 )
2188
2189 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2190 ROM_LOAD16_WORD_SWAP( "dy-pl-m2_be023.bin", 0x00000, 0x80000, CRC(bdea6f7d) SHA1(b418710a6d12aa53037acf7bbec85a26dfac9ebe) )
2191
2192 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2193 ROM_LOAD16_WORD_SWAP( "dy-pl-m1_be015.bin", 0x00000, 0x80000, CRC(1d2dedd2) SHA1(9bcb1c80f05eabbca2c0738e409d3cadfc14b0c8) )
2194
2195 ROM_REGION16_BE( 0x80000, "fg0", 0 ) /* tiles */
2196 ROM_LOAD16_BYTE( "pollux6.bin", 0x00000, 0x20000, CRC(b0391db5) SHA1(0c522c5074dc7c0a639ebfb7b9a9eddc90314081) )
2197 ROM_LOAD16_BYTE( "pollux7.bin", 0x00001, 0x20000, CRC(632f6e10) SHA1(a3605cbe7a9dc04cd8c1ab50110f72d93c78208b) )
2198 ROM_FILL( 0x40000, 0x40000, 0xff )
2199
2200 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* bg tilemaps */
2201 ROM_LOAD16_BYTE( "pollux9.bin", 0x00000, 0x10000, CRC(378d8914) SHA1(ef95903971673bc26774fe2aff17e1581a7f0eb9) )
2202 ROM_LOAD16_BYTE( "pollux8.bin", 0x00001, 0x10000, CRC(8859fa70) SHA1(7b1b9edde3f762c7ae1f0b847aa17e30140e9ffa) )
2203
2204 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2205 ROM_LOAD16_BYTE( "pollux5.bin", 0x00000, 0x10000, CRC(ac090d34) SHA1(6b554450d8d46165e25fd6f12ab4c4b9b63dcd35) )
2206 ROM_LOAD16_BYTE( "pollux4.bin", 0x00001, 0x10000, CRC(2c6bd3be) SHA1(6648264be83588a01f264e7ec72d84e29e0d4795) )
2207 ROM_END
2208
2209 ROM_START( polluxa2 )
2210 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2211 ROM_LOAD( "dooyong16_tms27c512.bin", 0x00000, 0x10000, CRC(dffe5173) SHA1(fec9b8198ae8a1b7c9b798b9317ed6d986c11e35) )
2212
2213 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2214 ROM_LOAD( "pollux3.bin", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
2215
2216 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2217 ROM_LOAD( "dooyong1.bin", 0x08000, 0x08000, CRC(a7d820b2) SHA1(bbcc3690f91a4bd4f0cff5da25cbfeceb7a19437) )
2218 ROM_CONTINUE( 0x00000, 0x08000 )
2219
2220 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2221 ROM_LOAD16_WORD_SWAP( "dy-pl-m2_be023.bin", 0x00000, 0x80000, CRC(bdea6f7d) SHA1(b418710a6d12aa53037acf7bbec85a26dfac9ebe) )
2222
2223 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2224 ROM_LOAD16_WORD_SWAP( "dy-pl-m1_be015.bin", 0x00000, 0x80000, CRC(1d2dedd2) SHA1(9bcb1c80f05eabbca2c0738e409d3cadfc14b0c8) )
2225
2226 ROM_REGION16_BE( 0x80000, "fg0", 0 ) /* tiles */
2227 ROM_LOAD16_BYTE( "pollux6.bin", 0x00000, 0x20000, CRC(b0391db5) SHA1(0c522c5074dc7c0a639ebfb7b9a9eddc90314081) )
2228 ROM_LOAD16_BYTE( "pollux7.bin", 0x00001, 0x20000, CRC(632f6e10) SHA1(a3605cbe7a9dc04cd8c1ab50110f72d93c78208b) )
2229 ROM_FILL( 0x40000, 0x40000, 0xff )
2230
2231 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* bg tilemaps */
2232 ROM_LOAD16_BYTE( "pollux9.bin", 0x00000, 0x10000, CRC(378d8914) SHA1(ef95903971673bc26774fe2aff17e1581a7f0eb9) )
2233 ROM_LOAD16_BYTE( "pollux8.bin", 0x00001, 0x10000, CRC(8859fa70) SHA1(7b1b9edde3f762c7ae1f0b847aa17e30140e9ffa) )
2234
2235 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2236 ROM_LOAD16_BYTE( "pollux5.bin", 0x00000, 0x10000, CRC(ac090d34) SHA1(6b554450d8d46165e25fd6f12ab4c4b9b63dcd35) )
2237 ROM_LOAD16_BYTE( "pollux4.bin", 0x00001, 0x10000, CRC(2c6bd3be) SHA1(6648264be83588a01f264e7ec72d84e29e0d4795) )
2238 ROM_END
2239
2240 ROM_START( polluxn )
2241 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2242 ROM_LOAD( "polluxntc_2.3g", 0x00000, 0x10000, CRC(96d3e3af) SHA1(fc0e7a60bee0ed74c28d403a97a852eb677f8189) )
2243
2244 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2245 ROM_LOAD( "polluxntc_3.6t", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
2246
2247 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2248 ROM_LOAD( "polluxntc_1.3r", 0x08000, 0x08000, CRC(7f7135da) SHA1(0f77841e52b3d7e731d5142fba9ed5cd57343305) )
2249 ROM_CONTINUE( 0x00000, 0x08000 )
2250
2251 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2252 ROM_LOAD16_WORD_SWAP( "polluxntc_dy-pl-m2_be023.3t", 0x00000, 0x80000, CRC(bdea6f7d) SHA1(b418710a6d12aa53037acf7bbec85a26dfac9ebe) )
2253
2254 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles */
2255 ROM_LOAD16_WORD_SWAP( "polluxntc_dy-pl-m1_be002.8a", 0x00000, 0x80000, CRC(1d2dedd2) SHA1(9bcb1c80f05eabbca2c0738e409d3cadfc14b0c8) )
2256
2257 ROM_REGION16_BE( 0x80000, "fg0", 0 ) /* tiles */
2258 ROM_LOAD16_BYTE( "polluxntc_6.8m", 0x00000, 0x20000, CRC(b0391db5) SHA1(0c522c5074dc7c0a639ebfb7b9a9eddc90314081) )
2259 ROM_LOAD16_BYTE( "polluxntc_7.8l", 0x00001, 0x20000, CRC(632f6e10) SHA1(a3605cbe7a9dc04cd8c1ab50110f72d93c78208b) )
2260 ROM_FILL( 0x40000, 0x40000, 0xff )
2261
2262 ROM_REGION16_BE( 0x20000, "bg0_tmap", 0 ) /* bg tilemaps */
2263 ROM_LOAD16_BYTE( "polluxntc_9.8b", 0x00000, 0x10000, CRC(378d8914) SHA1(ef95903971673bc26774fe2aff17e1581a7f0eb9) )
2264 ROM_LOAD16_BYTE( "polluxntc_8.8j", 0x00001, 0x10000, CRC(8859fa70) SHA1(7b1b9edde3f762c7ae1f0b847aa17e30140e9ffa) )
2265
2266 ROM_REGION16_BE( 0x20000, "fg0_tmap", 0 ) /* fg tilemaps */
2267 ROM_LOAD16_BYTE( "polluxntc_5.8p", 0x00000, 0x10000, CRC(ac090d34) SHA1(6b554450d8d46165e25fd6f12ab4c4b9b63dcd35) )
2268 ROM_LOAD16_BYTE( "polluxntc_4.8r", 0x00001, 0x10000, BAD_DUMP CRC(0195dc4e) SHA1(c87c90a38b382f11ee3377683c0becda745341e0) ) // need to confirm as bad, the same as other sets except it has some bits of data blanked out with 0xFF
2269 ROM_END
2270
2271
2272 ROM_START( bluehawk )
2273 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2274 ROM_LOAD( "rom19", 0x00000, 0x20000, CRC(24149246) SHA1(458fd429a895353b8636c717dcd58d57b8723012) )
2275
2276 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2277 ROM_LOAD( "rom1", 0x00000, 0x10000, CRC(eef22920) SHA1(a3295ae7524df8c4d00ac3da422bbf66c959bf4f) )
2278
2279 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2280 ROM_LOAD( "rom3", 0x00000, 0x10000, CRC(c192683f) SHA1(060372b21bf331671c135a074640868eeb5f13ec) )
2281
2282 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2283 ROM_LOAD16_WORD_SWAP( "dy-bh-m3", 0x00000, 0x80000, CRC(8809d157) SHA1(7f86378f9fcb95ab83b68f37a29732bb8cb3d95a) )
2284
2285 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2286 ROM_LOAD16_WORD_SWAP( "dy-bh-m1", 0x00000, 0x80000, CRC(51816b2c) SHA1(72fb055de7979e40195316ef38a2e8c54be12e2b) )
2287
2288 ROM_REGION16_BE( 0x80000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2289 ROM_LOAD16_WORD_SWAP( "dy-bh-m2", 0x00000, 0x80000, CRC(f9daace6) SHA1(5e7892bad170ab9bd52426629ad49843fbc31996) )
2290
2291 ROM_REGION16_BE( 0x40000, "fg1", 0 ) /* tiles + tilemaps (together!) */
2292 ROM_LOAD16_BYTE( "rom6", 0x00000, 0x20000, CRC(e6bd9daa) SHA1(3b478fd02b145d13e49539df5260191a5254be19) )
2293 ROM_LOAD16_BYTE( "rom5", 0x00001, 0x20000, CRC(5c654dc6) SHA1(f10f64d7114adf7f18ec37c193c524ec80236201) )
2294
2295 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2296 ROM_LOAD( "rom4", 0x00000, 0x20000, CRC(f7318919) SHA1(8b7e2ffe77603142cf1b9440585f8dfa9199ed05) )
2297 ROM_END
2298
2299 ROM_START( bluehawkn )
2300 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2301 ROM_LOAD( "rom19", 0x00000, 0x20000, CRC(24149246) SHA1(458fd429a895353b8636c717dcd58d57b8723012) ) // ROM2
2302
2303 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2304 ROM_LOAD( "rom1", 0x00000, 0x10000, CRC(eef22920) SHA1(a3295ae7524df8c4d00ac3da422bbf66c959bf4f) )
2305
2306 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2307 ROM_LOAD( "rom3ntc", 0x00000, 0x10000, CRC(31eb221a) SHA1(7b893972227047d2f609fd1f97cc006eba2c9579) )
2308
2309 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2310 ROM_LOAD16_WORD_SWAP( "dy-bh-m3", 0x00000, 0x80000, CRC(8809d157) SHA1(7f86378f9fcb95ab83b68f37a29732bb8cb3d95a) ) // ROM7+ROM8+ROM13+ROM14
2311
2312 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2313 ROM_LOAD16_WORD_SWAP( "dy-bh-m1", 0x00000, 0x80000, CRC(51816b2c) SHA1(72fb055de7979e40195316ef38a2e8c54be12e2b) ) // ROM9+ROM10+ROM15+ROM16
2314
2315 ROM_REGION16_BE( 0x80000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2316 ROM_LOAD16_WORD_SWAP( "dy-bh-m2", 0x00000, 0x80000, CRC(f9daace6) SHA1(5e7892bad170ab9bd52426629ad49843fbc31996) ) // ROM11+ROM12+ROM17+ROM18
2317
2318 ROM_REGION16_BE( 0x40000, "fg1", 0 ) /* tiles + tilemaps (together!) */
2319 ROM_LOAD16_BYTE( "rom6", 0x00000, 0x20000, CRC(e6bd9daa) SHA1(3b478fd02b145d13e49539df5260191a5254be19) )
2320 ROM_LOAD16_BYTE( "rom5", 0x00001, 0x20000, CRC(5c654dc6) SHA1(f10f64d7114adf7f18ec37c193c524ec80236201) )
2321
2322 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2323 ROM_LOAD( "rom4", 0x00000, 0x20000, CRC(f7318919) SHA1(8b7e2ffe77603142cf1b9440585f8dfa9199ed05) )
2324 ROM_END
2325
2326 /*
2327
2328 Flying Tiger
2329 Dooyong, 1992
2330
2331 PCB Layout
2332 ----------
2333
2334 Bottom Board
2335
2336
2337 |----------------------------------------|
2338 | TL084 YM3012 Z80B 3.579545MHz |
2339 | 1MHz M6295 |
2340 | VOL YM2151 3 4 |
2341 | PAL 6116 |-------| |
2342 | |DY001-A| DY-FT-M1|
2343 | | | |
2344 | DSW1 PAL 6264 | | |
2345 |J |----| | | |
2346 |A |DY-2| 2 |-------| |
2347 |M |----| |
2348 |M DSW2 |
2349 |A |-------| |
2350 | |DY002-A| |
2351 | | | DY-FT-M2|
2352 | | | |
2353 | | | |
2354 | 6264 PAL |-------| |
2355 | 1 PAL |
2356 |16MHz Z80H 6116 6116 |
2357 |----------------------------------------|
2358 Notes:
2359 DY-2 : Unknown PLCC44 IC (FPGA/CPLD?) stamped 'DY-2'
2360 DY001/DY002 : Hyundai DOOYONG PLCC84 ICs (FPGA)
2361 Z80H clock : 8.000MHz [16/2]
2362 Z80B clock : 4.000MHz [16/4]
2363 M6295 clock : 1.000MHz. Sample Rate = 1000000 / 132
2364 YM2151 clock: 3.579545MHz
2365 VSync : 60Hz
2366 HSync : 15.68kHz
2367
2368
2369 Top Board
2370
2371 |--------------------------|
2372 | |
2373 | 6116 PAL PAL |
2374 | |
2375 | |
2376 | 6116 |
2377 | |
2378 | 6116 |
2379 | 16 14 |
2380 | |
2381 | 15 13 |
2382 | |
2383 | |
2384 | PAL |
2385 | |
2386 | |
2387 | 6116 |
2388 | |
2389 | |
2390 | 6116 |
2391 |--------------------------|
2392
2393 */
2394
2395 ROM_START( flytiger )
2396 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2397 ROM_LOAD( "1.3c", 0x00000, 0x20000, CRC(2d634c8e) SHA1(012ad31c0edc67d727d216e2ede321c1d1f27226) )
2398
2399 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2400 ROM_LOAD( "3.6p", 0x00000, 0x10000, CRC(d238df5e) SHA1(428fd7abd78238089c0c0fd73de57102f4f65a74))
2401
2402 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2403 ROM_LOAD( "2.4h", 0x08000, 0x08000, CRC(2fb72912) SHA1(34453e2b49cf3a6bc9e87a8400428d95f626b97a) )
2404 ROM_CONTINUE( 0x00000, 0x08000 )
2405
2406 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2407 ROM_LOAD16_BYTE( "16.4h", 0x00000, 0x20000, CRC(8a158b95) SHA1(ed09d9c40b76a27e06601381e463a00b16555f1e) )
2408 ROM_LOAD16_BYTE( "15.2h", 0x00001, 0x20000, CRC(399f6043) SHA1(ea0debd6d0f8c61f0078809c2828734fc15e891d) )
2409 ROM_LOAD16_BYTE( "14.4k", 0x40000, 0x20000, CRC(df66b6f3) SHA1(3a29ae69a09306c5a2a2786acbf227832b408152) )
2410 ROM_LOAD16_BYTE( "13.2k", 0x40001, 0x20000, CRC(f24a5099) SHA1(408559057989a40ca298baa85d5fe7cbde72d2b8) )
2411
2412 ROM_REGION16_BE( 0x80000, "bg0",0 ) /* tiles + tilemaps */
2413 ROM_LOAD16_WORD_SWAP( "dy-ft-m1.11n", 0x00000, 0x80000, CRC(f06589c2) SHA1(fb4aa12257e2e0162f2219ebea5177e8bb15e3f0) )
2414
2415 ROM_REGION16_BE( 0x80000, "fg0",0 ) /* tiles + tilemaps */
2416 ROM_LOAD16_WORD_SWAP("dy-ft-m2.11g", 0x00000, 0x80000, CRC(7545f9c9) SHA1(dcab4d64a8fada5afd4a352f5a30c868676d2b57) )
2417
2418 ROM_REGION( 0x80000, "oki", 0 ) /* OKI6295 samples */
2419 ROM_LOAD( "4.9n", 0x00000, 0x20000, CRC(cd95cf9a) SHA1(d79e3aeda6a13d7b87369453bcf668778135b7fe) )
2420 ROM_END
2421
2422 ROM_START( flytigera ) // alt pcb type
2423 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2424 ROM_LOAD( "ftiger_1.3c", 0x00000, 0x20000, CRC(02acd1ce) SHA1(48167a317d3785bfe688bdda01ff344e72d3b138) )
2425
2426 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2427 ROM_LOAD( "ftiger_11.6p", 0x00000, 0x10000, CRC(d238df5e) SHA1(428fd7abd78238089c0c0fd73de57102f4f65a74))
2428
2429 ROM_REGION( 0x10000, "tx", 0 ) /* chars */
2430 ROM_LOAD( "ftiger_2.4h", 0x08000, 0x08000, CRC(ca9d6713) SHA1(645cccc06c7f6744b25e7917f414956856419b8a) )
2431 ROM_CONTINUE( 0x00000, 0x08000 )
2432
2433 ROM_REGION16_BE( 0x80000, "sprite", 0 ) /* sprites */
2434 ROM_LOAD16_BYTE( "ftiger_16.4h", 0x00000, 0x20000, CRC(8a158b95) SHA1(ed09d9c40b76a27e06601381e463a00b16555f1e) )
2435 ROM_LOAD16_BYTE( "ftiger_15.2h", 0x00001, 0x20000, CRC(399f6043) SHA1(ea0debd6d0f8c61f0078809c2828734fc15e891d) )
2436 ROM_LOAD16_BYTE( "ftiger_14.4k", 0x40000, 0x20000, CRC(df66b6f3) SHA1(3a29ae69a09306c5a2a2786acbf227832b408152) )
2437 ROM_LOAD16_BYTE( "ftiger_13.2k", 0x40001, 0x20000, CRC(f24a5099) SHA1(408559057989a40ca298baa85d5fe7cbde72d2b8) )
2438
2439 ROM_REGION16_BE( 0x80000, "bg0",0 ) /* tiles + tilemaps */ // same data, but split
2440 ROM_LOAD16_BYTE( "ftiger_3.10p", 0x00001, 0x20000, CRC(9fc12ebd) SHA1(c8f03a20da01bd61a27813564eb79bb2e8483f28) )
2441 ROM_LOAD16_BYTE( "ftiger_5.10l", 0x00000, 0x20000, CRC(06c9dd2a) SHA1(20235b7d55b9bc73ddb1fec5fd68e5ba32508d1b) )
2442 ROM_LOAD16_BYTE( "ftiger_4.11p", 0x40001, 0x20000, CRC(fb30e884) SHA1(1f01ed15ae6cdebb120cc1f03ac65465c824dc89) )
2443 ROM_LOAD16_BYTE( "ftiger_6.11l", 0x40000, 0x20000, CRC(dfb85152) SHA1(03a07e016d400c1c0e7a59716c08a61e23e5d60f) )
2444
2445 ROM_REGION16_BE( 0x80000, "fg0",0 ) /* tiles + tilemaps */ // same data, but split
2446 ROM_LOAD16_BYTE( "ftiger_8.11h", 0x00001, 0x20000, CRC(cbd8c22f) SHA1(e7e64c99990e99336abbdbd7ffadfa4c0f1a4c0f) )
2447 ROM_LOAD16_BYTE( "ftiger_10.11f",0x00000, 0x20000, CRC(e2175f3b) SHA1(1ce17beb431bb3e8454bb1899f28d16c6a537183) )
2448 ROM_LOAD16_BYTE( "ftiger_7.10h", 0x40001, 0x20000, CRC(be431c61) SHA1(3227912117700751370059c173e46d0a8367c5f8) )
2449 ROM_LOAD16_BYTE( "ftiger_9.10f", 0x40000, 0x20000, CRC(91bcd84f) SHA1(3577b2d1d6ee4b560b75530ba9e9e6689c1e17e2) )
2450
2451 ROM_REGION( 0x80000, "oki", 0 ) /* OKI6295 samples */
2452 ROM_LOAD( "ftiger_12.9n", 0x00000, 0x20000, CRC(cd95cf9a) SHA1(d79e3aeda6a13d7b87369453bcf668778135b7fe) )
2453 ROM_END
2454
2455 ROM_START( sadari )
2456 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2457 ROM_LOAD( "1.3d", 0x00000, 0x20000, CRC(bd953217) SHA1(6e230103ea01744761ab8a194d0dde6921bee92e) )
2458
2459 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2460 ROM_LOAD( "3.6r", 0x00000, 0x10000, CRC(4786fca6) SHA1(b2347e2f6bbe3dd9d1cc8d8a4af40e7997d5ab74) )
2461
2462 ROM_REGION( 0x20000, "tx", 0 ) /* chars */
2463 ROM_LOAD( "2.4c", 0x00000, 0x20000, CRC(b2a3f1c6) SHA1(06f0038dc113c8001786157b9c9ee0eda76c2411) )
2464
2465 /* no sprites */
2466
2467 ROM_REGION16_BE( 0x80000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2468 ROM_LOAD16_BYTE( "10.10l", 0x00000, 0x20000, CRC(70269ab1) SHA1(055ff484da028f11bb3097652ef4713603870f89) )
2469 ROM_LOAD16_BYTE( "5.8l", 0x00001, 0x20000, CRC(ceceb4c3) SHA1(db08bbe9d23eb50d5c0603893a6e0368e2b6bbba) )
2470 ROM_LOAD16_BYTE( "9.10n", 0x40000, 0x20000, CRC(21bd1bda) SHA1(a5c9df8b45b05130374a83e45b3fb7cce76b58f8) )
2471 ROM_LOAD16_BYTE( "4.8n", 0x40001, 0x20000, CRC(cd318ae5) SHA1(457ccaf1d841ff763878dca8e534b9738510899a) )
2472
2473 ROM_REGION16_BE( 0x80000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2474 ROM_LOAD16_BYTE( "11.10j", 0x00000, 0x20000, CRC(62a1d580) SHA1(4df60db9ad306a4d8776d10826e802cab27809f7) )
2475 ROM_LOAD16_BYTE( "6.8j", 0x00001, 0x20000, CRC(c4b13ed7) SHA1(97a33d700a8372b0e4bb13e567afc5ef898e9351) )
2476 ROM_LOAD16_BYTE( "12.10g", 0x40000, 0x20000, CRC(547b7645) SHA1(fdfe5cccdae1b88736aae702aa55fd642396ce01) )
2477 ROM_LOAD16_BYTE( "7.8g", 0x40001, 0x20000, CRC(14f20fa3) SHA1(95aabb5a5de976fb62b5cffd3efb2a86b5d62c20) )
2478
2479 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2480 ROM_LOAD( "8.10r", 0x00000, 0x20000, CRC(9c29a093) SHA1(b6252e0cb8e618cdc4a741ee7ab01058f929fd11) )
2481 ROM_END
2482
2483 ROM_START( gundl94 )
2484 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2485 ROM_LOAD( "gd94_001.d3", 0x00000, 0x20000, CRC(3a5cc045) SHA1(182743458c36bb6254a39cf9a371fd2b0d72d145) )
2486
2487 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2488 ROM_LOAD( "gd94_003.r6", 0x00000, 0x10000, CRC(ea41c4ad) SHA1(e39e0507f4f370432ef0ca11dbecef176716cec4) )
2489
2490 ROM_REGION( 0x20000, "tx", 0 ) /* chars */
2491 ROM_LOAD( "gd94_002.c5", 0x00000, 0x20000, CRC(8575e64b) SHA1(08ef8af655a354c30ee3fe587554e418903147f5) )
2492
2493 /* no sprites */
2494
2495 ROM_REGION16_BE( 0x40000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2496 ROM_LOAD16_BYTE( "gd94_009.n9", 0x00000, 0x20000, CRC(40eabf55) SHA1(660f4318248001049369e1e715c7ff09d551c256) )
2497 ROM_LOAD16_BYTE( "gd94_004.n7", 0x00001, 0x20000, CRC(0654abb9) SHA1(c0fcd8ba78db341f46acb523c670d053e3d82b16) )
2498
2499 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2500 ROM_LOAD16_BYTE( "gd94_012.g9", 0x00000, 0x20000, CRC(117c693c) SHA1(e08bd6fbbae8ac657e6a1f9df36983ace941da3a) )
2501 ROM_LOAD16_BYTE( "gd94_007.g7", 0x00001, 0x20000, CRC(96a72c6d) SHA1(b79a746fc114eb8977591f147e4ea4a4e4f14526) )
2502
2503 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2504 ROM_LOAD( "gd94_008.r9", 0x00000, 0x20000, CRC(f92e5803) SHA1(69dd11469e9e6bdc7825a5a14994276b50c10a14) )
2505
2506 ROM_REGION( 0x30000, "cpu2", 0 ) /* extra z80 rom? this doesn't seem to belong to this game! */
2507 ROM_LOAD( "gd94_011.j9", 0x00000, 0x20000, CRC(d8ad0208) SHA1(5df0f94ef86d7a03bde546e7aafdc0caf8a17076) )
2508 ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
2509
2510 ROM_REGION16_BE( 0x40000, "gfx4", 0 ) /* more tiles? they don't seem to belong to this game! */
2511 ROM_LOAD16_BYTE( "gd94_006.j7", 0x00000, 0x20000, CRC(1d9536fe) SHA1(d72e66a529456c87217f9ba88f7f45aa2aa3e399) )
2512 ROM_LOAD16_BYTE( "gd94_010.l7", 0x00001, 0x20000, CRC(4b74857f) SHA1(a4413369fdb165c0f12454592181675095f28145) )
2513 ROM_END
2514
2515 ROM_START( primella )
2516 ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2517 ROM_LOAD( "1_d3.bin", 0x00000, 0x20000, CRC(82fea4e0) SHA1(3603c0edda29868d5e282465880e1ad341365f6f) )
2518
2519 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2520 ROM_LOAD( "gd94_003.r6", 0x00000, 0x10000, CRC(ea41c4ad) SHA1(e39e0507f4f370432ef0ca11dbecef176716cec4) )
2521
2522 ROM_REGION( 0x20000, "tx", 0 ) /* chars */
2523 ROM_LOAD( "gd94_002.c5", 0x00000, 0x20000, CRC(8575e64b) SHA1(08ef8af655a354c30ee3fe587554e418903147f5) )
2524
2525 /* no sprites */
2526
2527 ROM_REGION16_BE( 0x40000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2528 ROM_LOAD16_BYTE( "7_n9.bin", 0x00000, 0x20000, CRC(20b6a574) SHA1(e180e8440bf2dc22c7d24707fc47d0c70433ecba) )
2529 ROM_LOAD16_BYTE( "4_n7.bin", 0x00001, 0x20000, CRC(fe593666) SHA1(f511e4881f79de91c501b0026de2ac5b4a59f747) )
2530
2531 ROM_REGION16_BE( 0x40000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2532 ROM_LOAD16_BYTE( "8_g9.bin", 0x00000, 0x20000, CRC(542ecb83) SHA1(0a4decaad9dde4681f7b6cdab0ae0e4951efc83d) )
2533 ROM_LOAD16_BYTE( "5_g7.bin", 0x00001, 0x20000, CRC(058ecac6) SHA1(12f70f78b882b6ce08c56f6fa9a1211c3464bf9d) )
2534
2535 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2536 ROM_LOAD( "gd94_008.r9", 0x00000, 0x20000, CRC(f92e5803) SHA1(69dd11469e9e6bdc7825a5a14994276b50c10a14) ) /* 6_r9 */
2537 ROM_END
2538
2539 /*
2540
2541 Super X
2542 NTC, 1994
2543
2544 This game runs on Dooyong hardware.
2545
2546 PCB Layout
2547 ----------
2548
2549 |-------------------------------------------------|
2550 | YM3012 Z80 4.7V 62256 62256 |
2551 | YM2151 1.5U M6295 5.7U 62256 62256 |
2552 | 6116 |
2553 | PAL ----------- 62256 62256 |
2554 | |DY208 | 62256 62256 |
2555 |J DSW1 |DY-OBJ-01| |
2556 |A ----------- |
2557 |M 2.3M 62256 SPXO-M05.10M |
2558 |M 3.3L 62256 6116 |
2559 |A 6116 |
2560 | 68000 --------- SPXB-M03.8J SPXB-MS4.10J |
2561 | DSW2 |DY160 | |
2562 | |DY-PL-1| SPXB-M04.8F SPXB-MS3.10F |
2563 | --------- |
2564 | PAL PAL |
2565 | --------- SPXB-M01.8C SPXB-MS1.10C |
2566 | 6116 |DY160 | |
2567 |8MHz 6116 |DY-PL-1| SPXB-M02.8A SPXB-MS2.10A |
2568 |-------------------------------------------------|
2569
2570 Notes:
2571 68000 clock: 8.000MHz
2572 Z80 clock: 4.000MHz
2573 YM2151 clock: 4.000MHz
2574 M6295 clock: 1.000MHz, sample rate = /132
2575 VSync: 60Hz
2576 HSync: 15.68kHz
2577
2578 ROMs:
2579 Filename Type Use
2580 --------------------------------------------
2581 1.5U 27C512 Sound program
2582
2583 2.3M 27C1000 \ Main Program
2584 3.3L 27C1000 /
2585
2586 4.7V 27C1000 \ M6295 samples
2587 5.5U 27C1000 /
2588
2589 SPXO-M05.10M 16M MASK 42 pin \
2590 SPXB-M01.8C 8M MASK 42 pin |
2591 SPXB-M02.8A " | Gfx + Tilemaps
2592 SPXB-M03.8J " |
2593 SPXB-M04.8F " /
2594 SPXB-MS1.10C 1M MASK 28 pin \
2595 SPXB-MS2.10A " | Gfx (All have fixed bits, this is correct, they contain the upper 4 bits)
2596 SPXB-MS3.10F " | (of the tilemap data)
2597 SPXB-MS4.10J " /
2598
2599 */
2600
2601 ROM_START( superx )
2602 ROM_REGION( 0x40000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2603 ROM_LOAD16_BYTE( "2.3m", 0x00000, 0x20000, CRC(be7aebe7) SHA1(81934d861a15a96cf23721ad38f821e1f94ec980) )
2604 ROM_LOAD16_BYTE( "3.3l", 0x00001, 0x20000, CRC(dc4a25fc) SHA1(660bf33a9ae7534c37353f9690af180268ce7f30) )
2605
2606 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2607 ROM_LOAD( "1.5u", 0x0000, 0x10000, CRC(6894ce05) SHA1(9726fc3f1e9bebecf498c208ab03007f34936632) )
2608
2609 ROM_REGION16_BE( 0x200000, "sprite", 0 ) /* sprite */
2610 ROM_LOAD16_WORD_SWAP( "spxo-m05.10m", 0x00000, 0x200000, CRC(9120dd84) SHA1(bcf1fdc860d51b9bcfec1e84940ef21dfc41b5dc) )
2611
2612 ROM_REGION16_BE( 0x100000, "fg1", 0 ) /* tiles + tilemaps (together!) */
2613 ROM_LOAD16_WORD_SWAP( "spxb-m04.8f", 0x00000, 0x100000, CRC(91a7ac6e) SHA1(b7fb79c2e4f5eecb7128b86ee2b1070eed905d2a) ) // bomb
2614 // 0x00000-0x3ffff tilemap infos
2615
2616 ROM_REGION16_BE( 0x100000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2617 ROM_LOAD16_WORD_SWAP( "spxb-m03.8j", 0x00000, 0x100000, CRC(8b42861b) SHA1(6eb1f6bfe0b8e987e624a6fe7e025c6918804cf9) ) // title logo
2618 // 0x00000-0x3ffff tilemap infos
2619
2620 ROM_REGION16_BE( 0x100000, "bg1", 0 ) /* tiles + tilemaps (together!) */
2621 ROM_LOAD16_WORD_SWAP( "spxb-m02.8a", 0x00000, 0x100000, CRC(21b8db78) SHA1(e7c51c9566ebce5b5db5af48f33e2194b518715f) ) // title screen upper background
2622 // 0x00000-0x3ffff tilemap infos
2623
2624 ROM_REGION16_BE( 0x100000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2625 ROM_LOAD16_WORD_SWAP( "spxb-m01.8c", 0x00000, 0x100000, CRC(60c69129) SHA1(6871b08e354c7cf5fb16b0ed4562c537e2ce9194) ) // title screen lower background
2626 // 0x00000-0x3ffff tilemap infos
2627
2628 ROM_REGION( 0x80000, "tmap_hi", 0 ) /* top 4 bits of tilemaps */
2629 ROM_LOAD( "spxb-ms3.10f", 0x00000, 0x20000, CRC(8bf8c77d) SHA1(a89e50bd571e754cb56a17fe4ada6a804e74520b) ) // bomb
2630 ROM_LOAD( "spxb-ms4.10j", 0x20000, 0x20000, CRC(d418a900) SHA1(0d69afa48d3072c7fecfc5d6dd63717b9f61c0fc) ) // title logo
2631 ROM_LOAD( "spxb-ms2.10a", 0x40000, 0x20000, CRC(5ec87adf) SHA1(cdd0864ea23b2c6d8ace519fc66e77f59813e206) ) // title screen upper background
2632 ROM_LOAD( "spxb-ms1.10c", 0x60000, 0x20000, CRC(40b4fe6c) SHA1(5ab63ce83522c32039ee33c59e713d2fb37aac44) ) // title screen lower background
2633
2634 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2635 ROM_LOAD( "4.7v", 0x00000, 0x20000, CRC(434290b5) SHA1(3f2fb5aed1f109add17f00fe3a2364eedc7172ae) )
2636 ROM_LOAD( "5.7u", 0x20000, 0x20000, CRC(ebe6abb4) SHA1(801b22845603f86c7bab77baa6946afc613aebdb) )
2637 ROM_END
2638
2639 /* this set only had 68k roms, sound program, and samples */
2640 ROM_START( superxm )
2641 ROM_REGION( 0x40000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2642 ROM_LOAD16_BYTE( "2_m.3m", 0x00000, 0x20000, CRC(41c50aac) SHA1(75f6470bde217e4b9139d8af97a17ca22c374944) )
2643 ROM_LOAD16_BYTE( "3_m.3l", 0x00001, 0x20000, CRC(6738b703) SHA1(e37f5f76b1efbd2f5098014ca380d4340204e487) )
2644
2645 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2646 ROM_LOAD( "1_m.5u", 0x0000, 0x10000, CRC(319fa632) SHA1(b621ad080e8cf6611fc88d8fc2af5aa4e31e9e01) )
2647
2648 ROM_REGION16_BE( 0x200000, "sprite", 0 ) /* sprite */
2649 ROM_LOAD16_WORD_SWAP( "spxo-m05.10m", 0x00000, 0x200000, CRC(9120dd84) SHA1(bcf1fdc860d51b9bcfec1e84940ef21dfc41b5dc) )
2650
2651 ROM_REGION16_BE( 0x100000, "fg1", 0 ) /* tiles + tilemaps (together!) */
2652 ROM_LOAD16_WORD_SWAP( "spxb-m04.8f", 0x00000, 0x100000, CRC(91a7ac6e) SHA1(b7fb79c2e4f5eecb7128b86ee2b1070eed905d2a) ) // bomb
2653 // 0x00000-0x3ffff tilemap infos
2654
2655 ROM_REGION16_BE( 0x100000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2656 ROM_LOAD16_WORD_SWAP( "spxb-m03.8j", 0x00000, 0x100000, CRC(8b42861b) SHA1(6eb1f6bfe0b8e987e624a6fe7e025c6918804cf9) ) // title logo
2657 // 0x00000-0x3ffff tilemap infos
2658
2659 ROM_REGION16_BE( 0x100000, "bg1", 0 ) /* tiles + tilemaps (together!) */
2660 ROM_LOAD16_WORD_SWAP( "spxb-m02.8a", 0x00000, 0x100000, CRC(21b8db78) SHA1(e7c51c9566ebce5b5db5af48f33e2194b518715f) ) // title screen upper background
2661 // 0x00000-0x3ffff tilemap infos
2662
2663 ROM_REGION16_BE( 0x100000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2664 ROM_LOAD16_WORD_SWAP( "spxb-m01.8c", 0x00000, 0x100000, CRC(60c69129) SHA1(6871b08e354c7cf5fb16b0ed4562c537e2ce9194) ) // title screen lower background
2665 // 0x00000-0x3ffff tilemap infos
2666
2667 ROM_REGION( 0x80000, "tmap_hi", 0 ) /* top 4 bits of tilemaps */
2668 ROM_LOAD( "spxb-ms3.10f", 0x00000, 0x20000, CRC(8bf8c77d) SHA1(a89e50bd571e754cb56a17fe4ada6a804e74520b) ) // bomb
2669 ROM_LOAD( "spxb-ms4.10j", 0x20000, 0x20000, CRC(d418a900) SHA1(0d69afa48d3072c7fecfc5d6dd63717b9f61c0fc) ) // title logo
2670 ROM_LOAD( "spxb-ms2.10a", 0x40000, 0x20000, CRC(5ec87adf) SHA1(cdd0864ea23b2c6d8ace519fc66e77f59813e206) ) // title screen upper background
2671 ROM_LOAD( "spxb-ms1.10c", 0x60000, 0x20000, CRC(40b4fe6c) SHA1(5ab63ce83522c32039ee33c59e713d2fb37aac44) ) // title screen lower background
2672
2673 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2674 ROM_LOAD( "4.7v", 0x00000, 0x20000, CRC(434290b5) SHA1(3f2fb5aed1f109add17f00fe3a2364eedc7172ae) )
2675 ROM_LOAD( "5.7u", 0x20000, 0x20000, CRC(ebe6abb4) SHA1(801b22845603f86c7bab77baa6946afc613aebdb) )
2676 ROM_END
2677
2678 ROM_START( rshark )
2679 ROM_REGION( 0x40000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2680 ROM_LOAD16_BYTE( "rspl00.bin", 0x00000, 0x20000, CRC(40356b9d) SHA1(28749a0d4c1ac8e094c551594033d47061071d8b) )
2681 ROM_LOAD16_BYTE( "rspu00.bin", 0x00001, 0x20000, CRC(6635c668) SHA1(242d9c5828e142d5820c75c4e4696fcc5f5ffbb7) )
2682
2683 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2684 ROM_LOAD( "rse3.bin", 0x0000, 0x10000, CRC(03c8fd17) SHA1(d59a3d8b731484572384a9d6f24ef4cd200ef661) )
2685
2686 ROM_REGION16_BE( 0x200000, "sprite", 0 ) /* sprite */
2687 ROM_LOAD16_BYTE( "rse4.bin", 0x000000, 0x80000, CRC(b857e411) SHA1(14a8883243f3f1ee661395cbcce7d5d3c08caef8) )
2688 ROM_LOAD16_BYTE( "rse5.bin", 0x000001, 0x80000, CRC(7822d77a) SHA1(25d34b508a25ab8052d3f73eeb60c7b9e6610db6) )
2689 ROM_LOAD16_BYTE( "rse6.bin", 0x100000, 0x80000, CRC(80215c52) SHA1(6138804fc2f81cf1366cc1bcca7572e45845ca8a) )
2690 ROM_LOAD16_BYTE( "rse7.bin", 0x100001, 0x80000, CRC(bd28bbdc) SHA1(b09ce8b21a08d129703f95b6fe9361e7f6614ee3) )
2691
2692 ROM_REGION16_BE( 0x100000, "fg1", 0 ) /* tiles + tilemaps (together!) */
2693 ROM_LOAD16_BYTE( "rse11.bin", 0x00000, 0x80000, CRC(8a0c572f) SHA1(218c4e4aeacedf459c6c08cc47dd2154b7dd4279) ) // 0x00000-0x3ffff tilemap infos
2694 ROM_LOAD16_BYTE( "rse10.bin", 0x00001, 0x80000, CRC(139d5947) SHA1(e371f27091924c605962f0a88d9f1f3deb0c954e) )
2695
2696 ROM_REGION16_BE( 0x100000, "fg0", 0 ) /* tiles + tilemaps (together!) */
2697 ROM_LOAD16_BYTE( "rse15.bin", 0x00000, 0x80000, CRC(d188134d) SHA1(b0711657ad87166330b471fa449e95d63939b223) ) // 0x00000-0x3ffff tilemap infos
2698 ROM_LOAD16_BYTE( "rse14.bin", 0x00001, 0x80000, CRC(0ef637a7) SHA1(827867831f751a5ed4022932b755e128fb5886b6) )
2699
2700 ROM_REGION16_BE( 0x100000, "bg1", 0 ) /* tiles + tilemaps (together!) */
2701 ROM_LOAD16_BYTE( "rse17.bin", 0x00000, 0x80000, CRC(7ff0f3c7) SHA1(033722dbf69745676b71f7002b413abd3c7bdf3c) ) // 0x00000-0x3ffff tilemap infos
2702 ROM_LOAD16_BYTE( "rse16.bin", 0x00001, 0x80000, CRC(c176c8bc) SHA1(98ef043befd2e067012d24299196964a0957b2ea) )
2703
2704 ROM_REGION16_BE( 0x100000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2705 ROM_LOAD16_BYTE( "rse21.bin", 0x00000, 0x80000, CRC(2ea665af) SHA1(67445e525016c0873bc2d831230f908388dabd4d) ) // 0x00000-0x3ffff tilemap infos
2706 ROM_LOAD16_BYTE( "rse20.bin", 0x00001, 0x80000, CRC(ef93e3ac) SHA1(397afe70c8039eb073589353bd5a9f469e8a6776) )
2707
2708 ROM_REGION( 0x80000, "tmap_hi", 0 ) /* top 4 bits of tilemaps */
2709 ROM_LOAD( "rse12.bin", 0x00000, 0x20000, CRC(fadbf947) SHA1(0d752c2499adca883f281aed95356a7fbf78fe5f) )
2710 ROM_LOAD( "rse13.bin", 0x20000, 0x20000, CRC(323d4df6) SHA1(9ea0b84f7f565c7ca33335d286e8d4f812b216f2) )
2711 ROM_LOAD( "rse18.bin", 0x40000, 0x20000, CRC(e00c9171) SHA1(10365ddbf4d60e99758ff0bb5042648c5f0f9c34) )
2712 ROM_LOAD( "rse19.bin", 0x60000, 0x20000, CRC(d214d1d0) SHA1(98daf875fec0372c719efcfb4457db573261e9f4) )
2713
2714 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2715 ROM_LOAD( "rse1.bin", 0x00000, 0x20000, CRC(0291166f) SHA1(7c4c80cfd921a07b8195306cfbd2f84947aa7d6f) )
2716 ROM_LOAD( "rse2.bin", 0x20000, 0x20000, CRC(5a26ee72) SHA1(3ceed1f50510993354dd4def577af5cf4c4a4f7a) )
2717 ROM_END
2718
2719 /*
2720
2721 Pop Bingo
2722 Dooyong, 1996
2723
2724 PCB Layout
2725 ----------
2726
2727 |------------------------------------------------------|
2728 | 6295 * 62256 62256 62256 |
2729 |YM3016 6116 ROM4.4R 62256 62256 62256 |
2730 | |
2731 | Z80 ROM1.3P YM2151 |----------| 62256 |
2732 | PAL |DOOYONG | 62256 |
2733 | |DY-OBJ-01 | |
2734 | |H2B34027 | |
2735 |J 6116 PAL | | |
2736 |A 6116 |----------| |
2737 |M ROM5.9M |
2738 |M |------------------| 6116 ROM6.9L |
2739 |A | MC68000P10 | 6116 |
2740 | | | |
2741 | |------------------| ROM7.9H |
2742 | DSWA ROM2.3F 62256 |----------| |
2743 | DSWB ROM3.3E 62256 |DOOYONG | ROM8.9E |
2744 | PAL PAL PAL |DY-PL-1 | |
2745 | |H2A32067 | ROM9.9C |
2746 | | | |
2747 |16MHz 20MHz |----------| ROM10.9A |
2748 |------------------------------------------------------|
2749 Notes:
2750 68000 clock : 10.000MHz (20/2)
2751 Z80 clock : 4.000MHz (16/4)
2752 YM2151 clock: 4.000MHz (16/4)
2753 M6295 clock : 1.000MHz (16/16). Sample Rate = 1000000 / 132
2754 VSync : 60Hz
2755 * : Unpopulated socket
2756
2757 */
2758
2759 ROM_START( popbingo )
2760 ROM_REGION( 0x40000, "maincpu", 0 ) /* 64k for code + 128k for banks */
2761 ROM_LOAD16_BYTE( "rom2.3f", 0x00000, 0x20000, CRC(b24513c6) SHA1(ddbdb99c8bc84d32b787691630c4cd2060f3d9d0) )
2762 ROM_LOAD16_BYTE( "rom3.3e", 0x00001, 0x20000, CRC(48070081) SHA1(5efc585207eb2b6f631e496ee1acc1d593024367) )
2763
2764 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
2765 ROM_LOAD( "rom1.3p", 0x0000, 0x10000, CRC(46e8d2c4) SHA1(a6fb55766e0bad321ac03977f33d3000ab7ab295) )
2766
2767 ROM_REGION16_BE( 0x100000, "sprite", 0 ) /* sprite */
2768 ROM_LOAD16_BYTE( "rom5.9m", 0x00000, 0x80000, CRC(e8d73e07) SHA1(4ed647eaa6b32b9f159fc49d30962ad20f97b245) )
2769 ROM_LOAD16_BYTE( "rom6.9l", 0x00001, 0x80000, CRC(c3db3975) SHA1(bb085c9339d640585b18992dc8b861870920559a) )
2770
2771 ROM_REGION16_BE( 0x100000, "bg0", 0 ) /* tiles + tilemaps (together!) */
2772 ROM_LOAD16_BYTE( "rom10.9a", 0x00000, 0x80000, CRC(135ab90a) SHA1(5911923ccf579edd0bf3449945a434fbf37b51aa) ) // 0x00000-0x07fff Tilemap infos
2773 ROM_LOAD16_BYTE( "rom9.9c", 0x00001, 0x80000, CRC(c9d90007) SHA1(ad457ef297797dcb9bb8dc1725fa207cd57eedfe) )
2774
2775 ROM_REGION16_BE( 0x100000, "bg1", 0 ) /* tiles + tilemaps (together!) */
2776 ROM_LOAD16_BYTE( "rom7.9h", 0x00000, 0x80000, CRC(b2b4c13b) SHA1(37ddc9751860a85b809782c5cec4418bca71412c) ) // 0x00000-0x07fff Tilemap infos
2777 ROM_LOAD16_BYTE( "rom8.9e", 0x00001, 0x80000, CRC(66c4b00f) SHA1(ed416ec594fe065c0f169008fb8ce553813f6260) )
2778
2779 ROM_REGION( 0x40000, "oki", 0 ) /* OKI6295 samples */
2780 ROM_LOAD( "rom4.4r", 0x00000, 0x20000, CRC(0fdee034) SHA1(739d39b04c2e860c3c193ab32b30ccc39ff1a8c2) )
2781 ROM_END
2782
2783 /***************************************************************************
2784
2785 Game driver(s)
2786
2787 ***************************************************************************/
2788
2789 /* The differences between the two lastday sets are only in the sound program and graphics. The main program is the same. */
2790
2791 GAME( 1990, lastday, 0, lastday, lastday, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "The Last Day (set 1)", MACHINE_SUPPORTS_SAVE )
2792 GAME( 1990, lastdaya, lastday, lastday, lastday, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "The Last Day (set 2)", MACHINE_SUPPORTS_SAVE )
2793 GAME( 1990, ddaydoo, lastday, lastday, lastday, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Chulgyeok D-Day (Korea)", MACHINE_SUPPORTS_SAVE )
2794
2795 GAME( 1991, gulfstrm, 0, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Gulf Storm (set 1)", MACHINE_SUPPORTS_SAVE )
2796 GAME( 1991, gulfstrma, gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Gulf Storm (set 2)", MACHINE_SUPPORTS_SAVE )
2797 GAME( 1991, gulfstrmb, gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Gulf Storm (set 3)", MACHINE_SUPPORTS_SAVE )
2798 GAME( 1991, gulfstrmm, gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong (Media Shoji license)", "Gulf Storm (Japan, Media Shoji license)", MACHINE_SUPPORTS_SAVE )
2799 GAME( 1991, gulfstrmk, gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Gulf Storm (Korea)", MACHINE_SUPPORTS_SAVE )
2800
2801 GAME( 1991, pollux, 0, pollux, pollux, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Pollux (set 1)", MACHINE_SUPPORTS_SAVE )
2802 GAME( 1991, polluxa, pollux, pollux, pollux, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Pollux (set 2)", MACHINE_SUPPORTS_SAVE )
2803 GAME( 1991, polluxa2, pollux, pollux, pollux, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong", "Pollux (set 3)", MACHINE_SUPPORTS_SAVE ) // Original Dooyong Board distributed by TCH
2804 GAME( 1991, polluxn, pollux, pollux, pollux, dooyong_z80_ym2203_state, empty_init, ROT270, "Dooyong (NTC / Atlus license)", "Pollux (Japan, NTC license, distributed by Atlus)", MACHINE_SUPPORTS_SAVE )
2805
2806 GAME( 1992, flytiger, 0, flytiger, flytiger, dooyong_z80_state, empty_init, ROT270, "Dooyong", "Flying Tiger (set 1)", MACHINE_SUPPORTS_SAVE )
2807 GAME( 1992, flytigera, flytiger, flytiger, flytiger, dooyong_z80_state, empty_init, ROT270, "Dooyong", "Flying Tiger (set 2)", MACHINE_SUPPORTS_SAVE )
2808
2809 GAME( 1993, bluehawk, 0, bluehawk, bluehawk, dooyong_z80_state, empty_init, ROT270, "Dooyong", "Blue Hawk", MACHINE_SUPPORTS_SAVE )
2810 GAME( 1993, bluehawkn, bluehawk, bluehawk, bluehawk, dooyong_z80_state, empty_init, ROT270, "Dooyong (NTC license)", "Blue Hawk (Japan, NTC license)", MACHINE_SUPPORTS_SAVE )
2811
2812 GAME( 1993, sadari, 0, primella, sadari, dooyong_z80_state, empty_init, ROT0, "Dooyong (NTC license)", "Sadari (Japan, NTC license)", MACHINE_SUPPORTS_SAVE )
2813
2814 GAME( 1994, gundl94, 0, primella, primella, dooyong_z80_state, empty_init, ROT0, "Dooyong", "Gun Dealer '94", MACHINE_SUPPORTS_SAVE )
2815 GAME( 1994, primella, gundl94, primella, primella, dooyong_z80_state, empty_init, ROT0, "Dooyong (NTC license)", "Primella (Japan, NTC license)", MACHINE_SUPPORTS_SAVE )
2816
2817 GAME( 1994, superx, 0, superx, superx, rshark_state, empty_init, ROT270, "Dooyong (NTC license)", "Super-X (NTC)", MACHINE_SUPPORTS_SAVE )
2818 GAME( 1994, superxm, superx, superx, superx, rshark_state, empty_init, ROT270, "Dooyong (Mitchell license)", "Super-X (Mitchell)", MACHINE_SUPPORTS_SAVE )
2819
2820 GAME( 1995, rshark, 0, rshark, rshark, rshark_state, empty_init, ROT270, "Dooyong", "R-Shark", MACHINE_SUPPORTS_SAVE )
2821
2822 GAME( 1996, popbingo, 0, popbingo, popbingo, popbingo_state, empty_init, ROT0, "Dooyong", "Pop Bingo", MACHINE_SUPPORTS_SAVE )
2823