1 // license:BSD-3-Clause
2 // copyright-holders:S. Smith,David Haywood,Fabio Priuli
3 
4 #ifndef MAME_BUS_NEOGEO_PROT_KOF2K3BL_H
5 #define MAME_BUS_NEOGEO_PROT_KOF2K3BL_H
6 
7 #pragma once
8 
DECLARE_DEVICE_TYPE(NG_KOF2K3BL_PROT,kof2k3bl_prot_device)9 DECLARE_DEVICE_TYPE(NG_KOF2K3BL_PROT, kof2k3bl_prot_device)
10 
11 
12 class kof2k3bl_prot_device :  public device_t
13 {
14 public:
15 	// construction/destruction
16 	kof2k3bl_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
17 
18 	uint16_t protection_r(offs_t offset);
19 	void kof2003_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
20 	void kof2003p_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
21 	uint16_t overlay_r();
22 	void bl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
23 	void pl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
24 	void upl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
25 	uint32_t get_bank_base() {return m_bank_base; }
26 
27 protected:
28 	virtual void device_start() override;
29 	virtual void device_reset() override;
30 
31 private:
32 	uint16_t m_overlay;
33 	uint32_t m_bank_base;
34 	uint16_t m_cartridge_ram[0x1000]; // bootlegs
35 };
36 
37 #endif // MAME_BUS_NEOGEO_PROT_KOF2K3BL_H
38