hh_pic16: rename sfxchas to flash (nw)

This commit is contained in:
hap 2020-05-03 19:06:53 +02:00
parent fdc9787c23
commit f908f7f858
12 changed files with 278 additions and 236 deletions

View File

@ -1430,7 +1430,7 @@ void m6801_cpu_device::ocrh_w(uint8_t data)
{
LOGTIMER("Output Compare High Register: %02x\n", data);
if(!(m_pending_tcsr&TCSR_OCF) && !machine().side_effects_disabled())
if(!(m_pending_tcsr&TCSR_OCF))
{
m_tcsr &= ~TCSR_OCF;
modified_tcsr();
@ -1447,7 +1447,7 @@ void m6801_cpu_device::ocrl_w(uint8_t data)
{
LOGTIMER("Output Compare Low Register: %02x\n", data);
if(!(m_pending_tcsr&TCSR_OCF) && !machine().side_effects_disabled())
if(!(m_pending_tcsr&TCSR_OCF))
{
m_tcsr &= ~TCSR_OCF;
modified_tcsr();
@ -1511,7 +1511,7 @@ void hd6301x_cpu_device::ocr2h_w(uint8_t data)
{
LOGTIMER("Output Compare High Register 2: %02x\n", data);
if(!(m_pending_tcsr2&TCSR2_OCF2) && !machine().side_effects_disabled())
if(!(m_pending_tcsr2&TCSR2_OCF2))
{
m_tcsr2 &= ~TCSR2_OCF2;
modified_tcsr();
@ -1528,7 +1528,7 @@ void hd6301x_cpu_device::ocr2l_w(uint8_t data)
{
LOGTIMER("Output Compare Low Register 2: %02x\n", data);
if(!(m_pending_tcsr2&TCSR2_OCF2) && !machine().side_effects_disabled())
if(!(m_pending_tcsr2&TCSR2_OCF2))
{
m_tcsr2 &= ~TCSR2_OCF2;
modified_tcsr();

View File

@ -27,7 +27,7 @@ cc_table_dn = [ "t", "f", "hi", "ls", "cc", "cs", "ne", "eq", "vc", "vs", "pl",
# Probably incorrect starting with the 030 and further
#
# The C code was going out-of-bounds, or more precisely
# out-of-initialization, on the Coldfire, explaning the
# out-of-initialization, on the Coldfire, explaining the
# zeroes.
#
# 000 010 020 030 040 FSCPU32 Coldfire

View File

@ -20,7 +20,7 @@
@053 1655A 1979, Atari Touch Me
@0?? 1655A 1979, Tiger Half Court Computer Basketball/Sears Electronic Basketball (custom label)
@061 1655A 1980, Lakeside Le Boom
@078 1655A 1980, Radio Shack Sound Effects Chassis
@078 1655A 1980, Ideal Flash
*081 1655A 1981, Ramtex Space Invaders/Block Buster
@094 1655A 1980, GAF Melody Madness
@110 1650A 1979, Tiger/Tandy Rocket Pinball
@ -44,7 +44,6 @@
- ttfball: discrete sound part, for volume gating?
- what's the relation between hccbaskb and tbaskb? Is one the bootleg of the
other? Or are they both made by the same subcontractor? I presume Toytronic.
- is sfxchas an import of an existing toy meant for US-market? if so, which?
- uspbball and pabball internal artwork
***************************************************************************/
@ -57,13 +56,13 @@
#include "sound/spkrdev.h"
#include "speaker.h"
#include "flash.lh" // clickable
#include "hccbaskb.lh"
#include "leboom.lh" // clickable
#include "maniac.lh" // clickable
#include "melodym.lh" // clickable
#include "matchme.lh" // clickable
#include "rockpin.lh"
#include "sfxchas.lh" // clickable
#include "tbaskb.lh"
#include "touchme.lh" // clickable
#include "ttfball.lh"
@ -643,6 +642,159 @@ ROM_END
/***************************************************************************
Ideal Flash
* PCB label 25-600321, REV C, TCI-A3H / 94HB
* PIC 1655A-078
* 2 7seg LEDs + 8 other LEDs, 1-bit sound with volume decay
Flash is a wall-mounted game, players throw beanbags to activate the buttons.
It's described in patent US4333657 as an electronic dart game.
In games 4 and 5 it's easy to lock up the program by pressing the buttons
repeatedly and causing a score overflow. Although that wouldn't be possible
by properly throwing beanbags at it.
This could also be purchased as a bare PCB from Radio Shack under the Archer
brand, catalog number 277-1013. It was named "Sound Effects Chassis" but
clearly it's nothing like that. The instruction leaflet that came with the
PCB says to attach a speaker and a 9V power source. It actually takes 5V,
9V would break it. The only thing it has to say about the game itself is
"Your module will produce blinking lights and several different sounds."
***************************************************************************/
class flash_state : public hh_pic16_state
{
public:
flash_state(const machine_config &mconfig, device_type type, const char *tag) :
hh_pic16_state(mconfig, type, tag)
{ }
void update_display();
DECLARE_WRITE8_MEMBER(write_b);
DECLARE_READ8_MEMBER(read_c);
DECLARE_WRITE8_MEMBER(write_c);
void speaker_decay_reset();
TIMER_DEVICE_CALLBACK_MEMBER(speaker_decay_sim);
double m_speaker_volume;
void flash(machine_config &config);
protected:
virtual void machine_start() override;
};
void flash_state::machine_start()
{
hh_pic16_state::machine_start();
// zerofill/init
m_speaker_volume = 0;
save_item(NAME(m_speaker_volume));
}
// handlers
void flash_state::speaker_decay_reset()
{
if (~m_b & 0x40)
m_speaker_volume = 20.0;
// it takes a bit before it actually starts fading
double vol = (m_speaker_volume > 1.0) ? 1.0 : m_speaker_volume;
m_speaker->set_output_gain(0, vol);
}
TIMER_DEVICE_CALLBACK_MEMBER(flash_state::speaker_decay_sim)
{
// volume decays when speaker is off (divisor and timer period determine duration)
speaker_decay_reset();
m_speaker_volume /= 1.15;
}
void flash_state::update_display()
{
m_display->matrix(~m_b >> 4 & 3, (~m_c >> 1 & 0x7f) | (~m_b << 7 & 0x780));
}
WRITE8_MEMBER(flash_state::write_b)
{
// B0-B3: led data
// B4,B5: led select
m_b = data;
update_display();
// B6: speaker on
// B7: speaker out
speaker_decay_reset();
m_speaker->level_w(data >> 7 & 1);
}
READ8_MEMBER(flash_state::read_c)
{
// C1-C7: buttons
return (m_c & 1) ? 0xff : m_inputs[1]->read();
}
WRITE8_MEMBER(flash_state::write_c)
{
// C0: enable buttons
// C1-C7: digit segments
m_c = data;
update_display();
}
// config
static INPUT_PORTS_START( flash )
PORT_START("IN.0") // port A
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // top button, increment clockwise
PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN.1") // port C
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON8 )
INPUT_PORTS_END
void flash_state::flash(machine_config &config)
{
/* basic machine hardware */
PIC1655(config, m_maincpu, 1050000); // approximation
m_maincpu->read_a().set_ioport("IN.0");
m_maincpu->write_b().set(FUNC(flash_state::write_b));
m_maincpu->read_c().set(FUNC(flash_state::read_c));
m_maincpu->write_c().set(FUNC(flash_state::write_c));
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(2, 7+4);
m_display->set_segmask(3, 0x7f);
config.set_default_layout(layout_flash);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
TIMER(config, "speaker_decay").configure_periodic(FUNC(flash_state::speaker_decay_sim), attotime::from_msec(25));
}
// roms
ROM_START( flash )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "pic_1655a-078", 0x0000, 0x0400, CRC(bf780733) SHA1(57ac4620d87492280ab8cf69c148f98e38ecedc4) )
ROM_END
/***************************************************************************
Kingsford Match Me
@ -1078,160 +1230,6 @@ ROM_END
/***************************************************************************
Tandy(Radio Shack division) Sound Effects Chassis
* PCB label 25-600321, REV C, TCI-A3H / 94HB
* PIC 1655A-078
* 2 7seg LEDs + 8 other LEDs, 1-bit sound with volume decay
This could be purchased as a bare PCB from Radio Shack under the Archer
brand, catalog number 277-1013. It was named "Sound Effects Chassis" but
clearly it's nothing like that. More likely, it's a canceled tabletop game,
either custom made for Tandy, or an (as of yet) unknown import.
The bottom-left button selects game type and the bottom-right button selects
number of players. Press the bottom button(IPT_BUTTON5) to start. In games
4 and 5 it's easy to lock up the program by pressing the buttons repeatedly
and causing a score overflow.
The instruction leaflet says to attach a speaker and a 9V power source.
It actually takes 5V, 9V would break it. The only thing it has to say about
the game itself is "Your module will produce blinking lights and several
different sounds."
***************************************************************************/
class sfxchas_state : public hh_pic16_state
{
public:
sfxchas_state(const machine_config &mconfig, device_type type, const char *tag) :
hh_pic16_state(mconfig, type, tag)
{ }
void update_display();
DECLARE_WRITE8_MEMBER(write_b);
DECLARE_READ8_MEMBER(read_c);
DECLARE_WRITE8_MEMBER(write_c);
void speaker_decay_reset();
TIMER_DEVICE_CALLBACK_MEMBER(speaker_decay_sim);
double m_speaker_volume;
void sfxchas(machine_config &config);
protected:
virtual void machine_start() override;
};
void sfxchas_state::machine_start()
{
hh_pic16_state::machine_start();
// zerofill/init
m_speaker_volume = 0;
save_item(NAME(m_speaker_volume));
}
// handlers
void sfxchas_state::speaker_decay_reset()
{
if (~m_b & 0x40)
m_speaker_volume = 20.0;
// it takes a bit before it actually starts fading
double vol = (m_speaker_volume > 1.0) ? 1.0 : m_speaker_volume;
m_speaker->set_output_gain(0, vol);
}
TIMER_DEVICE_CALLBACK_MEMBER(sfxchas_state::speaker_decay_sim)
{
// volume decays when speaker is off (divisor and timer period determine duration)
speaker_decay_reset();
m_speaker_volume /= 1.15;
}
void sfxchas_state::update_display()
{
m_display->matrix(~m_b >> 4 & 3, (~m_c >> 1 & 0x7f) | (~m_b << 7 & 0x780));
}
WRITE8_MEMBER(sfxchas_state::write_b)
{
// B0-B3: led data
// B4,B5: led select
m_b = data;
update_display();
// B6: speaker on
// B7: speaker out
speaker_decay_reset();
m_speaker->level_w(data >> 7 & 1);
}
READ8_MEMBER(sfxchas_state::read_c)
{
// C1-C7: buttons
return (m_c & 1) ? 0xff : m_inputs[1]->read();
}
WRITE8_MEMBER(sfxchas_state::write_c)
{
// C0: enable buttons
// C1-C7: digit segments
m_c = data;
update_display();
}
// config
static INPUT_PORTS_START( sfxchas )
PORT_START("IN.0") // port A
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // top button, increment clockwise
PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN.1") // port C
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON8 )
INPUT_PORTS_END
void sfxchas_state::sfxchas(machine_config &config)
{
/* basic machine hardware */
PIC1655(config, m_maincpu, 1050000); // approximation
m_maincpu->read_a().set_ioport("IN.0");
m_maincpu->write_b().set(FUNC(sfxchas_state::write_b));
m_maincpu->read_c().set(FUNC(sfxchas_state::read_c));
m_maincpu->write_c().set(FUNC(sfxchas_state::write_c));
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(2, 7+4);
m_display->set_segmask(3, 0x7f);
config.set_default_layout(layout_sfxchas);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
TIMER(config, "speaker_decay").configure_periodic(FUNC(sfxchas_state::speaker_decay_sim), attotime::from_msec(25));
}
// roms
ROM_START( sfxchas )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "pic_1655a-078", 0x0000, 0x0400, CRC(bf780733) SHA1(57ac4620d87492280ab8cf69c148f98e38ecedc4) )
ROM_END
/***************************************************************************
Tiger Electronics Rocket Pinball (model 7-460)
@ -1912,13 +1910,13 @@ CONS( 1979, pabball, 0, 0, pabball, pabball, pabball_state, empty_
CONS( 1980, melodym, 0, 0, melodym, melodym, melodym_state, empty_init, "GAF", "Melody Madness", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, maniac, 0, 0, maniac, maniac, maniac_state, empty_init, "Ideal", "Maniac", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1980, flash, 0, 0, flash, flash, flash_state, empty_init, "Ideal", "Flash (Ideal)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1980, matchme, 0, 0, matchme, matchme, matchme_state, empty_init, "Kingsford", "Match Me", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1980, leboom, 0, 0, leboom, leboom, leboom_state, empty_init, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, tbaskb, 0, 0, tbaskb, tbaskb, tbaskb_state, empty_init, "Tandy Corporation", "Electronic Basketball (Tandy)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, sfxchas, 0, 0, sfxchas, sfxchas, sfxchas_state, empty_init, "Tandy Corporation", "Sound Effects Chassis", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, rockpin, 0, 0, rockpin, rockpin, rockpin_state, empty_init, "Tiger Electronics", "Rocket Pinball", MACHINE_SUPPORTS_SAVE )
CONS( 1979, hccbaskb, 0, 0, hccbaskb, hccbaskb, hccbaskb_state, empty_init, "Tiger Electronics", "Half Court Computer Basketball", MACHINE_SUPPORTS_SAVE )

View File

@ -353,7 +353,7 @@ void diablo_state::scorpio68k(machine_config &config)
ROM Definitions
******************************************************************************/
ROM_START( diablo68 ) // UCB ID = D 1.08
ROM_START( diablo68 ) // ID = D 1.08
ROM_REGION16_BE( 0x20000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_BYTE("evenurom.bin", 0x00000, 0x8000, CRC(03477746) SHA1(8bffcb159a61e59bfc45411e319aea6501ebe2f9) )
ROM_LOAD16_BYTE("oddlrom.bin", 0x00001, 0x8000, CRC(e182dbdd) SHA1(24dacbef2173fa737636e4729ff22ec1e6623ca5) )
@ -361,7 +361,7 @@ ROM_START( diablo68 ) // UCB ID = D 1.08
ROM_END
ROM_START( scorpio68 ) // UCB ID = S 1.08
ROM_START( scorpio68 ) // ID = S 1.08
ROM_REGION16_BE( 0x20000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_BYTE("s_evn_904.u3", 0x00000, 0x8000, CRC(a8f63245) SHA1(0ffdc6eb8ecad730440b0bfb2620fb00820e1aea) )
ROM_LOAD16_BYTE("s_odd_c18.u2", 0x00001, 0x8000, CRC(4f033319) SHA1(fce228b1705b7156d4d01ef92b22a875d0f6f321) )

View File

@ -498,14 +498,14 @@ ROM_START( sexpertb ) // from model 887
ROM_LOAD("se_f_hi0_605.u2", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
ROM_END
ROM_START( sexpertc ) // UCB ID = E3.6
ROM_START( sexpertc ) // ID = E3.6
ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD("se_lo_v3.6.u3", 0x0000, 0x8000, CRC(5a29105e) SHA1(be37bb29b530dbba847a5e8d27d81b36525e47f7) )
ROM_LOAD("se_hi1.u1", 0x8000, 0x8000, CRC(0085c2c4) SHA1(d84bf4afb022575db09dd9dc12e9b330acce35fa) )
ROM_LOAD("se_hi0.u2", 0x10000, 0x8000, CRC(2d085064) SHA1(76162322aa7d23a5c07e8356d0bbbb33816419af) )
ROM_END
ROM_START( sexpertc1 ) // from model 902, UCB ID = E3.0
ROM_START( sexpertc1 ) // from model 902, ID = E3.0
ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD("se_c24_l.u3", 0x0000, 0x8000, CRC(43ed7a9e) SHA1(273c485e5be6b107b6c5c448003ba7686d4a6d06) )
ROM_LOAD("se_c23_h1.u1", 0x8000, 0x8000, CRC(0085c2c4) SHA1(d84bf4afb022575db09dd9dc12e9b330acce35fa) )
@ -541,7 +541,7 @@ ROM_START( sforteb )
ROM_LOAD("forte_b_hi0.u2", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
ROM_END
ROM_START( sfortec ) // UCB ID = F1.2
ROM_START( sfortec ) // ID = F1.2
ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD("sfl_c_iii.u3", 0x0000, 0x8000, CRC(f040cf30) SHA1(1fc1220b8ed67cdffa3866d230ce001721cf684f) ) // Toshiba TC57256AD-12
ROM_LOAD("sfh_c_iii.u1", 0x8000, 0x8000, CRC(0f926b32) SHA1(9c7270ecb3f41dd9172a9a7928e6e04e64b2a340) ) // NEC D27C256AD-12

View File

@ -17,7 +17,8 @@ instead of black, otherwise it's the same game.
TODO:
- does not work, most likely due to incomplete cpu emulation (unemulated timer registers),
could also be a bad rom dump on top of that
could also be a bad rom dump on top of that - even when adding IRQ3 with a hack, it
doesn't do much at all
- is 1988 version the same ROM?
******************************************************************************/
@ -106,6 +107,10 @@ void supremo_state::supremo(machine_config &config)
HD6303Y(config, m_maincpu, 8_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &supremo_state::main_map);
// THIS IS A HACK, vector @ 0xffec, use ROM_COPY
//const attotime irq_period = attotime::from_ticks(4 * 128 * 10, 8_MHz_XTAL);
//m_maincpu->set_periodic_int(FUNC(supremo_state::irq0_line_hold), irq_period);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(150));
@ -124,7 +129,7 @@ void supremo_state::supremo(machine_config &config)
ROM_START( supremo )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("sp_a10.u5", 0x8000, 0x8000, CRC(745d010f) SHA1(365a8e2afcf63678ba0161b9082f6439a9d78c9f) )
ROM_LOAD("sp_a10.u5", 0x8000, 0x8000, BAD_DUMP CRC(745d010f) SHA1(365a8e2afcf63678ba0161b9082f6439a9d78c9f) )
ROM_END
} // anonymous namespace

View File

@ -710,14 +710,14 @@ ROM_START(tstrk_l1)
ROM_END
GAME( 1979, flash_l2, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, flash_l1, flash_l2, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, flash_t1, flash_l2, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (T-1) Ted Estes", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, flash_l2, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (Williams, L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, flash_l1, flash_l2, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (Williams, L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, flash_t1, flash_l2, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (Williams, T-1) Ted Estes", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1978, trizn_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Tri Zone (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1978, trizn_t1, trizn_l1, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Tri Zone (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, tmwrp_l3, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, tmwrp_l2, tmwrp_l3, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, tmwrp_t2, tmwrp_l3, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, tmwrp_l3, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (Williams, L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, tmwrp_l2, tmwrp_l3, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (Williams, L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, tmwrp_t2, tmwrp_l3, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (Williams, T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1979, stlwr_l2, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Stellar Wars (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1978, pomp_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)

View File

@ -76,18 +76,13 @@ private:
DECLARE_WRITE8_MEMBER(digit_w);
DECLARE_READ8_MEMBER(input_r);
u16 m_inp_mux;
u8 m_select;
u8 m_7seg_data;
u16 m_inp_mux = 0;
u8 m_select = 0;
u8 m_7seg_data = 0;
};
void cp2000_state::machine_start()
{
// zerofill
m_inp_mux = 0;
m_select = 0;
m_7seg_data = 0;
// register for savestates
save_item(NAME(m_select));
save_item(NAME(m_inp_mux));

View File

@ -4,7 +4,9 @@
/******************************************************************************
SciSys Mini Chess, pocket calculator style chesscomputer
It's the first chess program on HMCS40, the engine was written by Mark Taylor.
It's the first chess program on HMCS40. The engine was written by Mark Taylor
with assistance from David Levy.
Hardware notes:
- Hitachi 44801A34 MCU @ ~400kHz

92
src/mame/layout/flash.lay Normal file
View File

@ -0,0 +1,92 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="disk_b"><disk><color red="0" green="0" blue="0" /></disk></element>
<element name="disk_w"><disk><color red="0.85" green="0.85" blue="0.85" /></disk></element>
<element name="disk_1"><disk><color red="0.75" green="0" blue="0.1" /></disk></element>
<element name="disk_2"><disk><color red="0.2" green="0.7" blue="0.8" /></disk></element>
<element name="disk_3"><disk><color red="0.85" green="0.55" blue="0.25" /></disk></element>
<element name="disk_4"><disk><color red="0.35" green="0.8" blue="0.1" /></disk></element>
<element name="disk_5"><disk><color red="0.85" green="0.3" blue="0.1" /></disk></element>
<element name="disk_6"><disk><color red="0.05" green="0" blue="0.7" /></disk></element>
<element name="disk_7"><disk><color red="0.85" green="0.85" blue="0.2" /></disk></element>
<element name="disk_8"><disk><color red="0" green="0.55" blue="0.2" /></disk></element>
<element name="text_1"><text string="GAME"><color red="0.8" green="0.8" blue="0.8" /></text></element>
<element name="text_2"><text string="START"><color red="0.8" green="0.8" blue="0.8" /></text></element>
<element name="text_3"><text string="PLAYERS"><color red="0.8" green="0.8" blue="0.8" /></text></element>
<element name="digit" defstate="0">
<led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
</element>
<element name="led" defstate="0">
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
</element>
<element name="but" defstate="0">
<text string=" " />
<disk state="1"><color red="0" green="0" blue="0" /></disk>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="22" right="90" top="20.5" bottom="88.5" />
<!-- actually, buttons are pie-slice shaped -->
<bezel element="disk_1"><bounds x="48" y="24.5" width="16" height="16" /></bezel>
<bezel element="disk_2"><bounds x="64" y="30.5" width="16" height="16" /></bezel>
<bezel element="disk_3"><bounds x="70" y="46.5" width="16" height="16" /></bezel>
<bezel element="disk_4"><bounds x="64" y="62.5" width="16" height="16" /></bezel>
<bezel element="disk_5"><bounds x="48" y="68.5" width="16" height="16" /></bezel>
<bezel element="disk_6"><bounds x="32" y="62.5" width="16" height="16" /></bezel>
<bezel element="disk_7"><bounds x="26" y="46.5" width="16" height="16" /></bezel>
<bezel element="disk_8"><bounds x="32" y="30.5" width="16" height="16" /></bezel>
<bezel element="disk_w"><bounds x="53.5" y="30" width="5" height="5" /></bezel>
<bezel element="disk_w"><bounds x="69.5" y="36" width="5" height="5" /></bezel>
<bezel element="disk_w"><bounds x="75.5" y="52" width="5" height="5" /></bezel>
<bezel element="disk_w"><bounds x="69.5" y="68" width="5" height="5" /></bezel>
<bezel element="disk_w"><bounds x="53.5" y="74" width="5" height="5" /></bezel>
<bezel element="disk_w"><bounds x="37.5" y="68" width="5" height="5" /></bezel>
<bezel element="disk_w"><bounds x="31.5" y="52" width="5" height="5" /></bezel>
<bezel element="disk_w"><bounds x="37.5" y="36" width="5" height="5" /></bezel>
<bezel name="0.7" element="led"><bounds x="55" y="31.5" width="2" height="2" /></bezel>
<bezel name="0.8" element="led"><bounds x="71" y="37.5" width="2" height="2" /></bezel>
<bezel name="0.9" element="led"><bounds x="77" y="53.5" width="2" height="2" /></bezel>
<bezel name="0.10" element="led"><bounds x="71" y="69.5" width="2" height="2" /></bezel>
<bezel name="1.7" element="led"><bounds x="55" y="75.5" width="2" height="2" /></bezel>
<bezel name="1.8" element="led"><bounds x="39" y="69.5" width="2" height="2" /></bezel>
<bezel name="1.9" element="led"><bounds x="33" y="53.5" width="2" height="2" /></bezel>
<bezel name="1.10" element="led"><bounds x="39" y="37.5" width="2" height="2" /></bezel>
<bezel element="but" inputtag="IN.0" inputmask="0x01"><bounds x="48" y="24.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="but" inputtag="IN.1" inputmask="0x02"><bounds x="64" y="30.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="but" inputtag="IN.1" inputmask="0x04"><bounds x="70" y="46.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="but" inputtag="IN.1" inputmask="0x08"><bounds x="64" y="62.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="but" inputtag="IN.1" inputmask="0x10"><bounds x="48" y="68.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="but" inputtag="IN.1" inputmask="0x20"><bounds x="32" y="62.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="but" inputtag="IN.1" inputmask="0x40"><bounds x="26" y="46.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="but" inputtag="IN.1" inputmask="0x80"><bounds x="32" y="30.5" width="16" height="16" /><color alpha="0.17" /></bezel>
<bezel element="disk_b"><bounds x="40" y="38.5" width="32" height="32" /></bezel>
<bezel element="disk_w"><bounds x="43" y="41.5" width="26" height="26" /></bezel>
<bezel element="disk_b"><bounds x="44" y="42.5" width="24" height="24" /></bezel>
<bezel name="digit1" element="digit"><bounds x="50" y="50" width="6" height="9" /></bezel>
<bezel name="digit0" element="digit"><bounds x="56" y="50" width="6" height="9" /></bezel>
<bezel element="text_1"><bounds x="32" y="79" width="16" height="2" /></bezel>
<bezel element="text_2"><bounds x="48" y="85" width="16" height="2" /></bezel>
<bezel element="text_3"><bounds x="64" y="79" width="16" height="2" /></bezel>
</view>
</mamelayout>

View File

@ -1,50 +0,0 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="digit" defstate="0">
<led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
</element>
<element name="led" defstate="0">
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
</element>
<element name="but" defstate="0">
<disk state="0"><color red="0.09" green="0.09" blue="0.1" /></disk>
<disk state="1"><color red="0.18" green="0.18" blue="0.2" /></disk>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="28" right="84" top="26.5" bottom="82.5" />
<element name="digit1" ref="digit"><bounds x="50" y="50" width="6" height="9" /></element>
<element name="digit0" ref="digit"><bounds x="56" y="50" width="6" height="9" /></element>
<element name="0.7" ref="led"><bounds x="55" y="31.5" width="2" height="2" /></element>
<element name="0.8" ref="led"><bounds x="71" y="37.5" width="2" height="2" /></element>
<element name="0.9" ref="led"><bounds x="77" y="53.5" width="2" height="2" /></element>
<element name="0.10" ref="led"><bounds x="71" y="69.5" width="2" height="2" /></element>
<element name="1.7" ref="led"><bounds x="55" y="75.5" width="2" height="2" /></element>
<element name="1.8" ref="led"><bounds x="39" y="69.5" width="2" height="2" /></element>
<element name="1.9" ref="led"><bounds x="33" y="53.5" width="2" height="2" /></element>
<element name="1.10" ref="led"><bounds x="39" y="37.5" width="2" height="2" /></element>
<element ref="but" blend="add" inputtag="IN.0" inputmask="0x01"><bounds x="52" y="28.5" width="8" height="8" /></element>
<element ref="but" blend="add" inputtag="IN.1" inputmask="0x02"><bounds x="68" y="34.5" width="8" height="8" /></element>
<element ref="but" blend="add" inputtag="IN.1" inputmask="0x04"><bounds x="74" y="50.5" width="8" height="8" /></element>
<element ref="but" blend="add" inputtag="IN.1" inputmask="0x08"><bounds x="68" y="66.5" width="8" height="8" /></element>
<element ref="but" blend="add" inputtag="IN.1" inputmask="0x10"><bounds x="52" y="72.5" width="8" height="8" /></element>
<element ref="but" blend="add" inputtag="IN.1" inputmask="0x20"><bounds x="36" y="66.5" width="8" height="8" /></element>
<element ref="but" blend="add" inputtag="IN.1" inputmask="0x40"><bounds x="30" y="50.5" width="8" height="8" /></element>
<element ref="but" blend="add" inputtag="IN.1" inputmask="0x80"><bounds x="36" y="34.5" width="8" height="8" /></element>
</view>
</mamelayout>

View File

@ -15817,6 +15817,7 @@ cfrogger // Coleco
gjungler // Gakken
@source:hh_pic16.cpp
flash // Ideal
hccbaskb // Tiger Electronics
leboom // Lakeside
maniac // Ideal
@ -15824,7 +15825,6 @@ melodym // GAF
matchme // Kingsford
pabball // Caprice
rockpin // Tiger Electronics
sfxchas // Tandy Corporation
tbaskb // Tandy Corporation
touchme // Atari
ttfball // Toytronic