s11 fix (nw)

This commit is contained in:
Miodrag Milanovic 2016-05-01 09:22:43 +02:00
parent 256521ff28
commit d2fba8eea6
8 changed files with 117 additions and 72 deletions

View File

@ -4135,8 +4135,11 @@ files {
MAME_DIR .. "src/mame/drivers/s11.cpp",
MAME_DIR .. "src/mame/includes/s11.h",
MAME_DIR .. "src/mame/drivers/s11a.cpp",
MAME_DIR .. "src/mame/includes/s11a.h",
MAME_DIR .. "src/mame/drivers/s11b.cpp",
MAME_DIR .. "src/mame/includes/s11b.h",
MAME_DIR .. "src/mame/drivers/s11c.cpp",
MAME_DIR .. "src/mame/includes/s11c.h",
MAME_DIR .. "src/mame/audio/s11c_bg.cpp",
MAME_DIR .. "src/mame/audio/s11c_bg.h",
MAME_DIR .. "src/mame/drivers/s3.cpp",

View File

@ -29,7 +29,7 @@ Note: To start a game, certain switches need to be activated. You must first pr
#include "sound/2151intf.h"
#include "sound/dac.h"
#include "audio/s11c_bg.h"
#include "includes/s11.h"
#include "includes/s11a.h"
#include "s11a.lh"
static ADDRESS_MAP_START( s11a_main_map, AS_PROGRAM, 8, s11a_state )

View File

@ -29,7 +29,7 @@
#include "sound/2151intf.h"
#include "sound/dac.h"
#include "audio/s11c_bg.h"
#include "includes/s11.h"
#include "includes/s11b.h"
#include "s11b.lh"
static ADDRESS_MAP_START( s11b_main_map, AS_PROGRAM, 8, s11b_state )

View File

@ -13,7 +13,7 @@
#include "sound/2151intf.h"
#include "sound/dac.h"
#include "audio/s11c_bg.h"
#include "includes/s11.h"
#include "includes/s11c.h"
#include "s11c.lh"

View File

@ -120,73 +120,4 @@ private:
bool m_irq_active;
};
class s11a_state : public s11_state
{
public:
s11a_state(const machine_config &mconfig, device_type type, const char *tag)
: s11_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(bgbank_w);
DECLARE_WRITE8_MEMBER(dig0_w);
DECLARE_MACHINE_RESET(s11a);
DECLARE_DRIVER_INIT(s11a);
protected:
private:
};
class s11b_state : public s11a_state
{
public:
s11b_state(const machine_config &mconfig, device_type type, const char *tag)
: s11a_state(mconfig, type, tag),
m_bg_hc55516(*this, "hc55516_bg")
{ }
DECLARE_WRITE8_MEMBER(dig1_w);
DECLARE_WRITE8_MEMBER(pia2c_pa_w);
DECLARE_WRITE8_MEMBER(pia2c_pb_w);
DECLARE_WRITE8_MEMBER(pia34_pa_w);
DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w);
DECLARE_WRITE8_MEMBER(bg_speech_clock_w);
DECLARE_WRITE8_MEMBER(bg_speech_digit_w);
DECLARE_MACHINE_RESET(s11b);
DECLARE_DRIVER_INIT(s11b);
DECLARE_DRIVER_INIT(s11b_invert);
protected:
optional_device<hc55516_device> m_bg_hc55516;
void set_invert(bool inv) { m_invert = inv; }
private:
bool m_invert; // later System 11B games start expecting inverted data to the display LED segments.
};
class s11c_state : public s11b_state
{
public:
s11c_state(const machine_config &mconfig, device_type type, const char *tag)
: s11b_state(mconfig, type, tag)
{ }
DECLARE_MACHINE_RESET(s11c);
DECLARE_DRIVER_INIT(s11c);
protected:
private:
};
#endif /* S11_H_ */

32
src/mame/includes/s11a.h Normal file
View File

@ -0,0 +1,32 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/*
* s11a.h
*
* Created on: 1/01/2013
*/
#ifndef S11A_H_
#define S11A_H_
#include "includes/s11.h"
class s11a_state : public s11_state
{
public:
s11a_state(const machine_config &mconfig, device_type type, const char *tag)
: s11_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(bgbank_w);
DECLARE_WRITE8_MEMBER(dig0_w);
DECLARE_MACHINE_RESET(s11a);
DECLARE_DRIVER_INIT(s11a);
protected:
private:
};
#endif /* S11A_H_ */

47
src/mame/includes/s11b.h Normal file
View File

@ -0,0 +1,47 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/*
* s11b.h
*
* Created on: 1/01/2013
*/
#ifndef S11B_H_
#define S11B_H_
#include "includes/s11a.h"
class s11b_state : public s11a_state
{
public:
s11b_state(const machine_config &mconfig, device_type type, const char *tag)
: s11a_state(mconfig, type, tag),
m_bg_hc55516(*this, "hc55516_bg")
{ }
DECLARE_WRITE8_MEMBER(dig1_w);
DECLARE_WRITE8_MEMBER(pia2c_pa_w);
DECLARE_WRITE8_MEMBER(pia2c_pb_w);
DECLARE_WRITE8_MEMBER(pia34_pa_w);
DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w);
DECLARE_WRITE8_MEMBER(bg_speech_clock_w);
DECLARE_WRITE8_MEMBER(bg_speech_digit_w);
DECLARE_MACHINE_RESET(s11b);
DECLARE_DRIVER_INIT(s11b);
DECLARE_DRIVER_INIT(s11b_invert);
protected:
optional_device<hc55516_device> m_bg_hc55516;
void set_invert(bool inv) { m_invert = inv; }
private:
bool m_invert; // later System 11B games start expecting inverted data to the display LED segments.
};
#endif /* S11B_H_ */

32
src/mame/includes/s11c.h Normal file
View File

@ -0,0 +1,32 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/*
* s11c.h
*
* Created on: 1/01/2013
*/
#ifndef S11C_H_
#define S11C_H_
#include "includes/s11b.h"
class s11c_state : public s11b_state
{
public:
s11c_state(const machine_config &mconfig, device_type type, const char *tag)
: s11b_state(mconfig, type, tag)
{ }
DECLARE_MACHINE_RESET(s11c);
DECLARE_DRIVER_INIT(s11c);
protected:
private:
};
#endif /* S11C_H_ */