X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=16%2Fmodex16%2Fmodex16.h;h=ff4913f6bdfdad3daffaa58fe2d3ace8f4cf5a84;hb=7499dc78fbb151b6daac45f2643a15bf1b40beb7;hp=4502fa08db34ae902de6d7d11b1b9b5fee254489;hpb=3686f3bf9c15445091aef92692ccf3486389efbc;p=16.git diff --git a/16/modex16/modex16.h b/16/modex16/modex16.h old mode 100644 new mode 100755 index 4502fa08..ff4913f6 --- a/16/modex16/modex16.h +++ b/16/modex16/modex16.h @@ -5,23 +5,63 @@ #define MODEX16_H #include #include "types.h" +#include "bitmap.h" /* -========================== Types & Macros ==========================- */ -#define PAGE_OFFSET(x,y) ((y<<6)+(y<<4)+(x>>2)) +#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) +#ifndef PAGET +#define PAGET +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; +#endif + /* -============================ Functions =============================- */ +/* mode switching, page, and plane functions */ void modexEnter(); void modexLeave(); -void modexShowPage(page_t page); +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 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); +void modexCopyPageRegion(page_t *dest, page_t *src, word sx, word sy, word dx, word dy, word width, word height); + +/* Palette fade and flash effects */ +void modexFadeOn(word fade, byte *palette); +void modexFadeOff(word fade, byte *palette); +void modexFlashOn(word fade, byte *palette); +void modexFlashOff(word fade, byte *palette); + +/* palette loading and saving */ +void modexPalSave(byte *palette); +byte *modexNewPal(); +void modexLoadPalFile(char *filename, byte **palette); +void modexSavePalFile(char *filename, byte *palette); + +/* fixed palette functions */ +void modexPalBlack(); +void modexPalWhite(); + +/* utility functions */ +void modexPalUpdate(byte *p); +void modexWaitBorder(); /* -======================= 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 @@ -30,10 +70,12 @@ 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 #define CRTC_DATA 0x03d5 +#define GC_INDEX 0x03ce #define MISC_OUTPUT 0x03c2 #define HIGH_ADDRESS 0x0C #define LOW_ADDRESS 0x0D @@ -41,4 +83,8 @@ extern byte far* VGA; /* The VGA Memory */ #define INPUT_STATUS_1 0x03da #define DISPLAY_ENABLE 0x01 #define MAP_MASK 0x02 +#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) #endif