diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/strife/am_map.c | 12 | ||||
-rw-r--r-- | src/strife/d_main.c | 9 | ||||
-rw-r--r-- | src/strife/f_wipe.c | 63 | ||||
-rw-r--r-- | src/strife/f_wipe.h | 2 | ||||
-rw-r--r-- | src/strife/m_menu.c | 123 | ||||
-rw-r--r-- | src/strife/r_draw.c | 55 | ||||
-rw-r--r-- | src/strife/r_draw.h | 1 | ||||
-rw-r--r-- | src/strife/st_lib.c | 3 |
8 files changed, 132 insertions, 136 deletions
diff --git a/src/strife/am_map.c b/src/strife/am_map.c index 89a5dffc..b1eaa216 100644 --- a/src/strife/am_map.c +++ b/src/strife/am_map.c @@ -491,7 +491,9 @@ void AM_initVariables(void) } // -// +// AM_loadPics +// +// haleyjd 08/27/10: [STRIFE] Changed marknums to PLMNUM%d // void AM_loadPics(void) { @@ -500,8 +502,8 @@ void AM_loadPics(void) for (i=0;i<10;i++) { - sprintf(namebuf, DEH_String("AMMNUM%d"), i); - marknums[i] = W_CacheLumpName(namebuf, PU_STATIC); + sprintf(namebuf, DEH_String("PLMNUM%d"), i); + marknums[i] = W_CacheLumpName(namebuf, PU_STATIC); } } @@ -513,8 +515,8 @@ void AM_unloadPics(void) for (i=0;i<10;i++) { - sprintf(namebuf, DEH_String("AMMNUM%d"), i); - W_ReleaseLumpName(namebuf); + sprintf(namebuf, DEH_String("PLMNUM%d"), i); // haleyjd: Choco change. + W_ReleaseLumpName(namebuf); } } diff --git a/src/strife/d_main.c b/src/strife/d_main.c index 60021344..c888438a 100644 --- a/src/strife/d_main.c +++ b/src/strife/d_main.c @@ -343,8 +343,9 @@ void D_Display (void) I_Sleep(1); } while (tics < 3); // haleyjd 08/23/2010: [STRIFE] Changed from == 0 to < 3 + // haleyjd 08/26/10: [STRIFE] Changed to use ColorXForm wipe. wipestart = nowtime; - done = wipe_ScreenWipe(wipe_Melt + done = wipe_ScreenWipe(wipe_ColorXForm , 0, 0, SCREENWIDTH, SCREENHEIGHT, tics); I_UpdateNoBlit (); M_Drawer (); // menu is drawn even on top of wipes @@ -1099,8 +1100,8 @@ static void D_Endoom(void) return; } - // STRIFE-TODO: ENDOOM -> ENDSTRF - endoom = W_CacheLumpName(DEH_String("ENDOOM"), PU_STATIC); + // haleyjd 08/27/10: [STRIFE] ENDOOM -> ENDSTRF + endoom = W_CacheLumpName(DEH_String("ENDSTRF"), PU_STATIC); I_Endoom(endoom); } @@ -1567,7 +1568,7 @@ void D_DoomMain (void) SetSaveGameDir(iwadfile); // Check for -file in shareware - if (modifiedgame) + if (0 /*modifiedgame*/) // TEST { // These are the lumps that will be checked in IWAD, // if any one is not present, execution will be aborted. diff --git a/src/strife/f_wipe.c b/src/strife/f_wipe.c index efc678ca..4c496f38 100644 --- a/src/strife/f_wipe.c +++ b/src/strife/f_wipe.c @@ -33,6 +33,9 @@ #include "doomtype.h" +#include "r_defs.h" // haleyjd [STRIFE] +#include "r_draw.h" + #include "f_wipe.h" // @@ -69,6 +72,7 @@ wipe_shittyColMajorXform } +// haleyjd 08/26/10: [STRIFE] Verified unmodified. int wipe_initColorXForm ( int width, @@ -79,52 +83,40 @@ wipe_initColorXForm return 0; } +// +// wipe_doColorXForm +// +// haleyjd 08/26/10: [STRIFE] +// * Rogue modified the unused ColorXForm wipe in-place in order to implement +// their distinctive crossfade wipe. +// int wipe_doColorXForm ( int width, int height, int ticks ) { - boolean changed; - byte* w; - byte* e; - int newval; - - changed = false; - w = wipe_scr; - e = wipe_scr_end; - - while (w!=wipe_scr+width*height) + byte *cur_screen = wipe_scr; + byte *end_screen = wipe_scr_end; + int pix = width*height; + int i; + boolean changed = false; + + for(i = pix; i > 0; i--) { - if (*w != *e) - { - if (*w > *e) - { - newval = *w - ticks; - if (newval < *e) - *w = *e; - else - *w = newval; - changed = true; - } - else if (*w < *e) - { - newval = *w + ticks; - if (newval > *e) - *w = *e; - else - *w = newval; - changed = true; - } - } - w++; - e++; + if(*cur_screen != *end_screen) + { + changed = true; + *cur_screen = xlatab[(*cur_screen << 8) + *end_screen]; + } + ++cur_screen; + ++end_screen; } return !changed; - } +// haleyjd 08/26/10: [STRIFE] Verified unmodified. int wipe_exitColorXForm ( int width, @@ -235,6 +227,7 @@ wipe_exitMelt return 0; } +// haleyjd 08/26/10: [STRIFE] Verified unmodified. int wipe_StartScreen ( int x, @@ -247,6 +240,7 @@ wipe_StartScreen return 0; } +// haleyjd 08/26/10: [STRIFE] Verified unmodified. int wipe_EndScreen ( int x, @@ -260,6 +254,7 @@ wipe_EndScreen return 0; } +// haleyjd 08/26/10: [STRIFE] Verified unmodified. int wipe_ScreenWipe ( int wipeno, diff --git a/src/strife/f_wipe.h b/src/strife/f_wipe.h index 9045be3f..3f2e73af 100644 --- a/src/strife/f_wipe.h +++ b/src/strife/f_wipe.h @@ -34,7 +34,7 @@ enum { - // simple gradual pixel change for 8-bit only + // [STRIFE]: ColorXForm reimplemented as a proper crossfade wipe_ColorXForm, // weird screen melt diff --git a/src/strife/m_menu.c b/src/strife/m_menu.c index a0d66dd4..ec0ae739 100644 --- a/src/strife/m_menu.c +++ b/src/strife/m_menu.c @@ -126,8 +126,9 @@ char saveOldString[SAVESTRINGSIZE]; boolean inhelpscreens; boolean menuactive; -#define SKULLXOFF -32 -#define LINEHEIGHT 16 +// haleyjd 08/27/10: [STRIFE] SKULLXOFF == -28, LINEHEIGHT == 19 +#define CURSORXOFF -28 +#define LINEHEIGHT 19 extern boolean sendpause; char savegamestrings[10][SAVESTRINGSIZE]; @@ -167,13 +168,15 @@ typedef struct menu_s short lastOn; // last item user was on in menu } menu_t; +// haleyjd 08/27/10: [STRIFE] skull* stuff changed to cursor* stuff short itemOn; // menu item skull is on -short skullAnimCounter; // skull animation counter -short whichSkull; // which skull to draw +short cursorAnimCounter; // skull animation counter +short whichCursor; // which skull to draw -// graphic name of skulls -// warning: initializer-string for array of chars is too long -char *skullName[2] = {"M_SKULL1","M_SKULL2"}; +// graphic name of cursors +// haleyjd 08/27/10: [STRIFE] M_SKULL* -> M_CURS* +char *cursorName[8] = {"M_CURS1", "M_CURS2", "M_CURS3", "M_CURS4", + "M_CURS5", "M_CURS6", "M_CURS7", "M_CURS8" }; // current menudef menu_t* currentMenu; @@ -255,7 +258,7 @@ menuitem_t MainMenu[]= {1,"M_LOADG",M_LoadGame,'l'}, {1,"M_SAVEG",M_SaveGame,'s'}, // Another hickup with Special edition. - {1,"M_RDTHIS",M_ReadThis,'r'}, + {1,"M_RDTHIS",M_ReadThis,'h'}, // haleyjd 08/28/10: 'r' -> 'h' {1,"M_QUITG",M_QuitDOOM,'q'} }; @@ -265,7 +268,7 @@ menu_t MainDef = NULL, MainMenu, M_DrawMainMenu, - 97,64, + 97,45, // haleyjd 08/28/10: [STRIFE] changed y coord 0 }; @@ -315,21 +318,22 @@ enum menuitem_t NewGameMenu[]= { - {1,"M_JKILL", M_ChooseSkill, 'i'}, - {1,"M_ROUGH", M_ChooseSkill, 'h'}, - {1,"M_HURT", M_ChooseSkill, 'h'}, - {1,"M_ULTRA", M_ChooseSkill, 'u'}, - {1,"M_NMARE", M_ChooseSkill, 'n'} + // haleyjd 08/28/10: [STRIFE] changed all shortcut letters + {1,"M_JKILL", M_ChooseSkill, 't'}, + {1,"M_ROUGH", M_ChooseSkill, 'r'}, + {1,"M_HURT", M_ChooseSkill, 'v'}, + {1,"M_ULTRA", M_ChooseSkill, 'e'}, + {1,"M_NMARE", M_ChooseSkill, 'b'} }; menu_t NewDef = { - newg_end, // # of menu items - &EpiDef, // previous menu - NewGameMenu, // menuitem_t -> - M_DrawNewGame, // drawing routine -> + newg_end, // # of menu items + &EpiDef, // previous menu - STRIFE-FIXME: should be MainDef + NewGameMenu, // menuitem_t -> + M_DrawNewGame, // drawing routine -> 48,63, // x,y - hurtme // lastOn + toorough // lastOn - haleyjd [STRIFE]: default to skill 1 }; @@ -339,26 +343,20 @@ menu_t NewDef = // enum { + // haleyjd 08/28/10: [STRIFE] Removed messages, mouse sens., detail. endgame, - messages, - detail, scrnsize, option_empty1, - mousesens, - option_empty2, soundvol, opt_end } options_e; menuitem_t OptionsMenu[]= { + // haleyjd 08/28/10: [STRIFE] Removed messages, mouse sens., detail. {1,"M_ENDGAM", M_EndGame,'e'}, - {1,"M_MESSG", M_ChangeMessages,'m'}, - {1,"M_DETAIL", M_ChangeDetail,'g'}, {2,"M_SCRNSZ", M_SizeDisplay,'s'}, {-1,"",0,'\0'}, - {2,"M_MSENS", M_ChangeSensitivity,'m'}, - {-1,"",0,'\0'}, {1,"M_SVOL", M_Sound,'s'} }; @@ -891,10 +889,12 @@ void M_MusicVol(int choice) // // M_DrawMainMenu // +// haleyjd 08/27/10: [STRIFE] Changed x coordinate; M_DOOM -> M_STRIFE +// void M_DrawMainMenu(void) { - V_DrawPatchDirect(94, 2, - W_CacheLumpName(DEH_String("M_DOOM"), PU_CACHE)); + V_DrawPatchDirect(84, 2, + W_CacheLumpName(DEH_String("M_STRIFE"), PU_CACHE)); } @@ -903,6 +903,8 @@ void M_DrawMainMenu(void) // // M_NewGame // +// haleyjd 08/27/10: [STRIFE] Verified unmodified. +// void M_DrawNewGame(void) { V_DrawPatchDirect(96, 14, W_CacheLumpName(DEH_String("M_NEWG"), PU_CACHE)); @@ -991,19 +993,11 @@ char msgNames[2][9] = {"M_MSGOFF","M_MSGON"}; void M_DrawOptions(void) { - V_DrawPatchDirect(108, 15, W_CacheLumpName(DEH_String("M_OPTTTL"), + // haleyjd 08/27/10: [STRIFE] M_OPTTTL -> M_OPTION + V_DrawPatchDirect(108, 15, W_CacheLumpName(DEH_String("M_OPTION"), PU_CACHE)); - - V_DrawPatchDirect(OptionsDef.x + 175, OptionsDef.y + LINEHEIGHT * detail, - W_CacheLumpName(DEH_String(detailNames[detailLevel]), - PU_CACHE)); - V_DrawPatchDirect(OptionsDef.x + 120, OptionsDef.y + LINEHEIGHT * messages, - W_CacheLumpName(DEH_String(msgNames[showMessages]), - PU_CACHE)); - - M_DrawThermo(OptionsDef.x, OptionsDef.y + LINEHEIGHT * (mousesens + 1), - 10, mouseSensitivity); + // haleyjd 08/26/10: [STRIFE] Removed messages, sensitivity, detail. M_DrawThermo(OptionsDef.x,OptionsDef.y+LINEHEIGHT*(scrnsize+1), 9,screenSize); @@ -1949,10 +1943,11 @@ void M_Drawer (void) } - // DRAW SKULL - V_DrawPatchDirect(x + SKULLXOFF, currentMenu->y - 5 + itemOn*LINEHEIGHT, - W_CacheLumpName(DEH_String(skullName[whichSkull]), - PU_CACHE)); + // haleyjd 08/27/10: [STRIFE] Adjust to draw spinning Sigil + // DRAW SIGIL + V_DrawPatchDirect(x + CURSORXOFF, currentMenu->y - 5 + itemOn*LINEHEIGHT, + W_CacheLumpName(DEH_String(cursorName[whichCursor]), + PU_CACHE)); } @@ -1983,12 +1978,14 @@ void M_SetupNextMenu(menu_t *menudef) // // M_Ticker // +// haleyjd 08/27/10: [STRIFE] Rewritten for Sigil cursor +// void M_Ticker (void) { - if (--skullAnimCounter <= 0) + if (--cursorAnimCounter <= 0) { - whichSkull ^= 1; - skullAnimCounter = 8; + whichCursor = (whichCursor + 1) % 8; + cursorAnimCounter = 5; } } @@ -1996,44 +1993,22 @@ void M_Ticker (void) // // M_Init // +// haleyjd 08/27/10: [STRIFE] Removed DOOM gamemode stuff +// void M_Init (void) { currentMenu = &MainDef; menuactive = 0; itemOn = currentMenu->lastOn; - whichSkull = 0; - skullAnimCounter = 10; + whichCursor = 0; + cursorAnimCounter = 10; screenSize = screenblocks - 3; messageToPrint = 0; messageString = NULL; - messageLastMenuActive = menuactive; + messageLastMenuActive = menuactive; // STRIFE-FIXME: assigns 0 here... quickSaveSlot = -1; // Here we could catch other version dependencies, // like HELP1/2, and four episodes. - - - switch ( gamemode ) - { - case commercial: - // Commercial has no "read this" entry. - MainMenu[readthis] = MainMenu[quitdoom]; - MainDef.numitems--; - MainDef.y += 8; - NewDef.prevMenu = &MainDef; - break; - case shareware: - // Episode 2 and 3 are handled, - // branching to an ad screen. - case registered: - // We need to remove the fourth episode. - EpiDef.numitems--; - break; - case retail: - // We are fine. - default: - break; - } - } diff --git a/src/strife/r_draw.c b/src/strife/r_draw.c index 1b6420d9..c491f6b3 100644 --- a/src/strife/r_draw.c +++ b/src/strife/r_draw.c @@ -526,7 +526,9 @@ void R_DrawTranslatedColumnLow (void) } - +// haleyjd 08/26/10: [STRIFE] - Rogue's translucency lookup table +// This is functionally equivalent to Raven's TINTTAB and BOOM's TRANMAPs. +byte *xlatab; // // R_InitTranslationTables @@ -535,28 +537,47 @@ void R_DrawTranslatedColumnLow (void) // Assumes a given structure of the PLAYPAL. // Could be read from a lump instead. // +// haleyjd 08/26/10: [STRIFE] +// * Added loading of XLATAB +// void R_InitTranslationTables (void) { - int i; - + int i; + + // [STRIFE] Load xlatab. Here's how Rogue did it: + // v7 = W_CacheLumpName("XLATAB", PU_CACHE); // note potential cache bug... + // HIWORD(v8) = (Z_Malloc(131072, PU_STATIC, NULL) + 65535) >> 16; + // LOWORD(v8) = 0; // aligning to a 64K boundary, as if this is Wolf3D. + // xlatab = v8; + // memcpy(v8, v7, 65536); + // memcpy(v8+65536, v7+65536, 0); // 0 bytes, does nothing! + // As you can see, they copypasta'd id's unnecessary 64K boundary alignment + // from the colormap code, and then evidently at some point dropped the high + // side of the presumably 128KB lump (because it is redundant data), but + // just set the 2nd memset call's length to 0 bytes... Terrible. Since none + // of this accomplishes anything, and isn't strictly portable, all we need + // to do is this: + xlatab = W_CacheLumpName("XLATAB", PU_STATIC); + translationtables = Z_Malloc (256*3, PU_STATIC, 0); - + + // STRIFE-TODO: Strife has many more (and more varied) translations // translate just the 16 green colors for (i=0 ; i<256 ; i++) { - if (i >= 0x70 && i<= 0x7f) - { - // map green ramp to gray, brown, red - translationtables[i] = 0x60 + (i&0xf); - translationtables [i+256] = 0x40 + (i&0xf); - translationtables [i+512] = 0x20 + (i&0xf); - } - else - { - // Keep all other colors as is. - translationtables[i] = translationtables[i+256] - = translationtables[i+512] = i; - } + if (i >= 0x70 && i<= 0x7f) + { + // map green ramp to gray, brown, red + translationtables[i] = 0x60 + (i&0xf); + translationtables [i+256] = 0x40 + (i&0xf); + translationtables [i+512] = 0x20 + (i&0xf); + } + else + { + // Keep all other colors as is. + translationtables[i] = translationtables[i+256] + = translationtables[i+512] = i; + } } } diff --git a/src/strife/r_draw.h b/src/strife/r_draw.h index adaacd60..7070da2e 100644 --- a/src/strife/r_draw.h +++ b/src/strife/r_draw.h @@ -79,6 +79,7 @@ extern byte* ds_source; extern byte* translationtables; extern byte* dc_translation; +extern byte* xlatab; // haleyjd 08/26/10: [STRIFE] // Span blitting for rows, floor/ceiling. diff --git a/src/strife/st_lib.c b/src/strife/st_lib.c index c90540cb..e206b34c 100644 --- a/src/strife/st_lib.c +++ b/src/strife/st_lib.c @@ -58,7 +58,8 @@ patch_t* sttminus; void STlib_init(void) { - sttminus = (patch_t *) W_CacheLumpName(DEH_String("STTMINUS"), PU_STATIC); + // haleyjd 08/28/10: [STRIFE] STTMINUS -> STCFN045 + sttminus = (patch_t *) W_CacheLumpName(DEH_String("STCFN045"), PU_STATIC); } |