亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rom.h

?? 著名的任天堂FC游戲機模擬器VirtuaNes 085版的源碼!
?? H
字號:
//////////////////////////////////////////////////////////////////////////
//                                                                      //
//      NES ROM Cartridge class                                         //
//                                                           Norix      //
//                                               written     2001/02/20 //
//                                               last modify ----/--/-- //
//////////////////////////////////////////////////////////////////////////
#ifndef	__ROM_INCLUDED__
#define	__ROM_INCLUDED__

#pragma warning(disable:4786)
#include <string>
using namespace std;

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

#pragma pack( push, 1 )

typedef	struct	tagNESHEADER {
	BYTE	ID[4];
	BYTE	PRG_PAGE_SIZE;
	BYTE	CHR_PAGE_SIZE;
	BYTE	control1;
	BYTE	control2;
	BYTE	reserved[8];
} NESHEADER;

typedef	struct	tagNSFHEADER {
	BYTE	ID[5];
	BYTE	Version;
	BYTE	TotalSong;
	BYTE	StartSong;
	WORD	LoadAddress;
	WORD	InitAddress;
	WORD	PlayAddress;
	BYTE	SongName[32];
	BYTE	ArtistName[32];
	BYTE	CopyrightName[32];
	WORD	SpeedNTSC;
	BYTE	BankSwitch[8];
	WORD	SpeedPAL;
	BYTE	NTSC_PALbits;
	BYTE	ExtraChipSelect;
	BYTE	Expansion[4];		// must be 0
} NSFHEADER;

#pragma pack( pop )

class	ROM
{
public:
	ROM( const char* fname );
	virtual	~ROM();

	// ROM control byte #1
	enum {	ROM_VMIRROR = 0x01, ROM_SAVERAM = 0x02,
		ROM_TRAINER = 0x04, ROM_4SCREEN = 0x08 };

	// ROM control byte #2
	enum {	ROM_VSUNISYSTEM = 0x01 };

	// Get NESHEADER
	NESHEADER* GetNesHeader() { return &header; }
	// Get NSFHEADER
	NSFHEADER* GetNsfHeader() { return &nsfheader; }

	// Get ROM buffer pointer
	LPBYTE	GetPROM()	{ return lpPRG; }
	LPBYTE	GetVROM()	{ return lpCHR; }
	LPBYTE	GetTRAINER()	{ return lpTrainer; }
	LPBYTE	GetDISKBIOS()	{ return lpDiskBios; }
	LPBYTE	GetDISK()	{ return lpDisk; }

	// Get ROM size
	BYTE	GetPROM_SIZE()	{ return header.PRG_PAGE_SIZE; }
	BYTE	GetVROM_SIZE()	{ return header.CHR_PAGE_SIZE; }

	// Get PROM
	DWORD	GetPROM_CRC()	{ return crc; }
	DWORD	GetROM_CRC()	{ return crcall; }
	DWORD	GetVROM_CRC()	{ return crcvrom; }

	// Get FDS ID
	DWORD	GetMakerID()	{ return fdsmakerID; }
	DWORD	GetGameID()	{ return fdsgameID; }

	// ROM control
	BOOL	IsVMIRROR()	{ return header.control1 & ROM_VMIRROR; }
	BOOL	Is4SCREEN()	{ return header.control1 & ROM_4SCREEN; }
	BOOL	IsSAVERAM()	{ return header.control1 & ROM_SAVERAM; }
	BOOL	IsTRAINER()	{ return header.control1 & ROM_TRAINER; }
	BOOL	IsVSUNISYSTEM()	{ return header.control2 & ROM_VSUNISYSTEM; }
	BOOL	IsPAL()		{ return bPAL; }

	// Mapper
	INT	GetMapperNo() { return mapper; }

	// Disks
	INT	GetDiskNo() { return diskno; }

	// NSF
	BOOL	IsNSF() { return bNSF; }
	BYTE	GetNSF_SIZE()	{ return NSF_PAGE_SIZE; }

	// ROM Paths
	const char*	GetRomPath() { return path; }
	const char*	GetRomName() { return name; }
	const char*	GetFullPathName() { return fullpath; }

	// File check
	// 0:ERROR 1:HEADER OK -1:BAD HEADER
	static	INT	IsRomFile( const char* fname );

protected:
	NESHEADER	header;
	NSFHEADER	nsfheader;
	LPBYTE		lpPRG;
	LPBYTE		lpCHR;
	LPBYTE		lpTrainer;
	LPBYTE		lpDiskBios;
	LPBYTE		lpDisk;

	// PROM CRC
	DWORD		crc;
	DWORD		crcall;
	DWORD		crcvrom;

	DWORD		fdsmakerID, fdsgameID;

	INT		mapper;
	INT		diskno;

	// For PAL(Database)
	BOOL		bPAL;

	// For NSF
	BOOL		bNSF;
	INT		NSF_PAGE_SIZE;

	CHAR		path[_MAX_PATH];
	CHAR		name[_MAX_FNAME];
	CHAR		fullpath[_MAX_PATH];

	//
	void	FilenameCheck( const char* fname );
private:
};

/*
  A. iNES Format (.NES)
  ---------------------
    +--------+------+------------------------------------------+
    | Offset | Size | Content(s)                               |
    +--------+------+------------------------------------------+
    |   0    |  3   | 'NES'                                    |
    |   3    |  1   | $1A                                      |
    |   4    |  1   | 16K PRG-ROM page count                   |
    |   5    |  1   |  8K CHR-ROM page count                   |
    |   6    |  1   | ROM Control Byte #1                      |
    |        |      |   %####vTsM                              |
    |        |      |    |  ||||+- 0=Horizontal mirroring      |
    |        |      |    |  ||||   1=Vertical mirroring        |
    |        |      |    |  |||+-- 1=SRAM enabled              |
    |        |      |    |  ||+--- 1=512-byte trainer present  |
    |        |      |    |  |+---- 1=Four-screen mirroring     |
    |        |      |    |  |                                  |
    |        |      |    +--+----- Mapper # (lower 4-bits)     |
    |   7    |  1   | ROM Control Byte #2                      |
    |        |      |   %####00PV                              |
    |        |      |    |  |  |+- 1=VS-Unisystem Images       |
    |        |      |    |  |  +-- 1=PlayChoice10 Images       |
    |        |      |    |  |                                  |
    |        |      |    +--+----- Mapper # (upper 4-bits)     |
    |  8-15  |  8   | $00                                      |
    | 16-..  |      | Actual 16K PRG-ROM pages (in linear      |
    |  ...   |      | order). If a trainer exists, it precedes |
    |  ...   |      | the first PRG-ROM page.                  |
    | ..-EOF |      | CHR-ROM pages (in ascending order).      |
    +--------+------+------------------------------------------+
*/

#endif	// !__ROM_INCLUDED__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99久久精品| 大白屁股一区二区视频| 91精品国产一区二区| 一区2区3区在线看| 欧美日韩成人一区| 国产一区二区三区在线观看精品| 日韩一二三四区| 国产在线国偷精品免费看| 中文字幕中文乱码欧美一区二区| 丁香婷婷综合激情五月色| 亚洲天堂免费看| 欧美亚洲免费在线一区| 日本亚洲欧美天堂免费| 欧美高清一级片在线观看| 欧美日韩视频在线第一区 | 久久久久久黄色| 欧美丝袜自拍制服另类| 久久久久久久电影| 久久精品99国产国产精| 亚洲国产成人午夜在线一区| 欧美日韩久久一区二区| 成人夜色视频网站在线观看| 日韩电影一二三区| 国产精品福利电影一区二区三区四区| 欧美日韩国产一二三| 91社区在线播放| gogogo免费视频观看亚洲一| 精品一区二区三区视频| 亚洲a一区二区| 亚洲综合色视频| 亚洲综合激情另类小说区| 国产精品嫩草久久久久| 国产夜色精品一区二区av| 久久婷婷国产综合国色天香 | 国产一区二区免费在线| 蜜桃视频在线一区| 麻豆成人久久精品二区三区红 | 亚洲欧美在线视频观看| 国产精品福利在线播放| 国产精品久久久久久久岛一牛影视 | 欧美日韩午夜在线| 欧美一区二区在线不卡| 91精品国产乱码久久蜜臀| 欧美一级一区二区| 欧美一区二区三区在线视频| 欧美成人在线直播| 中文字幕av一区 二区| 亚洲精品国产精品乱码不99| 亚洲成a人v欧美综合天堂| 免费视频最近日韩| 成人激情视频网站| 日韩视频在线永久播放| 欧美激情一区二区三区不卡| 亚洲视频 欧洲视频| 日本色综合中文字幕| 美腿丝袜一区二区三区| 一本色道久久综合亚洲91 | 天天射综合影视| 成人av在线资源网站| 91精品欧美一区二区三区综合在| 国产欧美日本一区二区三区| 一区二区三区欧美在线观看| 国产成a人亚洲| 日韩三区在线观看| 一区二区三区电影在线播| 粉嫩aⅴ一区二区三区四区| 欧美日韩国产综合久久 | 亚洲成a人在线观看| 白白色 亚洲乱淫| 欧美高清一级片在线观看| 久久国产福利国产秒拍| 日韩视频一区在线观看| 久久不见久久见免费视频1| 欧美性受xxxx黑人xyx性爽| 国产又粗又猛又爽又黄91精品| 国产乱一区二区| 精品国产伦一区二区三区观看方式| 亚洲美女一区二区三区| 欧美久久一区二区| 国产成人精品免费视频网站| 精品视频一区二区三区免费| 中文字幕在线播放不卡一区| 国产精品1区二区.| 综合网在线视频| 色视频一区二区| 亚洲精品久久久蜜桃| 在线成人高清不卡| 韩国精品主播一区二区在线观看 | 天天色天天爱天天射综合| 欧美丰满一区二区免费视频 | 亚洲影视在线播放| 日本韩国精品在线| 日本免费新一区视频| 久久久久久久久岛国免费| youjizz久久| 看片的网站亚洲| 国产欧美日韩综合| 8x8x8国产精品| 大陆成人av片| 国产一区二区在线观看免费| 日韩理论片网站| www日韩大片| 91久久一区二区| 成人黄色777网| 日韩高清国产一区在线| 国产精品久久久久久久裸模| 精品国产伦一区二区三区观看方式 | 黄色精品一二区| 一区二区在线观看视频| 国产精品免费人成网站| 精品国产乱码久久久久久老虎 | 久久奇米777| 日韩一级黄色片| 日韩欧美一二区| 欧美精品欧美精品系列| 欧美午夜精品免费| 欧美亚洲精品一区| 欧美嫩在线观看| 91精品国产综合久久久久久| 欧美日韩免费高清一区色橹橹 | 国产精品天天摸av网| 国产亚洲一区二区三区| 精品国产一区二区三区久久久蜜月 | 久久夜色精品国产噜噜av| 一本色道久久综合亚洲91| 国产精品黄色在线观看| 91精品国产手机| 欧美日韩久久久| 日韩美女在线视频| 久久久久久9999| 亚洲精品国产精品乱码不99| 午夜日韩在线电影| 国产精品456露脸| 色噜噜久久综合| 久久久另类综合| 亚洲一区二区三区四区在线免费观看 | 国产精品888| 在线中文字幕一区二区| 欧美日韩在线播放三区四区| 欧美日韩激情一区| 久久久久99精品一区| 夜夜精品浪潮av一区二区三区| 蜜桃精品在线观看| 成人在线综合网| 欧美日韩一区三区四区| 国产女同性恋一区二区| 日韩精品一二三四| 99re热这里只有精品免费视频| 51午夜精品国产| 亚洲影视在线观看| 91色porny在线视频| www国产亚洲精品久久麻豆| 天天色综合天天| 欧美色偷偷大香| 亚洲一区二区精品久久av| 99免费精品视频| 中文字幕一区二区三区在线观看| 国产综合色产在线精品| 久久久久国产一区二区三区四区 | 国产亚洲视频系列| 亚洲美女在线一区| 在线中文字幕一区二区| 亚洲综合av网| 欧美色手机在线观看| 国产精品久久免费看| 国产麻豆精品视频| 国产精品久久久久影院老司| 国产在线国偷精品产拍免费yy| 精品少妇一区二区三区在线播放 | 成人综合在线视频| 国产精品国产馆在线真实露脸| 91亚洲午夜精品久久久久久| 亚洲国产精品综合小说图片区| 欧美亚洲尤物久久| 久久99久久久欧美国产| 国产日韩欧美综合一区| 国产·精品毛片| 日韩国产在线观看一区| 欧美成人精品1314www| 国产激情91久久精品导航| 亚洲人成网站精品片在线观看| 欧美亚洲高清一区| 国产一区二区伦理| 亚洲欧美一区二区久久| 欧美日韩黄视频| 色婷婷亚洲综合| 日韩av在线播放中文字幕| 亚洲精品水蜜桃| 国产精品视频一二三| 日韩女同互慰一区二区| 91在线播放网址| 国产精品18久久久久久久久久久久| 亚洲免费在线看| 国产欧美精品国产国产专区| 91国偷自产一区二区三区观看 | 欧美一区二区三区啪啪| 91免费版在线| 国产成人av一区二区| 久久精品国产精品青草| 亚洲美女电影在线|