diff --git a/docs/rh-log.txt b/docs/rh-log.txt index e9964b3e1..1c1df6b5b 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,14 @@ May 19, 2008 +- Since KDIZD is the only mapset I know of that used reverb, and it didn't + define any new ones of its own, I'm pre-emptively renaming the SNDEAX lump + to REVERBS to remove any possible misunderstanding that this is something + that requires EAX hardware support. (Ideally, it would have been REVERBDEF, + but that's 10 characters long.) The eaxedit console command has also been + renamed to reverbedit for the same reason. +- Fixed: The Palette part of FRemapTable was not initialized with alpha values + other than 0. I'm not sure if it would be better to fix this in the game + palette that it copies from or not, but right now, they get set + unconditionally to 255. - Fixed: M_DrawSave() and M_DrawLoad() need to use GetScaledWidth(), in case the texture is high-res. - Replaced all instances of "flags +=" in sbarinfo_parser.cpp with "flags |=" diff --git a/src/g_shared/a_soundenvironment.cpp b/src/g_shared/a_soundenvironment.cpp index 77fdef331..eb3f2deb5 100644 --- a/src/g_shared/a_soundenvironment.cpp +++ b/src/g_shared/a_soundenvironment.cpp @@ -1,6 +1,6 @@ /* ** a_soundenvironment.cpp -** Actor that controls the EAX settings in its zone +** Actor that controls the reverb settings in its zone ** **--------------------------------------------------------------------------- ** Copyright 1998-2006 Randy Heit diff --git a/src/m_menu.cpp b/src/m_menu.cpp index 423c6948e..0aa8898d1 100644 --- a/src/m_menu.cpp +++ b/src/m_menu.cpp @@ -930,8 +930,8 @@ void M_DrawLoad (void) { FTexture *title = TexMan["M_LOADG"]; screen->DrawTexture (title, - (SCREENWIDTH-title->GetScaledWidth()*CleanXfac)/2, 20*CleanYfac, - DTA_CleanNoMove, true, DTA_BilinearFilter, true, TAG_DONE); + (SCREENWIDTH - title->GetScaledWidth()*CleanXfac)/2, 20*CleanYfac, + DTA_CleanNoMove, true, TAG_DONE); } else { @@ -1293,7 +1293,7 @@ void M_DrawSave() { FTexture *title = TexMan["M_SAVEG"]; screen->DrawTexture (title, - (SCREENWIDTH-title->GetWidth()*CleanXfac)/2, 20*CleanYfac, + (SCREENWIDTH-title->GetScaledWidth()*CleanXfac)/2, 20*CleanYfac, DTA_CleanNoMove, true, TAG_DONE); } else diff --git a/src/r_translate.cpp b/src/r_translate.cpp index 04aa4f88e..dcc7418c7 100644 --- a/src/r_translate.cpp +++ b/src/r_translate.cpp @@ -371,9 +371,9 @@ void R_InitTranslationTables () translationtables[TRANSLATION_Standard][1]->Remap[i] = 0x40 + (i&0xf); translationtables[TRANSLATION_Standard][2]->Remap[i] = 0x20 + (i&0xf); - translationtables[TRANSLATION_Standard][0]->Palette[i] = GPalette.BaseColors[0x60 + (i&0xf)]; - translationtables[TRANSLATION_Standard][1]->Palette[i] = GPalette.BaseColors[0x40 + (i&0xf)]; - translationtables[TRANSLATION_Standard][2]->Palette[i] = GPalette.BaseColors[0x20 + (i&0xf)]; + translationtables[TRANSLATION_Standard][0]->Palette[i] = GPalette.BaseColors[0x60 + (i&0xf)] | MAKEARGB(255,0,0,0); + translationtables[TRANSLATION_Standard][1]->Palette[i] = GPalette.BaseColors[0x40 + (i&0xf)] | MAKEARGB(255,0,0,0); + translationtables[TRANSLATION_Standard][2]->Palette[i] = GPalette.BaseColors[0x20 + (i&0xf)] | MAKEARGB(255,0,0,0); } } else if (gameinfo.gametype == GAME_Heretic) @@ -384,9 +384,9 @@ void R_InitTranslationTables () translationtables[TRANSLATION_Standard][1]->Remap[i] = 145+(i-225); // red translationtables[TRANSLATION_Standard][2]->Remap[i] = 190+(i-225); // blue - translationtables[TRANSLATION_Standard][0]->Palette[i] = GPalette.BaseColors[114+(i-225)]; - translationtables[TRANSLATION_Standard][1]->Palette[i] = GPalette.BaseColors[145+(i-225)]; - translationtables[TRANSLATION_Standard][2]->Palette[i] = GPalette.BaseColors[190+(i-225)]; + translationtables[TRANSLATION_Standard][0]->Palette[i] = GPalette.BaseColors[114+(i-225)] | MAKEARGB(255,0,0,0); + translationtables[TRANSLATION_Standard][1]->Palette[i] = GPalette.BaseColors[145+(i-225)] | MAKEARGB(255,0,0,0); + translationtables[TRANSLATION_Standard][2]->Palette[i] = GPalette.BaseColors[190+(i-225)] | MAKEARGB(255,0,0,0); } } else if (gameinfo.gametype == GAME_Strife) @@ -444,7 +444,7 @@ void R_InitTranslationTables () for (int j = 0x20; j <= 0xFB; ++j) { translationtables[TRANSLATION_Standard][i]->Palette[j] = - GPalette.BaseColors[translationtables[TRANSLATION_Standard][i]->Remap[j]]; + GPalette.BaseColors[translationtables[TRANSLATION_Standard][i]->Remap[j]] | MAKEARGB(255,0,0,0); } } } @@ -466,7 +466,7 @@ void R_InitTranslationTables () int b = GPalette.BaseColors[i].b; int v = (r*77 + g*143 + b*37) >> 12; remap->Remap[i] = IcePaletteRemap[v]; - remap->Palette[i] = PalEntry(IcePalette[v][0], IcePalette[v][1], IcePalette[v][2]); + remap->Palette[i] = PalEntry(255, IcePalette[v][0], IcePalette[v][1], IcePalette[v][2]); } // set up shading tables for shaded columns @@ -528,7 +528,7 @@ static void SetRemap(FRemapTable *table, int i, float r, float g, float b) int ig = clamp (int(g * 255.f), 0, 255); int ib = clamp (int(b * 255.f), 0, 255); table->Remap[i] = ColorMatcher.Pick (ir, ig, ib); - table->Palette[i] = PalEntry(ir, ig, ib); + table->Palette[i] = PalEntry(255, ir, ig, ib); } static void R_CreatePlayerTranslation (float h, float s, float v, FPlayerSkin *skin, FRemapTable *table, FRemapTable *alttable) @@ -558,6 +558,10 @@ static void R_CreatePlayerTranslation (float h, float s, float v, FPlayerSkin *s } memcpy(table->Palette, GPalette.BaseColors, sizeof(table->Palette)); } + for (i = 1; i < 256; ++i) + { + table->Palette[i].a = 255; + } // [GRB] Don't translate skins with color range 0-0 (APlayerPawn default) if (start == 0 && end == 0) diff --git a/src/s_environment.cpp b/src/s_environment.cpp index d6bf7d6a9..bc06fc0ac 100644 --- a/src/s_environment.cpp +++ b/src/s_environment.cpp @@ -8,7 +8,7 @@ #include "w_wad.h" #include "i_system.h" -struct FEAXField +struct FReverbField { int Min, Max; float REVERB_PROPERTIES::*Float; @@ -16,7 +16,7 @@ struct FEAXField unsigned int Flag; }; -static const FEAXField EAXFields[] = +static const FReverbField ReverbFields[] = { { 0, 25, 0, &REVERB_PROPERTIES::Environment, 0 }, { 1000, 100000, &REVERB_PROPERTIES::EnvSize, 0, 0 }, @@ -56,9 +56,9 @@ static const FEAXField EAXFields[] = { 0, 0, 0, 0, 6 }, { 0, 0, 0, 0, 7 } }; -#define NUM_EAX_FIELDS (int(countof(EAXFields))) +#define NUM_REVERB_FIELDS (int(countof(ReverbFields))) -static const char *EAXFieldNames[NUM_EAX_FIELDS+2] = +static const char *ReverbFieldNames[NUM_REVERB_FIELDS+2] = { "Environment", "EnvironmentSize", @@ -465,7 +465,7 @@ FArchive &operator<< (FArchive &arc, ReverbContainer *&env) return arc; } -static void ReadEAX (int lump) +static void ReadReverbDef (int lump) { FScanner sc; const ReverbContainer *def; @@ -473,7 +473,7 @@ static void ReadEAX (int lump) REVERB_PROPERTIES props; char *name; int id1, id2, i, j; - bool inited[NUM_EAX_FIELDS]; + bool inited[NUM_REVERB_FIELDS]; BYTE bools[32]; sc.OpenLumpNum(lump); @@ -488,20 +488,20 @@ static void ReadEAX (int lump) memset (inited, 0, sizeof(inited)); props.Instance = 0; props.Flags = 0; - while (sc.MustGetString (), NUM_EAX_FIELDS > (i = sc.MustMatchString (EAXFieldNames))) + while (sc.MustGetString (), NUM_REVERB_FIELDS > (i = sc.MustMatchString (ReverbFieldNames))) { - if (EAXFields[i].Float) + if (ReverbFields[i].Float) { sc.MustGetFloat (); - props.*EAXFields[i].Float = clamp (sc.Float, - double(EAXFields[i].Min)/1000, - double(EAXFields[i].Max)/1000); + props.*ReverbFields[i].Float = clamp (sc.Float, + double(ReverbFields[i].Min)/1000, + double(ReverbFields[i].Max)/1000); } - else if (EAXFields[i].Int) + else if (ReverbFields[i].Int) { sc.MustGetNumber (); - props.*EAXFields[i].Int = (j = clamp (sc.Number, - EAXFields[i].Min, EAXFields[i].Max)); + props.*ReverbFields[i].Int = (j = clamp (sc.Number, + ReverbFields[i].Min, ReverbFields[i].Max)); if (i == 0 && j != sc.Number) { sc.ScriptError ("The Environment field is out of range."); @@ -510,7 +510,7 @@ static void ReadEAX (int lump) else { sc.MustGetString (); - bools[EAXFields[i].Flag] = sc.MustMatchString (BoolNames); + bools[ReverbFields[i].Flag] = sc.MustMatchString (BoolNames); } inited[i] = true; } @@ -522,27 +522,27 @@ static void ReadEAX (int lump) // Add the new environment to the list, filling in uninitialized fields // with values from the standard environment specified. def = DefaultEnvironments[props.Environment]; - for (i = 0; i < NUM_EAX_FIELDS; ++i) + for (i = 0; i < NUM_REVERB_FIELDS; ++i) { - if (EAXFields[i].Float) + if (ReverbFields[i].Float) { if (!inited[i]) { - props.*EAXFields[i].Float = def->Properties.*EAXFields[i].Float; + props.*ReverbFields[i].Float = def->Properties.*ReverbFields[i].Float; } } - else if (EAXFields[i].Int) + else if (ReverbFields[i].Int) { if (!inited[i]) { - props.*EAXFields[i].Int = def->Properties.*EAXFields[i].Int; + props.*ReverbFields[i].Int = def->Properties.*ReverbFields[i].Int; } } else { if (!inited[i]) { - int mask = 1 << EAXFields[i].Flag; + int mask = 1 << ReverbFields[i].Flag; if (def->Properties.Flags & mask) { props.Flags |= mask; @@ -550,9 +550,9 @@ static void ReadEAX (int lump) } else { - if (bools[EAXFields[i].Flag]) + if (bools[ReverbFields[i].Flag]) { - props.Flags |= 1 << EAXFields[i].Flag; + props.Flags |= 1 << ReverbFields[i].Flag; } } } @@ -568,19 +568,19 @@ static void ReadEAX (int lump) } } -void S_ParseSndEax () +void S_ParseReverbDef () { int lump, lastlump = 0; - atterm (S_UnloadSndEax); + atterm (S_UnloadReverbDef); - while ((lump = Wads.FindLump ("SNDEAX", &lastlump)) != -1) + while ((lump = Wads.FindLump ("REVERBS", &lastlump)) != -1) { - ReadEAX (lump); + ReadReverbDef (lump); } } -void S_UnloadSndEax () +void S_UnloadReverbDef () { ReverbContainer *probe = Environments; diff --git a/src/s_sound.cpp b/src/s_sound.cpp index 1e82994ea..4f72bac8c 100644 --- a/src/s_sound.cpp +++ b/src/s_sound.cpp @@ -291,7 +291,7 @@ void S_InitData () LastLocalSndInfo = LastLocalSndSeq = ""; S_ParseSndInfo (); S_ParseSndSeq (-1); - S_ParseSndEax (); + S_ParseReverbDef (); } //========================================================================== diff --git a/src/s_sound.h b/src/s_sound.h index ef3f0f90f..a5ed5cd68 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -219,8 +219,8 @@ void S_UpdateSounds (void *listener); // [RH] S_sfx "maintenance" routines void S_ParseSndInfo (); -void S_ParseSndEax (); -void S_UnloadSndEax (); +void S_ParseReverbDef (); +void S_UnloadReverbDef (); void S_HashSounds (); int S_FindSound (const char *logicalname); diff --git a/src/win32/eaxedit.cpp b/src/win32/eaxedit.cpp index 636b37b99..b94b0948d 100644 --- a/src/win32/eaxedit.cpp +++ b/src/win32/eaxedit.cpp @@ -1348,7 +1348,7 @@ void ShowEAXEditor () EAXEditWindow = CreateDialog (g_hInst, MAKEINTRESOURCE(IDD_EAXEDIT), Window, EAXProc); } -CCMD (eaxedit) +CCMD (reverbedit) { if (EAXEditWindow != 0) { diff --git a/src/win32/zdoom.rc b/src/win32/zdoom.rc index 94d11e0bb..28338f095 100644 --- a/src/win32/zdoom.rc +++ b/src/win32/zdoom.rc @@ -327,7 +327,7 @@ END IDD_EAXEDIT DIALOGEX 0, 0, 280, 326 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_TOOLWINDOW | WS_EX_WINDOWEDGE -CAPTION "EAX Environment Editor" +CAPTION "Environment Editor" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN COMBOBOX IDC_CURRENTENVIRONMENT,7,19,265,14,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP @@ -346,7 +346,7 @@ END IDD_NEWEAX DIALOGEX 0, 0, 348, 257 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Create New EAX Environment..." +CAPTION "Create New Environment..." FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN EDITTEXT IDC_NEWENVNAME,32,216,187,12,ES_AUTOHSCROLL diff --git a/wadsrc/sndeax.txt b/wadsrc/reverbs.txt similarity index 100% rename from wadsrc/sndeax.txt rename to wadsrc/reverbs.txt diff --git a/wadsrc/wadsrc.vcproj b/wadsrc/wadsrc.vcproj index d7307cb40..be61c6b98 100644 --- a/wadsrc/wadsrc.vcproj +++ b/wadsrc/wadsrc.vcproj @@ -142,7 +142,7 @@ >