mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
mpu4vid.cpp: Added inputs and layout for Strike it Lucky, corrected inputs for Adders and Ladders.
mpu4.cpp: Added support for simple LED extender used by MPU4Video games.
This commit is contained in:
parent
36ae40b4aa
commit
c665001905
@ -1,6 +1,6 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
/* these are the MPU4 set listings / set specific code, for hardware emulation see mpu4hw.c */
|
||||
/* these are the MPU4 set listings / set specific code, for hardware emulation see machine/mpu4.cpp */
|
||||
|
||||
/* todo: driver inits (basic hw reel, protection configs etc.) should probably be moved here
|
||||
once the actual code for them is cleaned up and can be put into neater structures
|
||||
|
@ -170,7 +170,7 @@ TODO:
|
||||
- Get the BwB games running
|
||||
* They have a slightly different 68k memory map. The 6850 is at e00000 and the 6840 is at e01000
|
||||
They appear to hang on the handshake with the MPU4 board
|
||||
- EF9369 colour palette is still wrong in test modes.
|
||||
- Layouts needed for the other working games, and DIP switches need checking/altering (no test mode?)
|
||||
***********************************************************************************************************/
|
||||
#include "emu.h"
|
||||
#include "includes/mpu4.h"
|
||||
@ -201,6 +201,7 @@ TODO:
|
||||
#include "crmaze2p.lh"
|
||||
#include "crmaze4p.lh"
|
||||
#include "v4addlad.lh"
|
||||
#include "v4strike.lh"
|
||||
|
||||
|
||||
class mpu4vid_state : public mpu4_state
|
||||
@ -1102,10 +1103,10 @@ static INPUT_PORTS_START( adders )
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE
|
||||
|
||||
PORT_START("BLACK2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_NAME("C")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_NAME("C")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_NAME("B")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_NAME("A")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_NAME("Continue")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_NAME("A")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_NAME("Continue")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_START1)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
@ -1238,6 +1239,120 @@ static INPUT_PORTS_START( v4tetris )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( strike )
|
||||
PORT_START("ORANGE1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_NAME("Freeze")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_NAME("Go On!")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("ORANGE2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("BLACK1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Play")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Green (Left)")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Yellow (Left)")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Red (Left)")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Test Button") PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE
|
||||
|
||||
PORT_START("BLACK2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_NAME("Help")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_NAME("Green (Right)")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_NAME("Yellow (Right)")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Red (Right)")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT) PORT_NAME("Collect")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_START1)
|
||||
|
||||
PORT_START("DIL1")
|
||||
PORT_DIPNAME( 0x01, 0x00, "DIL101" ) PORT_DIPLOCATION("DIL1:01")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, "DIL102" ) PORT_DIPLOCATION("DIL1:02")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, "DIL103" ) PORT_DIPLOCATION("DIL1:03")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x00, "DIL104" ) PORT_DIPLOCATION("DIL1:04")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, "DIL105" ) PORT_DIPLOCATION("DIL1:05")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, "DIL106" ) PORT_DIPLOCATION("DIL1:06")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, "DIL107" ) PORT_DIPLOCATION("DIL1:07")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, "DIL108" ) PORT_DIPLOCATION("DIL1:08")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DIL2")
|
||||
PORT_DIPNAME( 0x01, 0x00, "1 Pound for change" ) PORT_DIPLOCATION("DIL2:01")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, "DIL202" ) PORT_DIPLOCATION("DIL2:02")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, "DIL203" ) PORT_DIPLOCATION("DIL2:03")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x00, "Attract mode inhibit" ) PORT_DIPLOCATION("DIL2:04")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, "DIL205" ) PORT_DIPLOCATION("DIL2:05")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, "Coin alarm inhibit" ) PORT_DIPLOCATION("DIL2:06")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, "DIL207" ) PORT_DIPLOCATION("DIL2:07")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, "Single coin entry" ) PORT_DIPLOCATION("DIL2:08")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("AUX1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("AUX2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_CUSTOM)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_CUSTOM)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_CUSTOM)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_CUSTOM)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("10p")//PORT_IMPULSE(5)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN2) PORT_NAME("20p")//PORT_IMPULSE(5)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN3) PORT_NAME("50p")//PORT_IMPULSE(5)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")//PORT_IMPULSE(5)
|
||||
INPUT_PORTS_END
|
||||
|
||||
WRITE_LINE_MEMBER(mpu4vid_state::mpu_video_reset)
|
||||
{
|
||||
m_ptm->reset();
|
||||
@ -1339,7 +1454,6 @@ void mpu4vid_state::bwbvid_68k_map(address_map &map)
|
||||
map(0xc00000, 0xc1ffff).rw(FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram");
|
||||
map(0xe00000, 0xe00003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
|
||||
map(0xe01000, 0xe0100f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
|
||||
//map(0xe05000, 0xe05001).rw(FUNC(mpu4vid_state::bwb_characteriser16_r), FUNC(mpu4vid_state::bwb_characteriser16_w)); // CHR
|
||||
}
|
||||
|
||||
void mpu4vid_state::bwbvid5_68k_map(address_map &map)
|
||||
@ -1360,7 +1474,7 @@ void mpu4vid_state::bwbvid5_68k_map(address_map &map)
|
||||
map(0xe02000, 0xe02007).rw("pia_ic4ss", FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0xff00); //Seems odd...
|
||||
map(0xe03000, 0xe0300f).r("ptm_ic3ss", FUNC(ptm6840_device::read)).umask16(0xff00); // 6840PTM on sampled sound board
|
||||
map(0xe03000, 0xe0300f).w(FUNC(mpu4vid_state::ic3ss_vid_w)).umask16(0xff00); // 6840PTM on sampled sound board
|
||||
map(0xe04000, 0xe0400f).rw(FUNC(mpu4vid_state::bwb_characteriser_r), FUNC(mpu4vid_state::bwb_characteriser_w)).umask16(0x00ff); //.rw(FUNC(mpu4vid_state::adpcm_r), FUNC(mpu4vid_state::adpcm_w)); CHR ?
|
||||
map(0xe04000, 0xe0400f).rw(FUNC(mpu4vid_state::bwb_characteriser_r), FUNC(mpu4vid_state::bwb_characteriser_w)).umask16(0x00ff); // CHR ?
|
||||
}
|
||||
|
||||
/* TODO: Fix up MPU4 map*/
|
||||
@ -1903,6 +2017,7 @@ void mpu4vid_state::init_timemchn()
|
||||
|
||||
void mpu4vid_state::init_strikeit()
|
||||
{
|
||||
m_led_extender = SIMPLE_CARD;
|
||||
m_reels = 0;//currently no hybrid games
|
||||
m_current_chr_table = nullptr;
|
||||
m_4ktable = memregion( "video_prot" )->base();
|
||||
@ -4028,7 +4143,7 @@ GAMEL( 1994, v4cmaze3c, v4cmaze3, crmaze, crmaze, mpu4vid_state, init_v4c
|
||||
GAMEL( 1994, v4cmaze3a, v4cmaze3, crmaze, crmaze, mpu4vid_state, init_crmaze3a, ROT0, "Barcrest","The Crystal Maze Team Challenge (v1.2, AMLD) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7
|
||||
|
||||
//Year is a guess, based on the use of the 'Coin Man' logo
|
||||
GAME( 1996?,v4mate, v4bios, mating, mating, mpu4vid_state, init_mating, ROT0, "Barcrest","The Mating Game (v0.4) (MPU4 Video)",GAME_FLAGS )//SWP 0.2 /* Using crmaze controls for now, cabinet has trackball */
|
||||
GAME( 1996?,v4mate, v4bios, mating, mating, mpu4vid_state, init_mating, ROT0, "Barcrest","The Mating Game (v0.4) (MPU4 Video)",GAME_FLAGS )//SWP 0.2
|
||||
GAME( 1996?,v4mated, v4mate, mating, mating, mpu4vid_state, init_mating, ROT0, "Barcrest","The Mating Game (v0.4, Datapak) (MPU4 Video)",GAME_FLAGS )//SWP 0.2D
|
||||
|
||||
/* Quiz games - Questions decoded */
|
||||
@ -4037,10 +4152,10 @@ GAMEL( 1989, v4addlad, v4bios, mpu4_vid_strike, adders, mpu4vid_state,
|
||||
GAMEL( 1989, v4addladd, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1d) (MPU4 Video)",GAME_FLAGS,layout_v4addlad )
|
||||
GAMEL( 1989, v4addlad20, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.0) (MPU4 Video)",GAME_FLAGS,layout_v4addlad )
|
||||
|
||||
GAME( 199?, v4strike, v4bios, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5) (MPU4 Video)",GAME_FLAGS )
|
||||
GAME( 199?, v4striked, v4strike, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5, Datapak) (MPU4 Video)",GAME_FLAGS )
|
||||
GAME( 199?, v4strike2, v4strike, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.53) (MPU4 Video)",GAME_FLAGS )
|
||||
GAME( 199?, v4strike2d, v4strike, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.53, Datapak) (MPU4 Video)",GAME_FLAGS )
|
||||
GAMEL( 199?, v4strike, v4bios, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5) (MPU4 Video)",GAME_FLAGS,layout_v4strike )
|
||||
GAMEL( 199?, v4striked, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5, Datapak) (MPU4 Video)",GAME_FLAGS,layout_v4strike )
|
||||
GAMEL( 199?, v4strike2, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.53) (MPU4 Video)",GAME_FLAGS,layout_v4strike )
|
||||
GAMEL( 199?, v4strike2d, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.53, Datapak) (MPU4 Video)",GAME_FLAGS,layout_v4strike )
|
||||
|
||||
GAME( 199?, v4barqst, v4bios, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Barquest (v2.6) (MPU4 Video)",GAME_FLAGS )
|
||||
GAME( 199?, v4barqstd, v4barqst, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Barquest (v2.6d) (MPU4 Video)",GAME_FLAGS )
|
||||
|
@ -60,7 +60,7 @@ static const uint8_t bwb_chr_table_common[10]= {0x00,0x04,0x04,0x0c,0x0c,0x1c,0x
|
||||
#define SIX_REEL_1TO8 4 // Two reels on the meter drives
|
||||
#define SIX_REEL_5TO8 5 // Like FIVE_REEL_5TO8, but with an extra reel elsewhere
|
||||
#define SEVEN_REEL 6 // Mainly club machines, significant reworking of reel hardware
|
||||
#define FLUTTERBOX 7 // Will you start the fans, please! A fan using a reel mux-like setup, but not actually a reel
|
||||
#define FLUTTERBOX 7 // A fan feature using a reel mux-like setup, but not actually a reel
|
||||
|
||||
//Lamp extension
|
||||
#define NO_EXTENDER 0 // As originally designed
|
||||
@ -73,6 +73,8 @@ static const uint8_t bwb_chr_table_common[10]= {0x00,0x04,0x04,0x0c,0x0c,0x1c,0x
|
||||
#define CARD_A 1
|
||||
#define CARD_B 2
|
||||
#define CARD_C 3
|
||||
#define SIMPLE_CARD 4
|
||||
|
||||
|
||||
//Hopper info
|
||||
#define TUBES 0
|
||||
@ -159,6 +161,7 @@ public:
|
||||
void init_m4_led_a();
|
||||
void init_m4_led_b();
|
||||
void init_m4_led_c();
|
||||
void init_m4_led_simple();
|
||||
void init_m4_andycp10c();
|
||||
void init_m_blsbys();
|
||||
void init_m_oldtmr();
|
||||
@ -232,7 +235,7 @@ protected:
|
||||
void mpu4_memmap(address_map &map);
|
||||
void lamp_extend_small(int data);
|
||||
void lamp_extend_large(int data,int column,int active);
|
||||
void led_write_latch(int latch, int data, int column);
|
||||
void led_write_extender(int latch, int data, int column);
|
||||
void update_meters();
|
||||
void ic23_update();
|
||||
void ic24_output(int data);
|
||||
|
@ -46,7 +46,7 @@ license:CC0
|
||||
</element>
|
||||
|
||||
<view name="Monitor and Lamps">
|
||||
<bezel name="lamp41" element="ESCAPE">
|
||||
<bezel name="lamp41" element="ESCAPE" inputtag="BLACK2" inputmask="0x40">
|
||||
<bounds x="514" y="267" width="30" height="30" />
|
||||
</bezel>
|
||||
<bezel name="P1" element="P1">
|
||||
|
@ -59,7 +59,7 @@ license:CC0
|
||||
</element>
|
||||
|
||||
<view name="Monitor and Lamps">
|
||||
<bezel name="lamp41" element="ESCAPE">
|
||||
<bezel name="lamp41" element="ESCAPE" inputtag="BLACK2" inputmask="0x40">
|
||||
<bounds x="514" y="267" width="30" height="30" />
|
||||
</bezel>
|
||||
<bezel name="P1" element="P1">
|
||||
|
465
src/mame/layout/v4strike.lay
Normal file
465
src/mame/layout/v4strike.lay
Normal file
@ -0,0 +1,465 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
license:CC0
|
||||
-->
|
||||
<mamelayout version="2">
|
||||
<element name="GEMS" defstate="0">
|
||||
<text string="GEMS" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="7" />
|
||||
</text>
|
||||
<text string="FOR" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="8" width="16" height="7" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="FREEZE" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.0" blue="0.2" />
|
||||
</rect>
|
||||
<text string="FREEZE">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="7" />
|
||||
</text>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.0" blue="1.0" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="GO" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.2" green="0.2" blue="0.0" />
|
||||
</rect>
|
||||
<text string="GO ON">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="7" />
|
||||
</text>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.8" green="0.8" blue="0.0" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="FREEGAME">
|
||||
<text string="FREE">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="7" />
|
||||
</text>
|
||||
<text string="GAME">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="8" width="16" height="7" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="50P" defstate="0">
|
||||
<text string="50p" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£1" defstate="0">
|
||||
<text string="£1" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£2" defstate="0">
|
||||
<text string="£2" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£3" defstate="0">
|
||||
<text string="£3" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£4" defstate="0">
|
||||
<text string="£4" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£5" defstate="0">
|
||||
<text string="£5" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£6" defstate="0">
|
||||
<text string="£6" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£10" defstate="0">
|
||||
<text string="£10" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="£20" defstate="0">
|
||||
<text string="£20" state="0">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0" width="16" height="16" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="TRAIL1" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="252" height="16" />
|
||||
<color red="0.2" green="0.2" blue="0.2" />
|
||||
</rect>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="252" height="16" />
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="TRAIL2" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="80" height="16" />
|
||||
<color red="0.0" green="0.2" blue="0.0" />
|
||||
</rect>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="80" height="16" />
|
||||
<color red="0.0" green="1.0" blue="0.3" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="TRAIL3" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="80" height="16" />
|
||||
<color red="0.2" green="0.2" blue="0.0" />
|
||||
</rect>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="80" height="16" />
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="TRAIL4" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="80" height="16" />
|
||||
<color red="0.2" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="80" height="16" />
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="RED" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.5" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="YELLOW" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.5" green="0.5" blue="0.0" />
|
||||
</rect>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="GREEN" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.5" blue="0.0" />
|
||||
</rect>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="1.0" blue="0.0" />
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
<element name="PASS" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.0" blue="0.2" />
|
||||
</rect>
|
||||
<text string="PASS">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="2" y="2" width="16" height="8" />
|
||||
</text>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.3" blue="1.0" />
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
<element name="GET" defstate="0">
|
||||
<text string="COLLECT" state="0">
|
||||
<color red="0.1" green="0.1" blue="0.1" />
|
||||
<bounds x="0" y="0" width="16" height="8" />
|
||||
</text>
|
||||
<text string="COLLECT" state="1">
|
||||
<color red="1" green="0.1" blue="0.1" />
|
||||
<bounds x="0" y="0" width="16" height="8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="COLLECT" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="16" height="10" />
|
||||
<color red="0.5" green="0.2" blue="0.0" />
|
||||
</rect>
|
||||
<text string="COLLECT" state="0">
|
||||
<color red="0.1" green="0.1" blue="0.1" />
|
||||
<bounds x="0" y="0" width="16" height="8" />
|
||||
</text>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="16" height="10" />
|
||||
<color red="1.0" green="0.4" blue="0.0" />
|
||||
</rect>
|
||||
<text string="COLLECT" state="1">
|
||||
<color red="0.1" green="0.1" blue="0.1" />
|
||||
<bounds x="0" y="0" width="16" height="8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="START" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="16" height="10" />
|
||||
<color red="0.0" green="0.3" blue="0.1" />
|
||||
</rect>
|
||||
<text string="START" state="0">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0" width="16" height="8" />
|
||||
</text>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="16" height="10" />
|
||||
<color red="0.0" green="1.0" blue="0.3" />
|
||||
</rect>
|
||||
<text string="START" state="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0" width="16" height="8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="HELP" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="HELP" state="0">
|
||||
<color red="0.2" green="0.2" blue="0.2" />
|
||||
<bounds x="2" y="2" width="16" height="8" />
|
||||
</text>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="HELP" state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="2" y="2" width="16" height="8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="PLAY" defstate="0">
|
||||
<rect state ="0">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.0" blue="0.3" />
|
||||
</rect>
|
||||
<text string="PLAY">
|
||||
<color red="0.2" green="0.2" blue="0.2" />
|
||||
<bounds x="2" y="2" width="16" height="8" />
|
||||
</text>
|
||||
<rect state ="1">
|
||||
<bounds x="0" y="0" width="20" height="10" />
|
||||
<color red="0.0" green="0.0" blue="1.0" />
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</led7seg>
|
||||
</element>
|
||||
|
||||
|
||||
<view name="Monitor and Lamps">
|
||||
<bezel name="lamp85" element="TRAIL1">
|
||||
<bounds x="50" y="10" width="252" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp85" element="TRAIL2">
|
||||
<bounds x="252" y="10" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp85" element="TRAIL3">
|
||||
<bounds x="332" y="10" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp85" element="TRAIL4">
|
||||
<bounds x="412" y="10" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit14" element="digit">
|
||||
<bounds x="100" y="10" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit15" element="digit">
|
||||
<bounds x="140" y="10" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp85" element="GET">
|
||||
<bounds x="50" y="10" width="50" height="60" />
|
||||
</bezel>
|
||||
<bezel name="GEMS" element="GEMS">
|
||||
<bounds x="180" y="10" width="72" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£5" element="£5">
|
||||
<bounds x="252" y="10" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£10" element="£10">
|
||||
<bounds x="332" y="10" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£20" element="£20">
|
||||
<bounds x="412" y="10" width="80" height="60" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp93" element="TRAIL1">
|
||||
<bounds x="50" y="70" width="252" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp93" element="TRAIL2">
|
||||
<bounds x="252" y="70" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp93" element="TRAIL3">
|
||||
<bounds x="332" y="70" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp93" element="TRAIL4">
|
||||
<bounds x="412" y="70" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit12" element="digit">
|
||||
<bounds x="100" y="70" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit13" element="digit">
|
||||
<bounds x="140" y="70" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp93" element="GET">
|
||||
<bounds x="50" y="70" width="50" height="60" />
|
||||
</bezel>
|
||||
<bezel name="GEMS" element="GEMS">
|
||||
<bounds x="180" y="70" width="72" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£2" element="£2">
|
||||
<bounds x="252" y="70" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£4" element="£4">
|
||||
<bounds x="332" y="70" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£6" element="£6">
|
||||
<bounds x="412" y="70" width="80" height="60" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp101" element="TRAIL1">
|
||||
<bounds x="50" y="130" width="252" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp101" element="TRAIL2">
|
||||
<bounds x="252" y="130" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp101" element="TRAIL3">
|
||||
<bounds x="332" y="130" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp101" element="TRAIL4">
|
||||
<bounds x="412" y="130" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit10" element="digit">
|
||||
<bounds x="100" y="130" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit11" element="digit">
|
||||
<bounds x="140" y="130" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp101" element="GET">
|
||||
<bounds x="50" y="130" width="50" height="60" />
|
||||
</bezel>
|
||||
<bezel name="GEMS" element="GEMS">
|
||||
<bounds x="180" y="130" width="72" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£1" element="£1">
|
||||
<bounds x="252" y="130" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£2" element="£2">
|
||||
<bounds x="332" y="130" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£3" element="£3">
|
||||
<bounds x="412" y="130" width="80" height="60" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp109" element="TRAIL1">
|
||||
<bounds x="50" y="190" width="252" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp109" element="TRAIL2">
|
||||
<bounds x="252" y="190" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp109" element="TRAIL3">
|
||||
<bounds x="332" y="190" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp109" element="TRAIL4">
|
||||
<bounds x="412" y="190" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit8" element="digit">
|
||||
<bounds x="100" y="190" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="digit9" element="digit">
|
||||
<bounds x="140" y="190" width="40" height="60" />
|
||||
</bezel>
|
||||
<bezel name="lamp109" element="GET">
|
||||
<bounds x="50" y="190" width="50" height="60" />
|
||||
</bezel>
|
||||
<bezel name="GEMS" element="GEMS">
|
||||
<bounds x="180" y="190" width="72" height="60" />
|
||||
</bezel>
|
||||
<bezel name="FREEGAME" element="FREEGAME">
|
||||
<bounds x="252" y="190" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="50P" element="50P">
|
||||
<bounds x="332" y="190" width="80" height="60" />
|
||||
</bezel>
|
||||
<bezel name="£1" element="£1">
|
||||
<bounds x="412" y="190" width="80" height="60" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp25" element="COLLECT" inputtag="BLACK2" inputmask="0x40">
|
||||
<bounds x="0" y="310" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp32" element="RED" inputtag="BLACK1" inputmask="0x10">
|
||||
<bounds x="0" y="360" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp34" element="YELLOW" inputtag="BLACK1" inputmask="0x08">
|
||||
<bounds x="0" y="410" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp41" element="GREEN" inputtag="BLACK1" inputmask="0x04">
|
||||
<bounds x="0" y="460" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp48" element="PLAY" inputtag="BLACK1" inputmask="0x02">
|
||||
<bounds x="0" y="510" width="48" height="50" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp24" element="START" inputtag="BLACK2" inputmask="0x80">
|
||||
<bounds x="560" y="310" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp26" element="RED" inputtag="BLACK2" inputmask="0x10">
|
||||
<bounds x="560" y="360" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp33" element="YELLOW" inputtag="BLACK2" inputmask="0x08">
|
||||
<bounds x="560" y="410" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp40" element="GREEN" inputtag="BLACK2" inputmask="0x04">
|
||||
<bounds x="560" y="460" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp42" element="HELP" inputtag="BLACK2" inputmask="0x02">
|
||||
<bounds x="564" y="510" width="48" height="50" />
|
||||
</bezel>
|
||||
<bezel name="lamp51" element="FREEZE" inputtag="ORANGE1" inputmask="0x10">
|
||||
<bounds x="250" y="560" width="50" height="50" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp35" element="GO" inputtag="ORANGE1" inputmask="0x40">
|
||||
<bounds x="300" y="560" width="50" height="50" />
|
||||
</bezel>
|
||||
|
||||
<screen index="0">
|
||||
<bounds x="50" y="260" width="504" height="296" />
|
||||
</screen>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -23,6 +23,7 @@
|
||||
This is the core driver, no video specific stuff should go in here.
|
||||
This driver holds all the mechanical games.
|
||||
|
||||
Old logs shown here from pre-GIT days:
|
||||
06-2011: Fixed boneheaded interface glitch that was causing samples to not be cancelled correctly.
|
||||
Added the ability to read each segment of an LED display separately, this may be necessary for some
|
||||
games that use them as surrogate lamp lines.
|
||||
@ -251,9 +252,8 @@ To change between them, follow these instructions:
|
||||
TODO: - Distinguish door switches using manual
|
||||
- Complete stubs for hoppers (needs slightly better 68681 emulation, and new 'hoppers' device emulation)
|
||||
- It seems that the MPU4 core program relies on some degree of persistence when switching strobes and handling
|
||||
writes to the various hardware ports. This explains the occasional lamping/LED blackout and switching bugs
|
||||
For now, we're ignoring any extra writes to strobes, as the alternative is to assign a timer to *everything* and
|
||||
start modelling the individual hysteresis curves of filament lamps.
|
||||
writes to the various hardware ports. This explains the occasional lamping/LED blackout and switching bugs.
|
||||
Ideally, this needs converting to the PWM device, but that will be a complex job with this many outputs.
|
||||
- Fix BwB characteriser, need to be able to calculate stabiliser bytes. Anyone fancy reading 6809 source?
|
||||
- Strange bug in Andy's Great Escape - Mystery nudge sound effect is not played, mpu4 latches in silence instead (?)
|
||||
|
||||
@ -300,7 +300,7 @@ void mpu4_state::lamp_extend_small(int data)
|
||||
if (m_lamp_strobe_ext_persistence == 0)
|
||||
{
|
||||
//One write to reset the drive lines, one with the data, one to clear the lines, so only the 2nd write does anything
|
||||
//Once again, lamp persistences would take care of this, but we can't do that
|
||||
//TODO: PWM
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
m_lamps[(8*column)+i+128] = BIT(lamp_ext_data, i);
|
||||
@ -334,7 +334,7 @@ void mpu4_state::lamp_extend_large(int data,int column,int active)
|
||||
if (m_lamp_strobe_ext != column)
|
||||
{
|
||||
for (i = 0; i < 8; i++)
|
||||
{//CHECK, this includes bit 7
|
||||
{//CHECK, this includes bit 7, which seems wrong
|
||||
m_lamps[(8*column)+i+128+lampbase] = BIT(data, i);
|
||||
}
|
||||
m_lamp_strobe_ext = column;
|
||||
@ -348,27 +348,25 @@ void mpu4_state::lamp_extend_large(int data,int column,int active)
|
||||
}
|
||||
}
|
||||
|
||||
void mpu4_state::led_write_latch(int latch, int data, int column)
|
||||
void mpu4_state::led_write_extender(int latch, int data, int starting_column)
|
||||
{
|
||||
int diff,i,j;
|
||||
int diff,i,j, ext_strobe;
|
||||
|
||||
diff = (latch ^ m_last_latch) & latch;
|
||||
column = 7 - column; // like main board, these are wired up in reverse
|
||||
data = ~data;//inverted drive lines?
|
||||
ext_strobe = (7 - starting_column) * 8;
|
||||
|
||||
data = ~data;//invert drive lines
|
||||
for (i=0; i<5; i++)
|
||||
{
|
||||
// FIXME: this doesn't look like it could possibly be correct - it can produce 0..17 but with lots of aliasing
|
||||
if (diff & (1<<i))
|
||||
{
|
||||
column += i;
|
||||
for (j=0; j<8; j++)
|
||||
{
|
||||
m_mpu4leds[(ext_strobe + i) | j], BIT(data, j);
|
||||
}
|
||||
m_digits[(ext_strobe + i)] = data;
|
||||
}
|
||||
}
|
||||
for (j=0; j<8; j++)
|
||||
{
|
||||
m_mpu4leds[(column << 3) | j], BIT(data, j);
|
||||
}
|
||||
m_digits[column << 3] = data; // FIXME should this really be so sparse?
|
||||
|
||||
m_last_latch = diff;
|
||||
}
|
||||
@ -465,12 +463,10 @@ MACHINE_RESET_MEMBER(mpu4_state,mpu4)
|
||||
m_chr_value = 0;
|
||||
|
||||
|
||||
{
|
||||
if (m_numbanks)
|
||||
m_bank1->set_entry(m_numbanks);
|
||||
if (m_numbanks)
|
||||
m_bank1->set_entry(m_numbanks);
|
||||
|
||||
m_maincpu->reset();
|
||||
}
|
||||
m_maincpu->reset();
|
||||
}
|
||||
|
||||
|
||||
@ -512,7 +508,6 @@ void mpu4_state::bankswitch_w(uint8_t data)
|
||||
{
|
||||
// printf("bankswitch_w %02x\n", data);
|
||||
|
||||
// m_pageset is never even set??
|
||||
m_pageval = (data & 0x03);
|
||||
m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & m_numbanks);
|
||||
}
|
||||
@ -528,8 +523,6 @@ void mpu4_state::bankset_w(uint8_t data)
|
||||
{
|
||||
// printf("bankset_w %02x\n", data);
|
||||
|
||||
// m_pageset is never even set??
|
||||
|
||||
m_pageval = (data - 2);//writes 2 and 3, to represent 0 and 1 - a hangover from the half page design?
|
||||
m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & m_numbanks);
|
||||
}
|
||||
@ -605,7 +598,6 @@ void mpu4_state::pia_ic3_portb_w(uint8_t data)
|
||||
{
|
||||
/* Some games (like Connect 4) use 'programmable' LED displays, built from light display lines in section 2. */
|
||||
/* These are mostly low-tech machines, where such wiring proved cheaper than an extender card */
|
||||
/* TODO: replace this with 'segment' lamp masks, to make it more generic */
|
||||
uint8_t pled_segs[2] = {0,0};
|
||||
|
||||
static const int lamps1[8] = { 106, 107, 108, 109, 104, 105, 110, 111 };
|
||||
@ -874,7 +866,7 @@ void mpu4_state::pia_ic5_porta_w(uint8_t data)
|
||||
case NO_EXTENDER:
|
||||
if (m_led_extender == CARD_B)
|
||||
{
|
||||
led_write_latch(data & 0x1f, m_pia4->a_output(),m_input_strobe);
|
||||
led_write_extender(data & 0x1f, m_pia4->a_output(),m_input_strobe);
|
||||
}
|
||||
else if ((m_led_extender != CARD_A) && (m_led_extender != NO_EXTENDER))
|
||||
{
|
||||
@ -1029,10 +1021,22 @@ void mpu4_state::pia_ic5_portb_w(uint8_t data)
|
||||
}
|
||||
if (m_led_extender == CARD_A)
|
||||
{
|
||||
led_write_latch(data & 0x07, m_pia4->a_output(),m_input_strobe);
|
||||
led_write_extender(data & 0x07, m_pia4->a_output(),m_input_strobe);
|
||||
}
|
||||
else if (m_led_extender == SIMPLE_CARD)
|
||||
{
|
||||
if(m_led_strobe != m_input_strobe)
|
||||
{
|
||||
for(int i=0; i<8; i++)
|
||||
{
|
||||
m_mpu4leds[( ( (7 - m_input_strobe) + 8) << 3) | i] = BIT(m_pia4->a_output(), i);
|
||||
}
|
||||
m_digits[(7 - m_input_strobe) + 8] = m_pia4->a_output();
|
||||
}
|
||||
m_led_strobe = m_input_strobe;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint8_t mpu4_state::pia_ic5_portb_r()
|
||||
{
|
||||
if (m_hopper == HOPPER_NONDUART_B)
|
||||
@ -1398,6 +1402,7 @@ WRITE_LINE_MEMBER(mpu4_state::pia_gb_cb2_w)
|
||||
if (m_bwb_bank)
|
||||
{
|
||||
//printf("pia_gb_cb2_w %d\n", state);
|
||||
//m_pageset?
|
||||
m_pageval = state;
|
||||
m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & m_numbanks);
|
||||
}
|
||||
@ -2380,6 +2385,11 @@ void mpu4_state::init_m4_led_c()
|
||||
m_led_extender = CARD_C;
|
||||
}
|
||||
|
||||
void mpu4_state::init_m4_led_simple()
|
||||
{
|
||||
m_led_extender = SIMPLE_CARD;
|
||||
}
|
||||
|
||||
//TODO: Replace with standard six reels once sets are sorted out - is really six_reel_std
|
||||
void mpu4_state::init_m4altreels()
|
||||
{
|
||||
@ -3130,7 +3140,7 @@ void mpu4_state::mod4oki(machine_config &config)
|
||||
mpu4_common2(config);
|
||||
mpu4_std_6reel(config);
|
||||
|
||||
OKIM6376(config, m_msm6376, 128000); //16KHz sample Can also be 85430 at 10.5KHz and 64000 at 8KHz
|
||||
OKIM6376(config, m_msm6376, 128000); //Adjusted by IC3, default to 16KHz sample. Can also be 85430 at 10.5KHz and 64000 at 8KHz
|
||||
m_msm6376->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
|
||||
m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user