www.pudn.com > potemkin_sourceforPSP.rar > DS9IO.h
#pragma once
#include "../MemMap.h"
#include "../Graphics/G2d.h"
#include "../Shared/N_DMA.h"
#include "DSIOCommon.h"
void DS9IO_SelfTest();
void DS9IO_Init();
u8 MEMDECL ReadDS9IO8 (u32 address);
u16 MEMDECL ReadDS9IO16(u32 address);
u32 MEMDECL ReadDS9IO32(u32 address);
u32 MEMDECL ReadDS9IONoEffect(u32 address);
TCHAR* MEMDECL GetDS9IORegName(u32 address);
void MEMDECL WriteDS9IO8 (u32 address, u8 value);
void MEMDECL WriteDS9IO16(u32 address, u16 value);
void MEMDECL WriteDS9IO32(u32 address, u32 value);
struct CP //start at 0x280, size = 0x40
{
u16 divcnt;
u16 pad;
u32 pad2[3];
union {
struct {
u32 div_numer_l;
u32 div_numer_h;
};
s64 div_numer;
};
union {
struct {
u32 div_denom_l;
u32 div_denom_h;
};
s64 div_denom;
};
union {
struct {
u32 div_result_l;
u32 div_result_h;
};
s64 div_result;
};
u32 div_remainder_l;
u32 div_remainder_h;
u16 sqrtcnt;
u16 pad3;
u32 sqrt_result;
union {
struct {
u32 sqrt_param_l;
u32 sqrt_param_h;
};
u64 sqrt_param;
};
};
struct G3X1 //start at 0x60
{
u16 disp3dCNT;
};
struct G3X2 //start at 0x320
{
int rdlines_count;
int unused1;
int unused2;
int unused3;
u32 edgeColor[4];
u32 alphaTestRef;
u32 unused4[3];
u32 clearColor[4];
u16 clearDepth;
u16 clearImageOffset;
u32 fogColor; //0x358
u32 fogOffset;
u16 fogTable[16]; //0x360
u16 toonTable[32]; //0x380
};
struct DS9IORegion
{
u32 dispcnt;
u8 dispstat;
u8 vcountline;
u8 vcount;
u8 unused;
G2 gfxregs1;
//0x56
u32 unused1[3];
//0x60
u16 disp3dCNT;
u16 unused2;
u32 unused3[(0xb0-0x64) / 4];
//0xb0 - DMAC
DMAC dmac;
u32 unused4[7];
u32 unused5[(0x280-0x100)/4];
//0x280
CP coprocessor;
//0x320
G3X2 gfx3d;
//0x400
u32 gxFifoFiller[16];
//TODO add filler here
G2 gfxregs2;
};
extern DS9IORegion ds9IO;