Cholo

From C64-Wiki
Jump to navigationJump to search
Cholo
Title screen of the game
Title screen of the game
Game No. 552
Voting 7.50 points, 2 votes
Developer Glyn Williams, Joey Headen
Company Solid Image
Publisher Firebird
Release 1987
Platform BBC Micro, Amstrad CPC, C64, ZX Spectrum
Genre Simulation, Adventure
Gamemode Single player
Operation Joystick Keyboard
Media Datassette Diskette
Language Language:english Language German
Information ´


Description[edit | edit source]

The game "Cholo" places the player in the metropolis of the same name, destroyed by a nuclear war. Through the ruins of this city, the player must control a small robot named "Rizzo" to free the survivors trapped in a bunker after the radioactive fallout subsides. How this is to be accomplished is completely unclear at the start of the game; however, Rizzo can dock with various computers in the city's buildings and thus obtain text files containing valuable clues. Furthermore, some of these computers contain programs that can enhance the robot's abilities.

On his journey through the city of Cholo, the player must beware of other robots that classify Rizzo as an enemy and sometimes even attack him. With some skill, however, the player can take control of some of these robots and use them to complete his mission. Since these robots differ in their capabilities, such as their weaponry or their resistance to radioactive radiation, the use of different robot types is even essential for specific tasks.

If the player manages to break open the door of the nuclear bunker using clues found and with the help of the robots they control, their mission is successfully completed: The surviving remnants of humanity are freed and can now repopulate Earth from Cholo.

Backstory[edit | edit source]

The game includes a comprehensive manual, approximately DIN A5 size, which explains in detail how to control the robot, dock with computers, and take over enemy robots. However, the largest part of the manual consists of the game's more than 40-page backstory, which is excitingly written and well worth reading. The following sections briefly summarize this backstory of the game; For those who wish to delve deeper into "Cholo", reading the backstory in the original user manual is recommended.

As a result of a nuclear war, the Earth is devastated, and only the inhabitants of the metropolis Cholo have survived the inferno in a state-of-the-art, underground radiation shelter. For centuries, this remaining remnant of humanity has waited, generation after generation, for the radioactive radiation on the Earth's surface to subside sufficiently so that they can finally leave their shelter and repopulate the Earth. This makeshift community is led by a highly advanced computer, which, although invisible, communicates with individual shelter residents via an intercom system. A large number of doctors and psychologists ensure that the people accept their fate and willingly pass the time with computer games and other distractions.

One exception is a small team of maintenance technicians who keep the bunker's technical infrastructure running. Jared, the story's twenty-four-year-old protagonist, is also part of this team. While he enjoys playing computer games and even achieves top scores in the popular game "RAT", his membership in the maintenance team fulfills his lifelong dream: he can use his interest in technology to serve the community instead of sitting idly by.

One day, the monitoring system detects an attempted sabotage of the bunker's infrastructure. The only possible culprits are the members of the maintenance team, and suspicion falls on Jared. Although he protests his innocence, a lie detector test identifies him as the perpetrator. Due to the severity of the offense, Jared is expelled from the community and taken to a zone from which there is no return.

There, he encounters the central computer, which reveals the true situation of the bunker's inhabitants: On the Earth's surface, radioactive radiation has been at a safe level for centuries, so that human life outside the shelter would have been possible again long ago. However, the bunker door can only be opened from the outside, and the communication system that was supposed to transmit the corresponding command to the robots standing by above ground was destroyed in the war. The only chance of rescue is a small "Rat"-type robot on the Earth's surface, which can be remotely controlled from a terminal next to the central computer.

It eventually turns out that the previously reported sabotage attempt was merely a ruse to isolate Jared from the other bunker inhabitants without arousing their suspicion or revealing their true situation. Due to his exceptional performance in the computer game "RAT" — which is actually a simulator for controlling this small robot — Jared is destined to use his skills to liberate humanity. And, of course, the player now takes on Jared's role, while his Commodore 64 transforms into the terminal that establishes the connection to the rescue robot on the surface.

Design[edit | edit source]

Throughout the game, a control terminal with various display elements is visible on the screen. The largest portion of the screen, located in the upper left corner, is a 160 × 136 pixel monitor that displays a wireframe view of either a selection of available robots or — while using such a device — the image transmitted by the robot's built-in camera. Below this monitor, four display fields show which additional programs and text files are currently stored in the robot's memory.

In addition, the terminal has a text screen measuring 16 x 13 characters (128 x 104 pixels) that displays messages about the game's progress, a radar screen measuring 64 x 64 pixels, and several smaller measuring devices (compass, radiation meter, and damage indicator).


At the start of the game, the player controls only a small "RAT" type robot.
Patrol through the ruins of Cholo...
...and through the deserted central computer building.



Graphics[edit | edit source]

The graphics are displayed entirely in monochrome mode (bitmap at address $E000, screen memory at $CC00). Sprites are not used by the program. The only special effect used by the VIC is pixel-by-pixel vertical scrolling, which causes the screen to flicker whenever the player-controlled robot collides with an obstacle.

The refresh rate of the three-dimensional environment appears exceptionally low, especially compared to today's standard frame rates. However, an analysis of the machine code shows that the developers of "Cholo" clearly made an effort to utilize the Commodore 64's processing power to the fullest. The wireframe representation is first built compactly in the address range $AE00–$B89F and then — thanks to loop unrolling and combined copying and deleting — transferred to the corresponding lines of the bitmap memory at the maximum possible speed.

Sound[edit | edit source]

The game's sound output is very sparse and limited to simple, monophonic background music for in-game events. Only on a few occasions do more complex sound sequences play (see section "Theme").

Hints[edit | edit source]

The objective of the game "Cholo" is only vaguely outlined in the backstory included with the program: The inhabitants of the city of Cholo, trapped in a radiation bunker after a nuclear war, are to be freed by opening the bunker entrance — and the only tool initially available is a small, lightly armored robot of the "Rat" type named "Rizzo", armed with an ion cannon. At the start of the game, this robot is located in the central computer building, southwest of the intersection of Main Street and Bridge Street, which can be found on the map included with the game.

The player must now figure out the steps required to complete the task, as initially they know neither the location of the bunker nor how to open it. The manual, however, explains the first steps in considerable detail and with specificity, in addition to the control commands:

For one thing, Rizzo can take control of other robots by first stunning them with gunfire, then colliding with them, and finally logging in by entering a password. For example, upon leaving the central computer building where Rizzo is located at the beginning of the game, he immediately encounters a "Hacker" type robot, which he can hijack in this way (left animation in the following gallery) — but when firing, one should only fire as many shots as absolutely necessary to avoid unintentionally destroying the targeted robot (middle animation).

On the other hand, some buildings in Cholo contain computers with interesting programs and text files, so you should also look for these. For example, in the southwest corner of the central computer building is the computer "Cyber1", which you can dock to by gently nudging it to read the text file containing the passwords for all robots (right animation).


If you leave the building immediately at the start of the game, the "Hacker" robot "Igor" is easy prey.
When taking over other robots, you shouldn't overdo it (literally!).
The first thing you should do is log in to the computer "Cyber1" to get the list of passwords.



Screen Layout[edit | edit source]

The following screenshot shows and explains the screen layout while controlling a robot. In menu mode, all robots under the player's control are displayed in turn in the upper left corner of the monitor and can be selected for the next action (see, for example, the left animation in the section "Design").

Typical scene from the game



Controls[edit | edit source]

"Cholo" can be controlled either with a joystick in Port 2 or with the keyboard. The keyboard is required for some functions, such as activating menu mode, toggling pause mode, loading and saving the game, and special robot control commands:

  • RESTORE : Switch to menu mode
  • CRSR ⇓ : Enable pause mode
  • CRSR ⇒ : Disable pause mode

Immediately after starting the program, the game is in menu mode; The player can therefore take direct control of their only robot at that time, "Rizzo", of the "Rat" type, by pressing the fire button.

Commands only in menu mode:

  • F1 : Load a previously saved game (then enter the filename, which can be up to 6 characters long, optionally press RETURN , and confirm with Y ).
  • F3 : Save the current game (then enter the filename, which can be up to 6 characters long, optionally press RETURN , and confirm with Y ).
  • Joystick left or Z : Select previous Rampak
  • Joystick right or X : Select next Rampak
  • SPACE : Activate currently selected Rampak (read text file or execute program)
  • Joystick forwards or ; : Show previous robot
  • Joystick backwards or / : Show the next robot
  • press fire button or RETURN : Select the currently displayed robot and return to the game

When connected to a computer or robot:

  • Joystick forwards/Joystick backwards or ; /\ : Select between the options "Read" (read file from computer/robot), "Write" (write file to computer/robot), and "Disconnect"
  • Joystick left/Joystick right or X /Z : Select between the files on the computer/robot
  • press fire button or RETURN : Confirm a selected option/file

Controlling the robots during the game:

  • Joystick left or X : Turn left
  • Joystick right or Z : Turn right
  • Joystick forwards or ; : Accelerate
  • Joystick backwards or \ : Decelerate (on ships, also: accelerate backward)
  • press fire button or RETURN : Fire ion cannon (if equipped)

Additional keys for controlling the Flyeye:

  • RETURN : Up (fly higher)
  • SPACE : Down (fly lower)
  • < : Move left
  • > : Move right
  • = : Rotate camera upward
  •  : Rotate camera downwards
  • Joystick left or Z : Rotate left
  • Joystick right or X : Turn right

Camera control keys:

  • Joystick forwards or ; : Turn down
  • Joystick backwards or \ : Turn up
  • Joystick left or Z : Turn left
  • Joystick right or X : Turn right

Aircraft control keys:

  • Joystick forwards or ; : Descend
  • Joystick backwards or \ : Climb
  • Joystick left or Z : Turn left
  • Joystick right or X : Turn right
  • RETURN : Accelerate (increase thrust)
  • SPACE : Slow down (less thrust)

Tips[edit | edit source]

  • At the start of your very first game, you should go to the computer "Cyber1" inside the central computer building and connect to it to obtain the list of passwords (left animation in the gallery below). Since these passwords do not change from game to game, you can write them down and then assign them to the individual robots one by one.
  • If you want to log in to a robot and don't yet know which password on the list is correct for that robot, try entering the passwords from the list one after the other after the initial contact. If the robot disconnects after three incorrect passwords, reconnect and you will then have three more login attempts. Before doing so, you should stun the targeted robot with at least two shots so that it doesn't revive prematurely and escape, thus avoiding further login attempts.
  • Extra caution is required near water, on islands, bridges, or piers: If a robot falls into the water, it is lost. Therefore, it is best to save your game before piloting a robot in such locations.
  • Each robot type has special abilities that it can use in specific situations. These abilities can often be guessed from the robot's name or type: "DrJohn", for example, a "Doctor" robot, can revive robots that have been incapacitated by gunfire from security robots (left animation in the gallery below).
  • According to the manual, the bunker entrance is shaped like a tetrahedron — and such a building, albeit heavily guarded, can be found at the north end of "Main Street" (middle animation).
  • The "Flyeye" robot "Anneka" can be used to explore the area around Cholo, provided the radiation levels allow it — either for orientation during subsequent actions or simply for fun (right illustration).
  • If you want to take a break, you should, if possible, not switch to pause mode, but instead transfer control to a robot in a safe location (for example, to Anneka in the city center). This way, the self-healing mechanism can continue to function for all robots. However, this mechanism cannot fully restore the robots: While the damage scale ranges from 0 (fully intact) to 55 (severely damaged), the mechanism only reduces the damage by one unit approximately every 25 seconds until the minimum of 10 units is reached.
  • How sensitive a robot is to gunfire and how quickly it can be stunned varies from type to type. Damage to the explosive robot "Koke" increases by 6 units per hit, to the hacker "Igor" and the Doctor "DrJohn" by 4 units, to the Flyeye "Anneka" and the guard robots by 2, and to the heavily armored "Gort" by only 1.


The "Doctor" robot "DrJohn" can revive a colleague destroyed by guard robots.
According to the manual, the bunker entrance is in the shape of a tetrahedron — and is obviously heavily guarded.
The Flyeye "Anneka" can be used to explore the area around Cholo — for example, the lighthouse in the southeast.




Solution[edit | edit source]

The path to victory, from the moment you take control of the small "Rat" robot "Rizzo" to freeing the rest of humanity from the radiation bunker, is divided into numerous steps, which can be divided into two categories:

  • Steps that are required in every game, such as taking control of the Control over certain other robots. These steps are explained in the following description in regular (even) type.
  • Occasionally, it is also necessary to gather information needed later in the game, such as passwords or hints. These do not change from game to game and therefore only need to be obtained once and then recorded for all subsequent games. These steps are explained below in italic type.They can also be omitted entirely if the relevant information is obtained from the following description of the solution.

Map[edit | edit source]

The game includes a pre-war map (from March 2611), to which all location information in the following description refers (see section "Accessories"). The following illustration shows a reduced version of this map, on which the positions of all computers (green) and the locations where the robots needed in the game are usually found (red) are marked. A blue marker also indicates the entrance to the nuclear fallout shelter where the inhabitants of Cholo are trapped.


Map of Cholo showing the usual locations of the robots and the locations of the computers.



Plans[edit | edit source]

The computers, which contain upgrade programs for the robots and text files with valuable clues, are all located in various buildings throughout Cholo. Maps are very helpful for locating these computers and the robots sometimes stored there, as the radar is inactive inside the buildings and only the compass can be used for orientation.

A total of five buildings in Cholo can be entered, with the entrance always located on the north side and only the ground floor accessible. The following maps show the internal layout of these buildings. The maps only show the elements relevant for navigation: obstacles in the form of walls, desks (represented as white rectangles), and dead robots, as well as the computers and robots required to complete the game. Elements that do not affect the movements of the player-controlled robot (windows, slender columns, and ceiling lamps) are not shown.



Central Computer Building
(green: Computer "Cyber1")

Church on Logic Island
(green: Computer "Cyber2")

Building at the golf course in the northeast
(green: Computer "Cyber3", red: Robot "Gort", blue: dead robots)




Central building on the unmapped island
(green: Computer "Cyber4", red: Camera "Ridley" and Robot "Koke")

Alan M. Turing Science Institute
(green: Computer "Cyber5")



Step by Step[edit | edit source]

The game begins with the player taking control of the small "Rat"-type robot "Rizzo". It is located inside the Central Computer Building, facing north.

  • The solution to "Cholo" essentially consists of taking control of more and more robots in the city of the same name and ultimately using them to free humanity from its radiation bunker. Each robot is protected against unauthorized login attempts by a five- or six-character password. Additional programs, found on computers in various buildings, allow the robots to acquire extra abilities.
    The list of these passwords is stored on the computer 'Cyber1', located in the southeast corner of the central computer building. The player must therefore visit this computer once and connect their robot to it. They then copy the "PasslText" file stored on the computer to one of their Rampaks, disconnect from the computer, and then display the file's contents on the small text screen. By trial and error (see section "Tips"), he gradually assigns the displayed passwords to the various robots.
    The following table lists the individual robots with their name, type, password, initial location, and special properties. Only the password for the hacker "Igor" ("PLUGIN") is actually needed in the game. All other passwords are determined automatically, provided that either Igor or another robot equipped with the appropriate hacking capabilities is used for takeover. The location information refers to the place names on the included map.
Image Name Type Password Armed? Location Remarks
Rizzo Rat REBELS Yes In the central computer building
(southwest corner of the intersection of Main Street and Bridge Street)
Under the player's control from the start of the game
Gort Leady KLAATU Yes In the low-rise building south of the golf course (far northeast) Insensitive to radioactivity
Heavily armored, therefore difficult to stun (40 shots)
Koke Cola LOREAN No In the middle building of the unmapped island (far southeast) Insensitive to radioactivity
Explosive, therefore do not shoot more often than necessary when taking it over
Igor Hacker PLUGIN No In front of the Central Computer Building
(Bridge Street, west of the intersection of Main Street and Bridge Street)
Guesses passwords from robots
Finds hidden files on computers
Ridley Camera LEGEND No In the middle building of the uncharted island
(far southeast)
Reveals the location of the uncharted island on the radar screen
Only allows a narrow passage to the right to computer "Cyber4"
DrJohn Doctor STETHO No Between the pyramids east of the bridge Moves very fast
Can revive robots destroyed by guards upon contact
Anneka Flyeye BRAZIL No Next to the central computer building
(Main Street, south of the Main Street/Bridge Street intersection)
Can fly and therefore also cross bodies of water
Felini Camera ACTION No On the middle building of the uncharted island
(far southeast)
Reveals the location of the uncharted island on the radar screen
Aviata Plane FLYBOY No At the Cassandra Aerodrome airfield (far northwest) Boarding via the nose of the aircraft
Queen Ship FREDDY No At the pier east of the harbor
(in the southwest)
Access via teleporter at the pier
Skum01 Guard PHILBY Yes Patrolls numerous locations Not required to solve the game
Skum02 Guard MCLEAN Yes Patrolls numerous locations Not required to solve the game
Skum03 Guard BLUNT Yes Patrolls numerous locations Not required to solve the game
Skum04 Guard HOLLIS Yes Patrolls numerous locations Not required to solve the game
  • At each game start, the "Hacker" type robot "Igor" can be found directly in front of the entrance to the central computer building, but immediately flees to the east. In the next cross street to the right (south), the "Flyeye" type robot "Anneka" is located near the ground and thus within range of Rizzo's ion cannon. With some skill, both robots can be stunned with shots and then brought under control (middle animation in the gallery); the password for the hacker "Igor" is "PLUGIN", and the password for the flying eye "Anneka" is "BRAZIL". If Anneka has already taken off and is therefore out of reach of Rizzo's ion cannon, it will take some patience and possibly a change of location until Anneka lands again.
  • As the robot type "hacker" suggests, robot "Igor" has special computer skills. Therefore, you should guide him back to the central computer building and establish contact with the computer "Cyber1". Igor will find a useful program on the computer called "RadarPrg", which he should copy to one of his Rampaks before disconnecting from "Cyber1". Igor should then distribute this program to as many of the player-controlled robots as possible, as it replaces the city map on the radar screen with an overview showing the immediate surroundings, including the robots located there (right animation). If necessary, this program can be deactivated again by explicitly running it (see section "Operation") if the city map is needed again instead of a radar image of the immediate surroundings.


The list of all robot passwords can be found on the computer "Cyber1"
Approximately 80 seconds after the game starts, three robots are already under control
Only the hacker "Igor" finds the radar program on the computer "Cyber1"



Contents of the file "ReadmTxt"
  • Anneka (Flyeye) flies to "Logic Island" (from the central computer building, first south on "Main Street", then east after the second block), and positions herself on the teleporter next to the church. Igor (hacker) takes the same route but then heads for the teleporter on the pier opposite the island. As soon as Igor arrives there — or at the latest after switching back to Anneka — the two robots swap places. Igor goes into the church and feels his way along the wall to the computer "Cyber2" (left animation in the following gallery). There he obtains the program. "SurvyPrg", which now allows the use of two additional permanently installed cameras named "Felini" and "Ridley".
    While these cameras are not necessary for solving the game, they reveal to the player the existence and location of an island not shown on the map. As the cameras' radiation meters indicate, this island is radioactively contaminated.
    Also found on the computer "Cyber2", but irrelevant to solving the game, is the file "ReadmTxt" — it contains only an appreciation of the programmers (see illustration on the right).


Computer "Cyber2" in the church on Logic Island
Camera "Felini" and the environment it recorded
Camera "Ridley" and the environment it recorded



  • Next, you should use Rizzo (Rat) and Igor (Hacker) to cross the bridge over the McNeil River at the east end of Bridge Road. The bridge is guarded by four sentries who will open fire on any robots attempting to cross (left animation in the gallery below). The easiest way to do this is to let one robot advance until its damage meter reaches about 75%, then switch to the other and repeat the process. Afterward, switch to "Anneka" (Flyeye) and kill some time while the other two robots repair themselves. After a few minutes, repeat this process with the now largely repaired robots until Rizzo and Igor reach the opposite bank.
  • Rizzo (Rat) remains at the bridge while Igor (Hacker) travels south to the Alan M. Turing Science Institute (center animation). There, in the main building, he locates the computer "Cyber5" and obtains the program "Hack1Prg" (right animation). This grants him control over "Queen", a ship-shaped robot anchored near the port of Cholo.


The bridge over the McNeil River is guarded by four robot patrols.
Directly beyond the bridge, the Alan M. Turing Science Institute is located to the south.
Hidden in the center of the Alan M. Turing Science Institute are several copies of the computer "Cyber5".



  • Igor (Hacker) returns to the bridge and gives Rizzo (Rat), who is waiting there, a copy of the program "Hack1Prg". Rizzo then makes his way east between the pyramids. Beyond the last pyramid, he turns north and heads towards the golf course until he reaches a large, low building. Inside, he finds the computer "Cyber3", which he can connect to using the program "Hack1Prg" and from which he obtains the program "Hack2Prg". There, in a niche next to the bodies of his dead colleagues, he discovers the robot "Gort", a "Leady" type. Rizzo is able to take control of the robot without a password, thanks to the program "Hack1Prg", after stunning it with gunfire. He then transfers all the programs from his Rampaks into Gort's memory.


Rizzo makes his way between the pyramids to the building by the golf course.
Thanks to the program "Hack1Prg", Rizzo finds the program "Hack2Prg" on the computer "Cyber3".
Hidden in a niche, the robot "Gort", a "Leadie" type, awaits reactivation.



Clue to the solution, found on the computer "Cyber5" in the "Alan M. Turing Science Institute".
  • Rizzo (Rat) now leaves the building, goes to the bridge, and from there returns to the "Alan M. Turing Science Institute". Inside, he finds the computer "Cyber5" again and connects to it once more. Thanks to the program "Hack2Prg", which he inherited from "Cyber3", he now finds an additional text file, "C-C-CTxt", on this computer. Rizzo transfers this file to his memory (by overwriting the "SurvyPrg" program, which is already stored on several other robots) and then displays it on the message screen. It contains the crucial clue on how to break open the nuclear fallout shelter door: The as-yet-unknown robot "Koke" must be coupled to another, also unidentified, robot named "Flyboy" before both are deliberately crash-landed.
  • Gort (Leadie) also moves to the bridge and crosses it. Any breaks needed to allow the damage he sustained from guard gunfire to repair are best used to bring the ship "Queen" into port. It is only important to choose the correct docking position; there is no need to slow the ship down before reaching the dock (left animation in the following gallery).
  • Once Gort has finally arrived in the city center, he travels south along Main Street to the harbor and boards the ship "Queen" by using the teleporter near the pier. Queen takes him to a radioactively contaminated island in the far southeast (also shown in the left animation of the following gallery). The dock is located on the south side of the island and must be approached precisely, but at any speed. The island's existence and location are known thanks to the two cameras "Felini" and "Ridley".
  • Switching control from the ship "Queen" to the robot "Gort" (Leadie) transports him to the island. Since Gort can easily fall into the water while maneuvering on the narrow landing gangplank, it is advisable to save the game at this point. Gort then heads north to the central building — an action only he can perform, as he is the only one immune to the radioactive radiation present on the island. Inside, Gort first encounters the camera "Ridley" mounted on the ceiling. If he moves along the far right wall of this room, he can avoid a collision with the camera and instead first stun the "Cola"-type robot "Koke", disguised as a computer, by shooting it, and then establish contact with it (right animation).


The crossing to the unmapped, radioactively contaminated island takes more than 5 minutes.
After arriving on the island's southern coast, Gort makes his way to the central building.
On the far right wall, Gort can squeeze past the camera "Ridley".



  • Gort (Leadie) copies the files stored in his Rampaks to Koke (Cola) and can then remain where he is while Koke heads back to the mainland. In a nearby corridor, he can contact the computer "Cyber4", where he finds the file "AtmosTxt". Presumably, this file should contain a description of the bunker entrance; however, the file is empty or unreadable. Since it has no other function, there is no need to visit "Cyber4".
  • Koke (Cola) returns to the island's harbor, where the ship "Queen" is still docked. Using the teleporter at the pier, he boards the ship, is transported back to Cholo's harbor, and disembarks by switching back control from "Queen" to "Koke" after docking. Once ashore, Gort heads directly northwest to the airport. On the runway, he finds the "Aviata" robot, a "Plane" type, and docks at its nose to take control. The message that then appears on the aircraft reveals his password, "Flyboy", which was already mentioned in the clue in the text file "C-C-CTxt" (left animation in the following gallery).
  • Koke (Cola) docks at the nose of the "Aviata" a second time, thus gaining access to the ship. Now, the aircraft only needs to be flown to the bunker entrance (north of the city center) and crashed there. The controls take some getting used to, as the aircraft cannot maintain a turn without tipping sideways. First, the aircraft must be brought up to the necessary takeoff speed by holding down the RETURN key for approximately 20 seconds. This speed is confirmed by a short beep. The joystick movements required to fly Aviata at the correct altitude directly to the bunker entrance are then displayed in the lower right of the middle animation: an initial downward movement of the joystick for 2 seconds to take off, followed by several alternating movements to the left and downward for 1 second each.
  • After the crash, the player is briefly startled by the terse message "The End. Or is it?" appearing on the text screen. After a little over 10 seemingly endless seconds, the player is rewarded for their achievement — liberating the inhabitants of Cholo from their nuclear fallout shelter — with a fireworks display (right animation).


The robot "Koke" makes its way cross-country from the ship to the airport.
Controlling the aircraft robot "Aviata" takes some getting used to.
With Koke on board, Aviata flies northeast and crashes directly into the bunker entrance.



If you limit yourself to the necessary steps, ignoring all text files and foregoing the short-range radar and the camera robots, "Cholo" can be solved in almost exactly one hour (including the two 5-minute ship crossings between the city and the uncharted island, plus any waiting time for the robots to heal themselves).


Cheats[edit | edit source]

There are no cheats with a trainer functionality available on the internet. The possibilities for manipulating a saved game state, as presented in the section "Internal_Data_Structures", open up numerous ways to simplify the game in a manner not intended by the authors.

Internal Data Structures[edit | edit source]

For developing custom trainer functions and for analyzing or manipulating the data used by the game, knowledge of memory allocation and internal operation is helpful. The following table therefore compiles a range of information about "Cholo".

Address
in Memory
Offset in File
(saved game status)
Content Remarks
$0054-$0055 North/south position of the current robot Southern border=$0000 ... northern border=$FFFF
$0064-$0065 East/west position of the current robot Western border=$0000 ... eastern border=$FFFF
$0067-$0068 Height above ground of the current robot Ground=$0000 ... maximum altitude=$1FFF
$0071 Number of the current robot 0=Rat "Rizzo", 1=Leady "Gort", 2=Cola "Koke", 3=Hacker "Igor", 4=Camera "Ridley",
5=Doctor "DrJohn", 6=Flyeye "Anneka", 7=Camera "Felini", 8=Plane "Aviata", 9=Ship "Queen",
10=Guard "Skum1", 11=Guard "Skum2", 12=Guard "Skum3", 13=Guard "Skum4"
$4056-$40C5 0-167 Positions of the robots
$4056: Rat "Rizzo"
$405E: Leady "Gort"
$4066: Cola "Koke"
$406E: Hacker "Igor"
$4076: Camera "Ridley"
$407E: Doctor "DrJohn"
$4086: Flyeye "Anneka"
$408E: Camera "Felini"
$4096: Plane "Aviata"
$409E: Ship "Queen"
$40A6: Guard "Skum1"
$40AE: Guard "Skum2"
$40B6: Guard "Skum3"
$40BE: Guard "Skum4"
+0, Bit 4..2: Type of robot (%xxx000xx=Rat, %xxx001xx=Leady, %xxx010xx=Cola, %xxx011xx=Hacker, ...)
+0, Bit 1..0: view direction (%xxxxxx00=north, %xxxxxx01=east, %xxxxxx10=west, %xxxxxx11=south)
+2..3: east/west-position ($0000..$FFFF, little endian)
+4..5: height above ground ($0000..$1FFF, little endian)
+6..7: Süd/Nord-Position ($0000..$FFFF, little endian)
$4296-$42D7 578-643 Robot Type Names $4296: "RAT ", $429C: "LEADIE", $42A2: "COLA ", $42A8; "HACKER", $42AE: "TANK ", $42B4: "GUARD ", $42BA: "DOCTOR", $43C0: "FLYEYE", $43C6: "CAMERA", $43CC: "PLANE ", $43D2: "SHIP "
$42D8-$42E1 644-657 Location Altitude
$42D8: Rat "Rizzo"
$42D9: Leady "Gort"
$42DA: Cola "Koke"
$42DB: Hacker "Igor"
$42DC: Camera "Ridley"
$42DD: Doctor "DrJohn"
$42DE: Flyeye "Anneka"
$42DF: Camera "Felini"
$42E0: Plane "Aviata"
$42E1: Ship "Queen"
0..255
$42E3-$4336 655-738 Robot Names $42E3: "RIZZO ", $42E9: "GORT ", $42EF: "KOKE ", $42F5: "IGOR ", $42FB: "RIDLEY", $4301: "DRJOHN", $4307: "ANNEKA", $430D: "FELINI", $4313: "AVIATA", $4319: "QUEEN ", $431F; "SKUM01", $4325: "SKUM02", $432B: "SKUM03", $4331: "SKUM04"
$4337-$438A 739-822 Robot Passwords $4337: "REBELS", $433D: "KLAATU", $4343: "LOREAN", $4349 "PLUGIN", $434F: "LEGEND", $4355: "STETHO", $435B: "BRAZIL", $4361: "ACTION", $4367: "FLYBOY", $436D: "FREDDY", $4373: "PHILBY", $4379: "MCLEAN", $437F: "BLUNT ", $4385: "HOLLIS"
$43B5-$43C2 865-878 Robot Status
$43B5: Rat "Rizzo"
$43B6: Leady "Gort"
$43B7: Cola "Koke"
$43B8: Hacker "Igor"
$43B9: Camera "Ridley"
$43BA: Doctor "DrJohn"
$43BB: Flyeye "Anneka"
$43BC: Camera "Felini"
$43BD: Tarpaulin "Aviata"
$43BE: Ship "Queen"
$43BF: Guard "Skum1"
$43C0: Guard "Skum2"
$43C1: Guard "Skum3"
$43C2: Guard "Skum4"
%0xxxxxxx: übernommen, %1xxxxxxxx: frei
Bit 5-0: Schaden (0=unbeschädigt, 1-39: beschädigt, 40-55: betäubt)
$43FB-$4408 935-948 Contents of the Rampaks as a bitmap
$43FB: Rat "Rizzo"
$43FC: Leady "Gort"
$43FD: Cola "Koke"
$43FE: Hacker "Igor"
$43FF: Camera "Ridley"
$4400: Doctor "DrJohn"
$4401: Flyeye "Anneka"
$4402: Camera "Felini"
$4404: Plane "Aviata"
$4404: Ship "Queen"
$4405: Guard "Skum1"
$4406: Guard "Skum2"
$4407: Guard "Skum3"
$4408: Guard "Skum4"
%xxxxxxx1: "PasslTxt", %xxxxxx1x: "Hack1Prg", %xxxxx1xx: "Hack2Prg", %xxxx1xxx: "RadarPrg",
%xxx1xxxx: "ReadmTxt", %xx1xxxxx: "C-C-CTxt", %x1xxxxxx: "AtmosTxt"%1xxxxxxx: "SurvyPrg"
$441C-$445B 968-1031 File names $441C: "PasslTxt", $4424: "Hack1Prg", $442C: "Hack2Prg", $4434: "RadarPrg", $443C: "ReadmTxt", $4444: "C-C-CTxt", 444C: "AtmosTxt", $4454: "SurvyPrg"
Parade of all robot types (shortened by removing some duplicates)

The information in the table above can also be used to manipulate the files that store the current game state, as this is simply a copy of the Memory range $4056–$4460. The second column of the table therefore indicates the offset of the values ​​within the save file. For example, if you enter a total of 14 null bytes starting at offset 865 and then reload the save file, you will subsequently have control over all robots in the game (animation on the right, shortened to save memory space by removing the multiple instances of guard robots). If you also fill the range 935–948 with the value $8E (decimal 142), all robots will possess all essential programs.

The position of the robots is specified by a 16-bit value in both the north/south and east/west directions, with the edges of the game board having the coordinate $0000 in the south and west, and the coordinate $FFFF in the north and east. Crossing the edges is prevented by high radiation levels, causing any robot to perish before reaching the edge of the game board.

The walls of all accessible buildings face exactly one of the cardinal directions. Each such structure is square and has dimensions of 1024 × 1024 units in the coordinate system described above; the coordinates of the building corners are integer multiples of 256. The buildings are divided internally by walls spaced 128 units apart, or integer multiples thereof, so that a maximum of 8 rooms or corridors can be located next to each other in each cardinal direction (see section "Plans").

Votes[edit | edit source]

Voting of the C64-Wiki users (10=the best vote):
7.50 points at 2 votes.
You need to be logged in to cast a vote.
Lemon64 6,7 June 1, 2025 - 23 votes
Zzap64! 62% (Presentation 79%, Graphics 68%, Sound 48%, Hookability 53%, Lastability 73%, Value 44%) No. 25 (May 1987)
Commodore User 9/10 (Graphics 8/10, Sound 3/10, Toughness 8/10, Endurance 9/10, Value 8/10) No. 43 (April 1987)
Your Commodore Originality 8/10, Graphics 6/10, Playability 7/10, Value 7/10 No. 33 (June 1987)
Computer and Video Games Graphics 8/10, Sound 7/10, Value 6/10, Playability 8/10 No. 68 (June 1987)
Happy Computer 81% (Grafik 50%, Sound & Musik 7%) Spiele-Sonderheft 3
Aktueller Software-Markt Grafik 8/12, Sound 8/12, Spielablauf 10/12, Motivation 11/12, Preis/Leistung 11/12 Nr. 5 (Mai 1987)
Your Sinclair 72°/100° Issue 41 (May 1989)
Datormagazin 3.3/5 (Grafik 3/5, Ljud 2/5, Spielvärde 5/5, Priswärde 3/5) No. 4-5 (June-July 1987)
Universal Videogame List 3.8/5 June 1, 2025


Critics[edit | edit source]

Stephan64: "Cholo was one of the few games I owned in its original form back then — and I really struggled with it. I was highly motivated by the gripping backstory and fascinated by the possibility of roaming freely through the ruined city of Cholo — but what was there to do? By manipulating saved games, I quickly gained control of all the robots, but the game's purpose remained a mystery to me until the very end. How wonderful that this has finally been resolved after almost 40 years... and 7 points from me for a fascinating game that was ahead of its time and would have required a bit more processing power than the C64 could offer."

Miscellaneous[edit | edit source]

Cover[edit | edit source]


Cassette cover
Back cover of the cassette



Inlay[edit | edit source]


Cassette inlay



Cassette[edit | edit source]

Cassette for the game "Cholo"

Theme[edit | edit source]

During the game, mostly only short, monophonic sounds are heard, which underscore the gameplay. The only occasions when somewhat more complex sound sequences are heard are when docking with another robot and when leaving the ship. The following gallery shows these sound sequences in standard musical notation, with each note rounded to the nearest semitone because the program only writes the higher-order byte of the frequency register. For creative reuse of all the melodies, the sheet music is also available as a PDF document (File:Cholo Theme PDF.pdf) and in ABC musical notation (File:Cholo Theme.abc.txt).


Audio sequence when docking with a robot, reconstructed by logging all write accesses to the SID
Audio sequence when leaving the ship



Video Recording[edit | edit source]


Longplay on the BBC Micro

Bugs[edit | edit source]

The game "Cholo" has numerous bugs, which, however, do not detract from the fun or only do so to a minor degree. These include display errors when the program's rendering routines are overwhelmed or the underlying object coordinates are incorrect:

  • The program sometimes decides too liberally and sometimes too restrictively which objects are visible. Displaying edges that are actually hidden (as seen in numerous animations in this article) is quite acceptable in wireframe rendering; however, hiding objects that the camera is directly focused on is annoying (left animation in the following gallery; the pyramid-shaped object in the center of the monitor disappears temporarily).
  • The ship's positioning is clearly miscalculated, so that the ship occasionally hovers several meters above the pier (right illustration).


Incorrect hiding of objects
An incorrect height calculation causes the ship to float in the harbor



Furthermore, there are numerous bugs that indicate that, prior to the game's release, testing focused primarily on program paths necessary for completing the mission (rescuing the survivors trapped in the nuclear bunker). Using the game's degrees of freedom in other ways leads to numerous, sometimes bizarre, malfunctions:

  • Since the robots (with the exception of the ship) do not have a reverse gear, they can get stuck in a corner of a building and be unable to maneuver out (left animation in the following gallery).
  • If the "Cola"-type robot "Koke" wants to leave the "Aviata" plane after already boarding it, it will not find itself on the runway, but in the harbor — and will either fall directly into the water or periodically collide with the anchored ship "Queen" (middle animation).
  • If, at the very start of the game, you steer the "Rat"-type robot "Rizzo" directly to the harbor and let it fall into the sea, you will find yourself back in the harbor basin after a restart, where the robot can move across the water (right animation).


Rizzo (Rat) is stuck in the corner of a building.
Once inside the "Aviata" plane, the robot "Koke" (Cola) shouldn't get out again.
After falling into the harbor basin, Rizzo (Rat) becomes a ship.


Finally, it's worth noting that the text file "AtmosTxt" can only be found after lengthy and elaborate preparations, and then it's empty or unreadable. Presumably, it was meant to provide a location or directions to the top of the bunker entrance.

Fastloader[edit | edit source]

The cassette version of Cholo uses two independent, integrated software fastloaders that are automatically activated during loading, but only speed up the loading process by a factor of about 3.2. A detailed analysis of the loading routines reveals the reason for this rather poor performance: Firstly, the first loaded program segment does not contain the fastloader at all, but only a short instruction sequence, which in turn uses the kernel to read a 512-byte module containing the first of the two loaders.

Secondly, while these loading routines use shorter encodings for 0 and 1 bits than the kernel, they are otherwise primarily optimized to obscure their own operation and prevent the game from being reconstructed by analyzing the tape data. This includes the fact that the first loaded program segment is encrypted by XORing with the fastloader's code; as a result, unlike what is usually the case, it consists of almost 50% 1 bits, which are in turn encoded by longer pulses.

Both fast-load routines read an arbitrarily long sequence of blocks from the tape and place them — not necessarily consecutively — in the C64's main memory. The first block is only 64 bytes long and contains an additional key, which is transferred to the address range $0200...$023F and later used to decode the program code; all subsequent blocks are 256 bytes long. The first fastloader also resynchronizes the C64 with the data stream before each block, thus wasting considerable time and cassette space.

The first fast-load routine expects a 4-byte header before each block, containing the synchronization character of the following block (1 byte), the block number (1 byte), and the load address (2 bytes in little-endian format). In block number 0, 64 data bytes are appended to this header; otherwise, 256 data bytes are appended. Instead of concluding the data structure with the checksum, an additional byte is added, indicating how many extra padding bytes (between 1 and 31 bytes) follow, which are simply skipped and ignored. This extra data alone increases the data volume by a total of 1148 bytes for 72 blocks and an average of approximately 15 padding bytes (plus length specification) per block. Following the checksum is an address that is accessed after the block is loaded and usually points to the fastloader itself; furthermore, a total of four blocks are interspersed throughout the data stream, which the fastloader uses to partially overwrite itself. Many of the data elements described here are likely intended solely to make reconstructing the program data more difficult.

The first fast-load routine loads a program segment at address $1100...$52FF and a decoder at $C400–$C4FF, and then transfers control to the decoder that was just loaded. This decoder then first decodes itself and then the initially loaded program segment before copying and executing a second fastloader located at address $5100–$52FF at address $C500. Before doing so, it extracts the loading screen from the already loaded data (the bitmap is copied from $3100 to $E000 and the video RAM from $2D00 to $CC00), fills the color RAM with the value $03 (code for screen color "turquoise"), and then switches the VIC to multicolor bitmap mode.

The second loader, in turn, expects a 7-byte header before each subsequent data block on tape. This header contains the block number (1 byte), the load address, the end address of the entire block sequence, and the entry address of the contained program segment (all addresses are 2 bytes in little-endian format; entry address $0000 means "do not jump to the program segment after loading"). It loads two further, unencrypted program segments into the memory areas $3000...$ACFF and $E000...$FFFF. However, the jump vector is not used. Instead, the fastloader destroys the decoding routine by overwriting it with null bytes and then triggers a BRK instruction, which ultimately leads to the game's start address $4461.

Also unused is the curious functionality of the fastloader periodically checking the jump vector for the USR function and comparing it to its default value $B242. If a deviation occurs, the modified USR function is called via a subroutine call. For example, if the USR vector is pointed to the C64's cold start routine by entering the following commands, the fastloader will trigger a reset of the computer after a few seconds:

POKE 785,226 : POKE 786,252 

The fastloader of "Cholo" is identical to that of "Spiky Harold" and very similar to that of "Willow Pattern".

Emulator Settings[edit | edit source]

Although the game's authors clearly made an effort to optimize the game's machine code, the low frame rate and the resulting slow movements of the robots become somewhat annoying after a while. However, if the program is loaded onto an emulator and its speed is set to about 300% of the performance of a real Commodore 64, "Cholo" can be played smoothly.

Trivia[edit | edit source]

  • ​​A preview of the game in the magazine "Computer and Video Games" (see section "Weblinks") explains the original purpose of the different robot types. For example, the flying eye "Anneka" was originally intended to monitor traffic in Cholo; Doctor "DrJohn" was meant for decentralized repairs of broken robots.
  • Assuming that people once worked at the desks in the buildings and that the desks were therefore approximately 2 m wide, the dimensions of the game world can be estimated based on the object coordinates (see section "Internal_Data_Structures"): The corridors in the buildings are thus approximately 4 m wide; the square buildings have a base area of ​​32 × 32 m, and the city of Cholo covers an area of ​​approximately 2 × 2 km. The maximum flight altitude of the flying eye "Anneka" and the airplane "Aviata" is approximately 250 m, and Aviata's maximum speed is approximately 16 m/s (just under 60 km/h). All other robots reach a speed of approximately 8 m/s (just under 30 km/h) outdoors and approximately 45 cm/s (1.5 km/h) indoors.
  • The sequence of zeros and ones that appears on the main monitor when docking with another robot is not a coded secret message, but simply a listing of the least significant bit of all memory cells in the address range $FF50–$044F (with wraparound from $FFFF to $0000, including Zeropage and Stack).

Accessories[edit | edit source]

The game includes a map of Cholo measuring 27.5 × 40 cm. Although the instructions explicitly state that this map depicts Cholo's pre-war layout, it is still very helpful for navigation. However, the location of the airport, for example, is incorrect; its runway should be significantly further north and surrounded by forest. Furthermore, the map is intentionally incomplete (see section "Solution").


Map of Cholo



A special feature of "Cholo" is the included instruction manual, which not only describes the game controls in detail and explains the first steps, but also motivates the player with a captivating, over 40-page backstory for the task ahead.


Title page of the user manual for the game



Highscore[edit | edit source]

A high score is not useful in this game.

Links[edit | edit source]

Manuals
Magazine