home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer 2.12 / 1997-01_Disc_2.12.iso / rexblade / gv.h < prev    next >
C/C++ Source or Header  |  1996-09-24  |  20KB  |  674 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // GV.H                                                                    //
  3. //                                                                         //
  4. // GameVision(tm) Game Toolkit for Watcom C/C++ 10.x                       //
  5. // Copyright (c) 1994-96 Jarrod Davis Software Co.                         //
  6. // All rights reserved.                                                    //
  7. /////////////////////////////////////////////////////////////////////////////
  8.  
  9. // INCLUDES /////////////////////////////////////////////////////////////////
  10. #include <stdlib.h>
  11. #include <malloc.h>
  12. #include <stdio.h>
  13. #include <conio.h>
  14. #include <i86.h>
  15. #include <mem.h>
  16. #include <math.h>
  17. #include <dos.h>
  18. #include <io.h>
  19. #include <limits.h>
  20. #include <time.h>
  21.  
  22. // DEFINES //////////////////////////////////////////////////////////////////
  23. // Misc
  24. #define FALSE       0
  25. #define TRUE        1
  26. #define BUFFSIZE 4096
  27.  
  28. // Keyboard
  29. #define KEY_SPACE  0x39
  30. #define KEY_ENTER  0x1C
  31. #define KEY_LEFT   0x4B
  32. #define KEY_RIGHT  0x4D
  33. #define KEY_ESC    0x01
  34. #define KEY_CTRL   0x1D
  35. #define KEY_UP     0x48
  36. #define KEY_DOWN   0x50
  37. #define KEY_ALT    0x38
  38. #define KEY_F1     0x3B
  39. #define KEY_F2     0x3C
  40. #define KEY_F3     0x3D
  41. #define KEY_F4     0x3E
  42. #define KEY_F5     0x3F
  43. #define KEY_F6     0x40
  44. #define KEY_F7     0x41
  45. #define KEY_F8     0x42
  46. #define KEY_F9     0x43
  47. #define KEY_F10    0x44
  48. #define KEY_TAB    0x0F
  49. #define KEY_N      0x31
  50. #define KEY_END    79
  51.  
  52. // Application Events
  53. #define APP_INIT       0
  54. #define APP_RUN        1
  55. #define APP_PAUSE      3
  56. #define APP_DONE       4
  57.  
  58. // Command Ids
  59. #define CMD_NONE       0x0000
  60. #define CMD_MOVEUP     0x0001
  61. #define CMD_MOVEDOWN   0x0002
  62. #define CMD_MOVELEFT   0x0004
  63. #define CMD_MOVERIGHT  0x0008
  64. #define CMD_QUIT       0x0010
  65. #define CMD_FIRE1      0x0020
  66. #define CMD_FIRE2      0x0040
  67. #define CMD_FIRE3      0x0080
  68. #define CMD_SELECT     0x0100
  69.  
  70. // Video
  71. #define PAGE_WIDTH  320
  72. #define PAGE_HEIGHT 200
  73. #define PAGE_SIZE   64000
  74.  
  75. // Stack
  76. #define STACK_INITSIZE 8
  77.  
  78. // Library
  79. #define LIB_MAX 256
  80.  
  81. // Math
  82. #define PI 3.1415926535897932385
  83.  
  84. // Polygon
  85. #define VERTICES_MAX 16
  86.  
  87. // Fade Messages
  88. #define MSG_FADE_IN  1
  89. #define MSG_FADE_OUT 2
  90.  
  91. // TYPEDEFS /////////////////////////////////////////////////////////////////
  92. // Misc
  93. typedef int BOOL;
  94. typedef FILE *PFILE;
  95.  
  96. // Fundamental types
  97. typedef char  *PCHAR;
  98. typedef void  *PVOID;
  99. typedef short *SHORT;
  100. typedef int   *PINT;
  101. typedef unsigned char  UCHAR,  *PUCHAR;
  102. typedef unsigned short USHORT, *PUSHORT;
  103. typedef unsigned int   UINT,   *PUINT;
  104. typedef unsigned long  ULONG,  *PULONG;
  105.  
  106. // STRUCTURES ///////////////////////////////////////////////////////////////
  107.  
  108. // TCOLOR
  109. typedef struct {
  110.   UCHAR red;
  111.   UCHAR green;
  112.   UCHAR blue;
  113. } TCOLOR;
  114.  
  115. // TPALETTE
  116. typedef struct TPALETTE {
  117.   TCOLOR color[256];
  118. }*PPALETTE;
  119.  
  120. // TTRANSLATETABLE
  121. typedef struct TTRANSLATETABLE {
  122.   UCHAR index[256];
  123. } *PTRANSLATETABLE;
  124.  
  125. // TSTACK
  126. typedef struct TSTACK {
  127.   UINT  top;
  128.   UINT  size;
  129.   PUINT base;
  130. } *PSTACK;
  131.  
  132. // TLIBENTRY
  133. typedef struct TLIBENTRY {
  134.   char  filename[13];
  135.   ULONG pos;
  136.   ULONG size;
  137.   BOOL  in_use;
  138. } *PLIBENTRY;
  139.  
  140. // TLIBRARY
  141. typedef struct TLIBRARY {
  142.   char  id[25];
  143.   FILE *lib_file;
  144.   TLIBENTRY entry[LIB_MAX];
  145. } *PLIBRARY;
  146.  
  147. // TACTION
  148. typedef void TACTION(void);
  149. typedef TACTION *PACTION;
  150.  
  151. // TTASK
  152. struct TTASK;
  153. typedef void TASKACTION(TTASK *task);
  154. typedef TASKACTION *PTASKACTION;
  155.  
  156. typedef void TASKACTIONCOLLIDE(TTASK *task, TTASK *task_hit);
  157. typedef TASKACTIONCOLLIDE *PTASKACTIONCOLLIDE;
  158.  
  159. typedef BOOL TASKACTIONOVERLAP(TTASK *task1, TTASK *task2);
  160. typedef TASKACTIONOVERLAP *PTASKACTIONOVERLAP;
  161.  
  162. struct TTASKLIST;
  163. typedef struct TTASK {
  164.   struct      TTASK *prev;
  165.   struct      TTASK *next;
  166.   int         id;
  167.   int         group;
  168.   int         frame;
  169.   int         timer;
  170.   int         hits;
  171.   int         energy;
  172.   int         msg_id;
  173.   PUCHAR      msg_data;
  174.   float       x,y,z;
  175.   float       xs,ys,zs;
  176.   int         width,height;
  177.   BOOL        can_collide;
  178.   BOOL        accept_msg;
  179.   BOOL        active;
  180.   BOOL        kill;
  181.   TTASKLIST   *list;
  182.   PTASKACTION Process;
  183.   PTASKACTION Done;
  184.   PTASKACTIONCOLLIDE OnCollide;
  185.   PTASKACTIONOVERLAP Overlap;
  186.   PTASKACTION OnMessage;
  187. } *PTASK;
  188.  
  189. typedef struct TTASKLIST {
  190.   PTASK head;
  191.   PTASK tail;
  192.   int   size;
  193. } *PTASKLIST;
  194.  
  195. // TBITMAP
  196. typedef struct TBITMAP {
  197.  
  198.   int    width;
  199.   int    height;
  200.   PUCHAR data;
  201. } *PBITMAP;
  202.  
  203. // TSPRITE
  204. typedef struct TSPRITE {
  205.   PBITMAP bitmaps;
  206.   int     frames;
  207.   int     max_width;
  208.   int     max_height;
  209. } *PSPRITE;
  210.  
  211. typedef struct TEVENT {
  212.   UINT     kind;
  213.   UINT     cmd;
  214.   int      x1,y1,x2,y2;
  215.   PSPRITE  system_fnt;
  216.   PUCHAR   page;
  217. } *PEVENT;
  218.  
  219. // TFADEPALETTE
  220. typedef struct TFADEPALETTE {
  221.   TPALETTE pal;
  222.   TPALETTE cur_pal;
  223.   int      index;
  224.   int      first;
  225.   int      count;
  226.   int      level;
  227.   int      fade_delay;
  228.   int      fade_timer;
  229. } *PFADEPALETTE;
  230.  
  231. // TMESSAGE
  232. typedef struct TMESSAGE {
  233.   int    id;
  234.   PUCHAR data;
  235. } *PMESSAGE;
  236.  
  237. // TVERTEX
  238. typedef struct TVERTEX {
  239.   float x, y;
  240. } *PVERTEX;
  241.  
  242. // TPOLYGON
  243. typedef struct TPOLYGON {
  244.   int     b_color;
  245.   int     i_color;
  246.   BOOL    closed;
  247.   BOOL    filled;
  248.   int     num_vertices;
  249.   TVERTEX vertices[VERTICES_MAX];
  250. } *PPOLYGON;
  251.  
  252. /////////////////////////////////////////////////////////////////////////////
  253. // PRE-BUILDIT TASK LIBRARY                                                //
  254. /////////////////////////////////////////////////////////////////////////////
  255.  
  256. // TFADE
  257. typedef struct TFADE: TTASK {
  258.   int          type;
  259.   int          level;
  260.   int          fade_delay;
  261.   TFADEPALETTE pal;
  262. } *PFADE;
  263.  
  264. // GLOBALS //////////////////////////////////////////////////////////////////
  265.  
  266. extern UCHAR temp_byte;
  267. extern UCHAR buff[BUFFSIZE];
  268. extern long  rand_seed;
  269. extern UINT  cmd;
  270.  
  271. // Tables
  272. extern float SIN_TABLE[361];
  273. extern float COS_TABLE[361];
  274.  
  275. // Registers
  276. extern struct SREGS sregs;
  277. extern union  REGS  regs;
  278.  
  279. // Timing
  280. extern USHORT timer_delaydelta;
  281. extern USHORT timer_mue999;
  282. extern int    timer_framedelay;
  283. extern int    timer_frameend;
  284.  
  285. // Keyboard
  286. extern BOOL  kbd_handler_installed;
  287. extern int   GV_Key[128];
  288. extern int   GV_Asc[128];
  289. extern int   key_scancode;
  290. extern int   key_code;
  291.  
  292. // Video Page
  293. extern PUCHAR mpage;
  294. extern PUCHAR vpage;
  295. extern PUCHAR hpage;
  296. extern int minx;
  297. extern int miny;
  298. extern int maxx;
  299. extern int maxy;
  300. extern int view_width;
  301. extern int view_height;
  302. extern int view_width_center;
  303. extern int view_height_center;
  304. extern int cursorx;
  305. extern int cursory;
  306. extern int char_width;
  307.  
  308. // Palettes
  309. extern const TPALETTE default_pal;
  310. extern TPALETTE black_pal;
  311. extern TPALETTE white_pal;
  312. extern TPALETTE cur_pal;
  313.  
  314. // Task Lists
  315. extern TTASKLIST starlist;
  316. extern TTASKLIST enemylist;
  317. extern TTASKLIST herolist;
  318. extern TTASKLIST msglist;
  319. extern TTASKLIST systemlist;
  320.  
  321. // Misc
  322. extern BOOL    game_over;
  323. extern BOOL    game_quit;
  324. extern BOOL    game_levelover;
  325. extern int     game_level;
  326. extern int     game_score;
  327. extern PSPRITE system_fnt;
  328.  
  329. // MISC. ROUTINES ///////////////////////////////////////////////////////////
  330. void DoNothing(PTASK task);
  331.  
  332. // TABLE ROUTINES //////////////////////////////////////////////////////////
  333. void GV_TablesInit(void);
  334.  
  335. // RANDOM NUMBER ROUTINES ///////////////////////////////////////////////////
  336. void GV_Randomize(void);
  337.  
  338. long GV_Rand(long min, long max);
  339.  
  340.  
  341. // TIMING ROUTINES //////////////////////////////////////////////////////////
  342. void   GV_TimerBenchmark(void);
  343.  
  344. void   GV_TimerOn(void);
  345.  
  346. USHORT GV_TimerOff(void);
  347.  
  348. void   GV_TimerDelay(UCHAR ms);
  349.  
  350. void   GV_TimerStall(UCHAR ms);
  351.  
  352. USHORT GV_TimerFPS(void);
  353.  
  354. // KEYBOARD ROUTINES ////////////////////////////////////////////////////////
  355. void GV_kbdInit(BOOL activate);
  356.  
  357. BOOL GV_kbdDown(UCHAR key);
  358.  
  359. void GV_kbdWait(void);
  360.  
  361. BOOL GV_kbdHit(void);
  362.  
  363. int GV_kbdAsc(void);
  364.  
  365. void GV_kbdClear(void);
  366.  
  367. void GV_kbdOn(void);
  368.  
  369. void GV_kbdOff(void);
  370.  
  371. // TEXT MODE ROUTINES ///////////////////////////////////////////////////////
  372. void GV_TextPrint(PCHAR text, int color, int x, int y);
  373. void GV_TextCenter(PCHAR text, int color, int y);
  374.  
  375. // MODE ROUTINES ////////////////////////////////////////////////////////////
  376. void GV_ModeSet(int mode);
  377. void GV_ModeGraph();
  378. void GV_ModeText();
  379.  
  380. // VIEWPORT ROUTINES ////////////////////////////////////////////////////////
  381. void GV_ViewPortSet(int X1, int Y1, int X2, int Y2);
  382.  
  383. void GV_ViewPortClear(PUCHAR page, int color);
  384.  
  385. void GV_ViewPortSetCursor(int x, int y);
  386.  
  387. void GV_ViewPortShow(PUCHAR page);
  388.  
  389. void GV_ViewPortScrollUp(PUCHAR page, int num, int bkcolor);
  390.  
  391. void GV_ViewPortPrint(PSPRITE font, PCHAR string, int color, int space,
  392.   BOOL transparent, BOOL fixed_space, PUCHAR page, int bkcolor, BOOL new_line);
  393.  
  394. void GV_ViewPortNextLine(PSPRITE font, PUCHAR page, int bkcolor);
  395.  
  396. // PAGE ROUTINES ////////////////////////////////////////////////////////////
  397. PUCHAR GV_PageNew(void);
  398.  
  399. void GV_PageFree(PUCHAR page);
  400.  
  401. void GV_PageFill(PUCHAR page, UCHAR color);
  402.  
  403. void GV_PageShow(PUCHAR page);
  404.  
  405. void GV_RectFill(int x1, int y1, int x2, int y2, PUCHAR page, UCHAR color);
  406.  
  407. void GV_RectCopy(int x1, int y1, int x2, int y2, PUCHAR spage, PUCHAR dpage);
  408.  
  409. void GV_RectCopyTo(int x1, int y1, int x2, int y2, int dx1, int dy1,
  410.   PUCHAR spage, PUCHAR dpage);
  411.  
  412. void GV_PageCopy(PUCHAR spage, PUCHAR dpage);
  413.  
  414. // PALETTE ROUTINES /////////////////////////////////////////////////////////
  415. void GV_PaletteSet(PPALETTE palette);
  416.  
  417. void GV_PaletteGet(PPALETTE palette);
  418.  
  419. void GV_PaletteSetRange(PPALETTE palette, int first, int count);
  420.  
  421. void GV_PaletteGetRange(PPALETTE palette, int first, int count);
  422.  
  423. BOOL GV_PaletteLoad(PPALETTE palette, PCHAR filename);
  424.  
  425. void GV_PaletteTrans(PTRANSLATETABLE table, PPALETTE palette, float percent);
  426.  
  427. void GV_PaletteTransRemap(PTRANSLATETABLE table, PPALETTE cpal, PPALETTE spal,
  428.   float percent);
  429.  
  430. void GV_PaletteFadeIn(PPALETTE pal, int level, int fade_delay);
  431.  
  432. void GV_PaletteFadeOut(PPALETTE pal, int level, int fade_delay);
  433.  
  434. // PIXEL ROUTINES ///////////////////////////////////////////////////////////
  435. void GV_PixelSet(int color, int x, int y, PUCHAR page);
  436.  
  437. // BITMAP ROUTINES //////////////////////////////////////////////////////////
  438. void GV_BitmapGet(PUCHAR bitmap, UINT width, UINT height, int x, int y,
  439.   PUCHAR page);
  440.  
  441. void GV_BitmapTrans(PUCHAR bitmap, int width, int height,
  442.   BOOL transparent, PTRANSLATETABLE table);
  443.  
  444. void GV_BitmapDraw(PUCHAR bitmap, int width, int height, int x, int y,
  445.   BOOL transparent, PUCHAR page);
  446.  
  447. void GV_BitmapScale(PUCHAR bitmap, int width, int height, int min_x,
  448.   int min_y, int max_x, int max_y, int scale_x, int scale_y, int x1, int y1,
  449.   int x2, int y2, BOOL transparent, PUCHAR page);
  450.  
  451. void GV_BitmapScaleColor(PUCHAR bitmap, int width, int height, int color,
  452.   int min_x, int min_y, int max_x, int max_y, int scale_x, int scale_y,
  453.   int x1, int y1, int x2, int y2, BOOL transparent, PUCHAR page);
  454.  
  455. void GV_BitmapScaleTrans(PUCHAR bitmap, int width, int height, int min_x,
  456.   int min_y, int max_x, int max_y, int scale_x, int scale_y, int x1, int y1,
  457.   int x2, int y2,  BOOL transparent, PUCHAR page, PTRANSLATETABLE table);
  458.  
  459. void GV_BitmapScaleShadow(PUCHAR bitmap, int width, int height, int min_x,
  460.   int min_y, int max_x, int max_y, int scale_x, int scale_y, int x1, int y1,
  461.   int x2, int y2,  BOOL transparent, PUCHAR page, PTRANSLATETABLE table);
  462.  
  463. // SPRITE ROUTINES //////////////////////////////////////////////////////////
  464. BOOL GV_SpriteLoad(PSPRITE sprite, const PCHAR filename, PPALETTE palette);
  465.  
  466. BOOL GV_SpriteLib(PLIBRARY lib, PSPRITE sprite, const PCHAR filename,
  467.   PPALETTE palette);
  468.  
  469. void GV_SpritePaletteTransRemap(PSPRITE sprite, BOOL transparent,
  470.   PPALETTE cpal, PPALETTE spal,  float factor);
  471.  
  472. BOOL GV_SpriteSave(PSPRITE sprite, PPALETTE pal, const PCHAR filename);
  473.  
  474. void GV_SpriteFree(PSPRITE sprite);
  475.  
  476. int GV_SpriteWidth(PSPRITE sprite, int frame);
  477.  
  478. int GV_SpriteHeight(PSPRITE sprite, int frame);
  479.  
  480. void GV_SpriteNextFrame(PSPRITE sprite, int *frame, int *width, int *height,
  481.   int frame_inc);
  482.  
  483. void GV_SpriteDraw(PSPRITE sprite, int frame, int x, int y, BOOL transparent,
  484.   PUCHAR page);
  485.  
  486. void GV_SpriteDrawClip(PSPRITE sprite, int frame, int x, int y,
  487.   BOOL transparent, PUCHAR page, int x1, int y1, int x2, int y2);
  488.  
  489. void GV_SpriteDrawTransClip(PSPRITE sprite, int frame, int x, int y,
  490.   BOOL transparent, PUCHAR page, PTRANSLATETABLE table, int x1, int y1,
  491.   int x2, int y2);
  492.  
  493. void GV_SpriteDrawColor(PSPRITE sprite, int frame, int color, int x, int y,
  494.   BOOL transparent, PUCHAR page);
  495.  
  496. void GV_SpriteDrawColorClip(PSPRITE sprite, int frame, int color, int x,
  497.   int y, BOOL transparent, PUCHAR page, int x1, int y1, int x2, int y2);
  498.  
  499. void GV_SpriteDrawTrans(PSPRITE sprite, int frame, int x, int y, BOOL transparent,
  500.   PUCHAR page, PTRANSLATETABLE table);
  501.  
  502. void GV_SpriteCenter(PSPRITE sprite, int frame, int x, int y,
  503.   BOOL transparent, PUCHAR page);
  504.  
  505. void GV_SpriteCenterClip(PSPRITE sprite, int frame, int x, int y,
  506.   BOOL transparent, PUCHAR page, int x1, int y1, int x2, int y2);
  507.  
  508. void GV_SpriteScale(PSPRITE sprite, int frame, int x, int y, BOOL transparent,
  509.   PUCHAR page, float scale);
  510.  
  511. void GV_SpriteScaleClip(PSPRITE sprite, int frame, int x, int y,
  512.   BOOL transparent, PUCHAR page, float scale, int x1, int y1, int x2, int y2);
  513.  
  514. void GV_SpriteScaleCenter(PSPRITE sprite, int frame, int x, int y,
  515.   BOOL transparent, PUCHAR page, float scale);
  516.  
  517. void GV_SpriteScaleCenterClip(PSPRITE sprite, int frame, int x, int y,
  518.   BOOL transparent, PUCHAR page, float scale, int x1, int y1, int x2, int y2);
  519.  
  520. void GV_SpriteScaleTrans(PSPRITE sprite, int frame, int x, int y, BOOL transparent,
  521.   PUCHAR page, float scale, PTRANSLATETABLE table);
  522.  
  523. void GV_SpriteDrawShadow(PSPRITE sprite, int frame, int x, int y,
  524.   BOOL transparent, PUCHAR page, PTRANSLATETABLE table);
  525.  
  526. void GV_SpriteCenterShadow(PSPRITE sprite, int frame, int x, int y,
  527.   BOOL transparent, PUCHAR page, PTRANSLATETABLE table);
  528.  
  529. // FONT ROUTINES ////////////////////////////////////////////////////////////
  530. void GV_FontPrint(PSPRITE font, PCHAR string, int color, int space,
  531.   int x, int y, BOOL transparent, BOOL fixed_space, PUCHAR page);
  532.  
  533. void GV_FontPrintClip(PSPRITE font, PCHAR string, int color, int space,
  534.   int x, int y, BOOL transparent, PUCHAR page, int x1, int y1, int x2, int y2);
  535.  
  536. int GV_FontLen(PSPRITE font, PCHAR string, int space, BOOL fixed_space);
  537.  
  538. void GV_FontPrintCenter(PSPRITE font, PCHAR string, int color, int space,
  539.   int y, BOOL transparent, BOOL fixed_space, PUCHAR page);
  540.  
  541. // PCX Routines /////////////////////////////////////////////////////////////
  542. BOOL GV_PCXLoad(const PCHAR filename, PUCHAR page, PPALETTE palette);
  543.  
  544. BOOL GV_PCXLib(PLIBRARY lib, const PCHAR filename, PUCHAR page,
  545.   PPALETTE palette);
  546.  
  547. void GV_PCXMem(PUCHAR buffer, long size, PUCHAR page, PPALETTE palette);
  548.  
  549. // Stack Routines ///////////////////////////////////////////////////////////
  550. void  GV_StackInit(PSTACK stack, UINT size);
  551.  
  552. void  GV_StackFree(PSTACK stack);
  553.  
  554. void  GV_StatcResize(PSTACK stack, UINT size);
  555.  
  556. UINT  GV_StackSize(PSTACK stack);
  557.  
  558. UINT  GV_StackIndex(PSTACK stack);
  559.  
  560. PVOID GV_StackFirst(PSTACK stack);
  561.  
  562. PVOID GV_StackGet(PSTACK stack, UINT index);
  563.  
  564. void  GV_StackPut(PSTACK stack, UINT index, PVOID element);
  565.  
  566. void  GV_StackPush(PSTACK stack, PVOID element);
  567.  
  568. PVOID GV_StackPop(PSTACK stack);
  569.  
  570. void  GV_StackClear(PSTACK stack);
  571.  
  572. // COLLISION DETECTION ROUTINES /////////////////////////////////////////////
  573. //BOOL GV_Overlap(float ax, float ay, int aw, int ah, float bx, float by,
  574. //  int bw, int bh, float factor);
  575.  
  576. BOOL GV_Overlap(float ax, float ay, float aw, float ah, float bx, float by,
  577.   float bw, float bh, float factor);
  578.  
  579. BOOL GV_OverlapTopLeft(float ax1, float ay1, int aw, int ad, float bx1,
  580.   float by1, int bw, int bd);
  581.  
  582. // TASK LIST ROUTINES ///////////////////////////////////////////////////////
  583. void GV_TaskListInit(PTASKLIST tasklist);
  584.  
  585. void GV_TaskListClear(PTASKLIST tasklist);
  586.  
  587. void GV_TaskListAppend(PTASKLIST tasklist, PTASK atask);
  588.  
  589. void GV_TaskListInsert(PTASKLIST tasklist, PTASK atask);
  590.  
  591. void GV_TaskListInsertAfter(PTASKLIST, PTASK atask, PTASK item);
  592.  
  593. void GV_TaskListInsertBefore(PTASKLIST, PTASK atask, PTASK item);
  594.  
  595. void GV_TaskListRemove(PTASK atask);
  596.  
  597. void GV_TaskListProcess(PTASKLIST tasklist);
  598.  
  599. BOOL GV_TaskListCheckDistance(PTASKLIST tasklist, PTASK task, int dist);
  600.  
  601. void GV_TaskListCheckCollide(PTASKLIST tasklist, PTASK task, float factor);
  602.  
  603. void GV_TaskListSendMsg(PTASKLIST tasklist, int id, PUCHAR data);
  604.  
  605. // LIBRARY ROUTINES /////////////////////////////////////////////////////////
  606. BOOL GV_LibCreate(PLIBRARY lib, const PCHAR filename);
  607.  
  608. BOOL GV_LibOpen(PLIBRARY lib, const PCHAR filename);
  609.  
  610. BOOL GV_LibClose(PLIBRARY lib);
  611.  
  612. BOOL GV_LibAddFile(PLIBRARY lib, const PCHAR filename);
  613.  
  614. BOOL GV_LibAddFileIndex(PLIBRARY lib, const PCHAR filename, int index);
  615.  
  616. PFILE GV_LibFindFile(PLIBRARY lib, const PCHAR filename);
  617.  
  618. long GV_LibFilePos(PLIBRARY lib, const PCHAR filename);
  619.  
  620. long GV_LibFileSize(PLIBRARY lib, const PCHAR filename);
  621.  
  622. void GV_LibReadNext(PLIBRARY lib, long size, PVOID data);
  623.  
  624. BOOL GV_LibReadFile(PLIBRARY lib, const PCHAR filename, PVOID data);
  625.  
  626.  
  627. // FADE PALETTE ROUTINES ////////////////////////////////////////////////////
  628. void GV_FadePalOutStart(PFADEPALETTE fadepalette, PPALETTE pal, int level,
  629.   int fade_delay);
  630.  
  631. void GV_FadePalInStart(PFADEPALETTE fadepalette, PPALETTE palette, int level,
  632.   int fade_delay);
  633.  
  634. BOOL GV_FadePalOut(PFADEPALETTE fadepalette);
  635.  
  636. BOOL GV_FadePalIn(PFADEPALETTE fadepalette);
  637.  
  638. // STRING ROUTINES //////////////////////////////////////////////////////////
  639. char *GV_StripFileName(char *path, char *ext);
  640.  
  641. // CLIPPING ROUTINES ////////////////////////////////////////////////////////
  642. int GV_ClipLine(int *x1,int *y1,int *x2, int *y2, int clip_x1, int clip_y1,
  643.   int clip_x2, int clip_y2);
  644.  
  645. BOOL GV_ClipPoint(int *x1, int *y1, int *x2, int *y2, int clip_x1,
  646.   int clip_y1, int clip_x2, int clip_y2);
  647.  
  648. // LINE ROUTINES ////////////////////////////////////////////////////////////
  649. void GV_Line(int x1, int y1, int x2, int y2, int color, PUCHAR page);
  650. void GV_LineClip(int x1, int y1, int x2, int y2, int color, PUCHAR page,
  651.   int clip_x1, int clip_y1, int clip_x2, int clip_y2);
  652.  
  653. // POLYGON ROUTINES /////////////////////////////////////////////////////////
  654. void GV_PolyDraw(PPOLYGON polygon, int x, int y, PUCHAR page);
  655.  
  656. void GV_PolyDrawClip(PPOLYGON polygon, int x, int y, PUCHAR page, int x1,
  657.   int y1, int x2, int y2);
  658.  
  659. void GV_PolyScale(PPOLYGON polygon, float scale);
  660.  
  661. void GV_PolyRotate(PPOLYGON polygon, int angle);
  662.  
  663. /////////////////////////////////////////////////////////////////////////////
  664. // PRE-BUILDIT TASK LIBRARY                                                //
  665. /////////////////////////////////////////////////////////////////////////////
  666.  
  667. // FADE TASK ////////////////////////////////////////////////////////////////
  668. void Fade_Init(PPALETTE pal, int type, int level, int fade_delay,
  669.   PTASKLIST tasklist);
  670.  
  671. void Fade_Process(PTASK task);
  672.  
  673. void Fade_Done(PTASK task);
  674.