summaryrefslogtreecommitdiff
path: root/src/strife
diff options
context:
space:
mode:
Diffstat (limited to 'src/strife')
-rw-r--r--src/strife/am_map.c12
-rw-r--r--src/strife/d_main.c9
-rw-r--r--src/strife/f_wipe.c63
-rw-r--r--src/strife/f_wipe.h2
-rw-r--r--src/strife/m_menu.c123
-rw-r--r--src/strife/r_draw.c55
-rw-r--r--src/strife/r_draw.h1
-rw-r--r--src/strife/st_lib.c3
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);
}