summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2018-04-14 00:31:38 +0200
committer angelosa <salese_corp_ltd@email.it>2018-04-14 00:34:23 +0200
commitb152071023416cd88e23b713f0dbd5b5801354e1 (patch)
tree101f18559a8fb3bd027142fc924d0802b8905bf4 /src/mame
parent562f1b92b1904349cffceb805c173a37fabc904c (diff)
warpwarp.cpp: added sos overlay, and added optional color setting for kaitei [Angelo Salese]
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/warpwarp.cpp34
-rw-r--r--src/mame/includes/warpwarp.h6
-rw-r--r--src/mame/layout/sos.lay29
-rw-r--r--src/mame/video/warpwarp.cpp30
4 files changed, 94 insertions, 5 deletions
diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp
index 3b15ec8932e..55bb376717e 100644
--- a/src/mame/drivers/warpwarp.cpp
+++ b/src/mame/drivers/warpwarp.cpp
@@ -136,6 +136,7 @@ Notes:
#include "geebee.lh"
#include "navarone.lh"
+#include "sos.lh"
#define MASTER_CLOCK XTAL(18'432'000)
@@ -438,7 +439,16 @@ static INPUT_PORTS_START( navarone )
PORT_BIT( 0x02, 0x00, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
INPUT_PORTS_END
+static INPUT_PORTS_START( kaitei_config )
+ PORT_START("CONFIG")
+ PORT_CONFNAME( 0x01, 0x00, "Color Type" )
+ PORT_CONFSETTING( 0x00, "Black & White" )
+ PORT_CONFSETTING( 0x01, "Color" )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( kaitein )
+ PORT_INCLUDE( kaitei_config )
+
PORT_START("SW0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
@@ -479,6 +489,8 @@ static INPUT_PORTS_START( kaitein )
INPUT_PORTS_END
static INPUT_PORTS_START( kaitei )
+ PORT_INCLUDE( kaitei_config )
+
PORT_START("SW0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
@@ -764,6 +776,18 @@ MACHINE_CONFIG_START(warpwarp_state::navarone)
MCFG_VIDEO_START_OVERRIDE(warpwarp_state,navarone)
MACHINE_CONFIG_END
+MACHINE_CONFIG_START(warpwarp_state::kaitei)
+ geebee(config);
+
+ /* basic machine hardware */
+ MCFG_GFXDECODE_MODIFY("gfxdecode", 1k)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(4*2+1)
+
+ MCFG_MACHINE_RESET_OVERRIDE(warpwarp_state,kaitei)
+MACHINE_CONFIG_END
+
+
MACHINE_CONFIG_START(warpwarp_state::bombbee)
/* basic machine hardware */
@@ -972,7 +996,7 @@ DRIVER_INIT_MEMBER(warpwarp_state,kaitein)
{
m_handle_joystick = 1;
- m_ball_pen = 1;
+ m_ball_pen = 8;
m_ball_sizex = 1;
m_ball_sizey = 16;
}
@@ -981,7 +1005,7 @@ DRIVER_INIT_MEMBER(warpwarp_state,kaitei)
{
m_handle_joystick = 0;
- m_ball_pen = 1;
+ m_ball_pen = 8;
m_ball_sizex = 1;
m_ball_sizey = 16;
}
@@ -1021,9 +1045,9 @@ GAMEL(1978, geebeeb, geebee, geebeeb, geebeeb, warpwarp_state, geebee,
GAMEL(1978, geebeeg, geebee, geebee, geebee, warpwarp_state, geebee, ROT90, "Namco (Gremlin license)", "Gee Bee (US)", MACHINE_SUPPORTS_SAVE, layout_geebee )
GAMEL(1980, navarone, 0, navarone, navarone, warpwarp_state, navarone, ROT90, "Namco", "Navarone", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_navarone )
-GAME( 1980, kaitein, kaitei, navarone, kaitein, warpwarp_state, kaitein, ROT90, "K.K. Tokki (Namco license)", "Kaitei Takara Sagashi (Namco license)", MACHINE_SUPPORTS_SAVE ) // pretty sure it didn't have a color overlay
-GAME( 1980, kaitei, 0, navarone, kaitei, warpwarp_state, kaitei, ROT90, "K.K. Tokki", "Kaitei Takara Sagashi", MACHINE_SUPPORTS_SAVE ) // "
-GAME( 1980, sos, 0, navarone, sos, warpwarp_state, sos, ROT90, "Namco", "SOS", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // developed by Shoei?
+GAME( 1980, kaitein, kaitei, kaitei, kaitein, warpwarp_state, kaitein, ROT90, "K.K. Tokki (Namco license)", "Kaitei Takara Sagashi (Namco license)", MACHINE_SUPPORTS_SAVE ) // pretty sure it didn't have a color overlay
+GAME( 1980, kaitei, 0, kaitei, kaitei, warpwarp_state, kaitei, ROT90, "K.K. Tokki", "Kaitei Takara Sagashi", MACHINE_SUPPORTS_SAVE ) // "
+GAMEL( 1980, sos, 0, navarone, sos, warpwarp_state, sos, ROT90, "Namco", "SOS", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_sos ) // developed by Shoei?
/* Color games */
GAME( 1979, bombbee, 0, bombbee, bombbee, warpwarp_state, bombbee, ROT90, "Namco", "Bomb Bee", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/warpwarp.h b/src/mame/includes/warpwarp.h
index 71d71b8dfa5..1b1cec16552 100644
--- a/src/mame/includes/warpwarp.h
+++ b/src/mame/includes/warpwarp.h
@@ -17,12 +17,14 @@ public:
m_geebee_sound(*this, "geebee_custom"),
m_geebee_videoram(*this, "geebee_videoram"),
m_videoram(*this, "videoram"),
+ m_palette(*this, "palette"),
m_in0(*this, "IN0"),
m_in1(*this, "IN1"),
m_in2(*this, "IN2"),
m_dsw1(*this, "DSW1"),
m_volin1(*this, "VOLIN1"),
m_volin2(*this, "VOLIN2"),
+ m_in_config(*this, "CONFIG"),
m_ports(*this, { { "SW0", "SW1", "DSW2", "PLACEHOLDER" } }) // "IN1" & "IN2" are read separately when offset==3
{ }
@@ -33,12 +35,14 @@ public:
optional_device<geebee_sound_device> m_geebee_sound;
optional_shared_ptr<uint8_t> m_geebee_videoram;
optional_shared_ptr<uint8_t> m_videoram;
+ optional_device<palette_device> m_palette;
optional_ioport m_in0;
optional_ioport m_in1;
optional_ioport m_in2;
optional_ioport m_dsw1;
optional_ioport m_volin1;
optional_ioport m_volin2;
+ optional_ioport m_in_config;
optional_ioport_array<4> m_ports;
int m_geebee_bgw;
@@ -73,6 +77,7 @@ public:
DECLARE_WRITE8_MEMBER(geebee_videoram_w);
virtual void machine_start() override;
+ DECLARE_MACHINE_RESET(kaitei);
DECLARE_DRIVER_INIT(navarone);
DECLARE_DRIVER_INIT(geebee);
DECLARE_DRIVER_INIT(kaitein);
@@ -100,6 +105,7 @@ public:
void warpwarp(machine_config &config);
void geebee(machine_config &config);
void navarone(machine_config &config);
+ void kaitei(machine_config &config);
void bombbee(machine_config &config);
void geebeeb(machine_config &config);
void bombbee_map(address_map &map);
diff --git a/src/mame/layout/sos.lay b/src/mame/layout/sos.lay
new file mode 100644
index 00000000000..1caa901bf2d
--- /dev/null
+++ b/src/mame/layout/sos.lay
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+ <element name="overlay">
+ <rect>
+ <bounds left="0" top="0" right="224" bottom="272" />
+ <color red="0.2" green="0.2" blue="0.5" />
+ </rect>
+
+ <rect>
+ <bounds left="0" top="0" right="224" bottom="8" />
+ <color red="0.5" green="0.5" blue="0.5" />
+ </rect>
+
+ <rect>
+ <bounds left="0" top="264" right="224" bottom="272" />
+ <color red="0.5" green="0.5" blue="0.5" />
+ </rect>
+
+ </element>
+
+ <view name="Color Overlay">
+ <screen index="0">
+ <bounds left="0" top="0" right="3" bottom="4" />
+ </screen>
+ <overlay name="overlay" element="overlay">
+ <bounds left="0" top="0" right="3" bottom="4" />
+ </overlay>
+ </view>
+</mamelayout>
diff --git a/src/mame/video/warpwarp.cpp b/src/mame/video/warpwarp.cpp
index b25964d30b6..ad9a8119f6c 100644
--- a/src/mame/video/warpwarp.cpp
+++ b/src/mame/video/warpwarp.cpp
@@ -40,6 +40,36 @@ PALETTE_INIT_MEMBER(warpwarp_state,navarone)
palette.set_pen_color(3, geebee_palette[0]);
}
+MACHINE_RESET_MEMBER(warpwarp_state,kaitei)
+{
+ // TODO: some PCB videos/images shows a b&w arrangement, others a full colorized one.
+ // Both versions seems to have equal distribution (latter is hack/homebrew?) therefore
+ // support both under machine configuration.
+ if(m_in_config->read() & 1) // color
+ {
+ m_palette->set_pen_color(0, rgb_t(0x00,0x00,0x00));
+ m_palette->set_pen_color(1, rgb_t(0x00,0xff,0xff));
+ m_palette->set_pen_color(2, rgb_t(0x00,0xff,0xff));
+ m_palette->set_pen_color(3, rgb_t(0x00,0x00,0x00));
+ m_palette->set_pen_color(4, rgb_t(0x00,0x00,0x00));
+ m_palette->set_pen_color(5, rgb_t(0x00,0xff,0x00));
+ m_palette->set_pen_color(6, rgb_t(0x00,0xff,0x00));
+ m_palette->set_pen_color(7, rgb_t(0x00,0x00,0x00));
+ m_palette->set_pen_color(8, rgb_t(0xff,0x00,0x00)); // ball pen
+ }
+ else // b & w
+ {
+ m_palette->set_pen_color(0, geebee_palette[0]);
+ m_palette->set_pen_color(1, geebee_palette[1]);
+ m_palette->set_pen_color(2, geebee_palette[1]);
+ m_palette->set_pen_color(3, geebee_palette[0]);
+ m_palette->set_pen_color(4, geebee_palette[0]);
+ m_palette->set_pen_color(5, geebee_palette[1]);
+ m_palette->set_pen_color(6, geebee_palette[1]);
+ m_palette->set_pen_color(7, geebee_palette[0]);
+ m_palette->set_pen_color(8, geebee_palette[1]); // ball pen
+ }
+}
/***************************************************************************