diff options
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 |
commit | fd0d4bf93b801ef6a46146fb9cd850d9680bde5c (patch) | |
tree | ad08234d77a1549a5595f69ac0f125f16033047c | |
parent | 9df2514cea2fd932234100a8f28673be2022f266 (diff) |
milton: add internal artwork (nw)
-rw-r--r-- | src/devices/sound/sp0250.cpp | 41 | ||||
-rw-r--r-- | src/mame/drivers/milton6805.cpp | 43 | ||||
-rw-r--r-- | src/mame/layout/milton.lay | 114 |
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> |