This commit is contained in:
dankan1890 2016-02-07 03:33:24 +01:00
commit 14b2b34022
12 changed files with 490 additions and 185 deletions

81
hash/k28.xml Normal file
View File

@ -0,0 +1,81 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<softwarelist name="k28" description="Tiger K28 modules">
<software name="m1">
<description>Expansion Module 1</description>
<year>1986?</year>
<publisher>Tiger Electronics</publisher>
<info name="serial" value="CM62086"/>
<part name="cart" interface="k28">
<dataarea name="rom" size="0x4000">
<rom name="cm62086.vsm" size="0x4000" crc="0349798b" sha1="afdad242f9c7dec0c5fd83670e3d8f1637140e76" offset="0" />
</dataarea>
</part>
</software>
<software name="m2">
<description>Expansion Module 2</description>
<year>1986</year>
<publisher>Tiger Electronics</publisher>
<info name="serial" value="CM62216"/>
<part name="cart" interface="k28">
<dataarea name="rom" size="0x4000">
<rom name="cm62216.vsm" size="0x4000" crc="1c99306f" sha1="7bfadeec79bdc231c4e3447149e2f6542cfe077d" offset="0" />
</dataarea>
</part>
</software>
<software name="m3">
<description>Expansion Module 3</description>
<year>1986</year>
<publisher>Tiger Electronics</publisher>
<info name="serial" value="CM62215"/>
<part name="cart" interface="k28">
<dataarea name="rom" size="0x4000">
<rom name="cm62215.vsm" size="0x4000" crc="f2deb9a2" sha1="9fb264b869d1298ebd76811931bed83ac122fe4b" offset="0" />
</dataarea>
</part>
</software>
<software name="m4">
<description>Expansion Module 4</description>
<year>1986</year>
<publisher>Tiger Electronics</publisher>
<info name="serial" value="CM62217"/>
<part name="cart" interface="k28">
<dataarea name="rom" size="0x4000">
<rom name="cm62217.vsm" size="0x4000" crc="995936b2" sha1="8bd0fea4ade9972d1d6cb521f9367c971c7eead6" offset="0" />
</dataarea>
</part>
</software>
<!--
<software name="m5">
<description>Expansion Module 5</description>
<year>1987</year>
<publisher>Tiger Electronics</publisher>
<info name="serial" value="CM62218"/>
<part name="cart" interface="k28">
<dataarea name="rom" size="0x4000">
<rom name="cm62217.vsm" size="0x4000" crc="x" sha1="x" offset="0" />
</dataarea>
</part>
</software>
-->
<software name="m6">
<description>Expansion Module 6</description>
<year>1987</year>
<publisher>Tiger Electronics</publisher>
<info name="serial" value="CM62219"/>
<part name="cart" interface="k28">
<dataarea name="rom" size="0x4000">
<rom name="cm62219.vsm" size="0x4000" crc="177b5cb5" sha1="2ed44fea8f931fc8aa46dafdda1c6c30b8c9dc01" offset="0" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -6367,6 +6367,7 @@ charlien // MBR (c) 1994 Mitchell
// MBV ?? // MBV ??
// MBW ?? // MBW ??
wcvol95 // MBX (c) 1993 Data East wcvol95 // MBX (c) 1993 Data East
wcvol95x // ?
// MBY ?? // MBY ??
backfire // MBZ (c) 1995 backfire // MBZ (c) 1995
backfirea // MBZ (c) 1995 backfirea // MBZ (c) 1995
@ -10978,8 +10979,8 @@ phrcrazea // (c) 1986 Merit
phrcrazeb // (c) 1986 Merit phrcrazeb // (c) 1986 Merit
phrcrazec // (c) 1986 Merit phrcrazec // (c) 1986 Merit
phrcrazev // (c) 1986 Merit phrcrazev // (c) 1986 Merit
bigappg // (c) 1986 Merit bigappg // (c) 1986 Merit / Big Apple Games
bigappga // misdraw // (c) 1986 Merit / Big Apple Games
riviera // (c) 1987 Merit riviera // (c) 1987 Merit
rivieraa // (c) 1986 Merit rivieraa // (c) 1986 Merit
rivierab // (c) 1986 Merit rivierab // (c) 1986 Merit

View File

@ -8,9 +8,6 @@
See also deco32.c, deco_mlc.c, backfire.c See also deco32.c, deco_mlc.c, backfire.c
Todo:
complete co-processor emulation for wcvol95
Emulation by Bryan McPhail, mish@tendril.co.uk Emulation by Bryan McPhail, mish@tendril.co.uk
*/ */
@ -628,8 +625,36 @@ ROM_START( wcvol95 )
// ROM_REGION( 0x80, "user1", 0 ) /* eeprom */ // ROM_REGION( 0x80, "user1", 0 ) /* eeprom */
// ROM_LOAD( "93c46.3k", 0x00, 0x80, CRC(88f8e270) SHA1(cb82203ad38e0c12ea998562b7b785979726afe5) ) // ROM_LOAD( "93c46.3k", 0x00, 0x80, CRC(88f8e270) SHA1(cb82203ad38e0c12ea998562b7b785979726afe5) )
ROM_REGION( 0x200, "gals", 0 )
ROM_LOAD( "GAL16V8B.10J.bin", 0x000, 0x117, CRC(06bbcbd5) SHA1(f7adb4bca13bb799bc42411eb178edfdc11a76c7) )
ROM_LOAD( "GAL16V8B.5D.bin", 0x000, 0x117, CRC(117784f0) SHA1(daf3720740621fc3af49333c96795718b693f4d2))
ROM_END ROM_END
ROM_START( wcvol95x )
ROM_REGION( 0x100000, "maincpu", 0 ) /* DE156 code (encrypted) */
// no label markings were present
ROM_LOAD32_WORD( "2f.bin", 0x000002, 0x080000, CRC(ac06633d) SHA1(5d37ca3050f35d5fc06f70e91b1522e325471585) )
ROM_LOAD32_WORD( "4f.bin", 0x000000, 0x080000, CRC(e211f67a) SHA1(d008c2b809482f17ada608134357fa1205d767d4) )
ROM_REGION( 0x080000, "gfx1", 0 )
ROM_LOAD( "mbx-00.9a", 0x000000, 0x080000, CRC(a0b24204) SHA1(cec8089c6c635f23b3a4aeeef2c43f519568ad70) )
ROM_REGION( 0x200000, "gfx2", 0 )
ROM_LOAD16_BYTE( "mbx-01.12a", 0x000000, 0x100000, CRC(73deb3f1) SHA1(c0cabecfd88695afe0f27c5bb115b4973907207d) )
ROM_LOAD16_BYTE( "mbx-02.13a", 0x000001, 0x100000, CRC(3204d324) SHA1(44102f71bae44bf3a9bd2de7e5791d959a2c9bdd) )
ROM_REGION( 0x200000, "ymz", 0 ) /* YMZ280B-F samples */
ROM_LOAD( "mbx-03.13j", 0x00000, 0x200000, CRC(061632bc) SHA1(7900ac56e59f4a4e5768ce72f4a4b7c5875f5ae8) )
ROM_REGION( 0x200, "gals", 0 )
ROM_LOAD( "GAL16V8B.10J.bin", 0x000, 0x117, CRC(06bbcbd5) SHA1(f7adb4bca13bb799bc42411eb178edfdc11a76c7) )
ROM_LOAD( "GAL16V8B.5D.bin", 0x000, 0x117, CRC(117784f0) SHA1(daf3720740621fc3af49333c96795718b693f4d2))
ROM_END
/**********************************************************************************/ /**********************************************************************************/
void deco156_state::descramble_sound( const char *tag ) void deco156_state::descramble_sound( const char *tag )
@ -677,3 +702,4 @@ GAME( 1993, hvysmsh, 0, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0,
GAME( 1993, hvysmsha, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Asia version -4)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, hvysmsha, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Asia version -4)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, hvysmshj, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Japan version -2)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, hvysmshj, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Japan version -2)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, wcvol95, 0, wcvol95, wcvol95, deco156_state, wcvol95, ROT0, "Data East Corporation", "World Cup Volley '95 (Japan v1.0)", MACHINE_SUPPORTS_SAVE ) GAME( 1995, wcvol95, 0, wcvol95, wcvol95, deco156_state, wcvol95, ROT0, "Data East Corporation", "World Cup Volley '95 (Japan v1.0)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, wcvol95x, wcvol95, wcvol95, wcvol95, deco156_state, wcvol95, ROT0, "Data East Corporation", "World Cup Volley '95 Extra Version (Asia v2.0B)", MACHINE_SUPPORTS_SAVE )

View File

@ -10,7 +10,7 @@
It sometimes does this on Voice Sensory Chess Challenger real hardware. It sometimes does this on Voice Sensory Chess Challenger real hardware.
It can also be heard on Advanced Voice Chess Challenger real hardware, but not the whole line: It can also be heard on Advanced Voice Chess Challenger real hardware, but not the whole line:
"I I am Fidelity's chess challenger", instead. "I I am Fidelity's chess challenger", instead.
- correctly hook up VBRC speech so that the z80 is halted while words are being spoken - VBRC card scanner
Chess pieces are required, but theoretically blindfold chess is possible. Chess pieces are required, but theoretically blindfold chess is possible.
Chessboard artwork is provided for boards with pressure/magnet sensors. Chessboard artwork is provided for boards with pressure/magnet sensors.
@ -1327,21 +1327,16 @@ ADDRESS_MAP_END
WRITE8_MEMBER(fidelz80_state::vbrc_speech_w) WRITE8_MEMBER(fidelz80_state::vbrc_speech_w)
{ {
//printf("%X ",data);
// todo: HALT THE z80 here, and set up a callback to poll the s14001a BUSY line to resume z80
m_speech->data_w(space, 0, data & 0x3f); m_speech->data_w(space, 0, data & 0x3f);
m_speech->start_w(1); m_speech->start_w(1);
m_speech->start_w(0); m_speech->start_w(0);
//m_speech->start_w(BIT(data, 7));
} }
static ADDRESS_MAP_START( vbrc_main_map, AS_PROGRAM, 8, fidelz80_state ) static ADDRESS_MAP_START( vbrc_main_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
AM_RANGE(0xe000, 0xffff) AM_MIRROR(0x1fff) AM_WRITE(vbrc_speech_w) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(vbrc_speech_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( vbrc_main_io, AS_IO, 8, fidelz80_state ) static ADDRESS_MAP_START( vbrc_main_io, AS_IO, 8, fidelz80_state )
@ -1408,13 +1403,13 @@ static INPUT_PORTS_START( vcc )
PORT_INCLUDE( vcc_base ) PORT_INCLUDE( vcc_base )
PORT_START("IN.4") // PCB jumpers, not consumer accessible PORT_START("IN.4") // PCB jumpers, not consumer accessible
PORT_CONFNAME( 0x01, 0x00, "Language: French" ) PORT_CONFNAME( 0x01, 0x00, "Language: German" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) )
PORT_CONFNAME( 0x02, 0x00, "Language: Spanish" ) PORT_CONFNAME( 0x02, 0x00, "Language: French" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x02, DEF_STR( On ) ) PORT_CONFSETTING( 0x02, DEF_STR( On ) )
PORT_CONFNAME( 0x04, 0x00, "Language: German" ) PORT_CONFNAME( 0x04, 0x00, "Language: Spanish" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x04, DEF_STR( On ) ) PORT_CONFSETTING( 0x04, DEF_STR( On ) )
PORT_CONFNAME( 0x08, 0x00, "Language: Special" ) PORT_CONFNAME( 0x08, 0x00, "Language: Special" )
@ -1426,27 +1421,27 @@ static INPUT_PORTS_START( vccfr )
PORT_INCLUDE( vcc ) PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4") PORT_MODIFY("IN.4")
PORT_CONFNAME( 0x01, 0x01, "Language: French" ) PORT_CONFNAME( 0x02, 0x02, "Language: French" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_CONFSETTING( 0x02, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( vccsp ) static INPUT_PORTS_START( vccsp )
PORT_INCLUDE( vcc ) PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4") PORT_MODIFY("IN.4")
PORT_CONFNAME( 0x02, 0x02, "Language: Spanish" ) PORT_CONFNAME( 0x04, 0x04, "Language: Spanish" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x02, DEF_STR( On ) ) PORT_CONFSETTING( 0x04, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( vccg ) static INPUT_PORTS_START( vccg )
PORT_INCLUDE( vcc ) PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4") PORT_MODIFY("IN.4")
PORT_CONFNAME( 0x04, 0x04, "Language: German" ) PORT_CONFNAME( 0x01, 0x01, "Language: German" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x04, DEF_STR( On ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
@ -1766,6 +1761,7 @@ static MACHINE_CONFIG_START( vbrc, fidelz80_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
MCFG_S14001A_BSY_HANDLER(INPUTLINE("maincpu", Z80_INPUT_LINE_WAIT))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -74,7 +74,7 @@
*MP7303 TMS1400? 19??, Tiger 7-in-1 Sports Stadium *MP7303 TMS1400? 19??, Tiger 7-in-1 Sports Stadium
@MP7313 TMS1400 1980, Parker Brothers Bank Shot @MP7313 TMS1400 1980, Parker Brothers Bank Shot
@MP7314 TMS1400 1980, Parker Brothers Split Second @MP7314 TMS1400 1980, Parker Brothers Split Second
*MP7324 TMS1400? 1985, Coleco Talking Teacher MP7324 TMS1400 1985, Tiger K28/Coleco Talking Teacher -> tispeak.cpp
MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.cpp MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.cpp
@MP7334 TMS1400 1981, Coleco Total Control 4 @MP7334 TMS1400 1981, Coleco Total Control 4
@MP7351 TMS1400CR 1982, Parker Brothers Master Merlin @MP7351 TMS1400CR 1982, Parker Brothers Master Merlin

View File

@ -59,7 +59,7 @@ Merit Riviera Notes - There are several known versions:
Riviera Super Star (not dumped) Riviera Super Star (not dumped)
Riviera Montana Version (with journal printer, not dumped) Riviera Montana Version (with journal printer, not dumped)
Riviera Tennessee Draw (not dumped) Riviera Tennessee Draw (not dumped)
Michigan Superstar Draw Poker (not dumped) Michigan Super Draw Poker (Is there a "Superstar" version?)
Americana Americana
There are several law suites over the Riviera games. Riviera Distributors Inc. bought earlier versions There are several law suites over the Riviera games. Riviera Distributors Inc. bought earlier versions
@ -422,7 +422,7 @@ static ADDRESS_MAP_START( bigappg_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( bigappga_map, AS_PROGRAM, 8, merit_state ) static ADDRESS_MAP_START( misdraw_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("cpunvram") // overlays other NVRAM? or is it banked? AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("cpunvram") // overlays other NVRAM? or is it banked?
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
@ -1275,10 +1275,10 @@ static MACHINE_CONFIG_DERIVED( bigappg, pitboss )
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bigappga, bigappg ) static MACHINE_CONFIG_DERIVED( misdraw, bigappg )
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(bigappga_map) MCFG_CPU_PROGRAM_MAP(misdraw_map)
MCFG_NVRAM_ADD_0FILL("cpunvram") MCFG_NVRAM_ADD_0FILL("cpunvram")
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -1502,9 +1502,9 @@ ROM_START( bigappg )
ROM_LOAD( "haip_u40.u40", 0x0000, 0x2000, CRC(ac4983b8) SHA1(a552a15f813c331de67eaae2ed42cc037b26c5bd) ) ROM_LOAD( "haip_u40.u40", 0x0000, 0x2000, CRC(ac4983b8) SHA1(a552a15f813c331de67eaae2ed42cc037b26c5bd) )
ROM_END ROM_END
ROM_START( bigappga ) ROM_START( misdraw )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "2131-16_u5-2.u5", 0x0000, 0x8000, CRC(fc756320) SHA1(6b810c57ed1be844a04a6081d727e182509604b4) ) /* 2131-16 U5-0 081889 */ ROM_LOAD( "2131-16_u5-2.u5", 0x0000, 0x8000, CRC(fc756320) SHA1(6b810c57ed1be844a04a6081d727e182509604b4) ) /* 2131-16 U5-2 081889 */
ROM_REGION( 0x6000, "gfx1", 0 ) ROM_REGION( 0x6000, "gfx1", 0 )
ROM_LOAD( "u39.u39", 0x0000, 0x2000, CRC(0f09d19b) SHA1(1f98559d5bad7c84d92ecea5a6df9429914a47f0) ) ROM_LOAD( "u39.u39", 0x0000, 0x2000, CRC(0f09d19b) SHA1(1f98559d5bad7c84d92ecea5a6df9429914a47f0) )
@ -2225,7 +2225,7 @@ GAME( 1986, rivieraa, riviera, dodge, riviera, driver_device, 0, ROT0, "
GAME( 1986, rivierab, riviera, dodge, rivierab, driver_device, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-2D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1986, rivierab, riviera, dodge, rivierab, driver_device, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-2D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1986, bigappg, 0, bigappg, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "The Big Apple (2131-13, U5-0)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, bigappg, 0, bigappg, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "The Big Apple (2131-13, U5-0)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, bigappga, bigappg, bigappga, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "The Big Apple (2131-16, U5-0 081889)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, misdraw, 0, misdraw, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "Michigan Super Draw (2131-16, U5-2)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, dodgectya,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-0D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAME( 1986, dodgectya,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-0D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
GAME( 1986, dodgectyb,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-50)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAME( 1986, dodgectyb,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-50)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )

View File

@ -351,10 +351,38 @@ Language Tutor modules:
- English(4/4): VSM: 16KB CD3529 - English(4/4): VSM: 16KB CD3529
Other manufacturers:
Tiger Electronics K28 (model 7-232) Sold in Hong Kong, distributed in US as:
- Coleco: Talking Teacher
- Sears: Talkatron - Learning Computer
Earlier K28 models 7-230 and 7-231 are on different hardware, showing a different
keyboard, VFD display, and use the SC-01 speech chip.
K28 model 7-232 (HK), 1985
- MCU: TMS1400 MP7324
- TMS51xx: TMS5110A
- VSM: 16KB CM62084
- LCD: unknown 8*16-seg
K28 modules:
- Spelling I: VSM: 16KB CM62086
- Spelling II: VSM: 16KB CM62085?
- Spelling III: VSM: 16KB CM62087
- Expansion Module 1: VSM: 16KB CM62214? - assumed same VSM as CM62086
- Expansion Module 2: VSM: 16KB CM62216 - assumed same VSM as the one in Spelling II
- Expansion Module 3: VSM: 16KB CM62215 - same VSM as CM62087
- Expansion Module 4: VSM: 16KB CM62217
- Expansion Module 5: VSM: 16KB CM62218*
- Expansion Module 6: VSM: 16KB CM62219
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
TODO: TODO:
- why doesn't lantutor work? - why doesn't lantutor work?
- identify and emulate k28 LCD
- emulate other known devices - emulate other known devices
@ -368,6 +396,7 @@ Language Tutor modules:
#include "softlist.h" #include "softlist.h"
// internal artwork // internal artwork
#include "k28.lh"
#include "lantutor.lh" #include "lantutor.lh"
#include "snmath.lh" #include "snmath.lh"
#include "snspell.lh" #include "snspell.lh"
@ -412,6 +441,11 @@ public:
DECLARE_WRITE16_MEMBER(snspellc_write_r); DECLARE_WRITE16_MEMBER(snspellc_write_r);
DECLARE_READ8_MEMBER(tntell_read_k); DECLARE_READ8_MEMBER(tntell_read_k);
void k28_prepare_display(UINT8 old, UINT8 data);
DECLARE_READ8_MEMBER(k28_read_k);
DECLARE_WRITE16_MEMBER(k28_write_o);
DECLARE_WRITE16_MEMBER(k28_write_r);
// cartridge // cartridge
UINT32 m_cart_max_size; UINT32 m_cart_max_size;
UINT8* m_cart_base; UINT8* m_cart_base;
@ -631,6 +665,46 @@ TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
} }
// k28 specific
void tispeak_state::k28_prepare_display(UINT8 old, UINT8 data)
{
// ?
}
WRITE16_MEMBER(tispeak_state::k28_write_r)
{
// R1234: TMS5100 CTL8421
m_tms5100->ctl_w(space, 0, BITSWAP8(data,0,0,0,0,1,2,3,4) & 0xf);
// R0: TMS5100 PDC pin
m_tms5100->pdc_w(data & 1);
// R5: input mux high bit
m_inp_mux = (m_inp_mux & 0xff) | (data << 3 & 0x100);
// R6: power-off request, on falling edge
if ((m_r >> 6 & 1) && !(data >> 6 & 1))
power_off();
// R7-R10: LCD data
k28_prepare_display(m_r >> 7 & 0xf, data >> 7 & 0xf);
m_r = data;
}
WRITE16_MEMBER(tispeak_state::k28_write_o)
{
// O0-O7: input mux low
m_inp_mux = (m_inp_mux & ~0xff) | data;
}
READ8_MEMBER(tispeak_state::k28_read_k)
{
// K: TMS5100 CTL, multiplexed inputs
return m_tms5100->ctl_r(space, 0) | read_inputs(9);
}
/*************************************************************************** /***************************************************************************
@ -799,7 +873,7 @@ static INPUT_PORTS_START( snmath )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) // / PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Mix It") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Mix It")
PORT_START("IN.6") // R6 PORT_START("IN.6") // R6
@ -1031,6 +1105,63 @@ static INPUT_PORTS_START( tntell )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( k28 )
PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") // -> auto_power_off
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('A') PORT_NAME("A/1")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('J') PORT_NAME("J/0")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S')
PORT_START("IN.1") // O1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR('B') PORT_NAME("B/2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR('K') PORT_NAME("K/+")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
PORT_START("IN.2") // O2
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Repeat")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR('C') PORT_NAME("C/3")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR('L') PORT_NAME("L/-")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('U')
PORT_START("IN.3") // O3
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Prompt")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR('D') PORT_NAME("D/4")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('M') PORT_NAME("M/" UTF8_MULTIPLY)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V')
PORT_START("IN.4") // O4
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("Menu")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR('E') PORT_NAME("E/5")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR('N') PORT_NAME("N/" UTF8_DIVIDE)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W')
PORT_START("IN.5") // O5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("Module")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('F') PORT_NAME("F/6")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('O')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('X')
PORT_START("IN.6") // O6
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Select")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR('G') PORT_NAME("G/7")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('P')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
PORT_START("IN.7") // O7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR('H') PORT_NAME("H/8")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
PORT_START("IN.8") // R5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('I') PORT_NAME("I/9")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('R')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
INPUT_PORTS_END
/*************************************************************************** /***************************************************************************
@ -1210,6 +1341,33 @@ static MACHINE_CONFIG_DERIVED( tntell, vocaid )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_START( k28, tispeak_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1400, MASTER_CLOCK/2)
MCFG_TMS1XXX_READ_K_CB(READ8(tispeak_state, k28_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, k28_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, k28_write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_k28)
/* sound hardware */
MCFG_DEVICE_ADD("tms6100", TMS6100, MASTER_CLOCK/4)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("tms5100", TMS5110A, MASTER_CLOCK)
MCFG_FRAGMENT_ADD(tms5110_route)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "k28")
MCFG_GENERIC_EXTENSIONS("vsm")
MCFG_GENERIC_LOAD(tispeak_state, tispeak_cartridge)
MCFG_SOFTWARE_LIST_ADD("cart_list", "k28")
MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
@ -1551,6 +1709,20 @@ ROM_START( vocaid )
ROM_END ROM_END
ROM_START( k28 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "mp7324", 0x0000, 0x1000, CRC(08d15ab6) SHA1(5b0f6c53e6732a362c4bb25d966d4072fdd33db8) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
ROM_REGION( 557, "maincpu:opla", 0 )
ROM_LOAD( "tms1400_k28_output.pla", 0, 557, CRC(3a5c7005) SHA1(3fe5819c138a90e7fc12817415f2622ca81b40b2) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff? = space reserved for cartridge
ROM_LOAD( "cm62084.vsm", 0x0000, 0x4000, CRC(cd1376f7) SHA1(96fa484c392c451599bc083b8376cad9c998df7d) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
COMP( 1979, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) COMP( 1979, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
@ -1581,3 +1753,5 @@ COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tn
COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK )
COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
COMP( 1985, k28, 0, 0, k28, k28, tispeak_state, snspell, "Tiger Electronics", "K28: Talking Learning Computer (model 7-232)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )

26
src/mame/layout/k28.lay Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<mamelayout version="2">
<!-- define elements -->
<element name="digit" defstate="0">
<led16seg><color red="0.5" green="0.5" blue="0.5" /></led16seg>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="0" right="80" top="0" bottom="15" />
<bezel name="digit0" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
<bezel name="digit1" element="digit"><bounds x="10" y="0" width="10" height="15" /></bezel>
<bezel name="digit2" element="digit"><bounds x="20" y="0" width="10" height="15" /></bezel>
<bezel name="digit3" element="digit"><bounds x="30" y="0" width="10" height="15" /></bezel>
<bezel name="digit4" element="digit"><bounds x="40" y="0" width="10" height="15" /></bezel>
<bezel name="digit5" element="digit"><bounds x="50" y="0" width="10" height="15" /></bezel>
<bezel name="digit6" element="digit"><bounds x="60" y="0" width="10" height="15" /></bezel>
<bezel name="digit7" element="digit"><bounds x="70" y="0" width="10" height="15" /></bezel>
</view>
</mamelayout>

View File

@ -2332,6 +2332,10 @@ lilprof
lilprof78 lilprof78
dataman dataman
// hh_tms1k tispellb.cpp
spellb
mrchalgr
// hh_tms1k tispeak.cpp // hh_tms1k tispeak.cpp
snspell snspell
snspellp snspellp
@ -2355,10 +2359,7 @@ tntelluk
tntellfr tntellfr
tntellp tntellp
vocaid vocaid
k28 // Tiger Electronics
// hh_tms1k tispellb.cpp
spellb
mrchalgr
// hh_ucom4 // hh_ucom4
ufombs // Bambino ufombs // Bambino