diff --git a/src/f_finale.c b/src/f_finale.c index 73a82523f..bd1d4dd8d 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -1123,16 +1123,22 @@ static const char *credits[] = { "Logan \"GBA\" Arias", "Callum Dickinson", "Scott \"Graue\" Feeney", + "Victor \"SteelT\" Fuentes", "Nathan \"Jazz\" Giroux", "Vivian \"toaster\" Grannell", "Kepa \"Nev3r\" Iceta", "Thomas \"Shadow Hog\" Igoe", + "\"james\"", "Iestyn \"Monster Iestyn\" Jealous", + "\"Jimita\"", "Ronald \"Furyhunter\" Kinard", // The SDL2 port + "Louis-Antoine \"LJ Sonic\" de Moulins", // de Rochefort doesn't quite fit on the screen sorry lol "John \"JTE\" Muniz", "Ehab \"Wolfy\" Saeed", + "Jonas \"MascaraSnake\" Sauer", "\"Kaito Sinclaire\"", "\"SSNTails\"", + "Lachlan \"Lach\" Wright", "Marco \"mazmazz\" Zafra", "", "\1Programming", @@ -1141,10 +1147,7 @@ static const char *credits[] = { "Andrew \"orospakr\" Clunis", "Sally \"TehRealSalt\" Cochenour", "Gregor \"Oogaland\" Dick", - "Louis-Antoine \"LJSonic\" de Moulins", // for fixing 2.1's netcode (de Rochefort doesn't quite fit on the screen sorry lol) - "Victor \"Steel Titanium\" Fuentes", "Julio \"Chaos Zero 64\" Guir", - "\"Jimita\"", "\"Kalaron\"", // Coded some of Sryder13's collection of OpenGL fixes, especially fog "\"Lat'\"", // SRB2-CHAT, the chat window from Kart "Matthew \"Shuffle\" Marsalko", @@ -1153,39 +1156,53 @@ static const char *credits[] = { "Colin \"Sonict\" Pfaff", "Sean \"Sryder13\" Ryder", "Tasos \"tatokis\" Sahanidis", // Corrected C FixedMul, making 64-bit builds netplay compatible + "Wessel \"sphere\" Smit", "Ben \"Cue\" Woodford", // Git contributors with 5+ approved merges of substantive quality, // or contributors with at least one groundbreaking merge, may be named. // Everyone else is acknowledged under "Special Thanks > SRB2 Community Contributors". "", - "\1Sprite Artists", - "\"Iceman404\"", + "\1Art", "Victor \"VAdaPEGA\" Ara\x1Fjo", // Araújo -- sorry for our limited font! D: + "Ryan \"Blaze Hedgehog\" Bloom", + "Paul \"Boinciel\" Clempson", "Sally \"TehRealSalt\" Cochenour", - "Jim \"MotorRoach\" DeMello", + "\"Dave Lite\"", "Desmond \"Blade\" DesJardins", "Sherman \"CoatRack\" DesJardins", - "Vivian \"toaster\" Grannell", - "Andrew \"Senku Niola\" Moran", - "David \"Instant Sonic\" Spencer Jr.", - "\"SSNTails\"", - "", - "\1Texture Artists", - "Ryan \"Blaze Hedgehog\" Bloom", + "\"DirkTheHusky\"", "Buddy \"KinkaJoy\" Fischer", "Vivian \"toaster\" Grannell", + "James \"SwitchKaze\" Hale", + "James \"SeventhSentinel\" Hall", "Kepa \"Nev3r\" Iceta", + "Iestyn \"Monster Iestyn\" Jealous", + "William \"GuyWithThePie\" Kloppenberg", + "Alice \"Alacroix\" de Lemos", + "Alexander \"DrTapeworm\" Moench-Ford", + "Andrew \"Senku Niola\" Moran", + "\"MotorRoach\"", + "Phillip \"TelosTurntable\" Robinson", + "Wessel \"sphere\" Smit", + "David \"Instant Sonic\" Spencer Jr.", + "\"SSNTails\"", + "Daniel \"Inazuma\" Trinh", + "\"VelocitOni\"", "Jarrett \"JEV3\" Voight", "", "\1Music and Sound", "\1Production", + "Victor \"VAdaPEGA\" Ara\x1Fjo", // Araújo "Malcolm \"RedXVI\" Brown", "Dave \"DemonTomatoDave\" Bulmer", "Paul \"Boinciel\" Clempson", + "Shane \"CobaltBW\" Ellis", + "James \"SeventhSentinel\" Hall", "Cyan Helkaraxe", "Kepa \"Nev3r\" Iceta", "Iestyn \"Monster Iestyn\" Jealous", "Jarel \"Arrow\" Jones", + "Alexander \"DrTapeworm\" Moench-Ford", "Stefan \"Stuf\" Rimalia", "Shane Mychal Sexton", "\"Spazzo\"", @@ -1194,16 +1211,20 @@ static const char *credits[] = { "\"SSNTails\"", "", "\1Level Design", + "Hank \"FuriousFox\" Brannock", "Matthew \"Fawfulfan\" Chapman", "Paul \"Boinciel\" Clempson", + "Sally \"TehRealSalt\" Cochenour", "Desmond \"Blade\" DesJardins", "Sherman \"CoatRack\" DesJardins", "Ben \"Mystic\" Geyer", "Nathan \"Jazz\" Giroux", "Vivian \"toaster\" Grannell", "Dan \"Blitzzo\" Hagerstrand", + "James \"SeventhSentinel\" Hall", "Kepa \"Nev3r\" Iceta", "Thomas \"Shadow Hog\" Igoe", + "Alexander \"DrTapeworm\" Moench-Ford", "\"Kaito Sinclaire\"", "Wessel \"sphere\" Smit", "\"Spazzo\"", @@ -1237,6 +1258,7 @@ static const char *credits[] = { "iD Software", "Doom Legacy Project", "FreeDoom Project", // Used some of the mancubus and rocket launcher sprites for Brak + "Kart Krew", "Alex \"MistaED\" Fuller", "Pascal \"CodeImp\" vd Heiden", // Doom Builder developer "Randi Heit ()", // For their MSPaint sprite that we nicked diff --git a/src/hardware/hw_cache.c b/src/hardware/hw_cache.c index 2d4704b8b..328e623bd 100644 --- a/src/hardware/hw_cache.c +++ b/src/hardware/hw_cache.c @@ -781,9 +781,12 @@ static void FreeMipmapColormap(INT32 patchnum, void *patch) // Confusing at first, but pat->mipmap->nextcolormap // at the beginning of the loop is the first colormap // from the linked list of colormaps - GLMipmap_t *next = pat->mipmap->nextcolormap; + GLMipmap_t *next = pat->mipmap; + if (!next) // No mipmap in this patch, break out of loop. + break; // Set the first colormap // to the one that comes after it + next = next->nextcolormap; pat->mipmap->nextcolormap = next->nextcolormap; // Free image data from memory if (next->grInfo.data) diff --git a/src/p_mobj.c b/src/p_mobj.c index 4ffaf22c7..0ec3d7cc1 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1997,7 +1997,7 @@ void P_XYMovement(mobj_t *mo) { mo->momz = transfermomz; mo->standingslope = NULL; - if (player->pflags & PF_SPINNING) + if (player && (player->pflags & PF_SPINNING)) player->pflags |= PF_THOKKED; } } @@ -11811,7 +11811,7 @@ You should think about modifying the deathmatch starts to take full advantage of return; // no doubles } - if (i == MT_TOKEN && ((gametype != GT_COOP && gametype != GT_COMPETITION) || ultimatemode || tokenbits == 30 || tokenlist & (1 << tokenbits++))) + if (i == MT_TOKEN && ((gametype != GT_COOP && gametype != GT_COMPETITION) || tokenbits == 30 || tokenlist & (1 << tokenbits++))) return; // you already got this token, or there are too many, or the gametype's not right if (i == MT_EMBLEM && (netgame || multiplayer || (modifiedgame && !savemoddata))) // No cheating!! diff --git a/src/p_setup.c b/src/p_setup.c index 520f3136d..1ae0119e5 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -568,7 +568,9 @@ or NULL if we want to allocate it now. static INT32 Ploadflat (levelflat_t *levelflat, const char *flatname) { +#ifndef NO_PNG_LUMPS UINT8 buffer[8]; +#endif lumpnum_t flatnum; int texturenum; diff --git a/src/r_patch.h b/src/r_patch.h index 23ac025f6..4ffa3f221 100644 --- a/src/r_patch.h +++ b/src/r_patch.h @@ -17,13 +17,13 @@ #include "r_defs.h" #include "doomdef.h" -// structs +// Structs #ifdef ROTSPRITE typedef enum { - ROTAXIS_X, // roll (the default) - ROTAXIS_Y, // pitch - ROTAXIS_Z // yaw + ROTAXIS_X, // Roll (the default) + ROTAXIS_Y, // Pitch + ROTAXIS_Z // Yaw } rotaxis_t; typedef struct @@ -41,30 +41,30 @@ typedef struct boolean available; } spriteinfo_t; -extern spriteinfo_t spriteinfo[NUMSPRITES]; - -// patches, flats, textures... +// Conversions between patches / flats / textures... boolean R_CheckIfPatch(lumpnum_t lump); -boolean R_IsLumpPNG(const UINT8 *d, size_t s); - void R_TextureToFlat(size_t tex, UINT8 *flat); void R_PatchToFlat(patch_t *patch, UINT8 *flat); void R_PatchToFlat_16bpp(patch_t *patch, UINT16 *raw, boolean flip); patch_t *R_FlatToPatch(UINT8 *raw, UINT16 width, UINT16 height, UINT16 leftoffset, UINT16 topoffset, size_t *destsize, boolean transparency); patch_t *R_FlatToPatch_16bpp(UINT16 *raw, UINT16 width, UINT16 height, size_t *size); -// png +// Portable Network Graphics +boolean R_IsLumpPNG(const UINT8 *d, size_t s); +#define W_ThrowPNGError(lumpname, wadfilename) I_Error("W_Wad: Lump \"%s\" in file \"%s\" is a .png - please convert to either Doom or Flat (raw) image format.", lumpname, wadfilename); // Fears Of LJ Sonic + #ifndef NO_PNG_LUMPS UINT8 *R_PNGToFlat(UINT16 *width, UINT16 *height, UINT8 *png, size_t size); patch_t *R_PNGToPatch(const UINT8 *png, size_t size, size_t *destsize, boolean transparency); boolean R_PNGDimensions(UINT8 *png, INT16 *width, INT16 *height, size_t size); #endif -// spriteinfo +// SpriteInfo +extern spriteinfo_t spriteinfo[NUMSPRITES]; void R_LoadSpriteInfoLumps(UINT16 wadnum, UINT16 numlumps); void R_ParseSPRTINFOLump(UINT16 wadNum, UINT16 lumpNum); -// rotsprite +// Sprite rotation #ifdef ROTSPRITE void R_CacheRotSprite(spritenum_t sprnum, UINT8 frame, spriteinfo_t *sprinfo, spriteframe_t *sprframe, INT32 rot, UINT8 flip); void R_FreeSingleRotSprite(spritedef_t *spritedef); diff --git a/src/r_things.c b/src/r_things.c index afdc3b223..90d5f3fd3 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -451,7 +451,7 @@ void R_AddSpriteDefs(UINT16 wadnum) else start++; // just after S_START - if (end == INT16_MAX) + if (end == INT16_MAX || start >= end) { CONS_Debug(DBG_SETUP, "no sprites in pwad %d\n", wadnum); return; diff --git a/src/sounds.c b/src/sounds.c index 48f929b73..0a14c3ffe 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -94,7 +94,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"steam2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Steam jet"}, // Tails 06-19-2001 {"wbreak", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wood breaking"}, {"ambmac", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Machinery"}, - {"spsmsh", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Heavy impact"}, + {"spsmsh", true, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Heavy impact"}, {"rainin", true, 24, 4, -1, NULL, 0, -1, -1, LUMPERROR, "Rain"}, {"litng1", false, 16, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Lightning"}, diff --git a/src/w_wad.c b/src/w_wad.c index 0cd2175ec..2690253e4 100644 --- a/src/w_wad.c +++ b/src/w_wad.c @@ -1229,7 +1229,7 @@ size_t W_ReadLumpHeaderPwad(UINT16 wad, UINT16 lump, void *dest, size_t size, si { size_t bytesread = fread(dest, 1, size, handle); if (R_IsLumpPNG((UINT8 *)dest, bytesread)) - I_Error("W_Wad: Lump \"%s\" in file \"%s\" is a .png - please convert to either Doom or Flat (raw) image format.", l->name2, wadfiles[wad]->filename); + W_ThrowPNGError(l->name2, wadfiles[wad]->filename); return bytesread; } #else @@ -1270,7 +1270,8 @@ size_t W_ReadLumpHeaderPwad(UINT16 wad, UINT16 lump, void *dest, size_t size, si Z_Free(rawData); Z_Free(decData); #ifdef NO_PNG_LUMPS - ErrorIfPNG(dest, size, wadfiles[wad]->filename, l->name2); + if (R_IsLumpPNG((UINT8 *)dest, size)) + W_ThrowPNGError(l->name2, wadfiles[wad]->filename); #endif return size; #else @@ -1332,7 +1333,8 @@ size_t W_ReadLumpHeaderPwad(UINT16 wad, UINT16 lump, void *dest, size_t size, si Z_Free(decData); #ifdef NO_PNG_LUMPS - ErrorIfPNG(dest, size, wadfiles[wad]->filename, l->name2); + if (R_IsLumpPNG((UINT8 *)dest, size)) + W_ThrowPNGError(l->name2, wadfiles[wad]->filename); #endif return size; } diff --git a/src/y_inter.c b/src/y_inter.c index 340e8be4c..c8d43cb50 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -1623,11 +1623,14 @@ static void Y_CalculateCompetitionWinners(void) for (j = 0; j < 5; j++) bestat[j] = true; + if ((players[i].pflags & PF_GAMETYPEOVER) || players[i].lives <= 0) + players[i].rings = 0; + times[i] = players[i].realtime; rings[i] = (UINT32)max(players[i].rings, 0); maxrings[i] = (UINT32)players[i].totalring; monitors[i] = (UINT32)players[i].numboxes; - scores[i] = (UINT32)min(players[i].score, 99999990); + scores[i] = (UINT32)min(players[i].score, MAXSCORE); for (j = 0; j < MAXPLAYERS; j++) {