Flip-Screen

From C64-Wiki
Jump to navigationJump to search

The term Flip-Screen, sometimes also Flick-Screen, refers to a display concept in which the game world of a computer game is divided into equally sized, rectangular areas, of which exactly one is displayed on the screen at any given time and traversed by the player character.


General/Definition[edit | edit source]

If the game world of a computer game is so large that it cannot be displayed in its entirety on the screen, the display must be limited to a relevant section — usually the area in which the player-controlled character is currently located. Movements of this character within the game world can then be represented on the screen in two different ways:

  • By scrolling, that is, the game world is moved in small increments — typically pixel- or character-by-character — while the player character remains in a central position on the screen. The character may move only at the edges of the game world toward the edge of the screen, which in this case coincides with the boundary of the game environment.
  • Alternatively, the game world is divided into equally sized, rectangular areas (“screens” or “rooms”), the size of which is chosen so that they, usually along with supplementary information about the game status, fit on the screen. Exactly one fixed position is always displayed within these areas, while the player-controlled characters and other objects can move within them. If the character leaves the currently displayed area, for example by crossing its top, bottom, left, or right edge, the screen switches to the newly entered room and displays this room instead.

Compared to scrolling, the second method, known as “flip-screen,” has the advantage of requiring significantly less processing power. It is therefore widely used on 8-bit systems, especially for computer games with two-dimensional game worlds. Hybrid forms also exist, where, for example, part of the game world is displayed using scrolling and the rest using the flip-screen method.

The gallery below shows, on the left, an example of the game world of the second level in the game "Equinox". For better orientation, the illustration includes a grid and horizontal and vertical spatial coordinates. The game world consists of 16 screens arranged in a grid 6 rooms wide and 4 rooms high; not all spaces in this grid are actually occupied by screens. On the right is an animation from the game in which the player-controlled, spherical cleaning robot cyclically traverses the central rooms with coordinates C2, D2, D3, and C3; during this patrol, the screen changes each time the robot crosses the edge of the currently displayed section of the game world.


Game world of the second level in the game "Equinox"
Patrol through rooms C2, D2, D3, and C3




Examples of Flip-Screen in C64 Games[edit | edit source]

The table below documents a number of games that use the flip-screen display. The size of each game world depends on the number of screens (second column of the table) and, secondly, on the dimensions of the grid within which the screens are typically placed (third column). Not all spaces within this grid necessarily need to be occupied; for example, in the game Elidon, only 300 of the 340 grid spaces are filled. If the game world is intended to have a structure that deviates significantly from a rectangular shape, the deviation is even more pronounced; examples of this are the games Cauldron II (a castle with slender towers occupies 128 of 234 spaces) and Antiriad (a volcano with a pointed peak fills only 69 of 210 spaces).

Although this list is not exhaustive, it allows for a rough chronological classification of the games that use the flip-screen display on the C64: The majority of the programs listed here date from 1985 and 1986 in roughly equal proportions. Exceptions include the game "Aztec", which was released for the Apple II in 1982 and ported to the C64 in 1984 (the game world in this game, a temple with 64 chambers, is still very monotonous and contains numerous bugs), as well as the games "Shamus Case II" and "Quest for Quintana Roo", also released for the C64 in 1984, whose game worlds consisted of 39 and 50 screens, respectively. However, the screens are still relatively manageable and can only be traversed along a small number of predetermined paths. A special case is the game "Stormbringer", released in 1987, as it is the fourth game in a series and therefore uses the same display concept as its predecessors, which were released in 1986.

Game Year Number of Screens Grid of the Map Screen Size Video Mode Room Number Encoding Multiple Rooms Special Features
Antiriad 1986 69 15x14 320x128 Text monocolor/ multicolor Room=0..68, mostly numbered line by line Some lines repeat endlessly when they extend beyond the side margins
Arac 1986 100 304x168 Bitmap monocolor Room=1..100, freely numbered Spaces are not arranged in a grid, but freely positioned
Arc of Yesod 1985 256 16x16 256x168/x176 Text monocolor x-coordinate 0..15, y-coordinate 4..15 and 0..3 The uppermost levels of the labyrinth have y-coordinates 4-15, the levels below have y-coordinates 0-3. The surface of the planet Ariat repeats endlessly when crossing its lateral edges.
Aztec 1984 64 8x8 320x168 Bitmap monocolor Room=0..63, numbered line by line
x=0..7 (in Bit 0..2), y=0..7 (in Bit 3..5)
Screens placed one above the other overlap in a strip 8 pixels high
Cauldron I 1985 63 320x160 Text multicolor Rooms unevenly distributed across 4 underground cave systems The game also features an overworld with horizontal scrolling.
Cauldron II 1986 128 9x26 320x160 Text multicolor Room=0..127, mostly numbered line by line Room 52 is to the right of room 115
Elidon 1985 300 17x20 264x184 Bitmap monocolor x-coordinate 0..16, y-coordinate 0..19
Equinox 1986 8x 16 2x8 / 3x6 / 4x4 / 5x4 / 6x4 / 8x3 256x144 Bitmap monocolor Level=0..7 (in bit 4..6), room=0..15 (in bit 0..3) Landfill in room (0,4) accessible from every level Each level consists of 16 rooms numbered in a row, with the first room in the first row not necessarily being on the far left
Finders Keepers 1985 21 160x160 Text monocolor Rooms are freely and not consecutively numbered The game also features two scrolling labyrinths
Firelord 1986 512 16x32 256x152 Bitmap monocolor Room=0..511, numbered line by line
x=0..15 (in Bit 0..3), y=0..31 (in Bit 4..8)
Room 047 appears to the left of room 048, not quite on the right in the next higher line
Friday the 13th 1985 24 4x6 256x128 Bitmap multicolor x-coordinate 0..3, y-coordinate 0..5 The landscape repeats itself endlessly as you cross the edges
Ghettoblaster 1985 252 288x96 Text multicolor Room=1..252, freely numbered Room 247..252 "Stoney End" appears endless because rooms 247/249/251 and 248/250/252 repeat cyclically. Most streets are circular and can therefore be traversed endlessly.
Heartland 1986 254 256x144 Bitmap monocolor Rooms unevenly distributed across 5 levels The labyrinths of each level repeat endlessly when the edges are crossed
In Search of The Most Amazing Thing 1983 3,062,500 1,750×1,750 320×200 Bitmap monocolor x-coordinate A..Y:1..7:1..10, y-coordinate 1..25:1..7:1..10 Orientation is only possible with the help of navigation devices
Knight Tyme 1986 25 7x5 256x152 Bitmap monocolor Room=0..24, numbered row by row (first row spaceship, next four rows each a planet) Room 24 only appears once the time machine is found, and then replaces room 6
Nodes of Yesod 1985 256 16x16 256x168/x176 Text multicolor x-coordinate 0..15, y-coordinate 0..15 The lunar surface repeats itself endlessly when crossing the lateral edges.
Quest for Quintana Roo 1984 40 (Level 1)
45 (Level 2)
50 (Level 3)
10x7 312x152 Text extended color Room=1..50, numbered column by column Entry via one of 10 temple entrances
Room change only possible from top to bottom via slides
Robin of the Wood 1985 320 16x20 320x144 Bitmap multicolor x-coordinate 0..15, y-coordinate 0..19 The forest area repeats endlessly when crossing the side edges
Sabre Wulf 1985 256 16x16 256x176 Bitmap multicolor Room=0..255, numbered line by line
x=0..15 (in Bit 0..3), y=0..15 (in Bit 4..7)
Shamus Case II 1984 39 9x13 304x184 Text multicolor Room=0..38, numbered line by line Vertical falls sometimes lead into lateral spaces
Spellbound 1986 50 8x7 256x152 Bitmap monocolor Room=1..49, numbered line by line
Room 0=elevator
The elevator (room 0) appears to the left of each floor
Spiky Harold 1986 57 16x4 256x160 Bitmap monocolor Room=0..56, numbered line by line
x=0..15 (in bit 0..3), y=0..3 (in bit 4..7)
Room (0, 0) is again to the right of room (3, 8)
Starquake 1985 512 16x32 320x144 Bitmap monocolor Room=0..511, numbered line by line
x=0..15 (in Bit 0..3), y=0..31 (in Bit 4..8)
Adjacent screens overlap in a strip 64 pixels wide
Stormbringer 1987 52 256x152 Bitmap monocolor Room=0..51, mostly numbered line by line Room 2 Room 2 appears 5 times consecutively, therefore no objects can be placed in this room
Willow Pattern 1985 64 8x8 256x192 Bitmap multicolor Room=0..63, numbered line by line
x=0..7 (in Bit 0..2), y=0..7 (in Bit 3..5)

Examples of hybrid forms that combine scrolling and flick-screen display are the following C64 games:

  • Finders Keepers: The castle garden and the dungeon use character-by-character scrolling, while all other rooms of the castle are displayed via a flick-screen.
  • Cauldron I: The above-ground world is scrolled horizontally pixel by pixel, while the underground spaces use a flick-screen.
  • Pitfall II: Horizontally, the screen switches between a total of 8 columns using a flick screen; vertically, it scrolls pixel by pixel.

The animations in the following gallery illustrate these hybrid forms using typical scenes from the respective games, some of which have been shortened (to save memory).


Partly character-by-character scrolling, partly flick-screen display in the game "Finders Keepers"
Switching between above-ground scrolling (in steps of 1-4 pixels) and underground display via flick screen in the game "Cauldron I"
Horizontal switching between screen columns combined with vertical, pixel-by-pixel scrolling in the game "Pitfall II"




Programming[edit | edit source]

The following section introduces common programming techniques for implementing games with flick-screen displays. These techniques are illustrated with numerous animations, which often display additional information and memory contents on the right edge or in one of the right corners of the screen.

  • In games with flick-screen displays, each screen typically has a unique number. This number can explicitly (by specifying the x- and y-coordinates) or implicitly (by sequentially numbering all screens in a rectangular grid) define the screen's position within the game board. For example, in the C64 game "Elidon" Each screen is explicitly located by an x-coordinate (in the range 0..16) and a y-coordinate (in the range 0..19). In the games "Firelord" and "Starquake", however, the screens are arranged in a rectangular grid of size 16x32 and numbered from 0 to 511; the numbers of adjacent screens differ by 1, those of screens stacked on top of each other by 16 (i.e., by the number of screens per row). Alternatively, the rooms can also be numbered freely; when transitioning between screens, the number of the newly entered screen must then be determined from the direction of movement and the number of the previous room — for example, by looking it up in a list of neighborhood relationships. These relationships do not necessarily have to be bijective; instead, several screens can, for example, have the same left-hand neighbor room. Examples of such an organization of the game world include the C64 game "Ghettoblaster" and the underworld of the game "Cauldron I".


In the game "Elidon", the current screen is addressed by an x- and a y-coordinate, the values ​​of which are stored in two consecutive memory locations (at addresses $040A/$040B).
In the game "Firelord", the 512 rooms of the game board are numbered row by row. The numbers of adjacent screens differ by 1, those of screens stacked on top of each other by 16 (room number at addresses $0062..$0063).
In the game "Ghettoblaster", the screens are numbered randomly. Entering both room 038 and room 252, one enters from the left. 248. However, a direct return from room 248 to room 252 is not possible (room number at address $00FE).


  • The room number usually refers to a compressed representation of the graphic elements that together form that room. This intermediate step, which typically constructs all screens from a limited number of mostly identical and rectangular elements, significantly reduces the storage space required for the game world. However, it can make the screen display appear monotonous and boring if the number of available elements is too small. Some games address this risk by allowing the elements to be displayed in different colors or mirrored. For example, in the screenshot from "Robin of the Wood" (middle image in the gallery below), the tuft of grass highlighted four times appears a fifth time (to the right of the rightmost highlight), this time mirrored. In the game "Starquake", numerous graphic objects can be found in different colors (see the penultimate gallery in this section).


The same plant part appears three times in the game "Starquake"
The same tuft of grass appears four times in the game "Robin of the Wood"
The same flowering tree appears three times in the game "Willow Pattern"


  • In some games, individual lines of screens appear endlessly because the game character, when crossing the left or right edge, re-enters the game board at the same level on the opposite edge. This behavior can be found, for example, on the top level of the C64 games "Nodes of Yesod" and "The Arc of Yesod", in the forest area of ​​"Robin of the Wood", and on some levels of the game "Antiriad". Occasionally, the game board can also be traversed endlessly in a vertical direction, for example in the games "Heartland" and "Friday the 13th".


In the game "Antiriad, the seventh-highest level is open on both sides and can therefore be traversed endlessly. The need to occasionally detour onto neighboring levels makes this path somewhat more varied (current room number at address $005B).
In the game Nodes of Yesod, the lunar surface appears to expand endlessly, but repeats every 16 screens (current room coordinates at address $000B/$000C).
In Friday the 13th, the game world expands endlessly in all directions, but repeats every 4 screens horizontally and every 6 screens vertically (current room coordinates at address $086A/$086B).


  • Some games reward exploring as many screens as possible, typically with bonus points for first entering a room or by accumulating a percentage of the adventure. The score is calculated internally using a statistic, usually a bitmap, in which a bit is set for each room visited. Examples of such a scoring mechanism can be found in the games "Firelord", "Starquake", and "Elidon". The score in "Robin of the Wood" is also determined in this way, with a bit being set in a bitmap for each group of two adjacent rooms.


Bitmap showing statistics of visited screens in the game "Firelord" (at address $0C60..$0C9F, current room number at $0062..$0063)
Statistics of visited screens in the game "Starquake" (at address $0400..$043F, current room number at $00B9..$00BA)
Statistics of visited "room pairs" in the game "Robin of the Wood" (at address $1C70..$1C83, current room coordinates at $0087/$0088)


  • Significant differences between the individual games are evident in the design of the room transition. The range extends from an ugly white flash of the entire screen in the game "Stormbringer" to a separate switching of sprites and background in "Elidon" to the subtle but lengthy fade-in and fade-out in "Firelord" — shown in slow motion in the following gallery.


In the game "Stormbringer", the entire screen flashes white when the screen changes.
In "Elidon", the fairy hangs briefly from a vine during a screen change.
In "Firelord", the screen content is structured as it fades down and rebuilds during screen changes, but remains dark for a long time in between.


  • If items can be collected within the game world, their locations are usually recorded in a table. Each item has its own row in this table, which stores not only the number of the room it is in, but also its exact position within that room (typically in the form of x- and y-coordinates). Items that have already been collected are indicated, for example, by an invalid room number (left and middle animations in the following gallery). In the special case where there is exactly one item to be collected in each room and it cannot be placed elsewhere, the room number does not need to be stored (right animation). Instead, one table row per room is sufficient, in which, for example, a flag indicates whether the item has already been found. An additional table column can contain the object type.


In the game "Finders Keepers", the iron club is moved from room $05 (screen position $0D:0A) to room $02 (screen position $07:10). In the meantime, it is in the possession of the knight, identifiable by the invalid room number $7F (address $6BCF..$6BD1, current room number at $CF69).
In the game "Elidon", the torch is moved from room $06:05 (screen position $0D:14) to room $05:05 (screen position $12:05). In the meantime, it is in the possession of the fairy, identifiable by the invalid x-coordinate $FF (address $052C..$052F, current room coordinates at $040A/$040B).
In the game "Spiky Harold", Harold the hedgehog eats an apple (object type $01) at screen position $08:0D, whereupon the corresponding flag changes from $01 (present) to $00 (eaten) (address $A000-$A003).


  • The game world that the player encounters at the start of the game and enters with the game character does not necessarily have to be fully developed at that point. Even the static elements, such as the objects to be collected, are sometimes only placed after entering the screen where they can be found. For example, in the game "Ghettoblaster", there are 10 music cassettes to collect in a sprawling city. The screens in which they are located are fixed at the start of the game, while the exact front door behind which they are waiting is only determined when the player first enters the respective screen. In the following gallery, the first two animations start from the exact same save file. However, in the second animation, the character Rocking Rodney sets off to the left 20 milliseconds later than in the first animation. Because the internal timer acts as a random number generator, the cassette is suddenly behind the left of the three front doors instead of the right one. Similarly, in the game "Aztec", it's only after clearing away a pile of junk that it's determined whether there's an object underneath that can be collected (right animation). Two games starting from the same saved game state can therefore have completely different outcomes.


In the adjacent screen, the right front door is flashing because a music cassette can be picked up there...
...but if the player character starts walking 20 milliseconds later, the left front door flashes instead
The object found under a pile of rubbish is determined in the game "Aztec" only when it is cleared away


  • An interesting peculiarity can be found in the game "Starquake": Here, the individual screens are actually 256 pixels wide, but are extended on both sides by 32 pixel columns from the left and right adjacent screens, so that each screen ultimately has a total width of 320 pixels. To make this trick less noticeable, the corresponding columns are often given different colors.
    The reason for this phenomenon is likely that "Starquake" was originally developed for the ZX Spectrum (with a screen resolution of 256x192 pixels) and only later ported to the Commodore 64. The successor, "Firelord", which was also first developed for the ZX In contrast, the screens on the Spectrum and later on the Commodore 64 are only 256 pixels wide on both platforms.


Screen from the game "Starquake", illustrating an overlap on the right side
Screen from the game "Starquake", which overlaps with its neighboring screens on the left and right sides
Screen from the game "Starquake", illustrating an overlap on the left side


  • Another special feature of the game "Starquake", as well as its successor "Firelord", is that when leaving a screen, the type and position of the enemies there are temporarily saved, so that the player finds them unchanged upon returning directly. Only when entering a third room is this temporary save overwritten, so that when returning to the first screen, the enemies have to fly in again (left animation of the following gallery). Starquake thus represents a compromise between games where enemies are always found in the same locations in each newly entered room, such as Antiriad, Spiky Harold, Cauldron I, and Cauldron II (middle animation), and games where the location, direction of movement, and speed of all enemies are fixed, so that they move independently of the player character's location within the game world, such as Ghettoblaster or Robin of the Wood (right animation).


In the game "Starquake", the enemies in the previous room remain unchanged if you return directly to it.
In the game "Cauldron II", the enemies always start in the same position upon entering a room.
In the game "Ghettoblaster", opponents move autonomously within the game world and can be located by reconstructing their path taken.


  • Usually, the room number is the only information that stores the player character's global position within the game board. If you want to quickly traverse a game world (for example, to quickly assemble a map from screenshots), you can enter hard-to-reach rooms by using the debugger to overwrite the current room number with the number of the desired room. If the player character then loses a life or briefly moves to the adjacent room, they will subsequently find themselves at the desired location. Occasionally, however, this approach can result in the player character becoming stuck in an obstacle.

Links[edit | edit source]