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 improved 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. A few Crazy Otto kits 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 cabinets, 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 impatiently waiting on Namco to finish its official Pac-Man sequel (1982's Super Pac-Man). Midway was amazed by Crazy Otto, and saw it as an opportunity for an immediate sequel. History took a turn as Bally Midway offered to purchase the Crazy Otto program to release officially rather than simply permitting GCC to release the enhancement kit. The generic Crazy Otto character could then be replaced with an official Pac-Man series 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 as part of a complex royalty deal Namco upholds with GCC to this day.
Crazy Otto pictured in TIME magazine, mislabeled as Pac-Man, 1981
Reviving Crazy Otto
I have designed and built a complete cabinet for Crazy Otto, with identical replicated gameplay and custom cabinet artwork designed in the iconic Ms. Pac-Man art style. The cabinet represents a 'what-if' Crazy Otto had been released in place of Ms. Pac-Man.
Over the course of seven years, this involved reverse-engineering original Ms. Pac-Man code, designing unique cabinet artwork, and restoring an original Pac-Man 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
Tracy High School 2016 Presentation Video
VICE Motherboard Article (second half)
Steve Golson's website and past presentations
NEW 2019: Destructoid.com Article (second half)
My completed Crazy Otto project, at California Extreme 2019
Thanks Steve Lin for the great photo!
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 accommodate 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 near final version of my replica program, October 1, 2018.
I started sketching and vectoring art for Crazy Otto when I was eleven years old. I started with a simple marquee and designed the rest of the artwork to match.
The art style was simple: a literal translation from how the characters look in-game. I even had a stencil set cut for the front art (which I ultimately never used).
2013 Finished Cabinet
I 'soft-finished' the cabinet in late 2013, meaning the project was put together but not publicized.
I felt that I missed my mark; it was inaccurate to Bally Midway's artwork style and inconsistent with their cabinets.
This iteration wasn't faithful enough for my standard.
Back to the drawing board.
Completed 2013 Crazy Otto
Since age eleven, I have been drawing sketches of the Crazy Otto characters with the intent of mimicking the Ms. Pac-Man/Bally Midway art style. I slowly got the hang of it.
I designed all the artwork and traced my sketches in Adobe Illustrator, closely following the spirit of the Ms. Pac-Man artwork. Perhaps too closely, as you'll soon see.
I revised the artwork in 2018 with sketches by my friend, DonovanArt.
2015-2018 Finished Cabinet
I applied faithful woodgrain vinyl over the old blue paint, programmed in the new ROM, installed my redesigned artwork, and installed a new-old-stock 13" monitor. This iteration of the project was completed in July 2015, and updated in 2018 with improved artwork and woodgrain.
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 through 2018.
Completed 2018 Crazy Otto
Build Gallery (2012-2018)
This section is in progress!
The last chapter of this long story, I was one last time bit by the "let's redo Crazy Otto!" bug. With the program now a perfect replica of the original, it was time to house it in a worthy cabinet.
My goal remained the same: Build a release-worthy Crazy Otto that looks like it could have been released in 1981. Over two months I designed the new Crazy Otto artwork; and stripped and restored a dilapidated full-size Pac-Man cabinet.
I feel I finally reached my goal, and am content with the new cabinet. With this, the Crazy Otto project can finally rest. :)
This cabinet was present at California Extreme 2019.
The final version of my replica program (video shows older cabinet)
Completed 2019 Crazy Otto
For the revisited project, I chose to design artwork completely from scratch while still mimicking Ms. Pac-Man's iconic art style.
Taking inspiration from my previous designs and design cues in the game, a 'showbiz' theme fit perfectly. In fact, many of the of the elements and layouts came to mind while I was at theatre rehearsal!
As a nod to Midway history, the striping in the sideart is derived from one of Bally Midway/Tony Rammuni's early concept drawings for the Ms. Pac-Man cabinet.
I teamed up with my best friend/talented illustrator Melissa Burke for character design. It was a fun back and forth: I sketched out the design + layout of the artwork with rough character sketches. Melissa refined them into character drawings, which I vectored into final artwork.
Early Ms. Pac-Man development sketch by Tony Rammuni, 1981