Fast Scrolling Explained
Guides
/
Fast Scrolling Explained
Updated 5 years ago by stick

It’s been known since the first PSA mission in June 30, 2006 that occasionally you could scroll much faster than intended, but it wasn’t until November 14th, 2017, more than ten years after PSA missions were released, that a consistent method for fast scrolling was found. After much testing between different community members, Randomno found that by holding your mouse down on the scroll arrow, dragging your mouse off the scroll arrow while still holding the mouse button, then letting go of the mouse button, then the next time you attempted to scroll, you would be scrolling at a much faster rate. This could be repeated indefinitely until you are scrolling so fast that it doesn’t look like you’re scrolling at all. However, nobody really knew why and so today I am here to answer this question!

Everything in Club Penguin is made up of SWF files. There are the exported files from flash and you can use multiple SWF files for different aspects of your game. In this case the missions are made up of a bunch of different swf files, the “quest.swf” which is what is loaded when you start the mission, the inventory, the spy phone, the room that you’re in, and the items that you’re holding are all swf files. In this case, we are interested in the “quest.swf” which contains the scroll arrows. These are defined as buttons in flash. This means they have a rollover action, a press action, and a release action. The rollover action starts by calling a function the has already been defined in the main bulk of the code, it move the room on the x axis by any number every frame. But in the rollover action this function doesn’t actually use a number but rather it uses a variable called “scrollAmt” or “scroll amount”. “scrollAmt” is set to a number, in this case at the very start this variable is set to 10. Next we move on to the press action. This function multiples the “scrollAmt” variable by two so that as long as this button is pressed it will scroll the screen by 20 instead of 10. Finally the release action. This resets “scrollAmt” back to its default; 10. It should be noted that the “scrollAmt” never resets unless you’ve released the mouse button on the button or you’ve entered “cutscene mode” where you can no longer scroll.

Here’s where the glitch comes in: flash has a bug where any buttons release action isn’t run if the user releases the button off of where the button is. So if you were to hold the button and release the button off from where the button is, you could keep multiplying “scrollAmt” infinitely (or at least until it doesn’t even look like you’re scrolling anymore).

The question now is: Why did the Club Penguin programmers decide to use variables instead of just using the numbers 10 and 20. They probably did this so if they ever needed to change how fast the player scrolled depending on what room they were in, they could do so easily. However to my knowledge this functionality was ever used.

In summary:

  • Rolling over the arrow moves the room 10 in the x position every frame
  • Clicking on the arrow multiplies the amount scrolled every frame by 2
  • The code to reset the amount scrolled is called when you release the arrow
  • However in flash this code is only called when you release the mouse button on the arrow
  • So by releasing the mouse button off the arrow you can multiply the amount scrolled multiple times