X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=16%2Flib%2FMODEX16.H;h=2adc5c433fe5ed1b6b3f153650d5b447d3cd400d;hb=7df8d617ba84f4a3e2bcff29f7d1ea717f595296;hp=880f2c8bd4654fbf5916bf71e08f9b6c1695064d;hpb=52275bd67b49fbf71b94d63d7d9e5d5a933744b7;p=16.git diff --git a/16/lib/MODEX16.H b/16/lib/MODEX16.H index 880f2c8b..2adc5c43 100644 --- a/16/lib/MODEX16.H +++ b/16/lib/MODEX16.H @@ -4,12 +4,11 @@ #ifndef MODEX16_H #define MODEX16_H #include -#include "lib\types.h" - +#include "lib\types.h" + /* -========================== Types & Macros ==========================- */ #define PAGE_OFFSET(x,y) (((y)<<6)+((y)<<4)+((x)>>2)) #define PLANE(x) (1<< (x&3)) -typedef byte far* page_t; #define SELECT_ALL_PLANES() outpw(0x03c4, 0xff02) typedef struct { byte *data; @@ -18,15 +17,28 @@ typedef struct { byte *palette; } bitmap_t; +typedef struct { + byte far* data; /* the data for the page */ + word dx; /* col we are viewing on the virtual screen */ + word dy; /* row we are viewing on the virtual screen */ + word width; /* virtual width of the page */ + word height; /* virtual height of the page */ +} page_t; + /* -============================ Functions =============================- */ /* mode switching, page, and plane functions */ -void modexEnter(); -void modexLeave(); -void modexShowPage(page_t page); +void modexEnter(); +void setvideo(/*byte mode, */short vq); +page_t modexDefaultPage(); +page_t modexNextPage(page_t *p); +void modexShowPage(page_t *page); void modexPanPage(page_t *page, int dx, int dy); void modexSelectPlane(byte plane); -void modexClearRegion(page_t page, int x, int y, int w, int h, byte color); -void modexDrawBmp(page_t page, int x, int y, bitmap_t *bmp, byte sprite); +void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color); +void modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp); +void modexDrawBmpRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); +void modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp); +void modexDrawSpriteRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); /* Palette fade and flash effects */ void modexFadeOn(word fade, byte *palette); @@ -49,10 +61,11 @@ void modexPalUpdate(byte *p); void modexWaitBorder(); /* bitmap functions */ -bitmap_t modexLoadPcx(char *filename); +bitmap_t modexLoadPcx(char *filename); /* -======================= Constants & Vars ==========================- */ extern byte far* VGA; /* The VGA Memory */ +#define SCREEN_SEG 0xa000 #define VIDEO_INT 0x10 #define SET_MODE 0x00 #define VGA_256_COLOR_MODE 0x13 @@ -61,6 +74,7 @@ extern byte far* VGA; /* The VGA Memory */ #define SCREEN_HEIGHT 240 #define PAGE_SIZE (word)(SCREEN_WIDTH/4 * SCREEN_HEIGHT) +#define AC_INDEX 0x03c0 #define SC_INDEX 0x03c4 #define SC_DATA 0x03c5 #define CRTC_INDEX 0x03d4 @@ -75,5 +89,14 @@ extern byte far* VGA; /* The VGA Memory */ #define PAL_READ_REG 0x03C7 /* Color register, read address */ #define PAL_WRITE_REG 0x03C8 /* Color register, write address */ #define PAL_DATA_REG 0x03C9 /* Color register, data port */ -#define PAL_SIZE (256 * 3) +#define PAL_SIZE (256 * 3) + +#define NUM_COLORS 256 // number of colors in vga mode +#define BONK 400 +#define LGQ 32 +#define HGQ 55 +#define TILEWH 16 +#define QUADWH TILEWH/2 +#define VW (SCREEN_WIDTH+32) +#define VH (SCREEN_HEIGHT+32) #endif