X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_tdef.h;h=0b6de0bf73f449ae6d7a92afe8d22a35caab0be8;hb=2a225a70d77b2323a29bc78539cd50c5997bca1e;hp=dbda778a0b9fa4f49dbd188377d5be301c08ba75;hpb=504952db812eb43b41636db1da125be946cfd35f;p=16.git diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index dbda778a..0b6de0bf 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -66,12 +66,38 @@ typedef struct { //from 16_sprit.h #ifdef __WATCOMC__ +#include + +typedef struct vrs_container{ + // Size of a .vrs blob in memory + // minus header + dword data_size; + union{ + byte far *buffer; + struct vrs_header far *vrs_hdr; + }; + // Array of corresponding vrl line offsets + vrl1_vgax_offset_t **vrl_line_offsets; +} vrs_container_t; + +typedef struct vrl_container{ + // Size of a .vrl blob in memory + // minus header + dword data_size; + union{ + byte far *buffer; + struct vrl1_vgax_header far *vrl_header; + }; + // Pointer to a corresponding vrl line offsets struct + vrl1_vgax_offset_t *line_offsets; +} vrl_container_t; + typedef struct sprite { // VRS container from which we will extract animation and image data - struct vrs_container *spritesheet; + vrs_container_t spritesheet; // Container for a vrl sprite - struct vrl_container *sprite_vrl_cont; + vrl_container_t sprite_vrl_cont; // Current sprite id int curr_spri_id; // Index of a current sprite in an animation sequence @@ -145,11 +171,11 @@ typedef struct { byte *data; //TODO: 16_mm and 16_ca must handle this } mapl_t; //map layer array type def -#define MAP_LAYERS 3 +#define MAPPLANES 3 typedef struct { //long planestart[3]; //unsigned planelength[3]; - mapl_t layerdata[MAP_LAYERS]; // mapdata for multilayer (map index values for rendering which image on the tile) + mapl_t layerdata[MAPPLANES]; // mapdata for multilayer (map index values for rendering which image on the tile) tiles_t *tiles; //TODO: 16_mm and 16_ca must handle this // tilesets for layers (currently ony 4 can be loaded wwww) int width, height; //this has to be signed! byte name[16]; @@ -189,6 +215,30 @@ typedef struct { //from 16_in //========================================================================== +#define KeyInt 9 // The keyboard ISR number + +// +// mouse constants +// +#define MReset 0 +#define MButtons 3 +#define MDelta 11 + +#define MouseInt 0x33 +//#define Mouse(x) _AX = x,geninterrupt(MouseInt) + +// +// joystick constants +// +#define JoyScaleMax 32768 +#define JoyScaleShift 8 +#define MaxJoyValue 5000 + +#define MaxPlayers 4 +#define MaxKbds 2 +#define MaxJoys 2 +#define NumCodes 128 + typedef byte ScanCode; typedef enum { @@ -204,12 +254,10 @@ typedef enum { motion_None = 0, motion_Right = 1,motion_Down = 1 } Motion; -typedef enum { - dir_North,//dir_NorthEast, - dir_West,//dir_Nortinest, - dir_None, - dir_East,//,dir_SouthEast, - dir_South,//dir_Soutinest, +typedef enum { // Quick lookup for total direction + /*dir_NorthWest, */dir_North,/* dir_NorthEast,*/ + dir_West, dir_None, dir_East, + /*dir_SouthWest, */dir_South/*, dir_SouthEast*/ } Direction; typedef struct { boolean near button0,button1,button2,button3; @@ -239,6 +287,33 @@ typedef struct { joyMultXH,joyMultYH; } JoystickDef; +typedef struct instat { + boolean CapsLock; + ScanCode CurCode,LastCode; + + boolean Keyboard[NumCodes]; + boolean Paused; + char LastASCII; + ScanCode LastScan; +} inst_t; + +typedef struct// inconfig +{ + boolean IN_Started; +// +// configuration variables +// + boolean JoysPresent[MaxJoys], + MousePresent, + JoyPadPresent; + +// Global variables + KeyboardDef KbdDefs[MaxKbds]; + JoystickDef JoyDefs[MaxJoys]; + //struct instat *inst; + inst_t *inst; +} in_info_t; + //========================================================================== typedef struct @@ -315,7 +390,7 @@ typedef struct //0000word startclk; float clk, tickclk; //timer //newer vars //TODO: find out how they are used - byte grneeded[NUMCHUNKS]; +// byte grneeded[NUMCHUNKS]; } video_t; //from scroll16 @@ -358,7 +433,7 @@ typedef struct mmblockstruct { word start,length; //word start; dword length; - word blob; //for data larger than 64k +//++++ word blob; //for data larger than 64k unsigned attributes; memptr *useptr; // pointer to the segment start struct mmblockstruct far *next; @@ -492,8 +567,8 @@ typedef struct MainPagesUsed, PMNumBlocks; long PMFrameCount; - PageListStruct far *PMPages; - memptr/*__SEGA*/ *PMSegPages; + PageListStruct far *PMPages, + _seg *PMSegPages; pm_mmi_t mm; pm_emmi_t emm; pm_xmmi_t xmm; @@ -506,7 +581,6 @@ typedef struct //========================================================================== #define NUMMAPS 4//39 -#define MAPPLANES 3 #define NUMSNDCHUNKS 84 typedef struct @@ -514,10 +588,18 @@ typedef struct word bit0,bit1; // 0-255 is a character, > is a pointer to a node } huffnode; +typedef struct +{ + long planestart[3]; + unsigned planelength[3]; + unsigned width,height; + char name[16]; +} maptype; + typedef struct { int mapon, mapnum; - //__SEGA *mapheaderseg[NUMMAPS]; + maptype _seg *mapheaderseg[NUMMAPS]; } ca_mapinfo_t; typedef struct @@ -526,20 +608,29 @@ typedef struct int grhandle[4]; // handle to EGAGRAPH int audiohandle[4]; // handle to AUDIOT / AUDIO } ca_handle_t; - +/* +16/wf3d8086/id_ca.c: grstarts = (long _seg *)FP_SEG(&EGAhead); +16/wf3d8086/id_ca.c: tinf = (byte _seg *)FP_SEG(&maphead); +16/wf3d8086/id_ca.c: pos = ((mapfiletype _seg *)tinf)->headeroffsets[i]; +16/wf3d8086/id_ca.c: audiostarts = (long _seg *)FP_SEG(&audiohead); +16/wf3d8086/id_ca.c: ((mapfiletype _seg *)tinf)->RLEWtag); +16/wf3d8086/id_ca.c: ((mapfiletype _seg *)tinf)->RLEWtag); +16/wf3d8086/id_ca.c: source = (byte _seg *)bufferseg+(pos-bufferstart); +*/ typedef struct //TODO: USE THIS!!!! { byte ca_levelbit,ca_levelnum; ca_handle_t file; //files to open ca_mapinfo_t camap; - memptr/*__SEGA*/ mapsegs[MAP_LAYERS]; - memptr/*__SEGA*/ *grsegs[NUMCHUNKS]; + byte _seg *tinf[4];//?? where in the id engine is this used and what is it? --sparky4 + unsigned _seg *mapsegs[MAPPLANES]; + void _seg *grsegs[NUMCHUNKS]; byte far grneeded[NUMCHUNKS]; - memptr/*byte _seg*/ *audiosegs[NUMSNDCHUNKS]; + word _seg *audiosegs[NUMSNDCHUNKS];//long - //misc memptr - memptr tinf[4]; + word _seg *grstarts; // array of offsets in egagraph, -1 for sparse//long + word _seg *audiostarts; // array of offsets in audio / audiot//long huffnode huffnode; @@ -550,22 +641,26 @@ typedef struct //TODO: USE THIS!!!! //========================================================================== //actual global game varables! -typedef enum { - ENGI_EXIT, +/*typedef enum { ENGI_QUIT, ENGI_RUN, - ENGI_INPUT, + ENGI_MENU, ENGI_PAUSE -} engi_stat_t; +} engi_stat_t;*/ +//ENGI_INPUT, typedef struct { +//---- engi_stat_t engi_stat; video_t video; // video settings variable ca_t ca; // ca stuff pm_t pm; // pm stuff - loghandle_t handle; //handles for file logging - kurokku_t kurokku; //clock struct - mminfo_t mm; mminfotype mmi; + loghandle_t handle; //handles for file logging + kurokku_t kurokku; //clock struct + mminfo_t mm; mminfotype mmi; // mm stuff + in_info_t in; // 16_in info + player_t player[MaxPlayers]; // player vars + map_view_t mv[4]; } global_game_variables_t; #ifdef __WATCOMC__