#ifndef __LCD_GB_H__
#define __LCD_GB_H__
#include "lcd.h"
#include "defs.h"
struct vissprite
{
byte *buf;
int x;
byte pal, pri;
};
struct scan
int bg[64];
int wnd[64];
#if LCD_DEPTH == 1
byte buf[8][256];
#elif LCD_DEPTH == 2
byte buf[4][256];
#elif LCD_DEPTH > 4
byte buf[256];
#endif
fb_data pal[64];
byte pri[256];
struct vissprite vs[16];
int ns, l, x, y, s, t, u, v, wx, wy, wt, wv;
struct obj
byte y;
byte x;
byte pat;
byte flags;
struct lcd
byte vbank[2][8192];
union
byte mem[256];
struct obj obj[40];
} oam;
byte pal[128];
extern struct lcd lcd;
extern struct scan scan;
void lcd_begin(void) ICODE_ATTR;
void lcd_refreshline(void) ICODE_ATTR;
void pal_write(int i, byte b) ICODE_ATTR;
void pal_write_dmg(int i, int mapnum, byte d) ICODE_ATTR;
void vram_write(addr a, byte b) ICODE_ATTR;
void vram_dirty(void) ICODE_ATTR;
void pal_dirty(void) ICODE_ATTR;
void lcd_reset(void);