// ---- TRAM
enum {
TRAMATR_COLOR = 0x07,
TRAMATR_REVERSE = 0x08,
TRAMATR_BLINK = 0x10,
TRAMATR_PCG = 0x20,
TRAMATR_Yx2 = 0x40,
TRAMATR_Xx2 = 0x80,
TRAMKNJ_ULINE = 0x20
};
enum {
UPDATE_TRAM = (1 << 5),
UPDATE_VRAM0 = (1 << 6),
UPDATE_VRAM1 = (1 << 7),
UPDATE_VRAM = UPDATE_VRAM0 | UPDATE_VRAM1,
UPDATE_TVRAM = UPDATE_VRAM0 | UPDATE_VRAM1 | UPDATE_TRAM
};
typedef struct {
UINT8 atr;
UINT8 ank;
UINT8 knj;
UINT8 _udt;
} TRAM;
// ---- GRAM
enum {
GRAM_BANK0 = 0x00000,
GRAM_BANK1 = 0x10000,
GRAM_BANK0L = 0x00000,
GRAM_BANK0H = 0x00400,
GRAM_BANK1L = 0x10000,
GRAM_BANK1H = 0x10400,
GRAM_HALFSTEP = 0x00400,
GRAM_LINESTEP = 0x0800,
GRAM_B = 0x0000,
GRAM_R = 0x4000,
GRAM_G = 0x8000,
GRAM_RGBMASK = 0xc000
};
#define PORT2GRAM(port) ((port) - 0x4000)
#define PORT2GRAM2(port) ((port) & (~0xc000))
#define TRAM2GRAM(addr) (addr)
#ifdef __cplusplus
extern "C" {
#endif
extern TRAM tram[0x800];
extern UINT8 gram[];
extern UINT8 vramupd[0x800];
#ifdef __cplusplus
}
#endif
#define TRAM_ANK(addr) tram[addr].ank
#define TRAM_KNJ(addr) tram[addr].knj
#define TRAM_ATR(addr) tram[addr].atr
#define TRAMUPDATE(addr) vramupd[addr]
RetroPC.NET-CVS <cvs@retropc.net>