1 /* SCAVENGER by David Ashley dash@linuxmotors.com */ 2 3 #ifndef SCAV_H 4 #define SCAV_H 5 6 #include <X11/keysym.h> 7 8 #define DEMO 0 9 #define SAVESOUND 0 10 #define NUMGFX 4 11 12 #define EMPTY 0 13 #define BRICK 1 14 #define CEMENT 2 15 #define LADDER 3 16 #define RAIL 4 17 #define FAKE 5 18 #define ESCAPE 6 19 #define GOLD 7 20 #define ENEMY 8 21 #define HERO 9 22 #define HIDDEN 10 23 #define FLASHING 11 24 #define HAT 12 25 #define EXITDOOR 13 26 #define DUGBRICK 14 27 #define BORDER 15 28 29 #define FEMPTY 1 30 #define FBRICK 2 31 #define FCEMENT 4 32 #define FLADDER 8 33 #define FRAIL 16 34 #define FFAKE 32 35 #define FESCAPE 64 36 #define FGOLD 128 37 #define FENEMY 256 38 #define FHERO 512 39 #define FHIDDEN 1024 40 #define FFLASHING 2048 41 #define FHAT 4096 42 #define FEXITDOOR 8192 43 #define FDUGBRICK 16384 44 #define FBORDER 32768 45 46 47 #define FORM 0x464f524dL 48 #define ILBM 0x494c424dL 49 #define PBM 0x50424d20L 50 #define CMAP 0x434d4150L 51 #define BODY 0x424f4459L 52 #define BMHD 0x424d4844L 53 54 #define ABS(x) ((x)<0 ? -(x) : (x)) 55 #define SGN(x) ((x)<0 ? -1 : ((x)==0 ? 0 : 1)) 56 57 #define LEVELSIZE 476 58 59 #define BGFIGS 0 60 #define HATFIGS 76 61 #define SHADOWFIGS 48 62 #define POINTERFIGS 60 63 #define DIGFIGS 62 64 #define FLASHFIGS 56 65 #define BUTTONFIGS 84 66 #define BORDERFIGS 72 67 68 #define XOFF 32 69 #define YOFF 60 70 71 72 #define LX 24 73 #define LY 15 74 #define TX 24 75 #define TY 24 76 #define TILEMAX (TX*TY) 77 78 #define COLORSEL 0 79 #define BOXSEL 1 80 #define FIXBLOW 2 81 #define RESTORE 3 82 #define SHOWCOLORS 4 83 #define INVERT1 5 84 #define RGBSEL 6 85 #define COORDS 7 86 #define PUTTILE 8 87 #define EBOX0 9 88 #define EBOX1 10 89 #define WRITESTRING 11 90 #define DRAWSQUARE 12 91 92 #define COLORSX 396 93 #define COLORSY 256 94 #define BOXESX 64 95 #define BOXESY 32 96 #define ACOLOR 0 97 #define BCOLOR 255 98 #define CCOLOR 0 99 #define BLOWUPX 380 100 #define BLOWUPY 32 101 #define DRAWFUNCX 592 102 #define DRAWFUNCY 32 103 #define SHOWCOLORX 592 104 #define SHOWCOLORY 184 105 #define RGBX 300 106 #define RGBY 300 107 #define PICKCOLOR1 1 108 #define PICKCOLOR2 2 109 110 /* enflags */ 111 #define FALLING 1 112 #define DIGGING 2 113 #define HELDSTABLE 4 114 #define DEAD 8 115 #define HOLDING 16 116 #define TRAPPED 32 117 #define HIDDENTYPE 64 118 #define PLAYER 128 119 #define OLDFALLING 256 120 #define UNSTABLE 512 /* when player is on falling enemy */ 121 122 #define DEADTIME 20 123 #define DIGTIME 24 124 #define DIGLIFE 360 125 #define MAXDIG 20 126 127 #define MOVIEMAX 4096 128 #define HASTRAPPED 1 129 #define HASKILLED 2 130 #define MAXRESOURCES 512 131 #define MARKMAX 128 132 133 #define TCOLOR 255 134 135 #define HELDLIMIT 6 136 137 #define MAXFIGS 384 138 139 #define FADERATE 8 140 141 #define MAXSPRITES 16 142 /* sprite flags */ 143 #define SPRITEACTIVE 0x80 144 #define SPRITESTORING 1 145 #define SPRITEOFF(x) (x)->spriteflags&=0xffff-SPRITEACTIVE 146 147 148 #define COMPXY(x,y) (levelbuff+xcomp[x]+ycomp2[y]) 149 #define XCONV(i) (((i)%28)*TX+XOFF-TX*2) 150 #define YCONV(i) (((i)/28)*TY+YOFF-TY) 151 152 #define TEXTX XOFF 153 #define TOPTEXTY (YOFF-36) 154 #define BOTTOMTEXTY (YOFF+15*24+24) 155 156 #define ISENTERABLE(x) (bits[x] & (FEMPTY|FLADDER|FRAIL|FGOLD|FENEMY|FHERO|FFLASHING|FDUGBRICK|FHAT)) 157 #define ISSTABLE(x) (bits[x] & (FBRICK|FCEMENT|FLADDER|FHIDDEN|FBORDER)) 158 159 #define MAXBYTES 128 160 161 #define INUM 300 162 #define SPACE 16 163 #define RAD 4 164 165 #define readbyte() myci() 166 #define IBUFFLEN 1024 167 168 169 170 171 172 173 174 175 176 177 178 179 180 typedef unsigned char uchar; 181 182 struct entity 183 { 184 int enx; 185 int eny; 186 struct sprite *ensprite; 187 uchar *enat; 188 int enflags; 189 int endir; 190 int entimer; 191 uchar *enloc1; 192 uchar enwhat; 193 uchar enmask; 194 uchar enholdcount; 195 uchar enacount; 196 }; 197 198 struct dig 199 { 200 int digx; 201 int digy; 202 uchar *digat; 203 struct sprite *digsprite; 204 int digtimer; 205 }; 206 207 struct sprite 208 { 209 int spriteflags; 210 int spritex; 211 int spritey; 212 int spritefig; 213 }; 214 215 typedef struct 216 { 217 uchar gs_colormap[768]; 218 uchar gs_inout[256]; 219 uchar *gs_pic; 220 } gfxset; 221 222 223 224 225 226 227 228 229 230 231 232 extern char demolevel0[]; 233 extern char demomovie0[]; 234 extern uchar rotbytes[]; 235 extern int keylist[]; 236 extern int xcolors[256]; 237 238 239 240 extern int marks[MARKMAX],*markpoint; 241 extern char libname[256]; 242 extern char localname[256]; 243 extern char localdirname[256]; 244 extern char resourcename[256]; 245 extern char rcname[256]; 246 247 extern uchar playername[20]; 248 extern uchar bestname[20]; 249 extern int fallsound; 250 extern int digsound; 251 extern uchar needwhole,needtoptext,needbottomtext; 252 253 extern int xpos,ypos; 254 extern int hc; 255 256 extern int upkey,downkey,leftkey,rightkey,digleftkey,digrightkey; 257 258 extern int hiddens[3],hiddennum; 259 extern int ilevel; 260 extern int file; 261 extern int pty; 262 extern char gfxname0[256]; 263 extern char gfxname1[256]; 264 extern char gfxname2[256]; 265 extern char gfxname3[256]; 266 extern char *gfxnames[4]; 267 268 extern uchar movie[MOVIEMAX+2+20]; 269 extern uchar *mpoint; 270 extern uchar *mend; 271 extern long score,bestscore; 272 extern int time1,time2; 273 extern int playflags; 274 275 extern gfxset gfxsets[NUMGFX]; 276 277 extern void *configtab[]; 278 279 extern uchar toptext[72]; 280 extern uchar bottomtext[72]; 281 extern uchar topwant[73]; 282 extern uchar bottomwant[73]; 283 extern uchar mtflag; 284 285 extern int oldmode; 286 extern int wnum; 287 extern int rowbytes; 288 extern int gran,gran64; 289 extern long pbase; 290 extern int cwin; 291 extern long cwinlow,cwinhigh; 292 extern int seed; 293 extern int figseg; 294 extern uchar colormap[768]; 295 extern int mousex,mousey; 296 extern int numenemies; 297 extern int numgold; 298 extern int cframe; 299 extern int clevel; 300 extern int bright; 301 extern uchar temp[1024]; 302 303 extern void (*mode)(); 304 305 extern uchar playing; 306 extern uchar recording; 307 extern long testval; 308 extern uchar wonflag; 309 extern uchar lostflag; 310 extern uchar freezing; 311 extern uchar randcount,randcount2; 312 extern uchar smap[16]; 313 extern int mbuttons,mbuttons2; 314 extern int curx,cury; 315 316 extern int rotnum; 317 318 /*void mode0(),mode1(),mode2(),mode3(),mode4();*/ 319 320 extern uchar levelbuff[LEVELSIZE]; 321 extern uchar levelback[LEVELSIZE]; 322 extern uchar movings[LEVELSIZE]; 323 extern uchar randoms[LEVELSIZE]; 324 extern int xcomp[640]; 325 extern int ycomp[480]; 326 extern int ycomp2[480]; 327 extern int centerx[640]; 328 extern int centery[480]; 329 330 extern int cantascend[LX]; 331 extern int cantdescend[LX]; 332 extern int enterableo[LX+2]; 333 extern int *enterable; 334 extern int stable[LX]; 335 extern int upgoal[LX]; 336 extern int downgoal[LX]; 337 extern int bits[]; 338 extern uchar calced; 339 340 extern int bestdir,bestdist,aboveenemy,belowenemy,mask,thisdir,aboveplayer,belowplayer; 341 342 343 extern struct sprite spritelist[MAXSPRITES]; 344 345 extern uchar *flashat; 346 extern int flashx,flashy; 347 extern int flashtimer; 348 extern struct sprite *flashsprite; 349 350 extern struct entity entities[8]; 351 352 extern struct dig diggings[MAXDIG]; 353 354 355 extern int skips[192]; 356 357 extern int mickeyx,mickeyy; 358 extern int mx,my; 359 360 extern int offscreen; 361 extern int vp; 362 extern int tileseg; 363 364 extern uchar *wantiff; 365 366 extern uchar *picloc,*picput; 367 extern int bmw,bmh,byteswide,depth; 368 extern int ihand,ileft; 369 extern uchar *itake; 370 extern uchar ibuff[IBUFFLEN]; 371 372 373 374 375 376 377 378 379 380 381 382 383 extern uchar *getgfx(); 384 385 386 extern long readlong(); 387 extern int rbs(); 388 extern int myci(); 389 390 391 extern uchar *doiff(uchar *name); 392 extern void debit(uchar *lines, int numb, int deep); 393 extern int fixbyte(char *take,int bit,int deep); 394 extern void unpack(int len, uchar *where); 395 extern int getresource(int num,char *put,int len); 396 extern int rlout(int handle,long value); 397 extern int putresource(int num,uchar *take,int len); 398 399 400 extern int loadlevel(int num); 401 extern int myrand(); 402 extern void paintlevel(); 403 extern void dectime(); 404 extern void fixtext(); 405 extern void writestring(uchar *str, int x, int y, int color); 406 extern void storesprites(); 407 extern void restoresprites(); 408 extern void drawsprites(); 409 extern void chainlevel(int num); 410 extern struct sprite *newsprite(); 411 extern void initplay(); 412 extern void maketext(); 413 extern void initdemo(); 414 extern void startgame(); 415 extern void spritesoff(); 416 extern void lefttext(uchar *txt); 417 extern void centertext(uchar *txt); 418 extern void nextlevel(int type); 419 extern void samelevel(); 420 extern void endplay(); 421 extern int whichfig(struct entity *en); 422 extern void changesprites(); 423 extern void fadein(); 424 extern void fadeout(); 425 extern int iterate(); 426 extern uchar *getgfx(int num); 427 extern void setint(char *ip,int *op); 428 extern void setstring(char *ip,char *op); 429 430 431 extern void getconfig(); 432 extern void remslash(char *str); 433 extern int dupfile(char *src, char *dest); 434 extern void finddata(); 435 extern void makercname (char *str); 436 extern int makercfile(char *str); 437 extern void thandler(int val); 438 extern int main(int argc, char **argv); 439 extern void createhidden(int at); 440 extern void newdig(uchar *at); 441 442 443 extern int onenemy(struct entity *pl, int what); 444 445 extern void fix(uchar *where); 446 extern void doplayer(struct entity *pl, int what); 447 extern void addmodify(int where, int what); 448 extern void addmodifyq(int where, int what); 449 extern void decgold(); 450 extern void dodiggings(); 451 extern void rethink(); 452 extern void openbrick(uchar *where); 453 extern void closebrick(uchar *where); 454 455 456 extern void recalc(); 457 extern int findbest(int expos, int eypos); 458 extern int downrate(unsigned int d0, unsigned int delta); 459 extern int uprate(unsigned int d0, unsigned int delta); 460 extern void doenemies(); 461 extern void killenemy(struct entity *en); 462 extern void movement(); 463 extern void mark(int x,int y); 464 extern void domarks(); 465 extern void paintmode3(); 466 extern void tomode3(); 467 468 469 extern void query(uchar *txt, int maxlen, uchar *str); 470 extern void remapkey(char *str, int *key, int line); 471 extern void remapkeys(); 472 extern void getplayername(); 473 extern void findlevel(); 474 extern void mode3() /* menu */; 475 extern void mode0() /* demo mode */; 476 extern void mode1() /* playing game */; 477 extern void csline(uchar *put, int line); 478 extern void capturescreen(); 479 extern int makesound(int num); 480 extern void stopsound(int num); 481 extern void quiet(); 482 extern void waitsound(); 483 484 /* 485 extern char *gfxnames[]; 486 extern char libname[],localname[],localdirname[]; 487 488 extern long testval; 489 extern uchar soundstat[]; 490 extern unsigned short sseg,sbbase,sbdma,sbirq; 491 extern uchar needwhole,needtoptext,needbottomtext; 492 493 extern uchar first10[]; 494 extern int pointer; 495 extern void (*mode)(); 496 extern uchar colormap[]; 497 extern int curx,cury; 498 extern int picseg; 499 extern int mbuttons,mbuttons2; 500 extern int cframe; 501 extern uchar temp[]; 502 extern uchar gfxname[]; 503 extern uchar levelbuff[]; 504 extern uchar wonflag,lostflag; 505 extern int file,clevel; 506 extern uchar filename[]; 507 508 extern gfxset gfxsets[]; 509 */ 510 511 512 513 #endif 514