summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author RobertoFresca <robbie@mamedev.org>2015-10-27 11:08:15 -0300
committer RobertoFresca <robbie@mamedev.org>2015-10-27 11:08:15 -0300
commite83fbbdcb0632374fb2a2042ec087580e37abe90 (patch)
treee439a264d4d6c635842aa187b76a5586823485e1
parent29303e07cfc5dbabab04469e9688eb01226e6e10 (diff)
parent0dc0ad19d7c1549e814577be438ce06ca9b00550 (diff)
Merge branch 'master' of https://github.com/mamedev/mame
-rw-r--r--hash/a2600.xml4
-rw-r--r--hash/sg1000.xml43
-rw-r--r--hash/sms.xml65
-rw-r--r--hlsl/vector.fx20
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/bus/a2bus/a2themill.c69
-rw-r--r--src/emu/emuopts.c4
-rw-r--r--src/emu/emuopts.h8
-rw-r--r--src/emu/ui/ui.c58
-rw-r--r--src/emu/video/vector.c134
-rw-r--r--src/emu/video/vector.h26
-rw-r--r--src/mame/arcade.lst7
-rw-r--r--src/mame/drivers/bublbobl.c275
-rw-r--r--src/mame/drivers/exelv.c2
-rw-r--r--src/mame/drivers/osborne1.c2
-rw-r--r--src/mame/drivers/pc.c2
-rw-r--r--src/mame/drivers/sega_sawatte.c54
-rw-r--r--src/mame/drivers/subhuntr.c4
-rw-r--r--src/mame/includes/neogeo.h82
-rw-r--r--src/mame/includes/osborne1.h1
-rw-r--r--src/mame/machine/osborne1.c39
-rw-r--r--src/mame/mess.lst1
-rw-r--r--src/osd/modules/debugger/osx/debugview.m2
-rw-r--r--src/osd/sdl/video.c2
24 files changed, 730 insertions, 175 deletions
diff --git a/hash/a2600.xml b/hash/a2600.xml
index 2cadf4340bc..732a78084d9 100644
--- a/hash/a2600.xml
+++ b/hash/a2600.xml
@@ -17977,7 +17977,7 @@ Info from Atariage and Atarimania
<part name="cart" interface="a2600_cart">
<feature name="slot" value="a26_dpcplus" />
<dataarea name="rom" size="0x8000">
- <rom name="SF2_demo_NTSC.bin" size="0x8000" crc="fd850bd6" sha1="bd8166da7777c66e6bb3ab0c77563193d8289f5f)" offset="0" />
+ <rom name="SF2_demo_NTSC.bin" size="0x8000" crc="fd850bd6" sha1="bd8166da7777c66e6bb3ab0c77563193d8289f5f" offset="0" />
</dataarea>
</part>
</software>
@@ -18004,7 +18004,7 @@ Info from Atariage and Atarimania
<part name="cart" interface="a2600_cart">
<feature name="slot" value="a26_dpcplus" />
<dataarea name="rom" size="0x8000">
- <rom name="SF2_demo_PAL.bin" size="0x8000" crc="b47582f3" sha1="73625429e73f1b354e0cbe6a360d79590032de2b)" offset="0" />
+ <rom name="SF2_demo_PAL.bin" size="0x8000" crc="b47582f3" sha1="73625429e73f1b354e0cbe6a360d79590032de2b" offset="0" />
</dataarea>
</part>
</software>
diff --git a/hash/sg1000.xml b/hash/sg1000.xml
index ab40de24377..8f2aecaa907 100644
--- a/hash/sg1000.xml
+++ b/hash/sg1000.xml
@@ -1283,7 +1283,7 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
</part>
</software>
- <software name="herot" cloneof="hero">
+ <software name="herot" cloneof="hero"> <!-- Taiwanese logo version -->
<description>Qing Feng Xia (Tw)</description>
<year>1985?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -1296,7 +1296,18 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
</part>
</software>
- <software name="homemj">
+ <software name="herotw" cloneof="hero"> <!-- English logo version -->
+ <description>H.E.R.O. (Tw)</description>
+ <year>1985</year>
+ <publisher>Aaronix</publisher>
+ <part name="cart" interface="sg1000_cart">
+ <dataarea name="rom" size="32768">
+ <rom name="H.E.R.O. [english logo] (TW).sg" size="32768" crc="96f09c6d" sha1="82b530feef7c011361e21b62d2c359c626ab8a9c" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="homemj">
<description>Home Mahjong (Jpn, v1)</description>
<year>1984</year>
<publisher>Sega</publisher>
@@ -1347,7 +1358,18 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
</part>
</software>
- <software name="hyperspt">
+ <software name="hustletw" cloneof="hustle">
+ <description>Hustle Chumy / Wanpi shu (Tw)</description>
+ <year>1984</year>
+ <publisher>Aaronix</publisher>
+ <part name="cart" interface="sg1000_cart">
+ <dataarea name="rom" size="16384">
+ <rom name="Hustle Chumy (TW).sg" size="16384" crc="c4ed1fd9" sha1="e7800d107ef0a7773eea2d482b5db9d866ba74f9" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="hyperspt">
<description>Hyper Sports (Jpn)</description>
<year>1985</year>
<publisher>Sega / Konami</publisher>
@@ -2066,7 +2088,7 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
</part>
</software>
- <software name="motianda" cloneof="rocknbol">
+ <software name="motianda" cloneof="rocknbol"> <!-- Taiwanese logo version -->
<description>Mo Tian Da Lou (Tw)</description>
<year>1985?</year>
<publisher>Aaronix</publisher>
@@ -2079,7 +2101,18 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
</part>
</software>
- <software name="safarihu" supported="no">
+ <software name="rocknboltw" cloneof="rocknbol"> <!-- English logo version -->
+ <description>Rock n' Bolt (Tw)</description>
+ <year>1985</year>
+ <publisher>Aaronix</publisher>
+ <part name="cart" interface="sg1000_cart">
+ <dataarea name="rom" size="32768">
+ <rom name="Rock n' Bolt [english logo] (TW).sg" size="32768" crc="09a82af7" sha1="e3be08bda8459fc60836abe332e9864e7c596202" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="safarihu" supported="no">
<description>Safari Hunting (Jpn)</description>
<year>1983</year>
<publisher>Sega</publisher>
diff --git a/hash/sms.xml b/hash/sms.xml
index bd3eabeb1ae..8ca17a6c605 100644
--- a/hash/sms.xml
+++ b/hash/sms.xml
@@ -120,7 +120,19 @@
</part>
</software>
- <software name="addfam">
+ <software name="actionfgtw" cloneof="actionfg">
+ <description>Action Fighter / Mo zhan che (Taiwan)</description>
+ <year>1986</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="sms_cart">
+ <dataarea name="rom" size="131072">
+ <rom name="Action Fighter (TW).sms" size="131072" crc="8418f438" sha1="4f514dc568466f6b0424086edeb3fa0014f9c887" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+
+ <software name="addfam">
<description>The Addams Family (Euro)</description>
<year>1993</year>
<publisher>Flying Edge</publisher>
@@ -2091,7 +2103,43 @@
</part>
</software>
- <software name="excdizzy" supported="no">
+ <software name="eswatp0" cloneof="eswatc"> <!-- early build, alt subtitle -->
+ <description>E-SWAT - The Ultimate Battle In The Factor Against Crime (prototype 0)</description>
+ <year>1990</year>
+ <publisher>Sega</publisher>
+ <info name="serial" value="7042"/>
+ <part name="cart" interface="sms_cart">
+ <dataarea name="rom" size="262144">
+ <rom name="E-SWAT [Proto 0].sms" size="262144" crc="4f20694a" sha1="855c2f54b700663cedd6484aab396d849dcb5290" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eswatp1" cloneof="eswatc">
+ <description>E-SWAT - City Under Siege (prototype 1)</description>
+ <year>1990</year>
+ <publisher>Sega</publisher>
+ <info name="serial" value="7042"/>
+ <part name="cart" interface="sms_cart">
+ <dataarea name="rom" size="262144">
+ <rom name="E-SWAT [Proto 1].sms" size="262144" crc="f7ca9801" sha1="12c5005f8a0d78c75704b61bf87961875b9d29d4" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eswatp2" cloneof="eswatc">
+ <description>E-SWAT - City Under Siege (prototype 2)</description>
+ <year>1990</year>
+ <publisher>Sega</publisher>
+ <info name="serial" value="7042"/>
+ <part name="cart" interface="sms_cart">
+ <dataarea name="rom" size="262144">
+ <rom name="E-SWAT [Proto 2].sms" size="262144" crc="fd91cc7e" sha1="63fa1fcbf941b0e0ce601b3094c6c31f997c95d8" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="excdizzy" supported="no">
<description>The Excellent Dizzy Collection (Euro, USA, Prototype)</description>
<year>19??</year>
<publisher>Codemasters</publisher>
@@ -5681,7 +5729,18 @@
</part>
</software>
- <software name="smgp">
+ <software name="supcol">
+ <description>Super Columns &amp; Tetris (Kor)</description>
+ <year>1990</year>
+ <publisher>Hi-Com</publisher>
+ <part name="cart" interface="sms_cart">
+ <dataarea name="rom" size="262144">
+ <rom name="Super Columns (KR).sms" size="32768" crc="6ce7f694" sha1="9d696b6eda1d13b8d439509beeb64210987e308e" offset="000000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="smgp">
<description>Super Monaco GP (Euro, Bra)</description>
<year>1990</year>
<publisher>Sega</publisher>
diff --git a/hlsl/vector.fx b/hlsl/vector.fx
index 0e5f2ac314c..19267453f30 100644
--- a/hlsl/vector.fx
+++ b/hlsl/vector.fx
@@ -42,15 +42,19 @@ uniform float3 LengthParams;
VS_OUTPUT vs_main(VS_INPUT Input)
{
VS_OUTPUT Output = (VS_OUTPUT)0;
-
+
Output.Position = float4(Input.Position.xyz, 1.0f);
Output.Position.xy /= ScreenDims;
- Output.Position.y = 1.0f - Output.Position.y;
- Output.Position.xy -= 0.5f;
- Output.Position *= float4(2.0f, 2.0f, 1.0f, 1.0f);
- Output.Color = Input.Color;
+ Output.Position.y = 1.0f - Output.Position.y; // flip y
+ Output.Position.xy -= 0.5f; // center
+ Output.Position.xy *= 2.0f; // zoom
+
Output.TexCoord = Input.Position.xy / ScreenDims;
+
+ Output.Color = Input.Color;
+
Output.LineInfo = Input.LineInfo;
+
return Output;
}
@@ -64,14 +68,14 @@ VS_OUTPUT vs_main(VS_INPUT Input)
// LengthParams.z: Size at which fade is maximum
float4 ps_main(PS_INPUT Input) : COLOR
{
- float timeModulate = lerp(1.0f, TimeParams.x, TimeParams.y) * 1.0;
+ float timeModulate = lerp(1.0f, TimeParams.x, TimeParams.y);
float lengthModulate = 1.0f - clamp(Input.LineInfo.x / LengthParams.z, 0.0f, 1.0f);
float minLength = 2.0f - clamp(Input.LineInfo.x - 1.0f, 0.0f, 2.0f);
lengthModulate = lerp(lengthModulate, 4.0f, minLength * 0.5f);
- lengthModulate = lerp(1.0f, timeModulate * lengthModulate, LengthParams.y) * 1.0;
+ lengthModulate = lerp(1.0f, timeModulate * lengthModulate, LengthParams.y);
- float4 outColor = Input.Color * float4(lengthModulate, lengthModulate, lengthModulate, 1.0f) * 2.0;
+ float4 outColor = Input.Color * float4(lengthModulate, lengthModulate, lengthModulate, 1.0f);
return outColor;
}
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index a055b0fcab7..61872202e6e 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2137,6 +2137,7 @@ files {
MAME_DIR .. "src/mame/drivers/megadriv.c",
MAME_DIR .. "src/mame/drivers/saturn.c",
MAME_DIR .. "src/mame/drivers/segapico.c",
+ MAME_DIR .. "src/mame/drivers/sega_sawatte.c",
MAME_DIR .. "src/mame/drivers/segapm.c",
MAME_DIR .. "src/mame/drivers/sg1000.c",
MAME_DIR .. "src/mame/drivers/sms.c",
diff --git a/src/devices/bus/a2bus/a2themill.c b/src/devices/bus/a2bus/a2themill.c
index 4ea020ae434..8f6fc5d1cc0 100644
--- a/src/devices/bus/a2bus/a2themill.c
+++ b/src/devices/bus/a2bus/a2themill.c
@@ -7,21 +7,18 @@
Implementation of the Stellation Two The Mill 6809 card
The OS9 add-on changes the address mapping as follows:
- 6809 0x0000-0xafff -> 6502 0x1000-0xbfff
- 6809 0xb000-0xdfff -> 6502 0xd000-0xffff
- 6809 0xe000-0xefff -> 6502 0xc000-0xcfff
- 6809 0xf000-0xffff -> 6502 0x0000-0x0fff
+ 6809 0x0000-0x7fff -> 6502 0x1000-0x8fff
+ 6809 0x8000-0xafff -> 6502 0xd000-0xffff
+ 6809 0xb000-0xbfff -> 6502 0xc000-0xcfff
+ 6809 0xc000-0xcfff -> 6502 0x0000-0x0fff
+ 6809 0xd000-0xffff -> 6502 0x9000-0xbfff
- (reference: http://mirrors.apple2.org.za/ground.icaen.uiowa.edu/MiscInfo/Hardware/mill.6809 )
+ (reference: "6809.txt" on one of the disks for The Mill)
ProDOS "Stellation The Mill Disk.po" requires Mill in slot 2; boot
the disc and type "-DEMO1" and press Enter to launch the simple demo.
- The OS9 disk image available around the internet seems to be bad - the
- 6809 boot vector is 0x4144 which maps to 6502 0x5144 and there's all
- zeros from 6502 1000-8fff. There is valid 6809 code from 9000-BFFF
- at the point where it wants to boot the 6809, but I don't know what
- is supposed to be the entry point.
+ TODO: Add DIP switch to select standard and OS-9 modes.
*********************************************************************/
@@ -103,7 +100,7 @@ void a2bus_themill_device::device_reset()
{
m_bEnabled = false;
m_flipAddrSpace = false;
- m_6809Mode = false;
+ m_6809Mode = true;
m_status = 0xc0; // OS9 loader relies on this
m_6809->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
m_6809->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
@@ -238,31 +235,33 @@ void a2bus_themill_device::write_c0nx(address_space &space, UINT8 offset, UINT8
READ8_MEMBER( a2bus_themill_device::dma_r )
{
+ // MAME startup ordering has the 6809 free-running at boot, which is undesirable
+ if (!m_bEnabled)
+ {
+ m_6809->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ }
+
if (m_6809Mode)
{
- if (offset <= 0xafff)
+ if (offset <= 0x7fff)
{
return slot_dma_read(space, offset+0x1000);
}
- else if (offset <= 0xbfff)
+ else if (offset <= 0xafff)
{
- return slot_dma_read(space, (offset&0xfff) + 0xd000);
+ return slot_dma_read(space, (offset&0x3fff) + 0xd000);
}
- else if (offset <= 0xcfff)
- {
- return slot_dma_read(space, (offset&0xfff) + 0xe000);
- }
- else if (offset <= 0xdfff)
+ else if (offset <= 0xbfff)
{
- return slot_dma_read(space, (offset&0xfff) + 0xf000);
+ return slot_dma_read(space, (offset&0xfff) + 0xc000);
}
- else if (offset <= 0xefff)
+ else if (offset <= 0xcfff) // 6809 Cxxx -> 6502 ZP
{
- return slot_dma_read(space, (offset&0xfff) + 0xc000);
+ return slot_dma_read(space, (offset&0xfff));
}
- else // 6809 Fxxx -> 6502 ZP
+ else // 6809 Dxxx -> 6502 9000
{
- return slot_dma_read(space, offset&0xfff);
+ return slot_dma_read(space, (offset-0xd000)+0x9000);
}
}
else
@@ -289,29 +288,25 @@ WRITE8_MEMBER( a2bus_themill_device::dma_w )
{
if (m_6809Mode)
{
- if (offset <= 0xafff)
+ if (offset <= 0x7fff)
{
slot_dma_write(space, offset+0x1000, data);
}
- else if (offset <= 0xbfff)
- {
- slot_dma_write(space, (offset&0xfff) + 0xd000, data);
- }
- else if (offset <= 0xcfff)
+ else if (offset <= 0xafff)
{
- slot_dma_write(space, (offset&0xfff) + 0xe000, data);
+ slot_dma_write(space, (offset&0x3fff) + 0xd000, data);
}
- else if (offset <= 0xdfff)
+ else if (offset <= 0xbfff)
{
- slot_dma_write(space, (offset&0xfff) + 0xf000, data);
+ slot_dma_write(space, (offset&0xfff) + 0xc000, data);
}
- else if (offset <= 0xefff)
+ else if (offset <= 0xcfff)
{
- slot_dma_write(space, (offset&0xfff) + 0xc000, data);
+ slot_dma_write(space, (offset&0xfff), data);
}
- else // 6809 Fxxx -> 6502 ZP
+ else // 6809 Dxxx -> 6502 9000
{
- slot_dma_write(space, offset&0xfff, data);
+ slot_dma_write(space, (offset-0xd000)+0x9000, data);
}
}
else
diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c
index 21128e53e93..148facf5cc4 100644
--- a/src/emu/emuopts.c
+++ b/src/emu/emuopts.c
@@ -112,7 +112,9 @@ const options_entry emu_options::s_option_entries[] =
// vector options
{ NULL, NULL, OPTION_HEADER, "CORE VECTOR OPTIONS" },
{ OPTION_ANTIALIAS ";aa", "1", OPTION_BOOLEAN, "use antialiasing when drawing vectors" },
- { OPTION_BEAM, "1.0", OPTION_FLOAT, "set vector beam width" },
+ { OPTION_BEAM_WIDTH_MIN, "1.0", OPTION_FLOAT, "set vector beam width minimum" },
+ { OPTION_BEAM_WIDTH_MAX, "1.0", OPTION_FLOAT, "set vector beam width maximum" },
+ { OPTION_BEAM_INTENSITY_WEIGHT, "0", OPTION_FLOAT, "set vector beam intensity weight " },
{ OPTION_FLICKER, "0", OPTION_FLOAT, "set vector flicker effect" },
// sound options
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h
index 0bbeb6ae3d7..d59ecd10a0a 100644
--- a/src/emu/emuopts.h
+++ b/src/emu/emuopts.h
@@ -119,7 +119,9 @@ enum
// core vector options
#define OPTION_ANTIALIAS "antialias"
-#define OPTION_BEAM "beam"
+#define OPTION_BEAM_WIDTH_MIN "beam_width_min"
+#define OPTION_BEAM_WIDTH_MAX "beam_width_max"
+#define OPTION_BEAM_INTENSITY_WEIGHT "beam_intensity_weight"
#define OPTION_FLICKER "flicker"
// core sound options
@@ -296,7 +298,9 @@ public:
// core vector options
bool antialias() const { return bool_value(OPTION_ANTIALIAS); }
- float beam() const { return float_value(OPTION_BEAM); }
+ float beam_width_min() const { return float_value(OPTION_BEAM_WIDTH_MIN); }
+ float beam_width_max() const { return float_value(OPTION_BEAM_WIDTH_MAX); }
+ float beam_intensity_weight() const { return float_value(OPTION_BEAM_INTENSITY_WEIGHT); }
float flicker() const { return float_value(OPTION_FLICKER); }
// core sound options
diff --git a/src/emu/ui/ui.c b/src/emu/ui/ui.c
index 95b51f24bab..fbcf3dfc693 100644
--- a/src/emu/ui/ui.c
+++ b/src/emu/ui/ui.c
@@ -124,7 +124,9 @@ static INT32 slider_overyscale(running_machine &machine, void *arg, std::string
static INT32 slider_overxoffset(running_machine &machine, void *arg, std::string *str, INT32 newval);
static INT32 slider_overyoffset(running_machine &machine, void *arg, std::string *str, INT32 newval);
static INT32 slider_flicker(running_machine &machine, void *arg, std::string *str, INT32 newval);
-static INT32 slider_beam(running_machine &machine, void *arg, std::string *str, INT32 newval);
+static INT32 slider_beam_width_min(running_machine &machine, void *arg, std::string *str, INT32 newval);
+static INT32 slider_beam_width_max(running_machine &machine, void *arg, std::string *str, INT32 newval);
+static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, std::string *str, INT32 newval);
static char *slider_get_screen_desc(screen_device &screen);
#ifdef MAME_DEBUG
static INT32 slider_crossscale(running_machine &machine, void *arg, std::string *str, INT32 newval);
@@ -1964,10 +1966,14 @@ static slider_state *slider_init(running_machine &machine)
for (screen_device *screen = scriter.first(); screen != NULL; screen = scriter.next())
if (screen->screen_type() == SCREEN_TYPE_VECTOR)
{
- // add flicker control
+ // add vector control
*tailptr = slider_alloc(machine, "Vector Flicker", 0, 0, 1000, 10, slider_flicker, NULL);
tailptr = &(*tailptr)->next;
- *tailptr = slider_alloc(machine, "Beam Width", 10, 100, 1000, 10, slider_beam, NULL);
+ *tailptr = slider_alloc(machine, "Beam Width Minimum", 1, 100, 1000, 1, slider_beam_width_min, NULL);
+ tailptr = &(*tailptr)->next;
+ *tailptr = slider_alloc(machine, "Beam Width Maximum", 1, 100, 1000, 1, slider_beam_width_max, NULL);
+ tailptr = &(*tailptr)->next;
+ *tailptr = slider_alloc(machine, "Beam Intensity Weight", -1000, 0, 1000, 10, slider_beam_intensity_weight, NULL);
tailptr = &(*tailptr)->next;
break;
}
@@ -2340,26 +2346,58 @@ static INT32 slider_flicker(running_machine &machine, void *arg, std::string *st
{
vector_device *vector = NULL;
if (newval != SLIDER_NOCHANGE)
- vector->set_flicker((float)newval * 0.1f);
+ vector->set_flicker((float)newval * 0.001f);
if (str != NULL)
strprintf(*str,"%1.2f", (double) vector->get_flicker());
- return floor(vector->get_flicker() * 10.0f + 0.5f);
+ return floor(vector->get_flicker() * 1000.0f + 0.5f);
+}
+
+
+//-------------------------------------------------
+// slider_beam_width_min - minimum vector beam width slider
+// callback
+//-------------------------------------------------
+
+static INT32 slider_beam_width_min(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ vector_device *vector = NULL;
+ if (newval != SLIDER_NOCHANGE)
+ vector->set_beam_width_min(MIN((float)newval * 0.01f, vector->get_beam_width_max()));
+ if (str != NULL)
+ strprintf(*str,"%1.2f", (double) vector->get_beam_width_min());
+ return floor(vector->get_beam_width_min() * 100.0f + 0.5f);
+}
+
+
+//-------------------------------------------------
+// slider_beam_width_max - maximum vector beam width slider
+// callback
+//-------------------------------------------------
+
+static INT32 slider_beam_width_max(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ vector_device *vector = NULL;
+ if (newval != SLIDER_NOCHANGE)
+ vector->set_beam_width_max(MAX((float)newval * 0.01f, vector->get_beam_width_min()));
+ if (str != NULL)
+ strprintf(*str,"%1.2f", (double) vector->get_beam_width_max());
+ return floor(vector->get_beam_width_max() * 100.0f + 0.5f);
}
//-------------------------------------------------
-// slider_beam - vector beam width slider
+// slider_beam_intensity_weight - vector beam intensity weight slider
// callback
//-------------------------------------------------
-static INT32 slider_beam(running_machine &machine, void *arg, std::string *str, INT32 newval)
+static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, std::string *str, INT32 newval)
{
vector_device *vector = NULL;
if (newval != SLIDER_NOCHANGE)
- vector->set_beam((float)newval * 0.01f);
+ vector->set_beam_intensity_weight((float)newval * 0.001f);
if (str != NULL)
- strprintf(*str,"%1.2f", (double) vector->get_beam());
- return floor(vector->get_beam() * 100.0f + 0.5f);
+ strprintf(*str,"%1.2f", (double) vector->get_beam_intensity_weight());
+ return floor(vector->get_beam_intensity_weight() * 1000.0f + 0.5f);
}
diff --git a/src/emu/video/vector.c b/src/emu/video/vector.c
index 5e88ad286d9..f0146234afe 100644
--- a/src/emu/video/vector.c
+++ b/src/emu/video/vector.c
@@ -35,11 +35,11 @@
#include "vector.h"
+#define FLT_EPSILON 1E-5
-#define VECTOR_WIDTH_DENOM 512
+#define VECTOR_WIDTH_DENOM 512
-
-#define MAX_POINTS 10000
+#define MAX_POINTS 10000
#define VECTOR_TEAM \
"-* Vector Heads *-\n" \
@@ -140,17 +140,19 @@ vector_device::vector_device(const machine_config &mconfig, const char *tag, dev
{
}
-float vector_device::m_flicker_correction = 0.0f;
-float vector_device::m_beam_width = 0.0f;
-int vector_device::m_flicker;
+float vector_device::m_flicker = 0.0f;
+float vector_device::m_beam_width_min = 0.0f;
+float vector_device::m_beam_width_max = 0.0f;
+float vector_device::m_beam_intensity_weight = 0.0f;
int vector_device::m_vector_index;
void vector_device::device_start()
{
- m_beam_width = machine().options().beam();
-
/* Grab the settings for this session */
- set_flicker(machine().options().flicker());
+ m_beam_width_min = machine().options().beam_width_min();
+ m_beam_width_max = machine().options().beam_width_max();
+ m_beam_intensity_weight = machine().options().beam_intensity_weight();
+ m_flicker = machine().options().flicker();
m_vector_index = 0;
@@ -158,25 +160,54 @@ void vector_device::device_start()
m_vector_list = auto_alloc_array_clear(machine(), point, MAX_POINTS);
}
-void vector_device::set_flicker(float _flicker)
+void vector_device::set_flicker(float newval)
{
- m_flicker_correction = _flicker;
- m_flicker = (int)(m_flicker_correction * 2.55f);
+ m_flicker = newval;
}
float vector_device::get_flicker()
{
- return m_flicker_correction;
+ return m_flicker;
+}
+
+void vector_device::set_beam_width_min(float newval)
+{
+ m_beam_width_min = newval;
+}
+
+float vector_device::get_beam_width_min()
+{
+ return m_beam_width_min;
+}
+
+void vector_device::set_beam_width_max(float newval)
+{
+ m_beam_width_max = newval;
+}
+
+float vector_device::get_beam_width_max()
+{
+ return m_beam_width_max;
+}
+
+void vector_device::set_beam_intensity_weight(float newval)
+{
+ m_beam_intensity_weight = newval;
}
-void vector_device::set_beam(float _beam)
+float vector_device::get_beam_intensity_weight()
{
- m_beam_width = _beam;
+ return m_beam_intensity_weight;
}
-float vector_device::get_beam()
+
+/*
+ * www.dinodini.wordpress.com/2010/04/05/normalized-tunable-sigmoid-functions/
+ */
+float vector_device::normalized_sigmoid(float n, float k)
{
- return m_beam_width;
+ // valid for n and k in range of -1.0 and 1.0
+ return (n - n * k) / (k - fabs(n) * 2.0f * k + 1.0f);
}
@@ -184,21 +215,30 @@ float vector_device::get_beam()
* Adds a line end point to the vertices list. The vector processor emulation
* needs to call this.
*/
-void vector_device::add_point (int x, int y, rgb_t color, int intensity)
+void vector_device::add_point(int x, int y, rgb_t color, int intensity)
{
point *newpoint;
- if (intensity > 0xff)
- intensity = 0xff;
+ if (intensity > 255)
+ {
+ intensity = 255;
+ }
if (m_flicker && (intensity > 0))
{
- intensity += (intensity * (0x80-(machine().rand()&0xff)) * m_flicker)>>16;
+ float random = (float)(machine().rand() & 255) / 255.0f; // random value between 0.0 and 1.0
+
+ intensity -= (int)(intensity * random * m_flicker);
if (intensity < 0)
+ {
intensity = 0;
- if (intensity > 0xff)
- intensity = 0xff;
+ }
+ if (intensity > 255)
+ {
+ intensity = 255;
+ }
}
+
newpoint = &m_vector_list[m_vector_index];
newpoint->x = x;
newpoint->y = y;
@@ -214,10 +254,11 @@ void vector_device::add_point (int x, int y, rgb_t color, int intensity)
}
}
+
/*
* Add new clipping info to the list
*/
-void vector_device::add_clip (int x1, int yy1, int x2, int y2)
+void vector_device::add_clip(int x1, int yy1, int x2, int y2)
{
point *newpoint;
@@ -241,7 +282,7 @@ void vector_device::add_clip (int x1, int yy1, int x2, int y2)
* The vector CPU creates a new display list. We save the old display list,
* but only once per refresh.
*/
-void vector_device::clear_list (void)
+void vector_device::clear_list(void)
{
m_vector_index = 0;
}
@@ -255,10 +296,15 @@ UINT32 vector_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
float yscale = 1.0f / (65536 * visarea.height());
float xoffs = (float)visarea.min_x;
float yoffs = (float)visarea.min_y;
+ float xratio = xscale / yscale;
+ float yratio = yscale / xscale;
+ xratio = (xratio < 1.0f) ? xratio : 1.0f;
+ xratio = (yratio < 1.0f) ? yratio : 1.0f;
+
point *curpoint;
render_bounds clip;
- int lastx = 0, lasty = 0;
- int i;
+ int lastx = 0;
+ int lasty = 0;
curpoint = m_vector_list;
@@ -268,7 +314,7 @@ UINT32 vector_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
clip.x0 = clip.y0 = 0.0f;
clip.x1 = clip.y1 = 1.0f;
- for (i = 0; i < m_vector_index; i++)
+ for (int i = 0; i < m_vector_index; i++)
{
render_bounds coords;
@@ -286,22 +332,42 @@ UINT32 vector_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
}
else
{
+ float intensity = (float)curpoint->intensity / 255.0f;
+ float intensity_weight = normalized_sigmoid(intensity, m_beam_intensity_weight);
+
+ float beam_intensity_width = (m_beam_width_max - m_beam_width_min) * intensity_weight + m_beam_width_min;
+ float beam_width = beam_intensity_width * (1.0f / (float)VECTOR_WIDTH_DENOM);
+
coords.x0 = ((float)lastx - xoffs) * xscale;
coords.y0 = ((float)lasty - yoffs) * yscale;
coords.x1 = ((float)curpoint->x - xoffs) * xscale;
coords.y1 = ((float)curpoint->y - yoffs) * yscale;
- if (curpoint->intensity != 0)
- if (!render_clip_line(&coords, &clip))
- screen.container().add_line(coords.x0, coords.y0, coords.x1, coords.y1,
- m_beam_width * (1.0f / (float)VECTOR_WIDTH_DENOM),
- (curpoint->intensity << 24) | (curpoint->col & 0xffffff),
- flags);
+ // extend zero-length vector line (vector point) by quarter beam_width on both sides
+ if (fabs(coords.x0 - coords.x1) < FLT_EPSILON &&
+ fabs(coords.y0 - coords.y1) < FLT_EPSILON)
+ {
+ coords.x0 += xratio * beam_width * 0.25f;
+ coords.y0 += yratio * beam_width * 0.25f;
+ coords.x1 -= xratio * beam_width * 0.25f;
+ coords.y1 -= yratio * beam_width * 0.25f;
+ }
+
+ if (curpoint->intensity != 0 && !render_clip_line(&coords, &clip))
+ {
+ screen.container().add_line(
+ coords.x0, coords.y0, coords.x1, coords.y1,
+ beam_width,
+ (curpoint->intensity << 24) | (curpoint->col & 0xffffff),
+ flags);
+ }
lastx = curpoint->x;
lasty = curpoint->y;
}
+
curpoint++;
}
+
return 0;
}
diff --git a/src/emu/video/vector.h b/src/emu/video/vector.h
index 2e922d4a922..208b2215af1 100644
--- a/src/emu/video/vector.h
+++ b/src/emu/video/vector.h
@@ -16,7 +16,7 @@
/* The vertices are buffered here */
struct point
{
- point():
+ point() :
x(0),
y(0),
col(0),
@@ -32,8 +32,7 @@ struct point
int status; /* for dirty and clipping handling */
};
-class vector_device : public device_t,
- public device_video_interface
+class vector_device : public device_t, public device_video_interface
{
public:
// construction/destruction
@@ -46,21 +45,30 @@ public:
void add_point(int x, int y, rgb_t color, int intensity);
void add_clip(int minx, int miny, int maxx, int maxy);
- void set_flicker(float m_flicker_correction);
+ void set_flicker(float newval);
float get_flicker();
- void set_beam(float _beam);
- float get_beam();
+ void set_beam_width_min(float newval);
+ float get_beam_width_min();
+
+ void set_beam_width_max(float newval);
+ float get_beam_width_max();
+
+ void set_beam_intensity_weight(float newval);
+ float get_beam_intensity_weight();
// device-level overrides
virtual void device_start();
private:
- static int m_flicker; /* beam flicker value */
- static float m_flicker_correction;
- static float m_beam_width;
+ static float m_flicker;
+ static float m_beam_width_min;
+ static float m_beam_width_max;
+ static float m_beam_intensity_weight;
point *m_vector_list;
static int m_vector_index;
+
+ float normalized_sigmoid(float n, float k);
};
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 3a003963d5d..cb4b29d79f2 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -2096,8 +2096,15 @@ boblbobl // bootleg
sboblbobl // bootleg
sboblbobla // bootleg
sboblboblb // bootleg
+sboblboblc // bootleg
+bublboblb // bootleg
bub68705 // bootleg
dland // bootleg
+bbredux // bootleg / hack
+bublcave // hack
+boblcave // hack
+bublcave11 // hack
+bublcave10 // hack
missb2 // bootleg on enhanced hardware
bublpong // bootleg on enhanced hardware
kikikai // A85 (c) 1986 Taito Corporation
diff --git a/src/mame/drivers/bublbobl.c b/src/mame/drivers/bublbobl.c
index 28c720a8ddc..fb55af1e101 100644
--- a/src/mame/drivers/bublbobl.c
+++ b/src/mame/drivers/bublbobl.c
@@ -265,6 +265,11 @@ TODO:
- tokio: sound support is probably incomplete. There are a couple of unknown
accesses done by the CPU, including to the YM2203 I/O ports. At the
very least, there should be some filters.
+
+ there are also Bubble Bobble bootlegs with a P8749H MCU, however the MCU
+ is protected against reading and the main code only differs by 1 byte from
+ Bubble Bobble. If the MCU were to be dumped that would also make for
+ interesting comparisons.
***************************************************************************/
@@ -556,6 +561,19 @@ static INPUT_PORTS_START( boblbobl )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
+
+static INPUT_PORTS_START( boblcave )
+ PORT_INCLUDE( boblbobl )
+
+ PORT_MODIFY( "DSW1" ) // not monster speed on this, causes startup hangs just like original bublbobl
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW-B:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) // must be off (see notes)
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "ROM Type" ) PORT_DIPLOCATION("DSW-B:8")
+ PORT_DIPSETTING( 0x80, "IC52=512kb, IC53=none" ) // will hang on startup if set to wrong type
+ PORT_DIPSETTING( 0x00, "IC52=256kb, IC53=256kb" )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( sboblboblb )
PORT_INCLUDE( boblbobl )
@@ -1359,6 +1377,44 @@ ROM_START( boblbobl )
ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
ROM_END
+ROM_START( bbredux )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "redux_bb3", 0x00000, 0x8000, CRC(d51de9f3) SHA1(dc6bc93692145563a88c146eeb1d0361e25af840) )
+ /* ROMs banked at 8000-bfff */
+ ROM_LOAD( "redux_bb5", 0x10000, 0x8000, CRC(d29d3444) SHA1(3db694a6ba2ba2ed85d31c2bc4c7c94911b99b85) )
+ ROM_LOAD( "redux_bb4", 0x18000, 0x8000, CRC(984149bd) SHA1(9a0f96eee038712277f652545a343587f711b9aa) )
+
+ ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the second CPU */
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the third CPU */
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) ) /* 1st plane */
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ /* 0x30000-0x3ffff empty */
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) ) /* 2nd plane */
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+ /* 0x70000-0x7ffff empty */
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r4.u36", 0x0000, 0x0104, CRC(22fe26ac) SHA1(bbbfcbe6faded4af7ceec57b800297c054a997da) )
+ ROM_LOAD( "pal16l8.u38", 0x0200, 0x0104, CRC(c02d9663) SHA1(5d23cfd96f072981fd5fcf0dd7e98459da58b662) )
+ ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
+ROM_END
+
ROM_START( sboblbobl )
ROM_REGION( 0x30000, "maincpu", 0 )
ROM_LOAD( "cpu2-3.bin", 0x00000, 0x08000, CRC(2d9107b6) SHA1(ab1a4a20f4b533cd06cc458668f407a8a14c9d70) )
@@ -1459,6 +1515,41 @@ ROM_END
+ROM_START( sboblboblc )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "3", 0x00000, 0x08000, CRC(f2d44846) SHA1(dd1a29f2ff1938c31d4c6199cf970483ceb52485) )
+ /* ROMs banked at 8000-bfff */
+ ROM_LOAD( "5", 0x10000, 0x08000, CRC(3c5e4441) SHA1(b85da9d7e0148e950b76036d3f9a3d4a9dfa039c) )
+ ROM_LOAD( "4", 0x18000, 0x08000, CRC(1f29b5c0) SHA1(c15c84ca11cc10edac6340468bca463ecb2d89e6) )
+ /* 20000-2ffff empty */
+
+ ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the second CPU */
+ ROM_LOAD( "1", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the third CPU */
+ ROM_LOAD( "2", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) ) /* 1st plane */
+ ROM_LOAD( "13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ /* 0x30000-0x3ffff empty */
+ ROM_LOAD( "6", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) ) /* 2nd plane */
+ ROM_LOAD( "7", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "8", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "9", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "10", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "11", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+ /* 0x70000-0x7ffff empty */
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
+
+ROM_END
+
ROM_START( bub68705 )
ROM_REGION( 0x30000, "maincpu", 0 ) /* Program roms match Bubble Bobble (older) */
ROM_LOAD( "2.bin", 0x00000, 0x08000, CRC(32c8305b) SHA1(6bf69b3edfbefd33cd670a762b4bf0b39629a220) )
@@ -1526,6 +1617,178 @@ ROM_START( dland )
ROM_END
+ROM_START( bublcave )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bublcave-06.51", 0x00000, 0x08000, CRC(e8b9af5e) SHA1(dec44e47634a402df212806e84e3a810f8442776) )
+ ROM_LOAD( "bublcave-05.52", 0x10000, 0x10000, CRC(cfe14cb8) SHA1(17d463c755f630ae9d05943515fa4828972bd7b0) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "bublcave-08.37", 0x0000, 0x08000, CRC(a9384086) SHA1(26e686671d6d3ba3759716bf46e7f951bbb8a291) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "a78-01.17", 0xf000, 0x1000, CRC(b1bfb53d) SHA1(31b8f31acd3aa394acd80db362774749842e1285) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "bublcave-09.12", 0x00000, 0x8000, CRC(b90b7eef) SHA1(de72e4635843ad76248aa3b4aa8f8a0bfd53879e) ) /* 1st plane */
+ ROM_LOAD( "bublcave-10.13", 0x08000, 0x8000, CRC(4fb22f05) SHA1(880104e86dbd00ae657cbc768722427503b6a59f) )
+ ROM_LOAD( "bublcave-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "bublcave-12.15", 0x18000, 0x8000, CRC(e49eb49e) SHA1(2e05dc8833e10bef1a317d238c39fb9f362e9997) )
+ ROM_LOAD( "bublcave-13.16", 0x20000, 0x8000, CRC(61919734) SHA1(2c07e29f3dcc972d5eb47679ad81a0d7656b0cb2) )
+ ROM_LOAD( "bublcave-14.17", 0x28000, 0x8000, CRC(7e3a13bd) SHA1(bd4dba799340fa599f11cc68e03efe70ba6ba99b) )
+ ROM_LOAD( "bublcave-15.30", 0x40000, 0x8000, CRC(c253c73a) SHA1(3e187f6b9ca769772990068abe7b309417147d39) ) /* 2nd plane */
+ ROM_LOAD( "bublcave-16.31", 0x48000, 0x8000, CRC(e66c92ee) SHA1(12ea193c54121d08ad110c94cc075e29fef3ff85) )
+ ROM_LOAD( "bublcave-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "bublcave-18.33", 0x58000, 0x8000, CRC(47ee2544) SHA1(c6946e824043a312ed437e548a64ef599effbd42) )
+ ROM_LOAD( "bublcave-19.34", 0x60000, 0x8000, CRC(1ceeb1fa) SHA1(eb29ff896d149f7ab4cf38a338df39df14ccc20c) )
+ ROM_LOAD( "bublcave-20.35", 0x68000, 0x8000, CRC(64322e24) SHA1(acff8a9fcaf74f198653080759898d15cccf04e8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
+ROM_END
+
+
+ROM_START( boblcave )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "lc12_bb3", 0x00000, 0x08000, CRC(dddc9a24) SHA1(c0b31dd64d7359ae0ea5067db6ac8b54f9415e5a) )
+ /* ROMs banked at 8000-bfff */
+ ROM_LOAD( "lc12_bb5", 0x10000, 0x08000, CRC(0bc4de52) SHA1(55581a557dfd60d93642b89eb702c7170458b826) )
+ ROM_LOAD( "lc12_bb4", 0x18000, 0x08000, CRC(bd7afdf4) SHA1(a9bcdc857b1f252c36a5a70f5027a11737f8dd59) )
+ /* 20000-2ffff empty */
+
+ ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the second CPU */
+ ROM_LOAD( "bublcave-08.37", 0x0000, 0x08000, CRC(a9384086) SHA1(26e686671d6d3ba3759716bf46e7f951bbb8a291) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the third CPU */
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "bublcave-09.12", 0x00000, 0x8000, CRC(b90b7eef) SHA1(de72e4635843ad76248aa3b4aa8f8a0bfd53879e) ) /* 1st plane */
+ ROM_LOAD( "bublcave-10.13", 0x08000, 0x8000, CRC(4fb22f05) SHA1(880104e86dbd00ae657cbc768722427503b6a59f) )
+ ROM_LOAD( "bublcave-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "bublcave-12.15", 0x18000, 0x8000, CRC(e49eb49e) SHA1(2e05dc8833e10bef1a317d238c39fb9f362e9997) )
+ ROM_LOAD( "bublcave-13.16", 0x20000, 0x8000, CRC(61919734) SHA1(2c07e29f3dcc972d5eb47679ad81a0d7656b0cb2) )
+ ROM_LOAD( "bublcave-14.17", 0x28000, 0x8000, CRC(7e3a13bd) SHA1(bd4dba799340fa599f11cc68e03efe70ba6ba99b) )
+ ROM_LOAD( "bublcave-15.30", 0x40000, 0x8000, CRC(c253c73a) SHA1(3e187f6b9ca769772990068abe7b309417147d39) ) /* 2nd plane */
+ ROM_LOAD( "bublcave-16.31", 0x48000, 0x8000, CRC(e66c92ee) SHA1(12ea193c54121d08ad110c94cc075e29fef3ff85) )
+ ROM_LOAD( "bublcave-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "bublcave-18.33", 0x58000, 0x8000, CRC(47ee2544) SHA1(c6946e824043a312ed437e548a64ef599effbd42) )
+ ROM_LOAD( "bublcave-19.34", 0x60000, 0x8000, CRC(1ceeb1fa) SHA1(eb29ff896d149f7ab4cf38a338df39df14ccc20c) )
+ ROM_LOAD( "bublcave-20.35", 0x68000, 0x8000, CRC(64322e24) SHA1(acff8a9fcaf74f198653080759898d15cccf04e8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r4.u36", 0x0000, 0x0104, CRC(22fe26ac) SHA1(bbbfcbe6faded4af7ceec57b800297c054a997da) )
+ ROM_LOAD( "pal16l8.u38", 0x0200, 0x0104, CRC(c02d9663) SHA1(5d23cfd96f072981fd5fcf0dd7e98459da58b662) )
+ ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
+ROM_END
+
+
+ROM_START( bublcave11 )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bublcave10-06.51", 0x00000, 0x08000, CRC(185cc219) SHA1(dfb312f144fb01c07581cb8ea55ab0dc92ccd5b2) )
+ ROM_LOAD( "bublcave11-05.52", 0x10000, 0x10000, CRC(b6b02df3) SHA1(542589544216a54f84c213b161d7145934875d2b) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "bublcave11-08.37", 0x0000, 0x08000, CRC(c5d14e62) SHA1(b32b1ca76b54755a69a7a346d01545f2699e1363) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "a78-01.17", 0xf000, 0x1000, CRC(b1bfb53d) SHA1(31b8f31acd3aa394acd80db362774749842e1285) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "bublcave-09.12", 0x00000, 0x8000, CRC(b90b7eef) SHA1(de72e4635843ad76248aa3b4aa8f8a0bfd53879e) ) /* 1st plane */
+ ROM_LOAD( "bublcave-10.13", 0x08000, 0x8000, CRC(4fb22f05) SHA1(880104e86dbd00ae657cbc768722427503b6a59f) )
+ ROM_LOAD( "bublcave-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "bublcave-12.15", 0x18000, 0x8000, CRC(e49eb49e) SHA1(2e05dc8833e10bef1a317d238c39fb9f362e9997) )
+ ROM_LOAD( "bublcave-13.16", 0x20000, 0x8000, CRC(61919734) SHA1(2c07e29f3dcc972d5eb47679ad81a0d7656b0cb2) )
+ ROM_LOAD( "bublcave-14.17", 0x28000, 0x8000, CRC(7e3a13bd) SHA1(bd4dba799340fa599f11cc68e03efe70ba6ba99b) )
+ ROM_LOAD( "bublcave-15.30", 0x40000, 0x8000, CRC(c253c73a) SHA1(3e187f6b9ca769772990068abe7b309417147d39) ) /* 2nd plane */
+ ROM_LOAD( "bublcave-16.31", 0x48000, 0x8000, CRC(e66c92ee) SHA1(12ea193c54121d08ad110c94cc075e29fef3ff85) )
+ ROM_LOAD( "bublcave-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "bublcave-18.33", 0x58000, 0x8000, CRC(47ee2544) SHA1(c6946e824043a312ed437e548a64ef599effbd42) )
+ ROM_LOAD( "bublcave-19.34", 0x60000, 0x8000, CRC(1ceeb1fa) SHA1(eb29ff896d149f7ab4cf38a338df39df14ccc20c) )
+ ROM_LOAD( "bublcave-20.35", 0x68000, 0x8000, CRC(64322e24) SHA1(acff8a9fcaf74f198653080759898d15cccf04e8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
+ROM_END
+
+ROM_START( bublcave10 )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bublcave10-06.51", 0x00000, 0x08000, CRC(185cc219) SHA1(dfb312f144fb01c07581cb8ea55ab0dc92ccd5b2) )
+ ROM_LOAD( "bublcave10-05.52", 0x10000, 0x10000, CRC(381cdde7) SHA1(0c9de44d7dbad754e873af8ddb5a2736f5ec2096) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "bublcave10-08.37", 0x0000, 0x08000, CRC(026a68e1) SHA1(9e54310a9f1f5187ea6eb49d9189865b44708a7e) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "a78-01.17", 0xf000, 0x1000, CRC(b1bfb53d) SHA1(31b8f31acd3aa394acd80db362774749842e1285) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "bublcave-09.12", 0x00000, 0x8000, CRC(b90b7eef) SHA1(de72e4635843ad76248aa3b4aa8f8a0bfd53879e) ) /* 1st plane */
+ ROM_LOAD( "bublcave-10.13", 0x08000, 0x8000, CRC(4fb22f05) SHA1(880104e86dbd00ae657cbc768722427503b6a59f) )
+ ROM_LOAD( "bublcave-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "bublcave-12.15", 0x18000, 0x8000, CRC(e49eb49e) SHA1(2e05dc8833e10bef1a317d238c39fb9f362e9997) )
+ ROM_LOAD( "bublcave-13.16", 0x20000, 0x8000, CRC(61919734) SHA1(2c07e29f3dcc972d5eb47679ad81a0d7656b0cb2) )
+ ROM_LOAD( "bublcave-14.17", 0x28000, 0x8000, CRC(7e3a13bd) SHA1(bd4dba799340fa599f11cc68e03efe70ba6ba99b) )
+ ROM_LOAD( "bublcave-15.30", 0x40000, 0x8000, CRC(c253c73a) SHA1(3e187f6b9ca769772990068abe7b309417147d39) ) /* 2nd plane */
+ ROM_LOAD( "bublcave-16.31", 0x48000, 0x8000, CRC(e66c92ee) SHA1(12ea193c54121d08ad110c94cc075e29fef3ff85) )
+ ROM_LOAD( "bublcave-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "bublcave-18.33", 0x58000, 0x8000, CRC(47ee2544) SHA1(c6946e824043a312ed437e548a64ef599effbd42) )
+ ROM_LOAD( "bublcave-19.34", 0x60000, 0x8000, CRC(1ceeb1fa) SHA1(eb29ff896d149f7ab4cf38a338df39df14ccc20c) )
+ ROM_LOAD( "bublcave-20.35", 0x68000, 0x8000, CRC(64322e24) SHA1(acff8a9fcaf74f198653080759898d15cccf04e8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
+ROM_END
+
+ROM_START( bublboblb )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bbaladar.3", 0x00000, 0x8000, CRC(31bfc6fb) SHA1(6a72086d415a69b9e5c003ec6cf7858e8c4b346f) )
+ /* ROMs banked at 8000-bfff */
+ ROM_LOAD( "bbaladar.5", 0x10000, 0x8000, CRC(16386e9a) SHA1(77fa3f5ecce5c79ba52098c0870482459926b415) )
+ ROM_LOAD( "bbaladar.4", 0x18000, 0x8000, CRC(0c4bcb07) SHA1(3e3f7fa098d6be61d265cab5258dbd0e279bd8ed) )
+
+ ROM_REGION( 0x10000, "slave", 0 ) /* 64k for the second CPU */
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the third CPU */
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) ) /* 1st plane */
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ /* 0x30000-0x3ffff empty */
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) ) /* 2nd plane */
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+ /* 0x70000-0x7ffff empty */
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r4.u36", 0x0000, 0x0104, CRC(22fe26ac) SHA1(bbbfcbe6faded4af7ceec57b800297c054a997da) )
+ ROM_LOAD( "pal16l8.u38", 0x0200, 0x0104, CRC(c02d9663) SHA1(5d23cfd96f072981fd5fcf0dd7e98459da58b662) )
+ ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
+ROM_END
/*************************************
*
@@ -1598,6 +1861,18 @@ GAME( 1986, boblbobl, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl
GAME( 1986, sboblbobl, bublbobl, boblbobl, sboblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Datsu)", "Super Bobble Bobble (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, sboblbobla, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, sboblboblb, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblboblc, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bubble Bobble (bootleg)", MACHINE_SUPPORTS_SAVE ) // the title screen on this one isn't hacked
GAME( 1986, bub68705, bublbobl, bub68705, bublbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bubble Bobble (bootleg with 68705)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, dland, bublbobl, boblbobl, dland, bublbobl_state, dland, ROT0, "bootleg", "Dream Land / Super Dream Land (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2013, bbredux, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Punji)", "Bubble Bobble ('bootleg redux' hack for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) // for use on non-MCU bootleg boards (Bobble Bobble etc.) has more faithful simulation of the protection device (JAN-04-2015 release)
+GAME( 2013, bublboblb, bublbobl, boblbobl, boblcave, bublbobl_state, bublbobl, ROT0, "bootleg (Aladar)", "Bubble Bobble (for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) // alt bootleg/hack to restore proper MCU behavior to bootleg boards
+
+GAME( 2013, bublcave, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.2", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, boblcave, bublbobl, boblbobl, boblcave, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.2 (for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2012, bublcave11, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.1", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, bublcave10, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.0", MACHINE_SUPPORTS_SAVE )
+
+
diff --git a/src/mame/drivers/exelv.c b/src/mame/drivers/exelv.c
index fc1ad3d0c0e..d2be5b34519 100644
--- a/src/mame/drivers/exelv.c
+++ b/src/mame/drivers/exelv.c
@@ -523,7 +523,7 @@ static MACHINE_CONFIG_START( exl100, exelv_state )
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "exelvision_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom")
- MCFG_SOFTWARE_LIST_ADD("cart_list", "exl100_cart")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "exl100")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/osborne1.c b/src/mame/drivers/osborne1.c
index 256eb247d45..dc9b61bf547 100644
--- a/src/mame/drivers/osborne1.c
+++ b/src/mame/drivers/osborne1.c
@@ -202,7 +202,7 @@ static MACHINE_CONFIG_START( osborne1, osborne1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_UPDATE_DRIVER(osborne1_state, screen_update)
- MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK, 1024, 0, 832, 260, 0, 240 )
+ MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK, 1024, 0, 104*8, 260, 0, 24*10 )
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", osborne1)
MCFG_PALETTE_ADD_MONOCHROME_GREEN_HIGHLIGHT("palette")
diff --git a/src/mame/drivers/pc.c b/src/mame/drivers/pc.c
index fc55e7496ac..fd3eaa10c19 100644
--- a/src/mame/drivers/pc.c
+++ b/src/mame/drivers/pc.c
@@ -485,7 +485,7 @@ ROM_START( eagle1600 )
ROMX_LOAD( "eagle 1600 62-2732-002 rev e u404.bin",0xfe001, 0x1000, CRC(be6492d4) SHA1(ef25faf33e8336121d030e38e177be39be8afb7a), ROM_SKIP(1))
ROM_REGION(0x8000,"gfx1", 0)
- ROM_LOAD("eagle 1600 video char gen u301.bin", 0x00000, 0x2000, CRC(1a7e552f) SHA1(749058783eec9d96a70dc5fdbfccb56196f889dc))
+ ROM_LOAD("eagle 1600 video char gen u301.bin", 0x00000, 0x1000, CRC(1a7e552f) SHA1(749058783eec9d96a70dc5fdbfccb56196f889dc))
ROM_END
/***************************************************************************
diff --git a/src/mame/drivers/sega_sawatte.c b/src/mame/drivers/sega_sawatte.c
new file mode 100644
index 00000000000..a483910c724
--- /dev/null
+++ b/src/mame/drivers/sega_sawatte.c
@@ -0,0 +1,54 @@
+// license:BSD-3-Clause
+// copyright-holders:
+
+/* Sega Sawatte / S-Pico
+
+a sound-only Pico type system (one of the boards even says S-PICO)
+
+CPU is unknown (I can't see one?!) cartridge dumps should be good, but not confirmed, might be data only for an MCU?
+driver does nothing except allow the softlist to be connected to the -romident commands etc.
+
+
+images supplied by Team Europe
+
+http://mamedev.emulab.it/haze/reference/sawatte/cartridge_pcb_front.jpg
+http://mamedev.emulab.it/haze/reference/sawatte/cartridge_pcb_back.jpg
+
+http://mamedev.emulab.it/haze/reference/sawatte/PCB_Front.jpg
+http://mamedev.emulab.it/haze/reference/sawatte/PCB_Back.jpg
+
+http://mamedev.emulab.it/haze/reference/sawatte/Console_Front.JPG
+http://mamedev.emulab.it/haze/reference/sawatte/Console_Back.JPG
+
+http://mamedev.emulab.it/haze/reference/sawatte/cartridge_example.jpg
+
+*/
+
+#include "emu.h"
+
+
+
+class sawatte_state : public driver_device
+{
+public:
+ sawatte_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ { }
+
+protected:
+};
+
+
+static INPUT_PORTS_START( sawatte )
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( sawatte, sawatte_state )
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "sawatte")
+MACHINE_CONFIG_END
+
+ROM_START( sawatte )
+ROM_END
+
+
+GAME( 1996?, sawatte, 0, sawatte, sawatte, driver_device, 0, ROT0, "Sega", "Sawatte", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/subhuntr.c b/src/mame/drivers/subhuntr.c
index 3a29fce8316..76e9ced6e0d 100644
--- a/src/mame/drivers/subhuntr.c
+++ b/src/mame/drivers/subhuntr.c
@@ -78,7 +78,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( subhuntr_io_map, AS_IO, 8, subhuntr_state )
// AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE( , )
// AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE( , )
-// AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
+ AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
ADDRESS_MAP_END
/***************************************************************************
@@ -109,7 +109,7 @@ void subhuntr_state::machine_reset()
INTERRUPT_GEN_MEMBER(subhuntr_state::subhuntr_interrupt)
{
-// device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x03);
+ device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x03);
}
static const gfx_layout tiles8x8_layout =
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h
index 5c5b19c585c..7fe88a53a6e 100644
--- a/src/mame/includes/neogeo.h
+++ b/src/mame/includes/neogeo.h
@@ -392,48 +392,54 @@ ADDRESS_MAP_EXTERN(neogeo_main_map,16);
ROM_LOAD16_WORD_SWAP_BIOS( 0, "sp-s2.sp1", 0x00000, 0x020000, CRC(9036d879) SHA1(4f5ed7105b7128794654ce82b51723e16e389543) ) /* Europe, 1 Slot, has also been found on 2 Slot and 4 Slot (the old hacks were designed for this one) */ \
ROM_SYSTEM_BIOS( 1, "euro-s1", "Europe MVS (Ver. 1)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 1, "sp-s.sp1", 0x00000, 0x020000, CRC(c7f2fa45) SHA1(09576ff20b4d6b365e78e6a5698ea450262697cd) ) /* Europe, 4 Slot */ \
+ \
ROM_SYSTEM_BIOS( 2, "us", "US MVS (Ver. 2?)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 2, "sp-u2.sp1", 0x00000, 0x020000, CRC(e72943de) SHA1(5c6bba07d2ec8ac95776aa3511109f5e1e2e92eb) ) /* US, 2 Slot */ \
ROM_SYSTEM_BIOS( 3, "us-e", "US MVS (Ver. 1)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 3, "sp-e.sp1", 0x00000, 0x020000, CRC(2723a5b5) SHA1(5dbff7531cf04886cde3ef022fb5ca687573dcb8) ) /* US, 6 Slot (V5?) */ \
- ROM_SYSTEM_BIOS( 4, "asia", "Asia MVS (Ver. 3)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS( 4, "asia-s3.rom", 0x00000, 0x020000, CRC(91b64be3) SHA1(720a3e20d26818632aedf2c2fd16c54f213543e1) ) /* Asia */ \
- ROM_SYSTEM_BIOS( 5, "japan", "Japan MVS (Ver. 3)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS( 5, "vs-bios.rom", 0x00000, 0x020000, CRC(f0e8f27d) SHA1(ecf01eda815909f1facec62abf3594eaa8d11075) ) /* Japan, Ver 6 VS Bios */ \
- ROM_SYSTEM_BIOS( 6, "japan-s2", "Japan MVS (Ver. 2)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS( 6, "sp-j2.sp1", 0x00000, 0x020000, CRC(acede59c) SHA1(b6f97acd282fd7e94d9426078a90f059b5e9dd91) ) /* Japan, Older */ \
- ROM_SYSTEM_BIOS( 7, "japan-s1", "Japan MVS (Ver. 1)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS( 7, "sp1.jipan.1024", 0x00000, 0x020000, CRC(9fb0abe4) SHA1(18a987ce2229df79a8cf6a84f968f0e42ce4e59d) ) /* Japan, Older */ \
- ROM_SYSTEM_BIOS( 8, "mv1c", "NEO-MVH MV1C" ) \
- ROM_LOAD16_WORD_SWAP_BIOS( 8, "sp-45.sp1", 0x00000, 0x080000, CRC(03cc9f6a) SHA1(cdf1f49e3ff2bac528c21ed28449cf35b7957dc1) ) /* Latest Asia bios */ \
- ROM_SYSTEM_BIOS( 9, "japan-j3", "Japan MVS (J3)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS( 9, "japan-j3.bin", 0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) ) /* Latest Japan bios; correct chip label unknown */ \
- ROM_SYSTEM_BIOS(10, "japan-hotel", "Custom Japanese Hotel" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(10, "sp-1v1_3db8c.bin", 0x00000, 0x020000, CRC(162f0ebe) SHA1(fe1c6dd3dfcf97d960065b1bb46c1e11cb7bf271) ) /* 'rare MVS found in japanese hotels' shows v1.3 in test mode */ \
- ROM_SYSTEM_BIOS(11, "unibios31", "Universe Bios (Hack, Ver. 3.1)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(11, "uni-bios_3_1.rom", 0x00000, 0x020000, CRC(0c58093f) SHA1(29329a3448c2505e1ff45ffa75e61e9693165153) ) /* Universe Bios v3.1 (hack) */ \
- ROM_SYSTEM_BIOS(12, "unibios30", "Universe Bios (Hack, Ver. 3.0)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(12, "uni-bios_3_0.rom", 0x00000, 0x020000, CRC(a97c89a9) SHA1(97a5eff3b119062f10e31ad6f04fe4b90d366e7f) ) /* Universe Bios v3.0 (hack) */ \
- ROM_SYSTEM_BIOS(13, "unibios23", "Universe Bios (Hack, Ver. 2.3)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(13, "uni-bios_2_3.rom", 0x00000, 0x020000, CRC(27664eb5) SHA1(5b02900a3ccf3df168bdcfc98458136fd2b92ac0) ) /* Universe Bios v2.3 (hack) */ \
- ROM_SYSTEM_BIOS(14, "unibios23o", "Universe Bios (Hack, Ver. 2.3, older?)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(14, "uni-bios_2_3o.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) alt version, withdrawn? */ \
- ROM_SYSTEM_BIOS(15, "unibios22", "Universe Bios (Hack, Ver. 2.2)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(15, "uni-bios_2_2.rom", 0x00000, 0x020000, CRC(2d50996a) SHA1(5241a4fb0c63b1a23fd1da8efa9c9a9bd3b4279c) ) /* Universe Bios v2.2 (hack) */ \
- ROM_SYSTEM_BIOS(16, "unibios21", "Universe Bios (Hack, Ver. 2.1)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(16, "uni-bios_2_1.rom", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ \
- ROM_SYSTEM_BIOS(17, "unibios20", "Universe Bios (Hack, Ver. 2.0)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(17, "uni-bios_2_0.rom", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ \
- ROM_SYSTEM_BIOS(18, "unibios13", "Universe Bios (Hack, Ver. 1.3)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(18, "uni-bios_1_3.rom", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) */ \
- ROM_SYSTEM_BIOS(19, "unibios12", "Universe Bios (Hack, Ver. 1.2)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(19, "uni-bios_1_2.rom", 0x00000, 0x020000, CRC(4fa698e9) SHA1(682e13ec1c42beaa2d04473967840c88fd52c75a) ) /* Universe Bios v1.2 (hack) */ \
- ROM_SYSTEM_BIOS(20, "unibios12o", "Universe Bios (Hack, Ver. 1.2, older)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(20, "uni-bios_1_2o.rom", 0x00000, 0x020000, CRC(e19d3ce9) SHA1(af88ef837f44a3af2d7144bb46a37c8512b67770) ) /* Universe Bios v1.2 (hack) alt version */ \
- ROM_SYSTEM_BIOS(21, "unibios11", "Universe Bios (Hack, Ver. 1.1)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(21, "uni-bios_1_1.rom", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ \
- ROM_SYSTEM_BIOS(22, "unibios10", "Universe Bios (Hack, Ver. 1.0)" ) \
- ROM_LOAD16_WORD_SWAP_BIOS(22, "uni-bios_1_0.rom", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */
+ ROM_SYSTEM_BIOS( 4, "us-v2", "US MVS (4 slot, Ver 2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(4, "v2.bin", 0x00000, 0x020000, CRC(62f021f4) SHA1(62d372269e1b3161c64ae21123655a0a22ffd1bb) ) /* US, 4 slot */ \
+ \
+ ROM_SYSTEM_BIOS( 5, "asia", "Asia MVS (Ver. 3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 5, "asia-s3.rom", 0x00000, 0x020000, CRC(91b64be3) SHA1(720a3e20d26818632aedf2c2fd16c54f213543e1) ) /* Asia */ \
+ \
+ ROM_SYSTEM_BIOS( 6, "japan", "Japan MVS (Ver. 3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 6, "vs-bios.rom", 0x00000, 0x020000, CRC(f0e8f27d) SHA1(ecf01eda815909f1facec62abf3594eaa8d11075) ) /* Japan, Ver 6 VS Bios */ \
+ ROM_SYSTEM_BIOS( 7, "japan-s2", "Japan MVS (Ver. 2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 7, "sp-j2.sp1", 0x00000, 0x020000, CRC(acede59c) SHA1(b6f97acd282fd7e94d9426078a90f059b5e9dd91) ) /* Japan, Older */ \
+ ROM_SYSTEM_BIOS( 8, "japan-s1", "Japan MVS (Ver. 1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 8, "sp1.jipan.1024", 0x00000, 0x020000, CRC(9fb0abe4) SHA1(18a987ce2229df79a8cf6a84f968f0e42ce4e59d) ) /* Japan, Older */ \
+ ROM_SYSTEM_BIOS( 9, "mv1c", "NEO-MVH MV1C" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 9, "sp-45.sp1", 0x00000, 0x080000, CRC(03cc9f6a) SHA1(cdf1f49e3ff2bac528c21ed28449cf35b7957dc1) ) /* Latest Asia bios */ \
+ ROM_SYSTEM_BIOS( 10, "japan-j3", "Japan MVS (J3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 10, "japan-j3.bin", 0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) ) /* Latest Japan bios; correct chip label unknown */ \
+ ROM_SYSTEM_BIOS(11, "japan-hotel", "Custom Japanese Hotel" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(11, "sp-1v1_3db8c.bin", 0x00000, 0x020000, CRC(162f0ebe) SHA1(fe1c6dd3dfcf97d960065b1bb46c1e11cb7bf271) ) /* 'rare MVS found in japanese hotels' shows v1.3 in test mode */ \
+ \
+ ROM_SYSTEM_BIOS(12, "unibios31", "Universe Bios (Hack, Ver. 3.1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(12, "uni-bios_3_1.rom", 0x00000, 0x020000, CRC(0c58093f) SHA1(29329a3448c2505e1ff45ffa75e61e9693165153) ) /* Universe Bios v3.1 (hack) */ \
+ ROM_SYSTEM_BIOS(13, "unibios30", "Universe Bios (Hack, Ver. 3.0)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(13, "uni-bios_3_0.rom", 0x00000, 0x020000, CRC(a97c89a9) SHA1(97a5eff3b119062f10e31ad6f04fe4b90d366e7f) ) /* Universe Bios v3.0 (hack) */ \
+ ROM_SYSTEM_BIOS(14, "unibios23", "Universe Bios (Hack, Ver. 2.3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(14, "uni-bios_2_3.rom", 0x00000, 0x020000, CRC(27664eb5) SHA1(5b02900a3ccf3df168bdcfc98458136fd2b92ac0) ) /* Universe Bios v2.3 (hack) */ \
+ ROM_SYSTEM_BIOS(15, "unibios23o", "Universe Bios (Hack, Ver. 2.3, older?)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(15, "uni-bios_2_3o.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) alt version, withdrawn? */ \
+ ROM_SYSTEM_BIOS(16, "unibios22", "Universe Bios (Hack, Ver. 2.2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(16, "uni-bios_2_2.rom", 0x00000, 0x020000, CRC(2d50996a) SHA1(5241a4fb0c63b1a23fd1da8efa9c9a9bd3b4279c) ) /* Universe Bios v2.2 (hack) */ \
+ ROM_SYSTEM_BIOS(17, "unibios21", "Universe Bios (Hack, Ver. 2.1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(17, "uni-bios_2_1.rom", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ \
+ ROM_SYSTEM_BIOS(18, "unibios20", "Universe Bios (Hack, Ver. 2.0)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(18, "uni-bios_2_0.rom", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ \
+ ROM_SYSTEM_BIOS(19, "unibios13", "Universe Bios (Hack, Ver. 1.3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(19, "uni-bios_1_3.rom", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) */ \
+ ROM_SYSTEM_BIOS(20, "unibios12", "Universe Bios (Hack, Ver. 1.2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(20, "uni-bios_1_2.rom", 0x00000, 0x020000, CRC(4fa698e9) SHA1(682e13ec1c42beaa2d04473967840c88fd52c75a) ) /* Universe Bios v1.2 (hack) */ \
+ ROM_SYSTEM_BIOS(21, "unibios12o", "Universe Bios (Hack, Ver. 1.2, older)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(21, "uni-bios_1_2o.rom", 0x00000, 0x020000, CRC(e19d3ce9) SHA1(af88ef837f44a3af2d7144bb46a37c8512b67770) ) /* Universe Bios v1.2 (hack) alt version */ \
+ ROM_SYSTEM_BIOS(22, "unibios11", "Universe Bios (Hack, Ver. 1.1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(22, "uni-bios_1_1.rom", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ \
+ ROM_SYSTEM_BIOS(23, "unibios10", "Universe Bios (Hack, Ver. 1.0)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS(23, "uni-bios_1_0.rom", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */
diff --git a/src/mame/includes/osborne1.h b/src/mame/includes/osborne1.h
index 8134e0ccbe7..1c0564b9dbb 100644
--- a/src/mame/includes/osborne1.h
+++ b/src/mame/includes/osborne1.h
@@ -96,6 +96,7 @@ public:
/* video related */
UINT8 m_screen_pac;
UINT8 m_resolution;
+ UINT8 m_hc_left;
UINT8 m_new_start_x;
UINT8 m_new_start_y;
emu_timer *m_video_timer;
diff --git a/src/mame/machine/osborne1.c b/src/mame/machine/osborne1.c
index 1fa93b6567a..960a6a0f4d5 100644
--- a/src/mame/machine/osborne1.c
+++ b/src/mame/machine/osborne1.c
@@ -113,6 +113,7 @@ WRITE8_MEMBER( osborne1_state::osborne1_2000_w )
break;
case 0x400: /* SCREEN-PAC */
m_resolution = data & 0x01;
+ m_hc_left = (data >> 1) & 0x01;
break;
case 0x900: /* IEEE488 PIA */
m_pia0->write(space, offset & 0x03, data );
@@ -342,9 +343,8 @@ void osborne1_state::device_timer(emu_timer &timer, device_timer_id id, int para
TIMER_CALLBACK_MEMBER(osborne1_state::osborne1_video_callback)
{
- int y = machine().first_screen()->vpos();
- UINT8 ra=0,chr,gfx,dim;
- UINT16 x,ma;
+ int const y = machine().first_screen()->vpos();
+ UINT8 ra=0;
/* Check for start of frame */
if ( y == 0 )
@@ -361,36 +361,36 @@ TIMER_CALLBACK_MEMBER(osborne1_state::osborne1_video_callback)
{
ra = y % 10;
/* Draw a line of the display */
- ma = (m_new_start_y + (y/10)) * 128 + m_new_start_x;
+ bool const hires = m_screen_pac & m_resolution;
+ UINT16 const row = (m_new_start_y + (y/10)) * 128 & 0xF80;
+ UINT16 const col = (m_new_start_x & (hires ? 0x60 : 0x7F)) - ((hires && m_hc_left) ? 8 : 0);
UINT16 *p = &m_bitmap.pix16(y);
- for ( x = 0; x < ((m_screen_pac && m_resolution) ? 104 : 52); x++ )
+ for ( UINT16 x = 0; x < (hires ? 104 : 52); x++ )
{
- chr = m_ram->pointer()[ 0xF000 + ( (ma+x) & 0xFFF ) ];
- dim = m_ram->pointer()[ 0x10000 + ( (ma+x) & 0xFFF ) ] & 0x80;
+ UINT16 offs = row | ((col + x) & 0x7F);
+ UINT8 const chr = m_ram->pointer()[ 0xF000 + offs ];
+ UINT8 const dim = m_ram->pointer()[ 0x10000 + offs ] & 0x80;
- if ( (chr & 0x80) && (ra == 9) )
- gfx = 0xFF;
- else
- gfx = m_p_chargen[ (ra << 7) | ( chr & 0x7F ) ];
+ UINT8 const gfx = ((chr & 0x80) && (ra == 9)) ? 0xFF : m_p_chargen[ (ra << 7) | (chr & 0x7F) ];
/* Display a scanline of a character */
*p++ = BIT(gfx, 7) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 6) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 5) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 4) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 3) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 2) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 1) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 0) ? ( dim ? 2 : 1 ) : 0;
- if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
+ if (!hires) { p[0] = p[-1]; p++; }
}
}
@@ -425,6 +425,7 @@ void osborne1_state::machine_reset()
m_screen_pac = 0 != (m_cnf->read() & 0x01);
m_resolution = 0;
+ m_hc_left = 0;
m_p_chargen = memregion( "chargen" )->base();
memset( m_ram->pointer() + 0x10000, 0xFF, 0x1000 );
diff --git a/src/mame/mess.lst b/src/mame/mess.lst
index 307a258de57..5d4cafa3c01 100644
--- a/src/mame/mess.lst
+++ b/src/mame/mess.lst
@@ -81,6 +81,7 @@ pico // 1994 Sega Pico (Europe)
picou // 1994 Sega Pico (USA)
picoj // 1993 Sega Pico (Japan)
copera // 1993 Sega / Yamaha
+sawatte //
segacd // 1992 Sega Sega CD (USA)
megacd // 1993 Sega Mega-CD (Europe)
megacda // 1993 Sega Mega-CD (Asia)
diff --git a/src/osd/modules/debugger/osx/debugview.m b/src/osd/modules/debugger/osx/debugview.m
index c5b0a1c5431..e793c649d9e 100644
--- a/src/osd/modules/debugger/osx/debugview.m
+++ b/src/osd/modules/debugger/osx/debugview.m
@@ -404,7 +404,7 @@ static void debugwin_view_update(debug_view &view, void *osdprivate)
[text addAttribute:NSFontAttributeName value:font range:run];
NSPasteboard *const board = [NSPasteboard generalPasteboard];
[board declareTypes:[NSArray arrayWithObject:NSRTFPboardType] owner:nil];
- [board setData:[text RTFFromRange:run documentAttributes:@{}] forType:NSRTFPboardType];
+ [board setData:[text RTFFromRange:run documentAttributes:[NSDictionary dictionary]] forType:NSRTFPboardType];
[text deleteCharactersInRange:run];
}
diff --git a/src/osd/sdl/video.c b/src/osd/sdl/video.c
index f9b18c9041f..20de4ee671f 100644
--- a/src/osd/sdl/video.c
+++ b/src/osd/sdl/video.c
@@ -96,7 +96,7 @@ bool sdl_osd_interface::video_init()
sdl_monitor_info::init();
// we need the beam width in a float, contrary to what the core does.
- video_config.beamwidth = options().beam();
+ video_config.beamwidth = options().beam_width_min();
// initialize the window system so we can make windows
if (!window_init())