Complete new intro
This commit is contained in:
parent
f2de738b09
commit
23ab807d68
119
src/f_finale.c
119
src/f_finale.c
|
@ -305,7 +305,7 @@ static void F_NewCutscene(const char *basetext)
|
||||||
// =============
|
// =============
|
||||||
// INTRO SCENE
|
// INTRO SCENE
|
||||||
// =============
|
// =============
|
||||||
#define NUMINTROSCENES 16
|
#define NUMINTROSCENES 17
|
||||||
INT32 intro_scenenum = 0;
|
INT32 intro_scenenum = 0;
|
||||||
INT32 intro_curtime = 0;
|
INT32 intro_curtime = 0;
|
||||||
|
|
||||||
|
@ -325,7 +325,8 @@ static tic_t introscenetime[NUMINTROSCENES] =
|
||||||
16*TICRATE, // Meanwhile, Sonic was tearing across the zones...
|
16*TICRATE, // Meanwhile, Sonic was tearing across the zones...
|
||||||
16*TICRATE + (TICRATE/2), // Sonic knew he was getting closer to the city...
|
16*TICRATE + (TICRATE/2), // Sonic knew he was getting closer to the city...
|
||||||
17*TICRATE, // Greenflower City was gone...
|
17*TICRATE, // Greenflower City was gone...
|
||||||
16*TICRATE + (TICRATE/2), // You're not quite as dead as we thought, huh?...
|
7*TICRATE, // You're not quite as dead as we thought, huh?...
|
||||||
|
8*TICRATE, // We'll see... let's give you a quick warm up...
|
||||||
18*TICRATE + (TICRATE/2), // Eggman took this as his cue and blasted off...
|
18*TICRATE + (TICRATE/2), // Eggman took this as his cue and blasted off...
|
||||||
16*TICRATE, // Easy! We go find Eggman and stop his...
|
16*TICRATE, // Easy! We go find Eggman and stop his...
|
||||||
25*TICRATE, // I'm just finding what mission obje...
|
25*TICRATE, // I'm just finding what mission obje...
|
||||||
|
@ -436,14 +437,22 @@ void F_StartIntro(void)
|
||||||
"had been obliterated.\n#");
|
"had been obliterated.\n#");
|
||||||
|
|
||||||
introtext[12] = M_GetText(
|
introtext[12] = M_GetText(
|
||||||
"\xA7\"You're not quite as gone as we thought,\n"
|
"\xA7\"You're not\n"
|
||||||
"huh?\xBF Are you going to tell us your plan as\n"
|
"quite as gone\n"
|
||||||
"usual or will I \xA8\xB4'have to work it out'\xA7 or\n"
|
"as we thought,\n"
|
||||||
"something?\"\xD2\xD2\n"
|
"huh?\xBF Are you\n"
|
||||||
|
"going to tell\n"
|
||||||
|
"us your plan as\n"
|
||||||
|
"usual or will I\n"
|
||||||
|
"\xA8\xB4'have to work\n"
|
||||||
|
"it out'\xA7 or\n"
|
||||||
|
"something?\"\xD2\xD2\n#");
|
||||||
|
|
||||||
|
introtext[13] = M_GetText(
|
||||||
"\"We'll see\xAA...\xA7\xBF let's give you a quick warm\n"
|
"\"We'll see\xAA...\xA7\xBF let's give you a quick warm\n"
|
||||||
"up, Sonic!\xA6\xC4 JETTYSYNS!\xA7\xBD Open fire!\"\n#");
|
"up, Sonic!\xA6\xC4 JETTYSYNS!\xA7\xBD Open fire!\"\n#");
|
||||||
|
|
||||||
introtext[13] = M_GetText(
|
introtext[14] = M_GetText(
|
||||||
"Eggman took this\n"
|
"Eggman took this\n"
|
||||||
"as his cue and\n"
|
"as his cue and\n"
|
||||||
"blasted off,\n"
|
"blasted off,\n"
|
||||||
|
@ -457,7 +466,7 @@ void F_StartIntro(void)
|
||||||
"\xA7\"Now\xB6 what do we\n"
|
"\xA7\"Now\xB6 what do we\n"
|
||||||
"do?\",\xA9 he asked.\n#");
|
"do?\",\xA9 he asked.\n#");
|
||||||
|
|
||||||
introtext[14] = M_GetText(
|
introtext[15] = M_GetText(
|
||||||
"\xA7\"Easy!\xBF We go\n"
|
"\xA7\"Easy!\xBF We go\n"
|
||||||
"find Eggman\n"
|
"find Eggman\n"
|
||||||
"and stop his\n"
|
"and stop his\n"
|
||||||
|
@ -471,7 +480,7 @@ void F_StartIntro(void)
|
||||||
"\xAA*ARE*\xA9 you\n"
|
"\xAA*ARE*\xA9 you\n"
|
||||||
"doing?\"\n#");
|
"doing?\"\n#");
|
||||||
|
|
||||||
introtext[15] = M_GetText(
|
introtext[16] = M_GetText(
|
||||||
"\xA8\"I'm just finding what mission obje\xAC\xB1...\xBF\n"
|
"\xA8\"I'm just finding what mission obje\xAC\xB1...\xBF\n"
|
||||||
"\xA6""a-\xB8""ha!\xBF Here it is!\xA8\xBF This will only give us\n"
|
"\xA6""a-\xB8""ha!\xBF Here it is!\xA8\xBF This will only give us\n"
|
||||||
"the robot's primary objective.\xBF It says\xAC\xB1...\"\n"
|
"the robot's primary objective.\xBF It says\xAC\xB1...\"\n"
|
||||||
|
@ -499,7 +508,7 @@ void F_StartIntro(void)
|
||||||
CON_ToggleOff();
|
CON_ToggleOff();
|
||||||
F_NewCutscene(introtext[0]);
|
F_NewCutscene(introtext[0]);
|
||||||
|
|
||||||
intro_scenenum = 9;
|
intro_scenenum = 0;
|
||||||
finalecount = animtimer = skullAnimCounter = stoptimer = 0;
|
finalecount = animtimer = skullAnimCounter = stoptimer = 0;
|
||||||
timetonext = introscenetime[intro_scenenum];
|
timetonext = introscenetime[intro_scenenum];
|
||||||
}
|
}
|
||||||
|
@ -570,18 +579,21 @@ static void F_IntroDrawScene(void)
|
||||||
background = W_CachePatchName("INTRO5", PU_CACHE);
|
background = W_CachePatchName("INTRO5", PU_CACHE);
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
if (intro_curtime >= 7*TICRATE)
|
background = W_CachePatchName("REVENGE", PU_CACHE);
|
||||||
background = W_CachePatchName("CONFRONT", PU_CACHE);
|
cx = 208;
|
||||||
else
|
cy = 8;
|
||||||
background = W_CachePatchName("REVENGE", PU_CACHE);
|
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
|
background = W_CachePatchName("CONFRONT", PU_CACHE);
|
||||||
|
cy += 48;
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
background = W_CachePatchName("TAILSSAD", PU_CACHE);
|
background = W_CachePatchName("TAILSSAD", PU_CACHE);
|
||||||
bgxoffs = 144;
|
bgxoffs = 144;
|
||||||
cx = 8;
|
cx = 8;
|
||||||
cy = 8;
|
cy = 8;
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 15:
|
||||||
if (intro_curtime >= 7*TICRATE)
|
if (intro_curtime >= 7*TICRATE)
|
||||||
background = W_CachePatchName("SONICDO2", PU_CACHE);
|
background = W_CachePatchName("SONICDO2", PU_CACHE);
|
||||||
else
|
else
|
||||||
|
@ -589,7 +601,7 @@ static void F_IntroDrawScene(void)
|
||||||
cx = 224;
|
cx = 224;
|
||||||
cy = 8;
|
cy = 8;
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 16:
|
||||||
background = W_CachePatchName("INTRO7", PU_CACHE);
|
background = W_CachePatchName("INTRO7", PU_CACHE);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -731,15 +743,32 @@ static void F_IntroDrawScene(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
INT32 sonicx = (timetonext >> 2);
|
tic_t sonicdelay = max(0, timetonext - 16*TICRATE);
|
||||||
INT32 tailsx = 32 + 4*max(0, timetonext - (9*TICRATE >> 1));
|
tic_t tailsdelay = max(0, timetonext - (9*TICRATE >> 1));
|
||||||
INT32 knucklesx = 96 + 4*max(0, timetonext - (5*TICRATE >> 1));
|
tic_t knucklesdelay = max(0, timetonext - (5*TICRATE >> 1));
|
||||||
|
INT32 sonicx = (timetonext >> 2) + min(sonicdelay, TICRATE >> 1) * sonicdelay;
|
||||||
|
INT32 tailsx = 32 + min(tailsdelay, TICRATE >> 1) * tailsdelay;
|
||||||
|
INT32 knucklesx = 96 + min(knucklesdelay, TICRATE >> 1) * knucklesdelay;
|
||||||
INT32 tailsy = 12 + P_ReturnThrustX(NULL, finalecount * ANGLE_22h, 2);
|
INT32 tailsy = 12 + P_ReturnThrustX(NULL, finalecount * ANGLE_22h, 2);
|
||||||
INT32 knucklesy = 48 - (timetonext >> 3);
|
INT32 knucklesy = 48 - (timetonext >> 3);
|
||||||
INT32 skyx = 2 * finalecount % 320;
|
INT32 skyx, grassx;
|
||||||
INT32 grassx = 16 * finalecount % 320;
|
|
||||||
menuanimtimer = animtimer; // Reusing this variable for the intro to fix the scrolling sky, better than changing the function around.
|
if (timetonext >= 0 && timetonext < 18)
|
||||||
//F_SkyScroll(80*4, 0, "INTROSKY");
|
{
|
||||||
|
deplete -= 16;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stoptimer = finalecount;
|
||||||
|
deplete = 96;
|
||||||
|
}
|
||||||
|
skyx = 2 * stoptimer % 320;
|
||||||
|
grassx = 16 * stoptimer % 320;
|
||||||
|
sonicx += deplete;
|
||||||
|
tailsx += sonicx;
|
||||||
|
knucklesx += sonicx;
|
||||||
|
sonicx += P_ReturnThrustX(NULL, finalecount * ANG10, 3);
|
||||||
|
|
||||||
V_DrawSmallScaledPatch(skyx, 0, 0, (patch = W_CachePatchName("INTROSKY", PU_CACHE)));
|
V_DrawSmallScaledPatch(skyx, 0, 0, (patch = W_CachePatchName("INTROSKY", PU_CACHE)));
|
||||||
V_DrawSmallScaledPatch(skyx - 320, 0, 0, patch);
|
V_DrawSmallScaledPatch(skyx - 320, 0, 0, patch);
|
||||||
W_UnlockCachedPatch(patch);
|
W_UnlockCachedPatch(patch);
|
||||||
|
@ -747,26 +776,6 @@ static void F_IntroDrawScene(void)
|
||||||
V_DrawSmallScaledPatch(grassx - 320, 0, 0, patch);
|
V_DrawSmallScaledPatch(grassx - 320, 0, 0, patch);
|
||||||
W_UnlockCachedPatch(patch);
|
W_UnlockCachedPatch(patch);
|
||||||
|
|
||||||
if (timetonext == 6)
|
|
||||||
{
|
|
||||||
stoptimer = finalecount;
|
|
||||||
animtimer = finalecount % 16;
|
|
||||||
}
|
|
||||||
else if (timetonext >= 0 && timetonext < 6)
|
|
||||||
{
|
|
||||||
animtimer = stoptimer;
|
|
||||||
deplete -= 32;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
animtimer = finalecount % 16;
|
|
||||||
deplete = 96;
|
|
||||||
}
|
|
||||||
sonicx += deplete;
|
|
||||||
tailsx += sonicx;
|
|
||||||
knucklesx += sonicx;
|
|
||||||
sonicx += P_ReturnThrustX(NULL, finalecount * ANG10, 3);
|
|
||||||
|
|
||||||
if (finalecount & 1)
|
if (finalecount & 1)
|
||||||
{
|
{
|
||||||
// Sonic
|
// Sonic
|
||||||
|
@ -836,6 +845,7 @@ static void F_IntroDrawScene(void)
|
||||||
W_UnlockCachedPatch(patch);
|
W_UnlockCachedPatch(patch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Black bars to hide the sky on widescreen
|
||||||
V_DrawFill(-80, 0, 80, 256, 31);
|
V_DrawFill(-80, 0, 80, 256, 31);
|
||||||
V_DrawFill(BASEVIDWIDTH, 0, 80, 256, 31);
|
V_DrawFill(BASEVIDWIDTH, 0, 80, 256, 31);
|
||||||
}
|
}
|
||||||
|
@ -887,21 +897,6 @@ static void F_IntroDrawScene(void)
|
||||||
if (animtimer)
|
if (animtimer)
|
||||||
animtimer--;
|
animtimer--;
|
||||||
|
|
||||||
/*if (intro_scenenum == 7 && intro_curtime > 7*TICRATE)
|
|
||||||
{
|
|
||||||
patch_t *sgrass;
|
|
||||||
|
|
||||||
if (intro_curtime >= 7*TICRATE + ((TICRATE/7)*2))
|
|
||||||
sgrass = W_CachePatchName("SGRASS4", PU_CACHE);
|
|
||||||
else if (intro_curtime >= 7*TICRATE + (TICRATE/7))
|
|
||||||
sgrass = W_CachePatchName("SGRASS3", PU_CACHE);
|
|
||||||
else
|
|
||||||
sgrass = W_CachePatchName("SGRASS2", PU_CACHE);
|
|
||||||
V_DrawScaledPatch(123, 4, 0, sgrass);
|
|
||||||
|
|
||||||
W_UnlockCachedPatch(sgrass);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
V_DrawString(cx, cy, V_ALLOWLOWERCASE, cutscene_disptext);
|
V_DrawString(cx, cy, V_ALLOWLOWERCASE, cutscene_disptext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -936,7 +931,7 @@ void F_IntroDrawer(void)
|
||||||
F_RunWipe(99,true);
|
F_RunWipe(99,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (intro_scenenum == 15)
|
else if (intro_scenenum == 16)
|
||||||
{
|
{
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
{
|
{
|
||||||
|
@ -1009,7 +1004,7 @@ void F_IntroDrawer(void)
|
||||||
F_WipeEndScreen();
|
F_WipeEndScreen();
|
||||||
F_RunWipe(99,true);
|
F_RunWipe(99,true);
|
||||||
}
|
}
|
||||||
else if (intro_scenenum == 12 && intro_curtime == 7*TICRATE)
|
/*else if (intro_scenenum == 12 && intro_curtime == 7*TICRATE)
|
||||||
{
|
{
|
||||||
patch_t *confront = W_CachePatchName("CONFRONT", PU_CACHE);
|
patch_t *confront = W_CachePatchName("CONFRONT", PU_CACHE);
|
||||||
|
|
||||||
|
@ -1021,8 +1016,8 @@ void F_IntroDrawer(void)
|
||||||
|
|
||||||
F_WipeEndScreen();
|
F_WipeEndScreen();
|
||||||
F_RunWipe(99,true);
|
F_RunWipe(99,true);
|
||||||
}
|
}*/
|
||||||
if (intro_scenenum == 14 && intro_curtime == 7*TICRATE)
|
if (intro_scenenum == 15 && intro_curtime == 7*TICRATE)
|
||||||
{
|
{
|
||||||
patch_t *sdo = W_CachePatchName("SONICDO2", PU_CACHE);
|
patch_t *sdo = W_CachePatchName("SONICDO2", PU_CACHE);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue