]> 4ch.mooo.com Git - 16.git/blobdiff - 16/roads/BOOKENDS.C
refresh wwww
[16.git] / 16 / roads / BOOKENDS.C
diff --git a/16/roads/BOOKENDS.C b/16/roads/BOOKENDS.C
new file mode 100755 (executable)
index 0000000..0daa74a
--- /dev/null
@@ -0,0 +1,97 @@
+#define BOOKENDS_C\r
+\r
+#include <stdio.h>\r
+#include <fastgraf.h>\r
+#include <alloc.h>\r
+#include <stdlib.h>\r
+#include "roads.h"\r
+#include "fx.h"         /* FOR FADING */\r
+#include "version.h"    /* FOR HEADER */\r
+\r
+extern int far *topography;      /* BACKGROUND TILE LIST (ARRAY) */\r
+extern int far *terrain;      /* FOREGROUND TILE LIST (ARRAY) */\r
+extern int viewpage;           /* CURRENTLY VIEWED PAGE */\r
+\r
+int startup_vmode=-1;   /* STARTUP VIDEO MODE TO RETURN TO AT PROGRAM END */\r
+\r
+/*\r
+ *\r
+ * Initializes/Sets-up the video mode and paging.\r
+ *\r
+ */\r
+void init_video (void)\r
+{\r
+                       /* INITIALIZE VIDEO MODE */\r
+    if (fg_testmode (VMODE, VPAGES)==0)\r
+    {\r
+        printf ("Sorry, your video card does not support mode %d.\n", VMODE);\r
+        exit (1);\r
+    }\r
+\r
+    startup_vmode=fg_getmode();\r
+    fg_setcolor(0);\r
+    fg_setmode (VMODE);\r
+    fg_erase();\r
+\r
+        /* SETUP SPRITE IMAGES */\r
+    fg_setpage (TILEPAGE);\r
+    fg_erase();\r
+    fg_showgif (IMAGES, 0);\r
+    fg_setpage (viewpage);\r
+    fg_erase();\r
+    fg_tcdefine (0,1); /* TREAT COLOR 0 AS TRANSPARENT */\r
+}\r
+\r
+/*\r
+ *\r
+ * "Officially" shuts down the program.  Restores video, frees\r
+ * allocated data including fonts, unhooks Sound Blaster,\r
+ * and (optionally) exits with a message and errorcode\r
+ *\r
+ */\r
+void program_shutdown (char *msg, int errcode)\r
+{\r
+    fg_kbinit(0); /* UNLATCH LOW-LEVEL KEYBOARD HANDLER */\r
+\r
+        /* FREE DATA */\r
+    if (topography!=NULL) farfree (topography);\r
+    if (terrain!=NULL) farfree (terrain);\r
+\r
+        /* RESTORE ORIGINAL VIDEO MODE TO USER */\r
+    if (startup_vmode!=-1)\r
+    {\r
+        fade_out_all ();\r
+        fg_setmode (startup_vmode);\r
+        fg_reset();\r
+    }\r
+\r
+        /* FREE FONTS AND SOUND BLASTER SOMEWHERE IN HERE */\r
+\r
+    printf (HEADER); /* PRINT HEADER */\r
+\r
+               /* REPORT MESSAGE */\r
+    if (*msg!=NULL)\r
+        printf ("ROADS:  %s\n", msg);\r
+\r
+        /* QUIT WITH ERROR CODE, IF SUPPLIED ONE */\r
+    if (errcode!=-1)\r
+               exit (errcode);\r
+\r
+        /* OTHERWISE, RETURN TO CALLER WHO WILL HANDLE EXITING */\r
+    else return;\r
+}\r
+\r
+/*\r
+ *\r
+ * Initialize dynamic data, which is freed with program_shutdown()\r
+ *\r
+ */\r
+void init_data (void)\r
+{\r
+    topography=farcalloc (WORLD_TILES_TOTAL,sizeof (int));\r
+    terrain=farcalloc (WORLD_TILES_TOTAL,sizeof (int));\r
+\r
+    if (topography==NULL || terrain==NULL)\r
+       program_shutdown ("Not enough memory -- It's not my fault, I swear!", 1);\r
+}\r
+\r