Annotation of doom/st_start.c, revision 1.1

1.1     ! root        1: 
        !             2: //**************************************************************************
        !             3: //**
        !             4: //** st_start.c : Heretic 2 : Raven Software, Corp.
        !             5: //**
        !             6: //** $RCSfile: st_start.c,v $
        !             7: //** $Revision: 1.21 $
        !             8: //** $Date: 95/12/21 15:03:51 $
        !             9: //** $Author: bgokey $
        !            10: //**
        !            11: //**************************************************************************
        !            12: 
        !            13: 
        !            14: // HEADER FILES ------------------------------------------------------------
        !            15: #ifdef __WATCOMC__
        !            16:        #include <sys\stat.h>
        !            17:        #include <sys\types.h>
        !            18:        #include <io.h>
        !            19: #else
        !            20:        #include <libc.h>
        !            21:        #include <ctype.h>
        !            22:        #define O_BINARY 0
        !            23: #endif
        !            24: #include "h2def.h"
        !            25: #include <fcntl.h>
        !            26: #include <stdarg.h>                            // Needed for next as well as dos
        !            27: #include "st_start.h"
        !            28: 
        !            29: 
        !            30: // MACROS ------------------------------------------------------------------
        !            31: #define ST_MAX_NOTCHES         32
        !            32: #define ST_NOTCH_WIDTH         16
        !            33: #define ST_NOTCH_HEIGHT                23
        !            34: #define ST_PROGRESS_X          64                      // Start of notches x screen pos.
        !            35: #define ST_PROGRESS_Y          441                     // Start of notches y screen pos.
        !            36: 
        !            37: #define ST_NETPROGRESS_X               288
        !            38: #define ST_NETPROGRESS_Y               32
        !            39: #define ST_NETNOTCH_WIDTH              8
        !            40: #define ST_NETNOTCH_HEIGHT             16
        !            41: #define ST_MAX_NETNOTCHES              8
        !            42: 
        !            43: // TYPES -------------------------------------------------------------------
        !            44: 
        !            45: // EXTERNAL FUNCTION PROTOTYPES --------------------------------------------
        !            46: extern void SetVideoModeHR(void);
        !            47: extern void ClearScreenHR(void);
        !            48: extern void SlamHR(char *buffer);
        !            49: extern void SlamBlockHR(int x, int y, int w, int h, char *src);
        !            50: extern void InitPaletteHR(void);
        !            51: extern void SetPaletteHR(byte *palette);
        !            52: extern void GetPaletteHR(byte *palette);
        !            53: extern void FadeToPaletteHR(byte *palette);
        !            54: extern void FadeToBlackHR(void);
        !            55: extern void BlackPaletteHR(void);
        !            56: extern void I_StartupReadKeys(void);
        !            57: 
        !            58: // PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
        !            59: 
        !            60: // PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
        !            61: char *ST_LoadScreen(void);
        !            62: void ST_UpdateNotches(int notchPosition);
        !            63: void ST_UpdateNetNotches(int notchPosition);
        !            64: 
        !            65: // EXTERNAL DATA DECLARATIONS ----------------------------------------------
        !            66: 
        !            67: // PUBLIC DATA DEFINITIONS -------------------------------------------------
        !            68: 
        !            69: // PRIVATE DATA DEFINITIONS ------------------------------------------------
        !            70: char *bitmap = NULL;
        !            71: 
        !            72: char notchTable[]=
        !            73: {
        !            74:        // plane 0
        !            75:        0x00, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40,
        !            76:        0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x03, 0xC0,
        !            77:        0x0F, 0x90, 0x1B, 0x68, 0x3D, 0xBC, 0x3F, 0xFC, 0x20, 0x08, 0x20, 0x08,
        !            78:        0x2F, 0xD8, 0x37, 0xD8, 0x37, 0xF8, 0x1F, 0xF8, 0x1C, 0x50,
        !            79: 
        !            80:        // plane 1
        !            81:        0x00, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x02, 0x40,
        !            82:        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xA0,
        !            83:        0x30, 0x6C, 0x24, 0x94, 0x42, 0x4A, 0x60, 0x0E, 0x60, 0x06, 0x7F, 0xF6,
        !            84:        0x7F, 0xF6, 0x7F, 0xF6, 0x5E, 0xF6, 0x38, 0x16, 0x23, 0xAC,
        !            85: 
        !            86:        // plane 2
        !            87:        0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, 0x02, 0x40, 0x02, 0x40,
        !            88:        0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x03, 0xE0,
        !            89:        0x30, 0x6C, 0x24, 0x94, 0x52, 0x6A, 0x7F, 0xFE, 0x60, 0x0E, 0x60, 0x0E,
        !            90:        0x6F, 0xD6, 0x77, 0xD6, 0x56, 0xF6, 0x38, 0x36, 0x23, 0xAC,
        !            91: 
        !            92:        // plane 3
        !            93:        0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
        !            94:        0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x02, 0x40,
        !            95:        0x0F, 0x90, 0x1B, 0x68, 0x3D, 0xB4, 0x1F, 0xF0, 0x1F, 0xF8, 0x1F, 0xF8,
        !            96:        0x10, 0x28, 0x08, 0x28, 0x29, 0x08, 0x07, 0xE8, 0x1C, 0x50
        !            97: };
        !            98: 
        !            99: 
        !           100: // Red Network Progress notches
        !           101: char netnotchTable[]=
        !           102: {
        !           103:        // plane 0
        !           104:        0x80, 0x50, 0xD0, 0xf0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xD0, 0xF0, 0xC0,
        !           105:        0x70, 0x50, 0x80, 0x60,
        !           106: 
        !           107:        // plane 1
        !           108:        0x60, 0xE0, 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, 0xA0,
        !           109:        0xA0, 0xE0, 0x60, 0x00,
        !           110: 
        !           111:        // plane 2
        !           112:        0x80, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00,
        !           113:        0x10, 0x10, 0x80, 0x60,
        !           114: 
        !           115:        // plane 3
        !           116:        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        !           117:        0x00, 0x00, 0x00, 0x00
        !           118: };
        !           119: 
        !           120: // CODE --------------------------------------------------------------------
        !           121: 
        !           122: 
        !           123: 
        !           124: //--------------------------------------------------------------------------
        !           125: //
        !           126: // Startup Screen Functions
        !           127: //
        !           128: //--------------------------------------------------------------------------
        !           129: 
        !           130: 
        !           131: //==========================================================================
        !           132: //
        !           133: // ST_Init - Do the startup screen
        !           134: //
        !           135: //==========================================================================
        !           136: 
        !           137: void ST_Init(void)
        !           138: {
        !           139: #ifdef __WATCOMC__
        !           140:        char *pal;
        !           141:        char *buffer;
        !           142: 
        !           143:        if (!debugmode)
        !           144:        {
        !           145:                // Set 640x480x16 mode
        !           146:                SetVideoModeHR();
        !           147:                ClearScreenHR();
        !           148:                InitPaletteHR();
        !           149:                BlackPaletteHR();
        !           150: 
        !           151:                // Load graphic
        !           152:                buffer = ST_LoadScreen();
        !           153:                pal = buffer;
        !           154:                bitmap = buffer + 16*3;
        !           155: 
        !           156:                SlamHR(bitmap);
        !           157:                FadeToPaletteHR(pal);
        !           158:                Z_Free(buffer);
        !           159:        }
        !           160: #endif
        !           161: }
        !           162: 
        !           163: 
        !           164: void ST_Done(void)
        !           165: {
        !           166: #ifdef __WATCOMC__
        !           167:        ClearScreenHR();
        !           168: #endif
        !           169: }
        !           170: 
        !           171: 
        !           172: //==========================================================================
        !           173: //
        !           174: // ST_UpdateNotches
        !           175: //
        !           176: //==========================================================================
        !           177: 
        !           178: void ST_UpdateNotches(int notchPosition)
        !           179: {
        !           180: #ifdef __WATCOMC__
        !           181:        int x = ST_PROGRESS_X + notchPosition*ST_NOTCH_WIDTH;
        !           182:        int y = ST_PROGRESS_Y;
        !           183:        SlamBlockHR(x,y, ST_NOTCH_WIDTH,ST_NOTCH_HEIGHT, notchTable);
        !           184: #endif
        !           185: }
        !           186: 
        !           187: 
        !           188: //==========================================================================
        !           189: //
        !           190: // ST_UpdateNetNotches - indicates network progress
        !           191: //
        !           192: //==========================================================================
        !           193: 
        !           194: void ST_UpdateNetNotches(int notchPosition)
        !           195: {
        !           196: #ifdef __WATCOMC__
        !           197:        int x = ST_NETPROGRESS_X + notchPosition*ST_NETNOTCH_WIDTH;
        !           198:        int y = ST_NETPROGRESS_Y;
        !           199:        SlamBlockHR(x,y, ST_NETNOTCH_WIDTH, ST_NETNOTCH_HEIGHT, netnotchTable);
        !           200: #endif
        !           201: }
        !           202: 
        !           203: 
        !           204: //==========================================================================
        !           205: //
        !           206: // ST_Progress - increments progress indicator
        !           207: //
        !           208: //==========================================================================
        !           209: 
        !           210: void ST_Progress(void)
        !           211: {
        !           212: #ifdef __WATCOMC__
        !           213:        static int notchPosition=0;
        !           214: 
        !           215:        // Check for ESC press -- during startup all events eaten here
        !           216:        I_StartupReadKeys();
        !           217: 
        !           218:        if (debugmode)
        !           219:        {
        !           220:                printf(".");
        !           221:        }
        !           222:        else
        !           223:        {
        !           224:                if(notchPosition<ST_MAX_NOTCHES)
        !           225:                {
        !           226:                        ST_UpdateNotches(notchPosition);
        !           227:                        S_StartSound(NULL, SFX_STARTUP_TICK);
        !           228:                        notchPosition++;
        !           229:                }
        !           230:        }
        !           231: #else
        !           232:        printf(".");
        !           233: #endif
        !           234: }
        !           235: 
        !           236: 
        !           237: //==========================================================================
        !           238: //
        !           239: // ST_NetProgress - indicates network progress
        !           240: //
        !           241: //==========================================================================
        !           242: 
        !           243: void ST_NetProgress(void)
        !           244: {
        !           245: #ifdef __WATCOMC__
        !           246:        static int netnotchPosition=0;
        !           247:        if (debugmode)
        !           248:        {
        !           249:                printf("*");
        !           250:        }
        !           251:        else
        !           252:        {
        !           253:                if(netnotchPosition<ST_MAX_NETNOTCHES)
        !           254:                {
        !           255:                        ST_UpdateNetNotches(netnotchPosition);
        !           256:                        S_StartSound(NULL, SFX_DRIP);
        !           257:                        netnotchPosition++;
        !           258:                }
        !           259:        }
        !           260: #endif
        !           261: }
        !           262: 
        !           263: 
        !           264: //==========================================================================
        !           265: //
        !           266: // ST_NetDone - net progress complete
        !           267: //
        !           268: //==========================================================================
        !           269: void ST_NetDone(void)
        !           270: {
        !           271:        S_StartSound(NULL, SFX_PICKUP_WEAPON);
        !           272: }
        !           273: 
        !           274: 
        !           275: //==========================================================================
        !           276: //
        !           277: // ST_Message - gives debug message
        !           278: //
        !           279: //==========================================================================
        !           280: 
        !           281: void ST_Message(char *message, ...)
        !           282: {
        !           283:        va_list argptr;
        !           284:        char buffer[80];
        !           285: 
        !           286:        va_start(argptr, message);
        !           287:        vsprintf(buffer, message, argptr);
        !           288:        va_end(argptr);
        !           289: 
        !           290:        if ( strlen(buffer) >= 80 )
        !           291:        {
        !           292:                I_Error("Long debug message has overwritten memory");
        !           293:        }
        !           294: 
        !           295: #ifdef __WATCOMC__
        !           296:        if (debugmode)
        !           297:        {
        !           298:                printf(buffer);
        !           299:        }
        !           300: #else
        !           301:        printf(buffer);
        !           302: #endif
        !           303: }
        !           304: 
        !           305: //==========================================================================
        !           306: //
        !           307: // ST_RealMessage - gives user message
        !           308: //
        !           309: //==========================================================================
        !           310: 
        !           311: void ST_RealMessage(char *message, ...)
        !           312: {
        !           313:        va_list argptr;
        !           314:        char buffer[80];
        !           315: 
        !           316:        va_start(argptr, message);
        !           317:        vsprintf(buffer, message, argptr);
        !           318:        va_end(argptr);
        !           319: 
        !           320:        if ( strlen(buffer) >= 80 )
        !           321:        {
        !           322:                I_Error("Long debug message has overwritten memory\n");
        !           323:        }
        !           324: 
        !           325:        printf(buffer);         // Always print these messages
        !           326: }
        !           327: 
        !           328: 
        !           329: 
        !           330: //==========================================================================
        !           331: //
        !           332: // ST_LoadScreen - loads startup graphic
        !           333: //
        !           334: //==========================================================================
        !           335: 
        !           336: 
        !           337: char *ST_LoadScreen(void)
        !           338: {
        !           339:        int length,lump;
        !           340:        char *buffer;
        !           341: 
        !           342:        lump = W_GetNumForName("STARTUP");
        !           343:        length = W_LumpLength(lump);
        !           344:        buffer = (char *)Z_Malloc(length, PU_STATIC, NULL);
        !           345:        W_ReadLump(lump, buffer);
        !           346:        return(buffer);
        !           347: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.