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 + -
显示快捷键?