summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emu/cpu/hmcs40/hmcs40.c34
-rw-r--r--src/emu/machine/tms6100.c13
-rw-r--r--src/mame/audio/hng64.c15
-rw-r--r--src/mame/drivers/twins.c46
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mess/audio/upd1771.c2
-rw-r--r--src/mess/drivers/hh_hmcs40.c5
7 files changed, 97 insertions, 19 deletions
diff --git a/src/emu/cpu/hmcs40/hmcs40.c b/src/emu/cpu/hmcs40/hmcs40.c
index 57053375ff7..9bffeba24f5 100644
--- a/src/emu/cpu/hmcs40/hmcs40.c
+++ b/src/emu/cpu/hmcs40/hmcs40.c
@@ -581,7 +581,18 @@ void hmcs40_cpu_device::execute_run()
// handle opcode
switch (m_op)
{
- // unknown: lay, ayy, syy, am, anem, alem, bnem, blem, nega
+ // unknown:
+ /*
+ lay 118
+ ayy 058
+ syy 258
+ am 034
+ anem 124/324/024/234
+ alem
+ bnem
+ blem
+ nega 244
+ */
case 0x118:
op_lay(); // probably lay
@@ -592,26 +603,25 @@ void hmcs40_cpu_device::execute_run()
case 0x124:
- op_illegal();
- //op_alem(); // alem or anem
- //op_ayy();
+ //op_illegal();
+ op_alem();
break;
case 0x324:
- op_illegal();
- //op_anem(); // "
+ //op_illegal();
+ op_anem();
break;
case 0x024:
- op_illegal();
- //op_nega();
+ //op_illegal();
+ op_bnem();
+ break;
+ case 0x234:
+ //op_illegal();
+ op_blem();
break;
- case 0x234:
- op_illegal();
- //op_nega();
- break;
diff --git a/src/emu/machine/tms6100.c b/src/emu/machine/tms6100.c
index c261d1b949b..2df1cada967 100644
--- a/src/emu/machine/tms6100.c
+++ b/src/emu/machine/tms6100.c
@@ -28,6 +28,19 @@
VSS | 14 15 | NC
+-----------------+
+ TMS6125:
+
+ +---------+
+ DATA/ADD1 | 1 16 | NC
+ DATA/ADD2 | 2 15 | NC
+ DATA/ADD4 | 3 14 | NC
+ DATA/ADD8 | 4 13 | NC
+ CLK | 5 12 | VDD
+ NC | 6 11 | /CS
+ NC | 7 10 | M1
+ M0 | 8 9 | VSS
+ +---------+
+
M58819 (from radarscope schematics):
+-----------------+
diff --git a/src/mame/audio/hng64.c b/src/mame/audio/hng64.c
index dbce6f5c885..2cc54a21ed2 100644
--- a/src/mame/audio/hng64.c
+++ b/src/mame/audio/hng64.c
@@ -21,11 +21,18 @@ data structures look very similar between all of them
IRQ mask register on the internal interrupt controller is set to 0xd8
-so levels 0,1,2,5 are unmasked
+so levels 0,1,2,5 are unmasked, vectors get set during the sound CPU init code.
-returning random values / triggering random interrupts eventually results in a situation
-where the CPU stops writing to the sound related addresses and starts reading / masking the
-serial comms register.
+ level 0/1 irq (fatfurwa) starts at 0xd277 (both the same vector)
+ serial comms related, maybe to get commands from main CPU if not done with shared ram?
+
+ level 2 irq (fatfurwa) 0xdd20
+ simple routine increases counter in RAM, maybe hooked to one / all of the timer irqs
+
+ level 5 irq: (fatfurwa) starts at 0xc1e1
+ largest irq, does things with ports 100 / 102 / 104 / 106, 10a (not 108 directly tho)
+
+ no other irqs (or the NMI) are valid.
*/
diff --git a/src/mame/drivers/twins.c b/src/mame/drivers/twins.c
index a80c9b1e685..0158cae5a38 100644
--- a/src/mame/drivers/twins.c
+++ b/src/mame/drivers/twins.c
@@ -306,6 +306,44 @@ static MACHINE_CONFIG_START( twinsa, twins_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
+static ADDRESS_MAP_START( spider_io, AS_IO, 16, twins_state )
+ AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
+ AM_RANGE(0x0002, 0x0003) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
+ AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w)
+ AM_RANGE(0x0008, 0x0009) AM_WRITE(port6_pal0_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0010, 0x0011) AM_WRITE(porte_paloff0_w)
+ADDRESS_MAP_END
+
+
+static MACHINE_CONFIG_START( spider, twins_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", V30, 8000000)
+ MCFG_CPU_PROGRAM_MAP(twins_map)
+ MCFG_CPU_IO_MAP(spider_io)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", twins_state, nmi_line_pulse)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(320,256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+ MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twins)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+
+ MCFG_VIDEO_START_OVERRIDE(twins_state,twins)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("aysnd", AY8910, 2000000)
+ MCFG_AY8910_PORT_A_READ_CB(IOPORT("P1"))
+ MCFG_AY8910_PORT_B_READ_CB(IOPORT("P2"))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
ROM_START( twins )
ROM_REGION( 0x100000, "maincpu", 0 )
@@ -337,5 +375,13 @@ ROM_START( twinsa )
ROM_LOAD16_BYTE( "hp.bin", 0x000001, 0x080000, CRC(aaf74b83) SHA1(09bd76b9fc5cb7ba6ffe1a2581ffd5633fe440b3) )
ROM_END
+ROM_START( spider )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "20.bin", 0x000001, 0x080000, CRC(25e15f11) SHA1(b728f35c817f60a294e38d66559da8977b94a1f5) )
+ ROM_LOAD16_BYTE( "21.bin", 0x000000, 0x080000, CRC(ff224206) SHA1(d8d45850983542e811facc917d016841fc56a97f) )
+ROM_END
+
GAME( 1994, twins, 0, twins, twins, driver_device, 0, ROT0, "Electronic Devices", "Twins (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1994, twinsa, twins, twinsa, twins, driver_device, 0, ROT0, "Electronic Devices", "Twins (set 2)", GAME_SUPPORTS_SAVE )
+
+GAME( 1994, spider, 0, spider, twins, driver_device, 0, ROT0, "Buena Vision", "Spider", GAME_NOT_WORKING )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index a523b095e7a..791b665c920 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -10107,6 +10107,7 @@ twinbrata // (c) 1995
ppmast93 // (c) 1993 Electronic Devices S.R.L.
twins // (c) 1994
twinsa // (c) 1994
+spider
mwarr
pzletime
diff --git a/src/mess/audio/upd1771.c b/src/mess/audio/upd1771.c
index bac1b853c14..f6ec40d0143 100644
--- a/src/mess/audio/upd1771.c
+++ b/src/mess/audio/upd1771.c
@@ -91,7 +91,7 @@
uPD1776C: mentioned in the bristow book, implements VSRSSS speech concatenation
(see US Patent 4577343 which is a patent on this VSRSSS implementation)
uPD1771C-006: used in NEC APC for sound as the "MPU"
- -011: used on Firefox F-4 handheld
+ -011: used on Firefox F-4/Astro Thunder handheld
-015: unknown, known to exist from part scalper sites only.
-017: used on Epoch Super Cassete Vision for sound; This audio driver HLEs that part only.
diff --git a/src/mess/drivers/hh_hmcs40.c b/src/mess/drivers/hh_hmcs40.c
index 852da84948c..1c554cf4419 100644
--- a/src/mess/drivers/hh_hmcs40.c
+++ b/src/mess/drivers/hh_hmcs40.c
@@ -610,7 +610,7 @@ READ8_MEMBER(hh_hmcs40_state::egalaxn2_input_r)
static INPUT_PORTS_START( egalaxn2 )
PORT_START("IN.0") // D1 port R0x
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // "
@@ -622,7 +622,7 @@ static INPUT_PORTS_START( egalaxn2 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_16WAY // "
PORT_START("IN.2") // D3 port R0x
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -962,6 +962,7 @@ CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Colec
CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
+
CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )