diff --git a/src/p_setup.c b/src/p_setup.c index c6fe3da94..693d49a71 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -5750,7 +5750,7 @@ static void P_ConvertBinaryLinedefTypes(void) case 500: //Scroll front wall left case 501: //Scroll front wall right lines[i].args[0] = 0; - lines[i].args[1] = (lines[i].special == 500) ? -1 : 1; + lines[i].args[1] = ((lines[i].special == 500) ? -1 : 1) * (1 << SCROLL_SHIFT); lines[i].args[2] = 0; lines[i].special = 500; break; diff --git a/src/p_spec.c b/src/p_spec.c index 8441faacb..b0586f2da 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -8231,13 +8231,20 @@ static void P_SpawnScrollers(void) case 500: { if (l->args[0] != TMSD_BACK) - Add_Scroller(sc_side, -l->args[1] << FRACBITS, l->args[2] << FRACBITS, -1, l->sidenum[0], accel, 0); + { + Add_Scroller(sc_side, -l->args[1] << (FRACBITS - SCROLL_SHIFT), l->args[2] << (FRACBITS - SCROLL_SHIFT), -1, l->sidenum[0], accel, 0); + } + if (l->args[0] != TMSD_FRONT) { if (l->sidenum[1] != 0xffff) - Add_Scroller(sc_side, -l->args[1] << FRACBITS, l->args[2] << FRACBITS, -1, l->sidenum[1], accel, 0); + { + Add_Scroller(sc_side, -l->args[1] << (FRACBITS - SCROLL_SHIFT), l->args[2] << (FRACBITS - SCROLL_SHIFT), -1, l->sidenum[1], accel, 0); + } else + { CONS_Debug(DBG_GAMELOGIC, "Line special 500 (line #%s) missing back side!\n", sizeu1(i)); + } } break; }