diff options
Diffstat (limited to 'src/mame/drivers/taito_f2.c')
-rw-r--r-- | src/mame/drivers/taito_f2.c | 5965 |
1 files changed, 5965 insertions, 0 deletions
diff --git a/src/mame/drivers/taito_f2.c b/src/mame/drivers/taito_f2.c new file mode 100644 index 00000000000..78cad97ab02 --- /dev/null +++ b/src/mame/drivers/taito_f2.c @@ -0,0 +1,5965 @@ +/*************************************************************************** + +Taito F2 System + +driver by David Graves, Bryan McPhail, Brad Oliver, Andrew Prime, Brian +Troha, Nicola Salmoria with some initial help from Richard Bush + +The Taito F2 system is a fairly flexible hardware platform. The main board +supports three 64x64 tiled scrolling background planes of 8x8 tiles, and a +powerful sprite engine capable of handling all the video chores by itself +(used in e.g. Super Space Invaders). The front tilemap has characters which +are generated in RAM for maximum versatility (fading effects etc.). +The expansion board can have additional gfx chip e.g. for a zooming/rotating +tilemap, or additional tilemap planes. + +Sound is handled by a Z80 with a YM2610 connected to it. + +The memory map for each of the games is similar but shuffled around. + +Notes: +- Metal Black has secret command to select stage. + Start the machine with holding service switch. + Then push 1p start, 1p start, 1p start, service SW, 1p start + while error message is displayed. + +(This also works in many of the other games. Use in Don Doko Don to play + an extra set of fifty levels.) + + +Custom chips +------------ +The old version of the F2 main board (larger) has +TC0100SCN (tilemaps) +TC0200OBJ+TC0210FBC (sprites) +TC0140SYT (sound communication & other stuff) + +The new version has +TC0100SCN (tilemaps) +TC0540OBN+TC0520TBC (sprites) +TC0530SYC (sound communication & other stuff) + + I/O Priority / Palette Additional gfx Other + --------- ------------------- ----------------------- ---------------------------- +finalb TC0220IOC TC0110PCR TC0070RGB +dondokod TC0220IOC TC0360PRI TC0260DAR TC0280GRD(x2)(zoom/rot) +megab TC0220IOC TC0360PRI TC0260DAR TC0030CMD(C-Chip protection) +thundfox TC0220IOC TC0360PRI TC0260DAR TC0100SCN (so it has two) +cameltry TC0220IOC TC0360PRI TC0260DAR TC0280GRD(x2)(zoom/rot) +qtorimon TC0220IOC TC0110PCR TC0070RGB +liquidk TC0220IOC TC0360PRI TC0260DAR +quizhq TMP82C265 TC0110PCR TC0070RGB +ssi TC0510NIO TC0260DAR +gunfront TC0510NIO TC0360PRI TC0260DAR +growl TMP82C265 TC0360PRI TC0260DAR TC0190FMC(4 players input?sprite banking?) +mjnquest TC0110PCR TC0070RGB +footchmp TE7750 TC0360PRI TC0260DAR TC0480SCP(tilemaps) TC0190FMC(4 players input?sprite banking?) +koshien TC0510NIO TC0360PRI TC0260DAR +yuyugogo TC0510NIO TC0260DAR +ninjak TE7750 TC0360PRI TC0260DAR TC0190FMC(4 players input?sprite banking?) +solfigtr ? TC0360PRI TC0260DAR ? +qzquest TC0510NIO TC0260DAR +pulirula TC0510NIO TC0360PRI TC0260DAR TC0430GRW(zoom/rot) +metalb TC0510NIO TC0360PRI TC0260DAR TC0480SCP(tilemaps) +qzchikyu TC0510NIO TC0260DAR +yesnoj TMP82C265 TC0260DAR TC8521AP(RTC?) +deadconx TC0360PRI TC0260DAR TC0480SCP(tilemaps) TC0190FMC(4 players input?sprite banking?) +dinorex TC0510NIO TC0360PRI TC0260DAR +qjinsei TC0510NIO TC0360PRI TC0260DAR +qcrayon TC0510NIO TC0360PRI TC0260DAR +qcrayon2 TC0510NIO TC0360PRI TC0260DAR +driftout TC0510NIO TC0360PRI TC0260DAR TC0430GRW(zoom/rot) + + + +F2 Game List +------------ +. Final Blow (1) +. Don Doko Don (2) +. Mega Blast http://www.taito.co.jp/game-history/80b/megabla.html (3) +. Quiz Torimonochou http://www.taito.co.jp/game-history/90a/qui_tori.html (4) +. Quiz HQ http://www.taito.co.jp/game-history/90a/quiz_hq.html +. Thunder Fox http://www.taito.co.jp/game-history/90a/thu_fox.html +. Liquid Kids http://www.taito.co.jp/game-history/90a/miz_bak.html (7) +. SSI / Majestic 12 http://www.taito.co.jp/game-history/90a/mj12.html (8) +. Gun Frontier http://www.taito.co.jp/game-history/90a/gunfro.html (9) +. Growl / Runark http://www.taito.co.jp/game-history/90a/runark.html (10) +. Hat Trick Hero http://www.taito.co.jp/game-history/90a/hthero.html (11) +. Mahjong Quest http://www.taito.co.jp/game-history/90a/mahque.html (12) +. Yuu-yu no Quiz de Go!Go! http://www.taito.co.jp/game-history/90a/youyu.html (13) +. Ah Eikou no Koshien http://www.taito.co.jp/game-history/90a/koshien.html (14) +. Ninja Kids http://www.taito.co.jp/game-history/90a/ninjakids.html (15) +. Quiz Quest http://www.taito.co.jp/game-history/90a/q_quest.html +. Metal Black http://www.taito.co.jp/game-history/90a/metabla.html +. Quiz Chikyu Boueigun http://www.taito.co.jp/game-history/90a/qui_tik.html +. Dinorex http://www.taito.co.jp/game-history/90a/dinorex.html +. Pulirula +. Dead Connection http://www.taito.co.jp/game-history/90a/deadconn.html +. Quiz Jinsei Gekijou http://www.taito.co.jp/game-history/90a/qui_jin.html +. Quiz Crayon Shinchan http://www.taito.co.jp/game-history/90a/qcrashin.html +. Crayon Shinchan Orato Asobo + + +This list is translated version of +http://www.aianet.or.jp/~eisetu/rom/rom_tait.html +This page also contains info for other Taito boards. + +F2 Motherboard ( Big ) K1100432A, J1100183A + (Small) K1100608A, J1100242A + +Apr.1989 Final Blow (B82, M4300123A, K1100433A) +Jul.1989 Don Doko Don (B95, M4300131A, K1100454A, J1100195A) +Oct.1989 Mega Blast (C11) +Feb.1990 Quiz Torimonochou (C41, K1100554A) +Apr.1990 Cameltry (C38, M4300167A, K1100556A) +Jul.1990 Quiz H.Q. (C53, K1100594A) +Aug.1990 Thunder Fox (C28, M4300181A, K1100580A) (exists in F1 version too) +Sep.1990 Liquid Kids/Mizubaku Daibouken (C49, K1100593A) +Nov.1990 MJ-12/Super Space Invaders (C64, M4300195A, K1100616A, J1100248A) +Jan.1991 Gun Frontier (C71, M4300199A, K1100625A, K1100629A(overseas)) +Feb.1991 Growl/Runark (C74, M4300210A, K1100639A) +Mar.1991 Hat Trick Hero/Euro Football Championship (C80, K11J0646A) +Mar.1991 Yuu-yu no Quiz de Go!Go! (C83, K11J0652A) +Apr.1991 Ah Eikou no Koshien (C81, M43J0214A, K11J654A) +Apr.1991 Ninja Kids (C85, M43J0217A, K11J0659A) +May.1991 Mahjong Quest (C77, K1100637A, K1100637B) +Jul.1991 Quiz Quest (C92, K11J0678A) +Sep.1991 Metal Black (D12) +Oct.1991 Drift Out (Visco) (M43X0241A, K11X0695A) +Nov.1991 PuLiRuLa (C98, M43J0225A, K11J0672A) +Feb.1992 Quiz Chikyu Boueigun (D19, K11J0705A) +Jul.1992 Dead Connection (D28, K11J0715A) +Nov.1992 Dinorex (D39, K11J0254A) +Mar.1993 Quiz Jinsei Gekijou (D48, M43J0262A, K11J0742A) +Aug.1993 Quiz Crayon Shinchan (D55, K11J0758A) +Dec.1993 Crayon Shinchan Orato Asobo (D63, M43J0276A, K11J0779A) + +Mar.1992 Yes.No. Shinri Tokimeki Chart (Fortune teller machine) (D20, K11J0706B) + +Thunder Fox, Drift Out, "Quiz Crayon Shinchan", and "Crayon Shinchan +Orato Asobo" has "Not F2" version PCB. +Foreign version of Cameltry uses different hardware (B89's PLD, +K1100573A, K1100574A). + + + + +Sprite extension area types +=========================== + +These games need a special value for f2_spriteext: + +Yuyugogo = 1 +Pulirula = 2 +Dinorex = 3 +Quiz Crayon 1&2 = 3 +Quiz Jinsei = 3 +(all other games need it to be zero) + +TODO Lists +========== + +- The sprite system is still partly a mystery, and not an accurate emulation. + A lot of sprite glitches are caused by data in sprite ram not being correct, + part from one frame and part from the previous one. There has to be some + buffering inside the chip but it's not clear how. See below the irq section + for a long list of observations on sprite glitches. + + Other limitations include: misplaced tile of the zooming title in Qcrayon + (the one on the yellow background in attract); sprites when you get a home + run in Koshien are often out on x axis by 1 pixel. + +- TC0480SCP emulation (footchmp, metalb, deadconx) has slight inaccuracies. + Zoomed layers and zoomed pixel rows are not precisely positioned. + +- DIPS, still many unknown + +- Restored save states on some games tend to hang. + +- All non-quiz games except Solfigtr have 2 country sets dumped: if 1 byte diff + then create the third set. + + +Don Doko Don +------------ + +Roz layer is one pixel out vertically when screen flipped. + + +Cameltry (camltrya) +-------- + +Alt version with YM2203 and M6295 +Sound frequencies may be incorrect + + +Gun Frontier +------------ + +There are mask sprites used on the waterfall in the first round +of attract demo, however it's not clear what they should mask since +there don't seem to be sprites below them. Shadow maybe? +(BM161104 - Fixed) + + +Pulirula +-------- + +In level 3, the mask sprites used for the door are misaligned by one pixel to +the left. +(BM100705 - Not a bug - various alignment problems seem to be confirmed from a real pcb). +Shadows appear to have some kind of flicker effect on real pcb - not emulated/understood. + +Metal Black +----------- + +Tilemap screenflip support has an issue: blue planet early in attract +should be 1 pixel left. + +Sprite emulation issues may be responsible for minor glitches on the +"bolts" on round 4 boss ship: some sprite/tilemap lag creeps in. + +Missing two blend effects: there's a sun sprite underneath tilemaps +in round 1; and the boss sprite crosses under the tilemaps at start +of round 5 finale. +(BM161104 - Fixed) + + +Yesnoj +------ + +Input mapping incomplete. There's a 0x01 one which only seems to be +used in printer [printer test?] mode. It seems to be a printer status +input. With the value currently returned, it sounds an alarm and says +[Japanese trans.] "Error detected on the printer. Call machine operator." + +The timer stays at 00:00. Missing RTC emulation? + +[Coin lockout/ctr?] + + +Quiz Crayon 2 +------------- + +There should be a highlight circle around the player while it moves on the +map. This is done by a sprite which doesn't have priority over the +background. This is probably the same thing as the waterfall in Gun Frontier. +(BM161104 - Fixed) + +Driftout +-------- + +Sprites are 1 pixel too far right in screenflip. +Roz layer is around 4 pixels too far down in screenflip. + + +PCB Layout +---------- + +K11T0658A +NINJA KIDS +|----------------------------------------------| +|PAL PAL C85-12*.49 C85-15*.50 DSWA DSWB | +|68000P12 C85-06.49 C85-07.50 OSC1 TE7750 | +| | +| 84256 84256 C85-03.65 | +| MB3771 | +| TCO190FMC TCO100SCN TC51832 | +|C85-02.19 84256 84256 TC51832 J| +|C85-01.17 HM3-65764KS A| +| M| +|TC51832 TC51832 TCO360PRI M| +|TC51832 TC51832 TCO540OBN TCO260DAR A| +|TC51832 TC51832 | +|TC51832 TC51832 TCO520TBC | +|TC51832 TC51832 OSC2 Z80A | +|TC51832 TC51832 TCO530SYC | +|TC51832 TC51832 C85-05.33 C85-14.54 | +| C85-04.31 YM2610 YM3016 | +|----------------------------------------------| + +Notes: + OSC1 = 26.686MHz + OSC2 = 24.000MHz + 68000 clock: 12.000MHz (24 / 2) + Z80 clock: 4.000MHz (24 / 6) + YM2610 clock: 8.000MHz (24 / 3) + Vsync: 60Hz + +***************************************************************************/ + +#include "driver.h" +#include "cpu/m68000/m68000.h" +#include "video/taitoic.h" +#include "audio/taitosnd.h" +#include "taito_f2.h" +#include "sound/2203intf.h" +#include "sound/2610intf.h" +#include "sound/okim6295.h" + + +static INT32 banknum = 0; +static INT32 mjnquest_input; +static INT32 yesnoj_dsw = 0; + + +/********************************************************** + GAME INPUTS +**********************************************************/ + +static WRITE16_HANDLER( taitof2_watchdog_w ) +{ + watchdog_reset_w(0,data); +} + +static WRITE16_HANDLER( growl_coin_word_w ) /* what about coins 3&4 ?? */ +{ + if (ACCESSING_LSB) + { + coin_lockout_w(0, ~data & 0x01); + coin_lockout_w(1, ~data & 0x02); + coin_counter_w(0, data & 0x04); + coin_counter_w(1, data & 0x08); + } +} + +static WRITE16_HANDLER( taitof2_4p_coin_word_w ) +{ + if (ACCESSING_LSB) + { + coin_lockout_w(0, ~data & 0x01); + coin_lockout_w(1, ~data & 0x02); + coin_lockout_w(2, ~data & 0x04); + coin_lockout_w(3, ~data & 0x08); + coin_counter_w(0, data & 0x10); + coin_counter_w(1, data & 0x20); + coin_counter_w(2, data & 0x40); + coin_counter_w(3, data & 0x80); + } +} + +static WRITE16_HANDLER( ninjak_coin_word_w ) +{ + if (ACCESSING_MSB) + { + coin_lockout_w(0, ~data & 0x0100); + coin_lockout_w(1, ~data & 0x0200); + coin_lockout_w(2, ~data & 0x0400); + coin_lockout_w(3, ~data & 0x0800); + coin_counter_w(0, data & 0x1000); + coin_counter_w(1, data & 0x2000); + coin_counter_w(2, data & 0x4000); + coin_counter_w(3, data & 0x8000); + } +} + +static READ16_HANDLER( growl_dsw_r ) +{ + switch (offset) + { + case 0x00: + return input_port_3_word_r(0,mem_mask); /* DSW A */ + + case 0x01: + return input_port_4_word_r(0,mem_mask); /* DSW B */ + } + +logerror("CPU #0 PC %06x: warning - read unmapped dsw_r offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( growl_input_r ) +{ + switch (offset) + { + case 0x00: + return input_port_0_word_r(0,mem_mask); /* IN0 */ + + case 0x01: + return input_port_1_word_r(0,mem_mask); /* IN1 */ + + case 0x02: + return input_port_2_word_r(0,mem_mask); /* IN2 */ + + } + +logerror("CPU #0 PC %06x: warning - read unmapped input_r offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( footchmp_input_r ) +{ + switch (offset) + { + case 0x00: + return input_port_3_word_r(0,mem_mask); /* DSW A */ + + case 0x01: + return input_port_4_word_r(0,mem_mask); /* DSW B */ + + case 0x02: + return input_port_2_word_r(0,mem_mask); /* IN2 */ + +// case 0x03: +// return (coin_word & ~mem_mask); + + case 0x05: + return input_port_0_word_r(0,mem_mask); /* IN0 */ + + case 0x06: + return input_port_1_word_r(0,mem_mask); /* IN1 */ + + case 0x07: + return input_port_5_word_r(0,mem_mask); /* IN3 */ + + case 0x08: + return input_port_6_word_r(0,mem_mask); /* IN4 */ + } + +logerror("CPU #0 PC %06x: warning - read unmapped input offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( ninjak_input_r ) +{ + switch (offset) + { + case 0x00: + return (input_port_3_word_r(0,0) << 8); /* DSW A */ + + case 0x01: + return (input_port_4_word_r(0,0) << 8); /* DSW B */ + + case 0x02: + return (input_port_0_word_r(0,0) << 8); /* IN 0 */ + + case 0x03: + return (input_port_1_word_r(0,0) << 8); /* IN 1 */ + + case 0x04: + return (input_port_5_word_r(0,0) << 8); /* IN 3 */ + + case 0x05: + return (input_port_6_word_r(0,0) << 8); /* IN 4 */ + + case 0x06: + return (input_port_2_word_r(0,0) << 8); /* IN 2 */ + +// case 0x07: +// return (coin_word & ~mem_mask); + } + +logerror("CPU #0 PC %06x: warning - read unmapped input offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( cameltry_paddle_r ) +{ + static int last[2]; + int curr,res = 0xff; + + switch (offset) + { + case 0x00: + curr = input_port_5_word_r(0,0); /* Paddle A */ + res = curr - last[0]; + last[0] = curr; + return res; + + case 0x02: + curr = input_port_6_word_r(0,0); /* Paddle B */ + res = curr - last[1]; + last[1] = curr; + return res; + } + +logerror("CPU #0 PC %06x: warning - read unmapped paddle offset %06x\n",activecpu_get_pc(),offset); + + return 0; +} + +static READ16_HANDLER( driftout_paddle_r ) +{ + switch (offset) + { + case 0x00: + return input_port_5_word_r(0,mem_mask); /* Paddle A */ + + case 0x01: + return input_port_6_word_r(0,mem_mask); /* Paddle B */ + } + +logerror("CPU #0 PC %06x: warning - read unmapped paddle offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( deadconx_input_r ) +{ + switch (offset) + { + case 0x00: + return input_port_3_word_r(0,mem_mask); /* DSW A */ + + case 0x01: + return input_port_4_word_r(0,mem_mask); /* DSW B */ + + case 0x02: + return input_port_2_word_r(0,mem_mask); /* IN2 */ + +// case 0x03: +// return (coin_word & ~mem_mask); + + case 0x05: + return input_port_0_word_r(0,mem_mask); /* IN0 */ + + case 0x06: + return input_port_1_word_r(0,mem_mask); /* IN1 */ + } + +logerror("CPU #0 PC %06x: warning - read unmapped input offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( mjnquest_dsw_r ) +{ + switch (offset) + { + case 0x00: + { + return (input_port_5_word_r(0,0) << 8) + input_port_7_word_r(0,0); /* DSW A + coin */ + } + + case 0x01: + { + return (input_port_6_word_r(0,0) << 8) + input_port_8_word_r(0,0); /* DSW B + coin */ + } + } + + logerror("CPU #0 PC %06x: warning - read unmapped dsw_r offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( mjnquest_input_r ) +{ + switch (mjnquest_input) + { + case 0x01: + return input_port_0_word_r(0,mem_mask); /* IN0 */ + + case 0x02: + return input_port_1_word_r(0,mem_mask); /* IN1 */ + + case 0x04: + return input_port_2_word_r(0,mem_mask); /* IN2 */ + + case 0x08: + return input_port_3_word_r(0,mem_mask); /* IN3 */ + + case 0x10: + return input_port_4_word_r(0,mem_mask); /* IN4 */ + + } + +logerror("CPU #0 mjnquest_input %06x: warning - read unknown input %06x\n",activecpu_get_pc(),mjnquest_input); + + return 0xff; +} + +static WRITE16_HANDLER( mjnquest_inputselect_w ) +{ + mjnquest_input = (data >> 6); +} + +static READ16_HANDLER( quizhq_input1_r ) +{ + switch (offset) + { + case 0x00: + return input_port_4_word_r(0,mem_mask); /* DSW B */ + + case 0x01: + return input_port_0_word_r(0,mem_mask); /* IN0 */ + } + +logerror("CPU #0 PC %06x: warning - read unmapped input_r offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( quizhq_input2_r ) +{ + switch (offset) + { + case 0x00: + return input_port_3_word_r(0,mem_mask); /* DSW A */ + + case 0x01: + return input_port_1_word_r(0,mem_mask); /* IN1 */ + + case 0x02: + return input_port_2_word_r(0,mem_mask); /* IN2 */ + } + +logerror("CPU #0 PC %06x: warning - read unmapped input_r offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static READ16_HANDLER( yesnoj_input_r ) +{ + switch (offset) + { + case 0x00: + return input_port_0_word_r(0,mem_mask); /* IN0 */ + +/* case 0x01 only used if "printer" DSW is on, and appears to + be printer status byte */ + + case 0x02: + return input_port_1_word_r(0,mem_mask); /* IN1 */ + } + +logerror("CPU #0 PC %06x: warning - read unmapped input_r offset %06x\n",activecpu_get_pc(),offset); + + return 0x0; +} + +static READ16_HANDLER( yesnoj_dsw_r ) +{ +#ifdef MAME_DEBUG + logerror("CPU #0 PC = %06x: read yesnoj DSW %01x\n",activecpu_get_pc(),yesnoj_dsw); +#endif + + yesnoj_dsw = 1 - yesnoj_dsw; /* game reads same word twice to get DSW A then B so we toggle */ + + if (yesnoj_dsw) + { + return input_port_2_word_r(0,mem_mask); + } + else + { + return input_port_3_word_r(0,mem_mask); + } +} + +/****************************************************************** + INTERRUPTS (still a WIP) + +The are two interrupt request signals: VBL and DMA. DMA comes +from the sprite generator (maybe when it has copied the data to +a private buffer, or rendered the current frame, or who knows what +else). +The requests are mapped through a PAL so no hardwiring, but the PAL +could be the same across all the games. All the games have just two +valid vectors, IRQ5 and IRQ6. + +It seems that usually VBL maps to IRQ5 and DMA to IRQ6. However +there are jumpers on the board allowing to swap the two interrupt +request signals, so this could explain a need for certain games to +have them in the opposite order. + +There are lots of sprite glitches in many games because the sprite ram +is often updated in two out-of-sync chunks. I am almost sure there is +some partial buffering going on in the sprite chip, and DMA has to +play a part in it. + + + sprite ctrl regs interrupts & sprites + 0006 000a 8006 800a + ---------------------- ----------------------------------------------- +finalb 8000 0300 0000 0000 Needs partial buffering like dondokod to avoid glitches +dondokod 8000 0000/8 0000 0000 IRQ6 just sets a flag. IRQ5 waits for that flag, + toggles ctrl register 0000<->0008, and copies bytes + 0 and 8 *ONLY* of sprite data (code, color, flip, + ctrl). The other bytes of sprite data (coordinates + and zoom) are updated by the main program. + Caching sprite data and using bytes 0 and 8 from + previous frame and the others from *TWO* frames + before is enough to get glitch-free sprites that seem + to be perfectly in sync with scrolling (check the tree + mouths during level change). +thundfox 8000 0000 0000 0000 IRQ6 copies bytes 0 and 8 *ONLY* of sprite data (code, + color, flip, ctrl). The other bytes of sprite data + (coordinates and zoom) are updated (I think) by the + main program. + The same sprite data caching that works for dondokod + improves sprites, but there are still glitches related + to zoom (check third round of attract mode). Those + glitches can be fixed by buffering also the zoom ctrl + byte. + Moreover, sprites are not in perfect sync with the + background (sometimes they are one frame behind, but + not always). +qtorimon 8000 0000 0000 0000 IRQ6 does some stuff but doesn't seem to deal with + sprites. IRQ5 copies bytes 0, 8 *AND ALSO 2* of sprite + data in one routine, and immediately after that the + remaining bytes 4 and 6 in another routine, without + doing, it seems, any waiting inbetween. + Nevertheless, separated sprite data caching like in + dondokod is still required to avoid glitches. +liquidk 8000 0000/8 0000 0000 Same as dondokod. An important difference is that + the sprite ctrl register doesn't toggle every frame + (because the handler can't complete the frame in + time?). This can be seen easily in the attract mode, + where sprite glitches appear. + Correctly handling the ctrl register and sprite data + caching seems to be vital to avoid sprite glitches. +quizhq 8000 0000 0000 0000 Both IRQ5 and IRQ6 do stuff, I haven't investigated. + There is a very subtle sprite glitch if sprite data + buffering is not used: the blinking INSERT COIN in + the right window will get moved as garbage chars on + the left window score and STOCK for one frame when + INSERT COINS disappears from the right. This happens + because bytes 0 and 8 of the sprite data are one + frame behind and haven't been cleared yet. +ssi 8000 0000 0000 0000 IRQ6 does nothing. IRQ5 copies bytes 0 and 8 *ONLY* + of sprite data (code, color, flip, ctrl). The other + bytes of sprite data (coordinates and zoom) are + updated by the main program. + The same sprite data caching that works for dondokod + avoids major glitches, but I'm not sure it's working + right when the big butterfly (time bonus) is on + screen (it flickers on and off every frame). +gunfront 8000 1000/1 8001 1000/1 The toggling bit in the control register selects the + sprite bank used. It normally toggles every frame but + sticks for two frame when lots of action is going on + (see smart bombs in attract mode) and glitches will + appear if it is not respected. + IRQ6 writes the sprite ctrl registers, and also writes + related data to the sprites at 9033e0/90b3e0. The + active one gets 8000/8001 in byte 6 and 1001/1000 in + byte 10, while the other gets 0. Note that the value + in byte 10 is inverted from the active bank, as if it + were a way to tell the sprite hardware "after this, go + to the other bank". + Note also that IRQ6 isn't the only one writing to the + sprite ctrl registers, this is done also in the parts + that actually change the sprite data (I think it's + main program, not interrupt), so it's not clear who's + "in charge". Actually it seems that what IRQ6 writes + is soon overwritten so that what I outlined above + regarding 9033e0/90b3e0 is no longer true, and they + are no longer in sync with the ctrl registers, messing + up smart bombs. + There don't seem to be other glitches even without + sprite data buffering. +growl 8000 0000 8001 0001 IRQ6 just sets a flag. I haven't investigated who + updates the sprite ram. + This game uses sprite banks like gunfront, but unlike + gunfront it doesn't change the ctrl registers. What it + does is change the sprites at 903210/90b210; 8000/8001 + is always written in byte 6, while byte 10 receives + the active bank (1000 or 1001). There are also end of + list markers placed before that though, and those seem + to always match what's stored in the ctrl registers + (8000 1000 for the first bank and 8001 1001 for the + second). + There don't seem to be sprite glitches even without + sprite data buffering, but sprites are not in sync with + the background. +mjnquest 8000 0800/8 0000 0000 +footchmp 8000 0000 8001 0001 IRQ6 just sets a flag (and writes to an unknown memory + location). + This games uses sprite banks as well, this time it + writes markers at 2033e0/20b3e0, it always writes + 1000/1001 to byte 10, while it writes 8000 or 8001 to + byte 6 depending on the active bank. This is the exact + opposite of growl... +hthero +koshien 8000 0000 8001 0001 Another game using banks.The markers are again at + 9033e0/90b3e0 but this time byte 6 receives 9000/9001. + Byte 10 is 1000 or 1001 depending on the active bank. +yuyugogo 8000 0800/8 0000 0000 +ninjak 8000 0000 8001 0001 uses banks +solfigtr 8000 0000 8001 0001 uses banks +qzquest 8000 0000 0000 0000 Separated sprite data caching like in dondokod is + required to avoid glitches. +pulirula 8000 0000 8001 0001 uses banks +qzchikyu 8000 0000 0000 0000 With this game there are glitches and the sprite data + caching done in dondokod does NOT fix them. +deadconx 8/9000 0000/1 8/9001 0000/1 I guess it's not a surprise that this game uses banks + in yet another different way. +dinorex 8000 0000 8001 0001 uses banks +driftout 8000 0000/8 0000 0000 The first control changes from 8000 to 0000 at the end + of the attract demo and seems to stay that way. + + +******************************************************************/ + +static TIMER_CALLBACK( taitof2_interrupt6 ) +{ + cpunum_set_input_line(0,6,HOLD_LINE); +} + +static INTERRUPT_GEN( taitof2_interrupt ) +{ + timer_set(ATTOTIME_IN_CYCLES(500,0),0, taitof2_interrupt6); + cpunum_set_input_line(0, 5, HOLD_LINE); +} + + +/**************************************************************** + SOUND +****************************************************************/ + +static void reset_sound_region(void) +{ + memory_set_bankptr( 2, memory_region(REGION_CPU2) + (banknum * 0x4000) + 0x10000 ); +} + +static WRITE8_HANDLER( sound_bankswitch_w ) +{ + banknum = (data - 1) & 7; + reset_sound_region(); + +#ifdef MAME_DEBUG + if (banknum>2) logerror("CPU #1 switch to ROM bank %06x: should only happen if Z80 prg rom is 128K!\n",banknum); +#endif +} + + +static READ16_HANDLER( taitof2_sound_r ) +{ + if (offset == 1) + return (taitosound_comm16_lsb_r(0,mem_mask)); + else return 0; +} + +static READ16_HANDLER( taitof2_msb_sound_r ) +{ + if (offset == 1) + return (taitosound_comm16_msb_r(0,mem_mask)); + else return 0; +} + + +static INT32 driveout_sound_latch = 0; + + +static READ8_HANDLER( driveout_sound_command_r) +{ + cpunum_set_input_line(1,0,CLEAR_LINE); +// logerror("sound IRQ OFF (sound command=%02x)\n",driveout_sound_latch); + return driveout_sound_latch; +} + +static INT32 oki_bank = 0; + +static void reset_driveout_sound_region(void) +{ + OKIM6295_set_bank_base(0, oki_bank*0x40000); +} + +static WRITE8_HANDLER (oki_bank_w) +{ + if ((data&4) && (oki_bank!=(data&3)) ) + { + oki_bank = (data&3); + } + reset_driveout_sound_region(); +} + +static WRITE16_HANDLER ( driveout_sound_command_w ) +{ + static int nibble = 0; + + if (ACCESSING_MSB) + { + data >>= 8; + if (offset==0) + { + nibble = data & 1; + } + else + { + if (nibble==0) + { + driveout_sound_latch = (data & 0x0f) | (driveout_sound_latch & 0xf0); + } + else + { + driveout_sound_latch = ((data<<4) & 0xf0) | (driveout_sound_latch & 0x0f); + cpunum_set_input_line (1, 0, ASSERT_LINE); + } + } + } +} + + +/*********************************************************** + MEMORY STRUCTURES +***********************************************************/ + +static ADDRESS_MAP_START( finalb_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0220IOC_halfword_r) /* I/O */ + AM_RANGE(0x320000, 0x320003) AM_READ(taitof2_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( finalb_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_WRITE(TC0110PCR_word_w) /* palette */ + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0220IOC_halfword_w) /* I/O */ + AM_RANGE(0x320000, 0x320001) AM_WRITE(taitosound_port16_lsb_w) + AM_RANGE(0x320002, 0x320003) AM_WRITE(taitosound_comm16_lsb_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x810000, 0x81ffff) AM_WRITE(MWA16_NOP) /* error in game init code ? */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xb00002, 0xb00003) AM_WRITE(MWA16_NOP) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dondokod_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0220IOC_halfword_r) /* I/O */ + AM_RANGE(0x320000, 0x320003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) + AM_RANGE(0xa00000, 0xa01fff) AM_READ(TC0280GRD_word_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dondokod_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0220IOC_halfword_w) /* I/O */ + AM_RANGE(0x320000, 0x320001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x320002, 0x320003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa00000, 0xa01fff) AM_WRITE(TC0280GRD_word_w) /* ROZ tilemap */ + AM_RANGE(0xa02000, 0xa0200f) AM_WRITE(TC0280GRD_ctrl_word_w) + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( megab_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x100003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x120000, 0x12000f) AM_READ(TC0220IOC_halfword_r) /* I/O */ + AM_RANGE(0x180000, 0x180fff) AM_READ(cchip2_word_r) + AM_RANGE(0x200000, 0x20ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x301fff) AM_READ(MRA16_RAM) + AM_RANGE(0x600000, 0x60ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x610000, 0x61ffff) AM_READ(MRA16_RAM) /* unused? */ + AM_RANGE(0x620000, 0x62000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( megab_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x100001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x100002, 0x100003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x120000, 0x12000f) AM_WRITE(TC0220IOC_halfword_w) /* I/O */ + AM_RANGE(0x180000, 0x180fff) AM_WRITE(cchip2_word_w) AM_BASE(&cchip2_ram) + AM_RANGE(0x200000, 0x20ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x300000, 0x301fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x400000, 0x40001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ + AM_RANGE(0x600000, 0x60ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x610000, 0x61ffff) AM_WRITE(MWA16_RAM) /* unused? */ + AM_RANGE(0x620000, 0x62000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( thundfox_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x101fff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x20000f) AM_READ(TC0220IOC_halfword_r) /* I/O */ + AM_RANGE(0x220000, 0x220003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x300000, 0x30ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x40ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x420000, 0x42000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x500000, 0x50ffff) AM_READ(TC0100SCN_word_1_r) /* tilemaps */ + AM_RANGE(0x520000, 0x52000f) AM_READ(TC0100SCN_ctrl_word_1_r) + AM_RANGE(0x600000, 0x60ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( thundfox_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x101fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x200000, 0x20000f) AM_WRITE(TC0220IOC_halfword_w) /* I/O */ + AM_RANGE(0x220000, 0x220001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x220002, 0x220003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x300000, 0x30ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x400000, 0x40ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x420000, 0x42000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x500000, 0x50ffff) AM_WRITE(TC0100SCN_word_1_w) /* tilemaps */ + AM_RANGE(0x520000, 0x52000f) AM_WRITE(TC0100SCN_ctrl_word_1_w) + AM_RANGE(0x600000, 0x60ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x800000, 0x80001f) AM_WRITE(TC0360PRI_halfword_swap_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( cameltry_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0220IOC_halfword_r) /* I/O */ + AM_RANGE(0x300018, 0x30001f) AM_READ(cameltry_paddle_r) + AM_RANGE(0x320000, 0x320003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x813fff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) + AM_RANGE(0xa00000, 0xa01fff) AM_READ(TC0280GRD_word_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( cameltry_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0220IOC_halfword_w) /* I/O */ + AM_RANGE(0x320000, 0x320001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x320002, 0x320003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x800000, 0x813fff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa00000, 0xa01fff) AM_WRITE(TC0280GRD_word_w) /* ROZ tilemap */ + AM_RANGE(0xa02000, 0xa0200f) AM_WRITE(TC0280GRD_ctrl_word_w) + AM_RANGE(0xd00000, 0xd0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qtorimon_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0x500000, 0x50000f) AM_READ(TC0220IOC_halfword_r) /* I/O */ + AM_RANGE(0x600000, 0x600003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qtorimon_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_WRITE(TC0110PCR_word_w) /* palette */ + AM_RANGE(0x500000, 0x50000f) AM_WRITE(TC0220IOC_halfword_w) /* I/O */ + AM_RANGE(0x600000, 0x600001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x600002, 0x600003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x910000, 0x9120ff) AM_WRITE(MWA16_NOP) /* error in init code ? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( liquidk_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0220IOC_halfword_r) /* I/O */ + AM_RANGE(0x320000, 0x320003) AM_READ(taitof2_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( liquidk_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0220IOC_halfword_w) /* I/O */ + AM_RANGE(0x320000, 0x320001) AM_WRITE(taitosound_port16_lsb_w) + AM_RANGE(0x320002, 0x320003) AM_WRITE(taitosound_comm16_lsb_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( quizhq_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0bffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0x500000, 0x50000f) AM_READ(quizhq_input1_r) + AM_RANGE(0x580000, 0x58000f) AM_READ(quizhq_input2_r) + AM_RANGE(0x600000, 0x600003) AM_READ(taitof2_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( quizhq_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_WRITE(TC0110PCR_word_w) /* palette */ + AM_RANGE(0x500004, 0x500005) AM_WRITE(growl_coin_word_w) + AM_RANGE(0x580000, 0x580001) AM_WRITE(taitof2_watchdog_w) /* ??? */ + AM_RANGE(0x580006, 0x580007) AM_WRITE(MWA16_NOP) /* ??? */ + AM_RANGE(0x600000, 0x600001) AM_WRITE(taitosound_port16_lsb_w) + AM_RANGE(0x600002, 0x600003) AM_WRITE(taitosound_comm16_lsb_w) + AM_RANGE(0x680000, 0x680001) AM_WRITE(MWA16_NOP) /* ??? */ + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x810000, 0x81ffff) AM_WRITE(MWA16_NOP) /* error in init code ? */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( ssi_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0x200000, 0x20ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x301fff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x400003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x600000, 0x60ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x620000, 0x62000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( ssi_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0x200000, 0x20ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x300000, 0x301fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x400000, 0x400001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x400002, 0x400003) AM_WRITE(taitosound_comm16_msb_w) +// AM_RANGE(0x500000, 0x500001) AM_WRITE(MWA16_NOP) /* ?? */ + AM_RANGE(0x600000, 0x60ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps (not used) */ + AM_RANGE(0x620000, 0x62000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* sprite ram */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( gunfront_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0bffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0510NIO_halfword_wordswap_r) + AM_RANGE(0x320000, 0x320003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( gunfront_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0bffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0510NIO_halfword_wordswap_w) + AM_RANGE(0x320000, 0x320001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x320002, 0x320003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +// AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* ?? */ + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( growl_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(growl_dsw_r) + AM_RANGE(0x320000, 0x32000f) AM_READ(growl_input_r) + AM_RANGE(0x400000, 0x400003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x508000, 0x50800f) AM_READ(input_port_5_word_r) /* IN3 */ + AM_RANGE(0x50c000, 0x50c00f) AM_READ(input_port_6_word_r) /* IN4 */ + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( growl_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w) + AM_RANGE(0x340000, 0x340001) AM_WRITE(taitof2_watchdog_w) + AM_RANGE(0x400000, 0x400001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x400002, 0x400003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w) + AM_RANGE(0x504000, 0x504001) AM_WRITE(MWA16_NOP) /* unknown... various values */ + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mjnquest_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x110000, 0x11ffff) AM_READ(MRA16_RAM) /* "sram" */ + AM_RANGE(0x120000, 0x12ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0x300000, 0x30000f) AM_READ(mjnquest_dsw_r) + AM_RANGE(0x310000, 0x310001) AM_READ(mjnquest_input_r) + AM_RANGE(0x360000, 0x360003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x400000, 0x40ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x420000, 0x42000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x500000, 0x50ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mjnquest_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x110000, 0x11ffff) AM_WRITE(MWA16_RAM) /* "sram" */ + AM_RANGE(0x120000, 0x12ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x200007) AM_WRITE(TC0110PCR_word_w) /* palette */ + AM_RANGE(0x320000, 0x320001) AM_WRITE(mjnquest_inputselect_w) + AM_RANGE(0x330000, 0x330001) AM_WRITE(MWA16_NOP) /* watchdog ? */ + AM_RANGE(0x350000, 0x350001) AM_WRITE(MWA16_NOP) /* watchdog ? */ + AM_RANGE(0x360000, 0x360001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x360002, 0x360003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x380000, 0x380001) AM_WRITE(TC0100SCN_gfxbank_w) /* scr gfx bank select */ + AM_RANGE(0x400000, 0x40ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x420000, 0x42000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x500000, 0x50ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( footchmp_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x20ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x40ffff) AM_READ(TC0480SCP_word_r) /* tilemaps */ + AM_RANGE(0x430000, 0x43002f) AM_READ(TC0480SCP_ctrl_word_r) + AM_RANGE(0x600000, 0x601fff) AM_READ(MRA16_RAM) + AM_RANGE(0x700000, 0x70001f) AM_READ(footchmp_input_r) + AM_RANGE(0xa00000, 0xa00003) AM_READ(taitof2_sound_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( footchmp_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x20ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w) /* updated at $a6e, off irq5 */ + AM_RANGE(0x400000, 0x40ffff) AM_WRITE(TC0480SCP_word_w) /* tilemaps */ + AM_RANGE(0x430000, 0x43002f) AM_WRITE(TC0480SCP_ctrl_word_w) + AM_RANGE(0x500000, 0x50001f) AM_WRITE(TC0360PRI_halfword_w) /* 500002 written like a watchdog?! */ + AM_RANGE(0x600000, 0x601fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x700006, 0x700007) AM_WRITE(taitof2_4p_coin_word_w) + AM_RANGE(0x800000, 0x800001) AM_WRITE(taitof2_watchdog_w) /* ??? */ + AM_RANGE(0xa00000, 0xa00001) AM_WRITE(taitosound_port16_lsb_w) + AM_RANGE(0xa00002, 0xa00003) AM_WRITE(taitosound_comm16_lsb_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( koshien_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0x320000, 0x320003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +// AM_RANGE(0xa20000, 0xa20001) AM_READ(koshien_spritebank_r) /* for debugging spritebank */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( koshien_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0x320000, 0x320001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x320002, 0x320003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa20000, 0xa20001) AM_WRITE(koshien_spritebank_w) + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_swap_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( yuyugogo_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x20000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0x400000, 0x400003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) + AM_RANGE(0xa00000, 0xa01fff) AM_READ(MRA16_RAM) + AM_RANGE(0xb00000, 0xb10fff) AM_READ(MRA16_RAM) + AM_RANGE(0xd00000, 0xdfffff) AM_READ(MRA16_BANK1) /* extra data rom */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( yuyugogo_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x20000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0x400000, 0x400001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x400002, 0x400003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa00000, 0xa01fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0xb00000, 0xb10fff) AM_WRITE(MWA16_RAM) /* deliberate writes to $b10xxx, I think */ + AM_RANGE(0xc00000, 0xc01fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE(&f2_sprite_extension) AM_SIZE(&f2_spriteext_size) + AM_RANGE(0xd00000, 0xdfffff) AM_WRITE(MWA16_ROM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( ninjak_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(ninjak_input_r) + AM_RANGE(0x400000, 0x400003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( ninjak_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x30000e, 0x30000f) AM_WRITE(ninjak_coin_word_w) + AM_RANGE(0x380000, 0x380001) AM_WRITE(taitof2_watchdog_w) /* ??? */ + AM_RANGE(0x400000, 0x400001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x400002, 0x400003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x600000, 0x60000f) AM_WRITE(taitof2_spritebank_w) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_w) /* b00002 written like a watchdog?! */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( solfigtr_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30000f) AM_READ(growl_dsw_r) + AM_RANGE(0x320000, 0x32000f) AM_READ(growl_input_r) + AM_RANGE(0x400000, 0x400003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( solfigtr_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x201fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w) /* NOT VERIFIED */ + AM_RANGE(0x340000, 0x340001) AM_WRITE(taitof2_watchdog_w) /* NOT VERIFIED */ + AM_RANGE(0x400000, 0x400001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x400002, 0x400003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w) + AM_RANGE(0x504000, 0x504001) AM_WRITE(MWA16_NOP) /* unknown... various values */ + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qzquest_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x17ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x20000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0x300000, 0x300003) AM_READ(taitof2_sound_r) + AM_RANGE(0x400000, 0x401fff) AM_READ(MRA16_RAM) + AM_RANGE(0x500000, 0x50ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x600000, 0x60ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x700000, 0x70ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x720000, 0x72000f) AM_READ(TC0100SCN_ctrl_word_0_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qzquest_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x20000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0x300000, 0x300001) AM_WRITE(taitosound_port16_lsb_w) + AM_RANGE(0x300002, 0x300003) AM_WRITE(taitosound_comm16_lsb_w) + AM_RANGE(0x400000, 0x401fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x500000, 0x50ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x600000, 0x60ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x700000, 0x70ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x720000, 0x72000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( pulirula_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0bffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x200003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x300000, 0x30ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x401fff) AM_READ(TC0430GRW_word_r) + AM_RANGE(0x700000, 0x701fff) AM_READ(MRA16_RAM) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) + AM_RANGE(0xb00000, 0xb0000f) AM_READ(TC0510NIO_halfword_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( pulirula_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0bffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x200001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x200002, 0x200003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x300000, 0x30ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x400000, 0x401fff) AM_WRITE(TC0430GRW_word_w) /* ROZ tilemap */ + AM_RANGE(0x402000, 0x40200f) AM_WRITE(TC0430GRW_ctrl_word_w) +// AM_RANGE(0x500000, 0x500001) AM_WRITE(MWA16_NOP) /* ??? */ + AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE(&f2_sprite_extension) AM_SIZE(&f2_spriteext_size) + AM_RANGE(0x700000, 0x701fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa00000, 0xa0001f) AM_WRITE(TC0360PRI_halfword_swap_w) + AM_RANGE(0xb00000, 0xb0000f) AM_WRITE(TC0510NIO_halfword_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( metalb_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0bffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x30ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x500000, 0x50ffff) AM_READ(TC0480SCP_word_r) /* tilemaps */ + AM_RANGE(0x530000, 0x53002f) AM_READ(TC0480SCP_ctrl_word_r) + AM_RANGE(0x700000, 0x703fff) AM_READ(MRA16_RAM) + AM_RANGE(0x800000, 0x80000f) AM_READ(TC0510NIO_halfword_wordswap_r) + AM_RANGE(0x900000, 0x900003) AM_READ(taitof2_msb_sound_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( metalb_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0bffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x300000, 0x30ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +// AM_RANGE(0x42000c, 0x42000f) AM_WRITE(MWA16_NOP) /* zeroed */ + AM_RANGE(0x500000, 0x50ffff) AM_WRITE(TC0480SCP_word_w) /* tilemaps */ + AM_RANGE(0x530000, 0x53002f) AM_WRITE(TC0480SCP_ctrl_word_w) + AM_RANGE(0x600000, 0x60001f) AM_WRITE(TC0360PRI_halfword_w) + AM_RANGE(0x700000, 0x703fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x800000, 0x80000f) AM_WRITE(TC0510NIO_halfword_wordswap_w) + AM_RANGE(0x900000, 0x900001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x900002, 0x900003) AM_WRITE(taitosound_comm16_msb_w) +// AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* ??? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qzchikyu_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x17ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x20000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0x300000, 0x300003) AM_READ(taitof2_sound_r) + AM_RANGE(0x400000, 0x401fff) AM_READ(MRA16_RAM) + AM_RANGE(0x500000, 0x50ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x600000, 0x60ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x700000, 0x70ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x720000, 0x72000f) AM_READ(TC0100SCN_ctrl_word_0_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qzchikyu_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x20000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0x300000, 0x300001) AM_WRITE(taitosound_port16_lsb_w) + AM_RANGE(0x300002, 0x300003) AM_WRITE(taitosound_comm16_lsb_w) + AM_RANGE(0x400000, 0x401fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x500000, 0x50ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x600000, 0x60ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x700000, 0x70ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x720000, 0x72000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( yesnoj_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x20ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x40ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x500000, 0x50ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x520000, 0x52000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x600000, 0x601fff) AM_READ(MRA16_RAM) +// AM_RANGE(0x700000, 0x70000b) AM_READ(yesnoj_unknown_r) /* what's this? */ + AM_RANGE(0x800000, 0x800003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0xa00000, 0xa0000f) AM_READ(yesnoj_input_r) + AM_RANGE(0xb00000, 0xb00001) AM_READ(yesnoj_dsw_r) /* ?? (reads this twice in init) */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( yesnoj_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x20ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x400000, 0x40ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x500000, 0x50ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x520000, 0x52000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x600000, 0x601fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x800000, 0x800001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x800002, 0x800003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x900002, 0x900003) AM_WRITE(MWA16_NOP) /* lots of similar writes */ + AM_RANGE(0xc00000, 0xc00001) AM_WRITE(MWA16_NOP) /* watchdog ?? */ + AM_RANGE(0xd00000, 0xd00001) AM_WRITE(MWA16_NOP) /* lots of similar writes */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( deadconx_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x200000, 0x20ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x40ffff) AM_READ(TC0480SCP_word_r) /* tilemaps */ + AM_RANGE(0x430000, 0x43002f) AM_READ(TC0480SCP_ctrl_word_r) + AM_RANGE(0x600000, 0x601fff) AM_READ(MRA16_RAM) + AM_RANGE(0x700000, 0x70001f) AM_READ(deadconx_input_r) + AM_RANGE(0xa00000, 0xa00003) AM_READ(taitof2_msb_sound_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( deadconx_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x20ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w) + AM_RANGE(0x400000, 0x40ffff) AM_WRITE(TC0480SCP_word_w) /* tilemaps */ +// AM_RANGE(0x42000c, 0x42000f) AM_WRITE(MWA16_NOP) /* zeroed */ + AM_RANGE(0x430000, 0x43002f) AM_WRITE(TC0480SCP_ctrl_word_w) + AM_RANGE(0x500000, 0x50001f) AM_WRITE(TC0360PRI_halfword_w) /* uses 500002 like a watchdog !? */ + AM_RANGE(0x600000, 0x601fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x700006, 0x700007) AM_WRITE(taitof2_4p_coin_word_w) + AM_RANGE(0x800000, 0x800001) AM_WRITE(taitof2_watchdog_w) /* ??? */ + AM_RANGE(0xa00000, 0xa00001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0xa00002, 0xa00003) AM_WRITE(taitosound_comm16_msb_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dinorex_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x2fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0x500000, 0x501fff) AM_READ(MRA16_RAM) + AM_RANGE(0x600000, 0x60ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x800000, 0x80ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x900000, 0x90ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x920000, 0x92000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0xa00000, 0xa00003) AM_READ(taitof2_msb_sound_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dinorex_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x2fffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0x400000, 0x400fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE(&f2_sprite_extension) AM_SIZE(&f2_spriteext_size) + AM_RANGE(0x500000, 0x501fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x600000, 0x60ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x700000, 0x70001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x920000, 0x92000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0xa00000, 0xa00001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0xa00002, 0xa00003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0xb00000, 0xb00001) AM_WRITE(MWA16_NOP) /* watchdog? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qjinsei_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x1fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x200003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x300000, 0x30ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x700000, 0x701fff) AM_READ(MRA16_RAM) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) + AM_RANGE(0xb00000, 0xb0000f) AM_READ(TC0510NIO_halfword_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qjinsei_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x200001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x200002, 0x200003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x300000, 0x30ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x500000, 0x500001) AM_WRITE(MWA16_NOP) /* watchdog ? */ + AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE(&f2_sprite_extension) AM_SIZE(&f2_spriteext_size) + AM_RANGE(0x700000, 0x701fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa00000, 0xa0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ + AM_RANGE(0xb00000, 0xb0000f) AM_WRITE(TC0510NIO_halfword_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qcrayon_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x3fffff) AM_READ(MRA16_BANK1) /* extra data rom */ + AM_RANGE(0x500000, 0x500003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x700000, 0x701fff) AM_READ(MRA16_RAM) + AM_RANGE(0x800000, 0x80ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x900000, 0x90ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x920000, 0x92000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0xa00000, 0xa0000f) AM_READ(TC0510NIO_halfword_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qcrayon_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) +// AM_RANGE(0x200000, 0x200001) AM_WRITE(MWA16_NOP) /* unknown */ + AM_RANGE(0x300000, 0x3fffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x500000, 0x500001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x500002, 0x500003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE(&f2_sprite_extension) AM_SIZE(&f2_spriteext_size) + AM_RANGE(0x700000, 0x701fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x920000, 0x92000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0xa00000, 0xa0000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0xb00000, 0xb0001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qcrayon2_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x20ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x300000, 0x301fff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x40ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x500000, 0x50ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x520000, 0x52000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x600000, 0x67ffff) AM_READ(MRA16_BANK1) /* extra data rom */ + AM_RANGE(0x700000, 0x70000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0xa00000, 0xa00003) AM_READ(taitof2_msb_sound_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( qcrayon2_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x20ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x300000, 0x301fff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x400000, 0x40ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x500000, 0x50ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x520000, 0x52000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x600000, 0x67ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x700000, 0x70000f) AM_WRITE(TC0510NIO_halfword_w) + AM_RANGE(0x900000, 0x90001f) AM_WRITE(TC0360PRI_halfword_w) /* ?? */ + AM_RANGE(0xa00000, 0xa00001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0xa00002, 0xa00003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0xb00000, 0xb017ff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE(&f2_sprite_extension) AM_SIZE(&f2_spriteext_size) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( driftout_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x200003) AM_READ(taitof2_msb_sound_r) + AM_RANGE(0x300000, 0x30ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x401fff) AM_READ(TC0430GRW_word_r) + AM_RANGE(0x700000, 0x701fff) AM_READ(MRA16_RAM) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) + AM_RANGE(0xb00000, 0xb0000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0xb00018, 0xb0001f) AM_READ(driftout_paddle_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( driftout_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x200001) AM_WRITE(taitosound_port16_msb_w) + AM_RANGE(0x200002, 0x200003) AM_WRITE(taitosound_comm16_msb_w) + AM_RANGE(0x300000, 0x30ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x400000, 0x401fff) AM_WRITE(TC0430GRW_word_w) /* ROZ tilemap */ + AM_RANGE(0x402000, 0x40200f) AM_WRITE(TC0430GRW_ctrl_word_w) + AM_RANGE(0x700000, 0x701fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa00000, 0xa0001f) AM_WRITE(TC0360PRI_halfword_swap_w) + AM_RANGE(0xb00000, 0xb0000f) AM_WRITE(TC0510NIO_halfword_w) +ADDRESS_MAP_END + +/* same as driftout, except for sound address 0x200000 */ +static ADDRESS_MAP_START( driveout_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x200003) AM_READ(MRA16_NOP) + AM_RANGE(0x300000, 0x30ffff) AM_READ(MRA16_RAM) + AM_RANGE(0x400000, 0x401fff) AM_READ(TC0430GRW_word_r) + AM_RANGE(0x700000, 0x701fff) AM_READ(MRA16_RAM) + AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x900000, 0x90ffff) AM_READ(MRA16_RAM) + AM_RANGE(0xb00000, 0xb0000f) AM_READ(TC0510NIO_halfword_r) + AM_RANGE(0xb00018, 0xb0001f) AM_READ(driftout_paddle_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( driveout_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x0fffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x200003) AM_WRITE(driveout_sound_command_w) + AM_RANGE(0x300000, 0x30ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x400000, 0x401fff) AM_WRITE(TC0430GRW_word_w) /* ROZ tilemap */ + AM_RANGE(0x402000, 0x40200f) AM_WRITE(TC0430GRW_ctrl_word_w) + AM_RANGE(0x700000, 0x701fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x820000, 0x82000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xa00000, 0xa0001f) AM_WRITE(TC0360PRI_halfword_swap_w) + AM_RANGE(0xb00000, 0xb0000f) AM_WRITE(TC0510NIO_halfword_w) +ADDRESS_MAP_END + + +/***************************************************************************/ + +static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x3fff) AM_READ(MRA8_ROM) + AM_RANGE(0x4000, 0x7fff) AM_READ(MRA8_BANK2) + AM_RANGE(0xc000, 0xdfff) AM_READ(MRA8_RAM) + AM_RANGE(0xe000, 0xe000) AM_READ(YM2610_status_port_0_A_r) + AM_RANGE(0xe001, 0xe001) AM_READ(YM2610_read_port_0_r) + AM_RANGE(0xe002, 0xe002) AM_READ(YM2610_status_port_0_B_r) + AM_RANGE(0xe200, 0xe200) AM_READ(MRA8_NOP) + AM_RANGE(0xe201, 0xe201) AM_READ(taitosound_slave_comm_r) + AM_RANGE(0xea00, 0xea00) AM_READ(MRA8_NOP) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) + AM_RANGE(0xc000, 0xdfff) AM_WRITE(MWA8_RAM) + AM_RANGE(0xe000, 0xe000) AM_WRITE(YM2610_control_port_0_A_w) + AM_RANGE(0xe001, 0xe001) AM_WRITE(YM2610_data_port_0_A_w) + AM_RANGE(0xe002, 0xe002) AM_WRITE(YM2610_control_port_0_B_w) + AM_RANGE(0xe003, 0xe003) AM_WRITE(YM2610_data_port_0_B_w) + AM_RANGE(0xe200, 0xe200) AM_WRITE(taitosound_slave_port_w) + AM_RANGE(0xe201, 0xe201) AM_WRITE(taitosound_slave_comm_w) + AM_RANGE(0xe400, 0xe403) AM_WRITE(MWA8_NOP) /* pan */ + AM_RANGE(0xee00, 0xee00) AM_WRITE(MWA8_NOP) /* ? */ + AM_RANGE(0xf000, 0xf000) AM_WRITE(MWA8_NOP) /* ? */ + AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) /* ?? */ +ADDRESS_MAP_END + + +/* Alt version of Cameltry, YM2203 + M6925 sound */ + +static ADDRESS_MAP_START( camltrya_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) // I can't see a bank control, but there ARE some bytes past 0x8000 +// AM_RANGE(0x4000, 0x7fff) AM_READ(MRA8_BANK1) + AM_RANGE(0x8000, 0x8fff) AM_READ(MRA8_RAM) + AM_RANGE(0x9000, 0x9000) AM_READ(YM2203_status_port_0_r) + AM_RANGE(0xa001, 0xa001) AM_READ(taitosound_slave_comm_r) + AM_RANGE(0xb000, 0xb000) AM_READ(OKIM6295_status_0_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( camltrya_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) + AM_RANGE(0x8000, 0x8fff) AM_WRITE(MWA8_RAM) + AM_RANGE(0x9000, 0x9000) AM_WRITE(YM2203_control_port_0_w) + AM_RANGE(0x9001, 0x9001) AM_WRITE(YM2203_write_port_0_w) + AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) + AM_RANGE(0xa001, 0xa001) AM_WRITE(taitosound_slave_comm_w) +// AM_RANGE(0xb000, 0xb000) AM_WRITE(unknown_w) // probably controlling sample player? + AM_RANGE(0xb000, 0xb000) AM_WRITE(OKIM6295_data_0_w) + AM_RANGE(0xb001, 0xb001) AM_WRITE(OKIM6295_data_0_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( driveout_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) + AM_RANGE(0x8000, 0x87ff) AM_READ(MRA8_RAM) + AM_RANGE(0x9800, 0x9800) AM_READ(OKIM6295_status_0_r) + AM_RANGE(0xa000, 0xa000) AM_READ(driveout_sound_command_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( driveout_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) + AM_RANGE(0x8000, 0x87ff) AM_WRITE(MWA8_RAM) + AM_RANGE(0x9000, 0x9000) AM_WRITE(oki_bank_w) + AM_RANGE(0x9800, 0x9800) AM_WRITE(OKIM6295_data_0_w) +ADDRESS_MAP_END + +/*********************************************************** + INPUT PORTS, DIPs +***********************************************************/ + +#define TAITO_COINAGE_WORLD_8 \ + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ + PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) \ + PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) \ + PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + +#define TAITO_COINAGE_JAPAN_8 \ + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ + PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ + PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) \ + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ + PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ + PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) + +/* This is a new Japanese coinage used in later TAITO games */ +#define TAITO_COINAGE_JAPAN_NEW_8 \ + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) \ + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) + +#define TAITO_COINAGE_US_8 \ + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ + PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ + PORT_DIPNAME( 0xc0, 0xc0, "Price to Continue" ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0xc0, "Same as Start" ) + +#define TAITO_DIFFICULTY_8 \ + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) \ + PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) \ + PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) \ + PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + +#define TAITO_F2_PLAYERS_INPUT( player ) \ + PORT_START \ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(player) PORT_8WAY \ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(player) PORT_8WAY \ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) PORT_8WAY \ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) PORT_8WAY \ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(player) \ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(player) +/* 0x40 and 0x80 are not always the same in all games, so they are not included here */ + +#define TAITO_F2_SYSTEM_INPUT \ + PORT_START \ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) \ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) \ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) \ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) +/* The other bits vary from one game to another, so they are not included here */ + + +static INPUT_PORTS_START( finalb ) + PORT_START_TAG("DSWA") + /* Not sure how to handle alternate controls */ + PORT_DIPNAME( 0x01, 0x01, "Alternate Controls" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT /* controls below are DIP selectable */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) /* 1P sen.sw.? */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) /* 1P ducking? */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) /* 2P sen.sw.? */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) /* 2P ducking? */ +INPUT_PORTS_END + +static INPUT_PORTS_START( finalbj ) + PORT_INCLUDE(finalb) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( dondokod ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0c, "10k and 100k" ) + PORT_DIPSETTING( 0x08, "10k and 150k" ) + PORT_DIPSETTING( 0x04, "10k and 250k" ) + PORT_DIPSETTING( 0x00, "10k and 350k" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPSETTING( 0x10, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( dondokdu ) + PORT_INCLUDE(dondokod) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_US_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( dondokdj ) + PORT_INCLUDE(dondokod) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( megab ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0c, "100k only" ) + PORT_DIPSETTING( 0x04, "150k only" ) + PORT_DIPSETTING( 0x08, "200k only" ) + PORT_DIPSETTING( 0x00, DEF_STR( None ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x10, "1" ) + PORT_DIPSETTING( 0x00, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x20, "4" ) + PORT_DIPNAME( 0x40, 0x40, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Dual ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( megabj ) + PORT_INCLUDE(megab) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( thundfox ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) // all 2 in manual + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, "Timer" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Dual ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( thndfoxu ) + PORT_INCLUDE(thundfox) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_US_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( thndfoxj ) + PORT_INCLUDE(thundfox) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( cameltry ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_US_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Start remain time" ) + PORT_DIPSETTING( 0x00, "35" ) + PORT_DIPSETTING( 0x04, "40" ) + PORT_DIPSETTING( 0x0c, "50" ) + PORT_DIPSETTING( 0x08, "60" ) + PORT_DIPNAME( 0x30, 0x30, "Continue play time" ) + PORT_DIPSETTING( 0x00, "+20" ) + PORT_DIPSETTING( 0x10, "+25" ) + PORT_DIPSETTING( 0x30, "+30" ) + PORT_DIPSETTING( 0x20, "+40" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x80, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Dual ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* Paddle A */ + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_PLAYER(1) + + PORT_START /* Paddle B */ + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_PLAYER(2) +INPUT_PORTS_END + +static INPUT_PORTS_START( cameltrj ) + PORT_INCLUDE(cameltry) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( qtorimon ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) // all 5 in manual + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x10, "1" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPNAME( 0x40, 0x40, "Show Correct Answer" ) + PORT_DIPSETTING( 0x40, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( liquidk ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0c, "30k and 100k" ) + PORT_DIPSETTING( 0x08, "30k and 150k" ) + PORT_DIPSETTING( 0x04, "50k and 250k" ) + PORT_DIPSETTING( 0x00, "50k and 350k" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPSETTING( 0x10, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x80, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Dual ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( liquidku ) + PORT_INCLUDE(liquidk) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_US_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( mizubaku ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0c, "30k and 100k" ) + PORT_DIPSETTING( 0x08, "30k and 150k" ) + PORT_DIPSETTING( 0x04, "50k and 250k" ) + PORT_DIPSETTING( 0x00, "50k and 350k" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPSETTING( 0x10, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x80, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Dual ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( ssi ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Shields" ) + PORT_DIPSETTING( 0x00, DEF_STR( None )) + PORT_DIPSETTING( 0x0c, "1") + PORT_DIPSETTING( 0x04, "2") + PORT_DIPSETTING( 0x08, "3") + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "2") + PORT_DIPSETTING( 0x10, "3") + PORT_DIPNAME( 0xa0, 0xa0, "2 Players Mode" ) + PORT_DIPSETTING( 0xa0, "Simultaneous") + PORT_DIPSETTING( 0x80, "Alternate, Single") + PORT_DIPSETTING( 0x00, "Alternate, Dual") + PORT_DIPSETTING( 0x20, "Not Allowed") + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( majest12 ) + PORT_INCLUDE(ssi) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( growl ) + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) //are "unused" verified from manual? + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x30, 0x30, "Cabinet Type" ) + PORT_DIPSETTING( 0x30, "2 Players" ) + PORT_DIPSETTING( 0x20, "4 Players / 4 Coin Slots" ) // Push Player button A to start + PORT_DIPSETTING( 0x10, "4 Players / 2 cabinets combined" ) + PORT_DIPSETTING( 0x00, "4 Players / 2 Coin Slots" ) + PORT_DIPNAME( 0x40, 0x40, "Final Boss Continue" ) + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN3 */ + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START3 ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START4 ) + + PORT_START /* IN4 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( growlu ) + PORT_INCLUDE(growl) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_US_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( runark ) + PORT_INCLUDE(growl) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( pulirula ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Magic" ) + PORT_DIPSETTING( 0x0c, "3" ) + PORT_DIPSETTING( 0x08, "4" ) + PORT_DIPSETTING( 0x04, "5" ) +// PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Dual ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( pulirulj ) + PORT_INCLUDE(pulirula) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( qzquest ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 //?? + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( qzchikyu ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 //?? + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( footchmp ) + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START /* IN2 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT ) + + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, "Game Over Type" ) // 2p simultaneous play + PORT_DIPSETTING( 0x01, "Both Teams' Games Over" ) + PORT_DIPSETTING( 0x00, "Losing Team's Game is Over" ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Game_Time ) ) + PORT_DIPSETTING( 0x00, "1.5 Minutes" ) + PORT_DIPSETTING( 0x0c, " 2 Minutes" ) + PORT_DIPSETTING( 0x04, "2.5 Minutes" ) + PORT_DIPSETTING( 0x08, " 3 Minutes" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x30, "2 Players" ) + PORT_DIPSETTING( 0x20, "4 Players / 4 Coin Slots" ) // Push Player button A to start + PORT_DIPSETTING( 0x10, "4 Players / 2 cabinets combined" ) + PORT_DIPSETTING( 0x00, "4 Players / 2 Coin Slots" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, "Game Version" ) // Not used for Hat Trick Hero / Euro Champ '92 + PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x80, "European" ) + + /* IN3 */ + TAITO_F2_PLAYERS_INPUT( 3 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 ) + + /* IN4 */ + TAITO_F2_PLAYERS_INPUT( 4 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 ) +INPUT_PORTS_END + +static INPUT_PORTS_START( hthero ) + PORT_INCLUDE(footchmp) + + PORT_MODIFY("DSWA") + PORT_DIPNAME( 0x80, 0x00, "Game Over Type" ) // 2p simultaneous play + PORT_DIPSETTING( 0x80, "Both Teams' Games Over" ) + PORT_DIPSETTING( 0x00, "Losing Team's Game is Over" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) + + PORT_MODIFY("DSWB") + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Game_Time ) ) + PORT_DIPSETTING( 0x00, "1.5 Minutes" ) + PORT_DIPSETTING( 0x30, " 2 Minutes" ) + PORT_DIPSETTING( 0x20, "2.5 Minutes" ) + PORT_DIPSETTING( 0x10, " 3 Minutes" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x0c, "2 Players" ) + PORT_DIPSETTING( 0x04, "4 Players / 4 Coin Slots" ) // Push Player button A to start + PORT_DIPSETTING( 0x08, "4 Players / 2 cabinets combined" ) + PORT_DIPSETTING( 0x00, "4 Players / 2 Coin Slots" ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( ninjak ) + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START /* IN2 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN4 ) + + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) //is this verified from manual? + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Cabinet Type" ) + PORT_DIPSETTING( 0x0c, "2 players" ) + PORT_DIPSETTING( 0x08, "TROG (4 players / 2 coin slots)" ) + PORT_DIPSETTING( 0x04, "MTX2 (4 players / 2 cabinets combined)" ) + PORT_DIPSETTING( 0x00, "TMNT (4 players / 4 coin slots)" ) + PORT_DIPNAME( 0x30, 0x10, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Game Type" ) + PORT_DIPSETTING( 0x00, "1 Player only" ) + PORT_DIPSETTING( 0x80, "Multiplayer" ) + + /* IN3 */ + TAITO_F2_PLAYERS_INPUT( 3 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 ) + + /* IN4 */ + TAITO_F2_PLAYERS_INPUT( 4 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 ) +INPUT_PORTS_END + +static INPUT_PORTS_START( ninjaku ) + PORT_INCLUDE(ninjak) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_US_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( ninjakj ) + PORT_INCLUDE(ninjak) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( driftout ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) // all 5 in Service Mode + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Control" ) /* correct acc. to service mode */ + PORT_DIPSETTING( 0x0c, DEF_STR( Joystick ) ) + PORT_DIPSETTING( 0x08, "Paddle" ) + PORT_DIPSETTING( 0x04, DEF_STR( Joystick ) ) + PORT_DIPSETTING( 0x00, "Steering wheel" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* 2P not used? */ + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* Paddle A */ + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(1) + + PORT_START /* Paddle B */ + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2) +INPUT_PORTS_END + +static INPUT_PORTS_START( gunfront ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) /* Listed as "Unused" */ + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x08, "10k and every 80k" ) + PORT_DIPSETTING( 0x0c, "20k and every 80k" ) + PORT_DIPSETTING( 0x04, "30k and every 80k" ) + PORT_DIPSETTING( 0x00, "60k and every 80k" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Dual ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( gunfronj ) + PORT_INCLUDE(gunfront) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( metalb ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x04, "80k and every 160k" ) + PORT_DIPSETTING( 0x0c, "70k and every 150k" ) + PORT_DIPSETTING( 0x00, "100k and every 200k" ) + PORT_DIPSETTING( 0x08, "50k and every 120k" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x20, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Dual ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( metalbj ) + PORT_INCLUDE(metalb) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( deadconx ) + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START /* IN2 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service A") PORT_CODE(KEYCODE_9) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service B") PORT_CODE(KEYCODE_0) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service C") PORT_CODE(KEYCODE_MINUS) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT ) + + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") /* DSW B, missing a timer speed maybe? */ + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On) ) + PORT_DIPNAME( 0x18, 0x18, "Damage" ) + PORT_DIPSETTING( 0x10, "Small" ) /* Hero can take 12 gun shots */ + PORT_DIPSETTING( 0x18, DEF_STR( Normal ) ) /* Hero can take 10 gun shots */ + PORT_DIPSETTING( 0x08, "Big" ) /* Hero can take 8 gun shots */ + PORT_DIPSETTING( 0x00, "Biggest" ) /* Hero can take 5 gun shots */ + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Game Type" ) + PORT_DIPSETTING( 0x00, "1 Player only" ) + PORT_DIPSETTING( 0x80, "Multiplayer" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( deadconj ) + PORT_INCLUDE(deadconx) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( dinorex ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) //are "unused" verified from manual? + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Damage" ) + PORT_DIPSETTING( 0x08, "Small" ) + PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x04, "Big" ) + PORT_DIPSETTING( 0x00, "Biggest" ) + PORT_DIPNAME( 0x10, 0x10, "Timer Speed" ) // Appears to make little difference + PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x00, "Fast" ) + PORT_DIPNAME( 0x20, 0x20, "Match Type" ) + PORT_DIPSETTING( 0x20, "Best of 3" ) + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPNAME( 0x40, 0x40, "2 Player Mode" ) // actually this seems to be unknown + PORT_DIPSETTING( 0x40, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x80, 0x80, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Dual ) ) + + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( dinorexj ) + PORT_INCLUDE(dinorex) + + PORT_MODIFY("DSWA") + TAITO_COINAGE_JAPAN_NEW_8 +INPUT_PORTS_END + + +static INPUT_PORTS_START( solfigtr ) + /* IN0 */ + TAITO_F2_PLAYERS_INPUT( 1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + /* IN1 */ + TAITO_F2_PLAYERS_INPUT( 2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_WORLD_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( koshien ) + PORT_START /* DSW A, one lets you control fielders ? */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, "Timer" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Dual ) ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) +INPUT_PORTS_END + +static INPUT_PORTS_START( quizhq ) + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Time" ) + PORT_DIPSETTING( 0x0c, "5 seconds" ) + PORT_DIPSETTING( 0x08, "10 seconds" ) + PORT_DIPSETTING( 0x04, "15 seconds" ) + PORT_DIPSETTING( 0x00, "20 seconds" ) + PORT_DIPNAME( 0x30, 0x30, "Stock" ) // Lives + PORT_DIPSETTING( 0x20, "1" ) + PORT_DIPSETTING( 0x30, "2" ) + PORT_DIPSETTING( 0x10, "3" ) + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Upright Controls" ) /* ie single or two players at once */ + PORT_DIPSETTING( 0x00, DEF_STR( Single ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Dual ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( qjinsei ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( qcrayon ) + PORT_START_TAG("DSWA") + PORT_DIPUNUSED( 0x01, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Default Time" ) /* Can be affected ingame by some items and/or player location */ + PORT_DIPSETTING( 0x00, "6 seconds" ) + PORT_DIPSETTING( 0x04, "7 seconds" ) + PORT_DIPSETTING( 0x08, "8 seconds" ) + PORT_DIPSETTING( 0x0c, "10 seconds" ) + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( qcrayon2 ) + PORT_START_TAG("DSWA") + PORT_DIPUNUSED( 0x01, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPUNUSED( 0x04, IP_ACTIVE_LOW ) /* These 2 Dip Switches were designed to change the default timer */ + PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW ) /* but the 10 seconds setting is duplicated 4 times in the tables */ + PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x80, 0x80, "Game Control" ) + PORT_DIPSETTING( 0x80, DEF_STR( Joystick ) ) + PORT_DIPSETTING( 0x00, "4 Buttons" ) + + PORT_START /* IN0 */ + /* Joystick Control */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + /* 4 Buttons Control */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + + PORT_START /* IN1 */ + /* Joystick Control */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80) + /* 4 Buttons Control */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( yuyugogo ) + PORT_START_TAG("DSWA") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START_TAG("DSWB") + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + /* IN2 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( mjnquest ) + PORT_START /* IN0 */ + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* IN1 */ + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) + PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* IN2 */ + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) + PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* IN3 */ + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* IN4 */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* IN5 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // ? + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* IN6 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* IN7:DSW A */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_NEW_8 + + PORT_START /* IN8:DSW B */ + TAITO_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( yesnoj ) // apparently no test mode, though text in rom suggests printer test + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + + /* IN1 */ + TAITO_F2_SYSTEM_INPUT + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* DSW A ??? */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* DSW B ? */ + PORT_DIPNAME( 0x01, 0x00, "Results Printer" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) // same for both slots + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + +/*********************************************************** + GFX DECODING +***********************************************************/ + +static const gfx_layout finalb_tilelayout = +{ + 16,16, /* 16*16 sprites */ + RGN_FRAC(1,2), + 6, /* 6 bits per pixel */ + { RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+1, 0, 1, 2, 3 }, + { 3*4, 2*4, 1*4, 0*4, 7*4, 6*4, 5*4, 4*4, + 11*4, 10*4, 9*4, 8*4, 15*4, 14*4, 13*4, 12*4 }, + { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, + 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, + 128*8 /* every sprite takes 128 consecutive bytes */ +}; + +static const gfx_layout tilelayout = +{ + 16,16, /* 16*16 sprites */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 1, 2, 3 }, + { 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4, 9*4, 8*4, 11*4, 10*4, 13*4, 12*4, 15*4, 14*4 }, + { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, + 128*8 /* every sprite takes 128 consecutive bytes */ +}; + +static const gfx_layout charlayout = +{ + 8,8, /* 8*8 characters */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 1, 2, 3 }, + { 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + 32*8 /* every sprite takes 32 consecutive bytes */ +}; + +static const gfx_layout yuyugogo_charlayout = +{ + 8,8, /* 8*8 characters */ + RGN_FRAC(1,1), + 1, /* 1 bit per pixel */ + { 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + 8*8 /* every sprite takes 8 consecutive bytes */ +}; + +static const gfx_layout pivotlayout = +{ + 8,8, /* 8*8 characters */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 1, 2, 3 }, + { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + 32*8 /* every sprite takes 32 consecutive bytes */ +}; + +static GFXDECODE_START( finalb ) + GFXDECODE_ENTRY( REGION_GFX2, 0, finalb_tilelayout, 0, 64 ) /* sprites & playfield, 6-bit deep */ + GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 256 ) /* sprites & playfield */ +GFXDECODE_END + +static GFXDECODE_START( taitof2 ) + GFXDECODE_ENTRY( REGION_GFX2, 0, tilelayout, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 256 ) /* sprites & playfield */ +GFXDECODE_END + +static GFXDECODE_START( pivot ) + GFXDECODE_ENTRY( REGION_GFX2, 0, tilelayout, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( REGION_GFX3, 0, pivotlayout, 0, 256 ) /* sprites & playfield */ +GFXDECODE_END + +static GFXDECODE_START( yuyugogo ) + GFXDECODE_ENTRY( REGION_GFX2, 0, tilelayout, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( REGION_GFX1, 0, yuyugogo_charlayout, 0, 256 ) /* sprites & playfield */ +GFXDECODE_END + +static GFXDECODE_START( thundfox ) + GFXDECODE_ENTRY( REGION_GFX2, 0, tilelayout, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 256 ) /* TC0100SCN #1 */ + GFXDECODE_ENTRY( REGION_GFX3, 0, charlayout, 0, 256 ) /* TC0100SCN #2 */ +GFXDECODE_END + +static const gfx_layout deadconx_charlayout = +{ + 16,16, /* 16*16 characters */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 1, 2, 3 }, + { 1*4, 0*4, 5*4, 4*4, 3*4, 2*4, 7*4, 6*4, 9*4, 8*4, 13*4, 12*4, 11*4, 10*4, 15*4, 14*4 }, + { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, + 128*8 /* every sprite takes 128 consecutive bytes */ +}; + +static GFXDECODE_START( deadconx ) + GFXDECODE_ENTRY( REGION_GFX2, 0, tilelayout, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( REGION_GFX1, 0, deadconx_charlayout, 0, 256 ) /* sprites & playfield */ +GFXDECODE_END + + +/* handler called by the YM2610 emulator when the internal timers cause an IRQ */ +static void irq_handler(int irq) +{ + cpunum_set_input_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); +} + +static struct YM2610interface ym2610_interface = +{ + irq_handler, + REGION_SOUND2, /* Delta-T */ + REGION_SOUND1 /* ADPCM */ +}; + + +static WRITE8_HANDLER( camltrya_porta_w ) +{ + // Implement // +} + +static struct YM2203interface ym2203_interface = +{ + 0, /* portA read */ + 0, + camltrya_porta_w, /* portA write - not implemented */ + 0, /* portB write */ + irq_handler +}; + + +/*********************************************************** + MACHINE DRIVERS +***********************************************************/ + +static MACHINE_START( f2 ) +{ + state_save_register_global(banknum); + state_save_register_func_postload(reset_sound_region); +} + +static MACHINE_RESET( qcrayon ) +{ + /* point to the extra ROM */ + memory_set_bankptr(1,memory_region(REGION_USER1)); +} + + +static MACHINE_DRIVER_START( taito_f2 ) + + /* basic machine hardware */ + MDRV_CPU_ADD_TAG("main", M68000, 24000000/2) /* 12 MHz */ + MDRV_CPU_VBLANK_INT(taitof2_interrupt,1) + + MDRV_CPU_ADD(Z80, 24000000/6) /* 4 MHz */ + /* audio CPU */ + MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) + + MDRV_MACHINE_START(f2) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION /* frames per second, vblank duration */) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(taitof2) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitof2_default) + MDRV_VIDEO_EOF(taitof2_no_buffer) + MDRV_VIDEO_UPDATE(taitof2) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 24000000/3) /* Was 16000000/2, but only a 24Mhz OSC */ + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( finalb ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(finalb_readmem,finalb_writemem) + + /* video hardware */ + MDRV_GFXDECODE(finalb) + MDRV_VIDEO_START(taitof2_finalb) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( dondokod ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(dondokod_readmem,dondokod_writemem) + + /* video hardware */ + MDRV_GFXDECODE(pivot) + MDRV_VIDEO_START(taitof2_dondokod) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed) + MDRV_VIDEO_UPDATE(taitof2_pri_roz) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( megab ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(megab_readmem,megab_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_megab) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( thundfox ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(thundfox_readmem,thundfox_writemem) + + /* video hardware */ + MDRV_GFXDECODE(thundfox) + MDRV_VIDEO_START(taitof2_thundfox) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed_thundfox) + MDRV_VIDEO_UPDATE(thundfox) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( cameltry ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(cameltry_readmem,cameltry_writemem) + + /* video hardware */ + MDRV_GFXDECODE(pivot) + MDRV_VIDEO_START(taitof2_dondokod) + MDRV_VIDEO_UPDATE(taitof2_pri_roz) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( qtorimon ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(qtorimon_readmem,qtorimon_writemem) + + /* video hardware */ + MDRV_GFXDECODE(yuyugogo) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( liquidk ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(liquidk_readmem,liquidk_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_megab) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( quizhq ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(quizhq_readmem,quizhq_writemem) + + /* video hardware */ + MDRV_GFXDECODE(yuyugogo) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( ssi ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(ssi_readmem,ssi_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_ssi) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed_thundfox) // buffer_delayed_thundfox instead of buffer_delayed fixes the butterfly powerup + MDRV_VIDEO_UPDATE(ssi) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( gunfront ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(gunfront_readmem,gunfront_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_gunfront) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( growl ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(growl_readmem,growl_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_growl) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( mjnquest ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(mjnquest_readmem,mjnquest_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_mjnquest) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( footchmp ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(footchmp_readmem,footchmp_writemem) + + /* video hardware */ + MDRV_GFXDECODE(deadconx) + MDRV_VIDEO_START(taitof2_footchmp) + MDRV_VIDEO_EOF(taitof2_full_buffer_delayed) + MDRV_VIDEO_UPDATE(deadconx) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( hthero ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(footchmp_readmem,footchmp_writemem) + + /* video hardware */ + MDRV_GFXDECODE(deadconx) + MDRV_VIDEO_START(taitof2_hthero) + MDRV_VIDEO_EOF(taitof2_full_buffer_delayed) + MDRV_VIDEO_UPDATE(deadconx) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( koshien ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(koshien_readmem,koshien_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_koshien) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( yuyugogo ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(yuyugogo_readmem,yuyugogo_writemem) + + MDRV_MACHINE_RESET(qcrayon) + + /* video hardware */ + MDRV_GFXDECODE(yuyugogo) + MDRV_VIDEO_START(taitof2_yuyugogo) + MDRV_VIDEO_UPDATE(yesnoj) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( ninjak ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(ninjak_readmem,ninjak_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_ninjak) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( solfigtr ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(solfigtr_readmem,solfigtr_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_solfigtr) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( qzquest ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(qzquest_readmem,qzquest_writemem) + + /* video hardware */ + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( pulirula ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(pulirula_readmem,pulirula_writemem) + + /* video hardware */ + MDRV_GFXDECODE(pivot) + MDRV_VIDEO_START(taitof2_pulirula) + MDRV_VIDEO_UPDATE(taitof2_pri_roz) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( metalb ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(metalb_readmem,metalb_writemem) + + /* video hardware */ + MDRV_GFXDECODE(deadconx) + MDRV_PALETTE_LENGTH(8192) + MDRV_VIDEO_START(taitof2_metalb) + MDRV_VIDEO_UPDATE(metalb) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( qzchikyu ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(qzchikyu_readmem,qzchikyu_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_qzchikyu) + MDRV_VIDEO_EOF(taitof2_partial_buffer_delayed_qzchikyu) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( yesnoj ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(yesnoj_readmem,yesnoj_writemem) + + /* video hardware */ + MDRV_GFXDECODE(yuyugogo) + MDRV_VIDEO_START(taitof2_yesnoj) + MDRV_VIDEO_UPDATE(yesnoj) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( deadconx ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(deadconx_readmem,deadconx_writemem) + + /* video hardware */ + MDRV_GFXDECODE(deadconx) + MDRV_VIDEO_START(taitof2_deadconx) + MDRV_VIDEO_UPDATE(deadconx) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( deadconj ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(deadconx_readmem,deadconx_writemem) + + /* video hardware */ + MDRV_GFXDECODE(deadconx) + MDRV_VIDEO_START(taitof2_deadconj) + MDRV_VIDEO_UPDATE(deadconx) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( dinorex ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(dinorex_readmem,dinorex_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_dinorex) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( qjinsei ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(qjinsei_readmem,qjinsei_writemem) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_quiz) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( qcrayon ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(qcrayon_readmem,qcrayon_writemem) + + MDRV_MACHINE_RESET(qcrayon) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_quiz) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( qcrayon2 ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(qcrayon2_readmem,qcrayon2_writemem) + + MDRV_MACHINE_RESET(qcrayon) + + /* video hardware */ + MDRV_VIDEO_START(taitof2_quiz) + MDRV_VIDEO_UPDATE(taitof2_pri) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( driftout ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(taito_f2) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(driftout_readmem,driftout_writemem) + + /* video hardware */ + MDRV_GFXDECODE(pivot) + MDRV_VIDEO_START(taitof2_driftout) + MDRV_VIDEO_UPDATE(taitof2_pri_roz) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( camltrya ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000,24000000/2) /* 12 MHz */ + MDRV_CPU_PROGRAM_MAP(cameltry_readmem,cameltry_writemem) + MDRV_CPU_VBLANK_INT(taitof2_interrupt,1) + + MDRV_CPU_ADD(Z80,24000000/6) /* 4 MHz */ + /* audio CPU */ + MDRV_CPU_PROGRAM_MAP(camltrya_sound_readmem,camltrya_sound_writemem) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(pivot) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitof2_dondokod) + MDRV_VIDEO_EOF(taitof2_no_buffer) + MDRV_VIDEO_UPDATE(taitof2_pri_roz) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD(YM2203, 24000000/8) // ?? freqnecy? + MDRV_SOUND_CONFIG(ym2203_interface) + MDRV_SOUND_ROUTE(0, "mono", 0.20) + MDRV_SOUND_ROUTE(1, "mono", 0.20) + MDRV_SOUND_ROUTE(2, "mono", 0.20) + MDRV_SOUND_ROUTE(3, "mono", 0.60) + + MDRV_SOUND_ADD(OKIM6295, 24000000/16) // ?? frequency? + MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7low) // clock frequency & pin 7 not verified + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( driveout ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000,24000000/2) /* 12 MHz */ + MDRV_CPU_PROGRAM_MAP(driveout_readmem,driveout_writemem) + MDRV_CPU_VBLANK_INT(taitof2_interrupt,1) + + MDRV_CPU_ADD(Z80,24000000/6) /* 4 MHz */ + /* audio CPU */ + MDRV_CPU_PROGRAM_MAP(driveout_sound_readmem,driveout_sound_writemem) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(pivot) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitof2_driftout) + MDRV_VIDEO_EOF(taitof2_no_buffer) + MDRV_VIDEO_UPDATE(taitof2_pri_roz) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") /* does it ? */ + + MDRV_SOUND_ADD(OKIM6295, 1056000) + MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) // clock frequency & pin 7 not verified + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 1.0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 1.0) +MACHINE_DRIVER_END + + +/*************************************************************************** + DRIVERS +***************************************************************************/ + +ROM_START( finalb ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "b82-09.10", 0x00000, 0x20000, CRC(632f1ecd) SHA1(aa3d1c2059b0dd619d1f6e3e0705b65b4f4be74e) ) + ROM_LOAD16_BYTE( "b82-17.11", 0x00001, 0x20000, CRC(e91b2ec9) SHA1(c854104b8d48d20ab9278ecd122c987c3d886a26) ) + + ROM_REGION( 0x040000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "b82-06.19", 0x00000, 0x20000, CRC(fc450a25) SHA1(6929bd2d47549cab037e8807b778741b3c215788) ) + ROM_LOAD16_BYTE( "b82-07.18", 0x00001, 0x20000, CRC(ec3df577) SHA1(37a0bb87a12f0332c8e67b22f91c24584f3d46ce) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "b82-04.4", 0x000000, 0x80000, CRC(6346f98e) SHA1(3fac5ea56b5ae280cd7ca0e0c6c308376056e1ba) ) /* sprites 4-bit format*/ + ROM_LOAD16_BYTE( "b82-03.5", 0x000001, 0x80000, CRC(daa11561) SHA1(81dd596c1b36138904971c36466ec29d08d4fd84) ) /* sprites 4-bit format*/ + + /* Note: this is intentional to load at 0x180000, not at 0x100000 + because finalb_driver_init will move some bits around before data + will be 'gfxdecoded'. The whole thing is because this data is 2bits- + while above is 4bits-packed format, for a total of 6 bits per pixel. */ + + ROM_LOAD( "b82-05.3", 0x180000, 0x80000, CRC(aa90b93a) SHA1(06f41052659959c58d72c9f68f9f6069cb835672) ) /* sprites 2-bit format */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b82_10.16", 0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b82-02.1", 0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b82-01.2", 0x00000, 0x80000, CRC(f0eb6846) SHA1(4697c3fd61ac0d55c0d2a4354ff74719947397c5) ) + + ROM_REGION( 0x0c00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "tibpal16l8.ic41", 0x0000, 0x0104, CRC(11a0a19a) SHA1(0c195a1808dad21130dd377531ed5b8228981581) ) + ROM_LOAD( "tibpal16l8.ic42", 0x0200, 0x0104, CRC(cc53deb8) SHA1(174da395d9ee74cfdc2bfd0d91297a8a8991c7c5) ) + ROM_LOAD( "tibpal16l8.ic51", 0x0400, 0x0104, CRC(f2878537) SHA1(196639bbcf292fe896dc2a3571ec51c5b45ced5e) ) + ROM_LOAD( "gal16v8.ic13", 0x0600, 0x0117, CRC(a4f75fd0) SHA1(fbcaa60fb4a9f605baa48ebb55551c158dcc9730) ) + ROM_LOAD( "gal16v8.ic35", 0x0800, 0x0117, CRC(ca4eb3e1) SHA1(139c03448f692d32566cd7280b0d5fde63842dc1) ) +ROM_END + +ROM_START( finalbj ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "b82-09.10", 0x00000, 0x20000, CRC(632f1ecd) SHA1(aa3d1c2059b0dd619d1f6e3e0705b65b4f4be74e) ) + ROM_LOAD16_BYTE( "b82-08.11", 0x00001, 0x20000, CRC(07154fe5) SHA1(4772362375c8c2984a305c3bb0320ea80a2e9a40) ) + + ROM_REGION( 0x040000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "b82-06.19", 0x00000, 0x20000, CRC(fc450a25) SHA1(6929bd2d47549cab037e8807b778741b3c215788) ) + ROM_LOAD16_BYTE( "b82-07.18", 0x00001, 0x20000, CRC(ec3df577) SHA1(37a0bb87a12f0332c8e67b22f91c24584f3d46ce) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "b82-04.4", 0x000000, 0x80000, CRC(6346f98e) SHA1(3fac5ea56b5ae280cd7ca0e0c6c308376056e1ba) ) /* sprites 4-bit format*/ + ROM_LOAD16_BYTE( "b82-03.5", 0x000001, 0x80000, CRC(daa11561) SHA1(81dd596c1b36138904971c36466ec29d08d4fd84) ) /* sprites 4-bit format*/ + + /* Note: this is intentional to load at 0x180000, not at 0x100000 + because finalb_driver_init will move some bits around before data + will be 'gfxdecoded'. The whole thing is because this data is 2bits- + while above is 4bits-packed format, for a total of 6 bits per pixel. */ + + ROM_LOAD( "b82-05.3", 0x180000, 0x80000, CRC(aa90b93a) SHA1(06f41052659959c58d72c9f68f9f6069cb835672) ) /* sprites 2-bit format */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b82_10.16", 0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b82-02.1", 0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b82-01.2", 0x00000, 0x80000, CRC(f0eb6846) SHA1(4697c3fd61ac0d55c0d2a4354ff74719947397c5) ) + + ROM_REGION( 0x0c00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "tibpal16l8.ic41", 0x0000, 0x0104, CRC(11a0a19a) SHA1(0c195a1808dad21130dd377531ed5b8228981581) ) + ROM_LOAD( "tibpal16l8.ic42", 0x0200, 0x0104, CRC(cc53deb8) SHA1(174da395d9ee74cfdc2bfd0d91297a8a8991c7c5) ) + ROM_LOAD( "tibpal16l8.ic51", 0x0400, 0x0104, CRC(f2878537) SHA1(196639bbcf292fe896dc2a3571ec51c5b45ced5e) ) + ROM_LOAD( "gal16v8.ic13", 0x0600, 0x0117, CRC(a4f75fd0) SHA1(fbcaa60fb4a9f605baa48ebb55551c158dcc9730) ) + ROM_LOAD( "gal16v8.ic35", 0x0800, 0x0117, CRC(ca4eb3e1) SHA1(139c03448f692d32566cd7280b0d5fde63842dc1) ) +ROM_END + +ROM_START( finalbu ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + /* are these even good dumps / legit ? there are some strange changes around 0x00fxx as well as the region byte */ + ROM_LOAD16_BYTE( "b82-09-1", 0x00000, 0x20000, CRC(66729cb9) SHA1(f265c07966cf3930a9b5e2dd63d49554705c60f7) ) + ROM_LOAD16_BYTE( "b82-6-14", 0x00001, 0x20000, CRC(879387fa) SHA1(9d7aa8ece6cfc66e7c131d9c7a3db792a0336e09) ) + + ROM_REGION( 0x040000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "b82-06.19", 0x00000, 0x20000, CRC(fc450a25) SHA1(6929bd2d47549cab037e8807b778741b3c215788) ) + ROM_LOAD16_BYTE( "b82-07.18", 0x00001, 0x20000, CRC(ec3df577) SHA1(37a0bb87a12f0332c8e67b22f91c24584f3d46ce) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "b82-04.4", 0x000000, 0x80000, CRC(6346f98e) SHA1(3fac5ea56b5ae280cd7ca0e0c6c308376056e1ba) ) /* sprites 4-bit format*/ + ROM_LOAD16_BYTE( "b82-03.5", 0x000001, 0x80000, CRC(daa11561) SHA1(81dd596c1b36138904971c36466ec29d08d4fd84) ) /* sprites 4-bit format*/ + + /* Note: this is intentional to load at 0x180000, not at 0x100000 + because finalb_driver_init will move some bits around before data + will be 'gfxdecoded'. The whole thing is because this data is 2bits- + while above is 4bits-packed format, for a total of 6 bits per pixel. */ + + ROM_LOAD( "b82-05.3", 0x180000, 0x80000, CRC(aa90b93a) SHA1(06f41052659959c58d72c9f68f9f6069cb835672) ) /* sprites 2-bit format */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b82_10.16", 0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b82-02.1", 0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b82-01.2", 0x00000, 0x80000, CRC(f0eb6846) SHA1(4697c3fd61ac0d55c0d2a4354ff74719947397c5) ) + + ROM_REGION( 0x0c00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "tibpal16l8.ic41", 0x0000, 0x0104, CRC(11a0a19a) SHA1(0c195a1808dad21130dd377531ed5b8228981581) ) + ROM_LOAD( "tibpal16l8.ic42", 0x0200, 0x0104, CRC(cc53deb8) SHA1(174da395d9ee74cfdc2bfd0d91297a8a8991c7c5) ) + ROM_LOAD( "tibpal16l8.ic51", 0x0400, 0x0104, CRC(f2878537) SHA1(196639bbcf292fe896dc2a3571ec51c5b45ced5e) ) + ROM_LOAD( "gal16v8.ic13", 0x0600, 0x0117, CRC(a4f75fd0) SHA1(fbcaa60fb4a9f605baa48ebb55551c158dcc9730) ) + ROM_LOAD( "gal16v8.ic35", 0x0800, 0x0117, CRC(ca4eb3e1) SHA1(139c03448f692d32566cd7280b0d5fde63842dc1) ) +ROM_END + +ROM_START( dondokod ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "b95-12.bin", 0x00000, 0x20000, CRC(d0fce87a) SHA1(7b346d3b7cbaf0b5447d66a71e815202d796f140) ) + ROM_LOAD16_BYTE( "b95-11-1.bin", 0x00001, 0x20000, CRC(dad40cd3) SHA1(6c07ed3dd609a8743f5851caa4d205bce8db595e) ) + ROM_LOAD16_BYTE( "b95-10.bin", 0x40000, 0x20000, CRC(a46e1f0b) SHA1(4adfa7a788d31860e557c4059f77440fe12ac110) ) + ROM_LOAD16_BYTE( "b95-14.bin", 0x40001, 0x20000, CRC(6e4e1351) SHA1(207db5f08904d36c1d27cf326eb9260771a836c2) ) // needs name verfied + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "b95-02.bin", 0x00000, 0x80000, CRC(67b4e979) SHA1(e709cc24e001bccde1178f7e645fc7aec442540c) ) + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "b95-01.bin", 0x00000, 0x80000, CRC(51c176ce) SHA1(2866e8bd57b301a0d4690f194be95784c53f9fcb) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "b95-03.bin", 0x00000, 0x80000, CRC(543aa0d1) SHA1(38282ae36a94cc3a354d343cf7d5262e0e309d1f) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b95-08.bin", 0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b95-04.bin", 0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( dondokdu ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "b95-12.bin", 0x00000, 0x20000, CRC(d0fce87a) SHA1(7b346d3b7cbaf0b5447d66a71e815202d796f140) ) + ROM_LOAD16_BYTE( "b95-11-1.bin", 0x00001, 0x20000, CRC(dad40cd3) SHA1(6c07ed3dd609a8743f5851caa4d205bce8db595e) ) + ROM_LOAD16_BYTE( "b95-10.bin", 0x40000, 0x20000, CRC(a46e1f0b) SHA1(4adfa7a788d31860e557c4059f77440fe12ac110) ) + ROM_LOAD16_BYTE( "b95-13.bin", 0x40001, 0x20000, CRC(350d2c65) SHA1(60e8651256867648a24719e1bbd1367e89784e30) ) // needs name verfied + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "b95-02.bin", 0x00000, 0x80000, CRC(67b4e979) SHA1(e709cc24e001bccde1178f7e645fc7aec442540c) ) + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "b95-01.bin", 0x00000, 0x80000, CRC(51c176ce) SHA1(2866e8bd57b301a0d4690f194be95784c53f9fcb) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "b95-03.bin", 0x00000, 0x80000, CRC(543aa0d1) SHA1(38282ae36a94cc3a354d343cf7d5262e0e309d1f) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b95-08.bin", 0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b95-04.bin", 0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( dondokdj ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "b95-12.bin", 0x00000, 0x20000, CRC(d0fce87a) SHA1(7b346d3b7cbaf0b5447d66a71e815202d796f140) ) + ROM_LOAD16_BYTE( "b95-11-1.bin", 0x00001, 0x20000, CRC(dad40cd3) SHA1(6c07ed3dd609a8743f5851caa4d205bce8db595e) ) + ROM_LOAD16_BYTE( "b95-10.bin", 0x40000, 0x20000, CRC(a46e1f0b) SHA1(4adfa7a788d31860e557c4059f77440fe12ac110) ) + ROM_LOAD16_BYTE( "b95-09.bin", 0x40001, 0x20000, CRC(d8c86d39) SHA1(43a6a9d545c953e72b6a10bc9d7b2aa2f0ab4764) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "b95-02.bin", 0x00000, 0x80000, CRC(67b4e979) SHA1(e709cc24e001bccde1178f7e645fc7aec442540c) ) + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "b95-01.bin", 0x00000, 0x80000, CRC(51c176ce) SHA1(2866e8bd57b301a0d4690f194be95784c53f9fcb) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "b95-03.bin", 0x00000, 0x80000, CRC(543aa0d1) SHA1(38282ae36a94cc3a354d343cf7d5262e0e309d1f) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b95-08.bin", 0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b95-04.bin", 0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( megab ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c11-07.55", 0x00000, 0x20000, CRC(11d228b6) SHA1(5f658a4a0ece3ad4e02ccad6e2852e16dd338dfd) ) + ROM_LOAD16_BYTE( "c11-08.39", 0x00001, 0x20000, CRC(a79d4dca) SHA1(72a97577981a303230374c5f5e201066f71d9cc5) ) + ROM_LOAD16_BYTE( "c11-06.54", 0x40000, 0x20000, CRC(7c249894) SHA1(88dff86b446bcbc4e8ab14cfc3c57b40d25cfa97) ) + ROM_LOAD16_BYTE( "c11-11.38", 0x40001, 0x20000, CRC(263ecbf9) SHA1(b49c59058d6d11ea0d9f9b041789e381e5742905) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c11-03.32", 0x00000, 0x80000, CRC(46718c7a) SHA1(c10308a282bf0c618108e4afc7ce6f0f6cb8c6c0) ) + ROM_LOAD16_BYTE( "c11-04.31", 0x00001, 0x80000, CRC(663f33cc) SHA1(5d3d3e77b7a84f6a3d4e744eef9b63bef91180e8) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c11-12.3", 0x00000, 0x04000, CRC(b11094f1) SHA1(a01e9f7d1f616bb379eaa85ad81b94173b067782) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c11-01.29", 0x00000, 0x80000, CRC(fd1ea532) SHA1(481698b747a421a17bfb8cef96065712d4f3997f) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c11-02.30", 0x00000, 0x80000, CRC(451cc187) SHA1(a682f70bbe6cba2fe2c0a6791e8d33db34eb2cee) ) + + ROM_REGION( 0x0c00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal16l8b-b89-01.ic8", 0x0000, 0x0104, CRC(4095b97a) SHA1(ff63fe125e8e38c25cc7ef05c6cf8f7818fbdaa3) ) + ROM_LOAD( "pal16l8b-b89-02.ic28", 0x0200, 0x0104, CRC(6430b559) SHA1(e886d7ac44018cac8e788c822ddbb612c14390c9) ) + ROM_LOAD( "pal16l8b-b89-03.bin", 0x0400, 0x0104, CRC(634592e2) SHA1(8d9251958e7f9bdcf2e360b15dce3552a8da0c28) ) + ROM_LOAD( "palce16v8-b89-04.ic27", 0x0600, 0x0117, CRC(fc136ae2) SHA1(ac927a6ec6889b2eb24554fbf017c85e92afc866) ) + ROM_LOAD( "pal16l8b-c11-13.ic13", 0x0800, 0x0104, CRC(421d7ea8) SHA1(4791e334a1917c7efc57eaa7090317bd11138d6b) ) // MDEC 1 + ROM_LOAD( "pal16l8b-c11-14.ic23", 0x0a00, 0x0104, CRC(5c740aee) SHA1(995ccf52f85260f141ce5e3697c9391448c3d69d) ) // MDEC 2 +ROM_END + +ROM_START( megabj ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c11-07.55", 0x00000, 0x20000, CRC(11d228b6) SHA1(5f658a4a0ece3ad4e02ccad6e2852e16dd338dfd) ) // c11-07.17 + ROM_LOAD16_BYTE( "c11-08.39", 0x00001, 0x20000, CRC(a79d4dca) SHA1(72a97577981a303230374c5f5e201066f71d9cc5) ) // c11-08.19 + ROM_LOAD16_BYTE( "c11-06.54", 0x40000, 0x20000, CRC(7c249894) SHA1(88dff86b446bcbc4e8ab14cfc3c57b40d25cfa97) ) // c11-06.16 + ROM_LOAD16_BYTE( "c11-09.18", 0x40001, 0x20000, CRC(c830aad5) SHA1(967ad3e052572300f5f49375e5f8348f2d595680) ) // c11-09.18 + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c11-05.58", 0x00000, 0x80000, CRC(733e6d8e) SHA1(47f3360f7c41b7e4a42e8198fc1bcce4e819181f) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c11-03.32", 0x00000, 0x80000, CRC(46718c7a) SHA1(c10308a282bf0c618108e4afc7ce6f0f6cb8c6c0) ) + ROM_LOAD16_BYTE( "c11-04.31", 0x00001, 0x80000, CRC(663f33cc) SHA1(5d3d3e77b7a84f6a3d4e744eef9b63bef91180e8) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c11-12.3", 0x00000, 0x04000, CRC(b11094f1) SHA1(a01e9f7d1f616bb379eaa85ad81b94173b067782) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c11-01.29", 0x00000, 0x80000, CRC(fd1ea532) SHA1(481698b747a421a17bfb8cef96065712d4f3997f) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c11-02.30", 0x00000, 0x80000, CRC(451cc187) SHA1(a682f70bbe6cba2fe2c0a6791e8d33db34eb2cee) ) +ROM_END + +ROM_START( thundfox ) /* Thunder Fox */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c28-13-1.51", 0x00000, 0x20000, CRC(acb07013) SHA1(5043d1859ae908c00f0c00c7b8e377362d908423) ) + ROM_LOAD16_BYTE( "c28-16-1.40", 0x00001, 0x20000, CRC(1e43d55b) SHA1(e5a389926ee95f19fc9f5d5bde97436d6f52124a) ) + ROM_LOAD16_BYTE( "c28-08.50", 0x40000, 0x20000, CRC(38e038f1) SHA1(4b8ed31e35927671ce313f4575e622ecab2c27cb) ) + ROM_LOAD16_BYTE( "c28-07.39", 0x40001, 0x20000, CRC(24419abb) SHA1(7d3e70213ae04dd921fc1bce8abb385747c90a38) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c28-02.61", 0x000000, 0x80000, CRC(6230a09d) SHA1(780aff5d4511c5e08cbf78784b163d60358f9283) ) /* TC0100SCN #1 */ + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c28-03.29", 0x00000, 0x80000, CRC(51bdc7af) SHA1(e36a063932fa5bd6609930c3708fee1e6feb5389) ) + ROM_LOAD16_BYTE( "c28-04.28", 0x00001, 0x80000, CRC(ba7ed535) SHA1(be7e010f6788d1b82cebc932c793a0a976647832) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c28-01.63", 0x000000, 0x80000, CRC(44552b25) SHA1(850c085e3dacd4867f6bcdfab641eb07934e620f) ) /* TC0100SCN #2 */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c28-14.3", 0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c28-05.42", 0x00000, 0x80000, CRC(d3b238fa) SHA1(b4a0cdd7174e60527e7a47018d6117adc5518da1) ) + + ROM_REGION( 0x0c00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal16l8b-b89-01.ic19", 0x0000, 0x0104, CRC(4095b97a) SHA1(ff63fe125e8e38c25cc7ef05c6cf8f7818fbdaa3) ) + ROM_LOAD( "pal16l8b-b89-03.ic37", 0x0200, 0x0104, CRC(634592e2) SHA1(8d9251958e7f9bdcf2e360b15dce3552a8da0c28) ) + ROM_LOAD( "pal16v8b-b89-04.ic33", 0x0400, 0x0117, CRC(fc136ae2) SHA1(ac927a6ec6889b2eb24554fbf017c85e92afc866) ) + ROM_LOAD( "pal16l8b-c28-09.ic25", 0x0600, 0x0104, CRC(383e7305) SHA1(480956fb68da0913d6176d31919d33f34f55bee4) ) + ROM_LOAD( "pal16l8b-c28-10.ic26", 0x0800, 0x0104, CRC(47fccc07) SHA1(205386e8e9bba0a86955246974cf25b5aaa9c715) ) // MDEC 1 + ROM_LOAD( "pal16l8b-c28-11.ic35", 0x0a00, 0x0104, CRC(33414fe8) SHA1(7f497189fd48c6201d1048419eb67153c6cf730c) ) // MDEC 2 +ROM_END + +ROM_START( thndfoxu ) /* Thunder Fox */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c28-13-1.51", 0x00000, 0x20000, CRC(acb07013) SHA1(5043d1859ae908c00f0c00c7b8e377362d908423) ) + ROM_LOAD16_BYTE( "c28-15-1.40", 0x00001, 0x20000, CRC(874a84e1) SHA1(f2688030faf526bc64bbb06225d3938f423f0f8b) ) + ROM_LOAD16_BYTE( "c28-08.50", 0x40000, 0x20000, CRC(38e038f1) SHA1(4b8ed31e35927671ce313f4575e622ecab2c27cb) ) + ROM_LOAD16_BYTE( "c28-07.39", 0x40001, 0x20000, CRC(24419abb) SHA1(7d3e70213ae04dd921fc1bce8abb385747c90a38) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c28-02.61", 0x000000, 0x80000, CRC(6230a09d) SHA1(780aff5d4511c5e08cbf78784b163d60358f9283) ) /* TC0100SCN #1 */ + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c28-03.29", 0x00000, 0x80000, CRC(51bdc7af) SHA1(e36a063932fa5bd6609930c3708fee1e6feb5389) ) + ROM_LOAD16_BYTE( "c28-04.28", 0x00001, 0x80000, CRC(ba7ed535) SHA1(be7e010f6788d1b82cebc932c793a0a976647832) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c28-01.63", 0x000000, 0x80000, CRC(44552b25) SHA1(850c085e3dacd4867f6bcdfab641eb07934e620f) ) /* TC0100SCN #2 */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c28-14.3", 0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c28-05.42", 0x00000, 0x80000, CRC(d3b238fa) SHA1(b4a0cdd7174e60527e7a47018d6117adc5518da1) ) + +// Pals: c28-09.25 c28-10.26 c28-11.35 b89-01.19 b89-03.37 b89-04.33 +ROM_END + +ROM_START( thndfoxj ) /* Thunder Fox */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c28-13-1.51", 0x00000, 0x20000, CRC(acb07013) SHA1(5043d1859ae908c00f0c00c7b8e377362d908423) ) + ROM_LOAD16_BYTE( "c28-12-1.40", 0x00001, 0x20000, CRC(f04db477) SHA1(da66895b8cc79f1776f30d9c204c6907cab935db) ) + ROM_LOAD16_BYTE( "c28-08.50", 0x40000, 0x20000, CRC(38e038f1) SHA1(4b8ed31e35927671ce313f4575e622ecab2c27cb) ) + ROM_LOAD16_BYTE( "c28-07.39", 0x40001, 0x20000, CRC(24419abb) SHA1(7d3e70213ae04dd921fc1bce8abb385747c90a38) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c28-02.61", 0x000000, 0x80000, CRC(6230a09d) SHA1(780aff5d4511c5e08cbf78784b163d60358f9283) ) /* TC0100SCN #1 */ + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c28-03.29", 0x00000, 0x80000, CRC(51bdc7af) SHA1(e36a063932fa5bd6609930c3708fee1e6feb5389) ) + ROM_LOAD16_BYTE( "c28-04.28", 0x00001, 0x80000, CRC(ba7ed535) SHA1(be7e010f6788d1b82cebc932c793a0a976647832) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c28-01.63", 0x000000, 0x80000, CRC(44552b25) SHA1(850c085e3dacd4867f6bcdfab641eb07934e620f) ) /* TC0100SCN #2 */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c28-14.3", 0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c28-05.42", 0x00000, 0x80000, CRC(d3b238fa) SHA1(b4a0cdd7174e60527e7a47018d6117adc5518da1) ) +ROM_END + +ROM_START( cameltry ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c38-11", 0x00000, 0x20000, CRC(be172da0) SHA1(e4915bf25832175591a014aa1abac5edae09380d) ) + ROM_LOAD16_BYTE( "c38-14", 0x00001, 0x20000, CRC(ffa430de) SHA1(a3cdb35151a92ddfa2090c1f8710500925e7ad0c) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty! */ + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c38-01.bin", 0x00000, 0x80000, CRC(c170ff36) SHA1(6a19cc99847ed35ac8a8e9ba0e2e91bfac662203) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + /* this is on the PCB twice, probably one for each ROZ layer, we load it twice to make this clear */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + + /* These are for a YM2610 */ + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c38-08.bin", 0x00000, 0x04000, CRC(7ff78873) SHA1(6574f1c707b8911fa957dd057e1cddc7a1cea99b) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c38-03.bin", 0x000000, 0x020000, CRC(59fa59a7) SHA1(161f11b96a47c8431c33e300f6a509bf804309af) ) + /* no Delta-T samples */ +ROM_END + +ROM_START( camltrya ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c38-11", 0x00000, 0x20000, CRC(be172da0) SHA1(e4915bf25832175591a014aa1abac5edae09380d) ) + ROM_LOAD16_BYTE( "c38-16", 0x00001, 0x20000, CRC(66ad6164) SHA1(2df22a6a1d6e194a467e6a6c6b6c2fc9f8441852) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty! */ + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c38-01.bin", 0x00000, 0x80000, CRC(c170ff36) SHA1(6a19cc99847ed35ac8a8e9ba0e2e91bfac662203) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + /* this is on the PCB twice, probably one for each ROZ layer, we load it twice to make this clear */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + + /* these are for a YM2203 and OKIM6295 */ + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu (revised prog!?) */ + ROM_LOAD( "c38-15.bin", 0x00000, 0x10000, CRC(0e60faac) SHA1(cd124efb5127e5184c412c48b94c0d4a0b2ade64) ) + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* M6295 samples */ + ROM_LOAD( "c38-04.bin", 0x000000, 0x020000, CRC(53d330bb) SHA1(22982d889a69aefe482b24ac958ef755fd2c7601) ) +ROM_END + +ROM_START( camltrua ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c38-11", 0x00000, 0x20000, CRC(be172da0) SHA1(e4915bf25832175591a014aa1abac5edae09380d) ) + ROM_LOAD16_BYTE( "c38-14", 0x00001, 0x20000, CRC(ffa430de) SHA1(a3cdb35151a92ddfa2090c1f8710500925e7ad0c) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty! */ + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c38-01.bin", 0x00000, 0x80000, CRC(c170ff36) SHA1(6a19cc99847ed35ac8a8e9ba0e2e91bfac662203) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + /* this is on the PCB twice, probably one for each ROZ layer, we load it twice to make this clear */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + + /* these are for a YM2203 and OKIM6295 */ + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu (revised prog!?) */ + ROM_LOAD( "c38-15.bin", 0x00000, 0x10000, CRC(0e60faac) SHA1(cd124efb5127e5184c412c48b94c0d4a0b2ade64) ) + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* M6295 samples */ + ROM_LOAD( "c38-04.bin", 0x000000, 0x020000, CRC(53d330bb) SHA1(22982d889a69aefe482b24ac958ef755fd2c7601) ) +ROM_END + +ROM_START( cameltrj ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c38-09.bin", 0x00000, 0x20000, CRC(2ae01120) SHA1(6da4155fde0edd76976264f929c5da3c79db5017) ) + ROM_LOAD16_BYTE( "c38-10.bin", 0x00001, 0x20000, CRC(48d8ff56) SHA1(73da47b0f9e67defcd0072b71a3661f2c3534f55) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty! */ + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c38-01.bin", 0x00000, 0x80000, CRC(c170ff36) SHA1(6a19cc99847ed35ac8a8e9ba0e2e91bfac662203) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + /* this is on the PCB twice, probably one for each ROZ layer, we load it twice to make this clear */ + ROM_LOAD( "c38-02.bin", 0x00000, 0x20000, CRC(1a11714b) SHA1(419f5ec37161fd6b4ca962768e720adf541271d5) ) + + /* These are for a YM2610 */ + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c38-08.bin", 0x00000, 0x04000, CRC(7ff78873) SHA1(6574f1c707b8911fa957dd057e1cddc7a1cea99b) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c38-03.bin", 0x000000, 0x020000, CRC(59fa59a7) SHA1(161f11b96a47c8431c33e300f6a509bf804309af) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( qtorimon ) /* Quiz Torimonochou */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c41-04.bin", 0x00000, 0x20000, CRC(0fbf5223) SHA1(2aa8b3dd20ae922a3ff880db7b46e2bbb708698d) ) + ROM_LOAD16_BYTE( "c41-05.bin", 0x00001, 0x20000, CRC(174bd5db) SHA1(f7a4b2ac91b3bcd886e2a1e1d0415a95f14c9de7) ) + ROM_LOAD16_BYTE( "mask-51.bin", 0x40000, 0x20000, CRC(12e14aca) SHA1(8f7dc54f68984c82420abf96436743c0654a71ea) ) /* char defs, read by cpu */ + ROM_LOAD16_BYTE( "mask-52.bin", 0x40001, 0X20000, CRC(b3ef66f3) SHA1(4766a1ed9b4adcc2f0d2857633ce95194eb80694) ) /* char defs, read by cpu */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty! */ + + ROM_REGION( 0x040000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c41-02.bin", 0x00000, 0x20000, CRC(05dcd36d) SHA1(f32c5b40e0adad7991bac29ecffcd5dff330e118) ) + ROM_LOAD16_BYTE( "c41-01.bin", 0x00001, 0x20000, CRC(39ff043c) SHA1(a4b0c6763c43a7ad16e98a938ffbb8aef4882eac) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c41-06.bin", 0x00000, 0x04000, CRC(753a98d8) SHA1(a832a4789194a67a2201da4e4484ab08210e5ccc) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c41-03.bin", 0x000000, 0x020000, CRC(b2c18e89) SHA1(32eca1721cd8f47e9a6dcb553208ddd0daa67f83) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( liquidk ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c49-09.12", 0x00000, 0x20000, CRC(6ae09eb9) SHA1(0f2527a1b231ecf8c6a937bf56d1245fdd270695) ) + ROM_LOAD16_BYTE( "c49-11.14", 0x00001, 0x20000, CRC(42d2be6e) SHA1(c7953af2a561159d739d05dc06a4c905b6c40e64) ) + ROM_LOAD16_BYTE( "c49-10.13", 0x40000, 0x20000, CRC(50bef2e0) SHA1(54afd46dde81ac0fc272417c53aba1e9e8c90606) ) + ROM_LOAD16_BYTE( "c49-12.15", 0x40001, 0x20000, CRC(cb16bad5) SHA1(900c28761200f261cb217f09f492895753ef16f7) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "lk_scr.bin", 0x00000, 0x80000, CRC(c3364f9b) SHA1(3512a8c352df8b8f19590c859afb8fdec758eb91) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "lk_obj0.bin", 0x00000, 0x80000, CRC(67cc3163) SHA1(f898d52c136f07497ec6be214f016cbadc700055) ) + ROM_LOAD( "lk_obj1.bin", 0x80000, 0x80000, CRC(d2400710) SHA1(082aa0336dbc066d8bb0dd6eb362340f49e87b67) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c49-08.9", 0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "lk_snd.bin", 0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( liquidku ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c49-09.12", 0x00000, 0x20000, CRC(6ae09eb9) SHA1(0f2527a1b231ecf8c6a937bf56d1245fdd270695) ) + ROM_LOAD16_BYTE( "c49-11.14", 0x00001, 0x20000, CRC(42d2be6e) SHA1(c7953af2a561159d739d05dc06a4c905b6c40e64) ) + ROM_LOAD16_BYTE( "c49-10.13", 0x40000, 0x20000, CRC(50bef2e0) SHA1(54afd46dde81ac0fc272417c53aba1e9e8c90606) ) + ROM_LOAD16_BYTE( "c49-14.15", 0x40001, 0x20000, CRC(bc118a43) SHA1(eb306a753ab43e67eacb9d6eff1c14ec78de965f) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "lk_scr.bin", 0x00000, 0x80000, CRC(c3364f9b) SHA1(3512a8c352df8b8f19590c859afb8fdec758eb91) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "lk_obj0.bin", 0x00000, 0x80000, CRC(67cc3163) SHA1(f898d52c136f07497ec6be214f016cbadc700055) ) + ROM_LOAD( "lk_obj1.bin", 0x80000, 0x80000, CRC(d2400710) SHA1(082aa0336dbc066d8bb0dd6eb362340f49e87b67) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c49-08.9", 0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "lk_snd.bin", 0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( mizubaku ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c49-09.12", 0x00000, 0x20000, CRC(6ae09eb9) SHA1(0f2527a1b231ecf8c6a937bf56d1245fdd270695) ) + ROM_LOAD16_BYTE( "c49-11.14", 0x00001, 0x20000, CRC(42d2be6e) SHA1(c7953af2a561159d739d05dc06a4c905b6c40e64) ) + ROM_LOAD16_BYTE( "c49-10.13", 0x40000, 0x20000, CRC(50bef2e0) SHA1(54afd46dde81ac0fc272417c53aba1e9e8c90606) ) + ROM_LOAD16_BYTE( "c49-13.15", 0x40001, 0x20000, CRC(2518dbf9) SHA1(c5975d3bfbfbb34b37b5da1d1cd2adf3491f9196) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "lk_scr.bin", 0x00000, 0x80000, CRC(c3364f9b) SHA1(3512a8c352df8b8f19590c859afb8fdec758eb91) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "lk_obj0.bin", 0x00000, 0x80000, CRC(67cc3163) SHA1(f898d52c136f07497ec6be214f016cbadc700055) ) + ROM_LOAD( "lk_obj1.bin", 0x80000, 0x80000, CRC(d2400710) SHA1(082aa0336dbc066d8bb0dd6eb362340f49e87b67) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c49-08.9", 0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "lk_snd.bin", 0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( quizhq ) /* Quiz HQ */ + ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c53-05.bin", 0x00000, 0x20000, CRC(c798fc20) SHA1(4467dde3620102f87cffb2f81f71d856c0df12f8) ) + ROM_LOAD16_BYTE( "c53-01.bin", 0x00001, 0x20000, CRC(bf44c93e) SHA1(6fd871f50da4a668767b3096660689905663f697) ) + ROM_LOAD16_BYTE( "c53-52.bin", 0x80000, 0x20000, CRC(12e14aca) SHA1(8f7dc54f68984c82420abf96436743c0654a71ea) ) /* char defs, read by cpu */ + ROM_LOAD16_BYTE( "c53-51.bin", 0x80001, 0X20000, CRC(b3ef66f3) SHA1(4766a1ed9b4adcc2f0d2857633ce95194eb80694) ) /* char defs, read by cpu */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty */ + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c53-03.bin", 0x00000, 0x20000, CRC(47596e70) SHA1(3a4612d9dd2e18a4f7f4c4ed38877071afc9c279) ) + ROM_LOAD16_BYTE( "c53-07.bin", 0x00001, 0x20000, CRC(4f9fa82f) SHA1(ccd1ac17d38a51492b3716bad83e67b282da8bf9) ) + ROM_LOAD16_BYTE( "c53-02.bin", 0x40000, 0x20000, CRC(d704c6f4) SHA1(9b1c47ec3abaff53d641488dece8c97438b2e809) ) + ROM_LOAD16_BYTE( "c53-06.bin", 0x40001, 0x20000, CRC(f77f63fc) SHA1(28a509786817e88c0a5821dd68791ebd30d994c2) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c53-08.bin", 0x00000, 0x04000, CRC(25187e81) SHA1(c549fbfff6963be93aaf349b240f15b1d578d1f1) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c53-04.bin", 0x000000, 0x020000, CRC(99890ad4) SHA1(c9be9d21dc72059c39de81e1b73849cc77d6b95d) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( ssi ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c64_15-1.bin", 0x00000, 0x40000, CRC(ce9308a6) SHA1(02653218fe949803742e574eeed01dd421b0a671) ) + ROM_LOAD16_BYTE( "c64_16-1.bin", 0x00001, 0x40000, CRC(470a483a) SHA1(880d43aec8c3bbae1d58e7d6d7719eb6fe67cc56) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty! */ + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c64-01.1", 0x000000, 0x100000, CRC(a1b4f486) SHA1(bdd6bf144e50fe7b1d4cf4504471a689669415a4) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c64-09.13", 0x00000, 0x04000, CRC(88d7f65c) SHA1(d6383bf8fd035772fa3c57b26b727eefe1aadd93) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c64-02.2", 0x00000, 0x20000, CRC(3cb0b907) SHA1(7cbe437fe584575a2f26a582095fd49665c7003e) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( majest12 ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c64-07.10", 0x00000, 0x20000, CRC(f29ed5c9) SHA1(62283af1c08457db54057ee59a95fb7a3797b897) ) + ROM_LOAD16_BYTE( "c64-06.4", 0x40000, 0x20000, CRC(18dc71ac) SHA1(cb9c0b330ae98e20269f18cdb543feb294647245) ) + ROM_LOAD16_BYTE( "c64-08.11", 0x00001, 0x20000, CRC(ddfd33d5) SHA1(33cc5a0aedf8228b42466cd2a1fe3e06fbfbf141) ) + ROM_LOAD16_BYTE( "c64-05.5", 0x40001, 0x20000, CRC(b61866c0) SHA1(9c2096eae05782377a655c3607b65a2cd6a66272) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty! */ + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c64-01.1", 0x000000, 0x100000, CRC(a1b4f486) SHA1(bdd6bf144e50fe7b1d4cf4504471a689669415a4) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c64-09.13", 0x00000, 0x04000, CRC(88d7f65c) SHA1(d6383bf8fd035772fa3c57b26b727eefe1aadd93) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c64-02.2", 0x00000, 0x20000, CRC(3cb0b907) SHA1(7cbe437fe584575a2f26a582095fd49665c7003e) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( gunfront ) + ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 768k for 68000 code */ + ROM_LOAD16_BYTE( "c71-09.ic42", 0x00000, 0x20000, CRC(10a544a2) SHA1(3b46bbd494b432d36aed3fd4b429cef074050c1d) ) + ROM_LOAD16_BYTE( "c71-08.ic41", 0x00001, 0x20000, CRC(c17dc0a0) SHA1(f84e0d1afb403bb06480e8687558cd320d60099e) ) + ROM_LOAD16_BYTE( "c71-10.ic40", 0x40000, 0x20000, CRC(f39c0a06) SHA1(8217f0dd855d6e15756349d47f327742ab50db15) ) + ROM_LOAD16_BYTE( "c71-14.ic39", 0x40001, 0x20000, CRC(312da036) SHA1(44215c64ad9f8a4566cc9f407a7b38799a08d485) ) + ROM_LOAD16_BYTE( "c71-16.ic38", 0x80000, 0x20000, CRC(1bbcc2d4) SHA1(fe664f8d2b6d902f034cf51f42378cc68c970b53) ) + ROM_LOAD16_BYTE( "c71-15.ic37", 0x80001, 0x20000, CRC(df3e00bb) SHA1(9fe2ece7289945692099eba92f02e5a97a4d148c) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c71-02.ic59", 0x000000, 0x100000, CRC(2a600c92) SHA1(38a08ade2c6fa005a402d04fabf87ff10236d4c6) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c71-03.ic19", 0x000000, 0x100000, CRC(9133c605) SHA1(fa10c60cd4ca439a273c644bbf3810824a0ca523) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c71-12.ic49", 0x00000, 0x04000, CRC(0038c7f8) SHA1(405def36e67949219b6f9394333278ec60ad5783) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c71-01.ic29", 0x000000, 0x100000, CRC(0e73105a) SHA1(c5c9743f68a43273e16f5e5179557f2392505a1e) ) + + /* no Delta-T samples */ + +// Pals c71-16.28 c71-07.27 +ROM_END + +ROM_START( gunfronj ) + ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 768k for 68000 code */ + ROM_LOAD16_BYTE( "c71-09.ic42", 0x00000, 0x20000, CRC(10a544a2) SHA1(3b46bbd494b432d36aed3fd4b429cef074050c1d) ) + ROM_LOAD16_BYTE( "c71-08.ic41", 0x00001, 0x20000, CRC(c17dc0a0) SHA1(f84e0d1afb403bb06480e8687558cd320d60099e) ) + ROM_LOAD16_BYTE( "c71-10.ic40", 0x40000, 0x20000, CRC(f39c0a06) SHA1(8217f0dd855d6e15756349d47f327742ab50db15) ) + ROM_LOAD16_BYTE( "c71-11.ic39", 0x40001, 0x20000, CRC(df23c11a) SHA1(3bbe4715a022f2a78c23a7a5b8ca36ad43cdbca0) ) + ROM_LOAD16_BYTE( "c71-16.ic38", 0x80000, 0x20000, CRC(1bbcc2d4) SHA1(fe664f8d2b6d902f034cf51f42378cc68c970b53) ) + ROM_LOAD16_BYTE( "c71-15.ic37", 0x80001, 0x20000, CRC(df3e00bb) SHA1(9fe2ece7289945692099eba92f02e5a97a4d148c) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c71-02.ic59", 0x000000, 0x100000, CRC(2a600c92) SHA1(38a08ade2c6fa005a402d04fabf87ff10236d4c6) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c71-03.ic19", 0x000000, 0x100000, CRC(9133c605) SHA1(fa10c60cd4ca439a273c644bbf3810824a0ca523) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c71-12.ic49", 0x00000, 0x04000, CRC(0038c7f8) SHA1(405def36e67949219b6f9394333278ec60ad5783) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c71-01.ic29", 0x000000, 0x100000, CRC(0e73105a) SHA1(c5c9743f68a43273e16f5e5179557f2392505a1e) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( growl ) + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 1024k for 68000 code */ + ROM_LOAD16_BYTE( "c74-10.ic59", 0x00000, 0x40000, CRC(ca81a20b) SHA1(75d665f3e3cf1ab389f5390d4a4d2c9e49543c56) ) + ROM_LOAD16_BYTE( "c74-08.ic61", 0x00001, 0x40000, CRC(aa35dd9e) SHA1(97229746f70c486bcf172ec09f7f9c9eede16006) ) + ROM_LOAD16_BYTE( "c74-11.ic58", 0x80000, 0x40000, CRC(ee3bd6d5) SHA1(71f961b4e3b3156bc52e489eb0a408a1fe537a61) ) + ROM_LOAD16_BYTE( "c74-14.ic60", 0x80001, 0x40000, CRC(b6c24ec7) SHA1(da8ac05d12c12a58bf5185d723358a0d1a0fe71e) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c74-01.ic34", 0x000000, 0x100000, CRC(3434ce80) SHA1(ef363107fba6f5088ef9c85dd692b5c98be67f75) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c74-03.ic12", 0x000000, 0x100000, CRC(1a0d8951) SHA1(62af40f7ca651273d93fed5d55af24cf91331ec7) ) + ROM_LOAD( "c74-02.ic11", 0x100000, 0x100000, CRC(15a21506) SHA1(3d8f066e1226e030ce549959d5a8dd4506a0e0a2) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c74-12.ic62", 0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c74-04.ic28", 0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c74-05.ic29", 0x000000, 0x080000, CRC(e29c0828) SHA1(f541d724f118130bb7a8f9e790582c68779cc6b6) ) + +//Pals c74-06.48 c74-07.47 +ROM_END + +ROM_START( growlu ) + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 1024k for 68000 code */ + ROM_LOAD16_BYTE( "c74-10.ic59", 0x00000, 0x40000, CRC(ca81a20b) SHA1(75d665f3e3cf1ab389f5390d4a4d2c9e49543c56) ) + ROM_LOAD16_BYTE( "c74-08.ic61", 0x00001, 0x40000, CRC(aa35dd9e) SHA1(97229746f70c486bcf172ec09f7f9c9eede16006) ) + ROM_LOAD16_BYTE( "c74-11.ic58", 0x80000, 0x40000, CRC(ee3bd6d5) SHA1(71f961b4e3b3156bc52e489eb0a408a1fe537a61) ) + ROM_LOAD16_BYTE( "c74-13.ic60", 0x80001, 0x40000, CRC(c1c57e51) SHA1(f6ffc1acf3e5ff75e64facd7e28fd675eb065c7b) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c74-01.ic34", 0x000000, 0x100000, CRC(3434ce80) SHA1(ef363107fba6f5088ef9c85dd692b5c98be67f75) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c74-03.ic12", 0x000000, 0x100000, CRC(1a0d8951) SHA1(62af40f7ca651273d93fed5d55af24cf91331ec7) ) + ROM_LOAD( "c74-02.ic11", 0x100000, 0x100000, CRC(15a21506) SHA1(3d8f066e1226e030ce549959d5a8dd4506a0e0a2) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c74-12.ic62", 0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c74-04.ic28", 0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c74-05.ic29", 0x000000, 0x080000, CRC(e29c0828) SHA1(f541d724f118130bb7a8f9e790582c68779cc6b6) ) +ROM_END + +ROM_START( runark ) + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 1024k for 68000 code */ + ROM_LOAD16_BYTE( "c74-10.ic59", 0x00000, 0x40000, CRC(ca81a20b) SHA1(75d665f3e3cf1ab389f5390d4a4d2c9e49543c56) ) + ROM_LOAD16_BYTE( "c74-08.ic61", 0x00001, 0x40000, CRC(aa35dd9e) SHA1(97229746f70c486bcf172ec09f7f9c9eede16006) ) + ROM_LOAD16_BYTE( "c74-11.ic58", 0x80000, 0x40000, CRC(ee3bd6d5) SHA1(71f961b4e3b3156bc52e489eb0a408a1fe537a61) ) + ROM_LOAD16_BYTE( "c74-09.ic14", 0x80001, 0x40000, CRC(58cc2feb) SHA1(7dc314a56345be116731dbb65dfa9e508c156513) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c74-01.ic34", 0x000000, 0x100000, CRC(3434ce80) SHA1(ef363107fba6f5088ef9c85dd692b5c98be67f75) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c74-03.ic12", 0x000000, 0x100000, CRC(1a0d8951) SHA1(62af40f7ca651273d93fed5d55af24cf91331ec7) ) + ROM_LOAD( "c74-02.ic11", 0x100000, 0x100000, CRC(15a21506) SHA1(3d8f066e1226e030ce549959d5a8dd4506a0e0a2) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c74-12.ic62", 0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c74-04.ic28", 0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c74-05.ic29", 0x000000, 0x080000, CRC(e29c0828) SHA1(f541d724f118130bb7a8f9e790582c68779cc6b6) ) +ROM_END + +ROM_START( mjnquest ) /* Mahjong Quest */ + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c77-09", 0x000000, 0x020000, CRC(0a005d01) SHA1(caf44fcdeca9f7f1bfdb0c29503bb82ce17f945c) ) + ROM_LOAD16_BYTE( "c77-08", 0x000001, 0x020000, CRC(4244f775) SHA1(801045d7433684195876e172676b2345827de7cc) ) + ROM_LOAD16_WORD_SWAP( "c77-04", 0x080000, 0x080000, CRC(c2e7e038) SHA1(6cf23bab587b34cbc1f78b8b82cbab5634b074dc) ) /* data rom */ + + ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c77-01", 0x000000, 0x100000, CRC(5ba51205) SHA1(da0b6f56e7d2437ad75ada1ba07e35843d2b4704) ) + ROM_LOAD( "c77-02", 0x100000, 0x100000, CRC(6a6f3040) SHA1(61c3ce51fa935f52572affa899bb81b3a616df3a) ) + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c77-05", 0x00000, 0x80000, CRC(c5a54678) SHA1(d0954acbdfdf9a5f14f554635c015eee23d52e0c) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c77-10", 0x00000, 0x04000, CRC(f16b2c1e) SHA1(f6f13429a0b4e0e4c64991f1acc4ecf85dc64364) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c77-03", 0x000000, 0x080000, CRC(312f17b1) SHA1(3b45eeb6c6721c532451cb113e6a38da4d8a8cbf) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( mjnquesb ) /* Mahjong Quest (No Nudity) */ + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c77-09a", 0x000000, 0x020000, CRC(fc17f1c2) SHA1(438b0a780560940b2d3dab42b34dc2bc94a15f80) ) + ROM_LOAD16_BYTE( "c77-08", 0x000001, 0x020000, CRC(4244f775) SHA1(801045d7433684195876e172676b2345827de7cc) ) + ROM_LOAD16_WORD_SWAP( "c77-04", 0x080000, 0x080000, CRC(c2e7e038) SHA1(6cf23bab587b34cbc1f78b8b82cbab5634b074dc) ) /* data rom */ + + ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c77-01", 0x000000, 0x100000, CRC(5ba51205) SHA1(da0b6f56e7d2437ad75ada1ba07e35843d2b4704) ) + ROM_LOAD( "c77-02", 0x100000, 0x100000, CRC(6a6f3040) SHA1(61c3ce51fa935f52572affa899bb81b3a616df3a) ) + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c77-05", 0x00000, 0x80000, CRC(c5a54678) SHA1(d0954acbdfdf9a5f14f554635c015eee23d52e0c) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c77-10", 0x00000, 0x04000, CRC(f16b2c1e) SHA1(f6f13429a0b4e0e4c64991f1acc4ecf85dc64364) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c77-03", 0x000000, 0x080000, CRC(312f17b1) SHA1(3b45eeb6c6721c532451cb113e6a38da4d8a8cbf) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( footchmp ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c80-11.6", 0x00000, 0x20000, CRC(f78630fb) SHA1(37da34401f664caaf5113a9abad78e447f4f4651) ) + ROM_LOAD16_BYTE( "c80-10.4", 0x00001, 0x20000, CRC(32c109cb) SHA1(46a116127bcea18cc15ddf297e5e0d5cdcac9842) ) + ROM_LOAD16_BYTE( "c80-12.7", 0x40000, 0x20000, CRC(80d46fef) SHA1(cc81c8ba19321e8bae9054021bfb61cb11c2aba5) ) + ROM_LOAD16_BYTE( "c80-14.5", 0x40001, 0x20000, CRC(40ac4828) SHA1(9a2112b0ccd573a3e94d9817b78bb02909b972e1) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "c80-04.1", 0x00000, 0x80000, CRC(9a17fe8c) SHA1(d2ea72743151f0f7bf78f33dba526214afb07389) ) + ROM_LOAD16_BYTE( "c80-05.2", 0x00001, 0x80000, CRC(acde7071) SHA1(23637238d122b13edb6025418bf482cc210ef6a9) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c80-01.9", 0x000000, 0x100000, CRC(f43782e6) SHA1(53ff6cc433673f307a91e8db74428aa6172ffad4) ) + ROM_LOAD( "c80-02.10", 0x100000, 0x100000, CRC(060a8b61) SHA1(b1888d8bce4c4624dc5bb64168c604ec64537c0e) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* 64k for Z80 code */ + ROM_LOAD( "c80-15.70", 0x00000, 0x04000, CRC(05aa7fd7) SHA1(7eb10964ea9f43abcda8444f13733a0753a04580) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* YM2610 samples */ + ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) ) + + /* no Delta-T samples */ + +// Pals c80-08.45 c80-09.46 +ROM_END + +ROM_START( hthero ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c80-16.6", 0x00000, 0x20000, CRC(4e795b52) SHA1(90a32133a68de4d0410935e5039d4dec37836a13) ) + ROM_LOAD16_BYTE( "c80-17.4", 0x00001, 0x20000, CRC(42c0a838) SHA1(4ba96a7248715562668994a4bf974e8ce4c44fd3) ) + ROM_LOAD16_BYTE( "c80-12.7", 0x40000, 0x20000, CRC(80d46fef) SHA1(cc81c8ba19321e8bae9054021bfb61cb11c2aba5) ) + ROM_LOAD16_BYTE( "c80-18.5", 0x40001, 0x20000, CRC(aea22904) SHA1(907889f141fced8cada793f02244e80cf0f89c81) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "c80-04.1", 0x00000, 0x80000, CRC(9a17fe8c) SHA1(d2ea72743151f0f7bf78f33dba526214afb07389) ) + ROM_LOAD16_BYTE( "c80-05.2", 0x00001, 0x80000, CRC(acde7071) SHA1(23637238d122b13edb6025418bf482cc210ef6a9) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c80-01.9", 0x000000, 0x100000, CRC(f43782e6) SHA1(53ff6cc433673f307a91e8db74428aa6172ffad4) ) + ROM_LOAD( "c80-02.10", 0x100000, 0x100000, CRC(060a8b61) SHA1(b1888d8bce4c4624dc5bb64168c604ec64537c0e) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c80-15.70", 0x00000, 0x04000, CRC(05aa7fd7) SHA1(7eb10964ea9f43abcda8444f13733a0753a04580) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( euroch92 ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "ec92_25.rom", 0x00000, 0x20000, CRC(98482202) SHA1(4fc03fb2a2c21f302d95047535f66d26421dcda2) ) + ROM_LOAD16_BYTE( "ec92_23.rom", 0x00001, 0x20000, CRC(ae5e75e9) SHA1(82d935684182bfb42367232a3b71d4664b170ffe) ) + ROM_LOAD16_BYTE( "ec92_26.rom", 0x40000, 0x20000, CRC(b986ccb2) SHA1(862a5da1bd4e8743d55f2e5bab2ade6c3dec682c) ) + ROM_LOAD16_BYTE( "ec92_24.rom", 0x40001, 0x20000, CRC(b31d94ac) SHA1(8a3328b7e061b584992dd27b0dda9826b4b6ed91) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "ec92_21.rom", 0x00000, 0x80000, CRC(5759ed37) SHA1(2a661ea40735afbda3d0141ce3f706c64281097b) ) + ROM_LOAD16_BYTE( "ec92_22.rom", 0x00001, 0x80000, CRC(d9a0d38e) SHA1(192f0303f4f64df46dc20701ed4362a4e14e40e7) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "ec92_19.rom", 0x000000, 0x100000, CRC(219141a5) SHA1(b549e91049dcb796d4104b4426674dd87589efde) ) + ROM_LOAD( "c80-02.10", 0x100000, 0x100000, CRC(060a8b61) SHA1(b1888d8bce4c4624dc5bb64168c604ec64537c0e) ) // ec92_20.rom + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* 64k for Z80 code */ + ROM_LOAD( "ec92_27.rom", 0x00000, 0x04000, CRC(2db48e65) SHA1(43a47ebc91c043a996e966cf808d71256e158494) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* YM2610 samples */ + ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) ) // ec92_03.rom + + /* no Delta-T samples */ +ROM_END + +ROM_START( koshien ) /* Ah Eikou no Koshien */ + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c81-11.bin", 0x000000, 0x020000, CRC(b44ea8c9) SHA1(f1d19f531b7a653f1c4244d612a339d95ce8cc7c) ) + ROM_LOAD16_BYTE( "c81-10.bin", 0x000001, 0x020000, CRC(8f98c40a) SHA1(f9471306c47ced10a56c09794954e55fdb6f6b85) ) + ROM_LOAD16_WORD_SWAP( "c81-04.bin", 0x080000, 0x080000, CRC(1592b460) SHA1(d42514b4d588d0376914832f0e07ce626d1cdee0) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c81-03.bin", 0x000000, 0x100000, CRC(29bbf492) SHA1(bd370b1de256a432821b443a6653aab8507fb3a7) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c81-01.bin", 0x000000, 0x100000, CRC(64b15d2a) SHA1(18b3b405f77ad80781e3fce4ef021ba49f707ed6) ) + ROM_LOAD( "c81-02.bin", 0x100000, 0x100000, CRC(962461e8) SHA1(cb0313b00681c36110eed50eae41ad98eb22205d) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c81-12.bin", 0x00000, 0x04000, CRC(6e8625b6) SHA1(212d384aa6ed43f5389739863afecbf0ad68af14) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c81-05.bin", 0x00000, 0x80000, CRC(9c3d71be) SHA1(79f1bb40d8356d9fc93b569c20be15e7fbf34580) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c81-06.bin", 0x00000, 0x80000, CRC(927833b4) SHA1(c09240e4885d2eace1c64fa6425faeeea0296d98) ) + + ROM_REGION( 0x0600, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal16l8b-c81-07.bin", 0x0000, 0x0104, CRC(46341732) SHA1(af652621cb96f656fd1f9ed20daeb076641aeb08) ) + ROM_LOAD( "pal16l8b-c81-08.bin", 0x0200, 0x0104, CRC(e7d2d300) SHA1(20a1a258230d5be73381c97509437a9e76de958c) ) + ROM_LOAD( "pal16l8b-c81-09.bin", 0x0400, 0x0104, CRC(e4c012a1) SHA1(56746ce42fd64bf04e17132811de291a1bfa5451) ) +ROM_END + +ROM_START( yuyugogo ) /* Yuuyu no QUIZ de GO!GO! */ + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c83-10.3", 0x00000, 0x20000, CRC(4d185d03) SHA1(ab494c777a0acfe088d3db7c1a0488d40884ea0a) ) + ROM_LOAD16_BYTE( "c83-09.2", 0x00001, 0x20000, CRC(f9892792) SHA1(310d02833c821a34baa0ce537019b8cade6402b7) ) + + ROM_REGION16_BE( 0x100000, REGION_USER1, 0 ) + /* extra ROM mapped at d00000 */ + ROM_LOAD16_WORD_SWAP( "c83-03.10", 0x000000, 0x100000, CRC(eed9acc2) SHA1(baa6a9aa5ed8fbbff7b289693407192b464cb7c7) ) /* data rom */ + + ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c83-05.21", 0x00000, 0x20000, CRC(eca57fb1) SHA1(c67b5e734f5fd8801a4376c0555ce4a891dcd6bc) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "c83-01.12", 0x000000, 0x100000, CRC(8bf0d416) SHA1(ec3d51422fcc8e3e822716d57adab56f639a2d02) ) + ROM_LOAD16_BYTE( "c83-02.11", 0x000001, 0x100000, CRC(20bb1c15) SHA1(33370b665d681f765e363e5a8e79e62f59ad25f7) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c83-11.1" , 0x00000, 0x04000, CRC(461e702a) SHA1(f1f4294a7e8acc50473df15a167ba84595c9eb15) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c83-04.5", 0x000000, 0x100000, CRC(2600093a) SHA1(824fde078e0ded58037bd06f888eac4e7487ac82) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( ninjak ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c85-10x.ic50", 0x00000, 0x20000, CRC(ba7e6e74) SHA1(d6fc7529f1df348fedc6f32edd7691a6da35423d) ) /* ROM 0H */ + ROM_LOAD16_BYTE( "c85-13x.ic49", 0x00001, 0x20000, CRC(0ac2cba2) SHA1(18e1b458995051c8d4a0077a41fa24dbaa318afc) ) /* ROM 0L */ + ROM_LOAD16_BYTE( "c85-07.ic48", 0x40000, 0x20000, CRC(3eccfd0a) SHA1(54f20d852ab88a19e9ddee95b9c6057887a8d433) ) /* ROM 1LH */ + ROM_LOAD16_BYTE( "c85-06.ic47", 0x40001, 0x20000, CRC(d126ded1) SHA1(fc4b6504d0234e7e006a63e33fd061411f008c38) ) /* ROM 1LL */ + /* IC45 (ROM 1HL) and IC46 (1HH) not populated */ + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c85-03.ic65", 0x00000, 0x80000, CRC(4cc7b9df) SHA1(aaf0e587b86a7bf9fbfd4e19127a7295da8a3676) ) /* SCREEN */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c85-01.ic19", 0x000000, 0x100000, CRC(a711977c) SHA1(b6b79ff6086a7b6e242fe26eec448f025ab431af) ) /* OBJ-0 */ + ROM_LOAD( "c85-02.ic17", 0x100000, 0x100000, CRC(a6ad0f3d) SHA1(6d3a661807dd64f0b56ae6252a7e980fd678feef) ) /* OBJ-1 */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c85-14.ic54", 0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */ + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c85-04.ic31", 0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */ + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c85-05.ic33", 0x00000, 0x80000, CRC(3c1b0ed0) SHA1(08920dc55d695debae3eea5a8ff1d17bb11afd45) ) /* SCH-A */ +ROM_END + +ROM_START( ninjakj ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c85-10x.ic50", 0x00000, 0x20000, CRC(ba7e6e74) SHA1(d6fc7529f1df348fedc6f32edd7691a6da35423d) ) /* ROM 0H */ + ROM_LOAD16_BYTE( "c85-11x.ic49", 0x00001, 0x20000, CRC(e4ccaa8e) SHA1(6e1b9dade70e3d91071a3ea590537232bb1215fe) ) /* ROM 0L */ + ROM_LOAD16_BYTE( "c85-07.ic48", 0x40000, 0x20000, CRC(3eccfd0a) SHA1(54f20d852ab88a19e9ddee95b9c6057887a8d433) ) /* ROM 1LH */ + ROM_LOAD16_BYTE( "c85-06.ic47", 0x40001, 0x20000, CRC(d126ded1) SHA1(fc4b6504d0234e7e006a63e33fd061411f008c38) ) /* ROM 1LL */ + /* IC45 (ROM 1HL) and IC46 (1HH) not populated */ + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c85-03.ic65", 0x00000, 0x80000, CRC(4cc7b9df) SHA1(aaf0e587b86a7bf9fbfd4e19127a7295da8a3676) ) /* SCREEN */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c85-01.ic19", 0x000000, 0x100000, CRC(a711977c) SHA1(b6b79ff6086a7b6e242fe26eec448f025ab431af) ) /* OBJ-0 */ + ROM_LOAD( "c85-02.ic17", 0x100000, 0x100000, CRC(a6ad0f3d) SHA1(6d3a661807dd64f0b56ae6252a7e980fd678feef) ) /* OBJ-1 */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c85-14.ic54", 0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */ + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c85-04.ic31", 0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */ + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c85-05.ic33", 0x00000, 0x80000, CRC(3c1b0ed0) SHA1(08920dc55d695debae3eea5a8ff1d17bb11afd45) ) /* SCH-A */ +ROM_END + +ROM_START( ninjaku ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c85-15x.ic50", 0x00000, 0x20000, CRC(719a481b) SHA1(aacd5b3db29e3771bbeb89c9502c49eba1538741) ) /* ROM 0H */ + ROM_LOAD16_BYTE( "c85-12x.ic49", 0x00001, 0x20000, CRC(6c3f7e1e) SHA1(919177bf3522717864850d4130867ecb0ecfc9c7) ) /* ROM 0L */ + ROM_LOAD16_BYTE( "c85-07.ic48", 0x40000, 0x20000, CRC(3eccfd0a) SHA1(54f20d852ab88a19e9ddee95b9c6057887a8d433) ) /* ROM 1LH */ + ROM_LOAD16_BYTE( "c85-06.ic47", 0x40001, 0x20000, CRC(d126ded1) SHA1(fc4b6504d0234e7e006a63e33fd061411f008c38) ) /* ROM 1LL */ + /* IC45 (ROM 1HL) and IC46 (1HH) not populated */ + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c85-03.ic65", 0x00000, 0x80000, CRC(4cc7b9df) SHA1(aaf0e587b86a7bf9fbfd4e19127a7295da8a3676) ) /* SCREEN */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c85-01.ic19", 0x000000, 0x100000, CRC(a711977c) SHA1(b6b79ff6086a7b6e242fe26eec448f025ab431af) ) /* OBJ-0 */ + ROM_LOAD( "c85-02.ic17", 0x100000, 0x100000, CRC(a6ad0f3d) SHA1(6d3a661807dd64f0b56ae6252a7e980fd678feef) ) /* OBJ-1 */ + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c85-14.ic54", 0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */ + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c85-04.ic31", 0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */ + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c85-05.ic33", 0x00000, 0x80000, CRC(3c1b0ed0) SHA1(08920dc55d695debae3eea5a8ff1d17bb11afd45) ) /* SCH-A */ +ROM_END + +ROM_START( solfigtr ) /* Solitary Fighter */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "c91-05.59", 0x00000, 0x40000, CRC(c1260e7c) SHA1(406663b8f92380f37955061765d77a92dc51c17a) ) + ROM_LOAD16_BYTE( "c91-09.61", 0x00001, 0x40000, CRC(d82b5266) SHA1(670dc91067dd856b5d36b71e5ddf67e82220d83b) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c91-03.34", 0x000000, 0x100000, CRC(8965da12) SHA1(b06f3fc91c9ce1e20cb4187505f3c7921c54cc12) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c91-01.12", 0x000000, 0x100000, CRC(0f3f4e00) SHA1(5912eddc066435b276d615842d123f58c4852b2b) ) + ROM_LOAD( "c91-02.11", 0x100000, 0x100000, CRC(e14ab98e) SHA1(b2e559ec9ccf383e693b27436081c29d30f17835) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c91-07.62", 0x00000, 0x04000, CRC(e471a05a) SHA1(4d9c2b734aac27819673094dc1843e1ca5fe6994) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c91-04.28", 0x00000, 0x80000, CRC(390b1065) SHA1(ee7ba77634854e4896528ff1bbc308de92a5815b) ) /* Channel A */ + + /* no Delta-T samples */ + + ROM_REGION( 0x0200, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal16l8b-c74-06.ic48", 0x0000, 0x0104, CRC(c868dc16) SHA1(b9d12f2016c6a3017b497aafc96a7dbab4a50c8b) ) +ROM_END + +ROM_START( qzquest ) /* Quiz Quest */ + ROM_REGION( 0x180000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c92-06.8", 0x000000, 0x020000, CRC(424be722) SHA1(ec064028bd68e8e2ec37705cab1c79c963188944) ) + ROM_LOAD16_BYTE( "c92-05.7", 0x000001, 0x020000, CRC(da470f93) SHA1(dc6d2142fc5662f4b3ffbe4cc9adb5b394d958ed) ) + ROM_LOAD16_WORD_SWAP( "c92-03.6", 0x100000, 0x080000, CRC(1d697606) SHA1(0af7ac3c3229f139fab1569adaa893b43999bc89) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c92-02.10", 0x000000, 0x100000, CRC(2daccecf) SHA1(bd22f95210f2bb0b63d210a54e07535c3f0e1031) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c92-01.21", 0x000000, 0x100000, CRC(9976a285) SHA1(8575ee18a3a6d690c9aa09f0c540665a31f87216) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c92-07.5", 0x00000, 0x04000, CRC(3e313db9) SHA1(44f781c7d3df8eacd745dc0af180cec9e1164b89) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c92-04.9", 0x000000, 0x080000, CRC(e421bb43) SHA1(a89157e65b537b31f5837435dae848adde8a86d1) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( pulirula ) + ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 768k for 68000 code */ + ROM_LOAD16_BYTE( "c98-12.rom", 0x00000, 0x40000, CRC(816d6cde) SHA1(cac583440cca9aa57373f4a6c9a68c5442a5258b) ) + ROM_LOAD16_BYTE( "c98-16.rom", 0x00001, 0x40000, CRC(59df5c77) SHA1(e6f222589dd8d046fb92dcf5f68ab0f6cd1b725b) ) + ROM_LOAD16_BYTE( "c98-06.rom", 0x80000, 0x20000, CRC(64a71b45) SHA1(40734c378f15cd47d4128f9713bf19b0d42c0517) ) + ROM_LOAD16_BYTE( "c98-07.rom", 0x80001, 0x20000, CRC(90195bc0) SHA1(0f7e48ee8964dec1fbc6f8dab57f3ae67b2494d2) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c98-04.rom", 0x000000, 0x100000, CRC(0e1fe3b2) SHA1(37bf8e946ee4239de104a07ff87727cb6e2a3932) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c98-02.rom", 0x000000, 0x100000, CRC(4a2ad2b3) SHA1(3296cf2855203d06170c991d187c65ccc3751952) ) + ROM_LOAD( "c98-03.rom", 0x100000, 0x100000, CRC(589a678f) SHA1(228b959046bec10b28599d83d9e58fd149273473) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "c98-05.rom", 0x000000, 0x080000, CRC(9ddd9c39) SHA1(4005a540c5cef6754284361da79a9e5e15612146) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c98-14.rom", 0x00000, 0x04000, CRC(a858e17c) SHA1(4389f43035a94e776a25350a8989dcfdb3e4675a) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c98-01.rom", 0x000000, 0x100000, CRC(197f66f5) SHA1(cc5d104033f9ab7d614afd47eeb61a22ef5714ea) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( pulirulj ) + ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 768k for 68000 code */ + ROM_LOAD16_BYTE( "c98-12.rom", 0x00000, 0x40000, CRC(816d6cde) SHA1(cac583440cca9aa57373f4a6c9a68c5442a5258b) ) + ROM_LOAD16_BYTE( "c98-13.rom", 0x00001, 0x40000, CRC(b7d13d5b) SHA1(f2cac6931c5984d68c2d5303b53c54b5781b3aed) ) + ROM_LOAD16_BYTE( "c98-06.rom", 0x80000, 0x20000, CRC(64a71b45) SHA1(40734c378f15cd47d4128f9713bf19b0d42c0517) ) + ROM_LOAD16_BYTE( "c98-07.rom", 0x80001, 0x20000, CRC(90195bc0) SHA1(0f7e48ee8964dec1fbc6f8dab57f3ae67b2494d2) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "c98-04.rom", 0x000000, 0x100000, CRC(0e1fe3b2) SHA1(37bf8e946ee4239de104a07ff87727cb6e2a3932) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "c98-02.rom", 0x000000, 0x100000, CRC(4a2ad2b3) SHA1(3296cf2855203d06170c991d187c65ccc3751952) ) + ROM_LOAD( "c98-03.rom", 0x100000, 0x100000, CRC(589a678f) SHA1(228b959046bec10b28599d83d9e58fd149273473) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "c98-05.rom", 0x000000, 0x080000, CRC(9ddd9c39) SHA1(4005a540c5cef6754284361da79a9e5e15612146) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "c98-14.rom", 0x00000, 0x04000, CRC(a858e17c) SHA1(4389f43035a94e776a25350a8989dcfdb3e4675a) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c98-01.rom", 0x000000, 0x100000, CRC(197f66f5) SHA1(cc5d104033f9ab7d614afd47eeb61a22ef5714ea) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( metalb ) + ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 768k for 68000 code */ + ROM_LOAD16_BYTE( "d16-16.8", 0x00000, 0x40000, CRC(3150be61) SHA1(63e0e6c6dc3a64da77bc83a160bbcd0f7d98ca52) ) + ROM_LOAD16_BYTE( "d16-18.7", 0x00001, 0x40000, CRC(5216d092) SHA1(d5a237112f0e76fa68f26a4a4e804818dc49a2fa) ) + ROM_LOAD16_BYTE( "d12-07.9", 0x80000, 0x20000, CRC(e07f5136) SHA1(27df1a1f21c27feb91801e3cc304ee534969f792) ) + ROM_LOAD16_BYTE( "d12-06.6", 0x80001, 0x20000, CRC(131df731) SHA1(537a9f404d797db051a5aaf0afa2cd1e9c0bdcfb) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "d12-03.14", 0x00000, 0x80000, CRC(46b498c0) SHA1(c2ec7ce9ac7874d1bc54ce4b5d428d73c5a16549) ) + ROM_LOAD16_BYTE( "d12-04.13", 0x00001, 0x80000, CRC(ab66d141) SHA1(e7f82b297dd2ae0b5d29886e5393cece61b742bb) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d12-01.20", 0x000000, 0x100000, CRC(b81523b9) SHA1(e688e88008db87fed0051fbcb28d3e3ae7e945a8) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d12-13.5", 0x00000, 0x04000, CRC(bcca2649) SHA1(d932134416c951d849ae41598f75609d453ed520) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d12-02.10", 0x000000, 0x100000, CRC(79263e74) SHA1(f9ef222239855d593b5855dbf9ea0376ea349c4b) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "d12-05.16", 0x000000, 0x080000, CRC(7fd036c5) SHA1(f412c6302cfba73df110943d7d6679dc908479f7) ) +ROM_END + +ROM_START( metalbj ) + ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 768k for 68000 code */ + ROM_LOAD16_BYTE( "d12-12.8", 0x00000, 0x40000, CRC(556f82b2) SHA1(fbce771eda99fd8b778f64fdc314ada4b6fdffde) ) + ROM_LOAD16_BYTE( "d12-11.7", 0x00001, 0x40000, CRC(af9ee28d) SHA1(2c2ced0240e929da6ebec0ea7aac641531833583) ) + ROM_LOAD16_BYTE( "d12-07.9", 0x80000, 0x20000, CRC(e07f5136) SHA1(27df1a1f21c27feb91801e3cc304ee534969f792) ) + ROM_LOAD16_BYTE( "d12-06.6", 0x80001, 0x20000, CRC(131df731) SHA1(537a9f404d797db051a5aaf0afa2cd1e9c0bdcfb) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "d12-03.14", 0x00000, 0x80000, CRC(46b498c0) SHA1(c2ec7ce9ac7874d1bc54ce4b5d428d73c5a16549) ) + ROM_LOAD16_BYTE( "d12-04.13", 0x00001, 0x80000, CRC(ab66d141) SHA1(e7f82b297dd2ae0b5d29886e5393cece61b742bb) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d12-01.20", 0x000000, 0x100000, CRC(b81523b9) SHA1(e688e88008db87fed0051fbcb28d3e3ae7e945a8) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d12-13.5", 0x00000, 0x04000, CRC(bcca2649) SHA1(d932134416c951d849ae41598f75609d453ed520) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d12-02.10", 0x000000, 0x100000, CRC(79263e74) SHA1(f9ef222239855d593b5855dbf9ea0376ea349c4b) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "d12-05.16", 0x000000, 0x080000, CRC(7fd036c5) SHA1(f412c6302cfba73df110943d7d6679dc908479f7) ) +ROM_END + +ROM_START( qzchikyu ) + ROM_REGION( 0x180000, REGION_CPU1, 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "d19-06.8", 0x000000, 0x020000, CRC(de8c8e55) SHA1(ffe177231193ff32da575a4f72fc655b88f08aa8) ) + ROM_LOAD16_BYTE( "d19-05.7", 0x000001, 0x020000, CRC(c6d099d0) SHA1(a291177e1ddbe993ffa91fbe41fc04a57a568fd0) ) + ROM_LOAD16_WORD_SWAP( "d19-03.6", 0x100000, 0x080000, CRC(5c1b92c0) SHA1(36af32584ef4b2856d397e5e3ee6d17d5be296fd) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d19-02.10", 0x000000, 0x100000, CRC(f2dce2f2) SHA1(29fd34f1177f0b587bfef40534adaea7afc0efcb) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d19-01.21", 0x000000, 0x100000, CRC(6c4342d0) SHA1(197e51302c23f65b8808ec9a66391b972c275867) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d19-07.5", 0x00000, 0x04000, CRC(a8935f84) SHA1(6f264cf7a52dfb8248b8aeb4ff34477d7ccb0b6d) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d19-04.9", 0x000000, 0x080000, CRC(d3c44905) SHA1(d00bd4f11523b2123383dd852ee5484d907ff904) ) + + /* no Delta-T samples */ + + ROM_REGION( 0x0600, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal16l8b-d19-08.bin", 0x0000, 0x0104, CRC(c6240d10) SHA1(7b573ea4d04fc58303b4a044e0d983183112abda) ) + ROM_LOAD( "pal16l8b-d19-09.bin", 0x0200, 0x0104, CRC(576f5db9) SHA1(110695b6d5a80b86df254c3eb970a735f510dfe8) ) + ROM_LOAD( "pal16l8b-d19-10.bin", 0x0400, 0x0104, CRC(ea1232a5) SHA1(a13199339be00db93300049d36f35b4a32f53967) ) +ROM_END + +ROM_START( yesnoj ) /* Yes/No Sinri Tokimeki Chart */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "d20-05-2.2", 0x00000, 0x40000, CRC(68adb929) SHA1(5238409708d67f03d251338883de536bdf76c6c1) ) + ROM_LOAD16_BYTE( "d20-04-2.4", 0x00001, 0x40000, CRC(a84762f8) SHA1(2950419fc6dca35a43a565575cec21de8efb9df1) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d20-01.11", 0x00000, 0x80000, CRC(9d8a4d57) SHA1(d7afcd86bdfe2a4c94a7c2847e17ba7e41d4de79) ) + + ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "d20-02.12", 0x00000, 0x80000, CRC(e71a8e40) SHA1(cda7f14ba90f178887b9cd57d5b85be7d5090ca7) ) + ROM_LOAD16_BYTE( "d20-03.13", 0x00001, 0x80000, CRC(6a51a1b4) SHA1(a2492a7775e137a705b3281de674724d4aab4fe1) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d20-06.5", 0x00000, 0x04000, CRC(3eb537dc) SHA1(368a03fc265157faf50612b823a78c820b2519f1) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + /* no ADPCM samples */ + + /* no Delta-T samples */ +ROM_END + +ROM_START( deadconx ) + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 1024k for 68000 code */ + ROM_LOAD16_BYTE( "d28-06.3", 0x00000, 0x40000, CRC(5b4bff51) SHA1(a589cbc8425add9ed5f2add26f17bb18fe53ca8a) ) + ROM_LOAD16_BYTE( "d28-12.5", 0x00001, 0x40000, CRC(9b74e631) SHA1(6a3ec317492fdf44dcee66ef8323611c55cd8843) ) + ROM_LOAD16_BYTE( "d28-09.2", 0x80000, 0x40000, CRC(143a0cc1) SHA1(a0b658b6a1567651d6fe1a955e1c853b48301f30) ) + ROM_LOAD16_BYTE( "d28-08.4", 0x80001, 0x40000, CRC(4c872bd9) SHA1(a78eec00b40445ad49425ba5a9b392b8516a30ff) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "d28-04.16", 0x00000, 0x80000, CRC(dcabc26b) SHA1(2e5e9912710ede9fc7c87430572f4e33a2ab66e7) ) + ROM_LOAD16_BYTE( "d28-05.17", 0x00001, 0x80000, CRC(862f9665) SHA1(c576c929f90ff454adca8f127fd7f74863d03239) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d28-01.8", 0x000000, 0x100000, CRC(181d7b69) SHA1(fea7bd60224cf98d53d1389695f2e0d76e50b573) ) + ROM_LOAD( "d28-02.9", 0x100000, 0x100000, CRC(d301771c) SHA1(2756bb834b50a657bbcf4e9bec02f4af595ac7e9) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d28-10.6", 0x00000, 0x04000, CRC(40805d74) SHA1(172114be692c766622d1235e5c4aa83ad438d9d9) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d28-03.10", 0x000000, 0x100000, CRC(a1804b52) SHA1(f252c473a71a4cf80d9f984fec08e5ae7524a620) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( deadconj ) + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 1024k for 68000 code */ + ROM_LOAD16_BYTE( "d28-06.3", 0x00000, 0x40000, CRC(5b4bff51) SHA1(a589cbc8425add9ed5f2add26f17bb18fe53ca8a) ) + ROM_LOAD16_BYTE( "d28-07.5", 0x00001, 0x40000, CRC(3fb8954c) SHA1(3104c1537f5fda7e5619aacfb48b02e969399a89) ) + ROM_LOAD16_BYTE( "d28-09.2", 0x80000, 0x40000, CRC(143a0cc1) SHA1(a0b658b6a1567651d6fe1a955e1c853b48301f30) ) + ROM_LOAD16_BYTE( "d28-08.4", 0x80001, 0x40000, CRC(4c872bd9) SHA1(a78eec00b40445ad49425ba5a9b392b8516a30ff) ) + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD16_BYTE( "d28-04.16", 0x00000, 0x80000, CRC(dcabc26b) SHA1(2e5e9912710ede9fc7c87430572f4e33a2ab66e7) ) + ROM_LOAD16_BYTE( "d28-05.17", 0x00001, 0x80000, CRC(862f9665) SHA1(c576c929f90ff454adca8f127fd7f74863d03239) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d28-01.8", 0x000000, 0x100000, CRC(181d7b69) SHA1(fea7bd60224cf98d53d1389695f2e0d76e50b573) ) + ROM_LOAD( "d28-02.9", 0x100000, 0x100000, CRC(d301771c) SHA1(2756bb834b50a657bbcf4e9bec02f4af595ac7e9) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d28-10.6", 0x00000, 0x04000, CRC(40805d74) SHA1(172114be692c766622d1235e5c4aa83ad438d9d9) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d28-03.10", 0x000000, 0x100000, CRC(a1804b52) SHA1(f252c473a71a4cf80d9f984fec08e5ae7524a620) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( dinorex ) + ROM_REGION( 0x300000, REGION_CPU1, 0 ) /* 1Mb for 68000 code */ + ROM_LOAD16_BYTE( "d39-14.9", 0x000000, 0x080000, CRC(e6aafdac) SHA1(083c6f27b9f7b983e93c7f5d30a9a286b925c10c) ) + ROM_LOAD16_BYTE( "d39-16.8", 0x000001, 0x080000, CRC(cedc8537) SHA1(b2063c2405a3d244157ae07d60a077fdd984dbb6) ) + ROM_LOAD16_WORD_SWAP( "d39-04.6", 0x100000, 0x100000, CRC(3800506d) SHA1(a75067e94071617cd5dafdd0ae0ec096dded520a) ) /* data rom */ + ROM_LOAD16_WORD_SWAP( "d39-05.7", 0x200000, 0x100000, CRC(e2ec3b5d) SHA1(143b72d0f2f5c40dbaeed1eee0672c3b95c2bda6) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d39-06.2", 0x000000, 0x100000, CRC(52f62835) SHA1(251c4f17bc98a5e81c224864fb81352cf1234377) ) + + ROM_REGION( 0x600000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d39-01.29", 0x000000, 0x200000, CRC(d10e9c7d) SHA1(42c13b271a91fac37be4ea92eb358ad6a6c540cf) ) + ROM_LOAD( "d39-02.28", 0x200000, 0x200000, CRC(6c304403) SHA1(97cd58bd7d00550b7ed5f77b066216c05206b513) ) + ROM_LOAD( "d39-03.27", 0x400000, 0x200000, CRC(fc9cdab4) SHA1(ce2dfac922d6ac0f008b7dfb92d76c1671ccabbd) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d39-12.5", 0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d39-07.10", 0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "d39-08.4", 0x000000, 0x080000, CRC(377b8b7b) SHA1(4905ac3b9b52c70afe5f451f860fb9acd81a1dbb) ) +ROM_END + +ROM_START( dinorexj ) + ROM_REGION( 0x300000, REGION_CPU1, 0 ) /* 1Mb for 68000 code */ + ROM_LOAD16_BYTE( "d39-14.9", 0x000000, 0x080000, CRC(e6aafdac) SHA1(083c6f27b9f7b983e93c7f5d30a9a286b925c10c) ) + ROM_LOAD16_BYTE( "d39-13.8", 0x000001, 0x080000, CRC(ae496b2f) SHA1(0e2ed2b77287590343820841d413ce6cb05b616d) ) + ROM_LOAD16_WORD_SWAP( "d39-04.6", 0x100000, 0x100000, CRC(3800506d) SHA1(a75067e94071617cd5dafdd0ae0ec096dded520a) ) /* data rom */ + ROM_LOAD16_WORD_SWAP( "d39-05.7", 0x200000, 0x100000, CRC(e2ec3b5d) SHA1(143b72d0f2f5c40dbaeed1eee0672c3b95c2bda6) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d39-06.2", 0x000000, 0x100000, CRC(52f62835) SHA1(251c4f17bc98a5e81c224864fb81352cf1234377) ) + + ROM_REGION( 0x600000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d39-01.29", 0x000000, 0x200000, CRC(d10e9c7d) SHA1(42c13b271a91fac37be4ea92eb358ad6a6c540cf) ) + ROM_LOAD( "d39-02.28", 0x200000, 0x200000, CRC(6c304403) SHA1(97cd58bd7d00550b7ed5f77b066216c05206b513) ) + ROM_LOAD( "d39-03.27", 0x400000, 0x200000, CRC(fc9cdab4) SHA1(ce2dfac922d6ac0f008b7dfb92d76c1671ccabbd) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d39-12.5", 0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d39-07.10", 0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "d39-08.4", 0x000000, 0x080000, CRC(377b8b7b) SHA1(4905ac3b9b52c70afe5f451f860fb9acd81a1dbb) ) +ROM_END + +ROM_START( dinorexu ) + ROM_REGION( 0x300000, REGION_CPU1, 0 ) /* 1Mb for 68000 code */ + ROM_LOAD16_BYTE( "d39-14.9", 0x000000, 0x080000, CRC(e6aafdac) SHA1(083c6f27b9f7b983e93c7f5d30a9a286b925c10c) ) + ROM_LOAD16_BYTE( "d39-15.8", 0x000001, 0x080000, CRC(fe96723b) SHA1(e68b2149cc935ff36efa501b086d5ffb1e0f5887) ) + ROM_LOAD16_WORD_SWAP( "d39-04.6", 0x100000, 0x100000, CRC(3800506d) SHA1(a75067e94071617cd5dafdd0ae0ec096dded520a) ) /* data rom */ + ROM_LOAD16_WORD_SWAP( "d39-05.7", 0x200000, 0x100000, CRC(e2ec3b5d) SHA1(143b72d0f2f5c40dbaeed1eee0672c3b95c2bda6) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d39-06.2", 0x000000, 0x100000, CRC(52f62835) SHA1(251c4f17bc98a5e81c224864fb81352cf1234377) ) + + ROM_REGION( 0x600000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d39-01.29", 0x000000, 0x200000, CRC(d10e9c7d) SHA1(42c13b271a91fac37be4ea92eb358ad6a6c540cf) ) + ROM_LOAD( "d39-02.28", 0x200000, 0x200000, CRC(6c304403) SHA1(97cd58bd7d00550b7ed5f77b066216c05206b513) ) + ROM_LOAD( "d39-03.27", 0x400000, 0x200000, CRC(fc9cdab4) SHA1(ce2dfac922d6ac0f008b7dfb92d76c1671ccabbd) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d39-12.5", 0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d39-07.10", 0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) ) + + ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "d39-08.4", 0x000000, 0x080000, CRC(377b8b7b) SHA1(4905ac3b9b52c70afe5f451f860fb9acd81a1dbb) ) +ROM_END + +ROM_START( qjinsei ) /* Quiz Jinsei Gekijoh */ + ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "d48-09", 0x000000, 0x040000, CRC(a573b68d) SHA1(fc12c7fb577c919cdb8e16e6d0ddba5603813a13) ) + ROM_LOAD16_BYTE( "d48-10", 0x000001, 0x040000, CRC(37143a5b) SHA1(8a06031618b60a0c8f38789027d0ed042e540c4d) ) + ROM_LOAD16_WORD_SWAP( "d48-03", 0x100000, 0x100000, CRC(fb5ea8dc) SHA1(2444042a85af6ae5b87e95ab09f661b877f215cc) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d48-04", 0x000000, 0x100000, CRC(61e4b078) SHA1(c01722af74220d0bb0daf3b78f53f8875209e066) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "d48-02", 0x000000, 0x100000, CRC(a7b68e63) SHA1(ecdd0b7f4c52eac8c6e4218f69c01cf9b2f98e2a) ) + ROM_LOAD16_BYTE( "d48-01", 0x000001, 0x100000, CRC(72a94b73) SHA1(f4f296886c5fdb227f43cb9231bb15742f8a77f1) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d48-11", 0x00000, 0x04000, CRC(656c5b54) SHA1(650bcc5920838db5c6613bcf30468d6e296ea017) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d48-05", 0x000000, 0x080000, CRC(3fefd058) SHA1(338c35c3a086041d28708d4b17e208b590c926d5) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( qcrayon ) /* Quiz Crayon */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "d55-13", 0x00000, 0x40000, CRC(16afbfc7) SHA1(daf948603c78312aa8fb8e239097939ec89ecc64) ) + ROM_LOAD16_BYTE( "d55-14", 0x00001, 0x40000, CRC(2fb3057f) SHA1(3b107dc69c01ca1b90c78a122336896b89509a3e) ) + + ROM_REGION16_BE( 0x100000, REGION_USER1, 0 ) + /* extra ROM mapped 0x300000 */ + ROM_LOAD16_WORD_SWAP( "d55-03", 0x000000, 0x100000, CRC(4d161e76) SHA1(96189294f91f165423ba585c650ee47fc8165725) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d55-02", 0x000000, 0x100000, CRC(f3db2f1c) SHA1(a96d89dd2c851dae3a237141c478fe2a65dda9c3) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "d55-05", 0x000000, 0x100000, CRC(f0e59902) SHA1(44d93e0e9622a98796a128a0273065947f586a1d) ) + ROM_LOAD16_BYTE( "d55-04", 0x000001, 0x100000, CRC(412975ce) SHA1(32058a87947d6b6cdc8b147ddfcf359792f9c9fc) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d55-15", 0x00000, 0x04000, CRC(ba782eff) SHA1(ce24654db49b9694e444e93b9a8d529a86729e03) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d55-01", 0x000000, 0x100000, CRC(a8309af4) SHA1(dc30b2e019003c58aecaf899668b36dea6e1274e) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( qcrayon2 ) /* Quiz Crayon 2 */ + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512k for 68000 code */ + ROM_LOAD16_BYTE( "d63-12", 0x00000, 0x40000, CRC(0f445a38) SHA1(cb9212c6c61d7dec7cfa039ebbbabd368dad52c3) ) + ROM_LOAD16_BYTE( "d63-13", 0x00001, 0x40000, CRC(74455752) SHA1(9835eb5ebad8df96abe8f7d5f8e4ff663b38015a) ) + + ROM_REGION16_BE( 0x080000, REGION_USER1, 0 ) + /* extra ROM mapped at 600000 */ + ROM_LOAD16_WORD_SWAP( "d63-01", 0x00000, 0x80000, CRC(872e38b4) SHA1(dbb3728655dee03f6583db976708507c9ac5be16) ) /* data rom */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* SCR */ + ROM_LOAD( "d63-03", 0x000000, 0x100000, CRC(d24843af) SHA1(6508182f9038e4603230a6489e89ebae91c2f761) ) + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "d63-06", 0x000000, 0x200000, CRC(58b1e4a8) SHA1(1b957c2d2d1cdada9972880d9d7b6c8c584edabb) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "d63-11", 0x00000, 0x04000, CRC(2c7ac9e5) SHA1(2477fb4415781afddc2f4084eca52f53b7d40480) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "d63-02", 0x000000, 0x100000, CRC(162ae165) SHA1(8b503d096640ec91cf55e05374b293937965c672) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( driftout ) + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 1024k for 68000 code */ + ROM_LOAD16_BYTE( "do_46.rom", 0x00000, 0x80000, CRC(f960363e) SHA1(3f64fd606d4e19198de460cf2d99331a2d2e7434) ) + ROM_LOAD16_BYTE( "do_45.rom", 0x00001, 0x80000, CRC(e3fe66b9) SHA1(6b197061be0c296af08a86dace08ba75c9574e19) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty */ + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD( "do_obj.rom", 0x00000, 0x80000, CRC(5491f1c4) SHA1(a2e92a9a1e77d9f683f6720947e0622dde48287f) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "do_piv.rom", 0x00000, 0x80000, CRC(c4f012f7) SHA1(4ad6a88f6a7f89b2b4c62c2b376d4e7b43c3d442) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "do_50.rom", 0x00000, 0x04000, CRC(ffe10124) SHA1(a47dfedfa7b352a5db39e7e1ccc666d3c5fb0d75) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "do_snd.rom", 0x00000, 0x80000, CRC(f2deb82b) SHA1(55e39173a475f5ab0b5f573a678a493fb6eefe64) ) + + /* no Delta-T samples */ +ROM_END + +ROM_START( driveout ) + ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 1024k for 68000 code */ + ROM_LOAD16_BYTE( "driveout.003", 0x00000, 0x80000, CRC(dc431e4e) SHA1(6002cb7a2bd05e28a2413942998a5c7e11fc1432) ) + ROM_LOAD16_BYTE( "driveout.002", 0x00001, 0x80000, CRC(6f9063f4) SHA1(7ea55126a2f6391322740432d835cd06450909ae) ) + + ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) + /* empty */ + + ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* OBJ */ + ROM_LOAD16_BYTE( "driveout.084", 0x00000, 0x40000, CRC(530ac420) SHA1(d66006958580205d0962871ba7d0b40a067bb9af) ) + ROM_LOAD16_BYTE( "driveout.081", 0x00001, 0x40000, CRC(0e9a3e9e) SHA1(7bb21e6fc930a5e1913bffb626958d0ee22d5883) ) + + ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE ) /* pivot gfx */ + ROM_LOAD( "do_piv.rom", 0x00000, 0x80000, CRC(c4f012f7) SHA1(4ad6a88f6a7f89b2b4c62c2b376d4e7b43c3d442) ) + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "driveout.020", 0x0000, 0x8000, CRC(99aaeb2e) SHA1(c7eb174f2ddcd8fd2b73b5251f434a20a9627b49) ) + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "driveout.028", 0x00000, 0x20000, CRC(cbde0b66) SHA1(b264aa525ff40c7813182031825cd052db887000) ) /* banked */ + ROM_CONTINUE( 0x40000, 0x20000 ) + ROM_CONTINUE( 0x80000, 0x20000 ) + ROM_CONTINUE( 0xc0000, 0x20000 ) + ROM_LOAD( "driveout.029", 0x20000, 0x20000, CRC(0aba2026) SHA1(f592e3b294d44f499fdca4cc31646e55d8c3dfbf) ) /* sandwiched */ + ROM_RELOAD( 0x60000, 0x20000 ) + ROM_RELOAD( 0xa0000, 0x20000 ) + ROM_RELOAD( 0xe0000, 0x20000 ) +ROM_END + + +static DRIVER_INIT( finalb ) +{ + int i; + UINT8 data; + UINT32 offset; + UINT8 *gfx = memory_region(REGION_GFX2); + + offset = 0x100000; + for (i = 0x180000; i<0x200000; i++) + { + int d1,d2,d3,d4; + + /* convert from 2bits into 4bits format */ + data = gfx[i]; + d1 = (data>>0) & 3; + d2 = (data>>2) & 3; + d3 = (data>>4) & 3; + d4 = (data>>6) & 3; + + gfx[offset] = (d3<<2) | (d4<<6); + offset++; + + gfx[offset] = (d1<<2) | (d2<<6); + offset++; + } +} + +static DRIVER_INIT( mjnquest ) +{ + int i; + UINT8 *gfx = memory_region(REGION_GFX2); + + /* the bytes in each longword are in reversed order, put them in the + order used by the other games. */ + for (i = 0;i < memory_region_length(REGION_GFX2);i += 2) + { + int t; + + t = gfx[i]; + gfx[i] = (gfx[i+1] >> 4) | (gfx[i+1] << 4); + gfx[i+1] = (t >> 4) | (t << 4); + } +} + +static DRIVER_INIT( yesnoj ) +{ + yesnoj_dsw = 0; + state_save_register_global(yesnoj_dsw); +} + +static DRIVER_INIT( driveout ) +{ + state_save_register_global(driveout_sound_latch); + state_save_register_global(oki_bank); + state_save_register_func_postload(reset_driveout_sound_region); +} + + +GAME( 1988, finalb, 0, finalb, finalb, finalb, ROT0, "Taito Corporation Japan", "Final Blow (World)", 0 ) +GAME( 1988, finalbj, finalb, finalb, finalbj, finalb, ROT0, "Taito Corporation", "Final Blow (Japan)", 0 ) +GAME( 1988, finalbu, finalb, finalb, finalbj, finalb, ROT0, "Taito America Corporation", "Final Blow (US)", 0 ) +GAME( 1989, dondokod, 0, dondokod, dondokod, 0, ROT0, "Taito Corporation Japan", "Don Doko Don (World)", 0 ) +GAME( 1989, dondokdu, dondokod, dondokod, dondokdu, 0, ROT0, "Taito America Corporation", "Don Doko Don (US)", 0 ) +GAME( 1989, dondokdj, dondokod, dondokod, dondokdj, 0, ROT0, "Taito Corporation", "Don Doko Don (Japan)", 0 ) +GAME( 1989, megab, 0, megab, megab, 0, ROT0, "Taito Corporation Japan", "Mega Blast (World)", 0 ) +GAME( 1989, megabj, megab, megab, megabj, 0, ROT0, "Taito Corporation", "Mega Blast (Japan)", 0 ) +GAME( 1990, thundfox, 0, thundfox, thundfox, 0, ROT0, "Taito Corporation Japan", "Thunder Fox (World)", 0 ) +GAME( 1990, thndfoxu, thundfox, thundfox, thndfoxu, 0, ROT0, "Taito America Corporation", "Thunder Fox (US)", 0 ) +GAME( 1990, thndfoxj, thundfox, thundfox, thndfoxj, 0, ROT0, "Taito Corporation", "Thunder Fox (Japan)", 0 ) +GAME( 1989, cameltry, 0, cameltry, cameltry, 0, ROT0, "Taito America Corporation", "Cameltry (US, YM2610)", 0 ) +GAME( 1989, camltrya, cameltry, camltrya, cameltry, 0, ROT0, "Taito America Corporation", "Cameltry (World, YM2203 + M6295)", 0 ) +GAME( 1989, camltrua, cameltry, camltrya, cameltry, 0, ROT0, "Taito America Corporation", "Cameltry (US, YM2203 + M6295)", 0 ) +GAME( 1989, cameltrj, cameltry, cameltry, cameltrj, 0, ROT0, "Taito Corporation", "Cameltry (Japan, YM2610)", 0 ) +GAME( 1990, qtorimon, 0, qtorimon, qtorimon, 0, ROT0, "Taito Corporation", "Quiz Torimonochou (Japan)", 0 ) +GAME( 1990, liquidk, 0, liquidk, liquidk, 0, ROT0, "Taito Corporation Japan", "Liquid Kids (World)", 0 ) +GAME( 1990, liquidku, liquidk, liquidk, liquidku, 0, ROT0, "Taito America Corporation", "Liquid Kids (US)", 0 ) +GAME( 1990, mizubaku, liquidk, liquidk, mizubaku, 0, ROT0, "Taito Corporation", "Mizubaku Daibouken (Japan)", 0 ) +GAME( 1990, quizhq, 0, quizhq, quizhq, 0, ROT0, "Taito Corporation", "Quiz H.Q. (Japan)", 0 ) +GAME( 1990, ssi, 0, ssi, ssi, 0, ROT270, "Taito Corporation Japan", "Super Space Invaders '91 (World)", 0 ) +GAME( 1990, majest12, ssi, ssi, majest12, 0, ROT270, "Taito Corporation", "Majestic Twelve - The Space Invaders Part IV (Japan)", 0 ) +GAME( 1990, gunfront, 0, gunfront, gunfront, 0, ROT270, "Taito Corporation Japan", "Gun & Frontier (World)", 0 ) +GAME( 1990, gunfronj, gunfront, gunfront, gunfronj, 0, ROT270, "Taito Corporation", "Gun Frontier (Japan)", 0 ) +GAME( 1990, growl, 0, growl, growl, 0, ROT0, "Taito Corporation Japan", "Growl (World)", 0 ) +GAME( 1990, growlu, growl, growl, growlu, 0, ROT0, "Taito America Corporation", "Growl (US)", 0 ) +GAME( 1990, runark, growl, growl, runark, 0, ROT0, "Taito Corporation", "Runark (Japan)", 0 ) +GAME( 1990, mjnquest, 0, mjnquest, mjnquest, mjnquest, ROT0, "Taito Corporation", "Mahjong Quest (Japan)", 0 ) +GAME( 1990, mjnquesb, mjnquest, mjnquest, mjnquest, mjnquest, ROT0, "Taito Corporation", "Mahjong Quest (No Nudity)", 0 ) +GAME( 1990, footchmp, 0, footchmp, footchmp, 0, ROT0, "Taito Corporation Japan", "Football Champ (World)", 0 ) +GAME( 1990, hthero, footchmp, hthero, hthero, 0, ROT0, "Taito Corporation", "Hat Trick Hero (Japan)", 0 ) +GAME( 1992, euroch92, footchmp, footchmp, footchmp, 0, ROT0, "Taito Corporation Japan", "Euro Champ '92 (World)", 0 ) +GAME( 1990, koshien, 0, koshien, koshien, 0, ROT0, "Taito Corporation", "Ah Eikou no Koshien (Japan)", 0 ) +GAME( 1990, yuyugogo, 0, yuyugogo, yuyugogo, 0, ROT0, "Taito Corporation", "Yuuyu no Quiz de GO!GO! (Japan)", 0 ) +GAME( 1990, ninjak, 0, ninjak, ninjak, 0, ROT0, "Taito Corporation Japan", "The Ninja Kids (World)", 0 ) +GAME( 1990, ninjakj, ninjak, ninjak, ninjakj, 0, ROT0, "Taito Corporation", "The Ninja Kids (Japan)", 0 ) +GAME( 1990, ninjaku, ninjak, ninjak, ninjaku, 0, ROT0, "Taito America Corporation", "The Ninja Kids (US)", 0 ) +GAME( 1991, solfigtr, 0, solfigtr, solfigtr, 0, ROT0, "Taito Corporation Japan", "Solitary Fighter (World)", 0 ) +GAME( 1991, qzquest, 0, qzquest , qzquest, 0, ROT0, "Taito Corporation", "Quiz Quest - Hime to Yuusha no Monogatari (Japan)", 0 ) +GAME( 1991, pulirula, 0, pulirula, pulirula, 0, ROT0, "Taito Corporation Japan", "PuLiRuLa (World)", 0 ) +GAME( 1991, pulirulj, pulirula, pulirula, pulirulj, 0, ROT0, "Taito Corporation", "PuLiRuLa (Japan)", 0 ) +GAME( 1991, metalb, 0, metalb, metalb, 0, ROT0, "Taito Corporation Japan", "Metal Black (World)", 0 ) +GAME( 1991, metalbj, metalb, metalb, metalbj, 0, ROT0, "Taito Corporation", "Metal Black (Japan)", 0 ) +GAME( 1991, qzchikyu, 0, qzchikyu, qzchikyu, 0, ROT0, "Taito Corporation", "Quiz Chikyu Bouei Gun (Japan)", 0 ) +GAME( 1992, yesnoj, 0, yesnoj, yesnoj, yesnoj, ROT0, "Taito Corporation", "Yes/No Sinri Tokimeki Chart", 0 ) +GAME( 1992, deadconx, 0, deadconx, deadconx, 0, ROT0, "Taito Corporation Japan", "Dead Connection (World)", 0 ) +GAME( 1992, deadconj, deadconx, deadconj, deadconj, 0, ROT0, "Taito Corporation", "Dead Connection (Japan)", 0 ) +GAME( 1992, dinorex, 0, dinorex, dinorex, 0, ROT0, "Taito Corporation Japan", "Dino Rex (World)", 0 ) +GAME( 1992, dinorexj, dinorex, dinorex, dinorexj, 0, ROT0, "Taito Corporation", "Dino Rex (Japan)", 0 ) +GAME( 1992, dinorexu, dinorex, dinorex, dinorex, 0, ROT0, "Taito America Corporation", "Dino Rex (US)", 0 ) +GAME( 1992, qjinsei, 0, qjinsei, qjinsei, 0, ROT0, "Taito Corporation", "Quiz Jinsei Gekijoh (Japan)", 0 ) +GAME( 1993, qcrayon, 0, qcrayon, qcrayon, 0, ROT0, "Taito Corporation", "Quiz Crayon Shinchan (Japan)", 0 ) +GAME( 1993, qcrayon2, 0, qcrayon2, qcrayon2, 0, ROT0, "Taito Corporation", "Crayon Shinchan Orato Asobo (Japan)", 0 ) +GAME( 1991, driftout, 0, driftout, driftout, 0, ROT270, "Visco", "Drift Out (Japan)", 0 ) +GAME( 1991, driveout, driftout, driveout, driftout, driveout, ROT270, "bootleg", "Drive Out", 0 ) |