mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
Miscellaneous clean-up.
* play_1.cpp: Use output finders. * s3.cpp, s4.cpp, s6.cpp, s6a.cpp: Use output finders, reduced tag lookups. * taito_z.cpp: Use output finders, split up state class a little. * util/unzip.cpp: Use std::optional to make code clearer. * util/ioprocsfilter.cpp: Work around MSVC DevCom-1516410.
This commit is contained in:
parent
c833c1e2ed
commit
a10ce5e161
@ -105,7 +105,9 @@ private:
|
||||
class inflate_data : private zlib_data
|
||||
{
|
||||
protected:
|
||||
using zlib_data::zlib_data;
|
||||
inflate_data(std::size_t buffer_size) noexcept : zlib_data(buffer_size)
|
||||
{
|
||||
}
|
||||
|
||||
~inflate_data()
|
||||
{
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
#include <mutex>
|
||||
#include <optional>
|
||||
#include <ratio>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
@ -210,12 +211,9 @@ public:
|
||||
|
||||
std::chrono::system_clock::time_point current_last_modified() const noexcept
|
||||
{
|
||||
if (!m_header.modified_cached)
|
||||
{
|
||||
if (!m_header.modified)
|
||||
m_header.modified = decode_dos_time(m_header.modified_date, m_header.modified_time);
|
||||
m_header.modified_cached = true;
|
||||
}
|
||||
return m_header.modified;
|
||||
return *m_header.modified;
|
||||
}
|
||||
|
||||
std::uint32_t current_crc() const noexcept { return m_header.crc; }
|
||||
@ -293,26 +291,29 @@ private:
|
||||
|
||||
struct file_header
|
||||
{
|
||||
private:
|
||||
using optional_time_point = std::optional<std::chrono::system_clock::time_point>;
|
||||
|
||||
public:
|
||||
file_header() noexcept { }
|
||||
file_header(file_header const &) = default;
|
||||
file_header(file_header &&) noexcept = default;
|
||||
file_header &operator=(file_header const &) = default;
|
||||
file_header &operator=(file_header &&) noexcept = default;
|
||||
|
||||
std::uint16_t version_created; // version made by
|
||||
std::uint16_t version_needed; // version needed to extract
|
||||
std::uint16_t bit_flag; // general purpose bit flag
|
||||
std::uint16_t compression; // compression method
|
||||
mutable std::chrono::system_clock::time_point modified; // last mod file date/time
|
||||
std::uint32_t crc; // crc-32
|
||||
std::uint64_t compressed_length; // compressed size
|
||||
std::uint64_t uncompressed_length; // uncompressed size
|
||||
std::uint32_t start_disk_number; // disk number start
|
||||
std::uint64_t local_header_offset; // relative offset of local header
|
||||
std::string file_name; // file name
|
||||
std::uint16_t version_created; // version made by
|
||||
std::uint16_t version_needed; // version needed to extract
|
||||
std::uint16_t bit_flag; // general purpose bit flag
|
||||
std::uint16_t compression; // compression method
|
||||
mutable optional_time_point modified; // last mod file date/time
|
||||
std::uint32_t crc; // crc-32
|
||||
std::uint64_t compressed_length; // compressed size
|
||||
std::uint64_t uncompressed_length; // uncompressed size
|
||||
std::uint32_t start_disk_number; // disk number start
|
||||
std::uint64_t local_header_offset; // relative offset of local header
|
||||
std::string file_name; // file name
|
||||
|
||||
std::uint16_t modified_date, modified_time;
|
||||
mutable bool modified_cached;
|
||||
std::uint16_t modified_date, modified_time;
|
||||
};
|
||||
|
||||
// contains extracted end of central directory information
|
||||
@ -798,7 +799,7 @@ int zip_file_impl::search(std::uint32_t search_crc, std::string_view search_file
|
||||
// don't immediately decode DOS timestamp - it's expensive
|
||||
header.modified_date = reader.modified_date();
|
||||
header.modified_time = reader.modified_time();
|
||||
header.modified_cached = false;
|
||||
header.modified = std::nullopt;
|
||||
|
||||
// copy the filename
|
||||
bool is_utf8(general_flag_reader(header.bit_flag).utf8_encoding());
|
||||
@ -850,7 +851,6 @@ int zip_file_impl::search(std::uint32_t search_crc, std::string_view search_file
|
||||
try
|
||||
{
|
||||
header.modified = system_clock_time_point_from_ntfs_duration(ticks);
|
||||
header.modified_cached = true;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
@ -30,6 +30,8 @@ Others: When starting the game, hold down X, then release and hit Z, otherwise
|
||||
#include "play_1.lh"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class play_1_state : public genpin_class
|
||||
{
|
||||
public:
|
||||
@ -39,11 +41,17 @@ public:
|
||||
, m_dips(*this, "X.%u", 0)
|
||||
, m_monotone(*this, "monotone")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
, m_leds(*this, "led%u", 1U)
|
||||
, m_player_lamps(*this, "text%u", 1U)
|
||||
{ }
|
||||
|
||||
void chance(machine_config &config);
|
||||
void play_1(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
uint8_t port07_r();
|
||||
void port01_w(uint8_t data);
|
||||
@ -69,12 +77,12 @@ private:
|
||||
uint8_t m_segment;
|
||||
uint8_t m_match;
|
||||
uint8_t m_ball;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cosmac_device> m_maincpu;
|
||||
required_ioport_array<4> m_dips;
|
||||
required_device<clock_device> m_monotone;
|
||||
output_finder<46> m_digits;
|
||||
output_finder<5> m_leds;
|
||||
output_finder<4> m_player_lamps;
|
||||
};
|
||||
|
||||
void play_1_state::play_1_map(address_map &map)
|
||||
@ -254,6 +262,13 @@ static INPUT_PORTS_START( spcgambl )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void play_1_state::machine_start()
|
||||
{
|
||||
m_digits.resolve();
|
||||
m_leds.resolve();
|
||||
m_player_lamps.resolve();
|
||||
}
|
||||
|
||||
void play_1_state::machine_reset()
|
||||
{
|
||||
m_waitcnt = 0xffff;
|
||||
@ -337,13 +352,9 @@ void play_1_state::port03_w(uint8_t data)
|
||||
|
||||
// display player number
|
||||
{
|
||||
char wordnum[8];
|
||||
uint8_t player = m_segment >> 5;
|
||||
for (uint8_t i = 1; i < 5; i++)
|
||||
{
|
||||
sprintf(wordnum,"text%d", i);
|
||||
output().set_value(wordnum, (player == i) ? 0:1);
|
||||
}
|
||||
m_player_lamps[i - 1] = (player == i) ? 0 : 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@ -461,11 +472,11 @@ WRITE_LINE_MEMBER( play_1_state::clock_w )
|
||||
else
|
||||
{
|
||||
m_digits[43] = m_match;
|
||||
output().set_value("led1", !BIT(m_ball, 1));
|
||||
output().set_value("led2", !BIT(m_ball, 2));
|
||||
output().set_value("led3", !BIT(m_ball, 3));
|
||||
output().set_value("led4", !BIT(m_ball, 4));
|
||||
output().set_value("led5", !BIT(m_ball, 5));
|
||||
m_leds[0] = !BIT(m_ball, 1);
|
||||
m_leds[1] = !BIT(m_ball, 2);
|
||||
m_leds[2] = !BIT(m_ball, 3);
|
||||
m_leds[3] = !BIT(m_ball, 4);
|
||||
m_leds[4] = !BIT(m_ball, 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -568,6 +579,8 @@ ROM_START(ngtfever)
|
||||
ROM_LOAD("nfeverb.bin", 0x0400, 0x0400, CRC(5e2ba9c0) SHA1(abd285aa5702c7fb84257b4341f64ff83c1fc0ce))
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
/* Big Town, Last Lap, Night Fever, Party and Third World all reportedly share the same roms with different playfield/machine artworks */
|
||||
GAME(1978, bigtown, 0, play_1, play_1, play_1_state, empty_init, ROT0, "Playmatic", "Big Town", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
|
@ -57,69 +57,95 @@ public:
|
||||
s3_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: genpin_class(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_pia22(*this, "pia22")
|
||||
, m_pia24(*this, "pia24")
|
||||
, m_pia28(*this, "pia28")
|
||||
, m_pia30(*this, "pia30")
|
||||
, m_pias(*this, "pias")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
, m_leds(*this, "led%u", 0U)
|
||||
, m_swarray(*this, "SW.%u", 0U)
|
||||
{ }
|
||||
, m_dips(*this, "DS%u", 1U)
|
||||
{
|
||||
}
|
||||
|
||||
void s3a(machine_config &config);
|
||||
void s3(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override { m_digits.resolve(); m_strobe = 0; }
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia22;
|
||||
required_device<pia6821_device> m_pia24;
|
||||
required_device<pia6821_device> m_pia28;
|
||||
required_device<pia6821_device> m_pia30;
|
||||
|
||||
private:
|
||||
uint8_t sound_r();
|
||||
void dig0_w(uint8_t data);
|
||||
void dig1_w(uint8_t data);
|
||||
void lamp0_w(uint8_t data);
|
||||
void lamp1_w(uint8_t data);
|
||||
void sol0_w(uint8_t data);
|
||||
void sol1_w(uint8_t data);
|
||||
void sol1_chimes_w(uint8_t data);
|
||||
uint8_t dips_r();
|
||||
uint8_t switch_r();
|
||||
void switch_w(uint8_t data);
|
||||
DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
|
||||
DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { }; //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; //ST3
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { } //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { } //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { } //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { } //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { } //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { } //ST3
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq);
|
||||
DECLARE_MACHINE_RESET(s3);
|
||||
DECLARE_MACHINE_RESET(s3a);
|
||||
void s3_audio_map(address_map &map);
|
||||
void s3_main_map(address_map &map);
|
||||
|
||||
output_finder<32> m_digits;
|
||||
output_finder<2> m_leds;
|
||||
required_ioport_array<8> m_swarray;
|
||||
required_ioport_array<2> m_dips;
|
||||
|
||||
uint8_t m_t_c;
|
||||
uint8_t m_sound_data;
|
||||
uint8_t m_strobe;
|
||||
uint8_t m_switch_col;
|
||||
bool m_data_ok;
|
||||
bool m_chimes;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_pia22;
|
||||
required_device<pia6821_device> m_pia24;
|
||||
required_device<pia6821_device> m_pia28;
|
||||
required_device<pia6821_device> m_pia30;
|
||||
optional_device<pia6821_device> m_pias;
|
||||
output_finder<32> m_digits;
|
||||
required_ioport_array<8> m_swarray;
|
||||
};
|
||||
|
||||
|
||||
class s3a_state : public s3_state
|
||||
{
|
||||
public:
|
||||
s3a_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: s3_state(mconfig, type, tag)
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_pias(*this, "pias")
|
||||
, m_io_snd(*this, "SND")
|
||||
{
|
||||
}
|
||||
|
||||
void s3a(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
protected:
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_pias;
|
||||
|
||||
private:
|
||||
uint8_t sound_r();
|
||||
void s3a_sol1_w(uint8_t data);
|
||||
|
||||
void s3_audio_map(address_map &map);
|
||||
|
||||
required_ioport m_io_snd;
|
||||
|
||||
uint8_t m_sound_data;
|
||||
};
|
||||
|
||||
|
||||
void s3_state::s3_main_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0x7fff);
|
||||
@ -132,13 +158,14 @@ void s3_state::s3_main_map(address_map &map)
|
||||
map(0x6000, 0x7fff).rom().region("roms", 0);
|
||||
}
|
||||
|
||||
void s3_state::s3_audio_map(address_map &map)
|
||||
void s3a_state::s3_audio_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xfff);
|
||||
map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds
|
||||
map(0x0800, 0x0fff).rom().region("audioroms", 0);
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START( s3 )
|
||||
PORT_START("SW.0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_TILT ) // 3 touches before it tilts
|
||||
@ -206,12 +233,7 @@ static INPUT_PORTS_START( s3 )
|
||||
PORT_START("SW.7")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("SND")
|
||||
PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Music") PORT_CODE(KEYCODE_2_PAD) PORT_TOGGLE
|
||||
|
||||
PORT_START("DIAGS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s3_state, audio_nmi, 1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_4_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s3_state, main_nmi, 1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_5_PAD)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Manual/Auto") PORT_CODE(KEYCODE_6_PAD)
|
||||
@ -277,16 +299,29 @@ static INPUT_PORTS_START( s3 )
|
||||
PORT_DIPSETTING( 0x07, "31" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_RESET_MEMBER( s3_state, s3 )
|
||||
static INPUT_PORTS_START( s3a )
|
||||
PORT_INCLUDE(s3)
|
||||
|
||||
PORT_START("SND")
|
||||
PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Music") PORT_CODE(KEYCODE_2_PAD) PORT_TOGGLE
|
||||
|
||||
PORT_MODIFY("DIAGS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s3a_state, audio_nmi, 1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void s3_state::machine_start()
|
||||
{
|
||||
m_t_c = 0;
|
||||
m_chimes = 1;
|
||||
m_digits.resolve();
|
||||
m_leds.resolve();
|
||||
|
||||
m_strobe = 0;
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER( s3_state, s3a )
|
||||
void s3_state::machine_reset()
|
||||
{
|
||||
m_t_c = 0;
|
||||
m_chimes = 0;
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( s3_state::main_nmi )
|
||||
@ -296,10 +331,10 @@ INPUT_CHANGED_MEMBER( s3_state::main_nmi )
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( s3_state::audio_nmi )
|
||||
INPUT_CHANGED_MEMBER( s3a_state::audio_nmi )
|
||||
{
|
||||
// Diagnostic button sends a pulse to NMI pin
|
||||
if ((newval==CLEAR_LINE) && !m_chimes)
|
||||
if (newval==CLEAR_LINE)
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
@ -309,47 +344,48 @@ void s3_state::sol0_w(uint8_t data)
|
||||
m_samples->start(5, 5); // outhole
|
||||
}
|
||||
|
||||
void s3_state::sol1_w(uint8_t data)
|
||||
void s3_state::sol1_chimes_w(uint8_t data)
|
||||
{
|
||||
if (m_chimes)
|
||||
{
|
||||
if (BIT(data, 0))
|
||||
m_samples->start(1, 1); // 10 chime
|
||||
if (BIT(data, 0))
|
||||
m_samples->start(1, 1); // 10 chime
|
||||
|
||||
if (BIT(data, 1))
|
||||
m_samples->start(2, 2); // 100 chime
|
||||
if (BIT(data, 1))
|
||||
m_samples->start(2, 2); // 100 chime
|
||||
|
||||
if (BIT(data, 2))
|
||||
m_samples->start(3, 3); // 1000 chime
|
||||
if (BIT(data, 2))
|
||||
m_samples->start(3, 3); // 1000 chime
|
||||
|
||||
if (BIT(data, 3))
|
||||
m_samples->start(4, 4); // 10k chime
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t sound_data = ioport("SND")->read(); // 0xff or 0xbf
|
||||
if (BIT(data, 0))
|
||||
sound_data &= 0xfe;
|
||||
if (BIT(data, 3))
|
||||
m_samples->start(4, 4); // 10k chime
|
||||
|
||||
if (BIT(data, 1))
|
||||
sound_data &= 0xfd;
|
||||
if (BIT(data, 5))
|
||||
m_samples->start(0, 6); // knocker
|
||||
}
|
||||
|
||||
if (BIT(data, 2))
|
||||
sound_data &= 0xfb;
|
||||
void s3a_state::s3a_sol1_w(uint8_t data)
|
||||
{
|
||||
uint8_t sound_data = m_io_snd->read(); // 0xff or 0xbf
|
||||
if (BIT(data, 0))
|
||||
sound_data &= 0xfe;
|
||||
|
||||
if (BIT(data, 3))
|
||||
sound_data &= 0xf7;
|
||||
if (BIT(data, 1))
|
||||
sound_data &= 0xfd;
|
||||
|
||||
if (BIT(data, 4))
|
||||
sound_data &= 0xef;
|
||||
if (BIT(data, 2))
|
||||
sound_data &= 0xfb;
|
||||
|
||||
bool cb1 = ((sound_data & 0xbf) != 0xbf);
|
||||
if (BIT(data, 3))
|
||||
sound_data &= 0xf7;
|
||||
|
||||
if (cb1)
|
||||
m_sound_data = sound_data;
|
||||
if (BIT(data, 4))
|
||||
sound_data &= 0xef;
|
||||
|
||||
m_pias->cb1_w(cb1);
|
||||
}
|
||||
bool cb1 = ((sound_data & 0xbf) != 0xbf);
|
||||
|
||||
if (cb1)
|
||||
m_sound_data = sound_data;
|
||||
|
||||
m_pias->cb1_w(cb1);
|
||||
|
||||
if (BIT(data, 5))
|
||||
m_samples->start(0, 6); // knocker
|
||||
@ -364,32 +400,11 @@ void s3_state::lamp1_w(uint8_t data)
|
||||
{
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( s3_state::pia28_ca1_r )
|
||||
{
|
||||
return BIT(ioport("DIAGS")->read(), 2); // advance button
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( s3_state::pia28_cb1_r )
|
||||
{
|
||||
return BIT(ioport("DIAGS")->read(), 3); // auto/manual switch
|
||||
}
|
||||
|
||||
uint8_t s3_state::dips_r()
|
||||
{
|
||||
if (BIT(ioport("DIAGS")->read(), 4) )
|
||||
{
|
||||
switch (m_strobe)
|
||||
{
|
||||
case 0:
|
||||
return ioport("DS2")->read();
|
||||
case 1:
|
||||
return ioport("DS2")->read() << 4;
|
||||
case 2:
|
||||
return ioport("DS1")->read();
|
||||
case 3:
|
||||
return ioport("DS1")->read() << 4;
|
||||
}
|
||||
}
|
||||
if (BIT(ioport("DIAGS")->read(), 4))
|
||||
return m_dips[BIT(~m_strobe, 1)]->read() << (BIT(m_strobe, 0) ? 4 : 0);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
@ -397,8 +412,8 @@ void s3_state::dig0_w(uint8_t data)
|
||||
{
|
||||
m_strobe = data & 15;
|
||||
m_data_ok = true;
|
||||
output().set_value("led0", !BIT(data, 4));
|
||||
output().set_value("led1", !BIT(data, 5));
|
||||
m_leds[0] = !BIT(data, 4);
|
||||
m_leds[1] = !BIT(data, 5);
|
||||
}
|
||||
|
||||
void s3_state::dig1_w(uint8_t data)
|
||||
@ -431,7 +446,7 @@ void s3_state::switch_w(uint8_t data)
|
||||
m_switch_col = data;
|
||||
}
|
||||
|
||||
uint8_t s3_state::sound_r()
|
||||
uint8_t s3a_state::sound_r()
|
||||
{
|
||||
return m_sound_data;
|
||||
}
|
||||
@ -446,46 +461,45 @@ TIMER_DEVICE_CALLBACK_MEMBER( s3_state::irq )
|
||||
|
||||
void s3_state::s3(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
M6800(config, m_maincpu, 3580000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &s3_state::s3_main_map);
|
||||
TIMER(config, "irq").configure_periodic(FUNC(s3_state::irq), attotime::from_hz(250));
|
||||
MCFG_MACHINE_RESET_OVERRIDE(s3_state, s3)
|
||||
|
||||
/* Video */
|
||||
// Video
|
||||
config.set_default_layout(layout_s3);
|
||||
|
||||
/* Sound */
|
||||
// Sound
|
||||
genpin_audio(config);
|
||||
|
||||
/* Devices */
|
||||
// Devices
|
||||
PIA6821(config, m_pia22, 0);
|
||||
m_pia22->writepa_handler().set(FUNC(s3_state::sol0_w));
|
||||
m_pia22->writepb_handler().set(FUNC(s3_state::sol1_w));
|
||||
m_pia22->writepb_handler().set(FUNC(s3_state::sol1_chimes_w));
|
||||
m_pia22->ca2_handler().set(FUNC(s3_state::pia22_ca2_w));
|
||||
m_pia22->cb2_handler().set(FUNC(s3_state::pia22_cb2_w));
|
||||
m_pia22->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia22->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia22->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia22->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
PIA6821(config, m_pia24, 0);
|
||||
m_pia24->writepa_handler().set(FUNC(s3_state::lamp0_w));
|
||||
m_pia24->writepb_handler().set(FUNC(s3_state::lamp1_w));
|
||||
m_pia24->ca2_handler().set(FUNC(s3_state::pia24_ca2_w));
|
||||
m_pia24->cb2_handler().set(FUNC(s3_state::pia24_cb2_w));
|
||||
m_pia24->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia24->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia24->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia24->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
PIA6821(config, m_pia28, 0);
|
||||
m_pia28->readpa_handler().set(FUNC(s3_state::dips_r));
|
||||
m_pia28->set_port_a_input_overrides_output_mask(0xff);
|
||||
m_pia28->readca1_handler().set(FUNC(s3_state::pia28_ca1_r));
|
||||
m_pia28->readcb1_handler().set(FUNC(s3_state::pia28_cb1_r));
|
||||
m_pia28->readca1_handler().set_ioport("DIAGS").bit(2); // advance button
|
||||
m_pia28->readcb1_handler().set_ioport("DIAGS").bit(3); // auto/manual switch
|
||||
m_pia28->writepa_handler().set(FUNC(s3_state::dig0_w));
|
||||
m_pia28->writepb_handler().set(FUNC(s3_state::dig1_w));
|
||||
m_pia28->ca2_handler().set(FUNC(s3_state::pia28_ca2_w));
|
||||
m_pia28->cb2_handler().set(FUNC(s3_state::pia28_cb2_w));
|
||||
m_pia28->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia28->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia28->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia28->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
PIA6821(config, m_pia30, 0);
|
||||
m_pia30->readpa_handler().set(FUNC(s3_state::switch_r));
|
||||
@ -493,28 +507,30 @@ void s3_state::s3(machine_config &config)
|
||||
m_pia30->writepb_handler().set(FUNC(s3_state::switch_w));
|
||||
m_pia30->ca2_handler().set(FUNC(s3_state::pia30_ca2_w));
|
||||
m_pia30->cb2_handler().set(FUNC(s3_state::pia30_cb2_w));
|
||||
m_pia30->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia30->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia30->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia30->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
}
|
||||
|
||||
void s3_state::s3a(machine_config &config)
|
||||
void s3a_state::s3a(machine_config &config)
|
||||
{
|
||||
s3(config);
|
||||
/* Add the soundcard */
|
||||
|
||||
m_pia22->writepb_handler().set(FUNC(s3a_state::s3a_sol1_w));
|
||||
|
||||
// Add the soundcard
|
||||
M6802(config, m_audiocpu, 3580000);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &s3_state::s3_audio_map);
|
||||
MCFG_MACHINE_RESET_OVERRIDE(s3_state, s3a)
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &s3a_state::s3_audio_map);
|
||||
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
|
||||
|
||||
PIA6821(config, m_pias, 0);
|
||||
m_pias->readpb_handler().set(FUNC(s3_state::sound_r));
|
||||
m_pias->readpb_handler().set(FUNC(s3a_state::sound_r));
|
||||
m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
|
||||
m_pias->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
|
||||
m_pias->irqb_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
|
||||
m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE);
|
||||
m_pias->irqb_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -608,10 +624,10 @@ ROM_END
|
||||
|
||||
} // Anonymous namespace
|
||||
|
||||
GAME( 1977, httip_l1, 0, s3, s3, s3_state, empty_init, ROT0, "Williams", "Hot Tip (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1977, lucky_l1, 0, s3, s3, s3_state, empty_init, ROT0, "Williams", "Lucky Seven (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, wldcp_l1, 0, s3a, s3, s3_state, empty_init, ROT0, "Williams", "World Cup (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, cntct_l1, 0, s3a, s3, s3_state, empty_init, ROT0, "Williams", "Contact (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, disco_l1, 0, s3a, s3, s3_state, empty_init, ROT0, "Williams", "Disco Fever (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, phnix_l1, 0, s3a, s3, s3_state, empty_init, ROT0, "Williams", "Phoenix (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, pkrno_l1, 0, s3a, s3, s3_state, empty_init, ROT0, "Williams", "Pokerino (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1977, httip_l1, 0, s3, s3, s3_state, empty_init, ROT0, "Williams", "Hot Tip (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1977, lucky_l1, 0, s3, s3, s3_state, empty_init, ROT0, "Williams", "Lucky Seven (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, wldcp_l1, 0, s3a, s3a, s3a_state, empty_init, ROT0, "Williams", "World Cup (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, cntct_l1, 0, s3a, s3a, s3a_state, empty_init, ROT0, "Williams", "Contact (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, disco_l1, 0, s3a, s3a, s3a_state, empty_init, ROT0, "Williams", "Disco Fever (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, phnix_l1, 0, s3a, s3a, s3a_state, empty_init, ROT0, "Williams", "Phoenix (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, pkrno_l1, 0, s3a, s3a, s3a_state, empty_init, ROT0, "Williams", "Pokerino (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
|
@ -5,7 +5,7 @@
|
||||
PINBALL
|
||||
Williams System 4
|
||||
|
||||
Phoenix and Pokerino are listed as System 4 systems, but use System 3 roms.
|
||||
Phoenix and Pokerino are listed as System 4 systems, but use System 3 ROMs.
|
||||
They have been moved to s3.cpp, and are working there.
|
||||
|
||||
The "Shuffle" games consist of a flat board with an air-driven puck and 10
|
||||
@ -51,69 +51,95 @@ public:
|
||||
s4_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: genpin_class(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_pia22(*this, "pia22")
|
||||
, m_pia24(*this, "pia24")
|
||||
, m_pia28(*this, "pia28")
|
||||
, m_pia30(*this, "pia30")
|
||||
, m_pias(*this, "pias")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
, m_leds(*this, "led%u", 0U)
|
||||
, m_swarray(*this, "SW.%u", 0U)
|
||||
{ }
|
||||
, m_dips(*this, "DS%u", 1U)
|
||||
{
|
||||
}
|
||||
|
||||
void s4(machine_config &config);
|
||||
void s4a(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override { m_digits.resolve(); m_strobe = 0; }
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia22;
|
||||
required_device<pia6821_device> m_pia24;
|
||||
required_device<pia6821_device> m_pia28;
|
||||
required_device<pia6821_device> m_pia30;
|
||||
|
||||
private:
|
||||
uint8_t sound_r();
|
||||
void dig0_w(uint8_t data);
|
||||
void dig1_w(uint8_t data);
|
||||
void lamp0_w(uint8_t data);
|
||||
void lamp1_w(uint8_t data);
|
||||
void sol0_w(uint8_t data);
|
||||
void sol1_w(uint8_t data);
|
||||
void sol1_chimes_w(uint8_t data);
|
||||
uint8_t dips_r();
|
||||
uint8_t switch_r();
|
||||
void switch_w(uint8_t data);
|
||||
DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
|
||||
DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { }; //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; //ST3
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { } //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { } //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { } //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { } //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { } //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { } //ST3
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq);
|
||||
DECLARE_MACHINE_RESET(s4);
|
||||
DECLARE_MACHINE_RESET(s4a);
|
||||
void s4_audio_map(address_map &map);
|
||||
void s4_main_map(address_map &map);
|
||||
|
||||
output_finder<32> m_digits;
|
||||
output_finder<2> m_leds;
|
||||
required_ioport_array<8> m_swarray;
|
||||
required_ioport_array<2> m_dips;
|
||||
|
||||
uint8_t m_t_c;
|
||||
uint8_t m_sound_data;
|
||||
uint8_t m_strobe;
|
||||
uint8_t m_switch_col;
|
||||
bool m_data_ok;
|
||||
bool m_chimes;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_pia22;
|
||||
required_device<pia6821_device> m_pia24;
|
||||
required_device<pia6821_device> m_pia28;
|
||||
required_device<pia6821_device> m_pia30;
|
||||
optional_device<pia6821_device> m_pias;
|
||||
output_finder<32> m_digits;
|
||||
required_ioport_array<8> m_swarray;
|
||||
};
|
||||
|
||||
|
||||
class s4a_state : public s4_state
|
||||
{
|
||||
public:
|
||||
s4a_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: s4_state(mconfig, type, tag)
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_pias(*this, "pias")
|
||||
, m_io_snd(*this, "SND")
|
||||
{
|
||||
}
|
||||
|
||||
void s4a(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
protected:
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_pias;
|
||||
|
||||
private:
|
||||
uint8_t sound_r();
|
||||
void s4a_sol1_w(uint8_t data);
|
||||
|
||||
void s4_audio_map(address_map &map);
|
||||
|
||||
required_ioport m_io_snd;
|
||||
|
||||
uint8_t m_sound_data;
|
||||
};
|
||||
|
||||
|
||||
void s4_state::s4_main_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0x7fff);
|
||||
@ -126,7 +152,7 @@ void s4_state::s4_main_map(address_map &map)
|
||||
map(0x6000, 0x7fff).rom().region("roms", 0);
|
||||
}
|
||||
|
||||
void s4_state::s4_audio_map(address_map &map)
|
||||
void s4a_state::s4_audio_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0x0fff);
|
||||
map(0x0000, 0x00ff).ram();
|
||||
@ -134,6 +160,7 @@ void s4_state::s4_audio_map(address_map &map)
|
||||
map(0x0800, 0x0fff).rom().region("audioroms", 0);
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START( s4 )
|
||||
PORT_START("SW.0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
|
||||
@ -201,12 +228,7 @@ static INPUT_PORTS_START( s4 )
|
||||
PORT_START("SW.7")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("SND")
|
||||
PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Music") PORT_CODE(KEYCODE_2_PAD) PORT_TOGGLE
|
||||
|
||||
PORT_START("DIAGS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s4_state, audio_nmi, 1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_4_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s4_state, main_nmi, 1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_5_PAD)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Manual/Auto") PORT_CODE(KEYCODE_6_PAD)
|
||||
@ -272,16 +294,29 @@ static INPUT_PORTS_START( s4 )
|
||||
PORT_DIPSETTING( 0x07, "31" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_RESET_MEMBER( s4_state, s4 )
|
||||
static INPUT_PORTS_START( s4a )
|
||||
PORT_INCLUDE(s4)
|
||||
|
||||
PORT_START("SND")
|
||||
PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Music") PORT_CODE(KEYCODE_2_PAD) PORT_TOGGLE
|
||||
|
||||
PORT_MODIFY("DIAGS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s4a_state, audio_nmi, 1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void s4_state::machine_start()
|
||||
{
|
||||
m_t_c = 0;
|
||||
m_chimes = 1;
|
||||
m_digits.resolve();
|
||||
m_leds.resolve();
|
||||
|
||||
m_strobe = 0;
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER( s4_state, s4a )
|
||||
void s4_state::machine_reset()
|
||||
{
|
||||
m_t_c = 0;
|
||||
m_chimes = 0;
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( s4_state::main_nmi )
|
||||
@ -291,10 +326,10 @@ INPUT_CHANGED_MEMBER( s4_state::main_nmi )
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( s4_state::audio_nmi )
|
||||
INPUT_CHANGED_MEMBER( s4a_state::audio_nmi )
|
||||
{
|
||||
// Diagnostic button sends a pulse to NMI pin
|
||||
if ((newval==CLEAR_LINE) && !m_chimes)
|
||||
if (newval==CLEAR_LINE)
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
@ -304,47 +339,48 @@ void s4_state::sol0_w(uint8_t data)
|
||||
m_samples->start(2, 5); // outhole
|
||||
}
|
||||
|
||||
void s4_state::sol1_w(uint8_t data)
|
||||
void s4_state::sol1_chimes_w(uint8_t data)
|
||||
{
|
||||
if (m_chimes)
|
||||
{
|
||||
if (BIT(data, 0))
|
||||
m_samples->start(1, 1); // 10 chime
|
||||
if (BIT(data, 0))
|
||||
m_samples->start(1, 1); // 10 chime
|
||||
|
||||
if (BIT(data, 1))
|
||||
m_samples->start(2, 2); // 100 chime
|
||||
if (BIT(data, 1))
|
||||
m_samples->start(2, 2); // 100 chime
|
||||
|
||||
if (BIT(data, 2))
|
||||
m_samples->start(3, 3); // 1000 chime
|
||||
if (BIT(data, 2))
|
||||
m_samples->start(3, 3); // 1000 chime
|
||||
|
||||
if (BIT(data, 3))
|
||||
m_samples->start(1, 4); // 10k chime
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t sound_data = ioport("SND")->read();
|
||||
if (BIT(data, 0))
|
||||
sound_data &= 0xfe;
|
||||
if (BIT(data, 3))
|
||||
m_samples->start(1, 4); // 10k chime
|
||||
|
||||
if (BIT(data, 1))
|
||||
sound_data &= 0xfd;
|
||||
if (BIT(data, 5))
|
||||
m_samples->start(0, 6); // knocker
|
||||
}
|
||||
|
||||
if (BIT(data, 2))
|
||||
sound_data &= 0xfb;
|
||||
void s4a_state::s4a_sol1_w(uint8_t data)
|
||||
{
|
||||
uint8_t sound_data = m_io_snd->read(); // 0xff or 0xbf
|
||||
if (BIT(data, 0))
|
||||
sound_data &= 0xfe;
|
||||
|
||||
if (BIT(data, 3))
|
||||
sound_data &= 0xf7;
|
||||
if (BIT(data, 1))
|
||||
sound_data &= 0xfd;
|
||||
|
||||
if (BIT(data, 4))
|
||||
sound_data &= 0xef;
|
||||
if (BIT(data, 2))
|
||||
sound_data &= 0xfb;
|
||||
|
||||
bool cb1 = ((sound_data & 0xbf) != 0xbf);
|
||||
if (BIT(data, 3))
|
||||
sound_data &= 0xf7;
|
||||
|
||||
if (cb1)
|
||||
m_sound_data = sound_data;
|
||||
if (BIT(data, 4))
|
||||
sound_data &= 0xef;
|
||||
|
||||
m_pias->cb1_w(cb1);
|
||||
}
|
||||
bool cb1 = ((sound_data & 0xbf) != 0xbf);
|
||||
|
||||
if (cb1)
|
||||
m_sound_data = sound_data;
|
||||
|
||||
m_pias->cb1_w(cb1);
|
||||
|
||||
if (BIT(data, 5))
|
||||
m_samples->start(0, 6); // knocker
|
||||
@ -359,32 +395,11 @@ void s4_state::lamp1_w(uint8_t data)
|
||||
{
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( s4_state::pia28_ca1_r )
|
||||
{
|
||||
return BIT(ioport("DIAGS")->read(), 2); // advance button
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( s4_state::pia28_cb1_r )
|
||||
{
|
||||
return BIT(ioport("DIAGS")->read(), 3); // auto/manual switch
|
||||
}
|
||||
|
||||
uint8_t s4_state::dips_r()
|
||||
{
|
||||
if (BIT(ioport("DIAGS")->read(), 4) )
|
||||
{
|
||||
switch (m_strobe)
|
||||
{
|
||||
case 0:
|
||||
return ioport("DS2")->read();
|
||||
case 1:
|
||||
return ioport("DS2")->read() << 4;
|
||||
case 2:
|
||||
return ioport("DS1")->read();
|
||||
case 3:
|
||||
return ioport("DS1")->read() << 4;
|
||||
}
|
||||
}
|
||||
if (BIT(ioport("DIAGS")->read(), 4))
|
||||
return m_dips[BIT(~m_strobe, 1)]->read() << (BIT(m_strobe, 0) ? 4 : 0);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
@ -392,8 +407,8 @@ void s4_state::dig0_w(uint8_t data)
|
||||
{
|
||||
m_strobe = data & 15;
|
||||
m_data_ok = true;
|
||||
output().set_value("led0", !BIT(data, 4));
|
||||
output().set_value("led1", !BIT(data, 5));
|
||||
m_leds[0] = !BIT(data, 4);
|
||||
m_leds[1] = !BIT(data, 5);
|
||||
}
|
||||
|
||||
void s4_state::dig1_w(uint8_t data)
|
||||
@ -426,7 +441,7 @@ void s4_state::switch_w(uint8_t data)
|
||||
m_switch_col = data;
|
||||
}
|
||||
|
||||
uint8_t s4_state::sound_r()
|
||||
uint8_t s4a_state::sound_r()
|
||||
{
|
||||
return m_sound_data;
|
||||
}
|
||||
@ -441,46 +456,45 @@ TIMER_DEVICE_CALLBACK_MEMBER( s4_state::irq )
|
||||
|
||||
void s4_state::s4(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
M6800(config, m_maincpu, 3580000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &s4_state::s4_main_map);
|
||||
TIMER(config, "irq").configure_periodic(FUNC(s4_state::irq), attotime::from_hz(250));
|
||||
MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4)
|
||||
|
||||
/* Video */
|
||||
// Video
|
||||
config.set_default_layout(layout_s4);
|
||||
|
||||
/* Sound */
|
||||
// Sound
|
||||
genpin_audio(config);
|
||||
|
||||
/* Devices */
|
||||
// Devices
|
||||
PIA6821(config, m_pia22, 0);
|
||||
m_pia22->writepa_handler().set(FUNC(s4_state::sol0_w));
|
||||
m_pia22->writepb_handler().set(FUNC(s4_state::sol1_w));
|
||||
m_pia22->writepb_handler().set(FUNC(s4_state::sol1_chimes_w));
|
||||
m_pia22->ca2_handler().set(FUNC(s4_state::pia22_ca2_w));
|
||||
m_pia22->cb2_handler().set(FUNC(s4_state::pia22_cb2_w));
|
||||
m_pia22->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia22->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia22->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia22->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
PIA6821(config, m_pia24, 0);
|
||||
m_pia24->writepa_handler().set(FUNC(s4_state::lamp0_w));
|
||||
m_pia24->writepb_handler().set(FUNC(s4_state::lamp1_w));
|
||||
m_pia24->ca2_handler().set(FUNC(s4_state::pia24_ca2_w));
|
||||
m_pia24->cb2_handler().set(FUNC(s4_state::pia24_cb2_w));
|
||||
m_pia24->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia24->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia24->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia24->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
PIA6821(config, m_pia28, 0);
|
||||
m_pia28->readpa_handler().set(FUNC(s4_state::dips_r));
|
||||
m_pia28->set_port_a_input_overrides_output_mask(0xff);
|
||||
m_pia28->readca1_handler().set(FUNC(s4_state::pia28_ca1_r));
|
||||
m_pia28->readcb1_handler().set(FUNC(s4_state::pia28_cb1_r));
|
||||
m_pia28->readca1_handler().set_ioport("DIAGS").bit(2); // advance button
|
||||
m_pia28->readcb1_handler().set_ioport("DIAGS").bit(3); // auto/manual switch
|
||||
m_pia28->writepa_handler().set(FUNC(s4_state::dig0_w));
|
||||
m_pia28->writepb_handler().set(FUNC(s4_state::dig1_w));
|
||||
m_pia28->ca2_handler().set(FUNC(s4_state::pia28_ca2_w));
|
||||
m_pia28->cb2_handler().set(FUNC(s4_state::pia28_cb2_w));
|
||||
m_pia28->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia28->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia28->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia28->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
PIA6821(config, m_pia30, 0);
|
||||
m_pia30->readpa_handler().set(FUNC(s4_state::switch_r));
|
||||
@ -488,28 +502,30 @@ void s4_state::s4(machine_config &config)
|
||||
m_pia30->writepb_handler().set(FUNC(s4_state::switch_w));
|
||||
m_pia30->ca2_handler().set(FUNC(s4_state::pia30_ca2_w));
|
||||
m_pia30->cb2_handler().set(FUNC(s4_state::pia30_cb2_w));
|
||||
m_pia30->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia30->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
|
||||
m_pia30->irqa_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
m_pia30->irqb_handler().set_inputline(m_maincpu, M6800_IRQ_LINE);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
}
|
||||
|
||||
void s4_state::s4a(machine_config &config)
|
||||
void s4a_state::s4a(machine_config &config)
|
||||
{
|
||||
s4(config);
|
||||
/* Add the soundcard */
|
||||
|
||||
m_pia22->writepb_handler().set(FUNC(s4a_state::s4a_sol1_w));
|
||||
|
||||
// Add the soundcard
|
||||
M6808(config, m_audiocpu, 3580000);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &s4_state::s4_audio_map);
|
||||
MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4a)
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &s4a_state::s4_audio_map);
|
||||
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
|
||||
|
||||
PIA6821(config, m_pias, 0);
|
||||
m_pias->readpb_handler().set(FUNC(s4_state::sound_r));
|
||||
m_pias->readpb_handler().set(FUNC(s4a_state::sound_r));
|
||||
m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
|
||||
m_pias->irqa_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
|
||||
m_pias->irqb_handler().set_inputline("audiocpu", M6808_IRQ_LINE);
|
||||
m_pias->irqa_handler().set_inputline(m_audiocpu, M6808_IRQ_LINE);
|
||||
m_pias->irqb_handler().set_inputline(m_audiocpu, M6808_IRQ_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -720,21 +736,21 @@ ROM_END
|
||||
} // Anonymous namespace
|
||||
|
||||
|
||||
GAME( 1979, flash_l2, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (Williams, L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, flash_l1, flash_l2, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (Williams, L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, flash_t1, flash_l2, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Flash (Williams, T-1) Ted Estes", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, trizn_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Tri Zone (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, trizn_t1, trizn_l1, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Tri Zone (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, tmwrp_l3, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (Williams, L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, tmwrp_l2, tmwrp_l3, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (Williams, L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, tmwrp_t2, tmwrp_l3, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Time Warp (Williams, T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, stlwr_l2, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Stellar Wars (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, flash_l2, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Flash (Williams, L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, flash_l1, flash_l2, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Flash (Williams, L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, flash_t1, flash_l2, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Flash (Williams, T-1) Ted Estes", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, trizn_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Tri Zone (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1978, trizn_t1, trizn_l1, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Tri Zone (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, tmwrp_l3, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Time Warp (Williams, L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, tmwrp_l2, tmwrp_l3, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Time Warp (Williams, L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, tmwrp_t2, tmwrp_l3, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Time Warp (Williams, T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, stlwr_l2, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Stellar Wars (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
|
||||
GAME( 1978, pomp_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1978, arist_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Aristocrat (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1978, topaz_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1979, taurs_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1979, kingt_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "King Tut (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1980, omni_l1, 0, s4a, s4, s4_state, empty_init, ROT0, "Williams", "Omni (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1983, bstrk_l1, 0, s4, s4, s4_state, empty_init, ROT0, "Williams", "Big Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1983, tstrk_l1, 0, s4, s4, s4_state, empty_init, ROT0, "Williams", "Triple Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1978, pomp_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1978, arist_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Aristocrat (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1978, topaz_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1979, taurs_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1979, kingt_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "King Tut (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
|
||||
GAME( 1980, omni_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Omni (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1983, bstrk_l1, 0, s4, s4, s4_state, empty_init, ROT0, "Williams", "Big Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1983, tstrk_l1, 0, s4, s4, s4_state, empty_init, ROT0, "Williams", "Triple Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
|
@ -58,6 +58,8 @@ ToDo:
|
||||
#include "s6.lh"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class s6_state : public genpin_class
|
||||
{
|
||||
public:
|
||||
@ -72,37 +74,41 @@ public:
|
||||
, m_pia28(*this, "pia28")
|
||||
, m_pia30(*this, "pia30")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
, m_leds(*this, "led%u", 0U)
|
||||
, m_swarray(*this, "SW.%u", 0U)
|
||||
, m_dips(*this, "DS%u", 1U)
|
||||
, m_io_snd(*this, "SND")
|
||||
{ }
|
||||
|
||||
void s6(machine_config &config);
|
||||
|
||||
void init_s6();
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
private:
|
||||
uint8_t sound_r();
|
||||
void dig0_w(uint8_t data);
|
||||
void dig1_w(uint8_t data);
|
||||
void lamp0_w(uint8_t data);
|
||||
void lamp1_w(uint8_t data);
|
||||
uint8_t dips_r();
|
||||
void sol0_w(uint8_t data);
|
||||
void sol1_w(uint8_t data);
|
||||
uint8_t dips_r();
|
||||
uint8_t switch_r();
|
||||
void switch_w(uint8_t data);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { }; //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; //ST3
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { } //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { } //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { } //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { } //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { } //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { } //ST3
|
||||
DECLARE_WRITE_LINE_MEMBER(pia_irq);
|
||||
DECLARE_MACHINE_RESET(s6);
|
||||
|
||||
void s6_audio_map(address_map &map);
|
||||
void s6_main_map(address_map &map);
|
||||
@ -112,9 +118,7 @@ private:
|
||||
uint8_t m_switch_col;
|
||||
bool m_data_ok;
|
||||
emu_timer* m_irq_timer;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
static const device_timer_id TIMER_IRQ = 0;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<hc55516_device> m_hc55516;
|
||||
@ -124,7 +128,10 @@ private:
|
||||
required_device<pia6821_device> m_pia28;
|
||||
required_device<pia6821_device> m_pia30;
|
||||
output_finder<61> m_digits;
|
||||
output_finder<2> m_leds;
|
||||
required_ioport_array<8> m_swarray;
|
||||
required_ioport_array<2> m_dips;
|
||||
required_ioport m_io_snd;
|
||||
};
|
||||
|
||||
void s6_state::s6_main_map(address_map &map)
|
||||
@ -269,7 +276,7 @@ void s6_state::sol0_w(uint8_t data)
|
||||
|
||||
void s6_state::sol1_w(uint8_t data)
|
||||
{
|
||||
uint8_t sound_data = ioport("SND")->read();
|
||||
uint8_t sound_data = m_io_snd->read();
|
||||
if (BIT(data, 0))
|
||||
sound_data &= 0xfe;
|
||||
|
||||
@ -306,20 +313,9 @@ void s6_state::lamp1_w(uint8_t data)
|
||||
|
||||
uint8_t s6_state::dips_r()
|
||||
{
|
||||
if (BIT(ioport("DIAGS")->read(), 4) )
|
||||
{
|
||||
switch (m_strobe)
|
||||
{
|
||||
case 0:
|
||||
return ioport("DS2")->read();
|
||||
case 1:
|
||||
return ioport("DS2")->read() << 4;
|
||||
case 2:
|
||||
return ioport("DS1")->read();
|
||||
case 3:
|
||||
return ioport("DS1")->read() << 4;
|
||||
}
|
||||
}
|
||||
if (BIT(ioport("DIAGS")->read(), 4))
|
||||
return m_dips[BIT(~m_strobe, 1)]->read() << (BIT(m_strobe, 0) ? 4 : 0);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
@ -327,8 +323,8 @@ void s6_state::dig0_w(uint8_t data)
|
||||
{
|
||||
m_strobe = data & 15;
|
||||
m_data_ok = true;
|
||||
output().set_value("led0", !BIT(data, 4));
|
||||
output().set_value("led1", !BIT(data, 5));
|
||||
m_leds[0] = !BIT(data, 4);
|
||||
m_leds[1] = !BIT(data, 5);
|
||||
}
|
||||
|
||||
void s6_state::dig1_w(uint8_t data)
|
||||
@ -381,6 +377,15 @@ WRITE_LINE_MEMBER( s6_state::pia_irq )
|
||||
}
|
||||
}
|
||||
|
||||
void s6_state::machine_start()
|
||||
{
|
||||
m_digits.resolve();
|
||||
m_leds.resolve();
|
||||
|
||||
m_irq_timer = timer_alloc(TIMER_IRQ);
|
||||
m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1);
|
||||
}
|
||||
|
||||
void s6_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch(id)
|
||||
@ -404,22 +409,11 @@ void s6_state::device_timer(emu_timer &timer, device_timer_id id, int param, voi
|
||||
}
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER( s6_state, s6 )
|
||||
{
|
||||
}
|
||||
|
||||
void s6_state::init_s6()
|
||||
{
|
||||
m_irq_timer = timer_alloc(TIMER_IRQ);
|
||||
m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1);
|
||||
}
|
||||
|
||||
void s6_state::s6(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M6808(config, m_maincpu, 3580000); // 6802 or 6808 could be used here
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &s6_state::s6_main_map);
|
||||
MCFG_MACHINE_RESET_OVERRIDE(s6_state, s6)
|
||||
|
||||
/* Video */
|
||||
config.set_default_layout(layout_s6);
|
||||
@ -666,17 +660,19 @@ ROM_START(frpwr_l2)
|
||||
ROM_LOAD("sound3.716", 0x4800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
GAME( 1979, lzbal_l2, 0, s6, s6, s6_state, init_s6, ROT0, "Williams", "Laser Ball (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, lzbal_l2sp, lzbal_l2, s6, s6, s6_state, init_s6, ROT0, "Williams", "Laser Ball (L-2, PROM sound)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, lzbal_t2, lzbal_l2, s6, s6, s6_state, init_s6, ROT0, "Williams", "Laser Ball (T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, scrpn_l1, 0, s6, s6, s6_state, init_s6, ROT0, "Williams", "Scorpion (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, scrpn_t1, scrpn_l1, s6, s6, s6_state, init_s6, ROT0, "Williams", "Scorpion (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, blkou_l1, 0, s6, s6, s6_state, init_s6, ROT0, "Williams", "Blackout (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, blkou_t1, blkou_l1, s6, s6, s6_state, init_s6, ROT0, "Williams", "Blackout (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, blkou_f1, blkou_l1, s6, s6, s6_state, init_s6, ROT0, "Williams", "Blackout (L-1, French Speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, grgar_l1, 0, s6, s6, s6_state, init_s6, ROT0, "Williams", "Gorgar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, grgar_t1, grgar_l1, s6, s6, s6_state, init_s6, ROT0, "Williams", "Gorgar (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, frpwr_l6, 0, s6, s6, s6_state, init_s6, ROT0, "Williams", "Firepower (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1980, frpwr_t6, frpwr_l6, s6, s6, s6_state, init_s6, ROT0, "Williams", "Firepower (T-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1980, frpwr_l2, frpwr_l6, s6, s6, s6_state, init_s6, ROT0, "Williams", "Firepower (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
|
||||
GAME( 1979, lzbal_l2, 0, s6, s6, s6_state, empty_init, ROT0, "Williams", "Laser Ball (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, lzbal_l2sp, lzbal_l2, s6, s6, s6_state, empty_init, ROT0, "Williams", "Laser Ball (L-2, PROM sound)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, lzbal_t2, lzbal_l2, s6, s6, s6_state, empty_init, ROT0, "Williams", "Laser Ball (T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, scrpn_l1, 0, s6, s6, s6_state, empty_init, ROT0, "Williams", "Scorpion (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, scrpn_t1, scrpn_l1, s6, s6, s6_state, empty_init, ROT0, "Williams", "Scorpion (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, blkou_l1, 0, s6, s6, s6_state, empty_init, ROT0, "Williams", "Blackout (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, blkou_t1, blkou_l1, s6, s6, s6_state, empty_init, ROT0, "Williams", "Blackout (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, blkou_f1, blkou_l1, s6, s6, s6_state, empty_init, ROT0, "Williams", "Blackout (L-1, French Speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, grgar_l1, 0, s6, s6, s6_state, empty_init, ROT0, "Williams", "Gorgar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1979, grgar_t1, grgar_l1, s6, s6, s6_state, empty_init, ROT0, "Williams", "Gorgar (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, frpwr_l6, 0, s6, s6, s6_state, empty_init, ROT0, "Williams", "Firepower (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1980, frpwr_t6, frpwr_l6, s6, s6, s6_state, empty_init, ROT0, "Williams", "Firepower (T-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 1980, frpwr_l2, frpwr_l6, s6, s6, s6_state, empty_init, ROT0, "Williams", "Firepower (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
|
@ -67,18 +67,19 @@ public:
|
||||
, m_pia28(*this, "pia28")
|
||||
, m_pia30(*this, "pia30")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
, m_leds(*this, "led%u", 0U)
|
||||
, m_swarray(*this, "SW.%u", 0U)
|
||||
, m_dips(*this, "DS%u", 1U)
|
||||
, m_io_snd(*this, "SND")
|
||||
{ }
|
||||
|
||||
void s6a(machine_config &config);
|
||||
|
||||
void init_s6a();
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
virtual void machine_start() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
private:
|
||||
@ -92,14 +93,14 @@ private:
|
||||
uint8_t dips_r();
|
||||
uint8_t switch_r();
|
||||
void switch_w(uint8_t data);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { }; //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; //ST3
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { } //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { } //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { } //ST2
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { } //ST1
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } //diag leds enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } //ST6
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { } //ST4
|
||||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { } //ST3
|
||||
DECLARE_WRITE_LINE_MEMBER(pia_irq);
|
||||
|
||||
void s6a_audio_map(address_map &map);
|
||||
@ -120,7 +121,10 @@ private:
|
||||
required_device<pia6821_device> m_pia28;
|
||||
required_device<pia6821_device> m_pia30;
|
||||
output_finder<32> m_digits;
|
||||
output_finder<2> m_leds;
|
||||
required_ioport_array<8> m_swarray;
|
||||
required_ioport_array<2> m_dips;
|
||||
required_ioport m_io_snd;
|
||||
};
|
||||
|
||||
void s6a_state::s6a_main_map(address_map &map)
|
||||
@ -255,7 +259,7 @@ void s6a_state::sol0_w(uint8_t data)
|
||||
|
||||
void s6a_state::sol1_w(uint8_t data)
|
||||
{
|
||||
uint8_t sound_data = ioport("SND")->read();
|
||||
uint8_t sound_data = m_io_snd->read();
|
||||
if (BIT(data, 0))
|
||||
sound_data &= 0xfe;
|
||||
|
||||
@ -292,20 +296,9 @@ void s6a_state::lamp1_w(uint8_t data)
|
||||
|
||||
uint8_t s6a_state::dips_r()
|
||||
{
|
||||
if (BIT(ioport("DIAGS")->read(), 4) )
|
||||
{
|
||||
switch (m_strobe)
|
||||
{
|
||||
case 0:
|
||||
return ioport("DS2")->read();
|
||||
case 1:
|
||||
return ioport("DS2")->read() << 4;
|
||||
case 2:
|
||||
return ioport("DS1")->read();
|
||||
case 3:
|
||||
return ioport("DS1")->read() << 4;
|
||||
}
|
||||
}
|
||||
if (BIT(ioport("DIAGS")->read(), 4))
|
||||
return m_dips[BIT(~m_strobe, 1)]->read() << (BIT(m_strobe, 0) ? 4 : 0);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
@ -313,8 +306,8 @@ void s6a_state::dig0_w(uint8_t data)
|
||||
{
|
||||
m_strobe = data & 15;
|
||||
m_data_ok = true;
|
||||
output().set_value("led0", !BIT(data, 4));
|
||||
output().set_value("led1", !BIT(data, 5));
|
||||
m_leds[0] = !BIT(data, 4);
|
||||
m_leds[1] = !BIT(data, 5);
|
||||
}
|
||||
|
||||
void s6a_state::dig1_w(uint8_t data)
|
||||
@ -367,6 +360,15 @@ WRITE_LINE_MEMBER( s6a_state::pia_irq )
|
||||
}
|
||||
}
|
||||
|
||||
void s6a_state::machine_start()
|
||||
{
|
||||
m_digits.resolve();
|
||||
m_leds.resolve();
|
||||
|
||||
m_irq_timer = timer_alloc(TIMER_IRQ);
|
||||
m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1);
|
||||
}
|
||||
|
||||
void s6a_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch(id)
|
||||
@ -390,12 +392,6 @@ void s6a_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo
|
||||
}
|
||||
}
|
||||
|
||||
void s6a_state::init_s6a()
|
||||
{
|
||||
m_irq_timer = timer_alloc(TIMER_IRQ);
|
||||
m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1);
|
||||
}
|
||||
|
||||
void s6a_state::s6a(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
@ -461,8 +457,8 @@ void s6a_state::s6a(machine_config &config)
|
||||
m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
|
||||
m_pias->ca2_handler().set("hc55516", FUNC(hc55516_device::digit_w));
|
||||
m_pias->cb2_handler().set("hc55516", FUNC(hc55516_device::clock_w));
|
||||
m_pias->irqa_handler().set_inputline("audiocpu", M6802_IRQ_LINE); // FIXME: needs an input merger
|
||||
m_pias->irqb_handler().set_inputline("audiocpu", M6802_IRQ_LINE);
|
||||
m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); // FIXME: needs an input merger
|
||||
m_pias->irqb_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -522,10 +518,10 @@ ROM_START(alpok_f6)
|
||||
ROM_LOAD("sound3.716", 0x4800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
|
||||
ROM_END
|
||||
|
||||
} // Anonymous namespace
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
GAME( 1980, algar_l1, 0, s6a, s6a, s6a_state, init_s6a, ROT0, "Williams", "Algar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, alpok_l6, 0, s6a, s6a, s6a_state, init_s6a, ROT0, "Williams", "Alien Poker (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, alpok_l2, alpok_l6, s6a, s6a, s6a_state, init_s6a, ROT0, "Williams", "Alien Poker (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, alpok_f6, alpok_l6, s6a, s6a, s6a_state, init_s6a, ROT0, "Williams", "Alien Poker (L-6 French speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, algar_l1, 0, s6a, s6a, s6a_state, empty_init, ROT0, "Williams", "Algar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, alpok_l6, 0, s6a, s6a, s6a_state, empty_init, ROT0, "Williams", "Alien Poker (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, alpok_l2, alpok_l6, s6a, s6a, s6a_state, empty_init, ROT0, "Williams", "Alien Poker (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
GAME( 1980, alpok_f6, alpok_l6, s6a, s6a, s6a_state, empty_init, ROT0, "Williams", "Alien Poker (L-6 French speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -21,15 +21,15 @@ class wpc_95_state : public driver_device
|
||||
{
|
||||
public:
|
||||
wpc_95_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
maincpu(*this, "maincpu"),
|
||||
dcs(*this, "dcs"),
|
||||
rombank(*this, "rombank"),
|
||||
mainram(*this, "mainram"),
|
||||
nvram(*this, "nvram"),
|
||||
pic(*this, "pic"),
|
||||
lamp(*this, "lamp"),
|
||||
out(*this, "out")
|
||||
: driver_device(mconfig, type, tag)
|
||||
, maincpu(*this, "maincpu")
|
||||
, dcs(*this, "dcs")
|
||||
, rombank(*this, "rombank")
|
||||
, mainram(*this, "mainram")
|
||||
, nvram(*this, "nvram")
|
||||
, pic(*this, "pic")
|
||||
, lamp(*this, "lamp")
|
||||
, out(*this, "out")
|
||||
{ }
|
||||
|
||||
void wpc_95(machine_config &config);
|
||||
|
@ -28,11 +28,8 @@ public:
|
||||
driver_device(mconfig, type, tag),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_spritemap(*this, "spritemap"),
|
||||
m_z80bank(*this, "z80bank"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_subcpu(*this, "sub"),
|
||||
m_eeprom(*this, "eeprom"),
|
||||
m_tc0480scp(*this, "tc0480scp"),
|
||||
m_tc0150rod(*this, "tc0150rod"),
|
||||
m_tc0100scn(*this, "tc0100scn"),
|
||||
@ -48,10 +45,7 @@ public:
|
||||
m_brake(*this, "BRAKE"),
|
||||
m_steer(*this, "STEER"),
|
||||
m_stickx(*this, "STICKX"),
|
||||
m_sticky(*this, "STICKY"),
|
||||
m_io_eepromout(*this, "EEPROMOUT"),
|
||||
m_lamps(*this, "lamp%u", 0U),
|
||||
m_shutter_out(*this, "shutter%u", 0U)
|
||||
m_sticky(*this, "STICKY")
|
||||
{ }
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(gas_pedal_r);
|
||||
@ -59,56 +53,29 @@ public:
|
||||
template <int axis> DECLARE_CUSTOM_INPUT_MEMBER(adstick_r);
|
||||
|
||||
void bshark_base(machine_config &config);
|
||||
void sci(machine_config &config);
|
||||
void spacegun(machine_config &config);
|
||||
void chasehq(machine_config &config);
|
||||
void dblaxle(machine_config &config);
|
||||
void bshark(machine_config &config);
|
||||
void aquajack(machine_config &config);
|
||||
void nightstr(machine_config &config);
|
||||
void contcirc(machine_config &config);
|
||||
void racingb(machine_config &config);
|
||||
void bsharkjjs(machine_config &config);
|
||||
void enforce(machine_config &config);
|
||||
|
||||
void init_bshark();
|
||||
|
||||
protected:
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
virtual void device_post_load() override;
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
void screen_config(machine_config &config, int vdisp_start, int vdisp_end);
|
||||
|
||||
private:
|
||||
enum
|
||||
{
|
||||
TIMER_TAITOZ_INTERRUPT6,
|
||||
};
|
||||
void cpua_ctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void coin_control_w(u8 data);
|
||||
void pancontrol_w(offs_t offset, u8 data);
|
||||
|
||||
void bshark_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
|
||||
/* memory pointers */
|
||||
required_shared_ptr<u16> m_spriteram;
|
||||
required_region_ptr<u16> m_spritemap;
|
||||
|
||||
optional_memory_bank m_z80bank;
|
||||
|
||||
/* video-related */
|
||||
int m_sci_spriteframe;
|
||||
int m_road_palbank;
|
||||
|
||||
/* misc */
|
||||
u16 m_cpua_ctrl;
|
||||
s32 m_sci_int6;
|
||||
s32 m_ioc220_port;
|
||||
u8 m_eep_latch;
|
||||
int m_shutter_toggle;
|
||||
u8 m_shutter_control;
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
required_device<cpu_device> m_subcpu;
|
||||
optional_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
optional_device<tc0480scp_device> m_tc0480scp;
|
||||
optional_device<tc0150rod_device> m_tc0150rod;
|
||||
optional_device<tc0100scn_device> m_tc0100scn;
|
||||
@ -125,71 +92,252 @@ private:
|
||||
optional_ioport m_steer;
|
||||
optional_ioport m_stickx;
|
||||
optional_ioport m_sticky;
|
||||
optional_ioport m_io_eepromout;
|
||||
output_finder<2> m_lamps;
|
||||
output_finder<2> m_shutter_out;
|
||||
|
||||
void cpua_ctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void chasehq_cpua_ctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void dblaxle_cpua_ctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void spacegun_eeprom_w(u8 data);
|
||||
u8 contcirc_input_bypass_r();
|
||||
u8 chasehq_input_bypass_r();
|
||||
u16 sci_steer_input_r(offs_t offset);
|
||||
void spacegun_gun_output_w(u16 data);
|
||||
u16 dblaxle_steer_input_r(offs_t offset);
|
||||
u16 chasehq_motor_r(offs_t offset);
|
||||
void chasehq_motor_w(offs_t offset, u16 data);
|
||||
void nightstr_motor_w(offs_t offset, u16 data);
|
||||
void coin_control_w(u8 data);
|
||||
u16 aquajack_unknown_r();
|
||||
void sound_bankswitch_w(u8 data);
|
||||
void pancontrol_w(offs_t offset, u8 data);
|
||||
u16 sci_spriteframe_r();
|
||||
void sci_spriteframe_w(u16 data);
|
||||
void contcirc_out_w(u8 data);
|
||||
DECLARE_WRITE_LINE_MEMBER(scope_vblank);
|
||||
DECLARE_VIDEO_START(taitoz);
|
||||
DECLARE_MACHINE_START(chasehq);
|
||||
u32 screen_update_contcirc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_chasehq(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
/* misc */
|
||||
u16 m_cpua_ctrl;
|
||||
|
||||
private:
|
||||
u32 screen_update_bshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_sci(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_aquajack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_spacegun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_dblaxle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_racingb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(sci_interrupt);
|
||||
void contcirc_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
void chasehq_draw_sprites_16x16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
void bshark_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
void sci_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
void aquajack_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs);
|
||||
void spacegun_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs);
|
||||
void parse_cpu_control();
|
||||
|
||||
void aquajack_cpub_map(address_map &map);
|
||||
void aquajack_map(address_map &map);
|
||||
void bshark_cpub_map(address_map &map);
|
||||
void bshark_map(address_map &map);
|
||||
void bsharkjjs_map(address_map &map);
|
||||
void chasehq_map(address_map &map);
|
||||
void chq_cpub_map(address_map &map);
|
||||
void contcirc_cpub_map(address_map &map);
|
||||
void contcirc_map(address_map &map);
|
||||
void dblaxle_cpub_map(address_map &map);
|
||||
void dblaxle_map(address_map &map);
|
||||
void enforce_cpub_map(address_map &map);
|
||||
void enforce_map(address_map &map);
|
||||
void nightstr_cpub_map(address_map &map);
|
||||
void nightstr_map(address_map &map);
|
||||
void racingb_cpub_map(address_map &map);
|
||||
void racingb_map(address_map &map);
|
||||
void sci_cpub_map(address_map &map);
|
||||
void sci_map(address_map &map);
|
||||
void spacegun_cpub_map(address_map &map);
|
||||
void spacegun_map(address_map &map);
|
||||
};
|
||||
|
||||
|
||||
class taitoz_z80_sound_state : public taitoz_state
|
||||
{
|
||||
public:
|
||||
taitoz_z80_sound_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
taitoz_state(mconfig, type, tag),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_z80bank(*this, "z80bank")
|
||||
{
|
||||
}
|
||||
|
||||
void aquajack(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
u16 dblaxle_steer_input_r(offs_t offset);
|
||||
|
||||
u32 screen_update_chasehq(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void z80_sound_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
|
||||
private:
|
||||
u16 aquajack_unknown_r();
|
||||
void sound_bankswitch_w(u8 data);
|
||||
|
||||
void chasehq_draw_sprites_16x16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
void aquajack_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs);
|
||||
u32 screen_update_aquajack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void aquajack_map(address_map &map);
|
||||
void aquajack_cpub_map(address_map &map);
|
||||
|
||||
required_memory_bank m_z80bank;
|
||||
};
|
||||
|
||||
|
||||
class contcirc_state : public taitoz_z80_sound_state
|
||||
{
|
||||
public:
|
||||
contcirc_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
taitoz_z80_sound_state(mconfig, type, tag),
|
||||
m_shutter_out(*this, "shutter%u", 0U)
|
||||
{
|
||||
}
|
||||
|
||||
void contcirc(machine_config &config);
|
||||
void enforce(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
private:
|
||||
u8 contcirc_input_bypass_r();
|
||||
void contcirc_out_w(u8 data);
|
||||
DECLARE_WRITE_LINE_MEMBER(scope_vblank);
|
||||
|
||||
void contcirc_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
u32 screen_update_contcirc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void contcirc_map(address_map &map);
|
||||
void contcirc_cpub_map(address_map &map);
|
||||
void enforce_map(address_map &map);
|
||||
void enforce_cpub_map(address_map &map);
|
||||
|
||||
output_finder<2> m_shutter_out;
|
||||
|
||||
int m_road_palbank;
|
||||
int m_shutter_toggle;
|
||||
u8 m_shutter_control;
|
||||
};
|
||||
|
||||
|
||||
class chasehq_state : public taitoz_z80_sound_state
|
||||
{
|
||||
public:
|
||||
chasehq_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
taitoz_z80_sound_state(mconfig, type, tag),
|
||||
m_unknown_io(*this, "UNK%u", 1U),
|
||||
m_lamps(*this, "lamp%u", 0U)
|
||||
{
|
||||
}
|
||||
|
||||
void chasehq(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
void chasehq_cpua_ctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
u8 chasehq_input_bypass_r();
|
||||
u16 chasehq_motor_r(offs_t offset);
|
||||
void chasehq_motor_w(offs_t offset, u16 data);
|
||||
|
||||
void chasehq_map(address_map &map);
|
||||
void chasehq_cpub_map(address_map &map);
|
||||
|
||||
required_ioport_array<4> m_unknown_io;
|
||||
output_finder<2> m_lamps;
|
||||
};
|
||||
|
||||
|
||||
class sci_state : public taitoz_z80_sound_state
|
||||
{
|
||||
public:
|
||||
sci_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
taitoz_z80_sound_state(mconfig, type, tag)
|
||||
{
|
||||
}
|
||||
|
||||
void sci(machine_config &config);
|
||||
void racingb(machine_config &config);
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
TIMER_TAITOZ_INTERRUPT6,
|
||||
};
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
private:
|
||||
u16 sci_steer_input_r(offs_t offset);
|
||||
u16 sci_spriteframe_r();
|
||||
void sci_spriteframe_w(u16 data);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(sci_interrupt);
|
||||
|
||||
void sci_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs);
|
||||
u32 screen_update_sci(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_racingb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void sci_map(address_map &map);
|
||||
void sci_cpub_map(address_map &map);
|
||||
void racingb_map(address_map &map);
|
||||
void racingb_cpub_map(address_map &map);
|
||||
|
||||
int m_sci_spriteframe;
|
||||
s32 m_sci_int6;
|
||||
};
|
||||
|
||||
|
||||
class nightstr_state : public taitoz_z80_sound_state
|
||||
{
|
||||
public:
|
||||
nightstr_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
taitoz_z80_sound_state(mconfig, type, tag),
|
||||
m_motor_dir(*this, "Motor_%u_Direction", 1U),
|
||||
m_motor_speed(*this, "Motor_%u_Speed", 1U),
|
||||
m_motor_debug(*this, "motor_debug")
|
||||
{
|
||||
}
|
||||
|
||||
void nightstr(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
void nightstr_motor_w(offs_t offset, u16 data);
|
||||
|
||||
void nightstr_map(address_map &map);
|
||||
void nightstr_cpub_map(address_map &map);
|
||||
|
||||
output_finder<3> m_motor_dir;
|
||||
output_finder<3> m_motor_speed;
|
||||
output_finder<> m_motor_debug;
|
||||
};
|
||||
|
||||
|
||||
class spacegun_state : public taitoz_state
|
||||
{
|
||||
public:
|
||||
spacegun_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
taitoz_state(mconfig, type, tag),
|
||||
m_eeprom(*this, "eeprom"),
|
||||
m_io_eepromout(*this, "EEPROMOUT"),
|
||||
m_recoil(*this, "Player%u_Gun_Recoil", 1U)
|
||||
{
|
||||
}
|
||||
|
||||
void spacegun(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
void spacegun_eeprom_w(u8 data);
|
||||
void spacegun_gun_output_w(u16 data);
|
||||
|
||||
void spacegun_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs);
|
||||
u32 screen_update_spacegun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void spacegun_map(address_map &map);
|
||||
void spacegun_cpub_map(address_map &map);
|
||||
|
||||
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
required_ioport m_io_eepromout;
|
||||
output_finder<2> m_recoil;
|
||||
|
||||
u8 m_eep_latch;
|
||||
};
|
||||
|
||||
|
||||
class dblaxle_state : public taitoz_z80_sound_state
|
||||
{
|
||||
public:
|
||||
dblaxle_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
taitoz_z80_sound_state(mconfig, type, tag),
|
||||
m_wheel_vibration(*this, "Wheel_Vibration")
|
||||
{
|
||||
}
|
||||
|
||||
void dblaxle(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
void dblaxle_cpua_ctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
|
||||
u32 screen_update_dblaxle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void dblaxle_map(address_map &map);
|
||||
void dblaxle_cpub_map(address_map &map);
|
||||
|
||||
output_finder<> m_wheel_vibration;
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_TAITO_Z_H
|
||||
|
@ -139,25 +139,25 @@ void midyunit_state::term2_sound_w(offs_t offset, uint16_t data)
|
||||
/* Flash Lamp Output Data */
|
||||
if ( ((data & 0x800) != 0x800) && ((data & 0x400) == 0x400 ) )
|
||||
{
|
||||
output().set_value("Left_Flash_1", data & 0x1);
|
||||
output().set_value("Left_Flash_2", (data & 0x2) >> 1);
|
||||
output().set_value("Left_Flash_3", (data & 0x4) >> 2);
|
||||
output().set_value("Left_Flash_4", (data & 0x8) >> 3);
|
||||
output().set_value("Right_Flash_1", (data & 0x10) >> 4);
|
||||
output().set_value("Right_Flash_2", (data & 0x20) >> 5);
|
||||
output().set_value("Right_Flash_3", (data & 0x40) >> 6);
|
||||
output().set_value("Right_Flash_4", (data & 0x80) >> 7);
|
||||
output().set_value("Left_Flash_1", data & 0x1);
|
||||
output().set_value("Left_Flash_2", (data & 0x2) >> 1);
|
||||
output().set_value("Left_Flash_3", (data & 0x4) >> 2);
|
||||
output().set_value("Left_Flash_4", (data & 0x8) >> 3);
|
||||
output().set_value("Right_Flash_1", (data & 0x10) >> 4);
|
||||
output().set_value("Right_Flash_2", (data & 0x20) >> 5);
|
||||
output().set_value("Right_Flash_3", (data & 0x40) >> 6);
|
||||
output().set_value("Right_Flash_4", (data & 0x80) >> 7);
|
||||
}
|
||||
|
||||
/* Gun Output Data */
|
||||
if ( ((data & 0x800) == 0x800) && ((data & 0x400) != 0x400 ) )
|
||||
{
|
||||
output().set_value("Left_Gun_Recoil", data & 0x1);
|
||||
output().set_value("Right_Gun_Recoil", (data & 0x2) >> 1);
|
||||
output().set_value("Left_Gun_Green_Led", (~data & 0x20) >> 5);
|
||||
output().set_value("Left_Gun_Red_Led", (~data & 0x10) >> 4);
|
||||
output().set_value("Right_Gun_Green_Led", (~data & 0x80) >> 7);
|
||||
output().set_value("Right_Gun_Red_Led", (~data & 0x40) >> 6);
|
||||
output().set_value("Left_Gun_Recoil", data & 0x1);
|
||||
output().set_value("Right_Gun_Recoil", (data & 0x2) >> 1);
|
||||
output().set_value("Left_Gun_Green_Led", (~data & 0x20) >> 5);
|
||||
output().set_value("Left_Gun_Red_Led", (~data & 0x10) >> 4);
|
||||
output().set_value("Right_Gun_Green_Led", (~data & 0x80) >> 7);
|
||||
output().set_value("Right_Gun_Red_Led", (~data & 0x40) >> 6);
|
||||
}
|
||||
|
||||
if (offset == 0)
|
||||
|
@ -2,29 +2,39 @@
|
||||
// copyright-holders:David Graves
|
||||
#include "emu.h"
|
||||
#include "includes/taito_z.h"
|
||||
#include "screen.h"
|
||||
|
||||
|
||||
/**********************************************************/
|
||||
|
||||
VIDEO_START_MEMBER(taitoz_state,taitoz)
|
||||
void contcirc_state::video_start()
|
||||
{
|
||||
taitoz_z80_sound_state::video_start();
|
||||
|
||||
m_road_palbank = 3;
|
||||
m_sci_spriteframe = 0;
|
||||
|
||||
save_item(NAME(m_road_palbank));
|
||||
}
|
||||
|
||||
void sci_state::video_start()
|
||||
{
|
||||
taitoz_z80_sound_state::video_start();
|
||||
|
||||
m_sci_spriteframe = 0;
|
||||
|
||||
save_item(NAME(m_sci_spriteframe));
|
||||
}
|
||||
|
||||
|
||||
/********************************************************
|
||||
SPRITE READ AND WRITE HANDLERS
|
||||
********************************************************/
|
||||
|
||||
u16 taitoz_state::sci_spriteframe_r()
|
||||
u16 sci_state::sci_spriteframe_r()
|
||||
{
|
||||
return (m_sci_spriteframe << 8);
|
||||
return m_sci_spriteframe << 8;
|
||||
}
|
||||
|
||||
void taitoz_state::sci_spriteframe_w(u16 data)
|
||||
void sci_state::sci_spriteframe_w(u16 data)
|
||||
{
|
||||
m_sci_spriteframe = (data >> 8) & 0xff;
|
||||
}
|
||||
@ -144,7 +154,7 @@ confirmed
|
||||
********************************************************/
|
||||
|
||||
|
||||
void taitoz_state::contcirc_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs)
|
||||
void contcirc_state::contcirc_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs)
|
||||
{
|
||||
int sprites_flipscreen = 0;
|
||||
static const u32 primasks[2] = { 0xf0, 0xfc };
|
||||
@ -232,7 +242,7 @@ void taitoz_state::contcirc_draw_sprites_16x8(screen_device &screen, bitmap_ind1
|
||||
|
||||
|
||||
|
||||
void taitoz_state::chasehq_draw_sprites_16x16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs)
|
||||
void taitoz_z80_sound_state::chasehq_draw_sprites_16x16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs)
|
||||
{
|
||||
int sprites_flipscreen = 0;
|
||||
static const u32 primasks[2] = { 0xf0, 0xfc };
|
||||
@ -498,7 +508,7 @@ void taitoz_state::bshark_draw_sprites_16x8(screen_device &screen, bitmap_ind16
|
||||
|
||||
|
||||
|
||||
void taitoz_state::sci_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs)
|
||||
void sci_state::sci_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs)
|
||||
{
|
||||
int sprites_flipscreen = 0;
|
||||
static const u32 primasks[2] = { 0xf0, 0xfc };
|
||||
@ -595,7 +605,7 @@ void taitoz_state::sci_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bi
|
||||
|
||||
|
||||
|
||||
void taitoz_state::aquajack_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs)
|
||||
void taitoz_z80_sound_state::aquajack_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs)
|
||||
{
|
||||
int sprites_flipscreen = 0;
|
||||
static const u32 primasks[2] = { 0xf0, 0xfc };
|
||||
@ -682,7 +692,7 @@ void taitoz_state::aquajack_draw_sprites_16x8(screen_device &screen, bitmap_ind1
|
||||
|
||||
|
||||
|
||||
void taitoz_state::spacegun_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs)
|
||||
void spacegun_state::spacegun_draw_sprites_16x8(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs)
|
||||
{
|
||||
int sprites_flipscreen = 0;
|
||||
static const u32 primasks[2] = { 0xf0, 0xfc };
|
||||
@ -772,7 +782,7 @@ void taitoz_state::spacegun_draw_sprites_16x8(screen_device &screen, bitmap_ind1
|
||||
SCREEN REFRESH
|
||||
**************************************************************/
|
||||
|
||||
void taitoz_state::contcirc_out_w(u8 data)
|
||||
void contcirc_state::contcirc_out_w(u8 data)
|
||||
{
|
||||
/* bit 0 = reset sub CPU */
|
||||
m_audiocpu->set_input_line(INPUT_LINE_RESET, BIT(data, 0) ? CLEAR_LINE : ASSERT_LINE);
|
||||
@ -790,7 +800,7 @@ void taitoz_state::contcirc_out_w(u8 data)
|
||||
m_road_palbank = (data & 0xc0) >> 6;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(taitoz_state::scope_vblank)
|
||||
WRITE_LINE_MEMBER(contcirc_state::scope_vblank)
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
@ -811,7 +821,7 @@ WRITE_LINE_MEMBER(taitoz_state::scope_vblank)
|
||||
}
|
||||
}
|
||||
|
||||
u32 taitoz_state::screen_update_contcirc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 contcirc_state::screen_update_contcirc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 layer[3];
|
||||
|
||||
@ -837,7 +847,7 @@ u32 taitoz_state::screen_update_contcirc(screen_device &screen, bitmap_ind16 &bi
|
||||
|
||||
/* Nightstr and ChaseHQ */
|
||||
|
||||
u32 taitoz_state::screen_update_chasehq(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 taitoz_z80_sound_state::screen_update_chasehq(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 layer[3];
|
||||
|
||||
@ -887,7 +897,7 @@ u32 taitoz_state::screen_update_bshark(screen_device &screen, bitmap_ind16 &bitm
|
||||
}
|
||||
|
||||
|
||||
u32 taitoz_state::screen_update_sci(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 sci_state::screen_update_sci(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 layer[3];
|
||||
|
||||
@ -912,7 +922,7 @@ u32 taitoz_state::screen_update_sci(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
}
|
||||
|
||||
|
||||
u32 taitoz_state::screen_update_aquajack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 taitoz_z80_sound_state::screen_update_aquajack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 layer[3];
|
||||
|
||||
@ -937,7 +947,7 @@ u32 taitoz_state::screen_update_aquajack(screen_device &screen, bitmap_ind16 &bi
|
||||
}
|
||||
|
||||
|
||||
u32 taitoz_state::screen_update_spacegun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 spacegun_state::screen_update_spacegun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 layer[3];
|
||||
|
||||
@ -962,7 +972,7 @@ u32 taitoz_state::screen_update_spacegun(screen_device &screen, bitmap_ind16 &bi
|
||||
}
|
||||
|
||||
|
||||
u32 taitoz_state::screen_update_dblaxle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 dblaxle_state::screen_update_dblaxle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 layer[5];
|
||||
u16 priority;
|
||||
@ -997,7 +1007,7 @@ u32 taitoz_state::screen_update_dblaxle(screen_device &screen, bitmap_ind16 &bit
|
||||
}
|
||||
|
||||
|
||||
u32 taitoz_state::screen_update_racingb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 sci_state::screen_update_racingb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 layer[5];
|
||||
u16 priority;
|
||||
|
Loading…
Reference in New Issue
Block a user