This page is being actively updated and reformatted.
Last updated: 28 Mar 2019
Last updated: 28 Mar 2019
General Computer Corporation (also known as GenComp or GCC) was a small arcade corporation formed by MIT students in the late 1970s. GCC specialized in building 'enhancement kits' for existing arcade hardware, in the form of a ROM replacement or extension circuit board. These enhancement kits override or replace arcade game programming to augment the game with new behavior and features. Machines with enhancement kits drew new attention to older games and maximized profit for the owner.
Pac-Man, a major game in the arcade scene, was a practical project for GCC to take on in 1981. The result was Crazy Otto: an enhancement kit for Pac-Man, which broke Pac-Man's repetition with new mazes, new characters, new monster AI and various other mechanics. Three Crazy Otto circuit boards were built for development and demonstration, though a dedicated Crazy Otto cabinet was never produced.
GCC intended to release Crazy Otto independently as an enhancement kit to augment existing Pac-Man games, though a previous lawsuit with Atari inspired them to seek approval from Pac-Man's US distributor, Bally Midway, before marketing the kits.
GCC traveled to Bally Midway headquarters in Chicago to present their Crazy Otto kit. Bally Midway was losing patience waiting on Namco to finish its official Pac-Man sequel (which would be 1982's Super Pac-Man). Bally Midway saw Crazy Otto as a perfect sequel falling right in its lap. History took a turn as Bally Midway instead purchased the Crazy Otto program an official release rather than simply permitting GCC to release the enhancement kit. As the game was then officially licensed, the generic Crazy Otto character could be replaced with a true Pac-Man character. Midway contracted GCC to finalize characters and programming, and the game was released officially as Ms. Pac-Man in January 1982.
The original Crazy Otto program is unavailable to the public due to a royalty deal Namco upholds with GCC to this day.
Reviving Crazy Otto
I designed and built a complete replica of the elusive Crazy Otto, with identical replicated gameplay and custom cabinet artwork designed in the iconic Ms. Pac-Man art style.
Over the course of six years, this involved reverse-engineering original Ms. Pac-Man code, designing unique cabinet artwork, and restoring an original Pac-Man cabaret cabinet.
This project made news in the arcade community, the Tracy Press, and Motherboard Magazine!
In July 2015, I gave a presentation alongside Steve Golson, an original GCC developer, detailing the engineering of Crazy Otto.
Read on for a detailed recount of my process.
Tracy Press Article
California Extreme 2015 Presentation Video
VICE Motherboard Article
Steve Golson's website and past presentations
The original Crazy Otto programming is unavailable to the public due to a royalty deal Namco upholds with General Computer Corporation to this day. Hence, my project revolved around creating a functionally identical recreation of the elusive Crazy Otto program, so myself and others could experience the game.
I was eleven years old at the start of the project in 2012, with no programming experience and much to learn. Replicating Crazy Otto seemed an impossible feat with a long road ahead. I decided that the best route would be to reverse-engineer the widely available Ms. Pac-Man program and modify it into Crazy Otto.
Finding a Reference
Steve Golson, an original GCC programmer who worked on Crazy Otto, set up an original Crazy Otto circuit board for play at the 2012 California Extreme Arcade & Pinball Expo. The timing could not have been better: this was one of the first times the real Crazy Otto had been available for play since its field test in 1981.
As an eleven-year-old, I was very lucky to attend the expo and play the original Crazy Otto while it was on showcase. I recorded countless closeup videos of the game on my dad's cell phone. Back home I played the videos in slow-motion to familiarize myself with the game's nuances, and to help me recreate the graphics (also known as sprites) by eye. I took detailed notes of the game's behavior and differences compared to Ms. Pac-Man, which became a list of the work ahead of me:
I was left to reverse-engineer the Ms. Pac-Man program and replicate Crazy Otto with the simple tools accessible to me: a hexidecimal code editor, a graphics editor, and a Ms. Pac-Man program emulator.
Early on I had the concept of reverse-engineering the program by nullifying individual commands and documenting how it reacts in an emulator. I call this the zero-zero method, as I replaced individual hex bytes of the Ms. Pac-Man program with "00" (blank code) to nullify that part of the code. Missing a line of code, the game's behavior changes in various and erratic ways. By documenting where and how the game changed, I gained much insight to the function of certain locations and commands in the Ms. Pac-Man program which helped my effort greatly.
I also soon found an annotated version of the Ms. Pac-Man Z80 machine code: a collaborative effort between a few programming experts. This was a major help in navigating the code by outlining programming addresses and additional information.
Example 1: Monster eyes returning to the pen
After eating a ghost-monster, the Ms. Pac-Man program shows its eyes scuttling back to the center pen and interrupts the energizer sound to play another sound effect. This feature is notably absent in the original Crazy Otto, the monsters simply reappear in the pen and the energizer sound does not stop.
To replicate this, I searched the annotated source code for the general area of code related to the procedure after Ms. Pac chomps a blue monster. I used my "zero zero" method to better outline the functions. Eventually, I found the variable that controls the color pallet for the eaten monster eyes and set it to invisible (coincidentally also "00"). I also found the sound queue for the monster eyes sound, and was also able to simply disable it by replacing it with "00".
Example 2: Understanding and modifying the music
The music was a considerable challenge as there is no documentation on how Pac-Man's audio programming works. In each song, I found this string of code repeated multiple times:
F1 (a) F2 (b) F3 (c) F4 (d)
a, b, c, and d represent variables. The value in place of it would alter different elements of the music. After experimenting, I found what each variable controls:
• (a) instrument
• (b) octave
• (c) 'quality' of note
• (d) duration of note
I searched through ROMS for song data until I found the correct sets to modify. Finding the correct values to place was an entire other challenge which took further experimentation.
Editing the pure graphics themselves was straight forward, using a tool programmed by Ivan Mackintosh in the late 90s called Arcade Graphics Editor. This program allows direct manipulation of many arcade games' graphics including Ms. Pac-Man. I got this program to run on modern hardware using a DOS emulator, and made the simple graphics changes using this program.
In contrast, the main character's animation system was by far the largest hindrance in recreating Crazy Otto, and a very significant difference between the Crazy Otto and Ms. Pac-Man programs.
Ms. Pac's animation system uses three frames of animation movement, with two shared sprites for left + right movement, and one unique, but identical, frame for each. The same is true for up and down movement. Her simple mouth movement allows for fewer sprites and reused sprites.
Otto requires four animation frames to achieve his fluid walking animation, and three separate sets of sprites for each direction to achieve his three-dimensional appearance. In fact, Otto uses twelve total frames compared to Ms. Pac-Man's eight. In addition, Otto's up and down animations are half the speed of his sideways animations, for a more realistic walking pace.
This meant Ms. Pac-Man's animation programming had to be completely reworked, and the sprite ROM rearranged, to accomodate Crazy Otto's twelve unique frames of animation.
I reached out to master programmer Vernon Brooks for help with this, and I owe him massive credit for patching the table like magic.
Eleven-year-old me playing the original Crazy Otto at CAX 2012
My replica program in January 2013. Graphical and textual changes were mostly complete, but function was still inaccurate.
Ms. Pac-Man's animation system.
Crazy Otto's animation system.
An experimental ROM I created: I numbered/marked Ms. Pac's sprites to help document the animation system.
The final version of my replica program, completed October 1, 2018.
I started sketching and vectoring art for Crazy Otto when I was eleven/twelve years old. I started with a simple marquee and designed the rest of the artwork to match.
The art had a simple style, a literal translation from what the characters looked like in-game. I even had a stencil set cut for the front art (which I ultimately never used).
Also since age eleven, I drew sketches of the Crazy Otto characters with the intent of mimicing the original Ms. Pac-Man style. I slowly got the hang of it.
Huge thanks to my good friend DonovanArt for the artwork sketches used in the 2018 update.
I designed all the artwork and traced my sketches in Adobe Illustrator, in the spirit of original Ms. Pac-Man artwork.
Finished Cabinet (2015)
I applied woodgrain vinyl over the old blue paint, programmed in my new version of the game, installed my redesigned artwork, and installed a new-old-stock 13" monitor. This iteration of the project was finished in July 2015.
At California Extreme 2015 I unveiled the project and gave a keynote alongside original Crazy Otto developer Steve Golson, who I mentioned earlier on this page!
This version has been at California Extreme 2015, 2016 ,and 2017.
I was once again dissatisfied with my old work :)
The final chapter of this story (at least for now), I stripped the cabinet to bare wood and refinished the cabinet with more resilient woodgrain and overhauled the artwork. The updated cabinet was at California Extreme 2018.
In late 2018 I revisited the programming to restore the Pac-Man syle attract mode among other changes. This final version is virtually indistinguishable from the original 10/12/81 Crazy Otto.
Build Gallery (2012-2018)
Possible 2019 update coming? :)