summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Zsolt Vasvari <zsoltvas@mamedev.org>2008-02-27 13:51:06 +0000
committer Zsolt Vasvari <zsoltvas@mamedev.org>2008-02-27 13:51:06 +0000
commitf78611cfd3aaa8b34be2e1801345da91419f8707 (patch)
tree44697342399b7f83768f1285bb5f55b1df218d31 /src
parente362c9301e8538d743f5b55350e0d87ecadd8053 (diff)
- Clean-up of the Crazy Climber video driver, mainly via tilemap conversion.
This fixes the ape sprite positioning in Crazy Kong -- no more gap between feet and platform - Merged Yamato driver with Crazy Climber - XX Mission tilemap conversion - Removes VIDEO_START(generic) -- no longer used
Diffstat (limited to 'src')
-rw-r--r--src/emu/video/generic.c17
-rw-r--r--src/emu/video/generic.h9
-rw-r--r--src/mame/drivers/cclimber.c877
-rw-r--r--src/mame/drivers/xxmissio.c15
-rw-r--r--src/mame/drivers/yamato.c701
-rw-r--r--src/mame/includes/cclimber.h32
-rw-r--r--src/mame/mame.mak1
-rw-r--r--src/mame/video/cclimber.c1051
-rw-r--r--src/mame/video/xxmissio.c151
9 files changed, 1216 insertions, 1638 deletions
diff --git a/src/emu/video/generic.c b/src/emu/video/generic.c
index 9189a910264..8f425058f20 100644
--- a/src/emu/video/generic.c
+++ b/src/emu/video/generic.c
@@ -306,17 +306,6 @@ void generic_video_init(running_machine *machine)
***************************************************************************/
/*-------------------------------------------------
- VIDEO_START( generic ) - general video system
--------------------------------------------------*/
-
-VIDEO_START( generic )
-{
- /* allocate the temporary bitmap */
- tmpbitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, machine->screen[0].format);
-}
-
-
-/*-------------------------------------------------
VIDEO_START( generic_bitmapped ) - general video
system with a bitmap
-------------------------------------------------*/
@@ -505,9 +494,9 @@ void flip_screen_set(int on)
void flip_screen_set_no_update(int on)
{
- /* flip_screen_y is not updated on purpose
- * this function is for drivers which
- * where writing to flip_screen_x to
+ /* flip_screen_y is not updated on purpose
+ * this function is for drivers which
+ * where writing to flip_screen_x to
* bypass update_flip
*/
flip_screen_x = on;
diff --git a/src/emu/video/generic.h b/src/emu/video/generic.h
index d1cdd32657d..d1be88f59f8 100644
--- a/src/emu/video/generic.h
+++ b/src/emu/video/generic.h
@@ -90,9 +90,6 @@ extern const gfx_layout gfx_16x16x4_planar;
/* set up all the common systems */
void generic_video_init(running_machine *machine);
-/* generic video start */
-VIDEO_START( generic );
-
/* generic video start with a temporary bitmap */
VIDEO_START( generic_bitmapped );
@@ -124,9 +121,9 @@ void flip_screen_set(int on);
void flip_screen_set_no_update(int on); /* will not call update_flip */
void flip_screen_x_set(int on);
void flip_screen_y_set(int on);
-int flip_screen_get(void);
-int flip_screen_x_get(void);
-int flip_screen_y_get(void);
+int flip_screen_get(void);
+int flip_screen_x_get(void);
+int flip_screen_y_get(void);
//#define flip_screen flip_screen_get()
diff --git a/src/mame/drivers/cclimber.c b/src/mame/drivers/cclimber.c
index 36836455245..e87d8c9ab47 100644
--- a/src/mame/drivers/cclimber.c
+++ b/src/mame/drivers/cclimber.c
@@ -123,10 +123,74 @@ Changes:
TODO:
* Verify timings of sound/music on Swimmer.
+
+-------------------------------------------------------------------
+
+ T.S. 17.12.2005:
+
+ Yamato:
+ -------
+ Added temporary bg gradient (bad colors/offset).
+
+ Gradient table are stored in two(?) ROMs.
+ Each table is 256 bytes long: 128 for normal
+ and 128 bytes for flipped screen.
+ Color format is unknown - probably direct RGB
+ mapping of 8 or 16 (both roms) bits. Also table
+ selection source is unknown.
+
+ TODO:
+ - bg gradient color decode & table selection
+
+
+ Top Roller:
+ ----------
+ It's made by the same developers as Yamato and use
+ probably the same encrypted SEGA cpu as Yamato.
+
+ lives - $6155
+
+ TODO:
+
+ - COINB DSW is missing
+ - few issues in cocktail mode
+ - wrong colors (fg text layer) - game sometimes ("round" text , lives) updates only even columns of cell attribs...
+
+-------------------------------------------------------------------
+
+
+ Top Roller
+ Jaleco
+
+ Hardware : Original Jaleco board no 8307-B/8307-A(redump)
+
+ Main CPU : Encrypted Z80 (probably 315-5018)
+ Sound : AY-3-8910
+
+ ROMS CRC32 + positions :
+
+ [9894374d] d5
+ [ef789f00] f5
+ [d45494ba] h5
+ [1cb48ea0] k5
+ [84139f46] l5
+ [e30c1dd8] m5
+ [904fffb6] d3
+ [94371cfb] f3
+ [8a8032a7] h3
+ [1e8914a6] k3
+ [b20a9fa2] l3
+ [7f989dc9] p3
+ [89327329] a4 bottom board 89327329
+ [7a945733] c4 bottom board
+ [5f2c2a78] h4 bottom board bad dump / [1d9e3325] (8307-A)
+ [ce3afe26] j4 bottom board
+
***************************************************************************/
#include "driver.h"
#include "deprecat.h"
+#include "machine/segacrpt.h"
#include "sound/ay8910.h"
#include "sound/samples.h"
#include "includes/cclimber.h"
@@ -134,29 +198,46 @@ TODO:
#define MASTER_CLOCK XTAL_18_432MHz
+static UINT8 yamato_p0;
+static UINT8 yamato_p1;
+static UINT8 toprollr_rombank;
-static WRITE8_HANDLER( cannonb_flip_screen_w )
+static WRITE8_HANDLER( swimmer_sh_soundlatch_w )
{
- flip_screen_set(data);
+ soundlatch_w(offset,data);
+ cpunum_set_input_line_and_vector(Machine, 1,0,HOLD_LINE,0xff);
}
-static WRITE8_HANDLER( flip_screen_x_w )
+static WRITE8_HANDLER( yamato_p0_w )
{
- flip_screen_x_set(data);
+ yamato_p0 = data;
}
-static WRITE8_HANDLER( flip_screen_y_w )
+static WRITE8_HANDLER( yamato_p1_w )
{
- flip_screen_y_set(data);
+ yamato_p1 = data;
}
+static READ8_HANDLER( yamato_p0_r )
+{
+ return yamato_p0;
+}
-static WRITE8_HANDLER( swimmer_sh_soundlatch_w )
+static READ8_HANDLER( yamato_p1_r )
{
- soundlatch_w(offset,data);
- cpunum_set_input_line_and_vector(Machine, 1,0,HOLD_LINE,0xff);
+ return yamato_p1;
+}
+
+
+static WRITE8_HANDLER(toprollr_rombank_w)
+{
+ toprollr_rombank &= ~(1 << offset);
+ toprollr_rombank |= (data & 1) << offset;
+
+ if (toprollr_rombank < 3)
+ memory_set_bank(1, toprollr_rombank);
}
@@ -173,6 +254,8 @@ static MACHINE_RESET( cclimber )
/* we must do this on a timer in order to have it take effect */
/* otherwise, the reset process will override our changes */
timer_call_after_resynch(NULL, 0, disable_interrupts);
+
+ toprollr_rombank = 0;
}
@@ -184,74 +267,112 @@ static ADDRESS_MAP_START( cclimber_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */
AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
+ AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bigsprite_videoram)
AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
+ AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&cclimber_videoram)
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
AM_RANGE(0x9800, 0x981f) AM_RAM AM_BASE(&cclimber_column_scroll)
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_BASE(&cclimber_bigspriteram)
+ AM_RANGE(0x9880, 0x989f) AM_RAM AM_BASE(&cclimber_spriteram)
+ AM_RANGE(0x98dc, 0x98df) AM_RAM AM_BASE(&cclimber_bigsprite_control)
AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(MRA8_RAM, cclimber_colorram_w) AM_BASE(&colorram)
- AM_RANGE(0xa000, 0xa000) AM_READWRITE(input_port_0_r, interrupt_enable_w) /* IN0 */
- AM_RANGE(0xa001, 0xa001) AM_WRITE(flip_screen_x_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITE(flip_screen_y_w)
+ AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(MRA8_RAM, cclimber_colorram_w) AM_BASE(&cclimber_colorram)
+ AM_RANGE(0xa000, 0xa000) AM_READWRITE(input_port_0_r, interrupt_enable_w)
+ AM_RANGE(0xa001, 0xa002) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_flip_screen)
AM_RANGE(0xa003, 0xa003) AM_WRITE(interrupt_enable_w) //used by Crazy Kong Bootleg with alt levels and speed up
AM_RANGE(0xa004, 0xa004) AM_WRITE(cclimber_sample_trigger_w)
- AM_RANGE(0xa800, 0xa800) AM_READWRITE(input_port_1_r, cclimber_sample_rate_w) /* IN1 */
- AM_RANGE(0xb000, 0xb000) AM_READWRITE(input_port_2_r, cclimber_sample_volume_w) /* DSW */
- AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r) /* IN2 */
+ AM_RANGE(0xa800, 0xa800) AM_READWRITE(input_port_1_r, cclimber_sample_rate_w)
+ AM_RANGE(0xb000, 0xb000) AM_READWRITE(input_port_2_r, cclimber_sample_volume_w)
+ AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r)
ADDRESS_MAP_END
-
static ADDRESS_MAP_START( cannonb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x5045, 0x505f) AM_WRITENOP /* do not errorlog this */
AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only, Cannon Ball also */
+ AM_RANGE(0x6000, 0x6bff) AM_RAM
AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_READNOP /* must not return what's written (game will reset after coin insert if it returns 0xff)*/
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
+ AM_RANGE(0x8800, 0x88ff) AM_READWRITE(MRA8_NOP, MWA8_RAM) AM_BASE(&cclimber_bigsprite_videoram) /* must not return what's written (game will reset after coin insert if it returns 0xff)*/
//AM_RANGE(0x8900, 0x8bff) AM_WRITE(MWA8_RAM) /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
+ AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&cclimber_videoram)
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
AM_RANGE(0x9800, 0x981f) AM_RAM AM_BASE(&cclimber_column_scroll)
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_BASE(&cclimber_bigspriteram)
+ AM_RANGE(0x9880, 0x989f) AM_RAM AM_BASE(&cclimber_spriteram)
+ AM_RANGE(0x98dc, 0x98df) AM_RAM AM_BASE(&cclimber_bigsprite_control)
AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(MRA8_RAM, cclimber_colorram_w) AM_BASE(&colorram)
+ AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(MRA8_RAM, cclimber_colorram_w) AM_BASE(&cclimber_colorram)
AM_RANGE(0xa000, 0xa000) AM_READWRITE(input_port_0_r, interrupt_enable_w)
- AM_RANGE(0xa001, 0xa001) AM_WRITE(cannonb_flip_screen_w)
+ AM_RANGE(0xa001, 0xa002) AM_WRITE(cannonb_flip_screen_w) AM_BASE(&cclimber_flip_screen)
AM_RANGE(0xa004, 0xa004) AM_WRITE(cclimber_sample_trigger_w)
AM_RANGE(0xa800, 0xa800) AM_READWRITE(input_port_1_r, cclimber_sample_rate_w)
AM_RANGE(0xb000, 0xb000) AM_READWRITE(input_port_2_r, cclimber_sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r) /* IN2 */
+ AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r)
ADDRESS_MAP_END
-
static ADDRESS_MAP_START( swimmer_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_MIRROR(0x0100) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
+ AM_RANGE(0x8800, 0x88ff) AM_MIRROR(0x0100) AM_RAM AM_BASE(&cclimber_bigsprite_videoram)
+ AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&cclimber_videoram)
AM_RANGE(0x9800, 0x981f) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_column_scroll)
- AM_RANGE(0x9880, 0x989f) AM_WRITE(MWA8_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
- AM_RANGE(0x98fc, 0x98ff) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_bigspriteram)
- AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(MRA8_RAM, cclimber_colorram_w) AM_BASE(&colorram)
+ AM_RANGE(0x9880, 0x989f) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_spriteram)
+ AM_RANGE(0x98fc, 0x98ff) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_bigsprite_control)
+ AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(MRA8_RAM, cclimber_colorram_w) AM_BASE(&cclimber_colorram)
AM_RANGE(0xa000, 0xa000) AM_READWRITE(input_port_0_r, interrupt_enable_w)
- AM_RANGE(0xa001, 0xa001) AM_WRITE(flip_screen_x_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITE(flip_screen_y_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(MWA8_RAM) AM_BASE(&swimmer_sidepanel_enabled)
+ AM_RANGE(0xa001, 0xa002) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_flip_screen)
+ AM_RANGE(0xa003, 0xa003) AM_WRITE(MWA8_RAM) AM_BASE(&swimmer_side_background_enabled)
AM_RANGE(0xa004, 0xa004) AM_WRITE(MWA8_RAM) AM_BASE(&swimmer_palettebank)
AM_RANGE(0xa800, 0xa800) AM_READWRITE(input_port_1_r, swimmer_sh_soundlatch_w)
AM_RANGE(0xb000, 0xb000) AM_READ(input_port_2_r)
- AM_RANGE(0xb800, 0xb800) AM_READWRITE(input_port_3_r, MWA8_RAM) AM_BASE(&swimmer_bgcolor)
+ AM_RANGE(0xb800, 0xb800) AM_READWRITE(input_port_3_r, MWA8_RAM) AM_BASE(&swimmer_background_color)
AM_RANGE(0xb880, 0xb880) AM_READ(input_port_4_r)
AM_RANGE(0xc000, 0xc7ff) AM_RAM /* ??? used by Guzzler */
AM_RANGE(0xe000, 0xffff) AM_ROM /* Guzzler only */
ADDRESS_MAP_END
+static ADDRESS_MAP_START( yamato_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x5fff) AM_ROM
+ AM_RANGE(0x6000, 0x6fff) AM_RAM
+ AM_RANGE(0x7000, 0x7fff) AM_ROM
+ AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bigsprite_videoram)
+ AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
+ AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&cclimber_videoram)
+ /* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
+ /* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
+ AM_RANGE(0x9800, 0x981f) AM_RAM AM_BASE(&cclimber_column_scroll)
+ AM_RANGE(0x9880, 0x989f) AM_RAM AM_BASE(&cclimber_spriteram)
+ AM_RANGE(0x98dc, 0x98df) AM_RAM AM_BASE(&cclimber_bigsprite_control)
+ AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
+ AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(MRA8_RAM, cclimber_colorram_w) AM_BASE(&cclimber_colorram)
+ AM_RANGE(0xa000, 0xa000) AM_READWRITE(input_port_0_r, interrupt_enable_w)
+ AM_RANGE(0xa001, 0xa002) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_flip_screen)
+ AM_RANGE(0xa800, 0xa800) AM_READ(input_port_1_r)
+ AM_RANGE(0xb000, 0xb000) AM_READ(input_port_2_r)
+ AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r)
+ AM_RANGE(0xba00, 0xba00) AM_READ(input_port_4_r) /* IN3 (maybe a mirror of b800) */
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( toprollr_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x5fff) AM_READ(MRA8_BANK1)
+ AM_RANGE(0x6000, 0x6bff) AM_RAM
+ AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bigsprite_videoram)
+ AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_BASE(&toprollr_bg_videoram)
+ AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE(&cclimber_videoram)
+ AM_RANGE(0x9400, 0x97ff) AM_RAM AM_BASE(&toprollr_bg_coloram)
+ AM_RANGE(0x9800, 0x987f) AM_RAM /* unused ? */
+ AM_RANGE(0x9880, 0x995f) AM_RAM AM_BASE(&cclimber_spriteram)
+ AM_RANGE(0x99dc, 0x99df) AM_RAM AM_BASE(&cclimber_bigsprite_control)
+ AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_BASE(&cclimber_colorram)
+ AM_RANGE(0xa000, 0xa000) AM_WRITE(interrupt_enable_w) AM_READ(input_port_0_r)
+ AM_RANGE(0xa001, 0xa002) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_flip_screen)
+ AM_RANGE(0xa004, 0xa004) AM_WRITE(cclimber_sample_trigger_w)
+ AM_RANGE(0xa005, 0xa006) AM_WRITE(toprollr_rombank_w)
+ AM_RANGE(0xa800, 0xa800) AM_READWRITE(input_port_1_r, cclimber_sample_rate_w)
+ AM_RANGE(0xb000, 0xb000) AM_READWRITE(input_port_2_r, cclimber_sample_volume_w)
+ AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r)
+ AM_RANGE(0xc000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( cclimber_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
@@ -260,15 +381,27 @@ static ADDRESS_MAP_START( cclimber_portmap, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x0c, 0x0c) AM_READ(AY8910_read_port_0_r)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( yamato_portmap, ADDRESS_SPACE_IO, 8 )
+ ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
+ AM_RANGE(0x00, 0x00) AM_WRITE(yamato_p0_w) /* ??? */
+ AM_RANGE(0x01, 0x01) AM_WRITE(yamato_p1_w) /* ??? */
+ADDRESS_MAP_END
+
-static ADDRESS_MAP_START( swimmer_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
+static ADDRESS_MAP_START( swimmer_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x2000, 0x23ff) AM_RAM
AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
AM_RANGE(0x4000, 0x4001) AM_RAM /* ??? */
ADDRESS_MAP_END
-static ADDRESS_MAP_START( swimmer_sound_portmap, ADDRESS_SPACE_IO, 8 )
+static ADDRESS_MAP_START( yamato_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x07ff) AM_ROM
+ AM_RANGE(0x5000, 0x53ff) AM_RAM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( swimmer_audio_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_control_port_0_w)
@@ -276,6 +409,16 @@ static ADDRESS_MAP_START( swimmer_sound_portmap, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x81, 0x81) AM_WRITE(AY8910_control_port_1_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( yamato_audio_portmap, ADDRESS_SPACE_IO, 8 )
+ ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
+ AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_control_port_0_w)
+ AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_write_port_0_w)
+ AM_RANGE(0x02, 0x02) AM_WRITE(AY8910_control_port_1_w)
+ AM_RANGE(0x03, 0x03) AM_WRITE(AY8910_write_port_1_w)
+ AM_RANGE(0x04, 0x04) AM_READ(yamato_p0_r) /* ??? */
+ AM_RANGE(0x08, 0x08) AM_READ(yamato_p1_r) /* ??? */
+ADDRESS_MAP_END
+
#define CCIN0\
@@ -705,47 +848,177 @@ static INPUT_PORTS_START( guzzler )
PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+static INPUT_PORTS_START( yamato )
+ PORT_START
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+
+ PORT_START
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
+
+ PORT_START
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPSETTING( 0x02, "5" )
+ PORT_DIPSETTING( 0x03, "6" )
+ PORT_DIPNAME( 0x1c, 0x00, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x1c, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x00, "Every 30000" )
+ PORT_DIPSETTING( 0x20, "Every 50000" )
+ PORT_DIPNAME( 0x40, 0x00, "Speed" )
+ PORT_DIPSETTING( 0x00, "Slow" )
+ PORT_DIPSETTING( 0x40, "Fast" )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) /* set 1 only */
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN3 ) /* set 1 only */
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START /* IN3 */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( toprollr )
+ PORT_START
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+
+ PORT_START
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
+
+ PORT_START
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPSETTING( 0x02, "5" )
+ PORT_DIPSETTING( 0x03, "6" )
+ PORT_DIPNAME( 0x1c, 0x00, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x1c, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x00, "Every 30000" )
+ PORT_DIPSETTING( 0x20, "Every 50000" )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 )
+INPUT_PORTS_END
+
-static const gfx_layout charlayout =
+static const gfx_layout cclimber_charlayout =
{
- 8,8, /* 8*8 characters */
- 512, /* 512 characters (256 in Crazy Climber) */
- 2, /* 2 bits per pixel */
- { 0, 512*8*8 }, /* the two bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7 }, /* pretty straightforward layout */
+ 8,8,
+ RGN_FRAC(1,2),
+ 2,
+ { 0, RGN_FRAC(1,2) },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8 /* every char takes 8 consecutive bytes */
+ 8*8
+};
+
+static const gfx_layout cclimber_spritelayout =
+{
+ 16,16,
+ RGN_FRAC(1,2),
+ 2,
+ { 0, RGN_FRAC(1,2) },
+ { 0, 1, 2, 3, 4, 5, 6, 7,
+ 8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
+ 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
+ 32*8
};
-static const gfx_layout bscharlayout =
+
+static const gfx_layout cannonb_charlayout =
{
- 8,8, /* 8*8 characters */
- 256, /* 256 characters */
- 2, /* 2 bits per pixel */
- { 0, 256*8*8 }, /* the bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7 }, /* pretty straightforward layout */
+ 8,8,
+ 512,
+ 2,
+ { 0, 1024*8*8 },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8 /* every char takes 8 consecutive bytes */
+ 8*8
};
-static const gfx_layout spritelayout =
+
+static const gfx_layout cannonb_spritelayout =
{
- 16,16, /* 16*16 sprites */
- 128, /* 128 sprites (64 in Crazy Climber) */
- 2, /* 2 bits per pixel */
- { 0, 128*16*16 }, /* the bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7, /* pretty straightforward layout */
+ 16,16,
+ 64,
+ 2,
+ { 0, 256*16*16 },
+ { 0, 1, 2, 3, 4, 5, 6, 7,
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
- 32*8 /* every sprite takes 32 consecutive bytes */
+ 32*8
};
static const gfx_layout swimmer_charlayout =
{
- 8,8, /* 8*8 characters */
- 512, /* 512 characters */
- 3, /* 3 bits per pixel */
- { 0, 512*8*8, 512*2*8*8 }, /* the bitplanes are separated */
+ 8,8,
+ RGN_FRAC(1,3),
+ 3,
+ { 0, RGN_FRAC(1,3), RGN_FRAC(2,3) },
{ 0, 1, 2, 3, 4, 5, 6, 7 }, /* characters are upside down */
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 /* every char takes 8 consecutive bytes */
@@ -753,34 +1026,45 @@ static const gfx_layout swimmer_charlayout =
static const gfx_layout swimmer_spritelayout =
{
- 16,16, /* 16*16 sprites */
- 128, /* 128 sprites */
- 3, /* 3 bits per pixel */
- { 0, 128*16*16, 128*2*16*16 }, /* the bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7, /* pretty straightforward layout */
+ 16,16,
+ RGN_FRAC(1,3),
+ 3,
+ { 0, RGN_FRAC(1,3), RGN_FRAC(2,3) },
+ { 0, 1, 2, 3, 4, 5, 6, 7,
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
- 32*8 /* every sprite takes 32 consecutive bytes */
+ 32*8
};
static GFXDECODE_START( cclimber )
- GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 16 ) /* char set #1 */
- GFXDECODE_ENTRY( REGION_GFX1, 0x2000, charlayout, 0, 16 ) /* char set #2 */
- GFXDECODE_ENTRY( REGION_GFX2, 0x0000, bscharlayout, 16*4, 8 ) /* big sprite char set */
- GFXDECODE_ENTRY( REGION_GFX1, 0x0000, spritelayout, 0, 16 ) /* sprite set #1 */
- GFXDECODE_ENTRY( REGION_GFX1, 0x2000, spritelayout, 0, 16 ) /* sprite set #2 */
+ GFXDECODE_ENTRY( REGION_GFX1, 0x0000, cclimber_charlayout, 0, 16 ) /* characters */
+ GFXDECODE_ENTRY( REGION_GFX1, 0x0000, cclimber_spritelayout, 0, 16 ) /* sprites */
+ GFXDECODE_ENTRY( REGION_GFX2, 0x0000, cclimber_charlayout, 16*4, 8 ) /* big sprites */
+GFXDECODE_END
+
+static GFXDECODE_START( cannonb )
+ GFXDECODE_ENTRY( REGION_GFX1, 0x0000, cannonb_charlayout, 0, 16 ) /* characters */
+ GFXDECODE_ENTRY( REGION_GFX1, 0x1000, cannonb_spritelayout, 0, 16 ) /* sprites */
+ GFXDECODE_ENTRY( REGION_GFX2, 0x0000, cclimber_charlayout, 16*4, 8 ) /* big sprites */
GFXDECODE_END
static GFXDECODE_START( swimmer )
- GFXDECODE_ENTRY( REGION_GFX1, 0, swimmer_charlayout, 0, 64 ) /* characters */
- GFXDECODE_ENTRY( REGION_GFX1, 0, swimmer_spritelayout, 0, 32 ) /* sprite set #1 */
- GFXDECODE_ENTRY( REGION_GFX2, 0, swimmer_charlayout, 64*8, 4 ) /* big sprite set */
+ GFXDECODE_ENTRY( REGION_GFX1, 0x0000, swimmer_charlayout, 0, 32 ) /* characters */
+ GFXDECODE_ENTRY( REGION_GFX1, 0x0000, swimmer_spritelayout, 0, 32 ) /* sprites */
+ GFXDECODE_ENTRY( REGION_GFX2, 0x0000, swimmer_charlayout, 32*8, 4 ) /* big sprites */
GFXDECODE_END
+static GFXDECODE_START( toprollr )
+ GFXDECODE_ENTRY( REGION_GFX1, 0x0000, cclimber_charlayout, 0, 16 )
+ GFXDECODE_ENTRY( REGION_GFX1, 0x0000, cclimber_spritelayout, 0, 16 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0x0000, cclimber_charlayout, 16*4, 8 ) /* big sprites */
+ GFXDECODE_ENTRY( REGION_GFX3, 0x0000, cclimber_charlayout, 24*4, 16 )
+GFXDECODE_END
-static MACHINE_DRIVER_START( cclimber )
+
+static MACHINE_DRIVER_START( root )
/* basic machine hardware */
MDRV_CPU_ADD_TAG("main", Z80, MASTER_CLOCK/3/2) /* 3.072 MHz */
@@ -802,8 +1086,14 @@ static MACHINE_DRIVER_START( cclimber )
MDRV_PALETTE_LENGTH(16*4+8*4)
MDRV_PALETTE_INIT(cclimber)
- MDRV_VIDEO_START(generic)
+ MDRV_VIDEO_START(cclimber)
MDRV_VIDEO_UPDATE(cclimber)
+MACHINE_DRIVER_END
+
+
+static MACHINE_DRIVER_START( cclimber )
+
+ MDRV_IMPORT_FROM(root)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
@@ -827,7 +1117,54 @@ static MACHINE_DRIVER_START( cannonb )
MDRV_CPU_PROGRAM_MAP(cannonb_map,0)
/* video hardware */
- MDRV_VIDEO_UPDATE(cannonb)
+ MDRV_GFXDECODE(cannonb)
+MACHINE_DRIVER_END
+
+
+static MACHINE_DRIVER_START( yamato )
+
+ MDRV_IMPORT_FROM(root)
+
+ /* basic machine hardware */
+ MDRV_CPU_MODIFY("main")
+ MDRV_CPU_PROGRAM_MAP(yamato_map,0)
+ MDRV_CPU_IO_MAP(yamato_portmap,0)
+
+ MDRV_CPU_ADD(Z80, 3072000) /* 3.072 MHz ? */
+ MDRV_CPU_PROGRAM_MAP(yamato_audio_map,0)
+ MDRV_CPU_IO_MAP(yamato_audio_portmap,0)
+
+ /* video hardware */
+ MDRV_PALETTE_LENGTH(16*4+8*4+256)
+ MDRV_PALETTE_INIT(yamato)
+ MDRV_VIDEO_UPDATE(yamato)
+
+ /* audio hardware */
+ MDRV_SPEAKER_STANDARD_MONO("mono")
+
+ MDRV_SOUND_ADD(AY8910, 1536000)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MDRV_SOUND_ADD(AY8910, 1536000)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_DRIVER_END
+
+
+static MACHINE_DRIVER_START( toprollr )
+
+ MDRV_IMPORT_FROM(cclimber)
+
+ /* basic machine hardware */
+ MDRV_CPU_MODIFY("main")
+ MDRV_CPU_PROGRAM_MAP(toprollr_map,0)
+
+ /* video hardware */
+ MDRV_GFXDECODE(toprollr)
+ MDRV_PALETTE_LENGTH(32*5)
+ MDRV_PALETTE_INIT(toprollr)
+
+ MDRV_VIDEO_START(toprollr)
+ MDRV_VIDEO_UPDATE(toprollr)
MACHINE_DRIVER_END
@@ -839,8 +1176,8 @@ static MACHINE_DRIVER_START( swimmer )
MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
MDRV_CPU_ADD(Z80,4000000/2)
- MDRV_CPU_PROGRAM_MAP(swimmer_sound_map,0)
- MDRV_CPU_IO_MAP(swimmer_sound_portmap,0)
+ MDRV_CPU_PROGRAM_MAP(swimmer_audio_map,0)
+ MDRV_CPU_IO_MAP(swimmer_audio_portmap,0)
MDRV_CPU_PERIODIC_INT(nmi_line_pulse, (double)4000000/16384) /* IRQs are triggered by the main CPU */
/* video hardware */
@@ -852,13 +1189,13 @@ static MACHINE_DRIVER_START( swimmer )
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(swimmer)
- MDRV_PALETTE_LENGTH(64*8+4*8)
+ MDRV_PALETTE_LENGTH(32*8+4*8+1)
MDRV_PALETTE_INIT(swimmer)
- MDRV_VIDEO_START(generic)
+ MDRV_VIDEO_START(swimmer)
MDRV_VIDEO_UPDATE(swimmer)
- /* sound hardware */
+ /* audio hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(AY8910, 4000000/2)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
@@ -884,13 +1221,13 @@ ROM_START( cclimber )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "cc06", 0x0000, 0x0800, CRC(481b64cc) SHA1(3f35c545fc784ed4f969aba2d7be6e13a5ae32b7) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "cc04", 0x1000, 0x0800, CRC(332347cb) SHA1(4115ca32af73f1791635b7d9e093bf77088a8222) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "cc05", 0x2000, 0x0800, CRC(2c33b760) SHA1(2edea8fe13376fbd51a5586d97aba3b30d78e94b) )
- /* empty hole - Crazy Kong has an additional ROM here */
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "cc05", 0x1000, 0x0800, CRC(2c33b760) SHA1(2edea8fe13376fbd51a5586d97aba3b30d78e94b) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "cc04", 0x2000, 0x0800, CRC(332347cb) SHA1(4115ca32af73f1791635b7d9e093bf77088a8222) )
+ /* 0x2800-0x2fff - empty */
ROM_LOAD( "cc03", 0x3000, 0x0800, CRC(4e4b3658) SHA1(0d39a8cb5cd6cf06008be60707f9b277a8a32a2d) )
- /* empty hole - Crazy Kong has an additional ROM here */
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "cc02", 0x0000, 0x0800, CRC(14f3ecc9) SHA1(a1b5121abfbe8f07580eb3fa6384352d239a3d75) )
@@ -916,13 +1253,13 @@ ROM_START( cclimbrj )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "cc06", 0x0000, 0x0800, CRC(481b64cc) SHA1(3f35c545fc784ed4f969aba2d7be6e13a5ae32b7) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "cc04", 0x1000, 0x0800, CRC(332347cb) SHA1(4115ca32af73f1791635b7d9e093bf77088a8222) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "cc05", 0x2000, 0x0800, CRC(2c33b760) SHA1(2edea8fe13376fbd51a5586d97aba3b30d78e94b) )
- /* empty hole - Crazy Kong has an additional ROM here */
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "cc05", 0x1000, 0x0800, CRC(2c33b760) SHA1(2edea8fe13376fbd51a5586d97aba3b30d78e94b) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "cc04", 0x2000, 0x0800, CRC(332347cb) SHA1(4115ca32af73f1791635b7d9e093bf77088a8222) )
+ /* 0x2800-0x2fff - empty */
ROM_LOAD( "cc03", 0x3000, 0x0800, CRC(4e4b3658) SHA1(0d39a8cb5cd6cf06008be60707f9b277a8a32a2d) )
- /* empty hole - Crazy Kong has an additional ROM here */
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "cc02", 0x0000, 0x0800, CRC(14f3ecc9) SHA1(a1b5121abfbe8f07580eb3fa6384352d239a3d75) )
@@ -948,13 +1285,13 @@ ROM_START( ccboot )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "cc06", 0x0000, 0x0800, CRC(481b64cc) SHA1(3f35c545fc784ed4f969aba2d7be6e13a5ae32b7) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "m04.bin", 0x1000, 0x0800, CRC(6fb80538) SHA1(6ba5add5c0190e79191b3fa749a1b94e766e3950) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "m05.bin", 0x2000, 0x0800, CRC(056af36b) SHA1(756a295bbf7ede201b2e4cb106ce67a127e008de) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "m03.bin", 0x3000, 0x0800, CRC(67127253) SHA1(e27556ed74e73644a2578ce6645c312d64f484c6) )
- /* empty hole - Crazy Kong has an additional ROM here */
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "m05.bin", 0x1000, 0x0800, CRC(056af36b) SHA1(756a295bbf7ede201b2e4cb106ce67a127e008de) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "m04.bin", 0x2000, 0x0800, CRC(6fb80538) SHA1(6ba5add5c0190e79191b3fa749a1b94e766e3950) )
+ /* 0x2800-0x2fff - empty */
+ ROM_LOAD( "m03.bin", 0x3800, 0x0800, CRC(67127253) SHA1(e27556ed74e73644a2578ce6645c312d64f484c6) )
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "m02.bin", 0x0000, 0x0800, CRC(7f4877de) SHA1(c9aa9ff1b6cf907917fedfbd419b15ac337cf7bb) )
@@ -981,13 +1318,13 @@ ROM_START( ccboot2 )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "cc06", 0x0000, 0x0800, CRC(481b64cc) SHA1(3f35c545fc784ed4f969aba2d7be6e13a5ae32b7) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "cc04", 0x1000, 0x0800, CRC(332347cb) SHA1(4115ca32af73f1791635b7d9e093bf77088a8222) )
- /* empty hole - Crazy Kong has an additional ROM here */
- ROM_LOAD( "cc05", 0x2000, 0x0800, CRC(2c33b760) SHA1(2edea8fe13376fbd51a5586d97aba3b30d78e94b) )
- /* empty hole - Crazy Kong has an additional ROM here */
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "cc05", 0x1000, 0x0800, CRC(2c33b760) SHA1(2edea8fe13376fbd51a5586d97aba3b30d78e94b) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "cc04", 0x2000, 0x0800, CRC(332347cb) SHA1(4115ca32af73f1791635b7d9e093bf77088a8222) )
+ /* 0x2800-0x2fff - empty */
ROM_LOAD( "cc03", 0x3000, 0x0800, CRC(4e4b3658) SHA1(0d39a8cb5cd6cf06008be60707f9b277a8a32a2d) )
- /* empty hole - Crazy Kong has an additional ROM here */
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "cc02", 0x0000, 0x0800, CRC(14f3ecc9) SHA1(a1b5121abfbe8f07580eb3fa6384352d239a3d75) )
@@ -1015,8 +1352,8 @@ ROM_START( ckong )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "n11-06.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
- ROM_LOAD( "k11-04.bin", 0x1000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
- ROM_LOAD( "l11-05.bin", 0x2000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "l11-05.bin", 0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "k11-04.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
ROM_LOAD( "h11-03.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1044,8 +1381,8 @@ ROM_START( ckonga )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "n11-06.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
- ROM_LOAD( "k11-04.bin", 0x1000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
- ROM_LOAD( "l11-05.bin", 0x2000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "l11-05.bin", 0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "k11-04.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
ROM_LOAD( "h11-03.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1073,8 +1410,8 @@ ROM_START( ckongjeu )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "n11-06.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
- ROM_LOAD( "k11-04.bin", 0x1000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
- ROM_LOAD( "l11-05.bin", 0x2000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "l11-05.bin", 0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "k11-04.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
ROM_LOAD( "h11-03.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1103,12 +1440,12 @@ ROM_START( ckongo )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
/* same as ckong but with halves switched */
ROM_LOAD( "o50b-1", 0x0000, 0x0800, CRC(cae9e2bf) SHA1(bc62d98840b8b5b296de0f1379baabb1b4d25df0) )
- ROM_CONTINUE( 0x2000, 0x0800 )
+ ROM_CONTINUE( 0x1000, 0x0800 )
ROM_LOAD( "o50b-2", 0x0800, 0x0800, CRC(fba82114) SHA1(36b7c124edf73b01681f5d63867fafa38a31abbf) )
- ROM_CONTINUE( 0x2800, 0x0800 )
- ROM_LOAD( "o50b-3", 0x1000, 0x0800, CRC(1714764b) SHA1(b025fcc03d45b1ec29be7e292622745544ba891d) )
+ ROM_CONTINUE( 0x1800, 0x0800 )
+ ROM_LOAD( "o50b-3", 0x2000, 0x0800, CRC(1714764b) SHA1(b025fcc03d45b1ec29be7e292622745544ba891d) )
ROM_CONTINUE( 0x3000, 0x0800 )
- ROM_LOAD( "o50b-4", 0x1800, 0x0800, CRC(b7008b57) SHA1(9328ff79947dbebdc3e2dd8bcc362667b8201476) )
+ ROM_LOAD( "o50b-4", 0x2800, 0x0800, CRC(b7008b57) SHA1(9328ff79947dbebdc3e2dd8bcc362667b8201476) )
ROM_CONTINUE( 0x3800, 0x0800 )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1136,8 +1473,8 @@ ROM_START( ckongalc )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "ck6.bin", 0x0000, 0x1000, CRC(a8916dc8) SHA1(472520aae3837e6026f2a7577d3b2aff371a316c) )
- ROM_LOAD( "ck4.bin", 0x1000, 0x1000, CRC(b62a0367) SHA1(8c285cbc714d7e6589bd63b3cef7c841ed1c2a4e) )
- ROM_LOAD( "ck5.bin", 0x2000, 0x1000, CRC(cd3b5dde) SHA1(2319a2be04d70989b01f4fc703756ba6e1c1f388) )
+ ROM_LOAD( "ck5.bin", 0x1000, 0x1000, CRC(cd3b5dde) SHA1(2319a2be04d70989b01f4fc703756ba6e1c1f388) )
+ ROM_LOAD( "ck4.bin", 0x2000, 0x1000, CRC(b62a0367) SHA1(8c285cbc714d7e6589bd63b3cef7c841ed1c2a4e) )
ROM_LOAD( "ck3.bin", 0x3000, 0x1000, CRC(61122c5e) SHA1(978b6dbec35f3adc651fddf332db17625099a92e) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1165,8 +1502,8 @@ ROM_START( bigkong )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "n11-06.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
- ROM_LOAD( "k11-04.bin", 0x1000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
- ROM_LOAD( "l11-05.bin", 0x2000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "l11-05.bin", 0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "k11-04.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
ROM_LOAD( "h11-03.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1194,8 +1531,8 @@ ROM_START( monkeyd )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "ck6.bin", 0x0000, 0x1000, CRC(a8916dc8) SHA1(472520aae3837e6026f2a7577d3b2aff371a316c) )
- ROM_LOAD( "ck4.bin", 0x1000, 0x1000, CRC(b62a0367) SHA1(8c285cbc714d7e6589bd63b3cef7c841ed1c2a4e) )
- ROM_LOAD( "ck5.bin", 0x2000, 0x1000, CRC(cd3b5dde) SHA1(2319a2be04d70989b01f4fc703756ba6e1c1f388) )
+ ROM_LOAD( "ck5.bin", 0x1000, 0x1000, CRC(cd3b5dde) SHA1(2319a2be04d70989b01f4fc703756ba6e1c1f388) )
+ ROM_LOAD( "ck4.bin", 0x2000, 0x1000, CRC(b62a0367) SHA1(8c285cbc714d7e6589bd63b3cef7c841ed1c2a4e) )
ROM_LOAD( "ck3.bin", 0x3000, 0x1000, CRC(61122c5e) SHA1(978b6dbec35f3adc651fddf332db17625099a92e) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1223,8 +1560,8 @@ ROM_START( ckongb )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "n11-6.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
- ROM_LOAD( "k11-4.bin", 0x1000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
- ROM_LOAD( "l11-5.bin", 0x2000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "l11-5.bin", 0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "k11-4.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
ROM_LOAD( "h11-3.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1241,24 +1578,29 @@ ROM_START( ckongb )
ROM_LOAD( "r05-13.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
-ROM_START( rpatrolb )
+/* This set came from a 'Silver Land' board with Silver Land GFX roms, however, the program roms are nearly
+ the same as River Patrol but appear to have an original ORCA copyright
+
+ I think the board was a half-converted board as 'Water Gage' and 'Bon Voyage' don't really fit the theme
+ of Silver Land so I'm loading the River Patrol GFX instead as they fit better
+*/
+ROM_START( rpatrol )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
- ROM_LOAD( "rp1.4l", 0x0000, 0x1000, CRC(bfd7ae7a) SHA1(a06d1cc2674ed40d0bfa67dd6d724964c1e40600) )
- ROM_LOAD( "rp2.4j", 0x1000, 0x1000, CRC(03f53340) SHA1(35336945f4b634fc4c7791ac9c9e6643c8cd8006) )
- ROM_LOAD( "rp3.4f", 0x2000, 0x1000, CRC(8fa300df) SHA1(5c3ba1ef6c1ce8df437b4fa464293208630b5e8d) )
- ROM_LOAD( "rp4.4e", 0x3000, 0x1000, CRC(74a8f1f4) SHA1(6bbc4944e4b31425a6b82f370b6760e5a4b36f56) )
- ROM_LOAD( "rp5.4c", 0x4000, 0x1000, CRC(d7ef6c87) SHA1(38e3b44b355907824919acc4f5064dcb98ebb1d0) )
- /* no ROM at 5000 */
+ ROM_LOAD( "sci1.bin", 0x0000, 0x1000, CRC(33b01c90) SHA1(9c8da6dd963bfb0544ef99b8fdedcf86c32cdb6b) )
+ ROM_LOAD( "sci2.bin", 0x1000, 0x1000, CRC(03f53340) SHA1(35336945f4b634fc4c7791ac9c9e6643c8cd8006) )
+ ROM_LOAD( "sci3.bin", 0x2000, 0x1000, CRC(8fa300df) SHA1(5c3ba1ef6c1ce8df437b4fa464293208630b5e8d) )
+ ROM_LOAD( "sci4.bin", 0x3000, 0x1000, CRC(74a8f1f4) SHA1(6bbc4944e4b31425a6b82f370b6760e5a4b36f56) )
+ ROM_LOAD( "sci5.bin", 0x4000, 0x1000, CRC(d7ef6c87) SHA1(38e3b44b355907824919acc4f5064dcb98ebb1d0) )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "rp6.6n", 0x0000, 0x0800, CRC(19f18e9e) SHA1(a5500ac36bcda772f3ba79d9e9d37b1eec7bfd13) )
- /* 0800-0fff empty */
- ROM_LOAD( "rp8.6k", 0x1000, 0x0800, CRC(008738c7) SHA1(a66d9daf31b0d9cf087b591c74f0aaee3d7607b5) )
- /* 1800-1fff empty */
- ROM_LOAD( "rp7.6l", 0x2000, 0x0800, CRC(07f2070d) SHA1(39df286fda9e48eba6e770fe23a603b5e10d88b6) )
- /* 2800-2fff empty */
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "rp7.6l", 0x1000, 0x0800, CRC(07f2070d) SHA1(39df286fda9e48eba6e770fe23a603b5e10d88b6) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "rp8.6k", 0x2000, 0x0800, CRC(008738c7) SHA1(a66d9daf31b0d9cf087b591c74f0aaee3d7607b5) )
+ /* 0x2800-0x2fff - empty */
ROM_LOAD( "rp9.6h", 0x3000, 0x0800, CRC(ea5aafca) SHA1(d8f8fe270680ae261d63bd4702107961cd904699) )
- /* 3800-3fff empty */
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "rp10.6a", 0x0000, 0x0800, CRC(59747c31) SHA1(92acf07489f3e17f0c1769a0df15b6ddb117830f) )
@@ -1269,63 +1611,48 @@ ROM_START( rpatrolb )
ROM_LOAD( "bprom2.9p", 0x0020, 0x0020, CRC(1743bd26) SHA1(9bb50f6e24a7ac3c9ddf3923e57c5532603009e5) )
ROM_LOAD( "bprom3.9c", 0x0040, 0x0020, CRC(ee03bc96) SHA1(45e33e750a536a904f30136d84dd7993d97e8e54) )
- /* no samples */
-ROM_END
-
-ROM_START( silvland )
- ROM_REGION( 0x10000, REGION_CPU1, 0 )
- ROM_LOAD( "7.2r", 0x0000, 0x1000, CRC(57e6be62) SHA1(c1d47970f8209256c9ccd6512b921dec6c276998) )
- ROM_LOAD( "8.1n", 0x1000, 0x1000, CRC(bbb2b287) SHA1(93cd4ebe238c189c80be8b8ab1ec2649256dd6ea) )
- ROM_LOAD( "rp3.4f", 0x2000, 0x1000, CRC(8fa300df) SHA1(5c3ba1ef6c1ce8df437b4fa464293208630b5e8d) )
- ROM_LOAD( "10.2n", 0x3000, 0x1000, CRC(5536a65d) SHA1(0bf2b9ea76fd6fd8c0475bf6f49a42f1c96d3906) )
- ROM_LOAD( "11.1r", 0x4000, 0x1000, CRC(6f23f66f) SHA1(3ca8075c28956ec473ccb0e9f05e9ad8669f743d) )
- ROM_LOAD( "12.2k", 0x5000, 0x1000, CRC(26f1537c) SHA1(0468352d49edec3a52e32612856735b78e11079b) )
-
+ // these are the GFX Roms found on the board, from Silver Land, but IMO not correct for this program
+#if 0
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
- ROM_LOAD( "6.6n", 0x0000, 0x0800, CRC(affb804f) SHA1(9fc77804690e91773787e06f3329accef075f9f3) )
- /* 0800-0fff empty */
- ROM_LOAD( "4.6k", 0x1000, 0x0800, CRC(e487579d) SHA1(aed59f15dbc904d73e19d914ccd0a86fda859085) )
- /* 1800-1fff empty */
- ROM_LOAD( "5.6l", 0x2000, 0x0800, CRC(ad4642e5) SHA1(f4de2d9ed0e69c002be07f47247e95167a3ffffb) )
- /* 2800-2fff empty */
- ROM_LOAD( "3.6h", 0x3000, 0x0800, CRC(59125a1a) SHA1(37638fb690d6b4f11585f6a13586271c2f0e3743) )
- /* 3800-3fff empty */
+ ROM_LOAD( "sci46.bin", 0x0000, 0x0800, CRC(affb804f) SHA1(9fc77804690e91773787e06f3329accef075f9f3) )
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "sci45.bin", 0x1000, 0x0800, CRC(ad4642e5) SHA1(f4de2d9ed0e69c002be07f47247e95167a3ffffb) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "sci44.bin", 0x2000, 0x0800, CRC(e487579d) SHA1(aed59f15dbc904d73e19d914ccd0a86fda859085) )
+ /* 0x2800-0x2fff - empty */
+ ROM_LOAD( "sci43.bin", 0x3000, 0x0800, CRC(59125a1a) SHA1(37638fb690d6b4f11585f6a13586271c2f0e3743) )
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
- ROM_LOAD( "2.6c", 0x0000, 0x0800, CRC(c8d32b8e) SHA1(7d655d243ed13cf2537f3fdfde5bf34229f7cb84) )
- ROM_LOAD( "1.6a", 0x0800, 0x0800, CRC(ee333daf) SHA1(b02998dccec9a4f841838874221caabae8380fcc) )
+ ROM_LOAD( "sci42.bin", 0x0000, 0x0800, CRC(c8d32b8e) SHA1(7d655d243ed13cf2537f3fdfde5bf34229f7cb84) )
+ ROM_LOAD( "sci41.bin", 0x0800, 0x0800, CRC(ee333daf) SHA1(b02998dccec9a4f841838874221caabae8380fcc) )
ROM_REGION( 0x0060, REGION_PROMS, 0 )
ROM_LOAD( "mb7051.1v", 0x0000, 0x0020, CRC(1d2343b1) SHA1(294f22178af4532abf767c1ffe2dc831bbe683bf) )
ROM_LOAD( "mb7051.1u", 0x0020, 0x0020, CRC(c174753c) SHA1(303bfb1f470b525ccaeafa81a38a4bc3a7de5dbb) )
ROM_LOAD( "mb7051.1t", 0x0040, 0x0020, CRC(04a1be01) SHA1(9c270c04d374d46752ec99bd4e79fed1e2896bc0) )
-
+#endif
/* no samples */
ROM_END
-/* This set came from a 'Silver Land' board with Silver Land GFX roms, however, the program roms are nearly
- the same as River Patrol but appear to have an original ORCA copyright
-
- I think the board was a half-converted board as 'Water Gage' and 'Bon Voyage' don't really fit the theme
- of Silver Land so I'm loading the River Patrol GFX instead as they fit better
-*/
-ROM_START( rpatrol )
+ROM_START( rpatrolb )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
- ROM_LOAD( "sci1.bin", 0x0000, 0x1000, CRC(33b01c90) SHA1(9c8da6dd963bfb0544ef99b8fdedcf86c32cdb6b) )
- ROM_LOAD( "sci2.bin", 0x1000, 0x1000, CRC(03f53340) SHA1(35336945f4b634fc4c7791ac9c9e6643c8cd8006) )
- ROM_LOAD( "sci3.bin", 0x2000, 0x1000, CRC(8fa300df) SHA1(5c3ba1ef6c1ce8df437b4fa464293208630b5e8d) )
- ROM_LOAD( "sci4.bin", 0x3000, 0x1000, CRC(74a8f1f4) SHA1(6bbc4944e4b31425a6b82f370b6760e5a4b36f56) )
- ROM_LOAD( "sci5.bin", 0x4000, 0x1000, CRC(d7ef6c87) SHA1(38e3b44b355907824919acc4f5064dcb98ebb1d0) )
+ ROM_LOAD( "rp1.4l", 0x0000, 0x1000, CRC(bfd7ae7a) SHA1(a06d1cc2674ed40d0bfa67dd6d724964c1e40600) )
+ ROM_LOAD( "rp2.4j", 0x1000, 0x1000, CRC(03f53340) SHA1(35336945f4b634fc4c7791ac9c9e6643c8cd8006) )
+ ROM_LOAD( "rp3.4f", 0x2000, 0x1000, CRC(8fa300df) SHA1(5c3ba1ef6c1ce8df437b4fa464293208630b5e8d) )
+ ROM_LOAD( "rp4.4e", 0x3000, 0x1000, CRC(74a8f1f4) SHA1(6bbc4944e4b31425a6b82f370b6760e5a4b36f56) )
+ ROM_LOAD( "rp5.4c", 0x4000, 0x1000, CRC(d7ef6c87) SHA1(38e3b44b355907824919acc4f5064dcb98ebb1d0) )
+ /* no ROM at 5000 */
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "rp6.6n", 0x0000, 0x0800, CRC(19f18e9e) SHA1(a5500ac36bcda772f3ba79d9e9d37b1eec7bfd13) )
- /* 0800-0fff empty */
- ROM_LOAD( "rp8.6k", 0x1000, 0x0800, CRC(008738c7) SHA1(a66d9daf31b0d9cf087b591c74f0aaee3d7607b5) )
- /* 1800-1fff empty */
- ROM_LOAD( "rp7.6l", 0x2000, 0x0800, CRC(07f2070d) SHA1(39df286fda9e48eba6e770fe23a603b5e10d88b6) )
- /* 2800-2fff empty */
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "rp7.6l", 0x1000, 0x0800, CRC(07f2070d) SHA1(39df286fda9e48eba6e770fe23a603b5e10d88b6) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "rp8.6k", 0x2000, 0x0800, CRC(008738c7) SHA1(a66d9daf31b0d9cf087b591c74f0aaee3d7607b5) )
+ /* 0x2800-0x2fff - empty */
ROM_LOAD( "rp9.6h", 0x3000, 0x0800, CRC(ea5aafca) SHA1(d8f8fe270680ae261d63bd4702107961cd904699) )
- /* 3800-3fff empty */
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "rp10.6a", 0x0000, 0x0800, CRC(59747c31) SHA1(92acf07489f3e17f0c1769a0df15b6ddb117830f) )
@@ -1336,27 +1663,37 @@ ROM_START( rpatrol )
ROM_LOAD( "bprom2.9p", 0x0020, 0x0020, CRC(1743bd26) SHA1(9bb50f6e24a7ac3c9ddf3923e57c5532603009e5) )
ROM_LOAD( "bprom3.9c", 0x0040, 0x0020, CRC(ee03bc96) SHA1(45e33e750a536a904f30136d84dd7993d97e8e54) )
- // these are the GFX Roms found on the board, from Silver Land, but IMO not correct for this program
-#if 0
+ /* no samples */
+ROM_END
+
+ROM_START( silvland )
+ ROM_REGION( 0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "7.2r", 0x0000, 0x1000, CRC(57e6be62) SHA1(c1d47970f8209256c9ccd6512b921dec6c276998) )
+ ROM_LOAD( "8.1n", 0x1000, 0x1000, CRC(bbb2b287) SHA1(93cd4ebe238c189c80be8b8ab1ec2649256dd6ea) )
+ ROM_LOAD( "rp3.4f", 0x2000, 0x1000, CRC(8fa300df) SHA1(5c3ba1ef6c1ce8df437b4fa464293208630b5e8d) )
+ ROM_LOAD( "10.2n", 0x3000, 0x1000, CRC(5536a65d) SHA1(0bf2b9ea76fd6fd8c0475bf6f49a42f1c96d3906) )
+ ROM_LOAD( "11.1r", 0x4000, 0x1000, CRC(6f23f66f) SHA1(3ca8075c28956ec473ccb0e9f05e9ad8669f743d) )
+ ROM_LOAD( "12.2k", 0x5000, 0x1000, CRC(26f1537c) SHA1(0468352d49edec3a52e32612856735b78e11079b) )
+
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
- ROM_LOAD( "sci46.bin", 0x0000, 0x0800, CRC(affb804f) SHA1(9fc77804690e91773787e06f3329accef075f9f3) )
- /* 0800-0fff empty */
- ROM_LOAD( "sci44.bin", 0x1000, 0x0800, CRC(e487579d) SHA1(aed59f15dbc904d73e19d914ccd0a86fda859085) )
- /* 1800-1fff empty */
- ROM_LOAD( "sci45.bin", 0x2000, 0x0800, CRC(ad4642e5) SHA1(f4de2d9ed0e69c002be07f47247e95167a3ffffb) )
- /* 2800-2fff empty */
- ROM_LOAD( "sci43.bin", 0x3000, 0x0800, CRC(59125a1a) SHA1(37638fb690d6b4f11585f6a13586271c2f0e3743) )
- /* 3800-3fff empty */
+ ROM_LOAD( "6.6n", 0x0000, 0x0800, CRC(affb804f) SHA1(9fc77804690e91773787e06f3329accef075f9f3) )
+ /* 0x0800-0x0fff - empty */
+ ROM_LOAD( "5.6l", 0x1000, 0x0800, CRC(ad4642e5) SHA1(f4de2d9ed0e69c002be07f47247e95167a3ffffb) )
+ /* 0x1800-0xffff - empty */
+ ROM_LOAD( "4.6k", 0x2000, 0x0800, CRC(e487579d) SHA1(aed59f15dbc904d73e19d914ccd0a86fda859085) )
+ /* 0x2800-0x2fff - empty */
+ ROM_LOAD( "3.6h", 0x3000, 0x0800, CRC(59125a1a) SHA1(37638fb690d6b4f11585f6a13586271c2f0e3743) )
+ /* 0x3800-0x3fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
- ROM_LOAD( "sci42.bin", 0x0000, 0x0800, CRC(c8d32b8e) SHA1(7d655d243ed13cf2537f3fdfde5bf34229f7cb84) )
- ROM_LOAD( "sci41.bin", 0x0800, 0x0800, CRC(ee333daf) SHA1(b02998dccec9a4f841838874221caabae8380fcc) )
+ ROM_LOAD( "2.6c", 0x0000, 0x0800, CRC(c8d32b8e) SHA1(7d655d243ed13cf2537f3fdfde5bf34229f7cb84) )
+ ROM_LOAD( "1.6a", 0x0800, 0x0800, CRC(ee333daf) SHA1(b02998dccec9a4f841838874221caabae8380fcc) )
ROM_REGION( 0x0060, REGION_PROMS, 0 )
ROM_LOAD( "mb7051.1v", 0x0000, 0x0020, CRC(1d2343b1) SHA1(294f22178af4532abf767c1ffe2dc831bbe683bf) )
ROM_LOAD( "mb7051.1u", 0x0020, 0x0020, CRC(c174753c) SHA1(303bfb1f470b525ccaeafa81a38a4bc3a7de5dbb) )
ROM_LOAD( "mb7051.1t", 0x0040, 0x0020, CRC(04a1be01) SHA1(9c270c04d374d46752ec99bd4e79fed1e2896bc0) )
-#endif
+
/* no samples */
ROM_END
@@ -1374,8 +1711,8 @@ ROM_START( cannonb )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "canballs.11n", 0x0000, 0x1000, CRC(a95b8e03) SHA1(e78125023e1af6de292292b875b45401b2173ca9) )
- ROM_LOAD( "canballs.11k", 0x1000, 0x1000, CRC(dbbe8263) SHA1(efe4bba25a03261bc8309e6d83d5600def875b0c) )
- ROM_LOAD( "canballs.11l", 0x2000, 0x1000, CRC(060b044c) SHA1(3121f07adb661663a2303085eea1b662968f8f98) )
+ ROM_LOAD( "canballs.11l", 0x1000, 0x1000, CRC(060b044c) SHA1(3121f07adb661663a2303085eea1b662968f8f98) )
+ ROM_LOAD( "canballs.11k", 0x2000, 0x1000, CRC(dbbe8263) SHA1(efe4bba25a03261bc8309e6d83d5600def875b0c) )
ROM_LOAD( "canballs.11h", 0x3000, 0x1000, CRC(8043bc1a) SHA1(bd2f3dfe26cf8d987d9ecaa41eac4bdc4e16a692) )
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
@@ -1400,8 +1737,14 @@ ROM_START( cannonb2 )
ROM_LOAD( "cb4.bin", 0x3000, 0x1000, CRC(696ebdb0) SHA1(0bff115e4710199641722ca12af4e16dc5b0ec13) )
ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
- ROM_LOAD( "cb10.bin", 0x0000, 0x1000, CRC(602a6c2d) SHA1(788f83bcb0667d8a42c209f3d51708d496be58df) )
- ROM_LOAD( "cb9.bin", 0x1000, 0x1000, CRC(2d036026) SHA1(b6eada3e67edd7db59d9ca823b798cd20f0afca9) )
+ ROM_LOAD( "cb10.bin", 0x0000, 0x0800, CRC(602a6c2d) SHA1(788f83bcb0667d8a42c209f3d51708d496be58df) )
+ /* 0x0800-0x0fff - empty */
+ ROM_CONTINUE( 0x1000, 0x0800 )
+ /* 0x1800-0x0fff - empty */
+ ROM_LOAD( "cb9.bin", 0x2000, 0x0800, CRC(2d036026) SHA1(b6eada3e67edd7db59d9ca823b798cd20f0afca9) )
+ /* 0x2800-0x0fff - empty */
+ ROM_CONTINUE( 0x3000, 0x0800 )
+ /* 0x3800-0x0fff - empty */
ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "cb7.bin", 0x0000, 0x0800, CRC(80eb517d) SHA1(fef4111f656c58b28e7eac5aa5b5cc7e07ccb2fd) )
@@ -1428,7 +1771,7 @@ ROM_START( swimmer )
ROM_LOAD( "sw7", 0x6000, 0x1000, CRC(37efb64e) SHA1(0ed4d678895c17b37df605990acd096c538e3675) )
ROM_LOAD( "sw8", 0x7000, 0x1000, CRC(33d6001e) SHA1(749b746d018e74e364fd6974e4522c8a18915774) )
- ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound board */
+ ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_LOAD( "sw12.4k", 0x0000, 0x1000, CRC(2eee9bcb) SHA1(ceafdf750a8af0c1c9abbbf437c3e9d9ae09f72b) )
ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
@@ -1461,7 +1804,7 @@ ROM_START( swimmera )
ROM_LOAD( "swa7", 0x6000, 0x1000, CRC(7090e5ee) SHA1(d1e0ca38c3d1e4a7b7efa3696e47fb36ad3f8aa0) )
ROM_LOAD( "swa8", 0x7000, 0x1000, CRC(ab86efa9) SHA1(5b5a80ae285c7e9f4c51e646116edf789d4dba39) )
- ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound board */
+ ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_LOAD( "sw12.4k", 0x0000, 0x1000, CRC(2eee9bcb) SHA1(ceafdf750a8af0c1c9abbbf437c3e9d9ae09f72b) )
ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
@@ -1494,7 +1837,7 @@ ROM_START( swimmerb )
ROM_LOAD( "sw7.9c", 0x6000, 0x1000, CRC(88266f2e) SHA1(4ad15f9ba7b45a6c1c3637f8d0fd8be9c04b495f) )
ROM_LOAD( "sw8.9a", 0x7000, 0x1000, CRC(191a16e4) SHA1(75d3f49e2f4ea04d3a7cc88662c023768bf48365) )
- ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound board */
+ ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_LOAD( "sw12.4k", 0x0000, 0x1000, CRC(2eee9bcb) SHA1(ceafdf750a8af0c1c9abbbf437c3e9d9ae09f72b) )
ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
@@ -1524,7 +1867,7 @@ ROM_START( guzzler )
ROM_LOAD( "guzz-04.bin", 0x6000, 0x2000, CRC(45be42f5) SHA1(578943afdb6ceca34ca7c19c2fd1164ca3aa57bd) )
ROM_LOAD( "guzz-16.bin", 0xe000, 0x2000, CRC(61ee00b7) SHA1(ea8516c8dfb2de32a8034f94c7d0c086e3596740) )
- ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound board */
+ ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_LOAD( "guzz-12.bin", 0x0000, 0x1000, CRC(f3754d9e) SHA1(bb30832aba4e82ab0ecce40fc1223d9771ff7dd2) )
ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
@@ -1543,6 +1886,120 @@ ROM_START( guzzler )
ROM_LOAD( "guzzler.001", 0x0200, 0x020, CRC(69089495) SHA1(96b067b22be14536bac748f8d61e5587a8a04e92) )
ROM_END
+ROM_START( yamato )
+ ROM_REGION( 2*0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "2.5de", 0x0000, 0x2000, CRC(20895096) SHA1(af76786e3c519e710899f143d46c53087e9817c7) )
+ ROM_LOAD( "3.5f", 0x2000, 0x2000, CRC(57a696f9) SHA1(28ea80fb100ac92295fc3eb318617d7cb014408d) )
+ ROM_LOAD( "4.5jh", 0x4000, 0x2000, CRC(59a468e8) SHA1(a79cdee6efefd87a356cc8d710f8050bc12e07c3) )
+ /* hole at 6000-6fff */
+ ROM_LOAD( "11.5a", 0x7000, 0x1000, CRC(35987485) SHA1(1f0cb545bbd52982cbf801bc1dd2c4087af2f5f7) )
+
+ ROM_REGION( 0x10000, REGION_CPU2, 0 )
+ ROM_LOAD( "1.5v", 0x0000, 0x0800, CRC(3aad9e3c) SHA1(37b0414b265397881bb45b166ecab85880d1358d) )
+
+ ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "10.11k", 0x0000, 0x2000, CRC(161121f5) SHA1(017c5c6b773b0ae1d0be52e4bac90b699ea196dd) )
+ ROM_LOAD( "9.11h", 0x2000, 0x2000, CRC(56e84cc4) SHA1(c48e0e5460376d6b34173c42a27907ef12218182) )
+
+ ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
+ ROM_LOAD( "8.11c", 0x0000, 0x1000, CRC(28024d9a) SHA1(c871c4d74be72a8bfea99e89d43f91922f4b734b) )
+ ROM_LOAD( "7.11a", 0x1000, 0x1000, CRC(4a179790) SHA1(7fb6b033de939ff8bd13055c073311dca2c1a6fe) )
+
+ ROM_REGION( 0x2000, REGION_USER1, 0 )
+ ROM_LOAD( "5.5lm", 0x0000, 0x1000, CRC(7761ad24) SHA1(98878b19addd142d35718080eece05eaaee0388d) ) /* ?? */
+ ROM_LOAD( "6.5n", 0x1000, 0x1000, CRC(da48444c) SHA1(a43e672ce262eb817fb4e5715ef4fb304a6a2815) )
+
+ ROM_REGION( 0x00a0, REGION_PROMS, 0 )
+ ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(ef2053ab) SHA1(2006cbf003f90a8e75f39047a88a3bba85d78e80) )
+ ROM_LOAD( "2.bpr", 0x0020, 0x0020, CRC(2281d39f) SHA1(e9b568bdacf7ab611801cf42ea5c7624f5440ef6) )
+ ROM_LOAD( "3.bpr", 0x0040, 0x0020, CRC(9e6341e3) SHA1(2e7a4d3c1f40d6089735734b9d9de2ca57fb73c7) )
+ ROM_LOAD( "4.bpr", 0x0060, 0x0020, CRC(1c97dc0b) SHA1(fe8e0a91172abdd2d14b199da144306a9b944372) )
+ ROM_LOAD( "5.bpr", 0x0080, 0x0020, CRC(edd6c05f) SHA1(b95db8aaf74fe175d1179f0d85f79242b16f5fb4) )
+ROM_END
+
+ROM_START( yamato2 )
+ ROM_REGION( 2*0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "2-2.5de", 0x0000, 0x2000, CRC(93da1d52) SHA1(21b72856ebbd969e4e075b52719e6acdbd1bc4c5) )
+ ROM_LOAD( "3-2.5f", 0x2000, 0x2000, CRC(31e73821) SHA1(e582c9fcea1b29d43f65b6aa67e1895c38d2736c) )
+ ROM_LOAD( "4-2.5jh", 0x4000, 0x2000, CRC(fd7bcfc3) SHA1(5037170cb3a9824794e90d74def92b0b25d45caa) )
+ /* hole at 6000-6fff */
+ /* 7000-7fff not present here */
+
+ ROM_REGION( 0x10000, REGION_CPU2, 0 )
+ ROM_LOAD( "1.5v", 0x0000, 0x0800, CRC(3aad9e3c) SHA1(37b0414b265397881bb45b166ecab85880d1358d) )
+
+ ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "10.11k", 0x0000, 0x2000, CRC(161121f5) SHA1(017c5c6b773b0ae1d0be52e4bac90b699ea196dd) )
+ ROM_LOAD( "9.11h", 0x2000, 0x2000, CRC(56e84cc4) SHA1(c48e0e5460376d6b34173c42a27907ef12218182) )
+
+ ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
+ ROM_LOAD( "8.11c", 0x0000, 0x1000, CRC(28024d9a) SHA1(c871c4d74be72a8bfea99e89d43f91922f4b734b) )
+ ROM_LOAD( "7.11a", 0x1000, 0x1000, CRC(4a179790) SHA1(7fb6b033de939ff8bd13055c073311dca2c1a6fe) )
+
+ ROM_REGION( 0x2000, REGION_USER1, 0 )
+ ROM_LOAD( "5.5lm", 0x0000, 0x1000, CRC(7761ad24) SHA1(98878b19addd142d35718080eece05eaaee0388d) ) /* ?? */
+ ROM_LOAD( "6.5n", 0x1000, 0x1000, CRC(da48444c) SHA1(a43e672ce262eb817fb4e5715ef4fb304a6a2815) )
+
+ ROM_REGION( 0x00a0, REGION_PROMS, 0 )
+ ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(ef2053ab) SHA1(2006cbf003f90a8e75f39047a88a3bba85d78e80) )
+ ROM_LOAD( "2.bpr", 0x0020, 0x0020, CRC(2281d39f) SHA1(e9b568bdacf7ab611801cf42ea5c7624f5440ef6) )
+ ROM_LOAD( "3.bpr", 0x0040, 0x0020, CRC(9e6341e3) SHA1(2e7a4d3c1f40d6089735734b9d9de2ca57fb73c7) )
+ ROM_LOAD( "4.bpr", 0x0060, 0x0020, CRC(1c97dc0b) SHA1(fe8e0a91172abdd2d14b199da144306a9b944372) )
+ ROM_LOAD( "5.bpr", 0x0080, 0x0020, CRC(edd6c05f) SHA1(b95db8aaf74fe175d1179f0d85f79242b16f5fb4) )
+ROM_END
+
+ROM_START( toprollr )
+ ROM_REGION( 0x10000*2, REGION_CPU1, 0 )
+ ROM_LOAD( "10.k3", 0xc000, 0x2000, CRC(1e8914a6) SHA1(ec17f185f890d04ce75a5d8edf8b32da60e7a8d8) )
+ ROM_LOAD( "11.l3", 0xe000, 0x2000, CRC(b20a9fa2) SHA1(accd3296447eca002b0808e7b02832f5e35407e8) )
+
+ ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "16.j4", 0x0000, 0x2000, CRC(ce3afe26) SHA1(7de00720f091537c64cc0fec687c061de3a8b1a3) )
+ ROM_LOAD( "15.h4", 0x2000, 0x2000, CRC(1d9e3325) SHA1(e7f6863aa2ba2aeec40cfcc5cf6c69e947c185b5) )
+
+ ROM_REGION( 0x04000, REGION_GFX2, ROMREGION_DISPOSE )
+ ROM_LOAD( "14.c4", 0x0000, 0x2000, CRC(7a945733) SHA1(14187ba303aecf0a812c425c34d8edda3deaa2b5) )
+ ROM_LOAD( "13.a4", 0x2000, 0x2000, CRC(89327329) SHA1(555331a3136aa8c5bb35b97dd54bc59da067be57) )
+
+ ROM_REGION( 0x2000, REGION_GFX3, ROMREGION_DISPOSE )
+ ROM_LOAD( "6.m5", 0x0000, 0x1000, CRC(e30c1dd8) SHA1(1777bf98625153c9b191020860e4e1839b46b998) )
+ ROM_LOAD( "5.l5", 0x1000, 0x1000, CRC(84139f46) SHA1(976f781fb279dd540778708174b942a263f16443) )
+
+ ROM_REGION( 0x12000, REGION_USER1, 0 )
+ ROM_LOAD( "2.f5", 0x00000, 0x02000, CRC(ef789f00) SHA1(424d69584d391ee7b9ad5db7ee6ced97d69897d4) )
+ ROM_LOAD( "8.f3", 0x02000, 0x02000, CRC(94371cfb) SHA1(cb501c36b213c995a4048b3a96c85848c556cd05) )
+ ROM_LOAD( "4.k5", 0x04000, 0x02000, CRC(1cb48ea0) SHA1(fdc75075112042ec84a7d1b3e5b5a6db1d1cb871) )
+ ROM_COPY( REGION_USER1, 0x04000, 0x0a000, 0x02000 )
+ ROM_COPY( REGION_USER1, 0x04000, 0x10000, 0x02000 )
+ ROM_LOAD( "3.h5", 0x06000, 0x02000, CRC(d45494ba) SHA1(6e235b34f9457acadad6d4e27799978bc2e3db08) )
+ ROM_LOAD( "9.h3", 0x08000, 0x02000, CRC(8a8032a7) SHA1(d6642d72645c613c21f65bbbe1560d0437d41f43) )
+ ROM_LOAD( "1.d5", 0x0c000, 0x02000, CRC(9894374d) SHA1(173de4abbc3fb5d522aa6d6d5caf8e4d54f2a598) )
+ ROM_LOAD( "7.d3", 0x0e000, 0x02000, CRC(904fffb6) SHA1(5528bc2a4d2fe8672428fd4725644265f0d57ded) )
+
+ ROM_REGION( 0x2000, REGION_SOUND1, 0 )
+ ROM_LOAD( "12.p3", 0x0000, 0x2000, CRC(7f989dc9) SHA1(3b4d18cbb992872b3cf8f5eaf5381ed3a9468cc1) )
+
+ ROM_REGION( 0x01a0, REGION_PROMS, 0 )
+ ROM_LOAD( "prom.p2", 0x0000, 0x0020, CRC(42e828fa) SHA1(81250b1f7c3956b3902324adbbaf3b5989e854ee) ) //08-0f sprites + fg (wrong?)
+ ROM_LOAD( "prom.r2", 0x0020, 0x0020, CRC(99b87eed) SHA1(06c3164d681fe4aff0338c0dad1a921f7fe7369d) ) //10-17 sprites
+ ROM_LOAD( "prom.a1", 0x0040, 0x0020, CRC(7d626d6c) SHA1(7c7202d0ec5bf0381e7104eef53afa5fa4596a29) ) //00-07 big sprites
+ ROM_LOAD( "prom.p9", 0x0060, 0x0020, CRC(eb399c02) SHA1(bf3d6c6dd982cb54446cf8a010b7adb949514bdb) ) //18-1f bg
+ ROM_LOAD( "prom.n9", 0x0080, 0x0020, CRC(fb03ea99) SHA1(4dcef86106cef713dfcbd965072bfa8fe4b68e15) ) //20-27 bg
+ ROM_LOAD( "prom.s9", 0x00a0, 0x0100, CRC(abf4c5fb) SHA1(a953f14642d4b72328293b36bc3c65b13491ffff) ) //unknown prom (filled with 2 bit vals)
+
+ROM_END
+
+
+static DRIVER_INIT( yamato )
+{
+ yamato_decode();
+}
+
+
+static DRIVER_INIT( toprollr )
+{
+ toprollr_decode();
+}
GAME( 1980, cclimber, 0, cclimber, cclimber, cclimber, ROT0, "Nichibutsu", "Crazy Climber (US)", 0 )
@@ -1557,15 +2014,15 @@ GAME( 1981, ckongalc, ckong, cclimber, ckong, 0, ROT270, "bootleg",
GAME( 198?, bigkong, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Big Kong", 0 )
GAME( 1981, monkeyd, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Monkey Donkey", 0 )
GAME( 198?, ckongb, ckong, cclimber, ckongb, ckongb, ROT270, "bootleg", "Crazy Kong Part II (alternative levels)", 0 )
-
GAME( 1981, rpatrol, 0, cclimber, rpatrol, 0, ROT0, "Orca", "River Patrol (Orca)", 0 )
GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, 0, ROT0, "bootleg", "River Patrol (bootleg)", 0 )
GAME( 1981, silvland, rpatrol, cclimber, rpatrol, 0, ROT0, "Falcon", "Silver Land", 0 )
-
GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cannonb, ROT90, "Soft", "Cannon Ball (bootleg on Crazy Climber hardware, set 1)" , GAME_IMPERFECT_GRAPHICS )
GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cannonb2, ROT90, "TV Game Gruenberg", "Cannon Ball (bootleg on Crazy Climber hardware, set 2)", 0 )
-
GAME( 1982, swimmer, 0, swimmer, swimmer, 0, ROT0, "Tehkan", "Swimmer (set 1)", 0 )
GAME( 1982, swimmera, swimmer, swimmer, swimmer, 0, ROT0, "Tehkan", "Swimmer (set 2)", 0 )
GAME( 1982, swimmerb, swimmer, swimmer, swimmerb, 0, ROT0, "Tehkan", "Swimmer (set 3)", 0 )
GAME( 1983, guzzler, 0, swimmer, guzzler, 0, ROT90, "Tehkan", "Guzzler", 0 )
+GAME( 1983, yamato, 0, yamato, yamato, yamato, ROT90, "Sega", "Yamato (US)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1983, yamato2, yamato, yamato, yamato, yamato, ROT90, "Sega", "Yamato (World?)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1983, toprollr, 0, toprollr, toprollr, toprollr, ROT90, "Jaleco", "Top Roller", GAME_IMPERFECT_COLORS )
diff --git a/src/mame/drivers/xxmissio.c b/src/mame/drivers/xxmissio.c
index 28b418e7d19..f6208ea3858 100644
--- a/src/mame/drivers/xxmissio.c
+++ b/src/mame/drivers/xxmissio.c
@@ -12,9 +12,12 @@ XX Mission (c) 1986 UPL
#include "deprecat.h"
#include "sound/2203intf.h"
+VIDEO_START( xxmissio );
VIDEO_UPDATE( xxmissio );
+extern UINT8 *xxmissio_bgram;
extern UINT8 *xxmissio_fgram;
+extern UINT8 *xxmissio_spriteram;
static UINT8 xxmissio_status;
@@ -23,8 +26,8 @@ WRITE8_HANDLER( xxmissio_scroll_x_w );
WRITE8_HANDLER( xxmissio_scroll_y_w );
WRITE8_HANDLER( xxmissio_flipscreen_w );
-READ8_HANDLER( xxmissio_videoram_r );
-WRITE8_HANDLER( xxmissio_videoram_w );
+READ8_HANDLER( xxmissio_bgram_r );
+WRITE8_HANDLER( xxmissio_bgram_w );
WRITE8_HANDLER( xxmissio_paletteram_w );
@@ -112,8 +115,8 @@ static ADDRESS_MAP_START( map1, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xa003, 0xa003) AM_WRITE(xxmissio_flipscreen_w)
AM_RANGE(0xc000, 0xc7ff) AM_SHARE(1) AM_RAM AM_BASE(&xxmissio_fgram)
- AM_RANGE(0xc800, 0xcfff) AM_SHARE(2) AM_READWRITE(xxmissio_videoram_r, xxmissio_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
- AM_RANGE(0xd000, 0xd7ff) AM_SHARE(3) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
+ AM_RANGE(0xc800, 0xcfff) AM_SHARE(2) AM_READWRITE(xxmissio_bgram_r, xxmissio_bgram_w) AM_BASE(&xxmissio_bgram)
+ AM_RANGE(0xd000, 0xd7ff) AM_SHARE(3) AM_RAM AM_BASE(&xxmissio_spriteram)
AM_RANGE(0xd800, 0xdaff) AM_SHARE(4) AM_READWRITE(MRA8_RAM, xxmissio_paletteram_w) AM_BASE(&paletteram)
@@ -139,7 +142,7 @@ static ADDRESS_MAP_START( map2, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xa003, 0xa003) AM_WRITE(xxmissio_flipscreen_w)
AM_RANGE(0xc000, 0xc7ff) AM_SHARE(1) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_SHARE(2) AM_READWRITE(xxmissio_videoram_r, xxmissio_videoram_w)
+ AM_RANGE(0xc800, 0xcfff) AM_SHARE(2) AM_READWRITE(xxmissio_bgram_r, xxmissio_bgram_w)
AM_RANGE(0xd000, 0xd7ff) AM_SHARE(3) AM_RAM
AM_RANGE(0xd800, 0xdaff) AM_SHARE(4) AM_READWRITE(MRA8_RAM, xxmissio_paletteram_w)
@@ -310,7 +313,7 @@ static MACHINE_DRIVER_START( xxmissio )
MDRV_GFXDECODE(xxmissio)
MDRV_PALETTE_LENGTH(768)
- MDRV_VIDEO_START(generic)
+ MDRV_VIDEO_START(xxmissio)
MDRV_VIDEO_UPDATE(xxmissio)
/* sound hardware */
diff --git a/src/mame/drivers/yamato.c b/src/mame/drivers/yamato.c
deleted file mode 100644
index ecb4098cb67..00000000000
--- a/src/mame/drivers/yamato.c
+++ /dev/null
@@ -1,701 +0,0 @@
-/*
-
- T.S. 17.12.2005:
-
- Yamato:
- -------
- Added temporary bg gradient (bad colors/offset).
-
- Gradient table are stored in two(?) ROMs.
- Each table is 256 bytes long: 128 for normal
- and 128 bytes for flipped screen.
- Color format is unknown - probably direct RGB
- mapping of 8 or 16 (both roms) bits. Also table
- selection source is unknown.
-
- TODO:
- - bg gradient color decode & table selection
-
-
- Top Roller:
- ----------
- It's made by the same developers as Yamato and use
- probably the same encrypted SEGA cpu as Yamato.
-
- lives - $6155
-
- TODO:
-
- - COINB DSW is missing
- - few issues in cocktail mode
- - wrong colors (fg text layer) - game sometimes ("round" text , lives) updates only even columns of cell attribs...
-
--------------------------------------------------------------------
-
-
- Top Roller
- Jaleco
-
- Hardware : Original Jaleco board no 8307-B/8307-A(redump)
-
- Main CPU : Encrypted Z80 (probably 315-5018)
- Sound : AY-3-8910
-
- ROMS CRC32 + positions :
-
- [9894374d] d5
- [ef789f00] f5
- [d45494ba] h5
- [1cb48ea0] k5
- [84139f46] l5
- [e30c1dd8] m5
- [904fffb6] d3
- [94371cfb] f3
- [8a8032a7] h3
- [1e8914a6] k3
- [b20a9fa2] l3
- [7f989dc9] p3
- [89327329] a4 bottom board 89327329
- [7a945733] c4 bottom board
- [5f2c2a78] h4 bottom board bad dump / [1d9e3325] (8307-A)
- [ce3afe26] j4 bottom board
-
-*/
-
-
-#include "driver.h"
-#include "machine/segacrpt.h"
-#include "sound/ay8910.h"
-#include "includes/cclimber.h"
-
-static PALETTE_INIT( yamato )
-{
- int i;
-
- /* chars - 12 bits RGB */
- for (i = 0; i < 0x40; i++)
- {
- int bit0, bit1, bit2, bit3;
- int r, g, b;
-
- /* red component */
- bit0 = (color_prom[i + 0x00] >> 0) & 0x01;
- bit1 = (color_prom[i + 0x00] >> 1) & 0x01;
- bit2 = (color_prom[i + 0x00] >> 2) & 0x01;
- bit3 = (color_prom[i + 0x00] >> 3) & 0x01;
- r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
-
- /* green component */
- bit0 = (color_prom[i + 0x00] >> 4) & 0x01;
- bit1 = (color_prom[i + 0x00] >> 5) & 0x01;
- bit2 = (color_prom[i + 0x00] >> 6) & 0x01;
- bit3 = (color_prom[i + 0x00] >> 7) & 0x01;
- g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
-
- /* blue component */
- bit0 = (color_prom[i + 0x40] >> 0) & 0x01;
- bit1 = (color_prom[i + 0x40] >> 1) & 0x01;
- bit2 = (color_prom[i + 0x40] >> 2) & 0x01;
- bit3 = (color_prom[i + 0x40] >> 3) & 0x01;
- b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
-
- palette_set_color(machine, i, MAKE_RGB(r, g, b));
- }
-
- /* big sprite - 8 bits RGB */
- for (i = 0; i < 0x20; i++)
- {
- int bit0, bit1, bit2;
- int r, g, b;
-
- /* red component */
- bit0 = (color_prom[i + 0x80] >> 0) & 0x01;
- bit1 = (color_prom[i + 0x80] >> 1) & 0x01;
- bit2 = (color_prom[i + 0x80] >> 2) & 0x01;
- r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- /* green component */
- bit0 = (color_prom[i + 0x80] >> 3) & 0x01;
- bit1 = (color_prom[i + 0x80] >> 4) & 0x01;
- bit2 = (color_prom[i + 0x80] >> 5) & 0x01;
- g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- /* blue component */
- bit0 = 0;
- bit1 = (color_prom[i + 0x80] >> 6) & 0x01;
- bit2 = (color_prom[i + 0x80] >> 7) & 0x01;
- b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- palette_set_color(machine, i + 0x40, MAKE_RGB(r, g, b));
- }
-
- /* fake colors for bg gradient */
- for (i = 0; i < 0x100; i++)
- palette_set_color(machine, i + 0x60, MAKE_RGB(0, 0, i));
-}
-
-static PALETTE_INIT( toprollr )
-{
- int i;
-
- for (i = 0; i < 32*5; i++)
- {
- int bit0,bit1,bit2;
- int r,g,b;
-
- /* red component */
- bit0 = (color_prom[0] >> 0) & 0x01;
- bit1 = (color_prom[0] >> 1) & 0x01;
- bit2 = (color_prom[0] >> 2) & 0x01;
- r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- /* green component */
- bit0 = (color_prom[0] >> 3) & 0x01;
- bit1 = (color_prom[0] >> 4) & 0x01;
- bit2 = (color_prom[0] >> 5) & 0x01;
- g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- /* blue component */
- bit0 = 0;
- bit1 = (color_prom[0] >> 6) & 0x01;
- bit2 = (color_prom[0] >> 7) & 0x01;
- b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
-
- palette_set_color(machine, i, MAKE_RGB(r, g, b));
- color_prom++;
- }
-
-}
-
-
-static int p0,p1;
-
-static WRITE8_HANDLER( p0_w )
-{
- p0 = data;
-}
-static WRITE8_HANDLER( p1_w )
-{
- p1 = data;
-}
-static READ8_HANDLER( p0_r )
-{
- return p0;
-}
-static READ8_HANDLER( p1_r )
-{
- return p1;
-}
-
-static WRITE8_HANDLER( flip_screen_x_w )
-{
- flip_screen_x_set(data);
-}
-
-static WRITE8_HANDLER( flip_screen_y_w )
-{
- flip_screen_y_set(data);
-}
-
-
-static ADDRESS_MAP_START( yamato_readmem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x5fff) AM_READ(MRA8_ROM)
- AM_RANGE(0x6000, 0x6fff) AM_READ(MRA8_RAM)
- AM_RANGE(0x7000, 0x7fff) AM_READ(MRA8_ROM)
- AM_RANGE(0x8800, 0x8bff) AM_READ(MRA8_RAM)
- AM_RANGE(0x9000, 0x93ff) AM_READ(MRA8_RAM) /* video RAM */
- AM_RANGE(0x9800, 0x9bff) AM_READ(MRA8_RAM) /* column scroll registers */
- AM_RANGE(0x9c00, 0x9fff) AM_READ(MRA8_RAM) /* color RAM */
- AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) /* IN0 */
- AM_RANGE(0xa800, 0xa800) AM_READ(input_port_1_r) /* IN1 */
- AM_RANGE(0xb000, 0xb000) AM_READ(input_port_2_r) /* DSW */
- AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r) /* IN2 */
- AM_RANGE(0xba00, 0xba00) AM_READ(input_port_4_r) /* IN3 (maybe a mirror of b800) */
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( yamato_writemem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x5fff) AM_WRITE(MWA8_ROM)
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(MWA8_RAM)
- AM_RANGE(0x7000, 0x7fff) AM_WRITE(MWA8_ROM)
- AM_RANGE(0x8800, 0x88ff) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
- AM_RANGE(0x8900, 0x8bff) AM_WRITE(MWA8_RAM) /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_WRITE(MWA8_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
-//AM_RANGE(0x9400, 0x97ff) AM_WRITE(MWA8_RAM) /* mirror address, used by Crazy Climber to draw windows */
- /* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
- /* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
- AM_RANGE(0x9800, 0x981f) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_column_scroll)
- AM_RANGE(0x9880, 0x989f) AM_WRITE(MWA8_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
- AM_RANGE(0x98dc, 0x98df) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_bigspriteram)
- AM_RANGE(0x9800, 0x9bff) AM_WRITE(MWA8_RAM) /* not used, but initialized */
- AM_RANGE(0x9c00, 0x9fff) AM_WRITE(cclimber_colorram_w) AM_BASE(&colorram)
- AM_RANGE(0xa000, 0xa000) AM_WRITE(interrupt_enable_w)
- AM_RANGE(0xa001, 0xa001) AM_WRITE(flip_screen_x_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITE(flip_screen_y_w)
-//AM_RANGE(0xa004, 0xa004) AM_WRITE(cclimber_sample_trigger_w)
-//AM_RANGE(0xa800, 0xa800) AM_WRITE(cclimber_sample_rate_w)
-//AM_RANGE(0xb000, 0xb000) AM_WRITE(cclimber_sample_volume_w)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( yamato_writeport, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
- AM_RANGE(0x00, 0x00) AM_WRITE(p0_w) /* ??? */
- AM_RANGE(0x01, 0x01) AM_WRITE(p1_w) /* ??? */
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( yamato_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_READ(MRA8_ROM)
- AM_RANGE(0x5000, 0x53ff) AM_READ(MRA8_RAM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( yamato_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x07ff) AM_WRITE(MWA8_ROM)
- AM_RANGE(0x5000, 0x53ff) AM_WRITE(MWA8_RAM)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( yamato_sound_readport, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
- AM_RANGE(0x04, 0x04) AM_READ(p0_r) /* ??? */
- AM_RANGE(0x08, 0x08) AM_READ(p1_r) /* ??? */
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( yamato_sound_writeport, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
- AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_control_port_0_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_write_port_0_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(AY8910_control_port_1_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(AY8910_write_port_1_w)
-ADDRESS_MAP_END
-
-/* Top Roller */
-static int jaleco_rombank=0;
-
-static WRITE8_HANDLER(rombank_w)
-{
- jaleco_rombank&=~(1<<offset);
- jaleco_rombank|=(data&1)<<offset;
-
- if(jaleco_rombank<3)
- {
- memory_set_bank(1, jaleco_rombank);
- }
-}
-
-static ADDRESS_MAP_START( toprollr_map, ADDRESS_SPACE_PROGRAM, 8 )
- AM_RANGE(0x0000, 0x5fff) AM_READ(MRA8_BANK1)
- AM_RANGE(0x6000, 0x6bff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
- AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_BASE(&toprollr_videoram3)
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE(&videoram)
- AM_RANGE(0x9400, 0x97ff) AM_RAM AM_BASE(&toprollr_videoram4)
- AM_RANGE(0x9800, 0x987f) AM_RAM /* unused ? */
- AM_RANGE(0x9880, 0x995f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
- AM_RANGE(0x99dc, 0x99df) AM_RAM AM_BASE(&cclimber_bigspriteram)
- AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_BASE(&toprollr_videoram2)
- AM_RANGE(0xa000, 0xa000) AM_WRITE(interrupt_enable_w) AM_READ(input_port_0_r) /* IN0 */
- AM_RANGE(0xa001, 0xa001) AM_WRITE(flip_screen_x_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITE(flip_screen_y_w)
- AM_RANGE(0xa004, 0xa004) AM_WRITE(cclimber_sample_trigger_w)
- AM_RANGE(0xa005, 0xa006) AM_WRITE(rombank_w)
- AM_RANGE(0xa800, 0xa800) AM_READ(input_port_1_r) AM_WRITE(cclimber_sample_rate_w) /* IN1 */
- AM_RANGE(0xb000, 0xb000) AM_READ(input_port_2_r) AM_WRITE(cclimber_sample_volume_w) /* DSW */
- AM_RANGE(0xb800, 0xb800) AM_READ(input_port_3_r) /* IN2 */
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-static ADDRESS_MAP_START( toprollr_io_map, ADDRESS_SPACE_IO, 8 )
- ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
- AM_RANGE(0x08, 0x08) AM_WRITE(AY8910_control_port_0_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(AY8910_write_port_0_w)
- AM_RANGE(0x0d, 0x0d) AM_NOP
-ADDRESS_MAP_END
-
-static INPUT_PORTS_START( yamato )
- PORT_START /* IN0 */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
-
- PORT_START /* IN1 */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
-
- PORT_START /* DSW */
- PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
- PORT_DIPSETTING( 0x00, "3" )
- PORT_DIPSETTING( 0x01, "4" )
- PORT_DIPSETTING( 0x02, "5" )
- PORT_DIPSETTING( 0x03, "6" )
- PORT_DIPNAME( 0x1c, 0x00, DEF_STR( Coin_A ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x18, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x1c, DEF_STR( Free_Play ) )
- PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
- PORT_DIPSETTING( 0x00, "Every 30000" )
- PORT_DIPSETTING( 0x20, "Every 50000" )
- PORT_DIPNAME( 0x40, 0x00, "Speed" )
- PORT_DIPSETTING( 0x00, "Slow" )
- PORT_DIPSETTING( 0x40, "Fast" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
-
- PORT_START /* IN2 */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) /* set 1 only */
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN3 ) /* set 1 only */
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-
- PORT_START /* IN3 */
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( toprollr )
- PORT_START /* IN0 */
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
-
- PORT_START /* IN1 */
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
-
- PORT_START /* DSW */
- PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
- PORT_DIPSETTING( 0x00, "3" )
- PORT_DIPSETTING( 0x01, "4" )
- PORT_DIPSETTING( 0x02, "5" )
- PORT_DIPSETTING( 0x03, "6" )
- PORT_DIPNAME( 0x1c, 0x00, DEF_STR( Coin_A ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x18, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x1c, DEF_STR( Free_Play ) )
- PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
- PORT_DIPSETTING( 0x00, "Every 30000" )
- PORT_DIPSETTING( 0x20, "Every 50000" )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Difficulty ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
-
- PORT_START /* IN2 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 )
-
-
-INPUT_PORTS_END
-
-static const gfx_layout charlayout =
-{
- 8,8, /* 8*8 characters */
- 512, /* 512 characters (256 in Crazy Climber) */
- 2, /* 2 bits per pixel */
- { 0, 512*8*8 }, /* the two bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7 }, /* pretty straightforward layout */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8 /* every char takes 8 consecutive bytes */
-};
-static const gfx_layout bscharlayout =
-{
- 8,8, /* 8*8 characters */
- 512,//256, /* 256 characters */
-
-
- 2, /* 2 bits per pixel */
- { 0, 512*8*8 }, /* the bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7 }, /* pretty straightforward layout */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8 /* every char takes 8 consecutive bytes */
-};
-static const gfx_layout spritelayout =
-{
- 16,16, /* 16*16 sprites */
- 128, /* 128 sprites (64 in Crazy Climber) */
- 2, /* 2 bits per pixel */
- { 0, 128*16*16 }, /* the bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7, /* pretty straightforward layout */
- 8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
- 32*8 /* every sprite takes 32 consecutive bytes */
-};
-
-
-static const gfx_layout toprollr_charlayout =
-{
- 8,8,
- RGN_FRAC(1,2),
- 2,
- { RGN_FRAC(1,2),0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-static const gfx_layout toprollr_spritelayout =
-{
- 16,16, /* 16*16 sprites */
- RGN_FRAC(1,2), /* 128 sprites (64 in Crazy Climber) */
- 2, /* 2 bits per pixel */
- { RGN_FRAC(1,2),0 }, /* the bitplanes are separated */
- { 0, 1, 2, 3, 4, 5, 6, 7, /* pretty straightforward layout */
- 8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
- 32*8 /* every sprite takes 32 consecutive bytes */
-};
-
-
-static GFXDECODE_START( yamato )
- GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 16 ) /* char set #1 */
- GFXDECODE_ENTRY( REGION_GFX1, 0x2000, charlayout, 0, 16 ) /* char set #2 */
- GFXDECODE_ENTRY( REGION_GFX2, 0x0000, bscharlayout, 16*4, 8 ) /* big sprite char set */
- GFXDECODE_ENTRY( REGION_GFX1, 0x0000, spritelayout, 0, 16 ) /* sprite set #1 */
- GFXDECODE_ENTRY( REGION_GFX1, 0x2000, spritelayout, 0, 16 ) /* sprite set #2 */
-GFXDECODE_END
-
-static GFXDECODE_START( toprollr )
- GFXDECODE_ENTRY( REGION_GFX1, 0x0000, toprollr_charlayout, 0, 40 )
- GFXDECODE_ENTRY( REGION_GFX2, 0x0000, toprollr_charlayout, 0, 40 )
- GFXDECODE_ENTRY( REGION_GFX1, 0x0000, toprollr_spritelayout, 0, 40 )
- GFXDECODE_ENTRY( REGION_GFX3, 0x0000, toprollr_charlayout, 0, 40 )
-GFXDECODE_END
-
-static MACHINE_DRIVER_START( yamato )
-
- /* basic machine hardware */
- MDRV_CPU_ADD(Z80, 3072000) /* 3.072 MHz ? */
- MDRV_CPU_PROGRAM_MAP(yamato_readmem,yamato_writemem)
- MDRV_CPU_IO_MAP(0,yamato_writeport)
- MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
-
- MDRV_CPU_ADD(Z80, 3072000)
- /* audio CPU */ /* 3.072 MHz ? */
- MDRV_CPU_PROGRAM_MAP(yamato_sound_readmem,yamato_sound_writemem)
- MDRV_CPU_IO_MAP(yamato_sound_readport,yamato_sound_writeport)
-
- /* video hardware */
- MDRV_SCREEN_ADD("main", RASTER)
- MDRV_SCREEN_REFRESH_RATE(60)
- MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MDRV_SCREEN_SIZE(32*8, 32*8)
- MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
-
- MDRV_GFXDECODE(yamato)
- MDRV_PALETTE_LENGTH(96+256)
-
- MDRV_PALETTE_INIT(yamato)
- MDRV_VIDEO_START(generic)
- MDRV_VIDEO_UPDATE(yamato)
-
- /* sound hardware */
- MDRV_SPEAKER_STANDARD_MONO("mono")
-
- MDRV_SOUND_ADD(AY8910, 1536000)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-
- MDRV_SOUND_ADD(AY8910, 1536000)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-MACHINE_DRIVER_END
-
-static MACHINE_DRIVER_START( toprollr )
-
- /* basic machine hardware */
- MDRV_CPU_ADD(Z80, 3072000)
- MDRV_CPU_PROGRAM_MAP(toprollr_map,0)
- MDRV_CPU_IO_MAP(toprollr_io_map,0)
- MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
-
- /* video hardware */
-
-
- MDRV_SCREEN_ADD("main", RASTER)
- MDRV_SCREEN_REFRESH_RATE(60)
- MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MDRV_SCREEN_SIZE(32*8, 32*8)
- MDRV_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
-
- MDRV_GFXDECODE(toprollr)
- MDRV_PALETTE_LENGTH(32*5)
- MDRV_PALETTE_INIT(toprollr)
-
- MDRV_VIDEO_START(toprollr)
- MDRV_VIDEO_UPDATE(toprollr)
-
- /* sound hardware */
- MDRV_SPEAKER_STANDARD_MONO("mono")
-
- MDRV_SOUND_ADD(AY8910, 1536000)
- MDRV_SOUND_CONFIG(cclimber_ay8910_interface)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
-
- MDRV_SOUND_ADD(SAMPLES, 0)
- MDRV_SOUND_CONFIG(cclimber_samples_interface)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
-MACHINE_DRIVER_END
-
-
-ROM_START( yamato )
- ROM_REGION( 2*0x10000, REGION_CPU1, 0 ) /* 64k for code + 64k for decrypted opcodes */
- ROM_LOAD( "2.5de", 0x0000, 0x2000, CRC(20895096) SHA1(af76786e3c519e710899f143d46c53087e9817c7) )
- ROM_LOAD( "3.5f", 0x2000, 0x2000, CRC(57a696f9) SHA1(28ea80fb100ac92295fc3eb318617d7cb014408d) )
- ROM_LOAD( "4.5jh", 0x4000, 0x2000, CRC(59a468e8) SHA1(a79cdee6efefd87a356cc8d710f8050bc12e07c3) )
- /* hole at 6000-6fff */
- ROM_LOAD( "11.5a", 0x7000, 0x1000, CRC(35987485) SHA1(1f0cb545bbd52982cbf801bc1dd2c4087af2f5f7) )
-
- ROM_REGION( 0x10000, REGION_CPU2, 0 )
- ROM_LOAD( "1.5v", 0x0000, 0x0800, CRC(3aad9e3c) SHA1(37b0414b265397881bb45b166ecab85880d1358d) )
-
- ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
- ROM_LOAD( "10.11k", 0x0000, 0x1000, CRC(161121f5) SHA1(017c5c6b773b0ae1d0be52e4bac90b699ea196dd) )
- ROM_CONTINUE( 0x2000, 0x1000 )
- ROM_LOAD( "9.11h", 0x1000, 0x1000, CRC(56e84cc4) SHA1(c48e0e5460376d6b34173c42a27907ef12218182) )
- ROM_CONTINUE( 0x3000, 0x1000 )
-
- ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
- ROM_LOAD( "8.11c", 0x0000, 0x1000, CRC(28024d9a) SHA1(c871c4d74be72a8bfea99e89d43f91922f4b734b) )
- ROM_LOAD( "7.11a", 0x1000, 0x1000, CRC(4a179790) SHA1(7fb6b033de939ff8bd13055c073311dca2c1a6fe) )
-
- ROM_REGION( 0x2000, REGION_USER1, 0 )
- ROM_LOAD( "5.5lm", 0x0000, 0x1000, CRC(7761ad24) SHA1(98878b19addd142d35718080eece05eaaee0388d) ) /* ?? */
- ROM_LOAD( "6.5n", 0x1000, 0x1000, CRC(da48444c) SHA1(a43e672ce262eb817fb4e5715ef4fb304a6a2815) )
-
- ROM_REGION( 0x00a0, REGION_PROMS, 0 )
- ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(ef2053ab) SHA1(2006cbf003f90a8e75f39047a88a3bba85d78e80) )
- ROM_LOAD( "2.bpr", 0x0020, 0x0020, CRC(2281d39f) SHA1(e9b568bdacf7ab611801cf42ea5c7624f5440ef6) )
- ROM_LOAD( "3.bpr", 0x0040, 0x0020, CRC(9e6341e3) SHA1(2e7a4d3c1f40d6089735734b9d9de2ca57fb73c7) )
- ROM_LOAD( "4.bpr", 0x0060, 0x0020, CRC(1c97dc0b) SHA1(fe8e0a91172abdd2d14b199da144306a9b944372) )
- ROM_LOAD( "5.bpr", 0x0080, 0x0020, CRC(edd6c05f) SHA1(b95db8aaf74fe175d1179f0d85f79242b16f5fb4) )
-ROM_END
-
-ROM_START( yamato2 )
- ROM_REGION( 2*0x10000, REGION_CPU1, 0 ) /* 64k for code + 64k for decrypted opcodes */
- ROM_LOAD( "2-2.5de", 0x0000, 0x2000, CRC(93da1d52) SHA1(21b72856ebbd969e4e075b52719e6acdbd1bc4c5) )
- ROM_LOAD( "3-2.5f", 0x2000, 0x2000, CRC(31e73821) SHA1(e582c9fcea1b29d43f65b6aa67e1895c38d2736c) )
- ROM_LOAD( "4-2.5jh", 0x4000, 0x2000, CRC(fd7bcfc3) SHA1(5037170cb3a9824794e90d74def92b0b25d45caa) )
- /* hole at 6000-6fff */
- /* 7000-7fff not present here */
-
- ROM_REGION( 0x10000, REGION_CPU2, 0 )
- ROM_LOAD( "1.5v", 0x0000, 0x0800, CRC(3aad9e3c) SHA1(37b0414b265397881bb45b166ecab85880d1358d) )
-
- ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
- ROM_LOAD( "10.11k", 0x0000, 0x1000, CRC(161121f5) SHA1(017c5c6b773b0ae1d0be52e4bac90b699ea196dd) )
- ROM_CONTINUE( 0x2000, 0x1000 )
- ROM_LOAD( "9.11h", 0x1000, 0x1000, CRC(56e84cc4) SHA1(c48e0e5460376d6b34173c42a27907ef12218182) )
- ROM_CONTINUE( 0x3000, 0x1000 )
-
- ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
- ROM_LOAD( "8.11c", 0x0000, 0x1000, CRC(28024d9a) SHA1(c871c4d74be72a8bfea99e89d43f91922f4b734b) )
- ROM_LOAD( "7.11a", 0x1000, 0x1000, CRC(4a179790) SHA1(7fb6b033de939ff8bd13055c073311dca2c1a6fe) )
-
- ROM_REGION( 0x2000, REGION_USER1, 0 )
- ROM_LOAD( "5.5lm", 0x0000, 0x1000, CRC(7761ad24) SHA1(98878b19addd142d35718080eece05eaaee0388d) ) /* ?? */
- ROM_LOAD( "6.5n", 0x1000, 0x1000, CRC(da48444c) SHA1(a43e672ce262eb817fb4e5715ef4fb304a6a2815) )
-
- ROM_REGION( 0x00a0, REGION_PROMS, 0 )
- ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(ef2053ab) SHA1(2006cbf003f90a8e75f39047a88a3bba85d78e80) )
- ROM_LOAD( "2.bpr", 0x0020, 0x0020, CRC(2281d39f) SHA1(e9b568bdacf7ab611801cf42ea5c7624f5440ef6) )
- ROM_LOAD( "3.bpr", 0x0040, 0x0020, CRC(9e6341e3) SHA1(2e7a4d3c1f40d6089735734b9d9de2ca57fb73c7) )
- ROM_LOAD( "4.bpr", 0x0060, 0x0020, CRC(1c97dc0b) SHA1(fe8e0a91172abdd2d14b199da144306a9b944372) )
- ROM_LOAD( "5.bpr", 0x0080, 0x0020, CRC(edd6c05f) SHA1(b95db8aaf74fe175d1179f0d85f79242b16f5fb4) )
-ROM_END
-
-ROM_START( toprollr )
- ROM_REGION( 0x10000*2, REGION_CPU1, 0 )
- ROM_LOAD( "10.k3", 0xc000, 0x2000, CRC(1e8914a6) SHA1(ec17f185f890d04ce75a5d8edf8b32da60e7a8d8) )
- ROM_LOAD( "11.l3", 0xe000, 0x2000, CRC(b20a9fa2) SHA1(accd3296447eca002b0808e7b02832f5e35407e8) )
-
- ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
- ROM_LOAD( "15.h4", 0x0000, 0x2000, CRC(1d9e3325) SHA1(e7f6863aa2ba2aeec40cfcc5cf6c69e947c185b5) )
- ROM_LOAD( "16.j4", 0x2000, 0x2000, CRC(ce3afe26) SHA1(7de00720f091537c64cc0fec687c061de3a8b1a3) )
-
- ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
- ROM_LOAD( "5.l5", 0x0000, 0x1000, CRC(84139f46) SHA1(976f781fb279dd540778708174b942a263f16443) )
- ROM_LOAD( "6.m5", 0x1000, 0x1000, CRC(e30c1dd8) SHA1(1777bf98625153c9b191020860e4e1839b46b998) )
-
- ROM_REGION( 0x04000, REGION_GFX3, ROMREGION_DISPOSE )
- ROM_LOAD( "13.a4", 0x0000, 0x2000, CRC(89327329) SHA1(555331a3136aa8c5bb35b97dd54bc59da067be57) )
- ROM_LOAD( "14.c4", 0x2000, 0x2000, CRC(7a945733) SHA1(14187ba303aecf0a812c425c34d8edda3deaa2b5) )
-
- ROM_REGION( 0x12000, REGION_USER1, 0 )
- ROM_LOAD( "2.f5", 0x00000, 0x02000, CRC(ef789f00) SHA1(424d69584d391ee7b9ad5db7ee6ced97d69897d4) )
- ROM_LOAD( "8.f3", 0x02000, 0x02000, CRC(94371cfb) SHA1(cb501c36b213c995a4048b3a96c85848c556cd05) )
- ROM_LOAD( "4.k5", 0x04000, 0x02000, CRC(1cb48ea0) SHA1(fdc75075112042ec84a7d1b3e5b5a6db1d1cb871) )
- ROM_COPY( REGION_USER1, 0x04000, 0x0a000, 0x02000 )
- ROM_COPY( REGION_USER1, 0x04000, 0x10000, 0x02000 )
- ROM_LOAD( "3.h5", 0x06000, 0x02000, CRC(d45494ba) SHA1(6e235b34f9457acadad6d4e27799978bc2e3db08) )
- ROM_LOAD( "9.h3", 0x08000, 0x02000, CRC(8a8032a7) SHA1(d6642d72645c613c21f65bbbe1560d0437d41f43) )
- ROM_LOAD( "1.d5", 0x0c000, 0x02000, CRC(9894374d) SHA1(173de4abbc3fb5d522aa6d6d5caf8e4d54f2a598) )
- ROM_LOAD( "7.d3", 0x0e000, 0x02000, CRC(904fffb6) SHA1(5528bc2a4d2fe8672428fd4725644265f0d57ded) )
-
- ROM_REGION( 0x2000, REGION_SOUND1, 0 )
- ROM_LOAD( "12.p3", 0x0000, 0x2000, CRC(7f989dc9) SHA1(3b4d18cbb992872b3cf8f5eaf5381ed3a9468cc1) )
-
- ROM_REGION( 0x01a0, REGION_PROMS, 0 )
- ROM_LOAD( "prom.a1", 0x0000, 0x0020, CRC(7d626d6c) SHA1(7c7202d0ec5bf0381e7104eef53afa5fa4596a29) ) //00-07 big sprites
- ROM_LOAD( "prom.p2", 0x0020, 0x0020, CRC(42e828fa) SHA1(81250b1f7c3956b3902324adbbaf3b5989e854ee) ) //08-0f sprites + fg (wrong?)
- ROM_LOAD( "prom.r2", 0x0040, 0x0020, CRC(99b87eed) SHA1(06c3164d681fe4aff0338c0dad1a921f7fe7369d) ) //10-17 sprites
- ROM_LOAD( "prom.p9", 0x0060, 0x0020, CRC(eb399c02) SHA1(bf3d6c6dd982cb54446cf8a010b7adb949514bdb) ) //18-1f bg
- ROM_LOAD( "prom.n9", 0x0080, 0x0020, CRC(fb03ea99) SHA1(4dcef86106cef713dfcbd965072bfa8fe4b68e15) ) //20-27 bg
- ROM_LOAD( "prom.s9", 0x00a0, 0x0100, CRC(abf4c5fb) SHA1(a953f14642d4b72328293b36bc3c65b13491ffff) ) //unknown prom (filled with 2 bit vals)
-
-ROM_END
-
-static DRIVER_INIT( yamato )
-{
- yamato_decode();
-}
-
-static DRIVER_INIT( toprollr )
-{
- toprollr_decode();
-}
-
-GAME( 1983, yamato, 0, yamato, yamato, yamato, ROT90, "Sega", "Yamato (US)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1983, yamato2, yamato, yamato, yamato, yamato, ROT90, "Sega", "Yamato (World?)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1983, toprollr, 0, toprollr, toprollr, toprollr, ROT90, "Jaleco", "Top Roller", GAME_IMPERFECT_COLORS )
diff --git a/src/mame/includes/cclimber.h b/src/mame/includes/cclimber.h
index 4fe3ec710b0..8eea466eda0 100644
--- a/src/mame/includes/cclimber.h
+++ b/src/mame/includes/cclimber.h
@@ -9,32 +9,40 @@ DRIVER_INIT( ckongb );
/*----------- defined in video/cclimber.c -----------*/
-extern UINT8 *cclimber_bsvideoram;
-extern size_t cclimber_bsvideoram_size;
-extern UINT8 *cclimber_bigspriteram;
+extern UINT8 *cclimber_videoram;
+extern UINT8 *cclimber_colorram;
+extern UINT8 *cclimber_spriteram;
+extern UINT8 *cclimber_bigsprite_videoram;
+extern UINT8 *cclimber_bigsprite_control;
+
extern UINT8 *cclimber_column_scroll;
+extern UINT8 *cclimber_flip_screen;
-extern UINT8 *swimmer_bgcolor;
-extern UINT8 *swimmer_sidepanel_enabled;
+extern UINT8 *swimmer_background_color;
+extern UINT8 *swimmer_side_background_enabled;
extern UINT8 *swimmer_palettebank;
-extern UINT8 *toprollr_videoram2;
-extern UINT8 *toprollr_videoram3;
-extern UINT8 *toprollr_videoram4;
+extern UINT8 *toprollr_bg_videoram;
+extern UINT8 *toprollr_bg_coloram;
WRITE8_HANDLER( cclimber_colorram_w );
+WRITE8_HANDLER( cannonb_flip_screen_w );
+
PALETTE_INIT( cclimber );
+VIDEO_START( cclimber );
VIDEO_UPDATE( cclimber );
-VIDEO_UPDATE( cannonb );
+PALETTE_INIT( swimmer );
+VIDEO_START( swimmer );
+VIDEO_UPDATE( swimmer );
+PALETTE_INIT( yamato );
VIDEO_UPDATE( yamato );
+
+PALETTE_INIT( toprollr );
VIDEO_START( toprollr );
VIDEO_UPDATE( toprollr );
-PALETTE_INIT( swimmer );
-VIDEO_UPDATE( swimmer );
-
/*----------- defined in audio/cclimber.c -----------*/
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index 6efae492953..6e792ad2916 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -1028,7 +1028,6 @@ $(MAMEOBJ)/nichibut.a: \
$(DRIVERS)/terracre.o $(VIDEO)/terracre.o \
$(DRIVERS)/tubep.o $(VIDEO)/tubep.o \
$(DRIVERS)/wiping.o $(AUDIO)/wiping.o $(VIDEO)/wiping.o \
- $(DRIVERS)/yamato.o \
$(MACHINE)/nb1413m3.o \
$(MAMEOBJ)/nintendo.a: \
diff --git a/src/mame/video/cclimber.c b/src/mame/video/cclimber.c
index f7f3ef86ca0..9e37276f057 100644
--- a/src/mame/video/cclimber.c
+++ b/src/mame/video/cclimber.c
@@ -11,14 +11,33 @@
#include "includes/cclimber.h"
-UINT8 *cclimber_bsvideoram;
-size_t cclimber_bsvideoram_size;
-UINT8 *cclimber_bigspriteram;
+#define CCLIMBER_FLIP_X (cclimber_flip_screen[0] & 0x01)
+#define CCLIMBER_FLIP_Y (cclimber_flip_screen[1] & 0x01)
+#define CCLIMBER_BG_PEN (0)
+#define SWIMMER_SIDE_BG_PEN (0x120)
+#define SWIMMER_BG_SPLIT (0x18 * 8)
+#define YAMATO_SKY_PEN_BASE (0x60)
+
+static tilemap *pf_tilemap;
+static tilemap *bs_tilemap;
+
+UINT8 *cclimber_videoram;
+UINT8 *cclimber_colorram;
+UINT8 *cclimber_spriteram;
+
+UINT8 *cclimber_bigsprite_videoram;
+UINT8 *cclimber_bigsprite_control;
UINT8 *cclimber_column_scroll;
-UINT8 *swimmer_bgcolor;
-UINT8 *swimmer_sidepanel_enabled;
+UINT8 *cclimber_flip_screen;
+
+UINT8 *swimmer_background_color;
+UINT8 *swimmer_side_background_enabled;
UINT8 *swimmer_palettebank;
+UINT8 *toprollr_bg_videoram;
+UINT8 *toprollr_bg_coloram;
+static tilemap *toproller_bg_tilemap;
+
/***************************************************************************
@@ -41,43 +60,36 @@ PALETTE_INIT( cclimber )
{
static const int resistances_rg[3] = { 1000, 470, 220 };
static const int resistances_b [2] = { 470, 220 };
- double rweights[3], gweights[3], bweights[2];
+ double weights_rg[3], weights_b[2];
int i;
/* compute the color output resistor weights */
compute_resistor_weights(0, 255, -1.0,
- 3, &resistances_rg[0], rweights, 0, 0,
- 3, &resistances_rg[0], gweights, 0, 0,
- 2, &resistances_b[0], bweights, 0, 0);
+ 3, resistances_rg, weights_rg, 0, 0,
+ 2, resistances_b, weights_b, 0, 0,
+ 0, 0, 0, 0, 0);
for (i = 0;i < machine->config->total_colors; i++)
{
- UINT8 data;
int bit0, bit1, bit2;
int r, g, b;
- if (i & 0x07)
- data = color_prom[i];
- else
- /* River Patrol shows that background is pen 0 */
- data = color_prom[0];
-
/* red component */
- bit0 = (data >> 0) & 0x01;
- bit1 = (data >> 1) & 0x01;
- bit2 = (data >> 2) & 0x01;
- r = combine_3_weights(rweights, bit0, bit1, bit2);
+ bit0 = (color_prom[i] >> 0) & 0x01;
+ bit1 = (color_prom[i] >> 1) & 0x01;
+ bit2 = (color_prom[i] >> 2) & 0x01;
+ r = combine_3_weights(weights_rg, bit0, bit1, bit2);
/* green component */
- bit0 = (data >> 3) & 0x01;
- bit1 = (data >> 4) & 0x01;
- bit2 = (data >> 5) & 0x01;
- g = combine_3_weights(gweights, bit0, bit1, bit2);
+ bit0 = (color_prom[i] >> 3) & 0x01;
+ bit1 = (color_prom[i] >> 4) & 0x01;
+ bit2 = (color_prom[i] >> 5) & 0x01;
+ g = combine_3_weights(weights_rg, bit0, bit1, bit2);
/* blue component */
- bit0 = (data >> 6) & 0x01;
- bit1 = (data >> 7) & 0x01;
- b = combine_2_weights(bweights, bit0, bit1);
+ bit0 = (color_prom[i] >> 6) & 0x01;
+ bit1 = (color_prom[i] >> 7) & 0x01;
+ b = combine_2_weights(weights_b, bit0, bit1);
palette_set_color(machine, i, MAKE_RGB(r, g, b));
}
@@ -124,53 +136,30 @@ PALETTE_INIT( swimmer )
{
int i;
- for (i = 0; i < 0x200; i++)
+ for (i = 0; i < 0x100; i++)
{
- rgb_t color;
+ int bit0, bit1, bit2;
+ int r, g, b;
- /* non-backgrond pens */
- if (i & 0x07)
- {
- int bit0, bit1, bit2;
- int r, g, b;
-
- /* red component */
- bit0 = (color_prom[(i & 0xff) + 0x000] >> 0) & 0x01;
- bit1 = (color_prom[(i & 0xff) + 0x000] >> 1) & 0x01;
- bit2 = (color_prom[(i & 0xff) + 0x000] >> 2) & 0x01;
- r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
-
- /* green component */
- bit0 = (color_prom[(i & 0xff) + 0x000] >> 3) & 0x01;
- bit1 = (color_prom[(i & 0xff) + 0x100] >> 0) & 0x01;
- bit2 = (color_prom[(i & 0xff) + 0x100] >> 1) & 0x01;
- g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
-
- /* blue component */
- bit0 = 0;
- bit1 = (color_prom[(i & 0xff) + 0x100] >> 2) & 0x01;
- bit2 = (color_prom[(i & 0xff) + 0x100] >> 3) & 0x01;
- b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
-
- color = MAKE_RGB(r,g,b);
- }
+ /* red component */
+ bit0 = (color_prom[i + 0x000] >> 0) & 0x01;
+ bit1 = (color_prom[i + 0x000] >> 1) & 0x01;
+ bit2 = (color_prom[i + 0x000] >> 2) & 0x01;
+ r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
- /* backgrond pen */
- else
- {
- if (i & 0x100)
- /* side panel */
-#if 0
- // values calculated from the resistors don't seem to match the real board
- color = MAKE_RGB(0x24, 0x5d, 0x4e);
-#endif
- color = MAKE_RGB(0x20, 0x98, 0x79);
- else
- /* 'water' background -- will be modified dynamically later */
- color = RGB_BLACK;
- }
+ /* green component */
+ bit0 = (color_prom[i + 0x000] >> 3) & 0x01;
+ bit1 = (color_prom[i + 0x100] >> 0) & 0x01;
+ bit2 = (color_prom[i + 0x100] >> 1) & 0x01;
+ g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
- palette_set_color(machine, i, color);
+ /* blue component */
+ bit0 = 0;
+ bit1 = (color_prom[i + 0x100] >> 2) & 0x01;
+ bit2 = (color_prom[i + 0x100] >> 3) & 0x01;
+ b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
+
+ palette_set_color(machine, i, MAKE_RGB(r, g, b));
}
color_prom += 0x200;
@@ -199,11 +188,116 @@ PALETTE_INIT( swimmer )
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
- palette_set_color(machine, i + 0x200, MAKE_RGB(r, g, b));
+ palette_set_color(machine, i + 0x100, MAKE_RGB(r, g, b));
+ }
+
+ /* side panel backgrond pen */
+#if 0
+ // values calculated from the resistors don't seem to match the real board
+ palette_set_color(machine, SWIMMER_SIDE_BG_PEN, MAKE_RGB(0x24, 0x5d, 0x4e));
+#endif
+ palette_set_color(machine, SWIMMER_SIDE_BG_PEN, MAKE_RGB(0x20, 0x98, 0x79));
+}
+
+
+PALETTE_INIT( yamato )
+{
+ int i;
+
+ /* chars - 12 bits RGB */
+ for (i = 0; i < 0x40; i++)
+ {
+ int bit0, bit1, bit2, bit3;
+ int r, g, b;
+
+ /* red component */
+ bit0 = (color_prom[i + 0x00] >> 0) & 0x01;
+ bit1 = (color_prom[i + 0x00] >> 1) & 0x01;
+ bit2 = (color_prom[i + 0x00] >> 2) & 0x01;
+ bit3 = (color_prom[i + 0x00] >> 3) & 0x01;
+ r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
+
+ /* green component */
+ bit0 = (color_prom[i + 0x00] >> 4) & 0x01;
+ bit1 = (color_prom[i + 0x00] >> 5) & 0x01;
+ bit2 = (color_prom[i + 0x00] >> 6) & 0x01;
+ bit3 = (color_prom[i + 0x00] >> 7) & 0x01;
+ g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
+
+ /* blue component */
+ bit0 = (color_prom[i + 0x40] >> 0) & 0x01;
+ bit1 = (color_prom[i + 0x40] >> 1) & 0x01;
+ bit2 = (color_prom[i + 0x40] >> 2) & 0x01;
+ bit3 = (color_prom[i + 0x40] >> 3) & 0x01;
+ b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
+
+ palette_set_color(machine, i, MAKE_RGB(r, g, b));
}
+
+ /* big sprite - 8 bits RGB */
+ for (i = 0; i < 0x20; i++)
+ {
+ int bit0, bit1, bit2;
+ int r, g, b;
+
+ /* red component */
+ bit0 = (color_prom[i + 0x80] >> 0) & 0x01;
+ bit1 = (color_prom[i + 0x80] >> 1) & 0x01;
+ bit2 = (color_prom[i + 0x80] >> 2) & 0x01;
+ r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ /* green component */
+ bit0 = (color_prom[i + 0x80] >> 3) & 0x01;
+ bit1 = (color_prom[i + 0x80] >> 4) & 0x01;
+ bit2 = (color_prom[i + 0x80] >> 5) & 0x01;
+ g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ /* blue component */
+ bit0 = 0;
+ bit1 = (color_prom[i + 0x80] >> 6) & 0x01;
+ bit2 = (color_prom[i + 0x80] >> 7) & 0x01;
+ b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ palette_set_color(machine, i + 0x40, MAKE_RGB(r, g, b));
+ }
+
+ /* fake colors for bg gradient */
+ for (i = 0; i < 0x100; i++)
+ palette_set_color(machine, YAMATO_SKY_PEN_BASE + i, MAKE_RGB(0, 0, i));
}
+PALETTE_INIT( toprollr )
+{
+ int i;
+
+ for (i = 0; i < 0xa0; i++)
+ {
+ int bit0, bit1, bit2;
+ int r, g, b;
+
+ /* red component */
+ bit0 = (color_prom[i] >> 0) & 0x01;
+ bit1 = (color_prom[i] >> 1) & 0x01;
+ bit2 = (color_prom[i] >> 2) & 0x01;
+ r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ /* green component */
+ bit0 = (color_prom[i] >> 3) & 0x01;
+ bit1 = (color_prom[i] >> 4) & 0x01;
+ bit2 = (color_prom[i] >> 5) & 0x01;
+ g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ /* blue component */
+ bit0 = 0;
+ bit1 = (color_prom[i] >> 6) & 0x01;
+ bit2 = (color_prom[i] >> 7) & 0x01;
+ b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ palette_set_color(machine, i, MAKE_RGB(r, g, b));
+ }
+}
+
/***************************************************************************
@@ -224,692 +318,453 @@ PALETTE_INIT( swimmer )
static void swimmer_set_background_pen(running_machine *machine)
{
- int i;
- pen_t color;
int bit0, bit1, bit2;
int r, g, b;
/* red component */
bit0 = 0;
- bit1 = (*swimmer_bgcolor >> 6) & 0x01;
- bit2 = (*swimmer_bgcolor >> 7) & 0x01;
+ bit1 = (*swimmer_background_color >> 6) & 0x01;
+ bit2 = (*swimmer_background_color >> 7) & 0x01;
r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* green component */
- bit0 = (*swimmer_bgcolor >> 3) & 0x01;
- bit1 = (*swimmer_bgcolor >> 4) & 0x01;
- bit2 = (*swimmer_bgcolor >> 5) & 0x01;
+ bit0 = (*swimmer_background_color >> 3) & 0x01;
+ bit1 = (*swimmer_background_color >> 4) & 0x01;
+ bit2 = (*swimmer_background_color >> 5) & 0x01;
g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* blue component */
- bit0 = (*swimmer_bgcolor >> 0) & 0x01;
- bit1 = (*swimmer_bgcolor >> 1) & 0x01;
- bit2 = (*swimmer_bgcolor >> 2) & 0x01;
+ bit0 = (*swimmer_background_color >> 0) & 0x01;
+ bit1 = (*swimmer_background_color >> 1) & 0x01;
+ bit2 = (*swimmer_background_color >> 2) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
- color = MAKE_RGB(r, g, b);
-
- /* set pen 0 if each color code */
- for (i = 0; i < 0x100; i += 8)
- palette_set_color(machine, i, color);
+ palette_set_color(machine, CCLIMBER_BG_PEN, MAKE_RGB(r, g, b));
}
WRITE8_HANDLER( cclimber_colorram_w )
{
- /* bit 5 of the address is not used for color memory. There is just */
- /* 512 bytes of memory; every two consecutive rows share the same memory */
- /* region. */
- colorram[offset] = data;
- colorram[offset ^ 0x20] = data;
+ /* A5 is not connected, there is only 0x200 bytes of RAM */
+ cclimber_colorram[offset & ~0x20] = data;
+ cclimber_colorram[offset | 0x20] = data;
}
-
-static void cclimber_draw_big_sprite(running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect)
+WRITE8_HANDLER( cannonb_flip_screen_w )
{
- int offs;
- int ox,oy,sx,sy,flipx,flipy;
- int color;
+ cclimber_flip_screen[0] = data;
+ cclimber_flip_screen[1] = data;
+}
- ox = 136 - cclimber_bigspriteram[3];
- oy = 128 - cclimber_bigspriteram[2];
- flipx = cclimber_bigspriteram[1] & 0x10;
- flipy = cclimber_bigspriteram[1] & 0x20;
- if (flip_screen_y_get()) /* only the Y direction has to be flipped */
- {
- oy = 128 - oy;
- flipy = !flipy;
- }
- color = cclimber_bigspriteram[1] & 0x07; /* cclimber */
-// color = cclimber_bigspriteram[1] & 0x03; /* swimmer */
+static TILE_GET_INFO( cclimber_get_pf_tile_info )
+{
+ int code, color;
- for (offs = cclimber_bsvideoram_size - 1;offs >= 0;offs--)
- {
- sx = offs % 16;
- sy = offs / 16;
- if (flipx) sx = 15 - sx;
- if (flipy) sy = 15 - sy;
-
- drawgfx(bitmap,machine->gfx[2],
-// cclimber_bsvideoram[offs], /* cclimber */
- cclimber_bsvideoram[offs] + ((cclimber_bigspriteram[1] & 0x08) << 5), /* swimmer */
- color,
- flipx,flipy,
- (ox+8*sx) & 0xff,(oy+8*sy) & 0xff,
- cliprect,TRANSPARENCY_PEN,0);
-
- /* wraparound */
- drawgfx(bitmap,machine->gfx[2],
-// cclimber_bsvideoram[offs], /* cclimber */
- cclimber_bsvideoram[offs] + ((cclimber_bigspriteram[1] & 0x08) << 5), /* swimmer */
- color,
- flipx,flipy,
- ((ox+8*sx) & 0xff) - 256,(oy+8*sy) & 0xff,
- cliprect,TRANSPARENCY_PEN,0);
- }
-}
+ int flags = TILE_FLIPYX(cclimber_colorram[tile_index] >> 6);
+ /* vertical flipping flips two adjacent characters */
+ if (flags & 0x02)
+ tile_index = tile_index ^ 0x20;
-VIDEO_UPDATE( cclimber )
-{
- int offs;
+ code = ((cclimber_colorram[tile_index] & 0x10) << 5) |
+ ((cclimber_colorram[tile_index] & 0x20) << 3) |
+ cclimber_videoram[tile_index];
- for (offs = videoram_size - 1;offs >= 0;offs--)
- {
- int sx,sy,flipx,flipy;
+ color = cclimber_colorram[tile_index] & 0x0f;
- sx = offs % 32;
- sy = offs / 32;
- flipx = colorram[offs] & 0x40;
- flipy = colorram[offs] & 0x80;
- /* vertical flipping flips two adjacent characters */
- if (flipy) sy ^= 1;
+ SET_TILE_INFO(0, code, color, flags);
+}
- if (flip_screen_x_get())
- {
- sx = 31 - sx;
- flipx = !flipx;
- }
- if (flip_screen_y_get())
- {
- sy = 31 - sy;
- flipy = !flipy;
- }
- drawgfx(tmpbitmap,machine->gfx[(colorram[offs] & 0x10) ? 1 : 0],
- videoram[offs] + 8 * (colorram[offs] & 0x20),
- colorram[offs] & 0x0f,
- flipx,flipy,
- 8*sx,8*sy,
- 0,TRANSPARENCY_NONE,0);
- }
+static TILE_GET_INFO( swimmer_get_pf_tile_info )
+{
+ int code, color;
+ int flags = TILE_FLIPYX(cclimber_colorram[tile_index] >> 6);
- /* copy the temporary bitmap to the screen */
- {
- int scroll[32];
+ /* vertical flipping flips two adjacent characters */
+ if (flags & 0x02)
+ tile_index = tile_index ^ 0x20;
+ code = ((cclimber_colorram[tile_index] & 0x10) << 4) | cclimber_videoram[tile_index];
+ color = ((*swimmer_palettebank & 0x01) << 4) | (cclimber_colorram[tile_index] & 0x0f);
- if (flip_screen_x_get())
- {
- for (offs = 0;offs < 32;offs++)
- {
- scroll[offs] = -cclimber_column_scroll[31 - offs];
- if (flip_screen_y_get()) scroll[offs] = -scroll[offs];
- }
- }
- else
- {
- for (offs = 0;offs < 32;offs++)
- {
- scroll[offs] = -cclimber_column_scroll[offs];
- if (flip_screen_y_get()) scroll[offs] = -scroll[offs];
- }
- }
+ SET_TILE_INFO(0, code, color, flags);
+}
- copyscrollbitmap(bitmap,tmpbitmap,0,0,32,scroll,cliprect);
- }
+static TILE_GET_INFO( toprollr_get_pf_tile_info )
+{
+ int code, attr, color;
- if (cclimber_bigspriteram[0] & 1)
- /* draw the "big sprite" below sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
+ attr = tile_index & 0x10 ? cclimber_colorram[tile_index & ~0x20] : cclimber_colorram[tile_index];
+ code = ((attr & 0x30) << 4) | cclimber_videoram[tile_index];
+ color = attr & 0x0f;
+ SET_TILE_INFO(0, code, color, 0);
+}
- /* Draw the sprites. Note that it is important to draw them exactly in this */
- /* order, to have the correct priorities. */
- for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
- {
- int sx,sy,flipx,flipy;
+static TILE_GET_INFO( cclimber_get_bs_tile_info )
+{
+ int code, color;
- sx = spriteram[offs + 3];
- sy = 240 - spriteram[offs + 2];
- flipx = spriteram[offs] & 0x40;
- flipy = spriteram[offs] & 0x80;
- if (flip_screen_x_get())
- {
- sx = 240 - sx;
- flipx = !flipx;
- }
- if (flip_screen_y_get())
- {
- sy = 240 - sy;
- flipy = !flipy;
- }
+ /* only the lower right is visible */
+ tileinfo->group = ((tile_index & 0x210) == 0x210) ? 0 : 1;
- drawgfx(bitmap,machine->gfx[spriteram[offs + 1] & 0x10 ? 4 : 3],
- (spriteram[offs] & 0x3f) + 2 * (spriteram[offs + 1] & 0x20),
- spriteram[offs + 1] & 0x0f,
- flipx,flipy,
- sx,sy,
- cliprect,TRANSPARENCY_PEN,0);
- }
+ /* the address doesn't use A4 of the coordinates, giving a 16x16 map */
+ tile_index = ((tile_index & 0x1e0) >> 1) | (tile_index & 0x0f);
+ code = ((cclimber_bigsprite_control[1] & 0x08) << 5) | cclimber_bigsprite_videoram[tile_index];
+ color = cclimber_bigsprite_control[1] & 0x07;
- if ((cclimber_bigspriteram[0] & 1) == 0)
- /* draw the "big sprite" over sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
- return 0;
+ SET_TILE_INFO(2, code, color, 0);
}
-VIDEO_UPDATE( cannonb )
+static TILE_GET_INFO( toprollr_get_bs_tile_info )
{
- int offs;
-
- for (offs = videoram_size - 1;offs >= 0;offs--)
- {
- int attr,code,color,sx,sy,flipx,flipy;
-
- code = videoram[offs];
- attr = colorram[offs] & 0x20;
- color = colorram[offs] & 0x0f;
- sx = offs % 32;
- sy = offs / 32;
- flipx = colorram[offs] & 0x40;
- flipy = colorram[offs] & 0x80;
- /* vertical flipping flips two adjacent characters */
- if (flipy) sy ^= 1;
-
- if (flip_screen_x_get())
- {
- sx = 31 - sx;
- flipx = !flipx;
- }
- if (flip_screen_y_get())
- {
- sy = 31 - sy;
- flipy = !flipy;
- }
+ int code, color;
- drawgfx(tmpbitmap,machine->gfx[0],
- code + 8 * attr,
- color,
- flipx,flipy,
- 8*sx,8*sy,
- 0,TRANSPARENCY_NONE,0);
- }
+ /* only the lower right is visible */
+ tileinfo->group = ((tile_index & 0x210) == 0x210) ? 0 : 1;
+ /* the address doesn't use A4 of the coordinates, giving a 16x16 map */
+ tile_index = ((tile_index & 0x1e0) >> 1) | (tile_index & 0x0f);
- /* copy the temporary bitmap to the screen */
- {
- int scroll[32];
-
+ code = ((cclimber_bigsprite_control[1] & 0x18) << 5) | cclimber_bigsprite_videoram[tile_index];
+ color = cclimber_bigsprite_control[1] & 0x07;
- if (flip_screen_x_get())
- {
- for (offs = 0;offs < 32;offs++)
- {
- scroll[offs] = -cclimber_column_scroll[31 - offs];
- if (flip_screen_y_get()) scroll[offs] = -scroll[offs];
- }
- }
- else
- {
- for (offs = 0;offs < 32;offs++)
- {
- scroll[offs] = -cclimber_column_scroll[offs];
- if (flip_screen_y_get()) scroll[offs] = -scroll[offs];
- }
- }
+ SET_TILE_INFO(2, code, color, 0);
+}
- copyscrollbitmap(bitmap,tmpbitmap,0,0,32,scroll,cliprect);
- }
+static TILE_GET_INFO( toproller_get_bg_tile_info )
+{
+ int code = ((toprollr_bg_coloram[tile_index] & 0x40) << 2) | toprollr_bg_videoram[tile_index];
+ int color = toprollr_bg_coloram[tile_index] & 0x0f;
- if (cclimber_bigspriteram[0] & 1)
- /* draw the "big sprite" below sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
+ SET_TILE_INFO(3, code, color, TILE_FLIPX);
+}
- /* Draw the sprites. Note that it is important to draw them exactly in this */
- /* order, to have the correct priorities. */
- for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
- {
- int code,color,sx,sy,flipx,flipy;
-
- code = spriteram[offs] & 0x3f;
- color = spriteram[offs + 1] & 0x0f;
- sx = spriteram[offs + 3];
- sy = 240 - spriteram[offs + 2];
- flipx = spriteram[offs] & 0x40;
- flipy = spriteram[offs] & 0x80;
- if (flip_screen_x_get())
- {
- sx = 240 - sx;
- flipx = !flipx;
- }
- if (flip_screen_y_get())
- {
- sy = 240 - sy;
- flipy = !flipy;
- }
+VIDEO_START( cclimber )
+{
+ pf_tilemap = tilemap_create(cclimber_get_pf_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+ tilemap_set_transparent_pen(pf_tilemap, 0);
+ tilemap_set_scroll_cols(pf_tilemap, 32);
+
+ bs_tilemap = tilemap_create(cclimber_get_bs_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+ tilemap_set_scroll_cols(bs_tilemap, 1);
+ tilemap_set_scroll_rows(bs_tilemap, 1);
+ tilemap_set_transmask(bs_tilemap, 0, 0x01, 0); /* pen 0 is transaprent */
+ tilemap_set_transmask(bs_tilemap, 1, 0x0f, 0); /* all 4 pens are transparent */
+}
- drawgfx(bitmap,machine->gfx[3],
- code + 0x40,
- color,
- flipx,flipy,
- sx,sy,
- cliprect,TRANSPARENCY_PEN,0);
- }
- if ((cclimber_bigspriteram[0] & 1) == 0)
- /* draw the "big sprite" over sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
- return 0;
+VIDEO_START( swimmer )
+{
+ pf_tilemap = tilemap_create(swimmer_get_pf_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+ tilemap_set_transparent_pen(pf_tilemap, 0);
+ tilemap_set_scroll_cols(pf_tilemap, 32);
+
+ bs_tilemap = tilemap_create(cclimber_get_bs_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+ tilemap_set_scroll_cols(bs_tilemap, 1);
+ tilemap_set_scroll_rows(bs_tilemap, 1);
+ tilemap_set_transmask(bs_tilemap, 0, 0x01, 0); /* pen 0 is transaprent */
+ tilemap_set_transmask(bs_tilemap, 1, 0xff, 0); /* all 8 pens are transparent */
}
-VIDEO_UPDATE( swimmer )
+VIDEO_START( toprollr )
{
- int offs;
+ pf_tilemap = tilemap_create(toprollr_get_pf_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+ tilemap_set_transparent_pen(pf_tilemap, 0);
- swimmer_set_background_pen(machine);
+ toproller_bg_tilemap = tilemap_create(toproller_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+ tilemap_set_scroll_rows(toproller_bg_tilemap, 1);
- for (offs = videoram_size - 1;offs >= 0;offs--)
- {
- int sx,sy,flipx,flipy,color;
+ bs_tilemap = tilemap_create(toprollr_get_bs_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+ tilemap_set_scroll_cols(bs_tilemap, 1);
+ tilemap_set_scroll_rows(bs_tilemap, 1);
+ tilemap_set_transmask(bs_tilemap, 0, 0x01, 0); /* pen 0 is transaprent */
+ tilemap_set_transmask(bs_tilemap, 1, 0x0f, 0); /* all 4 pens are transparent */
+}
- sx = offs % 32;
- sy = offs / 32;
- flipx = colorram[offs] & 0x40;
- flipy = colorram[offs] & 0x80;
- /* vertical flipping flips two adjacent characters */
- if (flipy) sy ^= 1;
- color = (colorram[offs] & 0x0f) + 0x10 * (*swimmer_palettebank & 0x01);
- if (sx >= 24 && (*swimmer_sidepanel_enabled & 0x01))
- {
- color += 32;
- }
+static void draw_playfield(mame_bitmap *bitmap, const rectangle *cliprect)
+{
+ int i;
- if (flip_screen_x_get())
- {
- sx = 31 - sx;
- flipx = !flipx;
- }
- if (flip_screen_y_get())
- {
- sy = 31 - sy;
- flipy = !flipy;
- }
+ tilemap_mark_all_tiles_dirty(pf_tilemap);
+ tilemap_set_flip(pf_tilemap, (CCLIMBER_FLIP_X ? TILEMAP_FLIPX : 0) |
+ (CCLIMBER_FLIP_Y ? TILEMAP_FLIPY : 0));
+ for (i = 0; i < 32; i++)
+ tilemap_set_scrolly(pf_tilemap, i, cclimber_column_scroll[i]);
- drawgfx(tmpbitmap,machine->gfx[0],
- videoram[offs] + ((colorram[offs] & 0x10) << 4),
- color,
- flipx,flipy,
- 8*sx,8*sy,
- 0,TRANSPARENCY_NONE,0);
- }
+ tilemap_draw(bitmap, cliprect, pf_tilemap, 0, 0);
+}
- /* copy the temporary bitmap to the screen */
- {
- int scroll[32];
+static void cclimber_draw_bigsprite(mame_bitmap *bitmap, const rectangle *cliprect)
+{
+ UINT8 x = cclimber_bigsprite_control[3] - 8;
+ UINT8 y = cclimber_bigsprite_control[2];
+ int bigsprite_flip_x = (cclimber_bigsprite_control[1] & 0x10) >> 4;
+ int bigsprite_flip_y = (cclimber_bigsprite_control[1] & 0x20) >> 5;
+ if (bigsprite_flip_x)
+ x = 0x7f - x;
- if (flip_screen_y_get())
- {
- for (offs = 0;offs < 32;offs++)
- scroll[offs] = cclimber_column_scroll[31 - offs];
- }
- else
- {
- for (offs = 0;offs < 32;offs++)
- scroll[offs] = -cclimber_column_scroll[offs];
- }
+ if (bigsprite_flip_y)
+ y = 0x7f - y;
- copyscrollbitmap(bitmap,tmpbitmap,0,0,32,scroll,cliprect);
- }
+ tilemap_mark_all_tiles_dirty(bs_tilemap);
+ tilemap_set_flip(bs_tilemap, (bigsprite_flip_x ? TILEMAP_FLIPX : 0) |
+ (CCLIMBER_FLIP_Y ^ bigsprite_flip_y ? TILEMAP_FLIPY : 0));
- if (cclimber_bigspriteram[0] & 1)
- /* draw the "big sprite" below sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
+ tilemap_set_scrollx(bs_tilemap, 0, x);
+ tilemap_set_scrolly(bs_tilemap, 0, y);
+ tilemap_draw(bitmap, cliprect, bs_tilemap, 0, 0);
+}
- /* Draw the sprites. Note that it is important to draw them exactly in this */
- /* order, to have the correct priorities. */
- for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
- {
- int sx,sy,flipx,flipy;
+static void toprollr_draw_bigsprite(mame_bitmap *bitmap, const rectangle *cliprect)
+{
+ UINT8 x = cclimber_bigsprite_control[3] - 8;
+ UINT8 y = cclimber_bigsprite_control[2];
- sx = spriteram[offs + 3];
- sy = 240 - spriteram[offs + 2];
- flipx = spriteram[offs] & 0x40;
- flipy = spriteram[offs] & 0x80;
- if (flip_screen_x_get())
- {
- sx = 240 - sx;
- flipx = !flipx;
- }
- if (flip_screen_y_get())
- {
- sy = 240 - sy;
- flipy = !flipy;
- }
+ tilemap_mark_all_tiles_dirty(bs_tilemap);
- drawgfx(bitmap,machine->gfx[1],
- (spriteram[offs] & 0x3f) | (spriteram[offs + 1] & 0x10) << 2,
- (spriteram[offs + 1] & 0x0f) + 0x10 * (*swimmer_palettebank & 0x01),
- flipx,flipy,
- sx,sy,
- cliprect,TRANSPARENCY_PEN,0);
- }
+ tilemap_set_flip(bs_tilemap, CCLIMBER_FLIP_Y ? TILEMAP_FLIPY : 0);
+ tilemap_set_scrollx(bs_tilemap, 0, x);
+ tilemap_set_scrolly(bs_tilemap, 0, y);
- if ((cclimber_bigspriteram[0] & 1) == 0)
- /* draw the "big sprite" over sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
- return 0;
+ tilemap_draw(bitmap, cliprect, bs_tilemap, 0, 0);
}
-VIDEO_UPDATE( yamato )
+
+static void cclimber_draw_sprites(mame_bitmap *bitmap, gfx_element **gfx, const rectangle *cliprect)
{
int offs;
- int i,j;
- /* bg gradient */
- fillbitmap(bitmap, 0, cliprect);
-
- for(i=8;i<256;i++)
+ /* draw the sprites -- note that it is important to draw them exactly in this
+ order, to have the correct priorities. */
+ for (offs = 0x1c; offs >= 0; offs -= 4)
{
- pen_t pen = 16*4+8*4 + memory_region(REGION_USER1)[(flip_screen_x_get()?0x1280:0x1200)+(i>>1)];
-
- for(j=0;j<256;j++)
- {
- *BITMAP_ADDR16(bitmap, j, i-8) = pen;
- }
- }
-
+ int x = cclimber_spriteram[offs + 3];
+ int y = 240 - cclimber_spriteram[offs + 2];
- fillbitmap(tmpbitmap, 0, NULL);
+ int code = ((cclimber_spriteram[offs + 1] & 0x10) << 3) |
+ ((cclimber_spriteram[offs + 1] & 0x20) << 1) |
+ ( cclimber_spriteram[offs + 0] & 0x3f);
- for (offs = videoram_size - 1;offs >= 0;offs--)
- {
- int sx,sy,flipx,flipy;
+ int color = cclimber_spriteram[offs + 1] & 0x0f;
- sx = offs % 32;
- sy = offs / 32;
- flipx = colorram[offs] & 0x40;
- flipy = colorram[offs] & 0x80;
- /* vertical flipping flips two adjacent characters */
- if (flipy) sy ^= 1;
+ int flipx = cclimber_spriteram[offs + 0] & 0x40;
+ int flipy = cclimber_spriteram[offs + 0] & 0x80;
- if (flip_screen_x_get())
+ if (CCLIMBER_FLIP_X)
{
- sx = 31 - sx;
+ x = 240 - x;
flipx = !flipx;
}
- if (flip_screen_y_get())
+
+ if (CCLIMBER_FLIP_Y)
{
- sy = 31 - sy;
+ y = 240 - y;
flipy = !flipy;
}
- drawgfx(tmpbitmap,machine->gfx[(colorram[offs] & 0x10) ? 1 : 0],
- videoram[offs] + 8 * (colorram[offs] & 0x20),
- colorram[offs] & 0x0f,
- flipx,flipy,
- 8*sx,8*sy,
- NULL,TRANSPARENCY_PEN,0);
+ drawgfx(bitmap, gfx[1], code, color, flipx, flipy, x, y, cliprect, TRANSPARENCY_PEN, 0);
}
+}
- /* copy the temporary bitmap to the screen */
- {
- int scroll[32];
-
-
- if (flip_screen_x_get())
- {
- for (offs = 0;offs < 32;offs++)
- {
- scroll[offs] = -cclimber_column_scroll[31 - offs];
- if (flip_screen_y_get()) scroll[offs] = -scroll[offs];
- }
- }
- else
- {
- for (offs = 0;offs < 32;offs++)
- {
- scroll[offs] = -cclimber_column_scroll[offs];
- if (flip_screen_y_get()) scroll[offs] = -scroll[offs];
- }
- }
-
- copyscrollbitmap_trans(bitmap,tmpbitmap,0,0,32,scroll,cliprect,0);
- }
-
+static void swimmer_draw_sprites(mame_bitmap *bitmap, gfx_element **gfx, const rectangle *cliprect)
+{
+ int offs;
- if (cclimber_bigspriteram[0] & 1)
- /* draw the "big sprite" below sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
+ /* draw the sprites -- note that it is important to draw them exactly in this
+ order, to have the correct priorities. */
+ for (offs = 0x1c; offs >= 0; offs -= 4)
+ {
+ int x = cclimber_spriteram[offs + 3];
+ int y = 240 - cclimber_spriteram[offs + 2];
+ int code = ((cclimber_spriteram[offs + 1] & 0x10) << 2) |
+ (cclimber_spriteram[offs + 0] & 0x3f);
- /* Draw the sprites. Note that it is important to draw them exactly in this */
- /* order, to have the correct priorities. */
- for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
- {
- int sx,sy,flipx,flipy;
+ int color = ((*swimmer_palettebank & 0x01) << 4) |
+ (cclimber_spriteram[offs + 1] & 0x0f);
+ int flipx = cclimber_spriteram[offs + 0] & 0x40;
+ int flipy = cclimber_spriteram[offs + 0] & 0x80;
- sx = spriteram[offs + 3];
- sy = 240 - spriteram[offs + 2];
- flipx = spriteram[offs] & 0x40;
- flipy = spriteram[offs] & 0x80;
- if (flip_screen_x_get())
+ if (CCLIMBER_FLIP_X)
{
- sx = 240 - sx;
+ x = 240 - x;
flipx = !flipx;
}
- if (flip_screen_y_get())
+
+ if (CCLIMBER_FLIP_Y)
{
- sy = 240 - sy;
+ y = 240 - y;
flipy = !flipy;
}
- drawgfx(bitmap,machine->gfx[spriteram[offs + 1] & 0x10 ? 4 : 3],
- (spriteram[offs] & 0x3f) + 2 * (spriteram[offs + 1] & 0x20),
- spriteram[offs + 1] & 0x0f,
- flipx,flipy,
- sx,sy,
- cliprect,TRANSPARENCY_PEN,0);
+ drawgfx(bitmap, gfx[1], code, color, flipx, flipy, x, y, cliprect, TRANSPARENCY_PEN, 0);
}
-
-
- if ((cclimber_bigspriteram[0] & 1) == 0)
- /* draw the "big sprite" over sprites */
- cclimber_draw_big_sprite(machine, bitmap, cliprect);
- return 0;
}
-/* Top Roller */
+VIDEO_UPDATE( cclimber )
+{
+ fillbitmap(bitmap, CCLIMBER_BG_PEN, cliprect);
+ draw_playfield(bitmap, cliprect);
-#define PRIORITY_OVER 0x20
-#define PRIORITY_UNDER 0x00
-#define PRIORITY_MASK 0x20
+ /* draw the "big sprite" under the regular sprites */
+ if ((cclimber_bigsprite_control[0] & 0x01))
+ {
+ cclimber_draw_bigsprite(bitmap, cliprect);
+ cclimber_draw_sprites(bitmap, machine->gfx, cliprect);
+ }
-static tilemap *bg_tilemap;
+ /* draw the "big sprite" over the regular sprites */
+ else
+ {
+ cclimber_draw_sprites(bitmap, machine->gfx, cliprect);
+ cclimber_draw_bigsprite(bitmap, cliprect);
+ }
-UINT8 *toprollr_videoram2;
-UINT8 *toprollr_videoram3;
-UINT8 *toprollr_videoram4;
+ return 0;
+}
-static TILE_GET_INFO( get_tile_info_bg )
+VIDEO_UPDATE( yamato )
{
- int code = toprollr_videoram3[tile_index];
- int attr = toprollr_videoram4[tile_index];
- int flipx,flipy,bank,palette;
-
- bank=(attr&0x40)<<2;
-
-
+ int i;
+ UINT8 *sky_rom = memory_region(REGION_USER1) + 0x1200;
+ for (i = 0; i < 0x100; i++)
+ {
+ int j;
+ pen_t pen = YAMATO_SKY_PEN_BASE + sky_rom[(CCLIMBER_FLIP_X ? 0x80 : 0) + (i >> 1)];
+ for (j = 0; j < 0x100; j++)
+ *BITMAP_ADDR16(bitmap, j, (i - 8) & 0xff) = pen;
+ }
- flipx=1;
- flipy=0;
+ draw_playfield(bitmap, cliprect);
- code+=bank;
+ /* draw the "big sprite" under the regular sprites */
+ if ((cclimber_bigsprite_control[0] & 0x01))
+ {
+ cclimber_draw_bigsprite(bitmap, cliprect);
+ cclimber_draw_sprites(bitmap, machine->gfx, cliprect);
+ }
- palette=(attr&0xf)+0x18 ;
+ /* draw the "big sprite" over the regular sprites */
+ else
+ {
+ cclimber_draw_sprites(bitmap, machine->gfx, cliprect);
+ cclimber_draw_bigsprite(bitmap, cliprect);
+ }
- SET_TILE_INFO(1, code, palette, (flipx?TILE_FLIPX:0)|(flipy?TILE_FLIPY:0));
+ return 0;
}
-VIDEO_START( toprollr )
-{
- bg_tilemap = tilemap_create(get_tile_info_bg,tilemap_scan_rows,8,8,32,32);
-}
-static void toprollr_draw_big_sprite(running_machine *machine, mame_bitmap *bitmap,const rectangle *cliprect,int priority)
+VIDEO_UPDATE( swimmer )
{
- if((cclimber_bigspriteram[1]&PRIORITY_MASK)==priority)
- {
- int code,xs,ys,palette,bank,x,y;
- int flipx=0;
- int flipy=0;
+ swimmer_set_background_pen(machine);
- xs=136-cclimber_bigspriteram[3];
- ys=128-cclimber_bigspriteram[2];
+ if (*swimmer_side_background_enabled & 0x01)
+ {
+ if (CCLIMBER_FLIP_X)
+ {
+ rectangle split_rect_left = { 0, 0xff - SWIMMER_BG_SPLIT, 0, 0xff };
+ rectangle split_rect_right = { 0x100 - SWIMMER_BG_SPLIT, 0xff, 0, 0xff };
+ sect_rect(&split_rect_left, cliprect);
+ fillbitmap(bitmap, SWIMMER_SIDE_BG_PEN, &split_rect_left);
- if(xs==0)
- {
- return;
+ sect_rect(&split_rect_right, cliprect);
+ fillbitmap(bitmap, CCLIMBER_BG_PEN, &split_rect_right);
}
-
- if (flip_screen_x_get())
+ else
{
- flipx^=1;
- }
-
- palette=cclimber_bigspriteram[1]&0x7;
+ rectangle split_rect_left = { 0, SWIMMER_BG_SPLIT - 1, 0, 0xff };
+ rectangle split_rect_right = { SWIMMER_BG_SPLIT, 0xff, 0, 0xff };
- bank=(cclimber_bigspriteram[1]>>3)&3;
+ sect_rect(&split_rect_left, cliprect);
+ fillbitmap(bitmap, CCLIMBER_BG_PEN, &split_rect_left);
+ sect_rect(&split_rect_right, cliprect);
+ fillbitmap(bitmap, SWIMMER_SIDE_BG_PEN, &split_rect_right);
+ }
+ }
+ else
+ fillbitmap(bitmap, CCLIMBER_BG_PEN, cliprect);
- for(y=0;y<16;y++)
- for(x=0;x<16;x++)
- {
- int sx=x;
- int sy=y;
- if (flipx) sx = 15 - x;
- if (flipy) sy = 15 - y;
+ draw_playfield(bitmap, cliprect);
- code=cclimber_bsvideoram[y*16+x]+bank*256;
+ /* draw the "big sprite" under the regular sprites */
+ if ((cclimber_bigsprite_control[0] & 0x01))
+ {
+ cclimber_draw_bigsprite(bitmap, cliprect);
+ swimmer_draw_sprites(bitmap, machine->gfx, cliprect);
+ }
- drawgfx(bitmap, machine->gfx[3], code, palette, flipx, flipy,(sx*8+xs)&0xff,(sy*8+ys)&0xff, cliprect, TRANSPARENCY_PEN, 0);
- drawgfx(bitmap, machine->gfx[3], code, palette, flipx, flipy,((sx*8+xs)&0xff)-256,((sy*8+ys)&0xff)-256, cliprect, TRANSPARENCY_PEN, 0);
- }
+ /* draw the "big sprite" over the regular sprites */
+ else
+ {
+ swimmer_draw_sprites(bitmap, machine->gfx, cliprect);
+ cclimber_draw_bigsprite(bitmap, cliprect);
}
+
+ return 0;
}
+
VIDEO_UPDATE( toprollr )
{
+ rectangle scroll_area_clip = *cliprect;
+ scroll_area_clip.min_x = 4*8;
+ scroll_area_clip.max_x = 29*8-1;
- UINT32 x,y;
- int offs;
- rectangle myclip=*cliprect;
- myclip.min_x=4*8;
- myclip.max_x=29*8-1;
-
- fillbitmap(bitmap, 0, cliprect);
-
- tilemap_set_scrollx(bg_tilemap,0,toprollr_videoram3[0]+8);
- tilemap_mark_all_tiles_dirty(bg_tilemap);
- tilemap_draw(bitmap, &myclip,bg_tilemap,0,0);
+ fillbitmap(bitmap, CCLIMBER_BG_PEN, cliprect);
- toprollr_draw_big_sprite(machine, bitmap, &myclip, PRIORITY_UNDER);
+ tilemap_set_scrollx(toproller_bg_tilemap, 0, toprollr_bg_videoram[0]);
+ tilemap_set_flip(toproller_bg_tilemap, (CCLIMBER_FLIP_X ? TILEMAP_FLIPX : 0) |
+ (CCLIMBER_FLIP_Y ? TILEMAP_FLIPY : 0));
+ tilemap_mark_all_tiles_dirty(toproller_bg_tilemap);
+ tilemap_draw(bitmap, &scroll_area_clip, toproller_bg_tilemap, 0, 0);
- for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
+ /* draw the "big sprite" over the regular sprites */
+ if ((cclimber_bigsprite_control[1] & 0x20))
{
- int sx,sy,flipx,flipy,palette;
-
- sx = spriteram[offs + 3]-8;
- sy = 240 - spriteram[offs + 2];
- flipx = spriteram[offs] & 0x40;
- flipy = spriteram[offs] & 0x80;
- if (flip_screen_x_get())
- {
- sx = 240 - sx;
- flipx = !flipx;
- }
- if (flip_screen_y_get())
- {
- sy = 240 - sy;
- flipy = !flipy;
- }
-
- palette=0x08+(spriteram[offs + 1] & 0x0f);
-
- drawgfx(bitmap,machine->gfx[2],
- (spriteram[offs] & 0x3f) + 2 * (spriteram[offs + 1] & 0x20)+8*(spriteram[offs + 1] & 0x10),
- palette,
- flipx,flipy,
- sx,sy,
- &myclip,TRANSPARENCY_PEN,0);
+ cclimber_draw_sprites(bitmap, machine->gfx, &scroll_area_clip);
+ toprollr_draw_bigsprite(bitmap, &scroll_area_clip);
}
- toprollr_draw_big_sprite(machine, bitmap, &myclip, PRIORITY_OVER);
+ /* draw the "big sprite" under the regular sprites */
+ else
+ {
+ toprollr_draw_bigsprite(bitmap, &scroll_area_clip);
+ cclimber_draw_sprites(bitmap, machine->gfx, &scroll_area_clip);
+ }
- for(y=0;y<32;y++)
- for(x=0;x<32;x++)
- {
- int sx=x*8;
- int sy=y*8;
- int flipx=0;
- int flipy=0;
-
- int code=videoram[y*32+x];
- int attr=(x>16)?(toprollr_videoram2[(y&0xfe)*32+x]):(toprollr_videoram2[y*32+x]);
- int palette;
-
- if (flip_screen_x_get())
- {
- sx = 240 - sx;
- flipx^=1;
- }
- if (flip_screen_y_get())
- {
- sy = 240 - sy;
- flipy^=1;
- }
-
- palette=8+(attr&0xf);
- drawgfx(bitmap, machine->gfx[0], code+((attr&0xf0)<<4),palette, flipx, flipy, sx, sy, cliprect, TRANSPARENCY_PEN, 0);
+ tilemap_mark_all_tiles_dirty(pf_tilemap);
+ tilemap_set_flip(pf_tilemap, (CCLIMBER_FLIP_X ? TILEMAP_FLIPX : 0) |
+ (CCLIMBER_FLIP_Y ? TILEMAP_FLIPY : 0));
+ tilemap_draw(bitmap, cliprect, pf_tilemap, 0, 0);
- }
return 0;
}
-
-
-
diff --git a/src/mame/video/xxmissio.c b/src/mame/video/xxmissio.c
index e3a8e8ee574..e1ca42e1884 100644
--- a/src/mame/video/xxmissio.c
+++ b/src/mame/video/xxmissio.c
@@ -10,19 +10,24 @@ Video hardware driver by Uki
#include "driver.h"
+UINT8 *xxmissio_bgram;
UINT8 *xxmissio_fgram;
+UINT8 *xxmissio_spriteram;
-static UINT8 xxmissio_xscroll,xxmissio_yscroll;
+static tilemap *bg_tilemap;
+static tilemap *fg_tilemap;
+static UINT8 xscroll;
+static UINT8 yscroll;
static UINT8 flipscreen;
WRITE8_HANDLER( xxmissio_scroll_x_w )
{
- xxmissio_xscroll = data;
+ xscroll = data;
}
WRITE8_HANDLER( xxmissio_scroll_y_w )
{
- xxmissio_yscroll = data;
+ yscroll = data;
}
WRITE8_HANDLER( xxmissio_flipscreen_w )
@@ -30,21 +35,19 @@ WRITE8_HANDLER( xxmissio_flipscreen_w )
flipscreen = data & 0x01;
}
-WRITE8_HANDLER( xxmissio_videoram_w )
+WRITE8_HANDLER( xxmissio_bgram_w )
{
- int offs = offset & 0x7e0;
- int x = (offset + (xxmissio_xscroll >> 3) ) & 0x1f;
- offs |= x;
+ int x = (offset + (xscroll >> 3)) & 0x1f;
+ offset = (offset & 0x7e0) | x;
- videoram[offs] = data;
+ xxmissio_bgram[offset] = data;
}
-READ8_HANDLER( xxmissio_videoram_r )
+READ8_HANDLER( xxmissio_bgram_r )
{
- int offs = offset & 0x7e0;
- int x = (offset + (xxmissio_xscroll >> 3) ) & 0x1f;
- offs |= x;
+ int x = (offset + (xscroll >> 3)) & 0x1f;
+ offset = (offset & 0x7e0) | x;
- return videoram[offs];
+ return xxmissio_bgram[offset];
}
WRITE8_HANDLER( xxmissio_paletteram_w )
@@ -54,67 +57,51 @@ WRITE8_HANDLER( xxmissio_paletteram_w )
/****************************************************************************/
-VIDEO_UPDATE( xxmissio )
+static TILE_GET_INFO( get_bg_tile_info )
{
- int offs;
- int chr,col;
- int x,y,px,py,fx,fy,sx,sy;
-
- int size = videoram_size/2;
-
-/* draw BG layer */
+ int code = ((xxmissio_bgram[0x400 | tile_index] & 0xc0) << 2) | xxmissio_bgram[0x000 | tile_index];
+ int color = xxmissio_bgram[0x400 | tile_index] & 0x0f;
- for (y=0; y<32; y++)
- {
- for (x=0; x<32; x++)
- {
- offs = y*0x20 + x;
+ SET_TILE_INFO(2, code, color, 0);
+}
- if (flipscreen!=0)
- offs = (size-1)-offs;
+static TILE_GET_INFO( get_fg_tile_info )
+{
+ int code = xxmissio_fgram[0x000 | tile_index];
+ int color = xxmissio_fgram[0x400 | tile_index] & 0x07;
- px = x*16;
- py = y*8;
+ SET_TILE_INFO(0, code, color, 0);
+}
- chr = videoram[ offs ] ;
- col = videoram[ offs + size];
- chr = chr + ((col & 0xc0) << 2 );
- col = col & 0x0f;
+VIDEO_START( xxmissio )
+{
+ bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_rows, 16, 8, 32, 32);
+ fg_tilemap = tilemap_create(get_fg_tile_info, tilemap_scan_rows, 16, 8, 32, 32);
- drawgfx(tmpbitmap,machine->gfx[2],
- chr,
- col,
- flipscreen,flipscreen,
- px,py,
- &machine->screen[0].visarea,TRANSPARENCY_NONE,0);
- }
- }
+ tilemap_set_scroll_cols(bg_tilemap, 1);
+ tilemap_set_scroll_rows(bg_tilemap, 1);
+ tilemap_set_scrolldx(bg_tilemap, 2, 12);
- if (flipscreen == 0)
- {
- sx = -xxmissio_xscroll*2+12;
- sy = -xxmissio_yscroll;
- }
- else
- {
- sx = xxmissio_xscroll*2+2;
- sy = xxmissio_yscroll;
- }
+ tilemap_set_transparent_pen(fg_tilemap, 0);
+}
- copyscrollbitmap(bitmap,tmpbitmap,1,&sx,1,&sy,cliprect);
-/* draw sprites */
+static void draw_sprites(mame_bitmap *bitmap, gfx_element **gfx, const rectangle *cliprect)
+{
+ int offs;
+ int chr,col;
+ int x,y,px,py,fx,fy;
- for (offs=0; offs<spriteram_size; offs +=32)
+ for (offs=0; offs<0x800; offs +=0x20)
{
- chr = spriteram[offs];
- col = spriteram[offs+3];
+ chr = xxmissio_spriteram[offs];
+ col = xxmissio_spriteram[offs+3];
fx = ((col & 0x10) >> 4) ^ flipscreen;
fy = ((col & 0x20) >> 5) ^ flipscreen;
- x = spriteram[offs+1]*2;
- y = spriteram[offs+2];
+ x = xxmissio_spriteram[offs+1]*2;
+ y = xxmissio_spriteram[offs+2];
chr = chr + ((col & 0x40) << 2);
col = col & 0x07;
@@ -126,20 +113,21 @@ VIDEO_UPDATE( xxmissio )
}
else
{
- px = 480-x-8;
+ px = 480-x-6;
py = 240-y;
}
px &= 0x1ff;
- drawgfx(bitmap,machine->gfx[1],
+ drawgfx(bitmap,gfx[1],
chr,
col,
fx,fy,
px,py,
cliprect,TRANSPARENCY_PEN,0);
+
if (px>0x1e0)
- drawgfx(bitmap,machine->gfx[1],
+ drawgfx(bitmap,gfx[1],
chr,
col,
fx,fy,
@@ -147,37 +135,20 @@ VIDEO_UPDATE( xxmissio )
cliprect,TRANSPARENCY_PEN,0);
}
+}
-/* draw FG layer */
+VIDEO_UPDATE( xxmissio )
+{
+ tilemap_mark_all_tiles_dirty(ALL_TILEMAPS);
+ tilemap_set_flip(ALL_TILEMAPS, flipscreen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
- for (y=4; y<28; y++)
- {
- for (x=0; x<32; x++)
- {
- offs = y*32+x;
- chr = xxmissio_fgram[offs];
- col = xxmissio_fgram[offs + 0x400] & 0x07;
-
- if (flipscreen==0)
- {
- px = 16*x;
- py = 8*y;
- }
- else
- {
- px = 496-16*x;
- py = 248-8*y;
- }
-
- drawgfx(bitmap,machine->gfx[0],
- chr,
- col,
- flipscreen,flipscreen,
- px,py,
- cliprect,TRANSPARENCY_PEN,0);
- }
- }
+ tilemap_set_scrollx(bg_tilemap, 0, xscroll * 2);
+ tilemap_set_scrolly(bg_tilemap, 0, yscroll);
+
+ tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
+ draw_sprites(bitmap, machine->gfx, cliprect);
+ tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
return 0;
}