summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2019-05-15 15:13:54 +0200
committer hap <happppp@users.noreply.github.com>2019-05-15 15:14:18 +0200
commitfd0d4bf93b801ef6a46146fb9cd850d9680bde5c (patch)
treead08234d77a1549a5595f69ac0f125f16033047c
parent9df2514cea2fd932234100a8f28673be2022f266 (diff)
milton: add internal artwork (nw)
-rw-r--r--src/devices/sound/sp0250.cpp41
-rw-r--r--src/mame/drivers/milton6805.cpp43
-rw-r--r--src/mame/layout/milton.lay114
3 files changed, 158 insertions, 40 deletions
diff --git a/src/devices/sound/sp0250.cpp b/src/devices/sound/sp0250.cpp
index bc9c7072883..9894b2cbe6c 100644
--- a/src/devices/sound/sp0250.cpp
+++ b/src/devices/sound/sp0250.cpp
@@ -36,20 +36,20 @@ should be 312, but 312 = 39*8 so it doesn't look right because a divider by 39 i
DEFINE_DEVICE_TYPE(SP0250, sp0250_device, "sp0250", "GI SP0250 LPC")
-sp0250_device::sp0250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SP0250, tag, owner, clock),
- device_sound_interface(mconfig, *this),
- m_amp(0),
- m_pitch(0),
- m_repeat(0),
- m_pcount(0),
- m_rcount(0),
- m_playing(0),
- m_RNG(0),
- m_stream(nullptr),
- m_voiced(0),
- m_fifo_pos(0),
- m_drq(*this)
+sp0250_device::sp0250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, SP0250, tag, owner, clock),
+ device_sound_interface(mconfig, *this),
+ m_amp(0),
+ m_pitch(0),
+ m_repeat(0),
+ m_pcount(0),
+ m_rcount(0),
+ m_playing(0),
+ m_RNG(0),
+ m_stream(nullptr),
+ m_voiced(0),
+ m_fifo_pos(0),
+ m_drq(*this)
{
for (auto & elem : m_fifo)
{
@@ -75,7 +75,7 @@ void sp0250_device::device_start()
m_drq.resolve_safe();
if (!m_drq.isnull())
{
- m_drq( ASSERT_LINE);
+ m_drq(ASSERT_LINE);
m_tick_timer= machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sp0250_device::timer_tick), this));
m_tick_timer->adjust(attotime::from_hz(clock()) * CLOCK_DIVIDER, 0, attotime::from_hz(clock()) * CLOCK_DIVIDER);
}
@@ -122,9 +122,6 @@ static int16_t sp0250_gc(uint8_t v)
void sp0250_device::load_values()
{
- int f;
-
-
m_filter[0].B = sp0250_gc(m_fifo[ 0]);
m_filter[0].F = sp0250_gc(m_fifo[ 1]);
m_amp = sp0250_ga(m_fifo[ 2]);
@@ -147,7 +144,7 @@ void sp0250_device::load_values()
m_pcount = 0;
m_rcount = 0;
- for (f = 0; f < 6; f++)
+ for (int f = 0; f < 6; f++)
m_filter[f].z1 = m_filter[f].z2 = 0;
m_playing = 1;
@@ -185,13 +182,11 @@ uint8_t sp0250_device::drq_r()
void sp0250_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
stream_sample_t *output = outputs[0];
- int i;
- for (i = 0; i < samples; i++)
+ for (int i = 0; i < samples; i++)
{
if (m_playing)
{
int16_t z0;
- int f;
if (m_voiced)
{
@@ -214,7 +209,7 @@ void sp0250_device::sound_stream_update(sound_stream &stream, stream_sample_t **
m_RNG >>= 1;
}
- for (f = 0; f < 6; f++)
+ for (int f = 0; f < 6; f++)
{
z0 += ((m_filter[f].z1 * m_filter[f].F) >> 8)
+ ((m_filter[f].z2 * m_filter[f].B) >> 9);
diff --git a/src/mame/drivers/milton6805.cpp b/src/mame/drivers/milton6805.cpp
index 06ea73f4b60..5c75ed68f99 100644
--- a/src/mame/drivers/milton6805.cpp
+++ b/src/mame/drivers/milton6805.cpp
@@ -7,6 +7,10 @@ Milton Bradley Milton
This is the talking tabletop game, not the chess computer with the same name.
+Game 1: Match beginning of a phrase(red button) with end of phrase(yellow button).
+Game 2: Same as game 1, but all in one turn.
+Game 3: Press phrase end buttons, memorize them, press Go and match them.
+
Hardware is an odd combination: MC6805P2 MCU, GI SP0250 speech + 2*TMC0430 GROM.
See patent 4326710 for detailed information, except MC6805 clocked from SP0250 3.12MHz
and GROM clocked by 3.12MHz/8=390kHz.
@@ -23,6 +27,9 @@ TODO:
#include "sound/sp0250.h"
#include "speaker.h"
+// internal artwork
+#include "milton.lh" // clickable
+
namespace {
@@ -86,7 +93,7 @@ READ8_MEMBER(milton_state::data_r)
return 0;
// TMC0430 data
- u8 data = 0xff;
+ u8 data = 0;
m_grom[0]->readz(&data);
m_grom[1]->readz(&data);
return data;
@@ -150,15 +157,15 @@ READ8_MEMBER(milton_state::input_r)
static INPUT_PORTS_START( milton )
PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("Red Button 7")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Red Button 6")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Red Button 5")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Red Button 4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Red Button 7")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Red Button 6")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Red Button 5")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Red Button 4")
PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Red Button 3")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Red Button 2")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Red Button 1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Red Button 3")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Red Button 2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Red Button 1")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Purple Button 1")
PORT_START("IN.2")
@@ -169,15 +176,15 @@ static INPUT_PORTS_START( milton )
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Reset")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Yellow Button 1") // starting at top, then clockwise
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Yellow Button 2")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Yellow Button 3")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Yellow Button 1") // starting at top, then clockwise
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Yellow Button 2")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Yellow Button 3")
PORT_START("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Yellow Button 4")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Yellow Button 5")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Yellow Button 6")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Yellow Button 7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Yellow Button 4")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Yellow Button 5")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Yellow Button 6")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("Yellow Button 7")
INPUT_PORTS_END
@@ -203,6 +210,8 @@ void milton_state::milton(machine_config &config)
gromclock.signal_handler().set(m_grom[0], FUNC(tmc0430_device::gclock_in));
gromclock.signal_handler().append(m_grom[1], FUNC(tmc0430_device::gclock_in));
+ config.set_default_layout(layout_milton);
+
/* sound hardware */
SPEAKER(config, "speaker").front_center();
SP0250(config, m_speech, 3.12_MHz_XTAL).add_route(ALL_OUTPUTS, "speaker", 1.0);
@@ -218,7 +227,7 @@ ROM_START( milton )
ROM_REGION( 0x800, "maincpu", 0 )
ROM_LOAD("sc87008p_783-4043-001", 0x000, 0x800, CRC(b054dbea) SHA1(b5339c8170e773b68505c3d60dc75249a583d60a) )
- ROM_REGION( 0x4000, "groms", ROMREGION_ERASEFF )
+ ROM_REGION( 0x4000, "groms", ROMREGION_ERASE00 )
ROM_LOAD("4043-003", 0x0000, 0x1800, CRC(d95df757) SHA1(6723480866f6393d310e304ef3b61e3a319a7beb) )
ROM_LOAD("4043-004", 0x2000, 0x1800, CRC(9ac929f7) SHA1(1a27d56fc49eb4e58ea3b5c58d7fbedc5a751592) )
ROM_END
@@ -232,4 +241,4 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-CONS( 1980, milton, 0, 0, milton, milton, milton_state, empty_init, "Milton Bradley", "Electronic Milton", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, milton, 0, 0, milton, milton, milton_state, empty_init, "Milton Bradley", "Electronic Milton", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/layout/milton.lay b/src/mame/layout/milton.lay
new file mode 100644
index 00000000000..6333d904428
--- /dev/null
+++ b/src/mame/layout/milton.lay
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="white"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element>
+ <element name="disk_red"><disk><color red="0.9" green="0.1" blue="0.12" /></disk></element>
+ <element name="disk_purple"><disk><color red="0.6" green="0.1" blue="0.7" /></disk></element>
+ <element name="disk_yellow"><disk><color red="0.9" green="0.9" blue="0.15" /></disk></element>
+ <element name="disk_green"><disk><color red="0.1" green="0.7" blue="0.3" /></disk></element>
+
+ <element name="text_p1">
+ <disk><color red="0.6" green="0.1" blue="0.7" /></disk>
+ <text string="1"><color red="0.95" green="0.95" blue="0.95" /></text>
+ </element>
+ <element name="text_p2">
+ <disk><color red="0.6" green="0.1" blue="0.7" /></disk>
+ <text string="2"><color red="0.95" green="0.95" blue="0.95" /></text>
+ </element>
+ <element name="text_p3">
+ <disk><color red="0.6" green="0.1" blue="0.7" /></disk>
+ <text string="3"><color red="0.95" green="0.95" blue="0.95" /></text>
+ </element>
+
+ <element name="text_g1">
+ <rect><color red="0.1" green="0.7" blue="0.3" /></rect>
+ <text string="GO"><color red="0.95" green="0.95" blue="0.95" /></text>
+ </element>
+ <element name="text_g2">
+ <rect><color red="0.1" green="0.7" blue="0.3" /></rect>
+ <text string="SCORE"><color red="0.95" green="0.95" blue="0.95" /></text>
+ </element>
+ <element name="text_g3">
+ <rect><color red="0.1" green="0.7" blue="0.3" /></rect>
+ <text string="RESET"><color red="0.95" green="0.95" blue="0.95" /></text>
+ </element>
+
+ <element name="hl" defstate="0">
+ <text string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
+ <disk state="1"><color red="0.0" green="0.0" blue="0.0" /></disk>
+ </element>
+
+ <element name="led" defstate="0">
+ <disk state="0"><color red="0.2" green="0.04" blue="0.05" /></disk>
+ <disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="6.95" top="-0.3" bottom="10.7" />
+
+ <bezel element="white"><bounds x="0" y="4.4" width="6.95" height="0.3" /></bezel>
+ <bezel element="white"><bounds x="0" y="5.7" width="6.95" height="0.3" /></bezel>
+ <bezel name="led" element="led"><bounds x="2.7" y="5.05" width="0.3" height="0.3" /></bezel>
+ <bezel name="led" element="led"><bounds x="3.95" y="5.05" width="0.3" height="0.3" /></bezel>
+
+ <bezel element="disk_red"><bounds x="3" y="0" width="1" height="1" /></bezel>
+ <bezel element="disk_red"><bounds x="4.2" y="0" width="1" height="1" /></bezel>
+ <bezel element="disk_red"><bounds x="2.25" y="0.98" width="1" height="1" /></bezel>
+ <bezel element="disk_red"><bounds x="4.95" y="0.98" width="1" height="1" /></bezel>
+ <bezel element="disk_red"><bounds x="2.5" y="2.17" width="1" height="1" /></bezel>
+ <bezel element="disk_red"><bounds x="4.7" y="2.17" width="1" height="1" /></bezel>
+ <bezel element="disk_red"><bounds x="3.6" y="2.7" width="1" height="1" /></bezel>
+
+ <bezel element="disk_purple"><bounds x="1" y="0.5" width="1" height="1" /></bezel>
+ <bezel element="disk_purple"><bounds x="1" y="1.7" width="1" height="1" /></bezel>
+ <bezel element="disk_purple"><bounds x="1" y="2.9" width="1" height="1" /></bezel>
+ <bezel element="text_p1"><bounds x="1.3" y="0.65" width="0.65" height="0.7" /></bezel>
+ <bezel element="text_p2"><bounds x="1.3" y="1.85" width="0.65" height="0.7" /></bezel>
+ <bezel element="text_p3"><bounds x="1.3" y="3.05" width="0.65" height="0.7" /></bezel>
+
+ <bezel element="disk_yellow"><bounds x="1.75" y="9.4" width="1" height="1" /></bezel>
+ <bezel element="disk_yellow"><bounds x="2.95" y="9.4" width="1" height="1" /></bezel>
+ <bezel element="disk_yellow"><bounds x="1" y="8.42" width="1" height="1" /></bezel>
+ <bezel element="disk_yellow"><bounds x="3.7" y="8.42" width="1" height="1" /></bezel>
+ <bezel element="disk_yellow"><bounds x="1.25" y="7.23" width="1" height="1" /></bezel>
+ <bezel element="disk_yellow"><bounds x="3.45" y="7.23" width="1" height="1" /></bezel>
+ <bezel element="disk_yellow"><bounds x="2.35" y="6.7" width="1" height="1" /></bezel>
+
+ <bezel element="disk_green"><bounds x="4.95" y="6.5" width="1" height="1" /></bezel>
+ <bezel element="disk_green"><bounds x="4.95" y="7.7" width="1" height="1" /></bezel>
+ <bezel element="disk_green"><bounds x="4.95" y="8.9" width="1" height="1" /></bezel>
+ <bezel element="text_g1"><bounds x="5.05" y="6.85" width="0.8" height="0.3" /></bezel>
+ <bezel element="text_g2"><bounds x="5.05" y="8.05" width="0.8" height="0.3" /></bezel>
+ <bezel element="text_g3"><bounds x="5.05" y="9.25" width="0.8" height="0.3" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="0" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="4.2" y="0" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="2.25" y="0.98" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="4.95" y="0.98" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="2.5" y="2.17" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="4.7" y="2.17" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="3.6" y="2.7" width="1" height="1" /><color alpha="0.25" /></bezel>
+
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="1" y="0.5" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="1" y="1.7" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="1" y="2.9" width="1" height="1" /><color alpha="0.25" /></bezel>
+
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="1.75" y="9.4" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="2.95" y="9.4" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="1" y="8.42" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="3.7" y="8.42" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="1.25" y="7.23" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="3.45" y="7.23" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="2.35" y="6.7" width="1" height="1" /><color alpha="0.25" /></bezel>
+
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="4.95" y="6.5" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="4.95" y="7.7" width="1" height="1" /><color alpha="0.25" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="4.95" y="8.9" width="1" height="1" /><color alpha="0.25" /></bezel>
+
+ </view>
+</mamelayout>