Chasing the First Arcade Easter Egg

It all started with a project I was working on called “Fixing Gran Trak 10” about the first car racing arcade video game from 1974. I had completed the electrical repairs and was trying to interview as many people as possible who were involved with making the game. One of the interviews was with Ron Milner. Ron’s an interesting guy. He was an engineer and inventor at Atari’s secret think tank in the mountains – Cyan Engineering from 1973 to 1985. Besides coin-op work he was co-inventor of the Atari 2600 video game system and even helped prototype the animations for the robots at Chuck E Cheese. At the end of our conversation we were chatting about other stuff when he asked:

“Did you ever get a Starship 1 game?”

I said “I know that game! I would love to have one in my collection. I remember playing it when I was a kid.”

IMG_5971
Starship 1 game cabinet

Ron explained how he designed an “axial coil” around the neck of the CRT which would cause the stars to rotate when the player turned the control yoke. A pretty neat trick. Unfortunately that feature was cut to save money in the production version of the game.

Ron continued, “That was the first and only game that I ever programmed and I think it was maybe one of the first games with a backdoor in it. I didn’t tell people about this, even within Atari, for at least 30 years, but I had some code in there that if you did a certain sequence of controls it would say ‘Hi Ron!‘ and give you 10 free games.”

I was kind of stunned. If this was true it would certainly predate the earliest video game Easter egg that I knew of and the one that is most often cited as being the first: “Adventure” for the Atari 2600 from 1979. I did a little searching online and found that there was an even earlier Easter egg in the game “Video Whizball” which was released in 1978 for the Fairchild Channel F game console.

But there was a problem. Ron didn’t remember exactly how to bring up the Easter egg. He remembered showing it off to some buddies at a county fair when the game first came out, but that was 40 years ago!

This was something I had to pursue! There were only two things I needed to figure out: when was “Starship 1” released and how to actually trigger the Easter egg.

Confirming the Release Date

Ron wasn’t sure exactly when the game was released. First stop was to check The Arcade Museum. This site lists almost every arcade game ever made, but since the information in it is crowd-sourced I’ve found that it isn’t always reliable. In this case it shows 1976 as the release date for Starship 1. Promising! That would put it two years earlier than the other contenders.

But as I poked around more I began to have my doubts.

The manual and flyer were copyrighted in 1977. I decided to check other sources. I had recently been told that the archives for Cash Box Magazine have been scanned and are fully searchable online. Since this magazine covered the arcade business it’s perfect for this kind of thing. I quickly found an article that gives 8/13/77 as the first date that Starship 1 appeared in Cash Box.

cashbox

Next I checked an old internal Atari sales document that I had used to verify a release date in my story Fixing Color Gotcha. As you can see, it lists a ship date of July 1977:

sales

That fits with the first Cash Box reference being in August ’77, so I believe that July 1977 is the correct release date for the game.

Finding the Code

So we knew the date, but did the Easter egg actually exist in the game? Ron remembered that his Easter egg would trigger the message “Hi Ron!” on the screen and then give ten free credits, but he didn’t remember, after all these years, exactly how to make it happen.

The first step was to download the ROMs for the game from the internet. With those in hand it was an easy search through a hex dump to find:

hiron

So the message was there! But could we actually trigger it? Ron looped in another early Atari engineer, Michael Albaugh, and the three of us got to work. Starship 1 was built using the 6502 microprocessor, the same one that was used in the Atari 2600 and the Atari home computers, so it was something we were all familiar with. Ron and Michael dove into the schematics and I provided the ROM dump and disassembly listings of various sections of code. A portion of the schematics showed the memory map which told us how the various buttons on the control panel were exposed to the game’s software:

addressmap

It soon became clear the code we cared about was part of an interrupt routine triggered when a coin was inserted into the game. Michael was the first to find the code that, if called, would print “Hi Ron!” on the screen, but how was it called? Ron pinpointed two specific checks in the code and sent back a commented listing of the raw disassembly dump I had provided him.

The first check appeared to be testing whether the Phasor and the Start button were being held simultaneously when a coin was dropped:

check1

and soon after was another test to see whether the slow button (and no other buttons) was pressed:

check2

So if we were reading the code correctly, the key to triggering the Easter egg was to stick a coin in while holding both the phasor button and the start button down. Then, very quickly, release those buttons and slam on the slow control. No wonder no one ever stumbled on this “feature”… Now we just had to prove that it could actually happen in the real world.

Hatching the Egg

I did a quick check with my local collectors group (Seattle Metro Arcade Collectors or SMAC) but no one seemed to have a Starship 1 in my area. Then I remembered I had seen one for sale a few months earlier at a dealer in Vancouver, BC, and I kind of wanted it, even before I knew about the Easter egg. I checked with the dealer and the machine was still available so I bit the bullet and paid his somewhat inflated price. Unfortunately I’d have to wait several weeks for him to repair it and ship it down to me in Seattle. In the meantime, I set about trying to reproduce the egg in the emulated version of the game running under MAME.

MAME is a marvel of the arcade collector world. First released 20 years ago, in 1997, and in continuous development ever since, MAME has the humble goal of emulating every arcade game ever produced, along with many vintage computers, game systems, and even calculators. This open source project has inspired so many talented programmers over the years that today it’s difficult to find a game that isn’t supported. When I looked for Starship 1 I was not surprised to see that it was available.

Yet my first attempts to reproduce the Easter egg ended in failure. I could cheat by using the excellent built in MAME debugger to skip over the two checks I needed to pass and then the “Hi Ron!” message would appear, but I couldn’t do it simply by pushing the (simulated) control panel buttons.

After some debugging I determined that the problem was with the Slow control. Whoever created the otherwise excellent driver to support Starship 1 in MAME decide that the Slow control should act like a gear shift. Not a bad assumption given how it looks:

cp

See it there on the right side of the image? It may look like a gear shift but, from the game’s point of view, it’s just another button, no different from the Phasor or Start buttons. By making it a gear shift (technically a “toggle” in MAME speak), it made it virtually impossible for me to trigger it reliably in the small amount of time I had after dropping the virtual coin into the emulator.

I considered building my own driver, but that would involve a fair amount of work to setup the MAME build environment. Before I headed down that long and bumpy road I decided to try the thing I’m always reminding myself I need to do more often: use Google. Specifically I googled “disable MAME toggle” and the first thing that popped up was this wondrous little article on how to solve exactly the problem I was having. It said I had to add the phrase ‘toggle = “no”‘ to the config file like this:

toggle

(the MAME savvy among you will note that I also reassigned the slow button to the right ALT key and the Start button to the right CTRL key for easy access)

With these preparations in place, while holding down left CTRL and right CTRL, I hit the 5 key, which in MAME means insert coin. Then I immediately let up on all those keys and held down the right ALT key. It worked! I was rewarded with “Hi Ron!” on the screen!! Here, I made a video to prove it to you (watch carefully in the upper left hand corner of the screen):

Did you see “Hi Ron!” appear? If not, run it again. I’ll wait.

The Final Countdown

All that was left was to show that the Easter egg could be triggered on a real machine, but where was my real machine? I contacted the dealer and was told “A problem developed with the monitor, it won’t sync.” He went on to explain that once he fixed it, he would need to leave it running for several days to make sure the problem didn’t return. Yeah, sure. That’s fine. I want it to work.

I spent the next few weeks anxiously waiting for the machine to arrive. I was torn between the irrational fear that someone else would stumble on and publish my 40 year old discovery before me, and the very real fear that when I did, no one would care.

Finally the machine was delivered.

IMG_5924

I carefully unwrapped and gave it a close inspection. Everything looked fine. This was going to be easy. I turned it on and it came right up. The screen looked great. I grabbed a quarter, stuck it in one of the two coin slots, and other than some clanking noises as the coin fell through the mechanism, nothing happened.

Okay, no problem. I opened up the coin door and saw that the coin box was installed incorrectly so it didn’t allow the quarter to fall all the way through the mechanism. I fixed that and tried again. This time the coin fell but again, nothing happened. I opened it up again to find that the falling coin had knocked off the wire that triggers the microswitch that tells the game to give a credit. The wire hadn’t been properly attached when the machine was repaired. I fixed that and tried again.

IMG_5931

This time when I turned the machine on the stars were spinning wildly and the message COIN was stuck on the top of the screen. I opened the coin door a third time and saw that one of the electrical wires to the door was broken.

IMG_5940

Wow. I was starting to wonder if I was cursed! I repaired the broken wire and tried yet again.

Will it happen?

The attempts continued for hours. It wasn’t easy. I had to contort my left hand to be able to hold down the button on the yoke and the start button at the same time:

IMG_5968

Meanwhile my right hand had to insert a coin. As it was falling I had to let up the left hand and push down the slow control with my right hand. The timing seemed tricky. I knew from the code that the coin had to go through the mechanism before I let up my left hand but then there would be just a small window of time before I had to push the slow control. No matter how I tried and no matter what I did, I couldn’t make the Easter egg appear. How could this be? I had done all the research. I was sure I knew what I was doing, and yet I couldn’t get the message “Hi Ron!”.

Did it matter which coin slot I was using? I didn’t think so, but just to be safe I was trying both. Still, it made me wonder. I checked the schematic. There were definitely separate signals coming into the board for Coin 1 and Coin 2 but the byte being checked by the Easter egg code was looking at this:

bits

We wanted the hexadecimal value $76 which would mean Coin plus Phasor plus Start. Just to be sure I started up the MAME version. I had always hit the 5 key when I reproduced it which means Coin 1, but what if I hit the 6 key (Coin 2)? When I tried it I couldn’t get the Easter egg to happen. I set a breakpoint in the debugger and sure enough I got a different value than the $76 I expected. Apparently Coin 2 was mapped to one of the other bits labeled “SPARE” on the schematic. Okay, that’s fine. I double checked which coin slot was associated with Coin 1 and I used that from then on, but still no luck. Eventually I decided to give up and call it a night.

As I lay in bed I thought about what could be wrong. The only thing I could think of was those bits marked “SPARE”. If Coin 2 could be mapped to one of the “spare” bits, maybe something else could be mapped to another one? I pulled up the schematic one more time and tried to see how the bits were mapped into the electronics of the game. I found this:

map

The signals going into pins 4 and 12 on chips E6 through J6 seemed to be a perfect match for the bits in the byte the code was testing. If that was correct, then look at the line connected to pin 12 of J6. Although that line isn’t labeled it doesn’t take a genius to follow the wire to the right and see that it is connected to a Quad DIP Switch and is labeled “Bonus Time”. I was pretty sure I knew what that meant and drifted off to sleep, confident that tomorrow would be a better day.

A Better Day

I woke up early and, after dropping the kids off at school, got to work. I pulled the board and found the DIP switch:

IMG_5965

See how one switch is marked “B.T.” for “Bonus Time” and that it is pushed down on the side marked with the plus sign? That means it is on or closed. Since the schematic shows a closed switch there would be connected to ground that means that it would create a zero bit which is exactly the opposite of what we need to create the Easter egg. Seeing this gave me even more confidence. I flipped the switch and put everything back together. I was ready to give it one last try. If didn’t work this time, I was out of ideas.

“Bonus Time” was now off. I contorted my left hand to hold the Phasor and Start buttons down. I held a quarter in the Coin 1 slot with my right hand. I would have crossed my fingers if both my hands weren’t busy. I dropped the coin, and tried to be patient to let it make its way all the way through the mechanism and then I quickly let up the buttons with my left hand and slammed the slow control with my right. “Hi Ron!” appeared on the screen. First try.

I setup my camera and started it recording. Again it only took one take. Here’s that video:

Hallelujah.

Is it the First?

That leaves us with the final question: Is this the first Easter egg? As with most things, the answer is, it depends. Wikipedia defines an Easter egg as “an intentional inside joke, a hidden message, or a secret feature of an interactive work”. The website goes on to give examples in software going all the way back to the TECO text editor from the 1960s. Clearly we aren’t going to beat that.

So let’s ask if this is the first Easter egg in a video game? July 1977 is well before the release of both Adventure and Video Whizzball in 1978, so we clearly have a contender. As I did more research, though, I found this article which says a rare cartridge for the Fairchild Channel F called “Democart”, presumably released only for use in stores, displays the programmer’s name if three buttons are held down at the end of the demo. As you can see, it has a copyright of 1977:

democart

Was it made before or after July of 1977? I don’t know. Does a non-interactive store demo meet the criteria for an Easter egg in a video game? I guess that’s up to you.

Maybe we just want to claim that Starship 1 has the first Easter egg in an arcade video game. In that case I only know of one other contender, but it dates all the way back to June of 1975. The game Anti-Aircraft II by Atari, which normally has the player shooting down passing airplanes, can be made to display UFOs instead by modifying the printed circuit board inside the game. Once changed, the screen looks like this:

atarianti-aircraft-ufo4_zps6f50096c

Does a different set of graphics that can only be displayed by modifying the hardware count as an Easter egg? Around this time, Atari was doing business using two different names (the other name was Kee Games) and releasing slightly different versions of most of their games under each name. I suspect that the UFOs were meant for a Kee Games version of Anti-Aircraft and not something hidden in the ROM by its creators.

In my opinion, Starship 1 is the earliest arcade game yet known that clearly meets the definition of an Easter egg and the clever young programmer who put it there, Ron Milner, deserves our recognition and respect. Still, there were more than one hundred arcade video games released before Starship 1. Maybe somewhere deep inside one of them lies another even older Easter egg just waiting to be discovered. I hope so!

 


52 thoughts on “Chasing the First Arcade Easter Egg

  1. Amazing arcade archeology :). As for the interactive demo, I wouldn’t count it as a “game”, so as far as I am aware you did find the earliest known easter egg considering video-games (and for the UFO case, hard-mod of the hardware can be classified as many other things but I wouldn’t call it an easter egg, more like an “engineering task”).
    Congratulations for the patience and time spent into it!

    Liked by 1 person

    1. Hi Scott, There seems to be some disagreement on this but you are right that it probably isn’t 1978. I updated the article to make it 1979 which seems to be the consensus for the US release.

      Like

  2. I remember feeling like some sort of criminal putting the back door in my program. I knew that if it ever got out I would lose my job which I liked a lot. My boss, Larry Emmons, already had me pegged as a screw-up for various other mouthings off and shenanigans and something like stealing free games would definitely be the end even though I came up with vast numbers of great ideas. Who knows, I could maybe get tossed in jail if coin machine operators were losing real revenue. That’s why I never bragged about it till now!

    I sometimes wondered if the programmer who did the ATM machines had a special sequence of buttons to push if he needed an extra $20 down the line. Or a Bally programmer setting up the slot machine to recognize a special sequence of coin drops and timed pulls to give him unbeatable odds. I’m glad I mostly designed hardware after Starship!

    I knew the program would probably be looked over or modified by an Atari programmer at some point so I carefully hid the back door in the source code. If anyone actually still has the old source code archives it would be interesting. The ascii text for putting out “HI RON” was disguised in my source as a subroutine of strangely unexecutable code labeled “hir” to look innocuous and nothing else was commented. At that time text was all mixed in with the program code. Unfortunately I also quickly forgot the magic control sequence and only got to show off a couple times.

    Liked by 2 people

    1. Hey, Ron, while you mentioned the 10 free games, Ed didn’t confirm that that was in the code. I would have thought the credits would have shown up on the screen or with a sound of it was there. Maybe your conscience did get the better of you and changed the code to just pop your name?

      Like

  3. Hey Ed, cool find! Here it is in the original source (gotta love octal and Atari’s weird assembler syntax)– I particularly how how he obfuscated the intended ASCII as instructions. 🙂

    10$: LDX I,377
    8$: LDA I,20
    JSR DELAY
    WDOG
    DEX
    BNE 8$
    LDA A,SWA
    CMP I,277
    BNE 9$
    PRINT HIR,200
    LDA I,20
    STA Z,CREDIT
    JMP 1$
    […]
    HIR: PHA
    EOR I,40
    JSR RDEC
    LSR A,HPOSTBL+11
    RTS

    Liked by 1 person

      1. Yes– back in 2003 quite a bit of source was recovered and has been in use for various projects over the years. (It’s never been available online though.) Did you write the manufacturing test code as well, Ron? That’s the only piece that I can find that has a definite date (in the source). It says “Star Trek”, but based on the memory map the hardware is clearly Starship 1.

        .TITLE STAR TREK DEBUG (STREK)
        .SBTTL MAIN SECTION WITH ALPHA & MOTION TESTS
        ;REVISED 28-OCT-76
        ;NOTE BIT 6 OF SYNC MUST BE SET TO 1 INITIALLY BY NOT GROUNDING

        Liked by 1 person

  4. Adventure didn’t come out until at least 1980, judging from catalog appearances.

    Anyway, fascinating post! I loved Star Ship on the Atari VCS…I wonder if there’s a long-lost easter egg somewhere in there, too? 😛

    Like

  5. Excellent article, full of extremely interesting technical details. I really enjoyed reading so much that I also introducing it to some Greek fellows, here:
    http://underground.iamretro.gr/index.php?threads/starship-i-1976-77-%CE%8A%CF%83%CF%89%CF%82-%CF%84%CE%BF-%CF%80%CF%81%CF%8E%CF%84%CE%BF-arcade-easter-egg-%CF%83%CF%84%CE%B7%CE%BD-%CE%B9%CF%83%CF%84%CE%BF%CF%81%CE%AF%CE%B1.8161/#post-131487

    Congratulations for the patience to share it. Your passion for old arcades is really admirable!

    Liked by 1 person

  6. Clay, I dont remember writing any test code. Im surprised there was rom room for any. It was probably Dave Stubben. Dave was a new engineer just hired by Atari and his first assignment was to go spend a couple weeks in Grass Valley (Oct 1976) and bring the Starship prototype wirewrap game down to Los Gatos and turn it into a PCB and product. Dave later became the head of coin-op engineering.

    Like

  7. This was a fun read! It was great seeing the effort and reverse-engineering behind this effort – and I like the comments by the original code author, Ron Milner.

    To his speculations, I would say that any “easter egg” hidden in a slot machine or an ATM would probably land you in a world of trouble from the get-go if found (let alone used) – so I doubt that anyone has snuck anything into either (but who really knows – if they did, they’d be fools to try and use it!).

    As far as this being the earliest in an arcade machine? I guess it could be, but given how many other games there were prior to this one, it makes it less likely.

    Also – I would define an “easter egg” as something hidden that could be triggered by normal controls available to the user (so no mods to the circuit board). This one comes close to not being an easter egg by that definition, because of the DIP switches. But since those were put there intentionally, and allowed to be set by the operator, I’d consider it valid.

    Liked by 1 person

  8. I wouldn’t consider the Anti-Aircraft II modification to be an easter egg. An easter egg is meant to be found, where as that is something that isn’t meant to be accessible at all and was done for manufacturing purposes. It’s more of a “mod” or a “hack” in video game terms. I group it along with things like game shark hacks, hot coffee mod (GTA), or CPU overclocking that requires cut pins. Things that were not just hidden but never intended to be accessed at all and are accessible through unintended modifications of software or hardware.

    Like

  9. There was at least one other game in this cab – I think it was Depth Charge or a sub-game variant – we had it at the Seattle Pinball Show in one of our last shows before moving to Tacoma (current annual location: http://nwpinballshow.com) – that cab had blue fiberglass instead of the white like SS1 has, though. At the time I definitely recognized the cab as the same given playing a ton of SS1 back at good ol’ Sunshine Pizza, which was one of the first places in my outside-PDX hometown to get video games….

    Like

  10. Hi Ed, I’m an EE who loves classic video games and I have to say your stories are by far the most interesting I have ever read. Your attention to detail is amazing and every adventure is fascinating and incredibly engaging, as if we were right there with you trying to solve the mystery.

    Please keep up the good work!

    Liked by 1 person

  11. Ed – fantastic work! I created the first MAME driver for Starship 1 back in the early 2000s. Seeing the “HI RON!” in the rom image seems kind of familiar – If I noticed it back then I certainly didn’t realize it was part of an easter egg, let alone a first one! I’m currently updating MAME to make sure the Starship 1 driver is as accurate as possible, including fixing the problems you noted. I think it is historically very significant because aside from the easter egg – as far as I know it also contains the first (patented) “sprite-scaling” circuit, as well as being the first “first-person space sim.” I remember playing one as a kid and being blown away by it. 🙂

    Liked by 2 people

  12. This was a fantastic read! The chase scene after receiving the real console was like Hollywood, no kidding 🙂 My vote, it’s an egg and, until further investigations, it’s the first in a video game. Thanks for the great replies, too!

    Liked by 1 person

    1. Thanretro ksthe best arcade archaeological atical I’ve ever read, and a great read.
      I would have loved to have chatted during my 15 years in games, but still prefer playing and porting the early 80s arcade games to the 6502 based BBC micro.
      The retro arcade scene seems well established in the US and I hope it keeps growing here in the UK to.

      Liked by 1 person

  13. Mr. Fries.

    Very interesting article. In looking up the first Easter egg for a videogame, I came up with a possible contender. Exidy’s Starfire. Apparently, if you input certain intials in the high score list at the end you get a message that’s says ” Hi Susan” or something like that. I found an image of the Manuel for the game and it said April 1978 on it I believe, just beating Adventure by months( which I believe was released in December of 1978) But..it seems that Starship One trumps them both, possibly.

    Thank you for the article.

    Drew

    Like

    1. Thanks Drew. Here’s more about Exidy Star Fire: http://www.arcade-museum.com/game_detail.php?game_id=9758. Apparently it has two different messages depending on the initials. The link I gave lists the date as January 1980 but I found the this: http://www.americanradiohistory.com/hd2/IDX-Business/Music/Archive-Cash-Box-IDX/70s/1978/CB-1978-12-02-OCR-Page-0054.pdf#search=%22exidy star fire%22 in Cash Box Magazine from 1978 that says the game will be shipping in December (of 1978), so I think your 1978 date is correct. Starship One is definitely earlier (July 1977 as documented in the article) but yours is another fine addition.

      Like

  14. It seems unlikely that I am the first to think it’s not 10 free games, but rather 16 (#$10 in 6502 is 16)?

    Even the source code says 10 free games…is this a case of comment error?

    Or maybe the 6502 is in BCD mode when this code is run?

    Thanks for the great article!

    Like

    1. I think you are right that it’s 10 (hex) free games, but BCD is a possibility. This has been pointed out before, I just haven’t gone back to check it out. Thanks for your comment!

      Like

Leave a comment