diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 7f6e6f287..433b603b1 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1923,7 +1923,6 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic { if (cl_mode != CL_DOWNLOADFILES && cl_mode != CL_DOWNLOADSAVEGAME) { - F_MenuPresTicker(true); // title sky F_TitleScreenTicker(true); F_TitleScreenDrawer(); } diff --git a/src/deh_soc.c b/src/deh_soc.c index aa55ca638..973daadf1 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -2292,7 +2292,9 @@ void readmenu(MYFILE *f, INT32 num) menupres[num].ttname[0] = 0; menupres[num].hidetitlepics = true; } - else // if (fastcmp(word2, "OLD") || fastcmp(word2, "SSNTAILS")) + else if (fastcmp(word2, "RINGRACERS")) + menupres[num].ttmode = TTMODE_RINGRACERS; + else if (fastcmp(word2, "OLD")) menupres[num].ttmode = TTMODE_OLD; titlechanged = true; } @@ -3385,7 +3387,9 @@ void readmaincfg(MYFILE *f) ttname[0] = 0; hidetitlepics = true; } - else // if (fastcmp(word2, "OLD") || fastcmp(word2, "SSNTAILS")) + else if (fastcmp(word2, "RINGRACERS")) + ttmode = TTMODE_RINGRACERS; + else if (fastcmp(word2, "OLD") || fastcmp(word2, "SSNTAILS")) ttmode = TTMODE_OLD; titlechanged = true; } diff --git a/src/f_finale.c b/src/f_finale.c index 618bc1656..ded90016c 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -44,7 +44,7 @@ // Stage of animation: // 0 = text, 1 = art screen INT32 finalecount; -INT32 titlescrollxspeed = 5; +INT32 titlescrollxspeed = 16; INT32 titlescrollyspeed = 0; UINT8 titlemapinaction = TITLEMAP_OFF; @@ -58,8 +58,6 @@ static tic_t stoptimer; static boolean keypressed = false; -static tic_t xscrolltimer; -static tic_t yscrolltimer; static INT32 menuanimtimer; // Title screen: background animation timing mobj_t *titlemapcameraref = NULL; @@ -81,7 +79,7 @@ static UINT32 demoIdleLeft; // customizable title screen graphics -ttmode_enum ttmode = TTMODE_OLD; +ttmode_enum ttmode = TTMODE_RINGRACERS; UINT8 ttscale = 1; // FRACUNIT / ttscale // ttmode user vars char ttname[9]; @@ -108,6 +106,13 @@ static patch_t *ttcheckers; // *vroom* KART static patch_t *ttkflash; // flash screen */ +static patch_t *kts_bumper; // DR ROBOTNIKS RING RACERS +static patch_t *kts_eggman; // dr. robotnik himself +static patch_t *kts_tails; // tails himself +static patch_t *kts_tails_tails; // tails' tails +static patch_t *kts_electricity[6]; // ring o' electricity +static patch_t *kts_copyright; // (C) SEGA + #define NOWAY #ifdef NOWAY @@ -1688,10 +1693,10 @@ void F_InitMenuPresValues(void) // Set defaults for presentation values strncpy(curbgname, "TITLESKY", 9); curfadevalue = 16; - curbgcolor = 31; - curbgxspeed = (gamestate == GS_TIMEATTACK) ? 0 : titlescrollxspeed; - curbgyspeed = (gamestate == GS_TIMEATTACK) ? 22 : titlescrollyspeed; - curbghide = (gamestate == GS_TIMEATTACK) ? false : true; + curbgcolor = -1; + curbgxspeed = titlescrollxspeed; + curbgyspeed = titlescrollyspeed; + curbghide = false; curhidepics = hidetitlepics; curttmode = ttmode; @@ -1721,24 +1726,26 @@ void F_SkyScroll(INT32 scrollxspeed, INT32 scrollyspeed, const char *patchname) INT32 pw, ph; // scaled by dupz patch_t *pat; INT32 i, j; + INT32 xscrolltimer, yscrolltimer; if (rendermode == render_none) return; + V_DrawFill(0, 0, vid.width, vid.height, 31); + if (!patchname || !patchname[0]) { - V_DrawFill(0, 0, vid.width, vid.height, 31); - return; - } - - if (!scrollxspeed && !scrollyspeed) - { - V_DrawPatchFill(W_CachePatchName(patchname, PU_PATCH_LOWPRIORITY)); return; } pat = W_CachePatchName(patchname, PU_PATCH_LOWPRIORITY); + if (scrollxspeed == 0 && scrollyspeed == 0) + { + V_DrawPatchFill(pat); + return; + } + patwidth = pat->width; patheight = pat->height; pw = patwidth * dupz; @@ -1768,8 +1775,6 @@ void F_SkyScroll(INT32 scrollxspeed, INT32 scrollyspeed, const char *patchname) V_NOSCALESTART, pat); } } - - W_UnlockCachedPatch(pat); } #define LOADTTGFX(arr, name, maxf) \ @@ -1800,15 +1805,30 @@ else \ static void F_CacheTitleScreen(void) { + UINT16 i; + switch(curttmode) { - case TTMODE_OLD: case TTMODE_NONE: break; + case TTMODE_OLD: + break; // idk do we still want this? + + case TTMODE_RINGRACERS: + kts_bumper = W_CachePatchName("KTSBUMPR1", PU_PATCH_LOWPRIORITY); + kts_eggman = W_CachePatchName("KTSEGG01", PU_PATCH_LOWPRIORITY); + kts_tails = W_CachePatchName("KTSTAL01", PU_PATCH_LOWPRIORITY); + kts_tails_tails = W_CachePatchName("KTSTAL02", PU_PATCH_LOWPRIORITY); + for (i = 0; i < 6; i++) + { + kts_electricity[i] = W_CachePatchName(va("KTSELCT%.1d", i+1), PU_PATCH_LOWPRIORITY); + } + kts_copyright = W_CachePatchName("KTSCR", PU_PATCH_LOWPRIORITY); + break; + case TTMODE_USER: { - UINT16 i; lumpnum_t lumpnum; char lumpname[9]; @@ -1932,8 +1952,46 @@ void F_TitleScreenDrawer(void) switch(curttmode) { - case TTMODE_OLD: case TTMODE_NONE: + break; + + case TTMODE_RINGRACERS: + { + const char *eggName = "eggman"; + INT32 eggSkin = R_SkinAvailable(eggName); + skincolornum_t eggColor = SKINCOLOR_RED; + UINT8 *eggColormap = NULL; + + const char *tailsName = "tails"; + INT32 tailsSkin = R_SkinAvailable(tailsName); + skincolornum_t tailsColor = SKINCOLOR_ORANGE; + UINT8 *tailsColormap = NULL; + + if (eggSkin != -1) + { + eggColor = skins[eggSkin].prefcolor; + } + eggColormap = R_GetTranslationColormap(TC_DEFAULT, eggColor, GTC_MENUCACHE); + + if (tailsSkin != -1) + { + tailsColor = skins[tailsSkin].prefcolor; + } + tailsColormap = R_GetTranslationColormap(TC_DEFAULT, tailsColor, GTC_MENUCACHE); + + V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_tails_tails, tailsColormap); + V_DrawFixedPatch(0, 0, FRACUNIT, V_ADD, kts_electricity[finalecount % 6], NULL); + + V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_eggman, eggColormap); + V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_tails, tailsColormap); + + V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_bumper, NULL); + + V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_copyright, NULL); + break; + } + + case TTMODE_OLD: /* if (finalecount < 50) { @@ -2020,6 +2078,8 @@ void F_MenuPresTicker(boolean run) // (no longer) De-Demo'd Title Screen void F_TitleScreenTicker(boolean run) { + F_MenuPresTicker(true); // title sky + if (run) { finalecount++; diff --git a/src/f_finale.h b/src/f_finale.h index a45de5734..82b800f17 100644 --- a/src/f_finale.h +++ b/src/f_finale.h @@ -80,9 +80,9 @@ extern INT32 titlescrollyspeed; typedef enum { TTMODE_NONE = 0, + TTMODE_RINGRACERS, TTMODE_OLD, - TTMODE_USER, - //TTMODE_RINGRACERS + TTMODE_USER } ttmode_enum; #define TTMAX_ALACROIX 30 // max frames for SONIC typeface, plus one for NULL terminating entry