rendered paste bodyIndex: src/d_netcmd.c===================================================================--- src/d_netcmd.c (revision 3385)+++ src/d_netcmd.c (working copy)@@ -365,9 +365,15 @@ static CV_PossibleValue_t timelimit_cons_t[] = {{0, "MIN"}, {30, "MAX"}, {0, NULL}}; consvar_t cv_timelimit = {"timelimit", "0", CV_NETVAR|CV_CALL|CV_NOINIT, timelimit_cons_t, TimeLimit_OnChange, 0, NULL, NULL, 0, 0, NULL};+#ifdef SCALECVAR+static CV_PossibleValue_t numlump_cons_t[] = {{1, "MIN"}, {400, "MAX"}, {0, NULL}};+consvar_t cv_numlaps = {"scale", "100", CV_NETVAR|CV_CALL|CV_NOINIT, numlump_cons_t,+ NumLaps_OnChange, 0, NULL, NULL, 0, 0, NULL};+#else static CV_PossibleValue_t numlump_cons_t[] = {{0, "MIN"}, {50, "MAX"}, {0, NULL}}; consvar_t cv_numlaps = {"numlaps", "4", CV_NETVAR|CV_CALL|CV_NOINIT, numlump_cons_t, NumLaps_OnChange, 0, NULL, NULL, 0, 0, NULL};+#endif consvar_t cv_forceskin = {"forceskin", "No", CV_NETVAR|CV_CALL, CV_YesNo, ForceSkin_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_downloading = {"downloading", "On", 0, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};@@ -3059,10 +3065,18 @@ static void NumLaps_OnChange(void) {+#ifdef SCALECVAR+ if (players[0].mo)+ {+ // Set the destscale to resize player.+ players[0].mo->destscale = cv_numlaps.value;+ }+#else if (gametype != GT_RACE) return; // Just don't be verbose CONS_Printf("Number of laps set to %d\n", cv_numlaps.value);+#endif } static void NetTimeout_OnChange(void)Index: src/doomdef.h===================================================================--- src/doomdef.h (revision 3385)+++ src/doomdef.h (working copy)@@ -93,6 +93,16 @@ #endif #ifdef SMASH+#define SCALESIZE // Copied from SRB2JTE made by JTE.+#define SCALESPEEDS // Copied from SRB2JTE made by JTE.+#define SCALEGRAVITY // Copied from SRB2JTE made by JTE.+#define SCALECVAR // Changed "numlaps" to "scale". Disable for RELEASE. Turtle Man++#if (defined SCALESIZE || defined SCALESPEEDS || defined SCALEGRAVITY)+#define FIXEDSCALE(x,y) FixedDiv(FixedMul((y)<<FRACBITS,(x)),100<<FRACBITS)+#define FIXEDUNSCALE(x,y) ((y) == 0 ? 0 : FixedDiv(FixedMul((100<<FRACBITS),(x)),(y)<<FRACBITS))+#endif+ #define VERSION 190 // Game version #define VERSIONSTRING " v1.90.1" #elif defined (BOMB)Index: src/p_map.c===================================================================--- src/p_map.c (revision 3385)+++ src/p_map.c (working copy)@@ -156,6 +156,12 @@ object->momz = spring->info->speed; +#ifdef SCALEGRAVITY+ // Scale spring power too?+ if (object->scale != 100)+ object->momz = FIXEDSCALE(object->momz,object->scale);+#endif+ P_TryMove(object, object->x, object->y, true); if (spring->info->damage)@@ -2087,6 +2093,10 @@ if (!(thing->flags & MF_NOCLIP)) { fixed_t maxstep = MAXSTEPMOVE;+#ifdef SCALESIZE+ if (thing->scale != 100)+ maxstep = FIXEDSCALE(MAXSTEPMOVE, thing->scale);+#endif if (thing->player) {@@ -2160,7 +2170,11 @@ if (!allowdropoff) if (!(thing->flags & (MF_FLOAT)) && thing->type != MT_SKIM && !tmfloorthing+#ifdef SCALESIZE+ && tmfloorz - tmdropoffz > maxstep)+#else && tmfloorz - tmdropoffz > MAXSTEPMOVE)+#endif return false; // don't stand over a dropoff } Index: src/p_mobj.c===================================================================--- src/p_mobj.c (revision 3385)+++ src/p_mobj.c (working copy)@@ -492,6 +492,11 @@ } } +#ifdef SCALEGRAVITY+ if (mo->scale != 100)+ gravityadd = FIXEDSCALE(gravityadd,mo->scale);+#endif+ if (affect) mo->momz += gravityadd/NEWTICRATERATIO; @@ -1521,6 +1526,10 @@ { mo->player->deltaviewheight = mo->momz>>3; }+#ifdef SCALESIZE+ if (mo->scale != 100)+ mo->player->deltaviewheight = FIXEDSCALE(mo->player->deltaviewheight,mo->scale);+#endif } if (mo->eflags & MF_VERTICALFLIP)@@ -1862,18 +1871,34 @@ || rover->flags & FF_SOLID) continue; +#ifdef SCALESIZE if (mobj->eflags & MF_VERTICALFLIP) {+ if (*rover->topheight < (mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale))+ || *rover->bottomheight > (mobj->z + mobj->info->height))+ continue;+ }+ else if (*rover->topheight < mobj->z+ || *rover->bottomheight > (mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale)))+#else+ if (mobj->eflags & MF_VERTICALFLIP)+ { if (*rover->topheight < (mobj->z + (mobj->info->height/2)) || *rover->bottomheight > (mobj->z + mobj->info->height)) continue; } else if (*rover->topheight < mobj->z || *rover->bottomheight > (mobj->z + (mobj->info->height/2)))+#endif continue; +#ifdef SCALESIZE if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z < *rover->bottomheight)+ || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + FIXEDSCALE(mobj->info->height,mobj->scale) > *rover->topheight))+#else+ if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z < *rover->bottomheight) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + mobj->info->height > *rover->topheight))+#endif mobj->eflags |= MF_TOUCHWATER; else mobj->eflags &= ~MF_TOUCHWATER;@@ -1882,8 +1907,13 @@ mobj->watertop = *rover->topheight; mobj->waterbottom = *rover->bottomheight; +#ifdef SCALESIZE+ if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale) > *rover->bottomheight)+ || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + FIXEDSCALE(mobj->info->height/2,mobj->scale) < *rover->topheight))+#else if (((mobj->eflags & MF_VERTICALFLIP) && mobj->z + (mobj->info->height/2) > *rover->bottomheight) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z + (mobj->info->height/2) < *rover->topheight))+#endif { mobj->eflags |= MF_UNDERWATER; @@ -1930,10 +1960,18 @@ // Check to make sure you didn't just cross into a sector to jump out of // that has shallower water than the block you were originally in.+#ifdef SCALESIZE+ if (!(mobj->eflags & MF_VERTICALFLIP) && mobj->watertop-mobj->floorz <= FIXEDSCALE(mobj->info->height,mobj->scale)>>1)+#else if (!(mobj->eflags & MF_VERTICALFLIP) && mobj->watertop-mobj->floorz <= mobj->info->height>>1)+#endif return; +#ifdef SCALESIZE+ if ((mobj->eflags & MF_VERTICALFLIP) && mobj->ceilingz-mobj->waterbottom <= FIXEDSCALE(mobj->info->height,mobj->scale)>>1)+#else if ((mobj->eflags & MF_VERTICALFLIP) && mobj->ceilingz-mobj->waterbottom <= mobj->info->height>>1)+#endif return; if (wasinwater && ((mobj->eflags & MF_VERTICALFLIP && mobj->momz < 0) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->momz > 0)))@@ -1945,8 +1983,13 @@ if ((mobj->eflags & MF_VERTICALFLIP && mobj->momz > 0) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->momz < 0)) {+#ifdef SCALESIZE+ if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz <= mobj->waterbottom)+ || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz >= mobj->watertop))+#else if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(mobj->info->height>>1)-mobj->momz <= mobj->waterbottom) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(mobj->info->height>>1)-mobj->momz >= mobj->watertop))+#endif { // Spawn a splash if (mobj->eflags & MF_VERTICALFLIP)@@ -1970,8 +2013,13 @@ } else if ((mobj->eflags & MF_VERTICALFLIP && mobj->momz < 0) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->momz > 0)) {+#ifdef SCALESIZE+ if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz > mobj->waterbottom)+ || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(FIXEDSCALE(mobj->info->height,mobj->scale)>>1)-mobj->momz < mobj->watertop))+#else if ((mobj->eflags & MF_VERTICALFLIP && mobj->z+(mobj->info->height>>1)-mobj->momz > mobj->waterbottom) || (!(mobj->eflags & MF_VERTICALFLIP) && mobj->z+(mobj->info->height>>1)-mobj->momz < mobj->watertop))+#endif { // Spawn a splash if (mobj->eflags & MF_VERTICALFLIP)@@ -2048,10 +2096,18 @@ if (!(rover->flags & FF_EXISTS) || !(rover->flags & FF_SWIMMABLE) || rover->flags & FF_SOLID) continue; if (*rover->topheight <= mobj->z+#ifdef SCALESIZE+ || *rover->bottomheight > (mobj->z + (FIXEDSCALE(mobj->info->height,mobj->scale) >> 1)))+#else || *rover->bottomheight > (mobj->z + (mobj->info->height >> 1)))+#endif continue; +#ifdef SCALESIZE+ if (mobj->z + FIXEDSCALE(mobj->info->height,mobj->scale) > *rover->topheight)+#else if (mobj->z + mobj->info->height > *rover->topheight)+#endif mobj->eflags |= MF_TOUCHWATER; else mobj->eflags &= ~MF_TOUCHWATER;@@ -2060,7 +2116,11 @@ mobj->watertop = *rover->topheight; mobj->waterbottom = *rover->bottomheight; +#ifdef SCALESIZE+ if (mobj->z + (FIXEDSCALE(mobj->info->height,mobj->scale) >> 1) < *rover->topheight)+#else if (mobj->z + (mobj->info->height >> 1) < *rover->topheight)+#endif mobj->eflags |= MF_UNDERWATER; else mobj->eflags &= ~MF_UNDERWATER;@@ -2129,6 +2189,10 @@ { (void)onmobj; mo->player->deltaviewheight = mo->momz>>3;+#ifdef SCALESIZE+ if (mo->scale != 100)+ mo->player->deltaviewheight = FIXEDSCALE(mo->player->deltaviewheight,mo->scale);+#endif } // P_CameraThinker@@ -3147,14 +3211,64 @@ // void P_SetScale(mobj_t *mobj, USHORT newscale) {+#if (defined SCALEGRAVITY || defined SCALESPEEDS || defined SCALESIZE)+ player_t *player;+#endif if (!mobj || newscale == mobj->scale) return; mobj->scale = newscale;-/*#ifdef SMASH++#ifdef SCALESIZE mobj->radius = FIXEDSCALE(mobj->info->radius,newscale); mobj->height = FIXEDSCALE(mobj->info->height,newscale);-#endif*/+#endif++#if (defined SCALEGRAVITY || defined SCALESPEEDS || defined SCALESIZE)+ if ((player = mobj->player) != NULL)+ {+#ifdef SCALEGRAVITY+ player->jumpfactor = FIXEDSCALE(atoi(skins[player->skin].jumpfactor),newscale);+#endif+#ifdef SCALESPEEDS+ if (FIXEDSCALE(atoi(skins[player->skin].normalspeed),newscale) < MAXMOVE)+ player->normalspeed = FIXEDSCALE(atoi(skins[player->skin].normalspeed),newscale);+ else+ player->normalspeed = MAXMOVE;+ //player->thrustfactor = FIXEDUNSCALE(atoi(skins[player->skin].thrustfactor),newscale);+ //player->accelstart = FIXEDUNSCALE(atoi(skins[player->skin].accelstart),newscale);+ //player->acceleration = FIXEDUNSCALE(atoi(skins[player->skin].acceleration),newscale);+ player->runspeed = FIXEDSCALE(atoi(skins[player->skin].runspeed),newscale);+#endif+#ifdef SCALESIZE+ if (player-players == displayplayer && !twodlevel+#ifdef SCALEMARIO+ && !mariomode+#endif+ )+ {+ if (FIXEDSCALE(atoi(cv_viewheight.defaultvalue),newscale) < 0)+ cv_viewheight.value = 0;+ else+ cv_viewheight.value = FIXEDSCALE(atoi(cv_viewheight.defaultvalue),newscale);++ if (FIXEDSCALE(atoi(cv_cam_dist.defaultvalue),newscale) < 5)+ CV_SetValue(&cv_cam_dist,5);+ else+ CV_SetValue(&cv_cam_dist,FIXEDSCALE(atoi(cv_cam_dist.defaultvalue),newscale));++ if (FIXEDSCALE(atoi(cv_cam_height.defaultvalue),newscale) < 0)+ CV_SetValue(&cv_cam_height,0);+ else+ CV_SetValue(&cv_cam_height,FIXEDSCALE(atoi(cv_cam_height.defaultvalue),newscale));++#define FLOATSCALE(x,y) ((y)*(x)/100.0f)+ CV_Set(&cv_cam_speed,va("%f",FLOATSCALE(atof(cv_cam_speed.defaultvalue),(float)(abs(100-newscale)+100))));+#undef FLOATSCALE+ }+#endif+ }+#endif } // Returns true if no boss with health is in the level.Index: src/p_user.c===================================================================--- src/p_user.c (revision 3385)+++ src/p_user.c (working copy)@@ -144,6 +144,30 @@ { angle >>= ANGLETOFINESHIFT; +#ifdef SCALESPEEDS+ if (mo->scale != 100 && move)+ {+ if (move > 0)+ {+ if (mo->scale < 100 && move-FIXEDSCALE(move,mo->scale) > 0)+ move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+ else if (mo->scale > 100 && FIXEDSCALE(move,mo->scale)-move > 0)+ move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+ else // Uh oh!1...+ move = MAXMOVE;+ }+ else+ {+ if (mo->scale < 100 && move-FIXEDSCALE(move,mo->scale) < 0)+ move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+ else if (mo->scale > 100 && FIXEDSCALE(move,mo->scale)-move < 0)+ move = FIXEDSCALE(move,mo->scale); // Then do the scaled move instead.+ else // Uh oh!1...+ move = -MAXMOVE;+ }+ }+#endif+ mo->momx = FixedMul(move, FINECOSINE(angle)); if (!(twodlevel || (mo->flags2 & MF2_TWOD)))@@ -1933,6 +1957,10 @@ if (player->climbing) { player->mo->momz = FixedDiv(cmd->forwardmove*FRACUNIT,10*FRACUNIT);+#ifdef SCALESPEEDS+ if (player->mo->scale != 100)+ player->mo->momz = FIXEDSCALE(player->mo->momz, player->mo->scale);+#endif } else if (player->powers[pw_sneakers] || player->powers[pw_super]) // super sneakers? movepushforward = cmd->forwardmove * ((thrustfactor*2)*acceleration);@@ -2033,6 +2061,10 @@ // Thrust in the direction of the controls P_InstaThrust(player->mo, player->mo->angle-ANG90, FixedDiv(cmd->sidemove*FRACUNIT,10*FRACUNIT)); player->mo->momz = FixedDiv(cmd->forwardmove*FRACUNIT,10*FRACUNIT);+#ifdef SCALESPEEDS+ if (player->mo->scale != 100)+ player->mo->momz = FIXEDSCALE(player->mo->momz, player->mo->scale);+#endif } else if (player->powers[pw_sneakers] || player->powers[pw_super]) // super sneakers?@@ -2997,7 +3029,11 @@ player->mo->momz = -20*FRACUNIT; // You can create splashes as you fly across water.+#ifdef SCALESIZE+ if (player->mo->z + player->mo->height >= player->mo->watertop && player->mo->z <= player->mo->watertop && player->speed > 9000 && leveltime % (TICRATE/7) == 0)+#else if (player->mo->z + player->mo->info->height >= player->mo->watertop && player->mo->z <= player->mo->watertop && player->speed > 9000 && leveltime % (TICRATE/7) == 0)+#endif S_StartSound(P_SpawnMobj(player->mo->x, player->mo->y, player->mo->watertop, MT_SPLISH), sfx_wslap); // Spawn Sonic's bubbles@@ -4959,6 +4995,11 @@ { if (player->pflags & PF_WALKINGANIM) {+#ifdef SCALESPEEDS // Turtle Man: Change this?+ if (player->speed*FRACUNIT > FIXEDSCALE(12*FRACUNIT,player->mo->scale))+ playerstatetics[player-players][player->mo->state->nextstate] = 2*NEWTICRATERATIO;+ else if (player->speed*FRACUNIT > FIXEDSCALE(6*FRACUNIT,player->mo->scale))+#else #ifdef SMASH // Shuffle's BETTER2DMODE thing. if (twodlevel || (player->mo->flags2 & MF2_TWOD)) {@@ -4978,13 +5019,18 @@ if (player->speed > 12) playerstatetics[player-players][player->mo->state->nextstate] = 2*NEWTICRATERATIO; else if (player->speed > 6)+#endif playerstatetics[player-players][player->mo->state->nextstate] = 3*NEWTICRATERATIO; else playerstatetics[player-players][player->mo->state->nextstate] = 4*NEWTICRATERATIO; } else if (player->pflags & PF_RUNNINGANIM) {+#ifdef SCALESPEEDS+ if (player->speed*FRACUNIT > FIXEDSCALE(52*FRACUNIT,player->mo->scale))+#else if (player->speed > 52)+#endif playerstatetics[player-players][player->mo->state->nextstate] = 1*NEWTICRATERATIO; else playerstatetics[player-players][player->mo->state->nextstate] = 2*NEWTICRATERATIO;@@ -6213,7 +6259,11 @@ && (player->rmomy < 5*FRACUNIT/NEWTICRATERATIO && player->rmomy > -5*FRACUNIT/NEWTICRATERATIO)) {+#ifdef SCALESIZE+ if (player->mo->subsector->sector->special == 979 || (player->mo->ceilingz - player->mo->floorz < player->mo->height))+#else if (player->mo->subsector->sector->special == 979 || (player->mo->ceilingz - player->mo->floorz < player->mo->info->height))+#endif P_InstaThrust(player->mo, player->mo->angle, 10*FRACUNIT); else {@@ -8221,6 +8271,11 @@ else player->mo->height = player->mo->info->height; +#ifdef SCALESIZE+ if (player->mo->scale != 100)+ player->mo->height = FIXEDSCALE(player->mo->height,player->mo->scale);+#endif+ // Crush test... if ((player->mo->ceilingz - player->mo->floorz < player->mo->height) && !(player->mo->flags & MF_NOCLIP))@@ -10728,6 +10783,11 @@ { player->mo->height = FixedDiv(player->mo->info->height, FixedDiv(14*FRACUNIT,10*FRACUNIT)); +#ifdef SCALESIZE+ if (player->mo->scale != 100)+ player->mo->height = FIXEDSCALE(player->mo->height,player->mo->scale);+#endif+ if (player->mo->eflags & MF_VERTICALFLIP) { if ((player->mo->tracer->z + player->mo->tracer->height + player->mo->height + FRACUNIT) <= player->mo->tracer->ceilingz)Index: src/r_things.c===================================================================--- src/r_things.c (revision 3385)+++ src/r_things.c (working copy)@@ -149,8 +149,10 @@ static size_t maxframe; static const char *spritename; +#if !(defined FIXEDSCALE && defined FIXEDUNSCALE) #define FIXEDSCALE(x,y) FixedDiv(FixedMul((y)<<FRACBITS,(x)),100<<FRACBITS) #define FIXEDUNSCALE(x,y) ((y) == 0 ? 0 : FixedDiv(FixedMul((100<<FRACBITS),(x)),(y)<<FRACBITS))+#endif // ========================================================================== //