// license:BSD-3-Clause
// copyright-holders:smf
/*
* Namco System 11 Protection
*
*/
#ifndef MAME_MACHINE_NS11PROT_H
#define MAME_MACHINE_NS11PROT_H
#pragma once
class ns11_keycus_device : public device_t
{
protected:
ns11_keycus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
uint16_t m_p1;
uint16_t m_p2;
uint16_t m_p3;
public:
virtual DECLARE_READ16_MEMBER( read ) = 0;
virtual DECLARE_WRITE16_MEMBER( write ) = 0;
};
/* tekken 2 */
class keycus_c406_device : public ns11_keycus_device
{
public:
keycus_c406_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C406, keycus_c406_device)
/* soul edge */
class keycus_c409_device : public ns11_keycus_device
{
public:
keycus_c409_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C409, keycus_c409_device)
/* dunk mania */
class keycus_c410_device : public ns11_keycus_device
{
public:
keycus_c410_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C410, keycus_c410_device)
/* prime goal ex */
class keycus_c411_device : public ns11_keycus_device
{
public:
keycus_c411_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C411, keycus_c411_device)
/* xevious 3d/g */
class keycus_c430_device : public ns11_keycus_device
{
public:
keycus_c430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C430, keycus_c430_device)
/* dancing eyes */
class keycus_c431_device : public ns11_keycus_device
{
public:
keycus_c431_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C431, keycus_c431_device)
/* pocket racer */
class keycus_c432_device : public ns11_keycus_device
{
public:
keycus_c432_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C432, keycus_c432_device)
/* star sweep */
class keycus_c442_device : public ns11_keycus_device
{
public:
keycus_c442_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C442, keycus_c442_device)
/* kosodate quiz my angel 3 / point blank 2 */
class keycus_c443_device : public ns11_keycus_device
{
public:
keycus_c443_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ16_MEMBER( read ) override;
virtual DECLARE_WRITE16_MEMBER( write ) override;
};
DECLARE_DEVICE_TYPE(KEYCUS_C443, keycus_c443_device)
#endif // MAME_MACHINE_NS11PROT_H