QuarterArcade Coin-Op Tech Net

Quick Nav: # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Coin-Op : Arcade : Legion : VM Driver Source

Source Listing


     1: /**********************************************************************
     2: 
     3: Legion
     4: (c)1986 Nichibutsu
     5: 
     6: Terra Force
     7: (c)1987 Nichibutsu
     8: 
     9: Kodure Ookami
    10: (c)1987 Nichibutsu
    11: 
    12: Crazy Climber 2
    13: (c)1988 Nichibutsu
    14: 
    15: Armed Formation
    16: (c)1988 Nichibutsu
    17: 
    18: 68000 + Z80
    19: 
    20: TODO:
    21: - simulate the mcu/blitter (particularly needed in terrafu and legion)
    22: 
    23: 
    24: Stephh's notes (based on the games M68000 code and some tests) :
    25: 
    26: 1a) 'legion'
    27: 
    28:   - The ROM test (code at 0x00046e) checks range 0x000102-0x01ffff (!)
    29:     and reports an error if the checksum isn't correct.
    30: 
    31:   - 3 Dip Switches which are told to be unused have an effect if
    32:     [0x062d53] != 0x00 (check code at 0x00d9b2).
    33:     As this value is ALWAYS set to 0x00 via code at 0x0001d4, I've
    34:     added a #define LEGION_HACK you need to change to 1 if you want
    35:     get the benefits of these Dip Switches.
    36:     Here is what these "unused" Dip Switch do :
    37: 
    38:       * 1st unused Dip Switch (DSW0 bit 6) remains unused
    39:       * 2nd unused Dip Switch (DSW0 bit 7) determines if the "Invulnerability"
    40:         Dip Switches will be tested
    41:       * 3rd unused Dip Switch (DSW1 bit 6) gives invulnerability or not
    42:         to player 1 (DSW0 bit 7 must be ON too !)
    43:       * 4th unused Dip Switch (DSW1 bit 7) gives invulnerability or not
    44:         to player 2 (DSW0 bit 7 must be ON too !)
    45: 
    46:     Also note bit 1 of 0x062d53 is also tested but I haven't been able
    47:     to find its purpose (any more infos are welcome)
    48: 
    49: 
    50: 1b) 'legiono'
    51: 
    52:   - The ROM test (code at 0x000466) checks range 0x000102-0x03ffff
    53:     but NEVER reports an error if the checksum isn't correct due
    54:     to the instruction at 0x000480 (see where it branches) :
    55: 
    56: 	000466: 7000                     moveq   #$0, D0
    57: 	000468: 41FA FC98                lea     (-$368,PC), A0; ($102)
    58: 	00046C: D058                     add.w   (A0)+, D0
    59: 	00046E: B1FC 0004 0000           cmpa.l  #$40000, A0
    60: 	000474: 66F6                     bne     46c
    61: 	000476: 33C0 0006 2CAE           move.w  D0, $62cae.l
    62: 	00047C: B078 0100                cmp.w   $100.w, D0
    63: 	000480: 6600 0002                bne     484
    64: 	000484: 41FA FF86                lea     (-$7a,PC), A0; ($40c)
    65: 
    66:   - 3 Dip Switches which are told to be unused have an effect if
    67:     [0x062d53] != 0x00 (check code at 0x00d7ea).
    68:     As this value is ALWAYS set to 0x00 via code at 0x0001d4, I've
    69:     added a #define LEGION_HACK you need to change to 1 if you want
    70:     get the benefits of these Dip Switches.
    71:     Here is what these "unused" Dip Switch do :
    72: 
    73:       * 1st unused Dip Switch (DSW0 bit 6) remains unused
    74:       * 2nd unused Dip Switch (DSW0 bit 7) determines if the "Invulnerability"
    75:         Dip Switches will be tested
    76:       * 3rd unused Dip Switch (DSW1 bit 6) gives invulnerability or not
    77:         to player 1 (DSW0 bit 7 must be ON too !)
    78:       * 4th unused Dip Switch (DSW1 bit 7) gives invulnerability or not
    79:         to player 2 (DSW0 bit 7 must be ON too !)
    80: 
    81:     Also note bit 1 of 0x062d53 is also tested but I haven't been able
    82:     to find its purpose (any more infos are welcome)
    83: 
    84: 
    85: 2a) 'terraf'
    86: 
    87:   - The ROM test (code at 0x000292) ALWAYS displays "OK", but memory is
    88:     in fact NEVER scanned ! Original behaviour or is the game a bootleg ?
    89: 
    90: 	000292: 45F8 0000                lea     $0.w, A2
    91: 	000296: 303C 7FFF                move.w  #$7fff, D0
    92: 	00029A: 7200                     moveq   #$0, D1
    93: 	00029C: D29A                     add.l   (A2)+, D1
    94: 	00029E: 0C81 0000 0000           cmpi.l  #$0, D1
    95: 	0002A4: 4E71                     nop
    96: 	0002A6: 23FC 004F 004B 0006 83AA move.l  #$4f004b, $683aa.l
    97: 	0002B0: 4EF9 0000 0124           jmp     $124.l
    98: 	...
    99: 	0002C2: 4EF9 0000 0124           jmp     $124.l
   100: 
   101: 
   102: 2b) 'terrafu'
   103: 
   104:   - The ROM test (code at 0x000292) NEVER displays "OK", but memory is
   105:     in fact NEVER scanned ! Original behaviour or is the game a bootleg ?
   106: 
   107: 	000292: 45F8 0000                lea     $0.w, A2
   108: 	000296: 303C 7FFF                move.w  #$7fff, D0
   109: 	00029A: 7200                     moveq   #$0, D1
   110: 	00029C: D29A                     add.l   (A2)+, D1
   111: 	00029E: 0C81 0000 0000           cmpi.l  #$0, D1
   112: 	0002A4: 661C                     bne     2c2
   113: 	0002A6: 23FC 004F 004B 0006 83AA move.l  #$4f004b, $683aa.l
   114: 	0002B0: 4EF9 0000 0124           jmp     $124.l
   115: 	...
   116: 	0002C2: 4EF9 0000 0124           jmp     $124.l
   117: 
   118: 
   119: 3)  'kodure'
   120: 
   121:   - The ROM test (code at 0x004fac) checks range 0x000000-0x05ffff
   122:     and reports an error if the checksum isn't correct.
   123: 
   124: 
   125: 4)  'cclimbr2'
   126: 
   127:   - The ROM test (code at 0x012f6e) checks ranges 0x000100-0x014fff,
   128:     and 0x020000-0x024fff, and reports an error if the checksum isn't
   129:     correct.
   130: 
   131: 
   132: 5)  'armedf'
   133: 
   134:   - The ROM test (code at 0x00df5e) checks ranges 0x000100-0x014fff,
   135:     0x020000-0x024fff and 0x040000-0x04ffff, and reports an error if
   136:     the checksum isn't correct.
   137: 
   138: ***********************************************************************/
   139: 
   140: /*
   141: 	
   142: 	2003-06-01	Added cocktail support to all games
   143: 
   144: */
   145: 
   146: #include "driver.h" 
   147: #include "vidhrdw/generic.h" 
   148: #include "cpu/m68000/m68000.h" 
   149: #include "cpu/z80/z80.h" 
   150: 
   151: #define LEGION_HACK	0 
   152: 
   153: 
   154: extern void armedf_setgfxtype( int type );
   155: 
   156: VIDEO_UPDATE( armedf );
   157: VIDEO_EOF( armedf );
   158: VIDEO_START( armedf );
   159: 
   160: WRITE16_HANDLER( armedf_bg_videoram_w );
   161: WRITE16_HANDLER( armedf_fg_videoram_w );
   162: WRITE16_HANDLER( armedf_text_videoram_w );
   163: WRITE16_HANDLER( terraf_fg_scrollx_w );
   164: WRITE16_HANDLER( terraf_fg_scrolly_w );
   165: WRITE16_HANDLER( terraf_fg_scroll_msb_arm_w );
   166: WRITE16_HANDLER( armedf_fg_scrollx_w );
   167: WRITE16_HANDLER( armedf_fg_scrolly_w );
   168: WRITE16_HANDLER( armedf_bg_scrollx_w );
   169: WRITE16_HANDLER( armedf_bg_scrolly_w );
   170: 
   171: extern data16_t armedf_vreg;
   172: extern data16_t *armedf_bg_videoram;
   173: extern data16_t *armedf_fg_videoram;
   174: extern data16_t *terraf_text_videoram;
   175: 
   176: 
   177: static WRITE16_HANDLER( io_w )
   178: {
   179: 	COMBINE_DATA(&armedf_vreg);
   180: 	/* bits 0 and 1 of armedf_vreg are coin counters */
   181: 	/* bit 12 seems to handle screen flipping */
   182: 	flip_screen_set(armedf_vreg & 0x1000);
   183: }
   184: 
   185: static WRITE16_HANDLER( kodure_io_w )
   186: {
   187: 	COMBINE_DATA(&armedf_vreg);
   188: 	/* bits 0 and 1 of armedf_vreg are coin counters */
   189: 	/* bit 12 seems to handle screen flipping */
   190: 	flip_screen_set(armedf_vreg & 0x1000);
   191: 
   192: 	/* This is a temporary condition specification. */
   193: 	if (!(armedf_vreg & 0x0080))
   194: 	{
   195: 		int i;
   196: 		for (i = 0; i < 0x1000; i++)
   197: 		{
   198: 			armedf_text_videoram_w(i, ' ', 0);
   199: 		}
   200: 	}
   201: }
   202: 
   203: static WRITE16_HANDLER( sound_command_w )
   204: {
   205: 	if (ACCESSING_LSB)
   206: 		soundlatch_w(0,((data & 0x7f) << 1) | 1);
   207: }
   208: 
   209: 
   210: 
   211: static MEMORY_READ16_START( terraf_readmem )
   212: 	{ 0x000000, 0x04ffff, MRA16_ROM },
   213: 	{ 0x060000, 0x063fff, MRA16_RAM },
   214: 	{ 0x064000, 0x064fff, MRA16_RAM },
   215: 	{ 0x068000, 0x069fff, MRA16_RAM },
   216: 	{ 0x06a000, 0x06a9ff, MRA16_RAM },
   217: 	{ 0x06C000, 0x06C9ff, MRA16_RAM },
   218: 	{ 0x070000, 0x070fff, MRA16_RAM },
   219: 	{ 0x074000, 0x074fff, MRA16_RAM },
   220: 	{ 0x078000, 0x078001, input_port_0_word_r },
   221: 	{ 0x078002, 0x078003, input_port_1_word_r },
   222: 	{ 0x078004, 0x078005, input_port_2_word_r },
   223: 	{ 0x078006, 0x078007, input_port_3_word_r },
   224: MEMORY_END
   225: 
   226: static MEMORY_WRITE16_START( terraf_writemem )
   227: 	{ 0x000000, 0x04ffff, MWA16_ROM },
   228: 	{ 0x060000, 0x0603ff, MWA16_RAM, &spriteram16, &spriteram_size },
   229: 	{ 0x060400, 0x063fff, MWA16_RAM },
   230: 	{ 0x064000, 0x064fff, paletteram16_xxxxRRRRGGGGBBBB_word_w, &paletteram16 },
   231: 	{ 0x068000, 0x069fff, armedf_text_videoram_w, &terraf_text_videoram },
   232: 	{ 0x06a000, 0x06a9ff, MWA16_RAM },
   233: 	{ 0x06C000, 0x06C9ff, MWA16_RAM },
   234: 	{ 0x070000, 0x070fff, armedf_fg_videoram_w, &armedf_fg_videoram },
   235: 	{ 0x074000, 0x074fff, armedf_bg_videoram_w, &armedf_bg_videoram },
   236: 	{ 0x07c000, 0x07c001, io_w },
   237: 	{ 0x07c002, 0x07c003, armedf_bg_scrollx_w },
   238: 	{ 0x07c004, 0x07c005, armedf_bg_scrolly_w },
   239: 	{ 0x07c006, 0x07c007, terraf_fg_scrollx_w },
   240: 	{ 0x07c008, 0x07c009, terraf_fg_scrolly_w },	/* written twice, lsb and msb */
   241: 	{ 0x07c00a, 0x07c00b, sound_command_w },
   242: 	{ 0x0c0000, 0x0c0001, terraf_fg_scroll_msb_arm_w }, /* written between two consecutive writes to 7c008 */
   243: MEMORY_END
   244: 
   245: static MEMORY_READ16_START( kodure_readmem )
   246: 	{ 0x000000, 0x05ffff, MRA16_ROM },
   247: 	{ 0x060000, 0x063fff, MRA16_RAM },
   248: 	{ 0x064000, 0x064fff, MRA16_RAM },
   249: 	{ 0x068000, 0x069fff, MRA16_RAM },
   250: 	{ 0x06a000, 0x06a9ff, MRA16_RAM },
   251: 	{ 0x06C000, 0x06C9ff, MRA16_RAM },
   252: 	{ 0x070000, 0x070fff, MRA16_RAM },
   253: 	{ 0x074000, 0x074fff, MRA16_RAM },
   254: 	{ 0x078000, 0x078001, input_port_0_word_r },
   255: 	{ 0x078002, 0x078003, input_port_1_word_r },
   256: 	{ 0x078004, 0x078005, input_port_2_word_r },
   257: 	{ 0x078006, 0x078007, input_port_3_word_r },
   258: MEMORY_END
   259: 
   260: static MEMORY_WRITE16_START( kodure_writemem )
   261: 	{ 0x000000, 0x05ffff, MWA16_ROM },
   262: 	{ 0x060000, 0x060fff, MWA16_RAM, &spriteram16, &spriteram_size },
   263: 	{ 0x061000, 0x063fff, MWA16_RAM },
   264: 	{ 0x064000, 0x064fff, paletteram16_xxxxRRRRGGGGBBBB_word_w, &paletteram16 },
   265: 	{ 0x068000, 0x069fff, armedf_text_videoram_w, &terraf_text_videoram },
   266: 	{ 0x06a000, 0x06a9ff, MWA16_RAM },
   267: 	{ 0x06C000, 0x06C9ff, MWA16_RAM },
   268: 	{ 0x070000, 0x070fff, armedf_fg_videoram_w, &armedf_fg_videoram },
   269: 	{ 0x074000, 0x074fff, armedf_bg_videoram_w, &armedf_bg_videoram },
   270: 	{ 0x07c000, 0x07c001, kodure_io_w },
   271: 	{ 0x07c002, 0x07c003, armedf_bg_scrollx_w },
   272: 	{ 0x07c004, 0x07c005, armedf_bg_scrolly_w },
   273: 	{ 0x07c00a, 0x07c00b, sound_command_w },
   274: 	{ 0x0c0000, 0x0c0001, MWA16_NOP }, /* watchdog? */
   275: 	{ 0xffd000, 0xffd001, MWA16_NOP }, /* ? */
   276: MEMORY_END
   277: 
   278: static MEMORY_READ16_START( cclimbr2_readmem )
   279: 	{ 0x000000, 0x05ffff, MRA16_ROM },
   280: 	{ 0x060000, 0x063fff, MRA16_RAM },
   281: 	{ 0x064000, 0x064fff, MRA16_RAM },
   282: 	{ 0x068000, 0x069fff, MRA16_RAM },
   283: 	{ 0x06a000, 0x06a9ff, MRA16_RAM },
   284: 	{ 0x06c000, 0x06c9ff, MRA16_RAM },
   285: 	{ 0x070000, 0x070fff, MRA16_RAM },
   286: 	{ 0x074000, 0x074fff, MRA16_RAM },
   287: 	{ 0x078000, 0x078001, input_port_0_word_r },
   288: 	{ 0x078002, 0x078003, input_port_1_word_r },
   289: 	{ 0x078004, 0x078005, input_port_2_word_r },
   290: 	{ 0x078006, 0x078007, input_port_3_word_r },
   291: MEMORY_END
   292: 
   293: static MEMORY_WRITE16_START( cclimbr2_writemem )
   294: 	{ 0x000000, 0x05ffff, MWA16_ROM },
   295: 	{ 0x060000, 0x060fff, MWA16_RAM, &spriteram16, &spriteram_size },
   296: 	{ 0x061000, 0x063fff, MWA16_RAM },
   297: 	{ 0x064000, 0x064fff, paletteram16_xxxxRRRRGGGGBBBB_word_w, &paletteram16 },
   298: 	{ 0x068000, 0x069fff, armedf_text_videoram_w, &terraf_text_videoram },
   299: 	{ 0x06a000, 0x06a9ff, MWA16_RAM },
   300: 	{ 0x06c000, 0x06c9ff, MWA16_RAM },
   301: 	{ 0x06ca00, 0x06cbff, MWA16_RAM },
   302: 	{ 0x070000, 0x070fff, armedf_fg_videoram_w, &armedf_fg_videoram },
   303: 	{ 0x074000, 0x074fff, armedf_bg_videoram_w, &armedf_bg_videoram },
   304: 	{ 0x07c000, 0x07c001, io_w },
   305: 	{ 0x07c002, 0x07c003, armedf_bg_scrollx_w },
   306: 	{ 0x07c004, 0x07c005, armedf_bg_scrolly_w },
   307: 	{ 0x07c00a, 0x07c00b, sound_command_w },
   308: MEMORY_END
   309: 
   310: static MEMORY_READ16_START( armedf_readmem )
   311: 	{ 0x000000, 0x05ffff, MRA16_ROM },
   312: 	{ 0x060000, 0x065fff, MRA16_RAM },
   313: 	{ 0x066000, 0x066fff, MRA16_RAM },
   314: 	{ 0x067000, 0x067fff, MRA16_RAM },
   315: 	{ 0x068000, 0x069fff, MRA16_RAM },
   316: 	{ 0x06a000, 0x06afff, MRA16_RAM },
   317: 	{ 0x06b000, 0x06bfff, MRA16_RAM },
   318: 	{ 0x06c000, 0x06c001, input_port_0_word_r },
   319: 	{ 0x06c002, 0x06c003, input_port_1_word_r },
   320: 	{ 0x06c004, 0x06c005, input_port_2_word_r },
   321: 	{ 0x06c006, 0x06c007, input_port_3_word_r },
   322: 	{ 0x06c008, 0x06c7ff, MRA16_RAM },
   323: MEMORY_END
   324: 
   325: static MEMORY_WRITE16_START( armedf_writemem )
   326: 	{ 0x000000, 0x05ffff, MWA16_ROM },
   327: 	{ 0x060000, 0x060fff, MWA16_RAM, &spriteram16, &spriteram_size },
   328: 	{ 0x061000, 0x065fff, MWA16_RAM },
   329: 	{ 0x066000, 0x066fff, armedf_bg_videoram_w, &armedf_bg_videoram },
   330: 	{ 0x067000, 0x067fff, armedf_fg_videoram_w, &armedf_fg_videoram },
   331: 	{ 0x068000, 0x069fff, armedf_text_videoram_w, &terraf_text_videoram },
   332: 	{ 0x06a000, 0x06afff, paletteram16_xxxxRRRRGGGGBBBB_word_w, &paletteram16 },
   333: 	{ 0x06b000, 0x06bfff, MWA16_RAM },
   334: 	{ 0x06c000, 0x06c7ff, MWA16_RAM },
   335: 	{ 0x06d000, 0x06d001, io_w },
   336: 	{ 0x06d002, 0x06d003, armedf_bg_scrollx_w },
   337: 	{ 0x06d004, 0x06d005, armedf_bg_scrolly_w },
   338: 	{ 0x06d006, 0x06d007, armedf_fg_scrollx_w },
   339: 	{ 0x06d008, 0x06d009, armedf_fg_scrolly_w },
   340: 	{ 0x06d00a, 0x06d00b, sound_command_w },
   341: MEMORY_END
   342: 
   343: 
   344: static MEMORY_READ_START( soundreadmem )
   345: 	{ 0x0000, 0xf7ff, MRA_ROM },
   346: 	{ 0xf800, 0xffff, MRA_RAM },
   347: MEMORY_END
   348: 
   349: static MEMORY_WRITE_START( soundwritemem )
   350: 	{ 0x0000, 0xf7ff, MWA_ROM },
   351: 	{ 0xf800, 0xffff, MWA_RAM },
   352: MEMORY_END
   353: 
   354: static MEMORY_READ_START( cclimbr2_soundreadmem )
   355: 	{ 0x0000, 0xbfff, MRA_ROM },
   356: 	{ 0xc000, 0xffff, MRA_RAM },
   357: MEMORY_END
   358: 
   359: static MEMORY_WRITE_START( cclimbr2_soundwritemem )
   360: 	{ 0x0000, 0xbfff, MWA_ROM },
   361: 	{ 0xc000, 0xffff, MWA_RAM },
   362: MEMORY_END
   363: 
   364: static READ_HANDLER( soundlatch_clear_r )
   365: {
   366: 	soundlatch_clear_w(0,0);
   367: 	return 0;
   368: }
   369: 
   370: static PORT_READ_START( readport )
   371: 	{ 0x4, 0x4, soundlatch_clear_r },
   372: 	{ 0x6, 0x6, soundlatch_r },
   373: PORT_END
   374: 
   375: static PORT_WRITE_START( writeport )
   376: 	{ 0x0, 0x0, YM3812_control_port_0_w },
   377: 	{ 0x1, 0x1, YM3812_write_port_0_w },
   378:   	{ 0x2, 0x2, DAC_0_signed_data_w },
   379:   	{ 0x3, 0x3, DAC_1_signed_data_w },
   380: PORT_END
   381: 
   382: 
   383: /****************
   384:    Dip Switches
   385: *****************/
   386: 
   387: #define NIHON_SINGLE_JOYSTICK(_n_) \ 
   388: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER##_n_) \
   389: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER##_n_) \
   390: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER##_n_) \
   391: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER##_n_) \
   392: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER##_n_) \
   393: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER##_n_) \
   394: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER##_n_) \
   395: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   396: 
   397: #define NIHON_COINS \ 
   398: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) \
   399: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) \
   400: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) \
   401: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) \
   402: 	PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   403: 
   404: #define NIHON_SYSTEM \ 
   405: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
   406: 	PORT_SERVICE( 0x0200, IP_ACTIVE_LOW ) \
   407: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_TILT )     /* Tilt */ \
   408: 	PORT_BIT( 0xf800, IP_ACTIVE_LOW, IPT_UNKNOWN )
   409: 
   410: #define NIHON_COINAGE_A \ 
   411: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) \
   412: 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) ) \
   413: 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) ) \
   414: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) ) \
   415: 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
   416: 
   417: #define NIHON_COINAGE_B \ 
   418: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) \
   419: 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) ) \
   420: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) ) \
   421: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) ) \
   422: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
   423: 
   424: #define NIHON_COINAGE_B_ALT \ 
   425: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) \
   426: 	PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) ) \
   427: 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_3C ) ) \
   428: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_3C ) ) \
   429: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_6C ) )
   430: 
   431: #define NIHON_LIVES \ 
   432: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) \
   433: 	PORT_DIPSETTING(    0x03, "3" ) \
   434: 	PORT_DIPSETTING(    0x02, "4" ) \
   435: 	PORT_DIPSETTING(    0x01, "5" ) \
   436: 	PORT_DIPSETTING(    0x00, "6" )
   437: 
   438: 
   439: INPUT_PORTS_START( legion )
   440: 	PORT_START	/* IN0 */
   441: 	NIHON_SINGLE_JOYSTICK(1)
   442: 	NIHON_COINS
   443: 
   444: 	PORT_START	/* IN1 */
   445: 	NIHON_SINGLE_JOYSTICK(2)
   446: 	NIHON_SYSTEM
   447: 
   448: 	PORT_START	/* DSW0 */
   449: 	NIHON_LIVES
   450: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) )
   451: 	PORT_DIPSETTING(    0x04, "30k then every 100k" )
   452: 	PORT_DIPSETTING(    0x00, "50k only" )
   453: 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
   454: 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
   455: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   456: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
   457: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   458: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   459: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
   460: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   461: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   462: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
   463: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   464: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   465: #if LEGION_HACK 
   466: 	PORT_DIPNAME( 0x80, 0x80, "Allow Invulnerability" )		// see notes
   467: 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
   468: 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
   469: #else 
   470: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   471: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   472: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   473: #endif 
   474: 
   475: 	PORT_START	/* DSW1 */
   476: 	NIHON_COINAGE_A
   477: 	NIHON_COINAGE_B
   478: 	PORT_DIPNAME( 0x10, 0x10, "Coin Slots" )
   479: 	PORT_DIPSETTING(    0x10, "Common" )
   480: 	PORT_DIPSETTING(    0x00, "Individual" )
   481: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Difficulty ) )
   482: 	PORT_DIPSETTING(    0x20, "Easy" )
   483: 	PORT_DIPSETTING(    0x00, "Hard" )
   484: #if LEGION_HACK 
   485: 	PORT_BITX(    0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "P1 Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
   486: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   487: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   488: 	PORT_BITX(    0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_CHEAT, "P2 Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
   489: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   490: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   491: #else 
   492: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
   493: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   494: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   495: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   496: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   497: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   498: #endif 
   499: INPUT_PORTS_END
   500: 
   501: 
   502: INPUT_PORTS_START( terraf )
   503: 	PORT_START	/* IN0 */
   504: 	NIHON_SINGLE_JOYSTICK(1)
   505: 	NIHON_COINS
   506: 
   507: 	PORT_START	/* IN1 */
   508: 	NIHON_SINGLE_JOYSTICK(2)
   509: 	NIHON_SYSTEM
   510: 
   511: 	PORT_START	/* DSW0 */
   512: 	NIHON_LIVES
   513: //	PORT_DIPNAME( 0x04, 0x04, "1st Bonus Life" )
   514: //	PORT_DIPSETTING(    0x04, "20k" )
   515: //	PORT_DIPSETTING(    0x00, "50k" )
   516: //	PORT_DIPNAME( 0x08, 0x08, "2nd Bonus Life" )
   517: //	PORT_DIPSETTING(    0x08, "60k" )
   518: //	PORT_DIPSETTING(    0x00, "90k" )
   519: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
   520: 	PORT_DIPSETTING(    0x0c, "20k then every 60k" )
   521: 	PORT_DIPSETTING(    0x04, "20k then every 90k" )
   522: 	PORT_DIPSETTING(    0x08, "50k then every 60k" )
   523: 	PORT_DIPSETTING(    0x00, "50k then every 90k" )
   524: 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
   525: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   526: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   527: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
   528: 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
   529: 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
   530: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
   531: 	PORT_DIPSETTING(    0xc0, "Easy" )
   532: 	PORT_DIPSETTING(    0x80, "Normal" )
   533: 	PORT_DIPSETTING(    0x40, "Hard" )
   534: 	PORT_DIPSETTING(    0x00, "Hardest" )
   535: 
   536: 	PORT_START	/* DSW1 */
   537: 	NIHON_COINAGE_A
   538: 	NIHON_COINAGE_B
   539: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
   540: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   541: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   542: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
   543: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   544: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   545: 	PORT_DIPNAME( 0xc0, 0x00, "Allow Continue" )
   546: 	PORT_DIPSETTING(    0xc0, DEF_STR( No ) )
   547: 	PORT_DIPSETTING(    0x80, "3 Times" )
   548: 	PORT_DIPSETTING(    0x40, "5 Times" )
   549: 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
   550: INPUT_PORTS_END
   551: 
   552: INPUT_PORTS_START( kodure )
   553: 	PORT_START	/* IN0 */
   554: 	NIHON_SINGLE_JOYSTICK(1)
   555: 	NIHON_COINS
   556: 
   557: 	PORT_START	/* IN1 */
   558: 	NIHON_SINGLE_JOYSTICK(2)
   559: 	NIHON_SYSTEM
   560: 
   561: 	PORT_START	/* DSW0 */
   562: 	NIHON_LIVES
   563: //	PORT_DIPNAME( 0x04, 0x04, "1st Bonus Life" )
   564: //	PORT_DIPSETTING(    0x04, "00k" )
   565: //	PORT_DIPSETTING(    0x00, "50k" )
   566: //	PORT_DIPNAME( 0x08, 0x08, "2nd Bonus Life" )
   567: //	PORT_DIPSETTING(    0x08, "60k" )
   568: //	PORT_DIPSETTING(    0x00, "90k" )
   569: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
   570: 	PORT_DIPSETTING(    0x08, "50k then every 60k" )
   571: 	PORT_DIPSETTING(    0x00, "50k then every 90k" )
   572: 	PORT_DIPSETTING(    0x0c, "Every 60k" )
   573: 	PORT_DIPSETTING(    0x04, "Every 90k" )
   574: 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
   575: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   576: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   577: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
   578: 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
   579: 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
   580: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )
   581: 	PORT_DIPSETTING(    0x40, "Easy" )
   582: 	PORT_DIPSETTING(    0x00, "Hard" )
   583: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   584: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   585: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   586: 
   587: 	PORT_START	/* DSW1 */
   588: 	NIHON_COINAGE_A
   589: 	NIHON_COINAGE_B_ALT
   590: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
   591: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   592: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   593: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
   594: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   595: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   596: 	PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
   597: 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
   598: 	PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
   599: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   600: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   601: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   602: INPUT_PORTS_END
   603: 
   604: INPUT_PORTS_START( cclimbr2 )
   605: 	PORT_START	/* IN0 */
   606: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP     | IPF_8WAY | IPF_PLAYER1 )
   607: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN   | IPF_8WAY | IPF_PLAYER1 )
   608: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT   | IPF_8WAY | IPF_PLAYER1 )
   609: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT  | IPF_8WAY | IPF_PLAYER1 )
   610: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY | IPF_PLAYER1 )
   611: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY | IPF_PLAYER1 )
   612: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY | IPF_PLAYER1 )
   613: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   614: 	NIHON_COINS
   615: 
   616: 	PORT_START	/* IN1 */
   617: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP     | IPF_8WAY | IPF_PLAYER2 )
   618: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN   | IPF_8WAY | IPF_PLAYER2 )
   619: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT   | IPF_8WAY | IPF_PLAYER2 )
   620: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT  | IPF_8WAY | IPF_PLAYER2 )
   621: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY | IPF_PLAYER2 )
   622: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   623: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   624: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   625: 	NIHON_SYSTEM
   626: 
   627: 	PORT_START	/* DSW0 */
   628: 	NIHON_LIVES
   629: //	PORT_DIPNAME( 0x04, 0x04, "1st Bonus Life" )
   630: //	PORT_DIPSETTING(    0x04, "30k" )
   631: //	PORT_DIPSETTING(    0x00, "60k" )
   632: //	PORT_DIPNAME( 0x08, 0x08, "2nd Bonus Life" )
   633: //	PORT_DIPSETTING(    0x08, "70k" )
   634: //	PORT_DIPSETTING(    0x00, "00k" )
   635: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
   636: 	PORT_DIPSETTING(    0x0c, "30K and 100k" )
   637: 	PORT_DIPSETTING(    0x08, "60k and 130k" )
   638: 	PORT_DIPSETTING(    0x04, "30k only" )
   639: 	PORT_DIPSETTING(    0x00, "60k only" )
   640: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
   641: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   642: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   643: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
   644: 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
   645: 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
   646: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )
   647: 	PORT_DIPSETTING(    0x40, "Easy" )
   648: 	PORT_DIPSETTING(    0x00, "Normal" )
   649: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   650: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   651: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   652: 
   653: 	PORT_START	/* DSW1 */
   654: 	NIHON_COINAGE_A
   655: 	NIHON_COINAGE_B
   656: 	PORT_DIPNAME( 0x10, 0x10, "Allow Continue" )
   657: 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
   658: 	PORT_DIPSETTING(    0x10, "3 Times" )
   659: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
   660: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   661: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   662: 	PORT_BITX(    0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Partial Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
   663: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   664: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   665: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   666: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   667: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   668: INPUT_PORTS_END
   669: 
   670: 
   671: INPUT_PORTS_START( armedf )
   672: 	PORT_START	/* IN0 */
   673: 	NIHON_SINGLE_JOYSTICK(1)
   674: 	NIHON_COINS
   675: 
   676: 	PORT_START	/* IN1 */
   677: 	NIHON_SINGLE_JOYSTICK(2)
   678: 	NIHON_SYSTEM
   679: 
   680: 	PORT_START	/* DSW0 */
   681: 	NIHON_LIVES
   682: //	PORT_DIPNAME( 0x04, 0x04, "1st Bonus Life" )
   683: //	PORT_DIPSETTING(    0x04, "20k" )
   684: //	PORT_DIPSETTING(    0x00, "40k" )
   685: //	PORT_DIPNAME( 0x08, 0x08, "2nd Bonus Life" )
   686: //	PORT_DIPSETTING(    0x08, "60k" )
   687: //	PORT_DIPSETTING(    0x00, "80k" )
   688: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
   689: 	PORT_DIPSETTING(    0x0c, "20k then every 60k" )
   690: 	PORT_DIPSETTING(    0x04, "20k then every 80k" )
   691: 	PORT_DIPSETTING(    0x08, "40k then every 60k" )
   692: 	PORT_DIPSETTING(    0x00, "40k then every 80k" )
   693: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
   694: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   695: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   696: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
   697: 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
   698: 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
   699: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
   700: 	PORT_DIPSETTING(    0xc0, "Easy" )
   701: 	PORT_DIPSETTING(    0x80, "Normal" )
   702: 	PORT_DIPSETTING(    0x40, "Hard" )
   703: 	PORT_DIPSETTING(    0x00, "Hardest" )
   704: 
   705: 	PORT_START	/* DSW1 */
   706: 	NIHON_COINAGE_A
   707: 	NIHON_COINAGE_B
   708: 	PORT_DIPNAME( 0x30, 0x00, "Allow Continue" )		// not in the "test mode"
   709: 	PORT_DIPSETTING(    0x30, DEF_STR( No ) )
   710: 	PORT_DIPSETTING(    0x20, "3 Times" )
   711: 	PORT_DIPSETTING(    0x10, "5 Times" )
   712: 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
   713: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )	// not in the "test mode"
   714: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   715: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   716: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   717: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   718: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   719: INPUT_PORTS_END
   720: 
   721: 
   722: 
   723: static struct GfxLayout char_layout =
   724: {
   725: 	8,8,
   726: 	RGN_FRAC(1,1),
   727: 	4,
   728: 	{ 0, 1, 2, 3 },
   729: 	{ 4, 0, 12, 8, 20, 16, 28, 24},
   730: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
   731: 	32*8
   732: };
   733: 
   734: static struct GfxLayout tile_layout =
   735: {
   736: 	16,16,
   737: 	RGN_FRAC(1,1),
   738: 	4,
   739: 	{ 0, 1, 2, 3 },
   740: 	{ 4, 0, 12, 8, 20, 16, 28, 24,
   741: 			32+4, 32+0, 32+12, 32+8, 32+20, 32+16, 32+28, 32+24, },
   742: 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
   743: 			8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
   744: 	128*8
   745: };
   746: 
   747: static struct GfxLayout sprite_layout =
   748: {
   749: 	16,16,
   750: 	RGN_FRAC(1,2),
   751: 	4,
   752: 	{ 0, 1, 2, 3 },
   753: 	{ 4, 0, RGN_FRAC(1,2)+4, RGN_FRAC(1,2)+0, 12, 8, RGN_FRAC(1,2)+12, RGN_FRAC(1,2)+8,
   754: 			20, 16, RGN_FRAC(1,2)+20, RGN_FRAC(1,2)+16, 28, 24, RGN_FRAC(1,2)+28, RGN_FRAC(1,2)+24 },
   755: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
   756: 			8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
   757: 	64*8
   758: };
   759: 
   760: static struct GfxDecodeInfo gfxdecodeinfo[] =
   761: {
   762: 	{ REGION_GFX1, 0, &char_layout,		 0*16,	32 },
   763: 	{ REGION_GFX2, 0, &tile_layout,		64*16,	32 },
   764: 	{ REGION_GFX3, 0, &tile_layout,		96*16,	32 },
   765: 	{ REGION_GFX4, 0, &sprite_layout,	32*16,	32 },
   766: 	{ -1 } /* end of array */
   767: };
   768: 
   769: 
   770: 
   771: static struct YM3812interface ym3812_interface =
   772: {
   773: 	1,				/* 1 chip (no more supported) */
   774: 	4000000,        /* 4 MHz */
   775: 	{ 50 }         /* (not supported) */
   776: };
   777: 
   778: static struct DACinterface dac_interface =
   779: {
   780: 	2,	/* 2 channels */
   781: 	{ 100,100 },
   782: };
   783: 
   784: static struct DACinterface cclimbr2_dac_interface =
   785: {
   786: 	2,	/* 2 channels */
   787: 	{ 40, 40 },
   788: };
   789: 
   790: 
   791: 
   792: static MACHINE_DRIVER_START( terraf )
   793: 
   794: 	/* basic machine hardware */
   795: 	MDRV_CPU_ADD(M68000, 8000000) /* 8 MHz?? */
   796: 	MDRV_CPU_MEMORY(terraf_readmem,terraf_writemem)
   797: 	MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
   798: 
   799: 	MDRV_CPU_ADD(Z80, 3072000)
   800: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.072 MHz???? */
   801: 	MDRV_CPU_MEMORY(soundreadmem,soundwritemem)
   802: 	MDRV_CPU_PORTS(readport,writeport)
   803: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,128)
   804: 
   805: 	MDRV_FRAMES_PER_SECOND(57)
   806: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   807: 
   808: 	/* video hardware */
   809: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_BUFFERS_SPRITERAM)
   810: 	MDRV_SCREEN_SIZE(64*8, 32*8)
   811: 	MDRV_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
   812: 	MDRV_GFXDECODE(gfxdecodeinfo)
   813: 	MDRV_PALETTE_LENGTH(2048)
   814: 
   815: 	MDRV_VIDEO_EOF(armedf)
   816: 	MDRV_VIDEO_START(armedf)
   817: 	MDRV_VIDEO_UPDATE(armedf)
   818: 
   819: 	/* sound hardware */
   820: 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
   821: 	MDRV_SOUND_ADD(DAC, dac_interface)
   822: MACHINE_DRIVER_END
   823: 
   824: static MACHINE_DRIVER_START( kodure )
   825: 
   826: 	/* basic machine hardware */
   827: 	MDRV_CPU_ADD(M68000, 8000000) /* 8 MHz?? */
   828: 	MDRV_CPU_MEMORY(kodure_readmem,kodure_writemem)
   829: 	MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
   830: 
   831: 	MDRV_CPU_ADD(Z80, 3072000)
   832: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.072 MHz???? */
   833: 	MDRV_CPU_MEMORY(soundreadmem,soundwritemem)
   834: 	MDRV_CPU_PORTS(readport,writeport)
   835: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,128)
   836: 
   837: 	MDRV_FRAMES_PER_SECOND(60)
   838: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   839: 
   840: 	/* video hardware */
   841: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_BUFFERS_SPRITERAM)
   842: 	MDRV_SCREEN_SIZE(64*8, 32*8)
   843: 	MDRV_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
   844: 	MDRV_GFXDECODE(gfxdecodeinfo)
   845: 	MDRV_PALETTE_LENGTH(2048)
   846: 
   847: 	MDRV_VIDEO_EOF(armedf)
   848: 	MDRV_VIDEO_START(armedf)
   849: 	MDRV_VIDEO_UPDATE(armedf)
   850: 
   851: 	/* sound hardware */
   852: 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
   853: 	MDRV_SOUND_ADD(DAC, dac_interface)
   854: MACHINE_DRIVER_END
   855: 
   856: static MACHINE_DRIVER_START( armedf )
   857: 
   858: 	/* basic machine hardware */
   859: 	MDRV_CPU_ADD(M68000, 8000000) /* 8 MHz?? */
   860: 	MDRV_CPU_MEMORY(armedf_readmem,armedf_writemem)
   861: 	MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
   862: 
   863: 	MDRV_CPU_ADD(Z80, 3072000)
   864: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.072 MHz???? */
   865: 	MDRV_CPU_MEMORY(soundreadmem,soundwritemem)
   866: 	MDRV_CPU_PORTS(readport,writeport)
   867: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,128)
   868: 
   869: 	MDRV_FRAMES_PER_SECOND(57)
   870: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   871: 
   872: 	/* video hardware */
   873: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_BUFFERS_SPRITERAM)
   874: 	MDRV_SCREEN_SIZE(64*8, 32*8)
   875: 	MDRV_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
   876: 	MDRV_GFXDECODE(gfxdecodeinfo)
   877: 	MDRV_PALETTE_LENGTH(2048)
   878: 
   879: 	MDRV_VIDEO_EOF(armedf)
   880: 	MDRV_VIDEO_START(armedf)
   881: 	MDRV_VIDEO_UPDATE(armedf)
   882: 
   883: 	/* sound hardware */
   884: 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
   885: 	MDRV_SOUND_ADD(DAC, dac_interface)
   886: MACHINE_DRIVER_END
   887: 
   888: static MACHINE_DRIVER_START( cclimbr2 )
   889: 
   890: 	/* basic machine hardware */
   891: 	MDRV_CPU_ADD(M68000, 8000000) /* 8 MHz?? */
   892: 	MDRV_CPU_MEMORY(cclimbr2_readmem,cclimbr2_writemem)
   893: 	MDRV_CPU_VBLANK_INT(irq2_line_hold,1)
   894: 
   895: 	MDRV_CPU_ADD(Z80, 3072000)
   896: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.072 MHz???? */
   897: 	MDRV_CPU_MEMORY(cclimbr2_soundreadmem,cclimbr2_soundwritemem)
   898: 	MDRV_CPU_PORTS(readport,writeport)
   899: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,128)
   900: 
   901: 	MDRV_FRAMES_PER_SECOND(60)
   902: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   903: 
   904: 	/* video hardware */
   905: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_BUFFERS_SPRITERAM)
   906: 	MDRV_SCREEN_SIZE(64*8, 32*8)
   907: 	MDRV_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
   908: 	MDRV_GFXDECODE(gfxdecodeinfo)
   909: 	MDRV_PALETTE_LENGTH(2048)
   910: 
   911: 	MDRV_VIDEO_EOF(armedf)
   912: 	MDRV_VIDEO_START(armedf)
   913: 	MDRV_VIDEO_UPDATE(armedf)
   914: 
   915: 	/* sound hardware */
   916: 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
   917: 	MDRV_SOUND_ADD(DAC, cclimbr2_dac_interface)
   918: MACHINE_DRIVER_END
   919: 
   920: 
   921: ROM_START( legion )
   922: 	ROM_REGION( 0x50000, REGION_CPU1, 0 )	/* 64K*8 for 68000 code */
   923: 	ROM_LOAD16_BYTE( "lg1.bin", 0x000001, 0x010000, CRC(c4aeb724) SHA1(b4c0383f3b1fa6b1d5bdab0f3a5293c89a82a474) )
   924: 	ROM_LOAD16_BYTE( "lg3.bin", 0x000000, 0x010000, CRC(777e4935) SHA1(225766940059b4c12e69332ea77eb618dbd1467b) )
   925: 	ROM_LOAD16_BYTE( "legion.1b", 0x020001, 0x010000, CRC(c306660a) SHA1(31c6b868ba07677b5110c577335873354bff596f) ) // lg2
   926: 	ROM_LOAD16_BYTE( "legion.1d", 0x020000, 0x010000, CRC(c2e45e1e) SHA1(95cc359145b1b03123262891feed358407ba105a) ) // lg4
   927: 
   928: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Z80 code (sound) */
   929: 	ROM_LOAD( "legion.1h", 0x00000, 0x04000, CRC(2ca4f7f0) SHA1(7cf997af9dd74ced9d28c047069ccfb67d72e257) ) // lg9
   930: 
   931: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
   932: 	ROM_LOAD( "lg8.bin", 0x00000, 0x08000, CRC(e0596570) SHA1(68ddc950efc55a16e6abc699e3bad18ea19d579f) )
   933: 
   934: 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
   935: 	ROM_LOAD( "legion.1e", 0x00000, 0x10000, CRC(a9d70faf) SHA1(8b8b60ae49c55e931d6838e863463f6b2bf7adb0) ) // lg5
   936: 	ROM_LOAD( "legion.1f", 0x10000, 0x08000, CRC(f018313b) SHA1(860bc9937202dc3a40c9fa7caad11c2c2aa19f5c) ) // lg6
   937: 
   938: 	ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
   939: 	ROM_LOAD( "legion.1l", 0x00000, 0x10000, CRC(29b8adaa) SHA1(10338ebe7324960683de1f796dd311ed662e42b4) ) // lg13
   940: 
   941: 	ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE )
   942: 	ROM_LOAD( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) // lg12
   943: 	ROM_LOAD( "legion.1j", 0x010000, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) // lg11
   944: 
   945: 	ROM_REGION( 0x4000, REGION_GFX5, 0 )	/* data for mcu/blitter */
   946: 	ROM_LOAD ( "lg7.bin", 0x0000, 0x4000, CRC(533e2b58) SHA1(a13ea4a530038760ffa87713903c59a932452717) )
   947: 
   948: 	ROM_REGION( 0x8000, REGION_USER1, 0 )	/* ? */
   949: 	ROM_LOAD( "legion.1i",        0x0000, 0x8000, CRC(79f4a827) SHA1(25e4c1b5b8466627244b7226310e67e4261333b6) ) // lg10
   950: ROM_END
   951: 
   952: ROM_START( legiono )
   953: 	ROM_REGION( 0x50000, REGION_CPU1, 0 )	/* 64K*8 for 68000 code */
   954: 	ROM_LOAD16_BYTE( "legion.1a", 0x000001, 0x010000, CRC(8c0cda1d) SHA1(14b93d4fb4381ebc6a4ccdb480089bf69c6f474b) )
   955: 	ROM_LOAD16_BYTE( "legion.1c", 0x000000, 0x010000, CRC(21226660) SHA1(ee48812d6ec9d4dccc58684164916f91b71aabf2) )
   956: 	ROM_LOAD16_BYTE( "legion.1b", 0x020001, 0x010000, CRC(c306660a) SHA1(31c6b868ba07677b5110c577335873354bff596f) )
   957: 	ROM_LOAD16_BYTE( "legion.1d", 0x020000, 0x010000, CRC(c2e45e1e) SHA1(95cc359145b1b03123262891feed358407ba105a) )
   958: 
   959: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Z80 code (sound) */
   960: 	ROM_LOAD( "legion.1h", 0x00000, 0x04000, CRC(2ca4f7f0) SHA1(7cf997af9dd74ced9d28c047069ccfb67d72e257) )
   961: 
   962: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
   963: 	ROM_LOAD( "legion.1g", 0x00000, 0x08000, CRC(c50b0125) SHA1(83b5e9707152d97777fb65fa8820ba34ec2fac8d) )
   964: 
   965: 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
   966: 	ROM_LOAD( "legion.1e", 0x00000, 0x10000, CRC(a9d70faf) SHA1(8b8b60ae49c55e931d6838e863463f6b2bf7adb0) )
   967: 	ROM_LOAD( "legion.1f", 0x10000, 0x08000, CRC(f018313b) SHA1(860bc9937202dc3a40c9fa7caad11c2c2aa19f5c) )
   968: 
   969: 	ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
   970: 	ROM_LOAD( "legion.1l", 0x00000, 0x10000, CRC(29b8adaa) SHA1(10338ebe7324960683de1f796dd311ed662e42b4) )
   971: 
   972: 	ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE )
   973: 	ROM_LOAD( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) )
   974: 	ROM_LOAD( "legion.1j", 0x010000, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) )
   975: 
   976: 	/* should lg7.bin be loaded here too? The ROM wasn't included in this set */
   977: 
   978: 	ROM_REGION( 0x8000, REGION_USER1, 0 )	/* ? */
   979: 	ROM_LOAD( "legion.1i",        0x0000, 0x8000, CRC(79f4a827) SHA1(25e4c1b5b8466627244b7226310e67e4261333b6) )
   980: ROM_END
   981: 
   982: ROM_START( terraf )
   983: 	ROM_REGION( 0x50000, REGION_CPU1, 0 )	/* 64K*8 for 68000 code */
   984: 	ROM_LOAD16_BYTE( "terrafor.014", 0x00000, 0x10000, CRC(8e5f557f) SHA1(3462a58146c3f33bf8686adbd2ead25dae3804a8) )
   985: 	ROM_LOAD16_BYTE( "terrafor.011", 0x00001, 0x10000, CRC(5320162a) SHA1(eaffafcaf146cdddb03f40f92ce23dfd096eb89e) )
   986: 	ROM_LOAD16_BYTE( "terrafor.013", 0x20000, 0x10000, CRC(a86951e0) SHA1(804cc6f143993f5a9d5f3798e971d7abfe94c3a8) )
   987: 	ROM_LOAD16_BYTE( "terrafor.010", 0x20001, 0x10000, CRC(58b5f43b) SHA1(9df77235c0b7ac5af4258c04bd90d0a86ccc86b0) )
   988: 	ROM_LOAD16_BYTE( "terrafor.012", 0x40000, 0x08000, CRC(4f0e1d76) SHA1(b8636acde7547358663b94bdc8d49b5cc6b596eb) )
   989: 	ROM_LOAD16_BYTE( "terrafor.009", 0x40001, 0x08000, CRC(d1014280) SHA1(5ee8d71d77b31b25cce2bf1953c0a5166313a857) )
   990: 
   991: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Z80 code (sound) */
   992: 	ROM_LOAD( "terrafor.001", 0x00000, 0x10000, CRC(eb6b4138) SHA1(04c53bf46d87a156d3fad86f051985d0df79bd20) )
   993: 
   994: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
   995: 	ROM_LOAD( "terrafor.008", 0x00000, 0x08000, CRC(bc6f7cbc) SHA1(20b8a34de4bfa0c2fdcd2f7743a0ab35141f4bf9) ) /* characters */
   996: 
   997: 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
   998: 	ROM_LOAD( "terrafor.006", 0x00000, 0x10000, CRC(25d23dfd) SHA1(da32895c1aca403209b7fb181fa4fa23a8e74d32) ) /* foreground tiles */
   999: 	ROM_LOAD( "terrafor.007", 0x10000, 0x10000, CRC(b9b0fe27) SHA1(983c48239ba1524b517f89f281f2b70564bea1e9) )
  1000: 
  1001: 	ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
  1002: 	ROM_LOAD( "terrafor.004", 0x00000, 0x10000, CRC(2144d8e0) SHA1(ed89da11abf3d79753b478603009970c2600ab60) ) /* background tiles */
  1003: 	ROM_LOAD( "terrafor.005", 0x10000, 0x10000, CRC(744f5c9e) SHA1(696223a087bb575c7cfaba11e682b221ada461e4) )
  1004: 
  1005: 	ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE )
  1006: 	ROM_LOAD( "terrafor.003", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */
  1007: 	ROM_LOAD( "terrafor.002", 0x10000, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) )
  1008: 
  1009: 	ROM_REGION( 0x4000, REGION_GFX5, 0 )	/* data for mcu/blitter */
  1010: 	ROM_LOAD( "tf.10",        0x0000, 0x4000, CRC(ac705812) SHA1(65be46ee959d8478cb6dffb25e61f7742276997b) )
  1011: 
  1012: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
  1013: 	ROM_LOAD( "tf.clr",       0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) )	/* ??? */
  1014: ROM_END
  1015: 
  1016: ROM_START( terrafu )
  1017: 	ROM_REGION( 0x50000, REGION_CPU1, 0 )	/* 64K*8 for 68000 code */
  1018: 	ROM_LOAD16_BYTE( "tf.8",         0x00000, 0x10000, CRC(fea6dd64) SHA1(682eae338ce14808f134897f594fae1c69e75a1a) )
  1019: 	ROM_LOAD16_BYTE( "tf.3",         0x00001, 0x10000, CRC(02f9d05a) SHA1(88985373bc3cffbc838e0b701ecd732a417975a1) )
  1020: 	ROM_LOAD16_BYTE( "tf.7",         0x20000, 0x10000, CRC(fde8de7e) SHA1(6b0d27ec49c8c0609c110ad97938bec8c077ad18) )
  1021: 	ROM_LOAD16_BYTE( "tf.2",         0x20001, 0x10000, CRC(db987414) SHA1(0a1734794c626cf9083d7854c9000c5daadfc3fd) )
  1022: 	ROM_LOAD16_BYTE( "tf.6",         0x40000, 0x08000, CRC(b91e9ba3) SHA1(33e5272d1691859a2bb1f340eb4bdfdd5d73a5d4) )
  1023: 	ROM_LOAD16_BYTE( "tf.1",         0x40001, 0x08000, CRC(d6e22375) SHA1(c84fc19700b65ee36b0c7d75cd7c97f86c7f719d) )
  1024: 
  1025: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Z80 code (sound) */
  1026: 	ROM_LOAD( "terrafor.001", 0x00000, 0x10000, CRC(eb6b4138) SHA1(04c53bf46d87a156d3fad86f051985d0df79bd20) )
  1027: 
  1028: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1029: 	ROM_LOAD( "terrafor.008", 0x00000, 0x08000, CRC(bc6f7cbc) SHA1(20b8a34de4bfa0c2fdcd2f7743a0ab35141f4bf9) ) /* characters */
  1030: 
  1031: 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
  1032: 	ROM_LOAD( "terrafor.006", 0x00000, 0x10000, CRC(25d23dfd) SHA1(da32895c1aca403209b7fb181fa4fa23a8e74d32) ) /* foreground tiles */
  1033: 	ROM_LOAD( "terrafor.007", 0x10000, 0x10000, CRC(b9b0fe27) SHA1(983c48239ba1524b517f89f281f2b70564bea1e9) )
  1034: 
  1035: 	ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
  1036: 	ROM_LOAD( "terrafor.004", 0x00000, 0x10000, CRC(2144d8e0) SHA1(ed89da11abf3d79753b478603009970c2600ab60) ) /* background tiles */
  1037: 	ROM_LOAD( "terrafor.005", 0x10000, 0x10000, CRC(744f5c9e) SHA1(696223a087bb575c7cfaba11e682b221ada461e4) )
  1038: 
  1039: 	ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE )
  1040: 	ROM_LOAD( "terrafor.003", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */
  1041: 	ROM_LOAD( "terrafor.002", 0x10000, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) )
  1042: 
  1043: 	ROM_REGION( 0x4000, REGION_GFX5, 0 )	/* data for mcu/blitter */
  1044: 	ROM_LOAD( "tf.10",        0x0000, 0x4000, CRC(ac705812) SHA1(65be46ee959d8478cb6dffb25e61f7742276997b) )
  1045: 
  1046: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
  1047: 	ROM_LOAD( "tf.clr",       0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) )	/* ??? */
  1048: ROM_END
  1049: 
  1050: ROM_START( kodure )
  1051: 	ROM_REGION( 0x60000, REGION_CPU1, 0 )	/* 64K*8 for 68000 code */
  1052: 	ROM_LOAD16_BYTE( "kodure8.6e", 0x00000, 0x10000, CRC(6bbfb1e6) SHA1(ffc8f835e28ff5f5b11f826b74ac2712c3018178) )
  1053: 	ROM_LOAD16_BYTE( "kodure3.6h", 0x00001, 0x10000, CRC(f9178ec8) SHA1(68085b6030f4d1f89931263df68635b3b276e9f0) )
  1054: 	ROM_LOAD16_BYTE( "kodure7.5e", 0x20000, 0x10000, CRC(a7ee09bb) SHA1(70ea2ab09b44e9188eb9500d9663d11e521caa1a) )
  1055: 	ROM_LOAD16_BYTE( "kodure2.5h", 0x20001, 0x10000, CRC(236d820f) SHA1(e8784c0bbfe22e63a442a8eac18247b740f437a8) )
  1056: 	ROM_LOAD16_BYTE( "kodure6.3e", 0x40000, 0x10000, CRC(9120e728) SHA1(af2ce368d66d01cbad136ae119b31b1701ad0595) )
  1057: 	ROM_LOAD16_BYTE( "kodure1.3h", 0x40001, 0x10000, CRC(345fe7a5) SHA1(56ad809cf4a609447cce3e0181ff86e3f0e8966c) )
  1058: 
  1059: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Z80 code (sound) */
  1060: 	ROM_LOAD( "kodure11.17k", 0x00000, 0x10000, CRC(dba51e2d) SHA1(49e799d39d298cd3e01602ae5a2d123dfbfa9134) )
  1061: 
  1062: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1063: 	ROM_LOAD( "kodure9.11e", 0x00000, 0x08000, CRC(e041356e) SHA1(3e4c8564e7a8c940bbe72db11759903aa295287f) )	/* characters */
  1064: 
  1065: 	ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE )
  1066: 	ROM_LOAD( "kodure5.15h", 0x00000, 0x20000, CRC(0b510258) SHA1(e7ec89faa574b755605ddb67d6c908a9f5f2d6ac) )	/* foreground tiles */
  1067: 	ROM_LOAD( "kodure4.14h", 0x20000, 0x10000, CRC(fb8e13e6) SHA1(f2eafcf6d7362dc62e808f582a7bd2970e5e1ad1) )
  1068: 
  1069: 	ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
  1070: 	ROM_LOAD( "kodure14.8a", 0x00000, 0x10000, CRC(94a9c3d0) SHA1(7a5d810ea370d158b2099c17f4d656fbd3deeac8) )	/* background tiles */
  1071: 
  1072: 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE )
  1073: 	ROM_LOAD( "kodure12.8d", 0x00000, 0x20000, CRC(15f4021d) SHA1(b2ba6fda1a7bdaae97de4b0157b9b656b4385e08) )	/* sprites */
  1074: 	ROM_LOAD( "kodure13.9d", 0x20000, 0x20000, CRC(b3b6c753) SHA1(9ad061cac9558320b5cfd1ac1ac8d7f1788270cc) )
  1075: 
  1076: 	ROM_REGION( 0x4000, REGION_GFX5, 0 )	/* data for mcu/blitter */
  1077: 	ROM_LOAD( "kodure10.11c", 0x0000, 0x4000, CRC(f48be21d) SHA1(5d6db049f30cab98f672814a86a06609c1fa8fb4) )
  1078: 
  1079: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
  1080: 	ROM_LOAD( "tf.11j", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) )	/* ??? */
  1081: ROM_END
  1082: 
  1083: ROM_START( cclimbr2 )
  1084: 	ROM_REGION( 0x60000, REGION_CPU1, 0 )	/* 64K*8 for 68000 code */
  1085: 	ROM_LOAD16_BYTE( "4.bin", 0x00000, 0x10000, CRC(7922ea14) SHA1(4395c1dfdeeba8173cce23b5453185c3ff976980) )
  1086: 	ROM_LOAD16_BYTE( "1.bin", 0x00001, 0x10000, CRC(2ac7ed67) SHA1(5e9c3ca4f5b259ed7b08db8353be7d36ac947578) )
  1087: 	ROM_LOAD16_BYTE( "6.bin", 0x20000, 0x10000, CRC(7905c992) SHA1(5e3ddb3b8127476b763578c3717ffe85aa6b342a) )
  1088: 	ROM_LOAD16_BYTE( "5.bin", 0x20001, 0x10000, CRC(47be6c1e) SHA1(cbd928458087199e63020956c5b61925c3f055f4) )
  1089: 	ROM_LOAD16_BYTE( "3.bin", 0x40000, 0x10000, CRC(1fb110d6) SHA1(a478096b4b075ff655d079e43151d6b8375f0caa) )
  1090: 	ROM_LOAD16_BYTE( "2.bin", 0x40001, 0x10000, CRC(0024c15b) SHA1(0cd69a24139e878c09d4de37e4d102851765168f) )
  1091: 
  1092: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Z80 code (sound) */
  1093: 	ROM_LOAD( "11.bin", 0x00000, 0x04000, CRC(fe0175be) SHA1(5c50fa07d8fa61d58a825bbc2cc5a7b85ff3e42e) )
  1094: 	ROM_LOAD( "12.bin", 0x04000, 0x08000, CRC(5ddf18f2) SHA1(b66da5ad400d00b07160986e4841a309a3572bd1) )
  1095: 
  1096: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1097: 	ROM_LOAD( "10.bin", 0x00000, 0x08000, CRC(7f475266) SHA1(73d544731fcfd7266bca451880120c555d19ea5d) ) /* characters */
  1098: 
  1099: 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
  1100: 	ROM_LOAD( "7.bin",  0x00000, 0x10000, CRC(cbdd3906) SHA1(0525599a5981f1e25ec6faf008e547da7a9ee2cb) ) /* foreground tiles */
  1101: 	ROM_LOAD( "8.bin",  0x10000, 0x10000, CRC(b2a613c0) SHA1(1d92b85a0dd4b7e533677c454ec23359867defda) )
  1102: 
  1103: 	ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
  1104: 	ROM_LOAD( "17.bin", 0x00000, 0x10000, CRC(e24bb2d7) SHA1(8f4b8410b77a50ae735d72f2f37e63784ebc10d9) ) /* background tiles */
  1105: 	ROM_LOAD( "18.bin", 0x10000, 0x10000, CRC(56834554) SHA1(6d579c32fb57eb4eddc062cb2cc78b546f6607b2) )
  1106: 
  1107: 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE )
  1108: 	ROM_LOAD( "15.bin", 0x00000, 0x10000, CRC(4bf838be) SHA1(6b1d7448caf406e47268a1276225bb0619b80cc9) ) /* sprites */
  1109: 	ROM_LOAD( "16.bin", 0x10000, 0x10000, CRC(21a265c5) SHA1(a2b3a1e5aa545030d933c0f058f4f9a18e1af1c9) )
  1110: 	ROM_LOAD( "13.bin", 0x20000, 0x10000, CRC(6b6ec999) SHA1(7749ce435f497732bd1b6958974cd95e960fc9fe) )
  1111: 	ROM_LOAD( "14.bin", 0x30000, 0x10000, CRC(f426a4ad) SHA1(facccb21ca73c560d3a38e05e677782516d5b0c0) )
  1112: 
  1113: 	ROM_REGION( 0x4000, REGION_GFX5, 0 )	/* data for mcu/blitter */
  1114: 	ROM_LOAD( "9.bin",  0x0000, 0x4000, CRC(740d260f) SHA1(5b4487930c7a1fb0a796aec2243bec631b1b5104) )
  1115: ROM_END
  1116: 
  1117: ROM_START( armedf )
  1118: 	ROM_REGION( 0x60000, REGION_CPU1, 0 )	/* 68000 code */
  1119: 	ROM_LOAD16_BYTE( "af_06.rom", 0x00000, 0x10000, CRC(c5326603) SHA1(135a8d96d792cf9b55e39e21160ee419be76d28a) )
  1120: 	ROM_LOAD16_BYTE( "af_01.rom", 0x00001, 0x10000, CRC(458e9542) SHA1(22e4281eaac6b9b04af324cc96b5f3e4d1cefe43) )
  1121: 	ROM_LOAD16_BYTE( "af_07.rom", 0x20000, 0x10000, CRC(cc8517f5) SHA1(93e4d3707a48551af89cadd0e016ddb65285a005) )
  1122: 	ROM_LOAD16_BYTE( "af_02.rom", 0x20001, 0x10000, CRC(214ef220) SHA1(0c32349afc31fbcd825695679540a024f1e1acb2) )
  1123: 	ROM_LOAD16_BYTE( "af_08.rom", 0x40000, 0x10000, CRC(d1d43600) SHA1(1a473b4958a02a33c0a02e7e72a70a9ee0c68c50) )
  1124: 	ROM_LOAD16_BYTE( "af_03.rom", 0x40001, 0x10000, CRC(bbe1fe2d) SHA1(f47be23c7564b106d636d49d5f1da47daecd31df) )
  1125: 
  1126: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Z80 code (sound) */
  1127: 	ROM_LOAD( "af_10.rom", 0x00000, 0x10000, CRC(c5eacb87) SHA1(33af84b48fbda26729975b02cfb70f23c0bce6a2) )
  1128: 
  1129: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1130: 	ROM_LOAD( "af_09.rom", 0x00000, 0x08000, CRC(7025e92d) SHA1(e590682092c25bbfb674afeccbfc0e613c51d188) ) /* characters */
  1131: 
  1132: 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
  1133: 	ROM_LOAD( "af_04.rom", 0x00000, 0x10000, CRC(44d3af4f) SHA1(0c2cb54357c314e43cec6f959fe9d4a2c8bc8834) ) /* foreground tiles */
  1134: 	ROM_LOAD( "af_05.rom", 0x10000, 0x10000, CRC(92076cab) SHA1(f47424817373a6735da2b2049b53da5b38178cec) )
  1135: 
  1136: 	ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
  1137: 	ROM_LOAD( "af_14.rom", 0x00000, 0x10000, CRC(8c5dc5a7) SHA1(758140ddb9e60fb3950fe58bf53c7aea769a1a94) ) /* background tiles */
  1138: 	ROM_LOAD( "af_13.rom", 0x10000, 0x10000, CRC(136a58a3) SHA1(5481e3ce404881a0470f8740f0de6e42283bedf2) )
  1139: 
  1140: 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE )
  1141: 	ROM_LOAD( "af_11.rom", 0x00000, 0x20000, CRC(b46c473c) SHA1(d8573225e2d8b133b3bdd4fa5a12d445c71d5e0e) ) /* sprites */
  1142: 	ROM_LOAD( "af_12.rom", 0x20000, 0x20000, CRC(23cb6bfe) SHA1(34cb013827206bea71f5336b308ba92bee688506) )
  1143: ROM_END
  1144: 
  1145: 
  1146: DRIVER_INIT( terraf )
  1147: {
  1148: 	armedf_setgfxtype(0);
  1149: }
  1150: 
  1151: DRIVER_INIT( armedf )
  1152: {
  1153: 	armedf_setgfxtype(1);
  1154: }
  1155: 
  1156: DRIVER_INIT( kodure )
  1157: {
  1158: 	armedf_setgfxtype(2);
  1159: }
  1160: 
  1161: DRIVER_INIT( legion )
  1162: {
  1163: #if LEGION_HACK 
  1164: 	/* This is a hack to allow you to use the extra features
  1165:          of 3 of the "Unused" Dip Switches (see notes above). */
  1166: 	data16_t *RAM = (data16_t *)memory_region(REGION_CPU1);
  1167: 	RAM[0x0001d6/2] = 0x0001;
  1168: 	/* To avoid checksum error */
  1169: 	RAM[0x000488/2] = 0x4e71;
  1170: #endif 
  1171: 
  1172: 	armedf_setgfxtype(3);
  1173: }
  1174: 
  1175: DRIVER_INIT( legiono )
  1176: {
  1177: #if LEGION_HACK 
  1178: 	/* This is a hack to allow you to use the extra features
  1179:          of 3 of the "Unused" Dip Switches (see notes above). */
  1180: 	data16_t *RAM = (data16_t *)memory_region(REGION_CPU1);
  1181: 	RAM[0x0001d6/2] = 0x0001;
  1182: 	/* No need to patch the checksum routine (see notes) ! */
  1183: #endif 
  1184: 
  1185: 	armedf_setgfxtype(3);
  1186: }
  1187: 
  1188: DRIVER_INIT( cclimbr2 )
  1189: {
  1190: 	armedf_setgfxtype(4);
  1191: }
  1192: 
  1193: 
  1194: /*     YEAR, NAME,   PARENT,   MACHINE,  INPUT,    INIT,     MONITOR, COMPANY,     FULLNAME, FLAGS */
  1195: GAMEX( 1987, legion,   0,      cclimbr2, legion,   legion,   ROT270, "Nichibutsu", "Legion (ver 2.03)",  GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
  1196: GAMEX( 1987, legiono,  legion, cclimbr2, legion,   legiono,  ROT270, "Nichibutsu", "Legion (ver 1.05)",  GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
  1197: GAMEX( 1987, terraf,   0,      terraf,   terraf,   terraf,   ROT0,   "Nichibutsu", "Terra Force",  GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
  1198: GAMEX( 1987, terrafu,  terraf, terraf,   terraf,   terraf,   ROT0,   "Nichibutsu USA", "Terra Force (US)",  GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
  1199: GAMEX( 1987, kodure,   0,      kodure,   kodure,   kodure,   ROT0,   "Nichibutsu", "Kodure Ookami (Japan)",  GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
  1200: GAME( 1988, cclimbr2, 0,      cclimbr2, cclimbr2, cclimbr2, ROT0,   "Nichibutsu", "Crazy Climber 2 (Japan)")
  1201: GAME( 1988, armedf,   0,      armedf,   armedf,   armedf,   ROT270, "Nichibutsu", "Armed Formation")
  1202: 




powered by ggdb.com this page took approx. 0.008s