home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / BEERSRC.ZIP / BALLER.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-26  |  9.2 KB  |  371 lines

  1.  
  2.  
  3. #define FALSE            0
  4. #define TRUE            1
  5.  
  6. #define GAMESPEED        0xe8f6    // about 20 frames a second.
  7. #define LEVELS            5    // Number of levels in game.
  8.  
  9.  
  10. // Several position equates.
  11.  
  12. #define BARY            211
  13. #define BARSCOREX        114
  14. #define BARSCOREY        212
  15. #define BARSCORESPC        6
  16. #define BARLIFEX        40
  17. #define BARCLRDIGIT        10
  18. #define BARLIFEDIGIT        11
  19.  
  20. // Index Sizes
  21.  
  22. #define INTINDEXSIZE        100
  23. #define PTRINDEXSIZE        200
  24.  
  25.  
  26.  
  27. typedef unsigned long ulong;
  28.  
  29.  
  30. // Weapon equates and structures.
  31. #define STARLIFES        4    // Lifes at the beginning.
  32. #define STARTSHIPSPEED        4       // Beginning ship speed.
  33. #define MAXSHIPSPEED        8
  34. #define W_ISWEAPON        0x8000
  35. // Waffen Zusaetze.
  36. #define W_SPEEDUP        0x0001
  37. #define W_EXTRALIFE        0x0002
  38.  
  39. #define NAMESIZE        20
  40. struct armstrc {
  41.    char     armname[NAMESIZE];
  42.    int      sprite;                     // Sprite # of weapon.
  43.    int      shot;                       // Shot number.
  44.    int      cost;            // How many bucks.
  45.    int      period;            // Time till next shot release.
  46.    unsigned flags;            // Weapon specific settings.
  47. };
  48.  
  49. // Shot command set.
  50. #define SHOTEND            0x8000
  51. #define SHOTRELEASE        0x8001
  52. #define SHOTHOMING        0x8002    // Homing missile.
  53. #define SHOTREFLECT        0x8003    // Border Reflector.
  54.  
  55. struct shotstrc {
  56.  
  57.    int   shotx, shoty;            // Release point.
  58.    int   power;                // Power.
  59.    int   speed;                // Speed if homing.
  60.    int   sprite;            // Sprite Number.
  61.    int   data[];
  62.  
  63. };
  64.  
  65.  
  66. // Foe flags
  67. #define FOE_ENDLEVEL        0x01    // Big Boss indicator.
  68. #define FOE_INVINCIBLE        0x02    // Foe can't be harmed.
  69. #define FOE_TRANSPARENT        0x04    // Shots go through foe.
  70. #define FOE_STOPCOUNT        0x08    // Frame counter stops till foe is destroyed.
  71. #define FOE_PATH        0x10    // Foe is a path follower.
  72. #define FOE_LINE        0x20    // Foe is a shot.
  73.  
  74. // Foe command set.
  75. #define FOEENDPATH        0x8000
  76. #define FOECHANGESPRITE        0x8001
  77. #define FOERELEASEFOE        0x8002
  78. #define FOECYCLEPATH            0x8004
  79. #define FOEMARK            0x8005
  80. #define FOESOUND        0x8006
  81.  
  82. struct foestrc {
  83.  
  84.    int    flags;            // Endlevel,invincible,flashing,...
  85.    int    shield;            // Number of hits till destroyed.
  86.    int    score;            // Score for player if destroyed.
  87.    int    expl;                // Explosion number.
  88.    int    sprite;                 // Sprite number.
  89.    int    speed;            // Speed when using line mode.
  90.    int    path[];            // Path data.
  91.  
  92. };
  93.  
  94. // Explosion command set.
  95. #define EXPLEND                 0x8000
  96. #define EXPLNEW                 0x8001
  97. #define EXPLWAIT                0x8002
  98. #define EXPLSOUND        0x8003
  99. #define EXPLREMOVEOBJ        0x8004
  100. #define EXPLRELEASEFOE        0x8005
  101. #define EXPLNEWPATH        0x8006
  102.  
  103. struct explstrc {
  104.  
  105.    int    dummy;
  106.    int    data[];
  107.  
  108. };
  109.  
  110.  
  111. #define MAXARMS            7
  112. #define MAXFOES            26
  113. #define MAXSHOTS        30
  114. #define MAXEXPLS        8
  115.  
  116. #define WIN_CTIME        100    // # of frames game will continue
  117.                     //   after BIG BOSS has gone.
  118. #define LOSE_CTIME        60    // # of frames game will continue
  119.                     //   after Eichli is dead.
  120. #define SHIELD_CTIME        70      // # of frames Eichli will be
  121.                     //   invincible at beginning of game.
  122.  
  123.  
  124. struct  aniarm {
  125.  
  126.    int    object;              // Object #.
  127.    int    shot;                   // Sprite # of shot.
  128.    int    period;            // Fire periode.
  129.    int  flags;
  130.    int    periodcnt;
  131.  
  132. };
  133.  
  134.  
  135. struct    anishot {
  136.  
  137.    int    object;                 // Object number.
  138.    int    go;            // 0: Shot is on hold. 1: Shot moves.
  139.    int    power;                  // Power.
  140.    int  speed;            // Speed of object if in homing mode.
  141.    int    dx, dy;            // Delta values (direction of homing shot).
  142.    int  far *data;        // Pointer to command path.
  143.  
  144. };
  145.  
  146.  
  147. struct    anifoe {
  148.  
  149.    int    object;            // Object #.
  150.    int    flags;            // State Flags. (Invincible, endlvl, ...).
  151.    int    score;
  152.    int    expl;                   // Explosion that will be used.
  153.    int    shield;                 // How many hits until destroyed ?
  154.    int  far *path;              // Path pointer stored by MARK.
  155.    int    savex, savey;        // (x, y) for stored by MARK.
  156.    int    far *cpath;
  157.    int  speed;            // Speed of object if in line mode.
  158.    int  dx, dy, dz, z0, z1;     // Line draw varibales.
  159.    int  pixelcnt;        // Count of pixels to draw to reach destination.
  160.  
  161. };
  162.  
  163.  
  164.  
  165. struct    aniexpl {
  166.  
  167.    int    object;            // Just to indicate whether active or not.
  168.    int  x, y;            // Coords of impact. Kawumm !!
  169.    int    far *data;
  170.  
  171. };
  172.  
  173.  
  174. //------------------
  175.  
  176. struct sTableEntry {
  177.  
  178.    struct sprstrc far *sprite;
  179.    unsigned       flags;
  180.  
  181. };
  182.  
  183.  
  184. // Level description structure.
  185. // Contains useful informations about the level.
  186. struct descrstrc {
  187.  
  188.    int      level;            // Level number.
  189.    char     text[40];            // Level text.
  190.    int      nbigboss;            // Number of endlevel monsters.
  191.    unsigned score;            // Bonus score for getting so far.
  192.    unsigned money;            // Bonus money.
  193.    unsigned flags;
  194.  
  195. };
  196.  
  197.  
  198. // Attack structure and defines.
  199. #define A_COMMAND        0x8000    // Command bit.
  200. #define A_GOFIELD           0x8000    // Go starfield.
  201. #define A_STOPFIELD        0x8001    // Stop field.
  202. #define A_SOUND            0x8002    // Play sample.
  203. #define A_MARK            0x8003    // Mark position.
  204. struct attackstrc {
  205.  
  206.    unsigned count;            // Start action at value 'count'.
  207.    int      x, y;                       // (x, y) of foe.
  208.    int      foe;                        // Foe # to release.
  209.  
  210. };
  211.  
  212.  
  213. struct levelstrc {
  214.  
  215.    struct descrstrc   *descript;        // Descripton.
  216.    int    nstars;
  217.    struct starstrc    *star;            // Starfield definition.
  218.    int    nattacks;
  219.    struct attackstrc  *attack;          // Attack table.
  220.    int    nsprites;
  221.    struct sTableEntry *sprite;          // Sprite definitions.
  222.    int    nfoes;
  223.    struct foestrc     * far *foe;       // Enemy defs.
  224.    int    nexpls;
  225.    struct explstrc    * far *expl;    // Explosion definitions.
  226.    int    nsounds;
  227.    struct sndstrc     * far *sound;    // SOUNDS.
  228.  
  229. };
  230.  
  231.  
  232. struct weaponstrc {
  233.  
  234.    int    narms;
  235.    struct armstrc     *arm;
  236.    int    nshots;
  237.    struct shotstrc    * far *shot;
  238.    int    nsprites;
  239.    struct sTableEntry *sprite;
  240.  
  241. };
  242.  
  243.  
  244. // Structure of currently active weapons.
  245. struct weaponlststrc {
  246.  
  247.    int    object;            // Object # of active weapon.
  248.    int    dx, dy;                       // delta (x, y) to main weapon.
  249.    struct armstrc arm;                  // Weapon definition structure.
  250.  
  251. };
  252.  
  253.  
  254. #define KEYSPACE                0x39
  255. #define KEYENTER        0x1c
  256. #define    KEYLEFT            0x4b
  257. #define KEYRIGHT        0x4d
  258. #define KEYUP            0x48
  259. #define KEYDOWN            0x50
  260. #define KEYESC            0x01
  261. #define KEYPAUSE        0x19
  262. #define KEYONE            0x02
  263. #define KEYTWO            0x03
  264. #define KEYTHREE        0x04
  265. #define KEYFOUR            0x05
  266. #define KEYFIVE            0x06
  267. #define KEYSIX            0x07
  268.  
  269. // Cheatmode flags:
  270. #define CHEATLIFES              0x01
  271. #define CHEATMONEY              0x02
  272. #define CHEATCRASH              0x04
  273.  
  274.  
  275. #ifdef MAIN_MODULE
  276. #define _ext
  277. #else
  278. #define _ext extern
  279. #endif
  280.  
  281. _ext volatile char key[0x80];        // Keyboard array.
  282. _ext int      key_up, key_down;
  283. _ext int      key_left, key_right;
  284. _ext int      key_fire, key_pause;
  285. _ext volatile int pressedkeys;        // Number of pressed keys.
  286. _ext volatile int tick;            // Int 1ch occured ?
  287.  
  288. _ext struct aniarm    _arm[MAXARMS];
  289. _ext struct anifoe    _foe[MAXFOES];
  290. _ext struct anishot    _shot[MAXSHOTS];
  291. _ext struct aniexpl    _expl[MAXEXPLS];
  292.  
  293. _ext long   money;            // Player's money.
  294. _ext long   score;                      // Player's score after Level.
  295. _ext long   scoreold;                   // Player's score before Level.
  296.  
  297. _ext int    cheatlevel;            // flag of Cheatmode.
  298.  
  299. _ext int    shipspeed;                  // Speed of ship in pixels per frame.
  300. _ext int    lifes;
  301. _ext int    stage;
  302. _ext int    nweapons;            // # of Weapons active.
  303. _ext struct weaponlststrc weaponlst[MAXARMS];
  304.  
  305.  
  306. _ext void   *datapool;            // Handle of Global DataFile.
  307. _ext struct levelstrc  level;         // Level.
  308. _ext int    lsprofs;
  309. _ext int    lfoeofs;
  310. _ext int    lexplofs;
  311. _ext int    lsndofs;
  312. _ext struct weaponstrc weapon;          // Weapons.
  313. _ext int    intindex[INTINDEXSIZE];    // Level sprite index.
  314. _ext int    intindexptr;
  315. _ext void   far *ptrindex[PTRINDEXSIZE];
  316. _ext int    ptrindexptr;
  317.  
  318. _ext int    barfonthandle;
  319.  
  320. _ext void interrupt (*int09)(void);
  321. _ext void interrupt (*int08)(void);
  322.  
  323. #undef _ext
  324.  
  325. //--------- Function prototypes ---------//
  326.  
  327.  
  328. void error(char *text, int code, ...);
  329.  
  330. // Functions of module 'intro.c'
  331. void intro(void);
  332.  
  333. // Functions of module 'hiscore.c'
  334. void loadhighscore(int *filvar);
  335. void savehighscore(int *filvar);
  336. void highscore(char fullmode);
  337.  
  338. // Functions of module 'menu.c'
  339. void menu(void);
  340. void loadconfig(void);
  341. void saveconfig(void);
  342.  
  343. // Functions of module 'gameplay.c'
  344. void playthegame(void);
  345.  
  346. // Functions of module 'support.c'
  347. void setspeed(unsigned speed);
  348. void killallbuddies(void);
  349. void waitforkey(void);
  350. int waitdelayedkey(int count);
  351. void writetext(int x, int y, const char *text, struct sprstrc *font);
  352. void writenumber(int x, int y, long number, struct sprstrc *font);
  353.  
  354. // Functions of module 'shop.c'
  355. ulong defallarms(int x, int y);
  356. void weaponmanager(void);
  357.  
  358.  
  359. void copytoCS(void);
  360. int defarm(int x, int y, struct armstrc far *arm);
  361. void displifes(void);
  362. void setplayposition(int nattacks, void far *attack, int nbigb);
  363. int play(void);
  364. void lall1(void);
  365. void lall2(void);
  366.  
  367. void waitfortick(void);
  368.  
  369. void interrupt newint09(void);
  370. void interrupt newint08(void);
  371.