wldarrow.c: Added service inputs, allowing battery RAM to be initialized in test mode, making the games close to playable. [hap]

This commit is contained in:
Michaël Banaan Ananas 2012-04-07 03:12:04 +00:00
parent 3324483130
commit f491e46cf4

View File

@ -1,4 +1,5 @@
/*********************************
/******************************************************
Wild Arrow - Meyco Games 1982
Preliminary driver by
@ -13,11 +14,15 @@ RAM: 411A (x48)
XTal: 20.0
todo:
how are the games checking the battery
state?
**********************************/
To initialize battery RAM, go into testmode (F1 -> F2),
and then press the Reset Counters button.
If a game is not turned off properly, eg. exiting MAME
in mid-game, it may run faulty on the next boot.
Enable the Night Switch to prevent this.
*******************************************************/
#include "emu.h"
#include "cpu/i8085/i8085.h"
@ -253,12 +258,8 @@ static INPUT_PORTS_START( wldarrow )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Stop Reel 1") /* Skill Stop only? */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Spin")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet")
PORT_DIPNAME( 0x20, 0x20, "2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset Counters")
PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x80, 0x80, "Night Switch" ) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@ -333,12 +334,8 @@ static INPUT_PORTS_START( mdrawpkr )
PORT_DIPNAME( 0x10, 0x10, "2-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset Counters")
PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x80, 0x80, "Night Switch" ) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@ -358,7 +355,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( wldarrow, wldarrow_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", I8080, 2000000)
MCFG_CPU_ADD("maincpu", I8080, XTAL_20MHz / 10) // divider guessed
MCFG_CPU_PROGRAM_MAP(wldarrow_map)
MCFG_NVRAM_ADD_0FILL("nvram")
@ -387,7 +384,7 @@ MACHINE_CONFIG_END
*************************************/
ROM_START( wldarrow )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_INVERT )
ROM_LOAD( "a1-v48.8k", 0x0000, 0x0800, CRC(05dd8056) SHA1(556ca28d090cbf1855618ba40fc631523bdfadd5) )
ROM_LOAD( "a2-v48.7k", 0x0800, 0x0800, CRC(37df3acf) SHA1(a7f7f54af533dd8231bb20c526c053dd99e74863) )
ROM_LOAD( "a3-v48.6k", 0x1000, 0x0800, CRC(1295cee2) SHA1(61b260eb907ee4bbf1460277d09e3205c1f6d8a0) )
@ -445,7 +442,7 @@ Dumper notes:
*/
ROM_START( mdrawpkr )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_INVERT )
ROM_LOAD( "tms2516.k8", 0x0000, 0x0800, CRC(2e5fc31e) SHA1(5ea01298051bc51250f67305ac8a65b0b94c120f) )
ROM_LOAD( "tms2516.k7", 0x0800, 0x0800, CRC(baaf874e) SHA1(b7bb476ef873102979ad3252d19a26ee3a31d933) )
ROM_LOAD( "tms2516.k6", 0x1000, 0x0800, CRC(a0e13c41) SHA1(17f78f91dae64c39f1a39a0b99a081af1d3bed47) )
@ -455,7 +452,7 @@ ROM_START( mdrawpkr )
ROM_END
ROM_START( mdrawpkra )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_INVERT )
ROM_LOAD( "meyco.k8", 0x0000, 0x0800, CRC(b4f6994d) SHA1(46fb2784b7b333f6755522fd27741a2fc4a4bc99) )
ROM_LOAD( "meyco.k7", 0x0800, 0x0800, CRC(8830365d) SHA1(044bc92880b78fa2a6ed5e133b484ac7d34c455a) )
ROM_LOAD( "meyco.k6", 0x1000, 0x0800, CRC(e1d5d38d) SHA1(523029185e2edc0351fa128d6494a5002cb2d7e7) )
@ -465,7 +462,7 @@ ROM_START( mdrawpkra )
ROM_END
ROM_START( unkmeyco )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_INVERT )
ROM_LOAD( "k8", 0x0000, 0x0800, CRC(c6d8a2f7) SHA1(1fcd3ad72a29f832ffaf37edcb74e84e21909496) )
ROM_LOAD( "k7", 0x0800, 0x0800, CRC(6e30e5ae) SHA1(980096adefce4d4d97607b22f56f3acf246986ed) )
ROM_LOAD( "k6", 0x1000, 0x0800, CRC(7e2cb0e1) SHA1(3ea8f3c051ba730a39404b718d93bcdd762834c3) )
@ -482,17 +479,7 @@ ROM_END
*
*************************************/
static DRIVER_INIT( wldarrow )
{
offs_t i;
UINT8 *rom = machine.region("maincpu")->base();
for (i = 0; i < 0x3800; i++)
rom[i] ^= 0xff;
}
GAME( 1982, wldarrow, 0, wldarrow, wldarrow, wldarrow, ROT0, "Meyco Games", "Wild Arrow (Standard V4.8)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 198?, mdrawpkr, 0, wldarrow, mdrawpkr, wldarrow, ROT0, "Meyco Games", "Draw Poker Joker's Wild (Standard)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 198?, mdrawpkra, mdrawpkr, wldarrow, mdrawpkr, wldarrow, ROT0, "Meyco Games", "Draw Poker Joker's Wild (02-11)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 198?, unkmeyco, 0, wldarrow, mdrawpkr, wldarrow, ROT0, "Meyco Games", "unknown Meyco game", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1982, wldarrow, 0, wldarrow, wldarrow, 0, ROT0, "Meyco Games", "Wild Arrow (Standard V4.8)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1984, mdrawpkr, 0, wldarrow, mdrawpkr, 0, ROT0, "Meyco Games", "Draw Poker - Joker's Wild (Standard)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // year not shown, but it is in mdrawpkra
GAME( 1984, mdrawpkra, mdrawpkr, wldarrow, mdrawpkr, 0, ROT0, "Meyco Games", "Draw Poker - Joker's Wild (02-11)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1983, unkmeyco, 0, wldarrow, mdrawpkr, 0, ROT0, "Meyco Games", "unknown Meyco poker game (Standard 00-05)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )