Matt Hughson Profile picture
Game Programmer @CoalitionGears | #GameDev on @Gearsofwar | #IndieDev on the Side (#Retrobrew, #WitchNWiz, #FromBelow) | #PICO8 #NESDEV #ファミコン #NES #gbdev

Jan 15, 2023, 11 tweets

Implementing scrolling on the NES is difficult. Because of that, I've been thinking about what different platformer games have done, and which battles I want to fight with my #nesdev game.

I'll document all the different *types* of scrolling I can think of in this thread.

::Full 8-Way Scrolling (Blaster Master)::

Levels extend in all directions with a maze-like layout, not favoring any one direction in particular. Levels are much larger than can fit in nametable, and employ level streaming.

::Limited 8-Way Scrolling (Mario 3)::

SMB 3 has some levels with 8 way scrolling, but are still designed with a bias towards horizontal movement. Up/Down is reserved for "hidden objects" and "secrets".

Camera is designed to only scroll up if player is doing a highjump/flying.

::Isolated 2-Way Scrolling (Metroid)::

Metroid supports both vertical and horizontal scrolling, but never at the same time. A section is either moving up/down or left/right.

::Horizontal Scrolling + Vertical Screens (Mega Man)::

In this type, there is a series of horizontally scrolling rooms (sometimes 2-way & sometimes 1-way), with single screen *vertical* connections. This creates some sense of verticality without actual vertical scrolling.

::Stacked Horizontal Scrolling (Super Mario Bros)::

Simple horizontally scrolling maps are "stacked" on top over each other creating the sense of High, Mid, and Low areas, but without any actual vertical scrolling.

Source: nesmaps.com/maps/SuperMari…

::Double Wide Horizontal Scrolling (Lizard)::

Lizard takes a novel approach and only scrolls within the available VRAM. This limits rooms to 512x240, but the dev does not need to implement logic for streaming in levels during gameplay.

Lode Runner (NES) also did this.

Brad covers Lizard's scrolling into more detail here:

kickstarter.com/projects/11010…

Did I miss any? Let me know and I'll add them to the thread!

Of course, not until *after* writing all this, I realized @bbbradsmith has done it already, and in great detail! Check out this update from his Lizard kickstarter:

kickstarter.com/projects/11010…

@UnrollHelper unroll

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling