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

: : : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: Rainbow Islands  (c) Taito 1987   + Jumping
     4: ===============
     5: 
     6: driver by Mike Coates
     7: 
     8: c-chip enhanced by Robert Gallagher, with many thanks to Tormod Tjaberg for providing
     9: his PCB for dumping/collecting the c-chip data from Rainbow Islands Extra.
    10: 
    11:                             ***
    12: 
    13: Notes on Rainbow Islands romsets by Robert Gallagher
    14: ----------------------------------------------------
    15: 
    16: There are 3 code segments that differ between Rainbow Islands old and new
    17: version. They are all related to secret rooms;
    18: 
    19:    The first code segment is entered at the start of a secret room.
    20: 
    21: 
    22:          rainbowo                             rainbow
    23:    $55EE lea    $C01308,a0              $55EE lea    $C00B08,a0
    24:          move.w #$13,d0                       bsr    $561C
    25:    $55F8 move.w #$15fa,2(a0)                  lea    $C00D08,a0
    26:          move.w #$15fa,6(a0)                  bsr    $561C
    27:          move.w #$15fa,$102(a0)               lea    $C00F08,a0
    28:          move.w #$15fa,$106(a0)               bsr    $561C
    29:          adda.l #8,a0                         lea    $C01108,a0
    30:          dbf    d0,$55F8                      bsr    $561C
    31:          rts                            $561C lea    $C01308,a0
    32:                                               move.w #$13,d0
    33:                                               ...
    34: 
    35:    The next code segment fixes the bonus related to entering ALL 10 Secret rooms.
    36:    In Rainbow Islands, If you enter the last secret room, you receive a 10,000,000
    37:    point bonus. If you have entered all 10 secret rooms, you receive a 50,000,000 point
    38:    bonus. (BUG THAT'S NOT A BUG - the games says 1,000,000 and 5,000,000, but the code gives
    39:    you 10mil and 50mil)
    40:    The counter is in $10D05C.b, the (rainbowo) romset never increments this counter, making
    41:    it impossible to achieve.
    42: 
    43:    $56A2 cmpi.w #$31,$11c6(a5)          $56CA addi.b #1,$105C(a5)   ;increment the secret room count
    44:          bne                                  cmpi.w #$31,$11c6(a5) ;is it round 49 (50)?
    45:                                               bne
    46: 
    47:    The final change fixes a Secret room bug that was noted by Stefan Jokisch.
    48:    In (rainbowo) it is possible to scroll the screen inside a secret room.
    49:    You can walk right off the top of the screen, and scroll the 'next' secret
    50:    room into view. This is fixed in (rainbow) with the following code;
    51: 
    52:    $5F06 move.b #1,d0                   $5F34 tst.b  $11c4(a5)  ; in secret room?
    53:          jsr    $1736                         bne    $600A      ; exit this routine, which is getting
    54:                                               move.b #1,d0      ; the room height from c-chip bank 1
    55:                                               jsr    $1736      ; which we don't need
    56:                                               ...
    57:                                         $600A rts
    58: 
    59:    The (jumping) bootleg is based on the (rainbowo) roms.
    60: 
    61: Notes on Rainbow Islands Extra by Robert Gallagher
    62: --------------------------------------------------
    63:    In Rainbow Islands Extra, there are more changes than just the differing enemies/rounds.
    64: 
    65:    In RIE if you end a level with the same 2 digits in your score as xxxx220, you will receive
    66:    items at the "GOAL IN" worth 3000 points each (instead of 500pts) as:
    67: 
    68:    00 = french fries
    69:    11 = neopolaton ice cream
    70:    22 = creme caramel
    71:    33 = hamburgers
    72:    44 = cake slice
    73:    55 = iced bun
    74:    66 = mug of beer
    75:    77 = hotdog on a stick
    76:    88 = vanilla ice cream
    77:    99 = blue popsicle
    78: 
    79:    There are two other possibilities:
    80:    moneybags - worth 500pts if you don't have double digits, or worth 3000 points if you do (any)
    81:                if you got the 'Money Coin' powerup in a secret room.
    82:    hearts - worth 10,000 each, this is based on a timer in 0x0010DBA4 && 128 == 0, making this a
    83:             1 in 128 chance.
    84: 
    85: 
    86:    The items received in 'Secret Room' are not the same as Rainbow Islands. They are based on
    87:    the LAST diamond you collect in the round before entering. That is; you must still collect
    88:    the 7 diamonds in order, Red, Orange, Yellow... to enter a secret room, however, AFTER completing
    89:    this, you can still collect diamonds. If you collect (last), you get:
    90: 
    91:    Red - Book of Continues - this allows you to continue after world 7
    92:    Orange - Money Bag - this will make a 100,000pt Money bag fall from the sky on every round.
    93:             it will also make all fruit at 'GOAL IN' into money bags.
    94:    Yellow - Key - when taken, this will show the Secret room code completely for about 8 seconds.
    95:    Green - Protection Fairy, gives you the protection fairy for about 8 seconds at the beginning
    96:            of each round, or after you die. (NOT perm. like RI, code at $C528 in RIE handles this,
    97:            and is distinctly different from the code at $BC8C in RI)
    98:    Blue - Yellow Potion, gives you perm. fast rainbow power
    99:    Indigo - Red Potion, gives you perm. 2X rainbow power
   100:    Violet - Shoes, gives you perm. fast feet.
   101: 
   102:    Unlike the secret rooms in Rainbow Islands, in Rainbow Islands Extra, only 2 letters of the code
   103:    for that room are revealed. The first letter, and the second letter will corespond to the last
   104:    diamond collected before entering the secret room. (You can see this with the coloured hearts
   105:    that remain). The idea is that you must enter the secret room 7X to get the full code, making the
   106:    game harder. Otherwise, collecting a yellow diamond will give you the 'key' to the room, and reveal
   107:    the code for about 5 seconds.
   108: 
   109:    In the secret rooms of RIE there is an added bonus; If you exit the room without collecting the
   110:    power-up item, you will receive a 1,000,000pt bonus. The text in the room in Japanese reads:
   111:    "KYOUKA-SOUBI WO TORAZUNI DERUTO 1000000 TEN HAIRUYO !!"
   112: 
   113:    If you enter all 10 secret rooms in Rainbow Islands Extra, and do NOT collect the powerups in
   114:    _any_ of the rooms, you will receive "SPECIAL BIG BONUS !! 50000000 PTS."
   115: 
   116:    If you enter all 10 secret rooms, and do NOT collect the bubble-rainbow power in secret room 10,
   117:    (though you may collect them in others) you will receive "SPECIAL BIG BONUS !! 10000000 PTS."
   118: 
   119:    If you collect the bubble-rainbow power in secret room 10, you will receive "ALL ROOM CLEAR
   120:    5000000" bonus instead.
   121: 
   122:    In Rainbow Islands Extra (as in Rainbow Islands), if you collect 2 of any colour 'cane'...
   123:      (canes are collected for collecting 7 of one colour of diamond, WITHOUT 'complete' happening, or
   124:      if 'complete', you must collect 7 of the same colour diamond within one round. (the diamond
   125:      counters are reset to one at the beginning of each round once 'complete' has occured).
   126:    ...you will receive a 'Potion' (not Rainbow powerup potions)
   127:    of the appropriate colour. Once collected, you will receive a
   128:    100,000pts. large fruit item at 'GOAL IN' for that round. Although the code for this is present in
   129:    Rainbow Islands, it is rarely seen. This is not a result of poor emulation, but rather poor coding;
   130:    In both RI and RIE, there are tables that indicate which special item is deserved, and what actions
   131:    are required to earn them. (the number of times the event must occur).
   132:    In both RI and RIE, you receive a special item for every 3rd enemy you kill as:
   133:    1. Shoes
   134:    2. Red Potion
   135:    3. Yellow Potion
   136:    4. Red Potion
   137:    5. Crystal Ball
   138:    6. Yellow star
   139:    7. Red Star
   140:    8. - Special item - depending on what you deserve.
   141: 
   142:    The Special item table can be found at $ADC0 in RI, and $B5E8 in RIE. This table is checked in
   143:    linear fashion until a special item requirement is met.
   144:    items 24/25/26 are: Blue Ring/Violet Ring/Red Ring.
   145:    To get these items you collect: Red Potion/Yellow Potion/Shoes. (note that each potion collect =+2)
   146:    In Rainbow Islands, this table shows that we need only collect:
   147:    3 red potions (but each one counts as +2 if you created it, or +1 if you 'found' it in a level),
   148:    3 yellow potions ""
   149:    3 red shoes (only count as one)
   150:    The 'canes', and 'potions' occur -after- these entries (cane index 27-33, potion index 34-40)
   151:    So the reason that you (rarely!) see the canes, and hence the potions in RI, is because you will
   152:    almost ALWAYS satisfy at least one of these requirements: 2 RED potions are given before 1 'special'
   153:    In Rainbow Islands Extra however, the canes are more common. This is because the index shows that
   154:    we need to collect 12/12/12 of the above before we can get the rings.
   155: 
   156:    One more condition has been added to RIE regards this;
   157:    if _no_ special item has been earned, you will receive a Potion that is the same colour as the
   158:    LAST diamond you have collected in the round.
   159: 
   160: 
   161: 
   162: Bugs in Jumping
   163: ---------------
   164: 
   165: The bootleggers didn't defeat the protection completely: Secret
   166: rooms are broken, some dying enemy sprites have obviously wrong
   167: graphics, monsters are falling through platforms etc.
   168: 
   169: 
   170: Secret rooms in Rainbow Islands
   171: -------------------------------
   172: 
   173: Getting the small diamonds in order (red through to purple) opens
   174: a secret door in the boss room. The trick is to turn an enemy into
   175: a diamond of a specific color: It depends on its x position and
   176: direction. There is a cheat code at the top of each secret room
   177: that can be entered on the copyright screen:
   178: 
   179: 	L -> left
   180: 	R -> right
   181: 	J -> jump
   182: 	B -> rainbow
   183: 	S -> start
   184: 
   185: 				  |  regular   |  extra
   186: 	--------------+------------+------------
   187: 	Fast Feet     |  BLRBJSBJ  |  SLLSRJRR
   188: 	Red Potion    |  RJSBJLBR  |  JLSSSBRJ
   189: 	Yellow Potion |  SSSLLRRS  |  BRSLJSLJ
   190: 	Hint A        |  BJBJBJRS  |  BJBJBJRS
   191: 	Hint B        |  LJLSLBLS  |  LJLSLBLS
   192: 	Continue      |  LBSJRLJL  |  LJLRSJJJ
   193: 	Money Bags    |  RRLLBBJS  |  LLSBRRJB
   194: 	Money + Cont  |  RRRRSBSJ  |  RSJRLBRS
   195: 	Hint C        |  SJBLRJSR  |  SJBLRJSR
   196: 	100M Counter  |  SRBJSLSB  |  BBSSJJJJ
   197: 	Hint D        |  N/A       |  BBJJRLSL
   198: 	Hint E        |  N/A       |  LRSLRSJR
   199: 	Hint F        |  N/A       |  SBJLSBRR
   200: 
   201: ***************************************************************************/
   202: 
   203: #include "driver.h" 
   204: #include "state.h" 
   205: #include "vidhrdw/generic.h" 
   206: #include "vidhrdw/taitoic.h" 
   207: #include "sndhrdw/taitosnd.h" 
   208: 
   209: VIDEO_START( rainbow );
   210: VIDEO_START( jumping );
   211: 
   212: VIDEO_UPDATE( rainbow );
   213: VIDEO_UPDATE( jumping );
   214: 
   215: WRITE16_HANDLER( jumping_spritectrl_w );
   216: WRITE16_HANDLER( rainbow_spritectrl_w );
   217: WRITE16_HANDLER( rainbow_cchip_ram_w );
   218: WRITE16_HANDLER( rainbow_cchip_ctrl_w );
   219: WRITE16_HANDLER( rainbow_cchip_bank_w );
   220: 
   221: READ16_HANDLER( rainbow_cchip_ram_r );
   222: READ16_HANDLER( rainbow_cchip_ctrl_r );
   223: 
   224: void rainbow_cchip_init(int version);
   225: 
   226: static int jumping_latch = 0;
   227: 
   228: 
   229: static WRITE16_HANDLER( jumping_sound_w )
   230: {
   231: 	if (ACCESSING_LSB)
   232: 	{
   233: 		jumping_latch = data & 0xff; /*M68000 writes .b to $400007*/
   234: 		cpu_set_irq_line(1,0,HOLD_LINE);
   235: 	}
   236: }
   237: 
   238: 
   239: /***************************************************************************
   240:                             MEMORY STRUCTURES
   241: ***************************************************************************/
   242: 
   243: static MEMORY_READ16_START( rainbow_readmem )
   244: 	{ 0x000000, 0x07ffff, MRA16_ROM },
   245: 	{ 0x10c000, 0x10ffff, MRA16_RAM },	/* main RAM */
   246: 	{ 0x200000, 0x200fff, MRA16_RAM },	/* palette */
   247: 	{ 0x201000, 0x203fff, MRA16_RAM },	/* read in initial checks */
   248: 	{ 0x390000, 0x390003, input_port_0_word_r },
   249: 	{ 0x3b0000, 0x3b0003, input_port_1_word_r },
   250: 	{ 0x3e0000, 0x3e0001, MRA16_NOP },
   251: 	{ 0x3e0002, 0x3e0003, taitosound_comm16_lsb_r },
   252: 	{ 0x800000, 0x8007ff, rainbow_cchip_ram_r },
   253: 	{ 0x800802, 0x800803, rainbow_cchip_ctrl_r },
   254: 	{ 0xc00000, 0xc0ffff, PC080SN_word_0_r },
   255: 	{ 0xd00000, 0xd03fff, PC090OJ_word_0_r },	/* sprite ram + other stuff */
   256: MEMORY_END
   257: 
   258: static MEMORY_WRITE16_START( rainbow_writemem )
   259: 	{ 0x000000, 0x07ffff, MWA16_ROM },
   260: 	{ 0x10c000, 0x10ffff, MWA16_RAM },
   261: 	{ 0x200000, 0x200fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
   262: 	{ 0x201000, 0x203fff, MWA16_RAM },	/* written in initial checks */
   263: 	{ 0x3a0000, 0x3a0001, rainbow_spritectrl_w },
   264: 	{ 0x3c0000, 0x3c0003, MWA16_NOP },	/* written very often, watchdog? */
   265: 	{ 0x3e0000, 0x3e0001, taitosound_port16_lsb_w },
   266: 	{ 0x3e0002, 0x3e0003, taitosound_comm16_lsb_w },
   267: 	{ 0x800000, 0x8007ff, rainbow_cchip_ram_w },
   268: 	{ 0x800802, 0x800803, rainbow_cchip_ctrl_w },
   269: 	{ 0x800c00, 0x800c01, rainbow_cchip_bank_w },
   270: 	{ 0xc00000, 0xc0ffff, PC080SN_word_0_w },
   271: 	{ 0xc20000, 0xc20003, PC080SN_yscroll_word_0_w },
   272: 	{ 0xc40000, 0xc40003, PC080SN_xscroll_word_0_w },
   273: 	{ 0xc50000, 0xc50003, PC080SN_ctrl_word_0_w },
   274: 	{ 0xd00000, 0xd03fff, PC090OJ_word_0_w },	/* sprite ram + other stuff */
   275: MEMORY_END
   276: 
   277: 
   278: static MEMORY_READ16_START( jumping_readmem )
   279: 	{ 0x000000, 0x09ffff, MRA16_ROM },
   280: 	{ 0x10c000, 0x10ffff, MRA16_RAM },	/* main RAM */
   281: 	{ 0x200000, 0x200fff, MRA16_RAM },	/* palette */
   282: 	{ 0x201000, 0x203fff, MRA16_RAM },	/* read in initial checks */
   283: 	{ 0x400000, 0x400001, input_port_0_word_r },
   284: 	{ 0x400002, 0x400003, input_port_1_word_r },
   285: 	{ 0x401000, 0x401001, input_port_2_word_r },
   286: 	{ 0x401002, 0x401003, input_port_3_word_r },
   287: 	{ 0x420000, 0x420001, MRA16_NOP },	/* read, but result not used */
   288: 	{ 0x440000, 0x4407ff, MRA16_RAM },
   289: 	{ 0xc00000, 0xc0ffff, PC080SN_word_0_r },
   290: 	{ 0xd00000, 0xd01fff, MRA16_RAM },	/* original spriteram location, needed for Attract Mode */
   291: MEMORY_END
   292: 
   293: static MEMORY_WRITE16_START( jumping_writemem )
   294: 	{ 0x000000, 0x09ffff, MWA16_ROM },
   295: 	{ 0x10c000, 0x10ffff, MWA16_RAM },
   296: 	{ 0x200000, 0x200fff, paletteram16_xxxxBBBBGGGGRRRR_word_w , &paletteram16 },
   297: 	{ 0x201000, 0x203fff, MWA16_RAM },	/* written in initial checks */
   298: 	{ 0x3a0000, 0x3a0001, jumping_spritectrl_w },
   299: 	{ 0x3c0000, 0x3c0001, MWA16_NOP },	/* watchdog? */
   300: 	{ 0x400006, 0x400007, jumping_sound_w },
   301: 	{ 0x430000, 0x430003, PC080SN_yscroll_word_0_w },
   302: 	{ 0x440000, 0x4407ff, MWA16_RAM, &spriteram16, &spriteram_size },
   303: 	{ 0x800000, 0x80ffff, MWA16_NOP },	/* original c-chip location (not used) */
   304: 	{ 0xc00000, 0xc0ffff, PC080SN_word_0_w },
   305: 	{ 0xc20000, 0xc20003, MWA16_NOP },	/* seems it is a leftover from rainbow: scroll y written here too */
   306: 	{ 0xc40000, 0xc40003, PC080SN_xscroll_word_0_w },
   307: 	{ 0xd00000, 0xd01fff, MWA16_RAM }, 	/* original spriteram location, needed for Attract Mode */
   308: MEMORY_END
   309: 
   310: 
   311: /**********************************************************
   312:                          SOUND
   313: 
   314:               Rainbow uses a YM2151 and YM3012
   315:               Jumping uses two YM2203's
   316: ***********************************************************/
   317: 
   318: static WRITE_HANDLER( bankswitch_w )
   319: {
   320: 	cpu_setbank(5, memory_region(REGION_CPU2) + ((data - 1) & 3) * 0x4000 + 0x10000);
   321: }
   322: 
   323: static READ_HANDLER( jumping_latch_r )
   324: {
   325: 	return jumping_latch;
   326: }
   327: 
   328: 
   329: static MEMORY_READ_START( rainbow_s_readmem )
   330: 	{ 0x0000, 0x3fff, MRA_ROM },
   331: 	{ 0x4000, 0x7fff, MRA_BANK5 },
   332: 	{ 0x8000, 0x8fff, MRA_RAM },
   333: 	{ 0x9001, 0x9001, YM2151_status_port_0_r },
   334: 	{ 0x9002, 0x9100, MRA_RAM },
   335: 	{ 0xa001, 0xa001, taitosound_slave_comm_r },
   336: MEMORY_END
   337: 
   338: static MEMORY_WRITE_START( rainbow_s_writemem )
   339: 	{ 0x0000, 0x7fff, MWA_ROM },
   340: 	{ 0x8000, 0x8fff, MWA_RAM },
   341: 	{ 0x9000, 0x9000, YM2151_register_port_0_w },
   342: 	{ 0x9001, 0x9001, YM2151_data_port_0_w },
   343: 	{ 0xa000, 0xa000, taitosound_slave_port_w },
   344: 	{ 0xa001, 0xa001, taitosound_slave_comm_w },
   345: MEMORY_END
   346: 
   347: static MEMORY_READ_START( jumping_sound_readmem )
   348: 	{ 0x0000, 0x7fff, MRA_ROM },
   349: 	{ 0x8000, 0x8fff, MRA_RAM },
   350: 	{ 0xb000, 0xb000, YM2203_status_port_0_r },
   351: 	{ 0xb400, 0xb400, YM2203_status_port_1_r },
   352: 	{ 0xb800, 0xb800, jumping_latch_r },
   353: 	{ 0xc000, 0xffff, MRA_ROM },
   354: MEMORY_END
   355: 
   356: static MEMORY_WRITE_START( jumping_sound_writemem )
   357: 	{ 0x0000, 0x7fff, MWA_ROM },
   358: 	{ 0x8000, 0x8fff, MWA_RAM },
   359: 	{ 0xb000, 0xb000, YM2203_control_port_0_w },
   360: 	{ 0xb001, 0xb001, YM2203_write_port_0_w },
   361: 	{ 0xb400, 0xb400, YM2203_control_port_1_w },
   362: 	{ 0xb401, 0xb401, YM2203_write_port_1_w },
   363: 	{ 0xbc00, 0xbc00, MWA_NOP },	/* looks like a bankswitch, but sound works with or without it */
   364: MEMORY_END
   365: 
   366: 
   367: /***********************************************************
   368: 			 INPUT PORTS, DIPs
   369: ***********************************************************/
   370: 
   371: INPUT_PORTS_START( rainbow )
   372: 	PORT_START	/* DIP SWITCH A */
   373: 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
   374: 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
   375: 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
   376: 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
   377: 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
   378: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   379: 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
   380: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
   381: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   382: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   383: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
   384: 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
   385: 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
   386: 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
   387: 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
   388: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
   389: 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
   390: 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
   391: 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) )
   392: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
   393: 
   394: 	PORT_START	/* DIP SWITCH B */
   395: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
   396: 	PORT_DIPSETTING(    0x02, "Easy" )
   397: 	PORT_DIPSETTING(    0x03, "Medium" )
   398: 	PORT_DIPSETTING(    0x01, "Hard" )
   399: 	PORT_DIPSETTING(    0x00, "Hardest" )
   400: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) )
   401: 	PORT_DIPSETTING(    0x00, "None" )
   402: 	PORT_DIPSETTING(    0x04, "100k,1000k" )
   403: 	PORT_DIPNAME( 0x08, 0x08, "Complete Bonus" )
   404: 	PORT_DIPSETTING(    0x00, "100K Points" )
   405: 	PORT_DIPSETTING(    0x08, "1 Up" )
   406: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
   407: 	PORT_DIPSETTING(    0x10, "1" )
   408: 	PORT_DIPSETTING(    0x00, "2" )
   409: 	PORT_DIPSETTING(    0x30, "3" )
   410: 	PORT_DIPSETTING(    0x20, "4" )
   411: 	PORT_DIPNAME( 0x40, 0x00, "Language" )
   412: 	PORT_DIPSETTING(    0x00, "English" )
   413: 	PORT_DIPSETTING(    0x40, "Japanese" )
   414: 	PORT_DIPNAME( 0x80, 0x00, "Coin Type" )
   415: 	PORT_DIPSETTING(    0x00, "Type 1" )
   416: 	PORT_DIPSETTING(    0x80, "Type 2" )
   417: 
   418: 	PORT_START	/* 800007 */
   419: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
   420: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
   421: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
   422: 
   423: 	PORT_START /* 800009 */
   424: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   425: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
   426: 
   427: 	PORT_START	/* 80000B */
   428: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
   429: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
   430: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
   431: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
   432: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
   433: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
   434: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
   435: 
   436: 	PORT_START	/* 80000d */
   437: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
   438: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
   439: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
   440: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
   441: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   442: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   443: INPUT_PORTS_END
   444: 
   445: INPUT_PORTS_START( jumping )
   446: 	PORT_START	/* DIP SWITCH A */
   447: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
   448: 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
   449: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   450: 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
   451: 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
   452: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   453: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
   454: 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
   455: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   456: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
   457: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   458: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   459: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
   460: 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
   461: 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
   462: 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
   463: 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
   464: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
   465: 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
   466: 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
   467: 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) )
   468: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
   469: 
   470: 	PORT_START	/* DIP SWITCH B */
   471: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
   472: 	PORT_DIPSETTING(    0x02, "Easy" )
   473: 	PORT_DIPSETTING(    0x03, "Medium" )
   474: 	PORT_DIPSETTING(    0x01, "Hard" )
   475: 	PORT_DIPSETTING(    0x00, "Hardest" )
   476: 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Bonus_Life ) )
   477: 	PORT_DIPSETTING(    0x04, "100k,1000k" )
   478: 	PORT_DIPSETTING(    0x00, "None" )
   479: 	PORT_DIPNAME( 0x08, 0x00, "Complete Bonus" )
   480: 	PORT_DIPSETTING(    0x08, "1 Up" )
   481: 	PORT_DIPSETTING(    0x00, "None" )
   482: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
   483: 	PORT_DIPSETTING(    0x10, "1" )
   484: 	PORT_DIPSETTING(    0x00, "2" )
   485: 	PORT_DIPSETTING(    0x30, "3" )
   486: 	PORT_DIPSETTING(    0x20, "4" )
   487: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
   488: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   489: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   490: 	PORT_DIPNAME( 0x80, 0x00, "Coin Type" )
   491: 	PORT_DIPSETTING(    0x00, "Type 1" )
   492: 	PORT_DIPSETTING(    0x80, "Type 2" )
   493: 
   494: 	PORT_START  /* 401001 - Coins Etc. */
   495: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
   496: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
   497: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 )
   498: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
   499: 
   500: 	PORT_START	/* 401003 - Player Controls */
   501: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
   502: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
   503: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
   504: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
   505: INPUT_PORTS_END
   506: 
   507: 
   508: /**************************************************************
   509:                          GFX DECODING
   510: **************************************************************/
   511: 
   512: static struct GfxLayout tilelayout =
   513: {
   514: 	8,8,    /* 8*8 tiles */
   515: 	RGN_FRAC(1,1),
   516: 	4,      /* 4 bits per pixel */
   517: 	{ 0, 1, 2, 3 },
   518: 	{ 8, 12, 0, 4, 24, 28, 16, 20 },
   519: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
   520: 	32*8    /* every tile takes 32 consecutive bytes */
   521: };
   522: 
   523: static struct GfxLayout spritelayout =
   524: {
   525: 	16,16,  /* 16*16 sprites */
   526: 	RGN_FRAC(1,1),
   527: 	4,      /* 4 bits per pixel */
   528: 	{ 0, 1, 2, 3 },
   529: 	{ 8, 12, 0, 4, 24, 28, 16, 20, 40, 44, 32, 36, 56, 60, 48, 52 },
   530: 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
   531: 			8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
   532: 	128*8   /* every sprite takes 128 consecutive bytes */
   533: };
   534: 
   535: static struct GfxDecodeInfo rainbow_gfxdecodeinfo[] =
   536: {
   537: 	{ REGION_GFX2, 0x000000, &spritelayout, 0, 0x80 },	/* OBJ 16x16 */
   538: 	{ REGION_GFX1, 0x000000, &tilelayout,   0, 0x80 },	/* SCR 8x8 */
   539: 	{ -1 }	/* end of array */
   540: };
   541: 
   542: 
   543: static struct GfxLayout jumping_tilelayout =
   544: {
   545: 	8,8,    /* 8*8 tiles */
   546: 	16384,  /* 16384 tiles */
   547: 	4,      /* 4 bits per pixel */
   548: 	{ 0, 0x20000*8, 0x40000*8, 0x60000*8 },
   549: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   550: 	{ 0, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   551: 	8*8     /* every tile takes 8 consecutive bytes */
   552: };
   553: 
   554: static struct GfxLayout jumping_spritelayout =
   555: {
   556: 	16,16,  /* 16*16 sprites */
   557: 	5120,   /* 5120 sprites */
   558: 	4,      /* 4 bits per pixel */
   559: 	{ 0x78000*8,0x50000*8,0x28000*8,0 },
   560: 	{ 0, 1, 2, 3, 4, 5, 6, 7, 8*16+0, 8*16+1, 8*16+2, 8*16+3, 8*16+4, 8*16+5, 8*16+6, 8*16+7 },
   561: 	{ 0, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
   562: 	32*8    /* every sprite takes 32 consecutive bytes */
   563: };
   564: 
   565: static struct GfxDecodeInfo jumping_gfxdecodeinfo[] =
   566: {
   567: 	{ REGION_GFX2, 0, &jumping_spritelayout, 0, 0x80 },	/* OBJ 16x16 */
   568: 	{ REGION_GFX1, 0, &jumping_tilelayout,   0, 0x80 },	/* SCR 8x8 */
   569: 	{ -1 }	/* end of array */
   570: };
   571: 
   572: 
   573: /**************************************************************
   574:                    YM2151 & YM2203 (SOUND)
   575: **************************************************************/
   576: 
   577: /* handler called by the YM2151 emulator when the internal timers cause an IRQ */
   578: 
   579: static void irqhandler(int irq)
   580: {
   581: 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
   582: }
   583: 
   584: static struct YM2151interface ym2151_interface =
   585: {
   586: 	1,          /* 1 chip */
   587: 	4000000,    /* 4 MHz ? */
   588: 	{ YM3012_VOL(50,MIXER_PAN_LEFT,50,MIXER_PAN_RIGHT) },
   589: 	{ irqhandler },
   590: 	{ bankswitch_w }
   591: };
   592: 
   593: static struct YM2203interface ym2203_interface =
   594: {
   595: 	2,          /* 2 chips */
   596: 	3579545,    /* ?? MHz */
   597: 	{ YM2203_VOL(30,30), YM2203_VOL(30,30) },
   598: 	{ 0 },
   599: 	{ 0 },
   600: 	{ 0 },
   601: 	{ 0 },
   602: 	{ 0 }
   603: };
   604: 
   605: 
   606: /***********************************************************
   607:                       MACHINE DRIVERS
   608: ***********************************************************/
   609: 
   610: static MACHINE_DRIVER_START( rainbow )
   611: 
   612: 	/* basic machine hardware */
   613: 	MDRV_CPU_ADD(M68000, 8000000)
   614: 	MDRV_CPU_MEMORY(rainbow_readmem,rainbow_writemem)
   615: 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
   616: 
   617: 	MDRV_CPU_ADD(Z80, 4000000)
   618: 	MDRV_CPU_MEMORY(rainbow_s_readmem,rainbow_s_writemem)
   619: 
   620: 	MDRV_FRAMES_PER_SECOND(60)
   621: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   622: 	MDRV_INTERLEAVE(10)	/* 10 CPU slices per frame - enough for the sound CPU to read all commands */
   623: 
   624: 	/* video hardware */
   625: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   626: 	MDRV_SCREEN_SIZE(40*8, 32*8)
   627: 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) /* is Y visible correct ? */
   628: 	MDRV_GFXDECODE(rainbow_gfxdecodeinfo)
   629: 	MDRV_PALETTE_LENGTH(8192)
   630: 
   631: 	MDRV_VIDEO_START(rainbow)
   632: 	MDRV_VIDEO_UPDATE(rainbow)
   633: 
   634: 	/* sound hardware */
   635: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   636: MACHINE_DRIVER_END
   637: 
   638: 
   639: static MACHINE_DRIVER_START( jumping )
   640: 
   641: 	/* basic machine hardware */
   642: 	MDRV_CPU_ADD(M68000, 8000000)
   643: 	MDRV_CPU_MEMORY(jumping_readmem,jumping_writemem)
   644: 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
   645: 
   646: 	MDRV_CPU_ADD(Z80, 4000000)
   647: 	MDRV_CPU_MEMORY(jumping_sound_readmem,jumping_sound_writemem)
   648: 
   649: 	MDRV_FRAMES_PER_SECOND(60)
   650: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   651: 	MDRV_INTERLEAVE(10)	/* 10 CPU slices per frame - enough ? */
   652: 
   653: 	/* video hardware */
   654: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   655: 	MDRV_SCREEN_SIZE(40*8, 32*8)
   656: 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) /* is Y visible correct ? */
   657: 	MDRV_GFXDECODE(jumping_gfxdecodeinfo)
   658: 	MDRV_PALETTE_LENGTH(8192)
   659: 
   660: 	MDRV_VIDEO_START(jumping)
   661: 	MDRV_VIDEO_UPDATE(jumping)
   662: 
   663: 	/* sound hardware */
   664: 	MDRV_SOUND_ADD(YM2203, ym2203_interface)
   665: MACHINE_DRIVER_END
   666: 
   667: 
   668: /***************************************************************************
   669:                                   DRIVERS
   670: ***************************************************************************/
   671: 
   672: ROM_START( rainbow )
   673: 	ROM_REGION( 0x80000, REGION_CPU1, 0 )
   674: 	ROM_LOAD16_BYTE( "b22-10-1.19",   0x00000, 0x10000, CRC(e34a50ca) SHA1(17a92cd7182db1e18000b1ae689758fcfd70fe16) )
   675: 	ROM_LOAD16_BYTE( "b22-11-1.20",   0x00001, 0x10000, CRC(6a31a093) SHA1(1e99ae47811c0d3774d138dab02ac50bc1b92173) )
   676: 	ROM_LOAD16_BYTE( "b22-08-1.21",   0x20000, 0x10000, CRC(15d6e17a) SHA1(7b0339180239e75adf1437aee276b652a1bfee51) )
   677: 	ROM_LOAD16_BYTE( "b22-09-1.22",   0x20001, 0x10000, CRC(454e66bc) SHA1(54d57dee90da04101f4b1473770b38001d63230f) )
   678: 	ROM_LOAD16_BYTE( "b22-03.23",     0x40000, 0x20000, CRC(3ebb0fb8) SHA1(1b41b305623d121255eb70cb992e4d9da13abd82) )
   679: 	ROM_LOAD16_BYTE( "b22-04.24",     0x40001, 0x20000, CRC(91625e7f) SHA1(765afd973d9b82bb496b04beca284bf2769d6e6f) )
   680: 
   681: 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )
   682: 	ROM_LOAD( "b22-14.43",            0x00000, 0x4000, CRC(113c1a5b) SHA1(effa2adf54a6be78b2d4baf3a47529342fb0d895) )
   683: 	ROM_CONTINUE(                     0x10000, 0xc000 )
   684: 
   685: 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
   686: 	ROM_LOAD( "b22-01.2",             0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) )	/* tiles */
   687: 
   688: 	ROM_REGION( 0xa0000, REGION_GFX2, ROMREGION_DISPOSE )
   689: 	ROM_LOAD( "b22-01.5",             0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) )	/* sprites */
   690: 	ROM_LOAD16_BYTE( "b22-12.7",      0x80000, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
   691: 	ROM_LOAD16_BYTE( "b22-13.6",      0x80001, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
   692: ROM_END
   693: 
   694: ROM_START( rainbowo )
   695: 	ROM_REGION( 0x80000, REGION_CPU1, 0 )
   696: 	ROM_LOAD16_BYTE( "b22-10.19",     0x00000, 0x10000, CRC(3b013495) SHA1(fc89f401a80b9bde174df8a257bb7fad4937c838) )
   697: 	ROM_LOAD16_BYTE( "b22-11.20",     0x00001, 0x10000, CRC(80041a3d) SHA1(619d71a2bef5fd898a15d37d8016850f832428c3) )
   698: 	ROM_LOAD16_BYTE( "b22-08.21",     0x20000, 0x10000, CRC(962fb845) SHA1(1c5581e697902ee5cde0fb841ef05eade04a901b) )
   699: 	ROM_LOAD16_BYTE( "b22-09.22",     0x20001, 0x10000, CRC(f43efa27) SHA1(f92bcdbe9bbc1c200946c10605846bb406d8e963) )
   700: 	ROM_LOAD16_BYTE( "b22-03.23",     0x40000, 0x20000, CRC(3ebb0fb8) SHA1(1b41b305623d121255eb70cb992e4d9da13abd82) )
   701: 	ROM_LOAD16_BYTE( "b22-04.24",     0x40001, 0x20000, CRC(91625e7f) SHA1(765afd973d9b82bb496b04beca284bf2769d6e6f) )
   702: 
   703: 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )
   704: 	ROM_LOAD( "b22-14.43",            0x00000, 0x4000, CRC(113c1a5b) SHA1(effa2adf54a6be78b2d4baf3a47529342fb0d895) )
   705: 	ROM_CONTINUE(                     0x10000, 0xc000 )
   706: 
   707: 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
   708: 	ROM_LOAD( "b22-01.2",             0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) )	/* tiles */
   709: 
   710: 	ROM_REGION( 0xa0000, REGION_GFX2, ROMREGION_DISPOSE )
   711:   	ROM_LOAD( "b22-01.5",             0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) )	/* sprites */
   712: 	ROM_LOAD16_BYTE( "b22-12.7",      0x80000, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
   713: 	ROM_LOAD16_BYTE( "b22-13.6",      0x80001, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
   714: ROM_END
   715: 
   716: ROM_START( rainbowe )
   717: 	ROM_REGION( 0x80000, REGION_CPU1, 0 )
   718: 	ROM_LOAD16_BYTE( "b39-01.19",     0x00000, 0x10000, CRC(50690880) SHA1(88cd8739eaa6e4e5988be225c31d2a6605173d39) )
   719: 	ROM_LOAD16_BYTE( "b39-02.20",     0x00001, 0x10000, CRC(4dead71f) SHA1(03e9df33fc8fc64d6eeb1c3a763acac00b10c071) )
   720: 	ROM_LOAD16_BYTE( "b39-03.21",     0x20000, 0x10000, CRC(4a4cb785) SHA1(6ba7de3901a001cbb31713664ccb68b943a5578f) )
   721: 	ROM_LOAD16_BYTE( "b39-04.22",     0x20001, 0x10000, CRC(4caa53bd) SHA1(302c668b77de41ffef96a3ca9d94877b4affc466) )
   722: 	ROM_LOAD16_BYTE( "b22-03.23",     0x40000, 0x20000, CRC(3ebb0fb8) SHA1(1b41b305623d121255eb70cb992e4d9da13abd82) )
   723: 	ROM_LOAD16_BYTE( "b22-04.24",     0x40001, 0x20000, CRC(91625e7f) SHA1(765afd973d9b82bb496b04beca284bf2769d6e6f) )
   724: 
   725: 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )
   726: 	ROM_LOAD( "b22-14.43",            0x00000, 0x4000, CRC(113c1a5b) SHA1(effa2adf54a6be78b2d4baf3a47529342fb0d895) )
   727: 	ROM_CONTINUE(                     0x10000, 0xc000 )
   728: 
   729: 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
   730: 	ROM_LOAD( "b22-01.2",             0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) )	/* tiles */
   731: 
   732: 	ROM_REGION( 0xa0000, REGION_GFX2, ROMREGION_DISPOSE )
   733:   	ROM_LOAD( "b22-01.5",             0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) )	/* sprites */
   734: 	ROM_LOAD16_BYTE( "b22-12.7",      0x80000, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
   735: 	ROM_LOAD16_BYTE( "b22-13.6",      0x80001, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
   736: ROM_END
   737: 
   738: ROM_START( jumping )
   739: 	ROM_REGION( 0xa0000, REGION_CPU1, 0 )
   740: 	ROM_LOAD16_BYTE( "jb1_h4",        0x00000, 0x10000, CRC(3fab6b31) SHA1(57803478949cb62f7eab2ef9be08b13aa2237dbc) )
   741: 	ROM_LOAD16_BYTE( "jb1_h8",        0x00001, 0x10000, CRC(8c878827) SHA1(4a54a217b7c442305c3ce9298aa36ae225382444) )
   742: 	ROM_LOAD16_BYTE( "jb1_i4",        0x20000, 0x10000, CRC(443492cf) SHA1(fc3809d784d611df4fd446ca2443eebdf4f0bfd7) )
   743: 	ROM_LOAD16_BYTE( "jb1_i8",        0x20001, 0x10000, CRC(ed33bae1) SHA1(24ade29f3fdd45aa772ccf9c046294baa6eae7a2) )
   744: 	ROM_LOAD16_BYTE( "b22-03.23",     0x40000, 0x20000, CRC(3ebb0fb8) SHA1(1b41b305623d121255eb70cb992e4d9da13abd82) )
   745: 	ROM_LOAD16_BYTE( "b22-04.24",     0x40001, 0x20000, CRC(91625e7f) SHA1(765afd973d9b82bb496b04beca284bf2769d6e6f) )
   746: 	ROM_LOAD16_BYTE( "jb1_f89",       0x80001, 0x10000, CRC(0810d327) SHA1(fe91ac02e617bde413dc8a20b7cbcaf3e20aeb28) )	/* c-chip substitute */
   747: 
   748: 	ROM_REGION( 0x14000, REGION_CPU2, 0 )
   749: 	ROM_LOAD( "jb1_cd67",             0x00000, 0x8000, CRC(8527c00e) SHA1(86e3824caca39aca4ca4df63bb4474adacfc4c53) )
   750: 	ROM_CONTINUE(                     0x10000, 0x4000 )
   751: 	ROM_CONTINUE(                     0x0c000, 0x4000 )
   752: 
   753: 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
   754: 	ROM_LOAD( "jb2_ic8",              0x00000, 0x10000, CRC(65b76309) SHA1(1e345726e137f4c56d4bf239651c986fd53a16c3) )	/* tiles */
   755: 	ROM_LOAD( "jb2_ic7",              0x10000, 0x10000, CRC(43a94283) SHA1(d6a05cbc7b996a8e7f1520563f6fada9a59021a4) )
   756: 	ROM_LOAD( "jb2_ic10",             0x20000, 0x10000, CRC(e61933fb) SHA1(02bc0e1a7a3ce9e15fb83b28ce8fafb0b8d80ebd) )
   757: 	ROM_LOAD( "jb2_ic9",              0x30000, 0x10000, CRC(ed031eb2) SHA1(905be4d890ff7bb8a4d8ad85b2a11483fb4d67eb) )
   758: 	ROM_LOAD( "jb2_ic12",             0x40000, 0x10000, CRC(312700ca) SHA1(c79edc9c25f364d0afd79aaa21cfe2fe46044314) )
   759: 	ROM_LOAD( "jb2_ic11",             0x50000, 0x10000, CRC(de3b0b88) SHA1(14b8871821e4c0abbb9967c5aa282cf4e67884fe) )
   760: 	ROM_LOAD( "jb2_ic14",             0x60000, 0x10000, CRC(9fdc6c8e) SHA1(ff4e1a98dc982bce2f9d235cac62c7166f477f64) )
   761: 	ROM_LOAD( "jb2_ic13",             0x70000, 0x10000, CRC(06226492) SHA1(834280ec49e61a0c9c6b6fe2033e1b20bd1bffbf) )
   762: 
   763: 	ROM_REGION( 0xa0000, REGION_GFX2, ROMREGION_DISPOSE )
   764: 	ROM_LOAD( "jb2_ic62",             0x00000, 0x10000, CRC(8548db6c) SHA1(675cd301259d5ed16098a38ac58b27b5ccd91264) )	/* sprites */
   765: 	ROM_LOAD( "jb2_ic61",             0x10000, 0x10000, CRC(37c5923b) SHA1(c83ef45564c56ef62d7019aecbd79dccc671deee) )
   766: 	ROM_LOAD( "jb2_ic60",             0x20000, 0x08000, CRC(662a2f1e) SHA1(1c5e8b1f0623e64faf9cd60f9653fc5957191a9b) )
   767: 	ROM_LOAD( "jb2_ic78",             0x28000, 0x10000, CRC(925865e1) SHA1(457de50bc03e8b949ac7d46ae4188201e87574a8) )
   768: 	ROM_LOAD( "jb2_ic77",             0x38000, 0x10000, CRC(b09695d1) SHA1(e6d315f9befb7b47f42668d573a1102e52d78aea) )
   769: 	ROM_LOAD( "jb2_ic76",             0x48000, 0x08000, CRC(41937743) SHA1(890c832a7cf87e6fe749d4824b02d57e10872bdf) )
   770: 	ROM_LOAD( "jb2_ic93",             0x50000, 0x10000, CRC(f644eeab) SHA1(9d45e9dfb08e8c90b4b10f5dc383fa4732161a81) )
   771: 	ROM_LOAD( "jb2_ic92",             0x60000, 0x10000, CRC(3fbccd33) SHA1(137880a564573db1f9e6de5c730af6709ca301f3) )
   772: 	ROM_LOAD( "jb2_ic91",             0x70000, 0x08000, CRC(d886c014) SHA1(9327c332c98a81451e9e0624344d2601ef06e490) )
   773: 	ROM_LOAD( "jb2_i121",             0x78000, 0x10000, CRC(93df1e4d) SHA1(b100d265b973254ec9cd44b6c32f62b4bac3b732) )
   774: 	ROM_LOAD( "jb2_i120",             0x88000, 0x10000, CRC(7c4e893b) SHA1(eceecb38554157ee24d228a2c722dad750a6a07d) )
   775: 	ROM_LOAD( "jb2_i119",             0x98000, 0x08000, CRC(7e1d58d8) SHA1(d586a018c3ec3e6e6a39992170d324361e03c68a) )
   776: ROM_END
   777: 
   778: 
   779: static DRIVER_INIT( rainbow )
   780: {
   781: 	rainbow_cchip_init(0);
   782: }
   783: 
   784: static DRIVER_INIT( rainbowe )
   785: {
   786: 	rainbow_cchip_init(1);
   787: }
   788: 
   789: static DRIVER_INIT( jumping )
   790: {
   791: 	int i;
   792: 
   793: 	/* Sprite colour map is reversed - switch to normal */
   794: 
   795: 	for (i = 0;i < memory_region_length(REGION_GFX2);i++)
   796: 		memory_region(REGION_GFX2)[i] ^= 0xff;
   797: 
   798: 	state_save_register_int("jumping", 0, "sound", &jumping_latch);
   799: }
   800: 
   801: 
   802: GAME( 1987, rainbow,  0,       rainbow, rainbow, rainbow,  ROT0, "Taito Corporation", "Rainbow Islands (new version)" )
   803: GAME( 1987, rainbowo, rainbow, rainbow, rainbow, rainbow,  ROT0, "Taito Corporation", "Rainbow Islands (old version)" )
   804: GAME( 1988, rainbowe, rainbow, rainbow, rainbow, rainbowe, ROT0, "Taito Corporation", "Rainbow Islands (Extra)" )
   805: GAME( 1989, jumping,  rainbow, jumping, jumping, jumping,  ROT0, "bootleg", "Jumping" )
   806: 




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