BizHawk/wonderswan/gfx.h

90 lines
1.9 KiB
C++

#ifndef __WSWAN_GFX_H
#define __WSWAN_GFX_H
#include "system.h"
namespace MDFN_IEN_WSWAN
{
class GFX
{
public:
GFX();
// TCACHE ====================================
void InvalidByAddr(uint32);
void SetVideo(int, bool);
void MakeTiles();
void GetTile(uint32 number,uint32 line,int flipv,int fliph,int bank);
// TCACHE/====================================
void Scanline(uint32 *target);
void SetPixelFormat();
void Init(bool color);
void Reset();
void Write(uint32 A, uint8 V);
uint8 Read(uint32 A);
void PaletteRAMWrite(uint32 ws_offset, uint8 data);
bool ExecuteLine(uint32 *surface, bool skip);
void SetLayerEnableMask(uint32 mask);
void SetBWPalette(const uint32 *colors);
void SetColorPalette(const uint32 *colors);
private:
// TCACHE ====================================
uint8 tiles[256][256][2][8];
uint8 wsTCache[512*64];
uint8 wsTCache2[512*64];
uint8 wsTCacheFlipped[512*64];
uint8 wsTCacheFlipped2[512*64];
uint8 wsTCacheUpdate[512];
uint8 wsTCacheUpdate2[512];
uint8 wsTileRow[8];
// TCACHE/====================================
int wsVMode;
uint32 wsMonoPal[16][4];
uint32 wsColors[8];
uint32 wsCols[16][16];
uint32 ColorMapG[16];
uint32 ColorMap[16*16*16];
uint32 LayerEnabled;
uint8 wsLine; /*current scanline*/
uint8 SpriteTable[0x80][4];
uint32 SpriteCountCache;
uint8 DispControl;
uint8 BGColor;
uint8 LineCompare;
uint8 SPRBase;
uint8 SpriteStart, SpriteCount;
uint8 FGBGLoc;
uint8 FGx0, FGy0, FGx1, FGy1;
uint8 SPRx0, SPRy0, SPRx1, SPRy1;
uint8 BGXScroll, BGYScroll;
uint8 FGXScroll, FGYScroll;
uint8 LCDControl, LCDIcons;
uint8 BTimerControl;
uint16 HBTimerPeriod;
uint16 VBTimerPeriod;
uint16 HBCounter, VBCounter;
uint8 VideoMode;
bool wsc; // mono / color
public:
System *sys;
template<bool isReader>void SyncState(NewState *ns);
};
}
#endif