⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pad.h

📁 著名的任天堂FC游戏机模拟器VirtuaNes 085版的源码!
💻 H
字号:
//////////////////////////////////////////////////////////////////////////
//                                                                      //
//      NES Pad                                                         //
//                                                           Norix      //
//                                               written     2001/02/22 //
//                                               last modify ----/--/-- //
//////////////////////////////////////////////////////////////////////////

#ifndef	__PAD_INCLUDED__
#define	__PAD_INCLUDED__

#include "typedef.h"
#include "macro.h"

// class prototypes
class	NES;
class	EXPAD;

class	PAD
{
public:
	PAD( NES* parent );
	virtual	~PAD();

// 儊儞僶娭悢
	void	Reset();

	// For movie
	DWORD	GetSyncData();
	void	SetSyncData( DWORD data );

	DWORD	GetSyncExData();
	void	SetSyncExData( DWORD data );

	void	Sync();
	BYTE	SyncSub( INT no );

	void	SetStrobe( BOOL bStrb ) { bStrobe = bStrb; }
	BOOL	GetStrobe() { return bStrobe; }

	void	Strobe();
	WORD	StrobeSub( INT no );

	BYTE	Read( WORD addr );
	void	Write( WORD addr, BYTE data );

	void	SetExController( INT type );
	INT	GetExController()	    { return excontroller_select; }

	BOOL	IsZapperMode() { return bZapperMode; };

	// For VS-Unisystem
	void	SetSwapPlayer( BOOL bSwap ) { bSwapPlayer = bSwap; }
	void	SetSwapButton( BOOL bSwap ) { bSwapButton = bSwap; }
	void	SetVSType( INT nType ) { nVSSwapType = nType; }

	enum	{
		VS_TYPE0 = 0,	// SELECT1P=START1P/SELECT2P=START2P 1P/2P No reverse
		VS_TYPE1,	// SELECT1P=START1P/SELECT2P=START2P 1P/2P Reverse
		VS_TYPE2,	// SELECT1P=START1P/START1P =START2P 1P/2P No reverse
		VS_TYPE3,	// SELECT1P=START1P/START1P =START2P 1P/2P Reverse
		VS_TYPE4,	// SELECT1P=START1P/SELECT2P=START2P 1P/2P No reverse (Protection)
		VS_TYPE5,	// SELECT1P=START1P/SELECT2P=START2P 1P/2P Reverse    (Protection)
		VS_TYPE6,	// SELECT1P=START1P/SELECT2P=START2P 1P/2P Reverse	(For Golf)
		VS_TYPEZ,	// ZAPPER
	};

	enum	EXCONTROLLER {
		EXCONTROLLER_NONE = 0,
		EXCONTROLLER_PADDLE,
		EXCONTROLLER_HYPERSHOT,
		EXCONTROLLER_ZAPPER,
		EXCONTROLLER_KEYBOARD,
		EXCONTROLLER_CRAZYCLIMBER,
		EXCONTROLLER_TOPRIDER,
		EXCONTROLLER_SPACESHADOWGUN,

		EXCONTROLLER_FAMILYTRAINER_A,
		EXCONTROLLER_FAMILYTRAINER_B,
		EXCONTROLLER_EXCITINGBOXING,
		EXCONTROLLER_MAHJANG,
		EXCONTROLLER_OEKAKIDS_TABLET,
		EXCONTROLLER_TURBOFILE,

		EXCONTROLLER_VSUNISYSTEM,
		EXCONTROLLER_VSZAPPER,
	};

	DWORD	pad1bit, pad2bit;
	DWORD	pad3bit, pad4bit;

	// Frame Synchronized
	LONG	zapperx, zappery;
	BYTE	zapperbit;
	BYTE	crazyclimberbit;

	// For NSF Player
	BYTE	GetNsfController() { return nsfbit; }

protected:
	NES*	nes;
	// Extension Devices
	EXPAD*	expad;

	// Frame Synchronized
	BYTE	padbit[4];
	BYTE	micbit;

	INT	excontroller_select;
	INT	padcnt[4][2];

	BOOL	bStrobe;
	BOOL	bZapperMode;

	// For VS-Unisystem
	INT	nVSSwapType;
	BOOL	bSwapPlayer;
	BOOL	bSwapButton;

	// For BarcodeWorld
	BOOL	bBarcodeWorld;

	// For NSF Player
	void	NsfSub();

	BYTE	nsfbit;
private:
};

#include "EXPAD.h"
#include "EXPAD_Zapper.h"
#include "EXPAD_Paddle.h"
#include "EXPAD_HyperShot.h"
#include "EXPAD_Keyboard.h"
#include "EXPAD_CrazyClimber.h"
#include "EXPAD_Toprider.h"
#include "EXPAD_SpaceShadowGun.h"

#include "EXPAD_FamlyTrainer.h"
#include "EXPAD_ExcitingBoxing.h"
#include "EXPAD_Mahjang.h"
#include "EXPAD_OekakidsTablet.h"
#include "EXPAD_TurboFile.h"

#include "EXPAD_VSUnisystem.h"
#include "EXPAD_VSZapper.h"

#endif	// !__PAD_INCLUDED__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -