]> 4ch.mooo.com Git - 16.git/blob - 16/roads/BOOKENDS.C
16_ca needs huge amounts of work and I should remember what needs to be done soon...
[16.git] / 16 / roads / BOOKENDS.C
1 #define BOOKENDS_C\r
2 \r
3 #include <stdio.h>\r
4 #include <fastgraf.h>\r
5 #include <alloc.h>\r
6 #include <stdlib.h>\r
7 #include "roads.h"\r
8 #include "fx.h"         /* FOR FADING */\r
9 #include "version.h"    /* FOR HEADER */\r
10 \r
11 extern int far *topography;      /* BACKGROUND TILE LIST (ARRAY) */\r
12 extern int far *terrain;      /* FOREGROUND TILE LIST (ARRAY) */\r
13 extern int viewpage;           /* CURRENTLY VIEWED PAGE */\r
14 \r
15 int startup_vmode=-1;   /* STARTUP VIDEO MODE TO RETURN TO AT PROGRAM END */\r
16 \r
17 /*\r
18  *\r
19  * Initializes/Sets-up the video mode and paging.\r
20  *\r
21  */\r
22 void init_video (void)\r
23 {\r
24                         /* INITIALIZE VIDEO MODE */\r
25     if (fg_testmode (VMODE, VPAGES)==0)\r
26     {\r
27         printf ("Sorry, your video card does not support mode %d.\n", VMODE);\r
28         exit (1);\r
29     }\r
30 \r
31     startup_vmode=fg_getmode();\r
32     fg_setcolor(0);\r
33     fg_setmode (VMODE);\r
34     fg_erase();\r
35 \r
36         /* SETUP SPRITE IMAGES */\r
37     fg_setpage (TILEPAGE);\r
38     fg_erase();\r
39     fg_showgif (IMAGES, 0);\r
40     fg_setpage (viewpage);\r
41     fg_erase();\r
42     fg_tcdefine (0,1); /* TREAT COLOR 0 AS TRANSPARENT */\r
43 }\r
44 \r
45 /*\r
46  *\r
47  * "Officially" shuts down the program.  Restores video, frees\r
48  * allocated data including fonts, unhooks Sound Blaster,\r
49  * and (optionally) exits with a message and errorcode\r
50  *\r
51  */\r
52 void program_shutdown (char *msg, int errcode)\r
53 {\r
54     fg_kbinit(0); /* UNLATCH LOW-LEVEL KEYBOARD HANDLER */\r
55 \r
56         /* FREE DATA */\r
57     if (topography!=NULL) farfree (topography);\r
58     if (terrain!=NULL) farfree (terrain);\r
59 \r
60         /* RESTORE ORIGINAL VIDEO MODE TO USER */\r
61     if (startup_vmode!=-1)\r
62     {\r
63         fade_out_all ();\r
64         fg_setmode (startup_vmode);\r
65         fg_reset();\r
66     }\r
67 \r
68         /* FREE FONTS AND SOUND BLASTER SOMEWHERE IN HERE */\r
69 \r
70     printf (HEADER); /* PRINT HEADER */\r
71 \r
72                 /* REPORT MESSAGE */\r
73     if (*msg!=NULL)\r
74         printf ("ROADS:  %s\n", msg);\r
75 \r
76         /* QUIT WITH ERROR CODE, IF SUPPLIED ONE */\r
77     if (errcode!=-1)\r
78                 exit (errcode);\r
79 \r
80         /* OTHERWISE, RETURN TO CALLER WHO WILL HANDLE EXITING */\r
81     else return;\r
82 }\r
83 \r
84 /*\r
85  *\r
86  * Initialize dynamic data, which is freed with program_shutdown()\r
87  *\r
88  */\r
89 void init_data (void)\r
90 {\r
91     topography=farcalloc (WORLD_TILES_TOTAL,sizeof (int));\r
92     terrain=farcalloc (WORLD_TILES_TOTAL,sizeof (int));\r
93 \r
94     if (topography==NULL || terrain==NULL)\r
95        program_shutdown ("Not enough memory -- It's not my fault, I swear!", 1);\r
96 }\r
97 \r