mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
by6803: added notes.
This commit is contained in:
parent
c5d5251109
commit
91d68adfe9
@ -10,12 +10,38 @@ The characteristic 6803 pinball has 4x 7-digit displays lined up along the botto
|
||||
|
||||
Schematic has a number of mistakes.
|
||||
|
||||
Here are the key codes to enable play: (to do)
|
||||
|
||||
Game NUM Start game End ball
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Eight Ball Champ 0B38 (not working)
|
||||
Beat the Clock 0C70 (not working)
|
||||
Motordome 0E14 (can't insert coin)
|
||||
Lady Luck 0E34 (not working)
|
||||
Strange Science 0E35 (can't insert coin)
|
||||
Special Force / Special Force Girls 0E47 (can't insert coin)
|
||||
Black Belt / Karate Fight 0E52 (can't insert coin)
|
||||
City Slicker 0E79 (can't insert coin)
|
||||
Hardbody / Super Sport 0E94 (stuck switch)
|
||||
Party Animal 0H01 (can't insert coin)
|
||||
Heavy Metal Meltdown 0H03 (can't insert coin)
|
||||
Escape from the Lost World 0H05 Hold DX, hit 1 DX
|
||||
Dungeons and Dragons 0H06 (can't insert coin)
|
||||
Blackwater 100 0H07 Hold Enter ][, hit 1 Jiggle ]X[
|
||||
Hot Shotz (unemulated prototype)
|
||||
**** After merge with Williams ****
|
||||
Diesel Demon / Ramp Warrior / Truck Stop 2001 Hold Right Down, hit 1 Hold Right Down, hit X
|
||||
Atlantis 2006 Hold Left Down Right, hit 1 Down Left Right
|
||||
|
||||
|
||||
Status:
|
||||
- 2nd gen games boot up and display, some can coin up, but cannot start due to balls missing
|
||||
- 2nd gen games boot up and display. See above table for individual status.
|
||||
|
||||
ToDo:
|
||||
- Sound
|
||||
- Mechanical sounds
|
||||
- Outputs
|
||||
- 1st gen display
|
||||
- 1st gen display needs credits/balls
|
||||
- Commas are missing from the display.
|
||||
- Code has provision for a round LED, to be added to layout.
|
||||
- Operator keypad
|
||||
@ -27,12 +53,14 @@ ToDo:
|
||||
|
||||
#include "emu.h"
|
||||
//#include "audio/midway.h"
|
||||
//#include "audio/williams.h"
|
||||
#include "machine/genpin.h"
|
||||
|
||||
#include "cpu/m6800/m6801.h"
|
||||
//#include "cpu/m6809/m6809.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/timer.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#include "by6803.lh"
|
||||
|
||||
@ -45,6 +73,7 @@ public:
|
||||
by6803_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: genpin_class(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
//, m_s11sound(*this, "s11sound")
|
||||
, m_pia0(*this, "pia0")
|
||||
, m_pia1(*this, "pia1")
|
||||
, m_io_test(*this, "TEST")
|
||||
@ -55,6 +84,8 @@ public:
|
||||
{ }
|
||||
|
||||
void by6803(machine_config &config);
|
||||
void digit6(machine_config &config);
|
||||
void s11(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(activity_test);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(self_test);
|
||||
@ -68,13 +99,16 @@ private:
|
||||
void port1_w(u8 data);
|
||||
u8 port2_r();
|
||||
void port2_w(u8 data);
|
||||
u8 pia0_a_r();
|
||||
void pia0_a_w(u8 data);
|
||||
u8 pia0_b_r();
|
||||
void pia0_b_w(u8 data);
|
||||
u8 pia1_a_r();
|
||||
void pia1_a_w(u8 data);
|
||||
void pia1_b_w(u8 data);
|
||||
u8 pia0a_r();
|
||||
void pia0a_w(u8 data);
|
||||
u8 pia0b_r();
|
||||
void pia0b_w(u8 data);
|
||||
u8 pia1a_r();
|
||||
void pia1a_w(u8 data);
|
||||
void pia1b_w(u8 data);
|
||||
void pia0a_6w(u8 data);
|
||||
void pia1a_6w(u8 data);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia0_ca2_6w);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia0_ca2_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia0_cb2_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia1_cb2_w);
|
||||
@ -82,16 +116,17 @@ private:
|
||||
|
||||
void by6803_map(address_map &map);
|
||||
|
||||
u8 m_pia0_a = 0;
|
||||
u8 m_pia0_b = 0;
|
||||
u8 m_pia1_a = 0;
|
||||
u8 m_pia1_b = 0;
|
||||
u8 m_pia0_a = 0U;
|
||||
u8 m_pia0_b = 0U;
|
||||
u8 m_pia1_a = 0U;
|
||||
u8 m_pia1_b = 0U;
|
||||
bool m_pia0_cb2 = 0;
|
||||
bool m_pia0_timer = 0;
|
||||
u8 m_port1, m_port2 = 0;
|
||||
u8 m_digit = 0;
|
||||
u8 m_segment[2]{};
|
||||
u8 m_port1 = 0U, m_port2 = 0U;
|
||||
u8 m_digit = 0U;
|
||||
u8 m_segment[4]{};
|
||||
required_device<m6803_cpu_device> m_maincpu;
|
||||
//optional_device<williams_s11b_sound_device> m_s11sound;
|
||||
required_device<pia6821_device> m_pia0;
|
||||
required_device<pia6821_device> m_pia1;
|
||||
required_ioport m_io_test;
|
||||
@ -120,57 +155,57 @@ static INPUT_PORTS_START( by6803 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("INP02")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("INP03")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("INP04")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("INP05")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LSHIFT) PORT_NAME("Left Flipper")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("INP07")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Right Flipper")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole")
|
||||
|
||||
PORT_START("X1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("INP12")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("INP13")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("INP16")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("INP12")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("INP13")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Shooter Lane")
|
||||
|
||||
// from here, vary per game
|
||||
PORT_START("X2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("INP17")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("INP18")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("INP19")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("INP20")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("INP21")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("INP22")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("INP23")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("INP24")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("INP17")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("INP18")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("INP19")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("INP20")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("INP21")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("INP22")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("INP23")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("INP24")
|
||||
|
||||
PORT_START("X3")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("INP25")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP26")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP27")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP28")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP29")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP30")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP31")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP32")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("INP25")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("INP26")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("INP27")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("INP28")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP29")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP30")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP31")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP32")
|
||||
|
||||
PORT_START("X4")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP33")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP34")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP35")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP36")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP37")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP38")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP39")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP40")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP33")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP34")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP35")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP36")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP37")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP38")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP39")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP40")
|
||||
|
||||
PORT_START("X5")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP41")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("INP42")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("INP43")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("INP44")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP41")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP42")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP43")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP44")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_NAME("INP45")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_NAME("INP46")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("INP47")
|
||||
@ -218,8 +253,6 @@ void by6803_state::port2_w(u8 data)
|
||||
// display latch strobes; display blanking
|
||||
WRITE_LINE_MEMBER( by6803_state::pia0_ca2_w )
|
||||
{
|
||||
//printf("CA02=%X ",state);
|
||||
|
||||
if (state)
|
||||
{
|
||||
// comma info is available in m_pia1_a at this time.
|
||||
@ -231,7 +264,7 @@ WRITE_LINE_MEMBER( by6803_state::pia0_ca2_w )
|
||||
// lamp strobe 1 when high
|
||||
WRITE_LINE_MEMBER( by6803_state::pia0_cb2_w )
|
||||
{
|
||||
//printf("CB02=%X ",state);
|
||||
//printf("CB02=%X,m_pia0_a=%X ",state,m_pia0_a);
|
||||
}
|
||||
|
||||
// sol bank select (0 to enable sol selection)
|
||||
@ -240,7 +273,7 @@ WRITE_LINE_MEMBER( by6803_state::pia1_cb2_w )
|
||||
//printf("CB12=%X ",state);
|
||||
}
|
||||
|
||||
u8 by6803_state::pia0_a_r()
|
||||
u8 by6803_state::pia0a_r()
|
||||
{
|
||||
return m_pia0_a;
|
||||
}
|
||||
@ -250,7 +283,7 @@ u8 by6803_state::pia0_a_r()
|
||||
// d0-3 lamp rows & d5=0 & pia0:cb2=1 (1st lamp bank)
|
||||
// d0-3 lamp rows & d6=0 & pia0:cb2=1 (2nd lamp bank)
|
||||
// d0-3 lamp rows & d7=0 & pia0:cb2=1 (3rd lamp bank)
|
||||
void by6803_state::pia0_a_w(u8 data)
|
||||
void by6803_state::pia0a_w(u8 data)
|
||||
{
|
||||
m_pia0_a = data;
|
||||
if ((data & 15)==14)
|
||||
@ -266,35 +299,38 @@ void by6803_state::pia0_a_w(u8 data)
|
||||
}
|
||||
|
||||
// switch returns
|
||||
u8 by6803_state::pia0_b_r()
|
||||
u8 by6803_state::pia0b_r()
|
||||
{
|
||||
u8 data = 0;
|
||||
u8 data = 0U, strobes = m_pia0_a;
|
||||
|
||||
if (BIT(m_pia1_b, 4))
|
||||
strobes |= 0x20;
|
||||
|
||||
for (u8 i = 0; i < 6; i++)
|
||||
if (BIT(m_pia0_a, i))
|
||||
if (BIT(strobes, i))
|
||||
data |= m_io_keyboard[i]->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void by6803_state::pia0_b_w(u8 data)
|
||||
void by6803_state::pia0b_w(u8 data)
|
||||
{
|
||||
m_pia0_b = data;
|
||||
}
|
||||
|
||||
u8 by6803_state::pia1_a_r()
|
||||
u8 by6803_state::pia1a_r()
|
||||
{
|
||||
return m_pia1_a;
|
||||
}
|
||||
|
||||
// segment data; d0 & pia0:ca2 = comma; passed to digits when PA0? is high (assume they mean pia0:pa0)
|
||||
void by6803_state::pia1_a_w(u8 data)
|
||||
void by6803_state::pia1a_w(u8 data)
|
||||
{
|
||||
m_pia1_a = data;
|
||||
}
|
||||
|
||||
// solenoids, activated when pia1:cb2 is low
|
||||
void by6803_state::pia1_b_w(u8 data)
|
||||
void by6803_state::pia1b_w(u8 data)
|
||||
{
|
||||
m_pia1_b = data;
|
||||
switch (data & 15)
|
||||
@ -346,6 +382,33 @@ void by6803_state::pia1_b_w(u8 data)
|
||||
}
|
||||
}
|
||||
|
||||
void by6803_state::pia0a_6w(u8 data)
|
||||
{
|
||||
for (u8 i = 0; i < 4; i++)
|
||||
if (!BIT(data, i))
|
||||
m_segment[i] = BIT(data, 4, 4);
|
||||
}
|
||||
|
||||
void by6803_state::pia1a_6w(u8 data)
|
||||
{
|
||||
if (!BIT(data, 0))
|
||||
for (u8 i = 1; i < 8; i++)
|
||||
if (BIT(data, i))
|
||||
m_digit = 7 - i;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( by6803_state::pia0_ca2_6w )
|
||||
{
|
||||
static const u8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
if (state)
|
||||
{
|
||||
m_digits[m_digit] = patterns[m_segment[0]];
|
||||
m_digits[m_digit+7] = patterns[m_segment[1]];
|
||||
m_digits[m_digit+16] = patterns[m_segment[2]];
|
||||
m_digits[m_digit+23] = patterns[m_segment[3]];
|
||||
}
|
||||
}
|
||||
|
||||
void by6803_state::machine_start()
|
||||
{
|
||||
genpin_class::machine_start();
|
||||
@ -418,10 +481,10 @@ void by6803_state::by6803(machine_config &config)
|
||||
|
||||
/* Devices */
|
||||
PIA6821(config, m_pia0, 0);
|
||||
m_pia0->readpa_handler().set(FUNC(by6803_state::pia0_a_r));
|
||||
m_pia0->writepa_handler().set(FUNC(by6803_state::pia0_a_w));
|
||||
m_pia0->readpb_handler().set(FUNC(by6803_state::pia0_b_r));
|
||||
m_pia0->writepb_handler().set(FUNC(by6803_state::pia0_b_w));
|
||||
m_pia0->readpa_handler().set(FUNC(by6803_state::pia0a_r));
|
||||
m_pia0->writepa_handler().set(FUNC(by6803_state::pia0a_w));
|
||||
m_pia0->readpb_handler().set(FUNC(by6803_state::pia0b_r));
|
||||
m_pia0->writepb_handler().set(FUNC(by6803_state::pia0b_w));
|
||||
m_pia0->ca2_handler().set(FUNC(by6803_state::pia0_ca2_w));
|
||||
m_pia0->cb2_handler().set(FUNC(by6803_state::pia0_cb2_w));
|
||||
m_pia0->irqa_handler().set_inputline("maincpu", M6803_IRQ_LINE);
|
||||
@ -429,25 +492,38 @@ void by6803_state::by6803(machine_config &config)
|
||||
TIMER(config, "timer_z").configure_periodic(FUNC(by6803_state::pia0_timer), attotime::from_hz(120)); // mains freq*2
|
||||
|
||||
PIA6821(config, m_pia1, 0);
|
||||
m_pia1->readpa_handler().set(FUNC(by6803_state::pia1_a_r));
|
||||
m_pia1->writepa_handler().set(FUNC(by6803_state::pia1_a_w));
|
||||
m_pia1->writepb_handler().set(FUNC(by6803_state::pia1_b_w));
|
||||
m_pia1->readpa_handler().set(FUNC(by6803_state::pia1a_r));
|
||||
m_pia1->writepa_handler().set(FUNC(by6803_state::pia1a_w));
|
||||
m_pia1->writepb_handler().set(FUNC(by6803_state::pia1b_w));
|
||||
m_pia1->cb2_handler().set(FUNC(by6803_state::pia1_cb2_w));
|
||||
|
||||
//SPEAKER(config, "mono").front_center();
|
||||
//MIDWAY_TURBO_CHEAP_SQUEAK(config, "tcs").add_route(ALL_OUTPUTS, "speaker", 1.0); // Cheap Squeak Turbo
|
||||
SPEAKER(config, "mono").front_center();
|
||||
//MIDWAY_TURBO_CHEAP_SQUEAK(config, "tcs").add_route(ALL_OUTPUTS, "mono", 1.0); // Cheap Squeak Turbo
|
||||
}
|
||||
|
||||
void by6803_state::s11(machine_config &config)
|
||||
{
|
||||
by6803(config);
|
||||
//WILLIAMS_S11B_SOUND(config, m_s11sound, 0).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
void by6803_state::digit6(machine_config &config)
|
||||
{
|
||||
by6803(config);
|
||||
m_pia0->writepa_handler().set(FUNC(by6803_state::pia0a_6w));
|
||||
m_pia1->writepa_handler().set(FUNC(by6803_state::pia1a_6w));
|
||||
m_pia0->ca2_handler().set(FUNC(by6803_state::pia0_ca2_6w));
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
/*------------------
|
||||
/ Atlantis #2006
|
||||
/-----------------------------------------------------------*/
|
||||
/------------------*/
|
||||
ROM_START(atlantip)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u26_cpu.rom", 0x8000, 0x4000, CRC(b98491e1) SHA1(b867e2b24e93c4ee19169fe93c0ebfe0c1e2fc25))
|
||||
ROM_LOAD( "u27_cpu.rom", 0xc000, 0x4000, CRC(8ea2b4db) SHA1(df55a9fb70d1cabad51dc2b089af7904a823e1d8))
|
||||
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x30000, "sound1", 0)
|
||||
ROM_REGION(0x30000, "s11sound:audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_LOAD("u4_snd.rom", 0x00000, 0x8000, CRC(6a48b588) SHA1(c58dbfd920c279d7b9d2de8558d73c687b29ce9c))
|
||||
ROM_RELOAD(0x00000+0x8000, 0x8000)
|
||||
ROM_LOAD("u19_snd.rom", 0x10000, 0x8000, CRC(1387467c) SHA1(8b3dd6c2fc94cfebc1879795532c651cda202846))
|
||||
@ -456,9 +532,9 @@ ROM_START(atlantip)
|
||||
ROM_RELOAD(0x20000+0x8000, 0x8000)
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/*-----------------------
|
||||
/ Beat the Clock #0C70
|
||||
/------------------------------------*/
|
||||
/-----------------------*/
|
||||
ROM_START(beatclck)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "btc_u3.cpu", 0xc000, 0x4000, CRC(9ba822ab) SHA1(f28d38411df3978bcaf24177fa1b47037a586cbb))
|
||||
@ -479,13 +555,9 @@ ROM_START(beatclck2)
|
||||
ROM_LOAD("btc_u5.snd", 0xf000, 0x1000, CRC(230cf329) SHA1(45b17a785b81cd5b1d7fdfb720cf1990994b52b7))
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/ Karate Fight
|
||||
/------------------------------------*/
|
||||
|
||||
/*------------------------------------
|
||||
/*-------------------
|
||||
/ Black Belt #0E52
|
||||
/------------------------------------*/
|
||||
/-------------------*/
|
||||
ROM_START(blackblt)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u2.cpu", 0x8000, 0x4000, CRC(7c771910) SHA1(1df8ae478c3626a5200215bfca557ca42e064d2b))
|
||||
@ -505,9 +577,9 @@ ROM_START(blackblt2)
|
||||
ROM_LOAD("blb_u5.snd", 0xf000, 0x1000, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/*-----------------------
|
||||
/ Blackwater 100 #0H07
|
||||
/------------------------------------*/
|
||||
/-----------------------*/
|
||||
ROM_START(black100)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u2.cpu", 0x8000, 0x4000, CRC(411fa773) SHA1(9756c7eee0f78792823a0b0379d2baac28cb03e8))
|
||||
@ -530,9 +602,9 @@ ROM_START(black100s)
|
||||
ROM_LOAD16_BYTE("u13.bin", 0x20000, 0x10000, CRC(f5890443) SHA1(77cd18cf5541ae9f7e2dd1c060a9bf29b242d05d))
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/*----------------------
|
||||
/ City Slicker #0E79
|
||||
/------------------------------------*/
|
||||
/----------------------*/
|
||||
ROM_START(cityslck)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u2.128", 0x8000, 0x4000, CRC(94bcf162) SHA1(1d83592ad2441fc5e4c6fd3ab2373614dfe78b34))
|
||||
@ -541,9 +613,9 @@ ROM_START(cityslck)
|
||||
ROM_LOAD("u7_snd.512", 0x0000, 0x10000, CRC(6941d68a) SHA1(28de4327f328d16ec4cab59642c185777535efb2))
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/*--------------------------
|
||||
/ Dungeons & Dragons #0H06
|
||||
/------------------------------------*/
|
||||
/--------------------------*/
|
||||
ROM_START(dungdrag)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "cpu_u2.128", 0x8000, 0x4000, CRC(cefd4330) SHA1(0bffb2b73229e9908a018e06daeceb736896e5f0))
|
||||
@ -555,9 +627,9 @@ ROM_START(dungdrag)
|
||||
ROM_LOAD16_BYTE("snd_u13.512", 0x20000, 0x10000, CRC(1e2d9211) SHA1(f5fcf1c07f01e7f1a7abff9ac3c481b84471d3a6))
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/*-------------------------
|
||||
/ Eight Ball Champ #0B38
|
||||
/------------------------------------*/
|
||||
/-------------------------*/
|
||||
ROM_START(eballchp)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u3_cpu.128", 0xc000, 0x4000, CRC(025f3008) SHA1(25d310f169b92ce6b348330816ddc3b5710e57da))
|
||||
@ -567,9 +639,9 @@ ROM_START(eballchp)
|
||||
ROM_LOAD("u5_snd.532", 0xf000, 0x1000, CRC(655441df) SHA1(9da5578856ded3dcdafed67679eb4c4134dc9f81))
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------------------
|
||||
/*-----------------------------------
|
||||
/ Escape from the Lost World #0H05
|
||||
/-----------------------------------------------*/
|
||||
/-----------------------------------*/
|
||||
ROM_START(esclwrld)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u2.128", 0x8000, 0x4000, CRC(b11a97ea) SHA1(29339785a67ed7dc9eb39ddc7bb7e6baaf731210))
|
||||
@ -591,9 +663,9 @@ ROM_START(esclwrldg)
|
||||
ROM_LOAD16_BYTE("u14.512", 0x20001, 0x10000, CRC(0b92afff) SHA1(78f51989e74ced9e0a81c4e18d5abad71de01faf))
|
||||
ROM_LOAD16_BYTE("u13.512", 0x20000, 0x10000, CRC(b056842e) SHA1(7c67e5d69235a784b9c38cb31302d206278a3814))
|
||||
ROM_END
|
||||
/*------------------------------------
|
||||
/*------------------
|
||||
/ Hardbody #0E94
|
||||
/------------------------------------*/
|
||||
/------------------*/
|
||||
ROM_START(hardbody)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "hb_cpu2.bin", 0x8000, 0x4000, CRC(03975ea9) SHA1(8a4ba6bb5e6ab8da5fffaead283e26edd297e637))
|
||||
@ -618,9 +690,9 @@ ROM_START(hardbodyg)
|
||||
ROM_LOAD("sound_u7.512", 0x0000, 0x10000, CRC(c96f91af) SHA1(9602a8991ca0cf9a7c68710f55c245d9c675b06f))
|
||||
ROM_END
|
||||
|
||||
/*-----------------------------------------
|
||||
/*----------------------------
|
||||
/ Heavy Metal Meltdown #0H03
|
||||
/-----------------------------------------*/
|
||||
/----------------------------*/
|
||||
ROM_START(hvymetap)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u2.rom", 0x8000, 0x4000, CRC(53466e4e) SHA1(af6d0e15821ff707f24bb99b8d9dfb9f929906db))
|
||||
@ -639,9 +711,9 @@ ROM_START(hvymetapg)
|
||||
ROM_LOAD16_BYTE("u11.rom", 0x00000, 0x10000, CRC(b7e4de7d) SHA1(bcc89e10c368cdbc5137d8f585e109c0be25522d))
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/*-----------------
|
||||
/ Lady Luck #0E34
|
||||
/------------------------------------*/
|
||||
/-----------------*/
|
||||
ROM_START(ladyluck)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u3.cpu", 0xc000, 0x4000, CRC(129f41f5) SHA1(0351419814d3f4e98a4572fdec9d53e12fe6b6be))
|
||||
@ -652,9 +724,9 @@ ROM_START(ladyluck)
|
||||
ROM_RELOAD(0xe000, 0x2000)
|
||||
ROM_END
|
||||
|
||||
/*--------------------------------
|
||||
/*------------------
|
||||
/ MotorDome #0E14
|
||||
/-------------------------------*/
|
||||
/------------------*/
|
||||
ROM_START(motrdome)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "modm_u2.dat", 0x8000, 0x4000, CRC(820ca073) SHA1(0b50712f7d65f629af934deccc52d588f390a05b))
|
||||
@ -679,9 +751,9 @@ ROM_START(motrdomeg) // German version claims to be game #E69
|
||||
ROM_LOAD("modm_u7.snd", 0x8000, 0x8000, CRC(29ce4679) SHA1(f17998198b542dd99a34abd678db7e031bde074b))
|
||||
ROM_END
|
||||
|
||||
/*--------------------------------
|
||||
/*---------------------
|
||||
/ Party Animal #0H01
|
||||
/-------------------------------*/
|
||||
/---------------------*/
|
||||
ROM_START(prtyanim)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "cpu_u2.128", 0x8000, 0x4000, CRC(abdc0b2d) SHA1(b93c7248ea83461101383023bd4e4a50292d8570))
|
||||
@ -718,9 +790,9 @@ ROM_START(specforc)
|
||||
ROM_LOAD16_BYTE("u13_snd.512", 0x20000, 0x10000, CRC(3edda92d) SHA1(dbd95bb1c534779f56cc9e30efef159feaf22712))
|
||||
ROM_END
|
||||
|
||||
/*------------------------------------
|
||||
/*------------------------
|
||||
/ Strange Science #0E35
|
||||
/------------------------------------*/
|
||||
/------------------------*/
|
||||
|
||||
ROM_START(strngsci)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
@ -746,15 +818,14 @@ ROM_START(strngscig)
|
||||
ROM_LOAD("sound_u7.256", 0x8000, 0x8000, CRC(bc33901e) SHA1(5231d8f01a107742acee2d13580a461063018a11))
|
||||
ROM_END
|
||||
|
||||
/*-------------------------------------------------------------
|
||||
/*-------------------
|
||||
/ Truck Stop #2001
|
||||
/-------------------------------------------------------------*/
|
||||
/-------------------*/
|
||||
ROM_START(trucksp3)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u2_p3.128", 0x8000, 0x4000, CRC(79b2a5b1) SHA1(d3de91bfadc9684302b2367cfcb30ed0d6faa020))
|
||||
ROM_LOAD( "u3_p3.128", 0xc000, 0x4000, CRC(2993373c) SHA1(26490f1dd8a5329a88a2ceb1e6044711a29f1445))
|
||||
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASE00)
|
||||
ROM_REGION(0x30000, "sound1", 0)
|
||||
ROM_REGION(0x30000, "s11sound:audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_LOAD("u4sndp1.256", 0x00000, 0x8000, CRC(120a386f) SHA1(51b3b45eb7ea63758b21aad404ba12a9607fec44))
|
||||
ROM_RELOAD(0x00000 +0x8000, 0x8000)
|
||||
ROM_LOAD("u19sndp1.256", 0x10000, 0x8000, CRC(5cd43dda) SHA1(23dd8a52ea1340fc239a246af0d94da905464efb))
|
||||
@ -767,8 +838,7 @@ ROM_START(trucksp2)
|
||||
ROM_REGION(0x10000, "maincpu", 0)
|
||||
ROM_LOAD( "u2_p2.128", 0x8000, 0x4000, CRC(3c397dec) SHA1(2fc86ad39c935ce8615eafd67e571ac94c938cd7))
|
||||
ROM_LOAD( "u3_p2.128", 0xc000, 0x4000, CRC(d7ac519a) SHA1(612bf9fee0d54e8b1215508bd6c1ea61dcb99951))
|
||||
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASE00)
|
||||
ROM_REGION(0x30000, "sound1", 0)
|
||||
ROM_REGION(0x30000, "s11sound:audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_LOAD("u4sndp1.256", 0x00000, 0x8000, CRC(120a386f) SHA1(51b3b45eb7ea63758b21aad404ba12a9607fec44))
|
||||
ROM_RELOAD(0x00000 +0x8000, 0x8000)
|
||||
ROM_LOAD("u19sndp1.256", 0x10000, 0x8000, CRC(5cd43dda) SHA1(23dd8a52ea1340fc239a246af0d94da905464efb))
|
||||
@ -781,10 +851,10 @@ ROM_END
|
||||
|
||||
|
||||
// 1st gen
|
||||
GAME( 1985, eballchp, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Eight Ball Champ", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1985, beatclck, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Beat the Clock", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1985, beatclck2, beatclck, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Beat the Clock (with flasher support)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1986, ladyluck, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Lady Luck", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1985, eballchp, 0, digit6, by6803, by6803_state, empty_init, ROT0, "Bally", "Eight Ball Champ", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1985, beatclck, 0, digit6, by6803, by6803_state, empty_init, ROT0, "Bally", "Beat the Clock", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1985, beatclck2, beatclck, digit6, by6803, by6803_state, empty_init, ROT0, "Bally", "Beat the Clock (with flasher support)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1986, ladyluck, 0, digit6, by6803, by6803_state, empty_init, ROT0, "Bally", "Lady Luck", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
|
||||
// 2nd gen
|
||||
GAME( 1986, motrdome, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "MotorDome (rev. D)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
@ -809,6 +879,6 @@ GAME( 1987, esclwrldg, esclwrld, by6803, by6803, by6803_state, empty_init, ROT0,
|
||||
GAME( 1987, dungdrag, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Dungeons & Dragons", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1988, black100, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Blackwater 100", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1988, black100s, black100, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Blackwater 100 (Single Ball Play)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1988, trucksp3, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Truck Stop (P-3)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1988, trucksp2, trucksp3, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Truck Stop (P-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1989, atlantip, 0, by6803, by6803, by6803_state, empty_init, ROT0, "Bally", "Atlantis", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1988, trucksp3, 0, s11, by6803, by6803_state, empty_init, ROT0, "Bally", "Truck Stop (P-3)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1988, trucksp2, trucksp3, s11, by6803, by6803_state, empty_init, ROT0, "Bally", "Truck Stop (P-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1989, atlantip, 0, s11, by6803, by6803_state, empty_init, ROT0, "Bally", "Atlantis (rev. 3)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
|
@ -49,7 +49,6 @@ ToDo:
|
||||
#include "machine/clock.h"
|
||||
#include "machine/input_merger.h"
|
||||
#include "machine/ripple_counter.h"
|
||||
#include "sound/dac.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#include "shuffle4.lh"
|
||||
|
Loading…
Reference in New Issue
Block a user