Scaling, like rotation, is a powerful feature for making 2D games that, unfortunately, the VDP does not support. Scaling refers to zooming in and out on planes or sprites. Many of Sega’s classic arcade games such as Space Harrier feature sprite scaling that is used to create a pseudo-3D feel.
The VDP hardware does not support scaling, but as with rotation, developers can simulate the scaling effect through pre-drawn or pre-rendered animation. The tiles are loaded into VRAM and then animated by switching the displayed tile every so-many frames.
Here’s an example of scaling—the Sega logo screen from Gunstar Heroes:
The logo grows larger and then returns to its regular size several times at 60 fps. The rendering of each step is likely done in software when the console is turned on, and all of the frames are loaded into VRAM at once. Together, they occupy almost all of the VRAM’s available space, which indicates how costly this kind of large, smooth scaling can be for memory.
Let’s look at this example from Dynamite Headdy again:
This time, focus on the boss character. This boss is made entirely of sprites. The body of the boss is animated with just four frames but at a rate of 60 fps, so its rotating motion appears quite fluid. If you focus on the spheres that form its limbs, you will notice they scale as they move closer and further away from the screen. The scaling limbs contribute wonderfully to the sense that the platform is round, even though we never see the sides of it.
So how is the scaling done here? If you watch the spheres carefully, you can see that they noticeably shift in size as they move. They are pre-drawn at six different sizes, seen here:
The difference between the size of each is quite large, but since the screen is so busy with movement, the not-so-smooth animation of the scaling does not stick out.
There is another, clever way to achieve scaling. Look at this clip from Yu Yu Hakusho: Makyo Toitsusen:
As the character shifts from the near to the far fighting plane, it becomes smaller in size. Here is the animation in slow motion:
The character seems to be shrinking in on itself, even though certain parts such as the head seem to remain the same in size. This is actually a clever manipulation of sprite positioning. The character is made up of several sprites, and when the character shifts to the far plane, the sprites shift closer together. The following image shows the borders of the sprites on the near and far planes:
The inward-shifting movement of the sprites is gradual as the character changes planes, creating the appearance that the character is shrinking.
In certain games you might encounter effects like the following flame sequence in Battle Mania 2:
The low resolution of the flame sprites gives the impression that they are being scaled from a much smaller size. They might in fact have been up-scaled in software, but the sprite tiles themselves are stored in VRAM just as they are being displayed.
List of Effects:
- Full-Screen Scrolling
- Row / Column Scrolling
- Line Scrolling
- Multi-Jointed Characters
- Tilting / Rotation
- Shadow and Highlight
- Palette Swapping
- Vertical Scaling
- Sprite Raster Effects
Want to post a comment? You can do so here.