New working machines

-----------
Gakken Invader 2000 [hap, Sean Riddle]
This commit is contained in:
hap 2017-12-07 02:44:50 +01:00
parent 46edbee6ed
commit 76bd4b9b3f
7 changed files with 271 additions and 119 deletions

View File

@ -18,7 +18,7 @@
DEFINE_DEVICE_TYPE(TMS1100, tms1100_cpu_device, "tms1100", "TMS1100") // 28-pin DIP, 11 R pins
DEFINE_DEVICE_TYPE(TMS1170, tms1170_cpu_device, "tms1170", "TMS1170") // high voltage version
DEFINE_DEVICE_TYPE(TMS1300, tms1300_cpu_device, "tms1300", "TMS1300") // 40-pin DIP, 16 R pins
DEFINE_DEVICE_TYPE(TMS1370, tms1370_cpu_device, "tms1370", "TMS1370") // high voltage version
DEFINE_DEVICE_TYPE(TMS1370, tms1370_cpu_device, "tms1370", "TMS1370") // high voltage version, also seen in 28-pin package(some O/R pins unavailable)
// internal memory maps

View File

@ -85,7 +85,7 @@
On MAME they will show with full brightness, see eg. building explosions.
Currently there's a workaround in place.
- bzaxxon 3D effect is difficult to simulate
- improve SVGs of bzaxxon, bpengo, bbtime
- improve/redo SVGs of: bzaxxon, bpengo, bbtime
***************************************************************************/
@ -370,7 +370,7 @@ public:
WRITE8_MEMBER(bambball_state::plate_w)
{
// R1x-R3x(,D0-D3): vfd matrix plate
// R1x-R3x(,D0-D3): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -387,7 +387,7 @@ WRITE16_MEMBER(bambball_state::grid_w)
// D7-D10: input mux
m_inp_mux = data >> 7 & 0xf;
// D7-D15: vfd matrix grid
// D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D0-D3: more plates (update display there)
@ -491,7 +491,7 @@ void bmboxing_state::prepare_display()
WRITE8_MEMBER(bmboxing_state::plate_w)
{
// R1x-R3x: vfd matrix plate
// R1x-R3x: vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -505,7 +505,7 @@ WRITE16_MEMBER(bmboxing_state::grid_w)
// D9-D12: input mux
m_inp_mux = data >> 9 & 0xf;
// D4-D12: vfd matrix grid
// D4-D12: vfd grid
m_grid = data >> 4 & 0x1ff;
prepare_display();
}
@ -630,7 +630,7 @@ void bfriskyt_state::prepare_display()
WRITE8_MEMBER(bfriskyt_state::plate_w)
{
// R0x-R3x: vfd matrix plate
// R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -649,7 +649,7 @@ WRITE16_MEMBER(bfriskyt_state::grid_w)
update_int1();
}
// D8-D15: vfd matrix grid
// D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0-D5: more plates
@ -750,7 +750,7 @@ public:
WRITE8_MEMBER(packmon_state::plate_w)
{
// R0x-R3x(,D0-D3): vfd matrix plate
// R0x-R3x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -768,7 +768,7 @@ WRITE16_MEMBER(packmon_state::grid_w)
// D11-D15: input mux
m_inp_mux = data >> 11 & 0x1f;
// D6-D15: vfd matrix grid
// D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D3: plate 9-12 (update display there)
@ -872,7 +872,7 @@ void msthawk_state::prepare_display()
WRITE8_MEMBER(msthawk_state::plate_w)
{
// R0x-R3x: vfd matrix plate
// R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -891,7 +891,7 @@ WRITE16_MEMBER(msthawk_state::grid_w)
update_int0();
}
// D6-D15: vfd matrix grid
// D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D4: more plates
@ -992,7 +992,7 @@ public:
WRITE8_MEMBER(bzaxxon_state::plate_w)
{
// R0x-R3x(,D0-D2): vfd matrix plate
// R0x-R3x(,D0-D2): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -1015,7 +1015,7 @@ WRITE16_MEMBER(bzaxxon_state::grid_w)
update_int1();
}
// D5-D15: vfd matrix grid
// D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D0-D2: plate 7-9 (update display there)
@ -1112,7 +1112,7 @@ public:
WRITE8_MEMBER(zackman_state::plate_w)
{
// R0x-R6x(,D0,D1): vfd matrix plate
// R0x-R6x(,D0,D1): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -1135,7 +1135,7 @@ WRITE16_MEMBER(zackman_state::grid_w)
update_int0();
}
// D8-D15: vfd matrix grid
// D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0,D1: plate 12,13 (update display there)
@ -1239,7 +1239,7 @@ void bpengo_state::prepare_display()
WRITE8_MEMBER(bpengo_state::plate_w)
{
// R0x-R6x: vfd matrix plate
// R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1258,7 +1258,7 @@ WRITE16_MEMBER(bpengo_state::grid_w)
update_int0();
}
// D0-D7: vfd matrix grid
// D0-D7: vfd grid
m_grid = data & 0xff;
prepare_display();
}
@ -1367,7 +1367,7 @@ void bbtime_state::prepare_display()
WRITE8_MEMBER(bbtime_state::plate_w)
{
// R0x-R6x: vfd matrix plate
// R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1386,7 +1386,7 @@ WRITE16_MEMBER(bbtime_state::grid_w)
update_int0();
}
// D4-D9: vfd matrix grid
// D4-D9: vfd grid
m_grid = data >> 4 & 0x3f;
prepare_display();
}
@ -1480,7 +1480,7 @@ public:
WRITE8_MEMBER(bdoramon_state::plate_w)
{
// R0x-R3x(,D0-D3): vfd matrix plate
// R0x-R3x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -1495,7 +1495,7 @@ WRITE16_MEMBER(bdoramon_state::grid_w)
// D7: speaker out
m_speaker->level_w(data >> 7 & 1);
// D8-D15: vfd matrix grid
// D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0-D3: plate 15-18 (update display there)
@ -1579,7 +1579,7 @@ public:
WRITE8_MEMBER(bultrman_state::plate_w)
{
// R0x-R3x(,D0-D2): vfd matrix plate
// R0x-R3x(,D0-D2): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -1594,7 +1594,7 @@ WRITE16_MEMBER(bultrman_state::grid_w)
// D7: speaker out
m_speaker->level_w(data >> 7 & 1);
// D8-D15: vfd matrix grid
// D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0-D2: plate 15-17 (update display there)
@ -1678,7 +1678,7 @@ void machiman_state::prepare_display()
WRITE8_MEMBER(machiman_state::plate_w)
{
// R0x-R3x,R6012: vfd matrix plate
// R0x-R3x,R6012: vfd plate
int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 16 : offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1689,7 +1689,7 @@ WRITE16_MEMBER(machiman_state::grid_w)
// D13: speaker out
m_speaker->level_w(data >> 13 & 1);
// D0-D4: vfd matrix grid
// D0-D4: vfd grid
m_grid = data & 0x1f;
prepare_display();
}
@ -1771,7 +1771,7 @@ public:
WRITE8_MEMBER(pairmtch_state::plate_w)
{
// R2x,R3x,R6x: vfd matrix plate
// R2x,R3x,R6x: vfd plate
int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 8 : (offset-2) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
display_matrix(12, 6, m_plate, m_grid);
@ -1788,7 +1788,7 @@ WRITE16_MEMBER(pairmtch_state::grid_w)
// D10,D15: input mux
m_inp_mux = (data >> 10 & 1) | (data >> 14 & 2);
// D0-D5: vfd matrix grid
// D0-D5: vfd grid
m_grid = data & 0x3f;
display_matrix(12, 6, m_plate, m_grid);
}
@ -1919,7 +1919,7 @@ public:
WRITE8_MEMBER(alnattck_state::plate_w)
{
// R0x-R3x(,D0-D3): vfd matrix plate
// R0x-R3x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -1936,7 +1936,7 @@ WRITE16_MEMBER(alnattck_state::grid_w)
// D7-D13: input mux
m_inp_mux = data >> 7 & 0x7f;
// D6-D15: vfd matrix grid
// D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D3: plate 16-19 (update display there)
@ -2064,7 +2064,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
m_r[offset] = data;
speaker_decay_reset();
// R0x-R6x: vfd matrix plate
// R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2075,7 +2075,7 @@ WRITE16_MEMBER(cdkong_state::grid_w)
// D3: speaker out
m_speaker->level_w(data >> 3 & 1);
// D4-D14: vfd matrix grid
// D4-D14: vfd grid
m_grid = data >> 4 & 0x7ff;
prepare_display();
}
@ -2183,7 +2183,7 @@ WRITE8_MEMBER(cgalaxn_state::grid_w)
if (offset == hmcs40_cpu_device::PORT_R1X)
m_inp_mux = data & 3;
// R1x-R3x: vfd matrix grid
// R1x-R3x: vfd grid
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2196,7 +2196,7 @@ WRITE16_MEMBER(cgalaxn_state::plate_w)
// D1: start alien attack whine sound effect (edge triggered)
// D2-D15: vfd matrix plate
// D2-D15: vfd plate
m_plate = (m_plate & 0x4000) | (data >> 2 & 0x3fff);
prepare_display();
}
@ -2302,7 +2302,7 @@ public:
WRITE8_MEMBER(cpacman_state::plate_w)
{
// R1x-R6x(,D1,D2): vfd matrix plate
// R1x-R6x(,D1,D2): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -2320,7 +2320,7 @@ WRITE16_MEMBER(cpacman_state::grid_w)
// D13-D15: input mux
m_inp_mux = data >> 13 & 7;
// D5-D15: vfd matrix grid
// D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D1,D2: plate 8,14 (update display there)
@ -2419,7 +2419,7 @@ public:
WRITE8_MEMBER(cmspacmn_state::plate_w)
{
// R1x-R6x(,D0,D1): vfd matrix plate
// R1x-R6x(,D0,D1): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -2437,7 +2437,7 @@ WRITE16_MEMBER(cmspacmn_state::grid_w)
// D13-D15: input mux
m_inp_mux = data >> 13 & 7;
// D5-D15: vfd matrix grid
// D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D0,D1: more plates (update display there)
@ -2550,7 +2550,7 @@ void sag_state::prepare_display()
WRITE8_MEMBER(sag_state::plate_w)
{
// R0x-R3x: vfd matrix plate
// R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2564,7 +2564,7 @@ WRITE16_MEMBER(sag_state::grid_w)
// D2-D7: input mux
m_inp_mux = data >> 2 & 0x3f;
// D1-D12: vfd matrix grid
// D1-D12: vfd grid
m_grid = data >> 1 & 0xfff;
prepare_display();
}
@ -2683,14 +2683,14 @@ WRITE16_MEMBER(egalaxn2_state::grid_w)
// D1-D4: input mux
m_inp_mux = data >> 1 & 0xf;
// D1-D15: vfd matrix grid
// D1-D15: vfd grid
m_grid = data >> 1 & 0x7fff;
prepare_display();
}
WRITE8_MEMBER(egalaxn2_state::plate_w)
{
// R1x-R6x: vfd matrix plate
// R1x-R6x: vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2879,7 +2879,7 @@ WRITE8_MEMBER(eturtles_state::plate_w)
{
m_r[offset] = data;
// R0x-R6x: vfd matrix plate
// R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2897,7 +2897,7 @@ WRITE16_MEMBER(eturtles_state::grid_w)
update_int();
}
// D1-D15: vfd matrix grid
// D1-D15: vfd grid
m_grid = data >> 1 & 0x7fff;
prepare_display();
}
@ -3161,7 +3161,7 @@ public:
WRITE8_MEMBER(ghalien_state::plate_w)
{
// R0x-R3x(,D10-D13): vfd matrix plate
// R0x-R3x(,D10-D13): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -3179,7 +3179,7 @@ WRITE16_MEMBER(ghalien_state::grid_w)
// D0-D6: input mux
m_inp_mux = data & 0x7f;
// D0-D9: vfd matrix grid
// D0-D9: vfd grid
m_grid = data & 0x3ff;
// D10-D13: more plates (update display there)
@ -3280,7 +3280,7 @@ public:
WRITE8_MEMBER(gckong_state::plate_w)
{
// R0x-R3x(,D0,D1): vfd matrix plate
// R0x-R3x(,D0,D1): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -3303,7 +3303,7 @@ WRITE16_MEMBER(gckong_state::grid_w)
update_int1();
}
// D5-D15: vfd matrix grid
// D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D0,D1: more plates (update display there)
@ -3403,7 +3403,7 @@ public:
WRITE8_MEMBER(gdigdug_state::plate_w)
{
// R0x-R6x(,D0-D3): vfd matrix plate
// R0x-R6x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -3425,7 +3425,7 @@ WRITE16_MEMBER(gdigdug_state::grid_w)
update_int1();
}
// D7-D15: vfd matrix grid
// D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D0-D3: more plates (update display there)
@ -3534,7 +3534,7 @@ void mwcbaseb_state::prepare_display()
WRITE8_MEMBER(mwcbaseb_state::plate_w)
{
// R1x-R3x,R6x: vfd matrix plate
// R1x-R3x,R6x: vfd plate
int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 12 : (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -3545,7 +3545,7 @@ WRITE16_MEMBER(mwcbaseb_state::grid_w)
// D9-D15: input mux
m_inp_mux = data >> 9 & 0x7f;
// D0-D7: vfd matrix grid
// D0-D7: vfd grid
m_grid = data & 0xff;
prepare_display();
}
@ -3683,7 +3683,7 @@ public:
WRITE8_MEMBER(pbqbert_state::plate_w)
{
// R0x-R6x(,D8): vfd matrix plate
// R0x-R6x(,D8): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -3697,7 +3697,7 @@ WRITE16_MEMBER(pbqbert_state::grid_w)
// D14: speaker out
m_speaker->level_w(data >> 14 & 1);
// D0-D7: vfd matrix grid
// D0-D7: vfd grid
m_grid = data & 0xff;
// D8: plate 25 (update display there)
@ -3783,7 +3783,7 @@ void kingman_state::prepare_display()
WRITE8_MEMBER(kingman_state::plate_w)
{
// R0x-R3x: vfd matrix plate
// R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -3802,7 +3802,7 @@ WRITE16_MEMBER(kingman_state::grid_w)
update_int0();
}
// D7-D15: vfd matrix grid
// D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D0-D4: more plates
@ -3904,7 +3904,7 @@ void tmtron_state::prepare_display()
WRITE8_MEMBER(tmtron_state::plate_w)
{
// R0x-R3x: vfd matrix plate
// R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -3923,7 +3923,7 @@ WRITE16_MEMBER(tmtron_state::grid_w)
update_int1();
}
// D6-D15: vfd matrix grid
// D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D3,D5: more plates
@ -4018,7 +4018,7 @@ public:
WRITE8_MEMBER(vinvader_state::plate_w)
{
// R1x-R3x(,D4-D6): vfd matrix plate
// R1x-R3x(,D4-D6): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -4032,7 +4032,7 @@ WRITE16_MEMBER(vinvader_state::grid_w)
// D0: speaker out
m_speaker->level_w(data & 1);
// D7-D15: vfd matrix grid
// D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D4-D6: more plates (update display there)
@ -4147,7 +4147,7 @@ ROM_START( bzaxxon )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 521080, "svg", 0)
ROM_LOAD( "bzaxxon.svg", 0, 521080, CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
ROM_LOAD( "bzaxxon.svg", 0, 521080, BAD_DUMP CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
ROM_END
@ -4167,7 +4167,7 @@ ROM_START( bpengo )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 744461, "svg", 0)
ROM_LOAD( "bpengo.svg", 0, 744461, CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
ROM_LOAD( "bpengo.svg", 0, 744461, BAD_DUMP CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
ROM_END
@ -4177,7 +4177,7 @@ ROM_START( bbtime )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 461605, "svg", 0)
ROM_LOAD( "bbtime.svg", 0, 461605, CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
ROM_LOAD( "bbtime.svg", 0, 461605, BAD_DUMP CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
ROM_END

View File

@ -246,7 +246,7 @@ WRITE8_MEMBER(cfrogger_state::plate_w)
if (offset == MELPS4_PORTF)
m_inp_mux = data & 3;
// Sx,Fx,Gx: vfd matrix plate
// Sx,Fx,Gx: vfd plate
int mask = (offset == MELPS4_PORTS) ? 0xff : 0xf; // port S is 8-bit
int shift = (offset == MELPS4_PORTS) ? 0 : (offset + 1) * 4;
m_plate = (m_plate & ~(mask << shift)) | (data << shift);
@ -255,7 +255,7 @@ WRITE8_MEMBER(cfrogger_state::plate_w)
WRITE16_MEMBER(cfrogger_state::grid_w)
{
// D0-D11: vfd matrix grid
// D0-D11: vfd grid
m_grid = data;
prepare_display();
}
@ -362,7 +362,7 @@ WRITE8_MEMBER(gjungler_state::plate_w)
if (offset == MELPS4_PORTG)
m_inp_mux = data & 3;
// Sx,Fx,Gx,U: vfd matrix plate
// Sx,Fx,Gx,U: vfd plate
int mask = (offset == MELPS4_PORTS) ? 0xff : 0xf; // port S is 8-bit
int shift = (offset == MELPS4_PORTS) ? 0 : (offset + 1) * 4;
m_plate = (m_plate & ~(mask << shift)) | (data << shift);
@ -371,7 +371,7 @@ WRITE8_MEMBER(gjungler_state::plate_w)
WRITE16_MEMBER(gjungler_state::grid_w)
{
// D0-D11: vfd matrix grid
// D0-D11: vfd grid
m_grid = data;
prepare_display();
}

View File

@ -11,7 +11,7 @@
MAME external artwork is recommended for the backgrounds inlays.
TODO:
- improve LCD segments in SVGs for: gnw_mc25, gnw_eg26, exospace
- improve/redo SVGs of: gnw_mc25, gnw_eg26, exospace
- confirm gnw_mc25/gnw_eg26 rom (dumped from Soviet clone, but pretty confident that it's same)
***************************************************************************/
@ -2677,7 +2677,7 @@ ROM_START( gnw_mc25 )
ROM_LOAD( "mc-25", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
ROM_REGION( 102453, "svg", 0)
ROM_LOAD( "gnw_mc25.svg", 0, 102453, CRC(88cc7c49) SHA1(c000d51d1b99750116b97f9bafc0314ea506366d) )
ROM_LOAD( "gnw_mc25.svg", 0, 102453, BAD_DUMP CRC(88cc7c49) SHA1(c000d51d1b99750116b97f9bafc0314ea506366d) )
ROM_END
ROM_START( gnw_eg26 )
@ -2685,7 +2685,7 @@ ROM_START( gnw_eg26 )
ROM_LOAD( "eg-26", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
ROM_REGION( 102848, "svg", 0)
ROM_LOAD( "gnw_eg26.svg", 0, 102848, CRC(742c2605) SHA1(984d430ad2ff47ad7a3f9b25b7d3f3d51b10cca5) )
ROM_LOAD( "gnw_eg26.svg", 0, 102848, BAD_DUMP CRC(742c2605) SHA1(984d430ad2ff47ad7a3f9b25b7d3f3d51b10cca5) )
ROM_END
ROM_START( nupogodi )
@ -2701,7 +2701,7 @@ ROM_START( exospace )
ROM_LOAD( "exospace.bin", 0x0000, 0x0740, CRC(553e2b09) SHA1(2b74f8437b881fbb62b61f25435a5bfc66872a9a) )
ROM_REGION( 66790, "svg", 0)
ROM_LOAD( "exospace.svg", 0, 66790, CRC(df31043a) SHA1(2d8caf42894df699e469652e5f448beaebbcc1ae) )
ROM_LOAD( "exospace.svg", 0, 66790, BAD_DUMP CRC(df31043a) SHA1(2d8caf42894df699e469652e5f448beaebbcc1ae) )
ROM_END
@ -2811,8 +2811,8 @@ ROM_START( taltbeast )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "m88", 0x0000, 0x1000, CRC(1b3d15e7) SHA1(78371230dff872d6c07eefdbc4856c2a3336eb61) )
ROM_REGION( 668221, "svg", 0)
ROM_LOAD( "taltbeast.svg", 0, 668221, CRC(9b41b5b9) SHA1(4c520f917572894a2f0ab92efbd344c6bc6deccc) )
ROM_REGION( 667887, "svg", 0)
ROM_LOAD( "taltbeast.svg", 0, 667887, CRC(1ca9bbf1) SHA1(be844dddee4a95f70ea2adf875d3ee6cda2a6633) )
ROM_END

View File

@ -53,10 +53,10 @@
@MP1312 TMS1100 1983, Gakken FX-Micom R-165/Tandy Radio Shack Science Fair Microcomputer Trainer
*MP1359 TMS1100? 1985, Capsela CRC2000
@MP1525 TMS1170 1980, Coleco Head to Head Baseball
*MP1604 TMS1370 1982, Gakken Invader 2000/Tandy Cosmic Fire Away 3000
@MP1604 TMS1370 1982, Gakken Invader 2000/Tandy Cosmic Fire Away 3000
@MP1801 TMS1700 1981, Tiger Ditto/Tandy Pocket Repeat (model 60-2152)
@MP2105 TMS1370 1979, Gakken/Entex Poker (6005)
@MP2139 TMS1370 1982, Gakken Galaxy Invader 1000/Tandy Cosmic 1000 Fire Away
@MP2139 TMS1370 1981, Gakken Galaxy Invader 1000/Tandy Cosmic 1000 Fire Away
@MP2726 TMS1040 1979, Tomy Break Up
*MP2788 TMS1040? 1980, Bandai Flight Time (? note: VFD-capable)
@MP3005 TMS1730 1989, Tiger Copy Cat (model 7-522)
@ -4398,8 +4398,8 @@ WRITE16_MEMBER(ginv1000_state::write_r)
// R8,R15: input mux
m_inp_mux = (data >> 8 & 1) | (data >> 14 & 2);
// R1-R10: VFD matrix grid
// R11-R14: VFD matrix plate
// R1-R10: VFD grid
// R11-R14: VFD plate
m_grid = data >> 1 & 0x3ff;
m_plate = (m_plate & 0xff) | (data >> 3 & 0xf00);
prepare_display();
@ -4407,14 +4407,14 @@ WRITE16_MEMBER(ginv1000_state::write_r)
WRITE16_MEMBER(ginv1000_state::write_o)
{
// O0-O7: VFD matrix plate
// O0-O7: VFD plate
m_plate = (m_plate & ~0xff) | data;
prepare_display();
}
READ8_MEMBER(ginv1000_state::read_k)
{
// K: multiplexed inputs (K8 is fire button)
// K1,K2: multiplexed inputs (K8 is fire button)
return m_inp_matrix[2]->read() | read_inputs(2);
}
@ -4464,6 +4464,142 @@ MACHINE_CONFIG_END
/***************************************************************************
Gakken Invader 2000
* TMS1370(28 pins) MP1604 (die label 1370A MP1604)
* TMS1024 I/O expander
* cyan/red/green VFD display, 1-bit sound
known releases:
- World: Invader 2000
- USA(1): Galaxy Invader 10000, published by CGL
- USA(2): Cosmic 3000 Fire Away, published by Tandy
***************************************************************************/
class ginv2000_state : public hh_tms1k_state
{
public:
ginv2000_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_tms1k_state(mconfig, type, tag),
m_expander(*this, "expander")
{ }
required_device<tms1024_device> m_expander;
DECLARE_WRITE8_MEMBER(expander_w);
void prepare_display();
virtual DECLARE_WRITE16_MEMBER(write_r);
virtual DECLARE_WRITE16_MEMBER(write_o);
virtual DECLARE_READ8_MEMBER(read_k);
protected:
virtual void machine_reset() override;
};
// handlers
void ginv2000_state::prepare_display()
{
display_matrix(16, 10, m_plate, m_grid);
}
WRITE8_MEMBER(ginv2000_state::expander_w)
{
// TMS1024 port 4-7: VFD plate
int shift = (offset - tms1024_device::PORT4) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
}
WRITE16_MEMBER(ginv2000_state::write_r)
{
// R0: speaker out
m_speaker->level_w(data & 1);
// R11,R12: input mux
m_inp_mux = data >> 11 & 3;
// R11,R12: TMS1024 S1,S0 (S2 forced high)
// R13: TMS1024 STD
m_expander->write_s(space, 0, (data >> 12 & 1) | (data >> 10 & 2) | 4);
m_expander->write_std(data >> 13 & 1);
// R1-R10: VFD grid
m_grid = data >> 1 & 0x3ff;
prepare_display();
}
WRITE16_MEMBER(ginv2000_state::write_o)
{
// O4-O7: TMS1024 H1-H4
m_expander->write_h(space, 0, data >> 4 & 0xf);
}
READ8_MEMBER(ginv2000_state::read_k)
{
// K1,K2: multiplexed inputs (K8 is fire button)
return m_inp_matrix[2]->read() | read_inputs(2);
}
// config
static INPUT_PORTS_START( ginv2000 )
PORT_START("IN.0") // R11
PORT_CONFNAME( 0x03, 0x01, DEF_STR( Difficulty ) )
PORT_CONFSETTING( 0x01, "1" )
PORT_CONFSETTING( 0x02, "2" )
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // R12
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // K8
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
INPUT_PORTS_END
void ginv2000_state::machine_reset()
{
hh_tms1k_state::machine_reset();
m_expander->write_ms(1); // Vss
}
static MACHINE_CONFIG_START( ginv2000 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1370, 425000) // approximation - RC osc. R=36K, C=47pF
MCFG_TMS1XXX_READ_K_CB(READ8(ginv2000_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ginv2000_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ginv2000_state, write_o))
MCFG_DEVICE_ADD("expander", TMS1024, 0)
MCFG_TMS1025_WRITE_PORT_CB(PORT4, WRITE8(ginv2000_state, expander_w))
MCFG_TMS1025_WRITE_PORT_CB(PORT5, WRITE8(ginv2000_state, expander_w))
MCFG_TMS1025_WRITE_PORT_CB(PORT6, WRITE8(ginv2000_state, expander_w))
MCFG_TMS1025_WRITE_PORT_CB(PORT7, WRITE8(ginv2000_state, expander_w))
/* video hardware */
MCFG_SCREEN_SVG_ADD("screen", "svg")
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_SIZE(364, 1080)
MCFG_SCREEN_VISIBLE_AREA(0, 364-1, 0, 1080-1)
MCFG_DEFAULT_LAYOUT(layout_svg)
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
/***************************************************************************
Gakken FX-Micom R-165
@ -9335,6 +9471,20 @@ ROM_START( ginv1000 )
ROM_END
ROM_START( ginv2000 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp1604", 0x0000, 0x0800, CRC(f1646d0b) SHA1(65601931d81e3eef7bf22a08de5a146910ce8137) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 365, "maincpu:opla", 0 )
ROM_LOAD( "tms1100_ginv2000_output.pla", 0, 365, CRC(520bb003) SHA1(1640ae54f8dcc257e0ad0cbe0281b38fcbd8da35) )
ROM_REGION( 374443, "svg", 0)
ROM_LOAD( "ginv2000.svg", 0, 374443, CRC(a4ce1e6d) SHA1(57d9ff05d634a8d495b9d544a2a959790cd10b6b) )
ROM_END
ROM_START( fxmcr165 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp1312", 0x0000, 0x0800, CRC(6efc8bcc) SHA1(ced8a02b472a3178073691d3dccc0f19f57428fd) )
@ -9809,7 +9959,8 @@ CONS( 1979, f3in1, 0, 0, f3in1, f3in1, f3in1_state, 0,
CONS( 1979, gpoker, 0, 0, gpoker, gpoker, gpoker_state, 0, "Gakken", "Poker (Gakken, 1979 version)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, gjackpot, 0, 0, gjackpot, gjackpot, gjackpot_state, 0, "Gakken", "Jackpot: Gin Rummy & Black Jack", MACHINE_SUPPORTS_SAVE )
CONS( 1982, ginv1000, 0, 0, ginv1000, ginv1000, ginv1000_state, 0, "Gakken", "Galaxy Invader 1000", MACHINE_SUPPORTS_SAVE )
CONS( 1981, ginv1000, 0, 0, ginv1000, ginv1000, ginv1000_state, 0, "Gakken", "Galaxy Invader 1000", MACHINE_SUPPORTS_SAVE )
CONS( 1982, ginv2000, 0, 0, ginv2000, ginv2000, ginv2000_state, 0, "Gakken", "Invader 2000", MACHINE_SUPPORTS_SAVE )
COMP( 1983, fxmcr165, 0, 0, fxmcr165, fxmcr165, fxmcr165_state, 0, "Gakken", "FX-Micom R-165", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, elecdet, 0, 0, elecdet, elecdet, elecdet_state, 0, "Ideal", "Electronic Detective", MACHINE_SUPPORTS_SAVE ) // ***

View File

@ -288,7 +288,7 @@ void ufombs_state::prepare_display()
WRITE8_MEMBER(ufombs_state::grid_w)
{
// F,G,H0: vfd matrix grid
// F,G,H0: vfd grid
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -296,7 +296,7 @@ WRITE8_MEMBER(ufombs_state::grid_w)
WRITE8_MEMBER(ufombs_state::plate_w)
{
// C,D012,I: vfd matrix plate
// C,D012,I: vfd plate
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -400,7 +400,7 @@ void ssfball_state::prepare_display()
WRITE8_MEMBER(ssfball_state::grid_w)
{
// C,D(,E3): vfd matrix grid 0-7(,8)
// C,D(,E3): vfd grid 0-7(,8)
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -410,7 +410,7 @@ WRITE8_MEMBER(ssfball_state::plate_w)
{
m_port[offset] = data;
// E,F,G,H,I(not all!): vfd matrix plate
// E,F,G,H,I(not all!): vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -418,7 +418,7 @@ WRITE8_MEMBER(ssfball_state::plate_w)
m_inp_mux = (m_port[NEC_UCOM4_PORTF] >> 3 & 1) | (m_port[NEC_UCOM4_PORTG] >> 2 & 2);
m_speaker->level_w(m_inp_mux);
// E3: vfd matrix grid 8
// E3: vfd grid 8
if (offset == NEC_UCOM4_PORTE)
grid_w(space, offset, data >> 3 & 1);
else
@ -548,7 +548,7 @@ WRITE8_MEMBER(bmsoccer_state::grid_w)
if (offset == NEC_UCOM4_PORTC)
m_inp_mux = data & 3;
// C,D(,E3): vfd matrix grid
// C,D(,E3): vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -560,7 +560,7 @@ WRITE8_MEMBER(bmsoccer_state::plate_w)
if (offset == NEC_UCOM4_PORTG)
m_speaker->level_w(data >> 3 & 1);
// E012,F012,G012,H,I: vfd matrix plate
// E012,F012,G012,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -668,7 +668,7 @@ void bmsafari_state::prepare_display()
WRITE8_MEMBER(bmsafari_state::grid_w)
{
// C,D(,E3): vfd matrix grid
// C,D(,E3): vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -676,7 +676,7 @@ WRITE8_MEMBER(bmsafari_state::grid_w)
WRITE8_MEMBER(bmsafari_state::plate_w)
{
// E012,H,I: vfd matrix plate
// E012,H,I: vfd plate
int shift = (offset == NEC_UCOM4_PORTE) ? 8 : (offset - NEC_UCOM4_PORTH) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -777,14 +777,14 @@ void splasfgt_state::prepare_display()
WRITE8_MEMBER(splasfgt_state::grid_w)
{
// G,H,I0: vfd matrix grid
// G,H,I0: vfd grid
int shift = (offset - NEC_UCOM4_PORTG) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
// G(grid 0-3): input mux
m_inp_mux = m_grid & 0xf;
// I2: vfd matrix plate 6
// I2: vfd plate 6
if (offset == NEC_UCOM4_PORTI)
plate_w(space, 4 + NEC_UCOM4_PORTC, data >> 2 & 1);
else
@ -797,7 +797,7 @@ WRITE8_MEMBER(splasfgt_state::plate_w)
if (offset == NEC_UCOM4_PORTF)
m_speaker->level_w(data & 3);
// C,D,E,F23(,I2): vfd matrix plate
// C,D,E,F23(,I2): vfd plate
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -934,7 +934,7 @@ WRITE8_MEMBER(bcclimbr_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 2 & 1);
// H,I01: vfd matrix grid
// H,I01: vfd grid
int shift = (offset - NEC_UCOM4_PORTH) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -942,7 +942,7 @@ WRITE8_MEMBER(bcclimbr_state::grid_w)
WRITE8_MEMBER(bcclimbr_state::plate_w)
{
// C,D,E,F: vfd matrix plate
// C,D,E,F: vfd plate
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1152,7 +1152,7 @@ WRITE8_MEMBER(invspace_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data & 1);
// C,D,I1: vfd matrix grid
// C,D,I1: vfd grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1160,7 +1160,7 @@ WRITE8_MEMBER(invspace_state::grid_w)
WRITE8_MEMBER(invspace_state::plate_w)
{
// E,F,G,H123: vfd matrix plate
// E,F,G,H123: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1253,7 +1253,7 @@ WRITE8_MEMBER(efball_state::grid_w)
if (offset == NEC_UCOM4_PORTH)
m_speaker->level_w(data >> 2 & 1);
// F,G,H01: vfd matrix grid
// F,G,H01: vfd grid
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1261,7 +1261,7 @@ WRITE8_MEMBER(efball_state::grid_w)
WRITE8_MEMBER(efball_state::plate_w)
{
// D,E,I: vfd matrix plate
// D,E,I: vfd plate
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTD) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1367,7 +1367,7 @@ WRITE8_MEMBER(galaxy2_state::grid_w)
if (offset == NEC_UCOM4_PORTE)
m_speaker->level_w(data >> 3 & 1);
// C,D,E01: vfd matrix grid
// C,D,E01: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1375,7 +1375,7 @@ WRITE8_MEMBER(galaxy2_state::grid_w)
WRITE8_MEMBER(galaxy2_state::plate_w)
{
// F,G,H,I: vfd matrix plate
// F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1474,7 +1474,7 @@ void astrocmd_state::prepare_display()
WRITE8_MEMBER(astrocmd_state::grid_w)
{
// C,D(,E3): vfd matrix grid
// C,D(,E3): vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1482,7 +1482,7 @@ WRITE8_MEMBER(astrocmd_state::grid_w)
WRITE8_MEMBER(astrocmd_state::plate_w)
{
// E01,F,G,H,I: vfd matrix plate
// E01,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@ -1491,7 +1491,7 @@ WRITE8_MEMBER(astrocmd_state::plate_w)
// E2: speaker out
m_speaker->level_w(data >> 2 & 1);
// E3: vfd matrix grid 8
// E3: vfd grid 8
grid_w(space, offset, data >> 3 & 1);
}
else
@ -1576,7 +1576,7 @@ public:
WRITE8_MEMBER(edracula_state::grid_w)
{
// C,D: vfd matrix grid
// C,D: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
display_matrix(18, 8, m_plate, m_grid);
@ -1588,7 +1588,7 @@ WRITE8_MEMBER(edracula_state::plate_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 2 & 1);
// E,F,G,H,I01: vfd matrix plate
// E,F,G,H,I01: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
display_matrix(18, 8, m_plate, m_grid);
@ -1753,7 +1753,7 @@ void mvbfree_state::prepare_display()
WRITE8_MEMBER(mvbfree_state::grid_w)
{
// E23,F,G,H: vfd matrix grid
// E23,F,G,H: vfd grid
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
@ -1766,7 +1766,7 @@ WRITE8_MEMBER(mvbfree_state::grid_w)
WRITE8_MEMBER(mvbfree_state::plate_w)
{
// C,D(,E01): vfd matrix plate
// C,D(,E01): vfd plate
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1978,7 +1978,7 @@ WRITE8_MEMBER(tccombat_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 1 & 1);
// C,D,I0: vfd matrix grid
// C,D,I0: vfd grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -1986,7 +1986,7 @@ WRITE8_MEMBER(tccombat_state::grid_w)
WRITE8_MEMBER(tccombat_state::plate_w)
{
// E,F123,G,H: vfd matrix plate
// E,F123,G,H: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2074,7 +2074,7 @@ protected:
WRITE8_MEMBER(tmtennis_state::grid_w)
{
// G,H,I: vfd matrix grid
// G,H,I: vfd grid
int shift = (offset - NEC_UCOM4_PORTG) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
display_matrix(12, 12, m_plate, m_grid);
@ -2082,7 +2082,7 @@ WRITE8_MEMBER(tmtennis_state::grid_w)
WRITE8_MEMBER(tmtennis_state::plate_w)
{
// C,D,F: vfd matrix plate
// C,D,F: vfd plate
int shift = (offset == NEC_UCOM4_PORTF) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
display_matrix(12, 12, m_plate, m_grid);
@ -2236,7 +2236,7 @@ void tmpacman_state::prepare_display()
WRITE8_MEMBER(tmpacman_state::grid_w)
{
// C,D: vfd matrix grid
// C,D: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2248,7 +2248,7 @@ WRITE8_MEMBER(tmpacman_state::plate_w)
if (offset == NEC_UCOM4_PORTE)
m_speaker->level_w(data >> 1 & 1);
// E023,F,G,H,I: vfd matrix plate
// E023,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2344,7 +2344,7 @@ WRITE8_MEMBER(tmscramb_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 2 & 1);
// C,D,I01: vfd matrix grid
// C,D,I01: vfd grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2352,7 +2352,7 @@ WRITE8_MEMBER(tmscramb_state::grid_w)
WRITE8_MEMBER(tmscramb_state::plate_w)
{
// E,F,G,H: vfd matrix plate
// E,F,G,H: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2443,7 +2443,7 @@ void tcaveman_state::prepare_display()
WRITE8_MEMBER(tcaveman_state::grid_w)
{
// C,D: vfd matrix grid
// C,D: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2455,7 +2455,7 @@ WRITE8_MEMBER(tcaveman_state::plate_w)
if (offset == NEC_UCOM4_PORTE)
m_speaker->level_w(data >> 3 & 1);
// E012,F,G,H,I: vfd matrix plate
// E012,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@ -2537,7 +2537,7 @@ WRITE8_MEMBER(alnchase_state::output_w)
{
if (offset <= NEC_UCOM4_PORTE)
{
// C,D,E0: vfd matrix grid
// C,D,E0: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
@ -2552,7 +2552,7 @@ WRITE8_MEMBER(alnchase_state::output_w)
if (offset >= NEC_UCOM4_PORTE)
{
// E23,F,G,H,I: vfd matrix plate
// E23,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = ((m_plate << 2 & ~(0xf << shift)) | (data << shift)) >> 2;
}

View File

@ -14756,6 +14756,7 @@ f2pbball // Fonas
f3in1 // Fonas
fxmcr165 // Gakken
ginv1000 // Gakken
ginv2000 // Gakken
gjackpot // Gakken
gpoker // Gakken
h2hbaseb // Coleco