summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/machine/segacrp2_device.h
blob: 624252880bb958f7c7daa0196b127c3975bd97e2 (plain) (tree)


















                                                              
                                                                                                       














                                                                                   
                                                                                                        







                                                       
                                                                                                        






                                                       
                                                                                                        






                                                       
                                                                                                        






                                                       
                                                                                                        






                                                       
                                                                                                        







                                                       
                                                                                                        







                                                       
                                                                                                        






                                                       
                                                                                                        


















                                        
// license:BSD-3-Clause
// copyright-holders:David Haywood

#pragma once

#ifndef __SEGACRP2_Z80__
#define __SEGACRP2_Z80__


#define MCFG_SEGAZ80_SET_DECRYPTED_TAG(_tag) \
	segacrp2_z80_device::set_decrypted_tag(*device, _tag);

#include "emu.h"
#include "cpu/z80/z80.h"

// base class
class segacrp2_z80_device : public z80_device
{
public:
	segacrp2_z80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);

	static void set_decrypted_tag(device_t &device, const char* decrypted_tag);
	const char*         m_decrypted_tag;
protected:
	virtual void device_start() override;
	virtual void device_reset() override;
	virtual void decrypt();
};



// actual encrypted CPUs
class sega_315_5179_device : public segacrp2_z80_device
{
public:
	sega_315_5179_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};


class sega_315_5178_device : public segacrp2_z80_device
{
public:
	sega_315_5178_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};

class sega_315_5177_device : public segacrp2_z80_device
{
public:
	sega_315_5177_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};

class sega_315_5176_device : public segacrp2_z80_device
{
public:
	sega_315_5176_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};

class sega_315_5162_device : public segacrp2_z80_device
{
public:
	sega_315_5162_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};

class sega_317_0004_device : public segacrp2_z80_device
{
public:
	sega_317_0004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};


class sega_317_0005_device : public segacrp2_z80_device
{
public:
	sega_317_0005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};


class sega_317_0006_device : public segacrp2_z80_device
{
public:
	sega_317_0006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};

class sega_317_0007_device : public segacrp2_z80_device
{
public:
	sega_317_0007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t);
protected:
	virtual void decrypt() override;
};


extern const device_type SEGACRP2_Z80;
extern const device_type SEGA_315_5179;
extern const device_type SEGA_315_5178;
extern const device_type SEGA_315_5177;
extern const device_type SEGA_315_5176;
extern const device_type SEGA_315_5162;

extern const device_type SEGA_317_0004;
extern const device_type SEGA_317_0005;
extern const device_type SEGA_317_0006;
extern const device_type SEGA_317_0007;


#endif /// __SEGACRP2_Z80__