gbagpu.h

来自「一个任天堂掌上游戏机NDS的源代码」· C头文件 代码 · 共 136 行

H
136
字号
/*************************************************************************** DSemu - The Next Generation                                             ** GBA scanline GPU: Class definition [gbagpu.h]                           ** Copyright Imran Nazar, 2005; released under the BSD public licence.     ***************************************************************************/#include "defs.h"#include "plggpu.h"#include "plgmmu32.h"#include "plggui.h"#include "plgcpu.h"#include "datadefs.h"// An implementation of the GPU plugin interface.class gbaGPU : public GPUPlugin{    public:        gbaGPU(std::string, REQPTR, UNREQPTR);	~gbaGPU();        PLUGININFO *getinfo();	void reset();	void release();	void status(int,int);		void setDisplay(u8*);	    private:        //---Plugin-generic stuff        std::string pName, pClass;        REQPTR pRequest;        UNREQPTR pUnrequest;	static PLUGININFO pInfo;               static std::string pluginName;	// Start of what we'll need.	void line();	void HBLstart();	void HBLend();	CPUPlugin *CPU;	MMU32Plugin *MMU;	static GUIPlugin *GUI;	static int palwinID;	static u32 *palbuffer;	static u8 *dispbuffer;        	typedef struct {            union {                u16 data;	        u8 b[2];            };            u16 flags;        } IOREG;			    	static IOREG reg[0x30];	static int rflags[0x30];	static u8  *VRAMb, *OAMb;	static u16 *VRAMh, *PALh, *OAMh;	static u32 *VRAMw, *PALw, *OAMw;	static int curline;		static u8  rdB(u32);	static u16 rdH(u32);	static u32 rdW(u32);	static void wrB(u32, u8 );	static void wrH(u32, u16);	static void wrW(u32, u32);        static void scanTile(u8*,int), scanRot(u8*,int);	static void sprites(u8*,int);		static void hblank(Plugin*);	static void hblankend(Plugin*);	static void drawline(Plugin*);		typedef void (*modefptr)(u8 *);	static void lineM0(u8*), lineM1(u8*), lineM2(u8*);	static void lineM3(u8*), lineM4(u8*), lineM5(u8*), lineMNULL(u8*);	static modefptr lineM[8];	static u32 BGX[2], BGY[2];	static u8 mospy[4];	static int ForceBG[4];};// I/O registers used by the GPU#define REG_DISPCNT    0x000#define REG_GREENSWAP  0x001#define REG_DISPSTAT   0x002#define REG_VCOUNT     0x003#define REG_BG0CNT     0x004#define REG_BG1CNT     0x005#define REG_BG2CNT     0x006#define REG_BG3CNT     0x007#define REG_BG0HOFS    0x008#define REG_BG0VOFS    0x009#define REG_BG1HOFS    0x00A#define REG_BG1VOFS    0x00B#define REG_BG2HOFS    0x00C#define REG_BG2VOFS    0x00D#define REG_BG3HOFS    0x00E#define REG_BG3VOFS    0x00F#define REG_BG2PA      0x010#define REG_BG2PB      0x011#define REG_BG2PC      0x012#define REG_BG2PD      0x013#define REG_BG2XL      0x014#define REG_BG2XH      0x015#define REG_BG2YL      0x016#define REG_BG2YH      0x017#define REG_BG3PA      0x018#define REG_BG3PB      0x019#define REG_BG3PC      0x01A#define REG_BG3PD      0x01B#define REG_BG3XL      0x01C#define REG_BG3XH      0x01D#define REG_BG3YL      0x01E#define REG_BG3YH      0x01F#define REG_WIN0H      0x020#define REG_WIN1H      0x021#define REG_WIN0V      0x022#define REG_WIN1V      0x023#define REG_WININ      0x024#define REG_WINOUT     0x025#define REG_MOSAIC     0x026#define REG_BLDCNT     0x028#define REG_BLDALPHA   0x029#define REG_BLDY       0x02A/*** EOF: gbagpu.h *******************************************************/

⌨️ 快捷键说明

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