
1987: Kid submits 7 Robotron bugfixes using only the machine code from the ROMs - bluedino
http://www.robotron2084guidebook.com/technical/christiangingras/
======
vidarh
The most amazing thing about this to me is the description of the internals of
Robotron... Given a lot of the 8-bit machine code I've read it's simply
astonishing to hear about a game of that era being so structured rather than
the more typical approach of the day of hardcoding data all over the place
(some games even used the on screen life counter as the actual "variable"
holding the number of lives left, often full of bugs like not overflow
checking the values) and using a basic event loop hanging off the irq. A lot
of the time it was seen as necessary in order to fit everything in the small
amount of memory, and so even on larger machines like the Amiga a lot of
programmers kept manually laying out data structures for many years...

Compare the recently released Prince of Persia code to that description, for
example. I found the Prince of Persia code very clean and readable for the
period when I read it, but still relatively typical of the style of 80's 8-bit
machine code programs even if it looks like it avoided the dirtiest tricks.

A game from that era using dynamic memory allocation, multi-tasking and an
object oriented structure just sounds totally alien. Even Amiga games, running
on a system with substantially more memory, and on an OS with substantial
built in support for it mostly, - with some honourable exceptions - just
disabled the multi-tasking entirely and often hung everything off a loop tied
to an interrupt handler or at most an interrupt handler and a separate "main"
thread.

~~~
drzaiusapelord
That's a Eugene Jarvis and Larry DeMar game. He also co-wrote Defender, Smash
TV, and other classics with DeMar. Eugene now teaches at DePaul in Chicago.

[http://en.wikipedia.org/wiki/Eugene_Jarvis](http://en.wikipedia.org/wiki/Eugene_Jarvis)

~~~
joezydeco
Jarvis also owns/runs Raw Thrills, a game design company outside of Chicago.

[http://www.rawthrills.com](http://www.rawthrills.com)

DeMar owns/runs Leading Edge Design, a slot machine design company. He also
cofounded Spooky Cool Labs, a social game design firm. Spooky Cool was sold to
Zynga late last month.

[http://www.spookycool.com](http://www.spookycool.com)

------
EdwardCoffin
If you want to read a bit more about Robotron, there's another good write-up
by someone who did the same thing: reverse engineered Robotron. It's a much
shorter article, but includes some C# representations of the process
management:

Steve's Tech Talk: Robotron and OOP
[http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/0...](http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/03/03/9632.aspx)

~~~
ChuckMcM
There is an old programmer joke that goes "I can write BASIC code in any
language!" which is a lament about people writing spaghetti type code (which
was normal for early programs in BASIC) even when the language supported much
more elegant constructs. But the inverse is also true (although people rarely
complain about it :-) since ultimately you're compiling into machine code, if
you're writing in machine code you can write as elegantly as you could in the
most beautiful high level code, its a function of the programmer, not the
language.

There are people who write solid, supportable, code in any language. keep
those people around as they will ultimately create the most code with the
least technical debt.

~~~
alexk7
The original joke is "The determined Real Programmer can write FORTRAN
programs in any language." It's from an essay written by Ed Post titled "Real
Programmers Don't Use Pascal". It's before BASIC :)

~~~
Someone
Nitpick: it can't be from "before BASIC" if it mentions Pascal. BASIC is older
than Pascal (1964 vs 1970, according to Wikipedia)

Also,
[http://en.wikipedia.org/wiki/Real_Programmers_Don't_Use_Pasc...](http://en.wikipedia.org/wiki/Real_Programmers_Don't_Use_Pascal)
(with links to the essay; look at the email address. That alone shows that we
are talking of a real programmer) says it's from 1983.

------
scrapcode
Cached link, because I couldn't get it to load:
[http://webcache.googleusercontent.com/search?q=cache:HIzQu_b...](http://webcache.googleusercontent.com/search?q=cache:HIzQu_bwBgkJ:www.robotron2084guidebook.com/technical/christiangingras/+&cd=1&hl=en&ct=clnk&gl=us)

~~~
gnosis
More caches:

Part 1 -
[http://www.robotron2084guidebook.com.nyud.net/technical/chri...](http://www.robotron2084guidebook.com.nyud.net/technical/christiangingras/)

Part 2 -
[http://www.robotron2084guidebook.com.nyud.net/technical/chri...](http://www.robotron2084guidebook.com.nyud.net/technical/christiangingras/part2/)

Part 3 -
[http://www.robotron2084guidebook.com.nyud.net/technical/chri...](http://www.robotron2084guidebook.com.nyud.net/technical/christiangingras/part3/)

Technical information about the shot-in-the-corner patch -
[http://www.robotron2084guidebook.com.nyud.net/technical/chri...](http://www.robotron2084guidebook.com.nyud.net/technical/christiangingras/patch/)

Photo album -
[http://www.robotron2084guidebook.com.nyud.net/technical/chri...](http://www.robotron2084guidebook.com.nyud.net/technical/christiangingras/photos/)

------
DuskStar
That was absolutely crazy. He decoded a 48K assembly program on _paper_ ,
while working as a security guard? Just amazing.

~~~
vidarh
I don't want to diminish what he did, but consider that this was one of the
most common methods of learning assembler programming in depth in that era.
Most books on the subject were relatively primitive in the context of games
and demo programming, and so if you didn't want to lag behind, you needed to
figure out techniques by studying disassembled programs.

(EDIT: Just to add that this is in reference to the disassembling bit. Pulling
eproms to dump them and studying them so intently you start to fix bugs the
game designers hadn't managed to solve is certainly dedication well above the
typical level)

Many large demos at least for 8-bit computers, and quite likely some games
too, were written even without a symbolic assembler, but instead entered using
a simple machine code monitor (think just one step above debug.com on MS DOS,
and decidedly more primitive than programming directly in gdb...) using
hardcoded address references instead of labels.

I'd actually been programming on the C64 for a couple of years before I got an
assembler that supported labels that was good enough to use (I had some before
that, but they wasted too much memory and/or were too slow to seem worth it)
and from people I met I gather that's a fairly common experience.

~~~
tmoertel
The printout-and-highlighters method of reverse engineering was indeed common
way back then. It became even more well known in 1982, when Don Lancaster
wrote a book entitled _Enhancing your Apple II_. In it was a chapter on
"Tearing into Machine-Language Code," in which he explained a method for using
a disassembly printout and colored highlighters to quickly reverse-engineer
machine code. This method soon spread beyond the Apple II community. For
example, from a 1983 book review in _Microcomputing Magazine_ :

    
    
        Software buffs are likely to vote for the 
        third chapter ("Tearing Into Machine- 
        Language Code") as the jewel of the 
        collection. It is a unique contribution that 
        applies to all machine languages, of 
        which Apple is only one. Possibly no 
        manual anywhere that describes the use 
        of disassemblers and techniques for ex- 
        tracting hidden code can equal this 
        60-page adventure in decryption. Pro- 
        grammers would do well to look into this 
        chapter to check on techniques they 
        might have missed; commercial software 
        vendors may want to know some things 
        that hackers do to defeat them. 
    
        Source: Microcomputing Magazine (October 1983) [1]
    
    

[1]
[http://archive.org/stream/kilobaudmagazine-1983-10/Microcomp...](http://archive.org/stream/kilobaudmagazine-1983-10/Microcomputing_1983_October_djvu.txt)

~~~
vidarh
Interesting... The Apple machines were pretty much unknown in large parts of
the world outside the US, so I've actually to this date not even seen an Apple
II in person as far as I'm aware, and didn't come across Don Lancaster's stuff
until a year or two ago either.

Europe was dominated largely by Commodore, with Sinclair, and Atari and maybe
Amstrad in "supporting roles" far ahead of the usual suspect of weirder
machines for pretty much the entire 80's, until the PC finally got the upper
hand.

The computer shops near me in the early 80's at one point or another probably
stocked about 20-30 distinct home computer brands, but I can't remember seeing
any Apple products at any of them until the Macintosh.

It's fascinating how the view of home computing is often so completely
different from the US vs Europe as a result.

~~~
bluedino
Were there large import tariffs or something making it prohibitively expensive
to get Apple computers from the US, or did Apple not market the machines
internationally?

Countries such as the USSR and Brazil simply made their own Apple clones. I'd
suspect Western Europe did not do so because of legal ramifications.

~~~
vidarh
No it wasn't down to tariffs. Keep in mind Commodore did immensely well in
Europe despite being a US company (though in name from some point in time it
was a Bahamas corporation for tax reasons)

It was many factors I think.

Apple indeed was not set up to handle international sales well, while
Commodore had a huge international channel owing to a much longer history (the
progenitor of Commodore Business Machines was founded in 1954).

But all indications are that Commodore (and probably Tandy) outsold Apple
substantially in the late 70's in the US too. At that point Apple got the
"hacker" market, Commodore focused on the business market.

It wasn't until the VIC 20 that Commodore started aggressively going after the
consumer market, but the VIC 20 was a low end product, and it was probably
first with the C64 that Commodore had a product going after some of the same
market as the Apple II.

At this point Apple increasingly was the expensive choice, and the European
market was apparently a lot more price sensitive. On top of that Apple had
much more aggressively pursued schools in the US, and so I guess US parents
might have seen the Apple II as a more "serious" choice at a time when
Commodore was increasingly getting associated with games.

Commodore thoroughly trounced Apple in worldwide sales of 8-bit machines and
probably for quite some time in 16 bit models from soon after the introduction
of the Amiga, but more and more of their output went to Europe for these
reasons (eventually quite a lot of Commodores machines were also manufactured
in Germany) but also because Tramiel quickly realized that the European
markets were higher margins, and so any if supply couldn't be ramped up quick
enough for certain models, Europe got priority.

Commodore also burned itself in the US, and its US dealer network, through
extreme price war with Texas Instruments and Tandy (pushing things so far that
TI pulled out of the market and posted massive losses, but also massively
hurting Commodore's profitability - likely a major factor when Jack Tramiel
was ousted) and the damage it did to its good will with its US dealer network
probably shouldn't be under estimated.

(If you're interested in the Commodore/non-Apple view of the early home
computer market, "Commodore: A company on the edge" by Brian Bagnall is a
fascinating read)

------
jackbravo
Part 3 is also really interesting.

[http://www.robotron2084guidebook.com/technical/christianging...](http://www.robotron2084guidebook.com/technical/christiangingras/part3/)
(cached:
[http://webcache.googleusercontent.com/search?q=cache:SOgJkJa...](http://webcache.googleusercontent.com/search?q=cache:SOgJkJa0cbwJ:www.robotron2084guidebook.com/technical/christiangingras/part3/+&cd=1&hl=en&ct=clnk&gl=us))

Incredible that he was working for minimum wage after completing this. And he
is true on saying that we value too much a university diploma (but this is
slowly changing).

------
AndrewBissell
There is an interesting bug which I think has been left even in the ROMs which
fix the more annoying problems like the corner shoot crash.

The objective of the game is to dodge and kill all the Robotrons on each
screen while "saving" as many humans as possible by touching them. One of the
Robotron models is the Brain, which reprograms the humans and sends them
chasing after you. On the first level with the Brains, though, there are a
whole bunch of Mommies on the screen and one Mikey (a little kid dressed in
red). It turns out that the Brains won't start reprogramming humans until you
save Mikey, so if you avoid him and gather up all the Mommies, you can rack up
a lot of points and make the level much easier.

So, kind of a bug that turned into a feature. It's a one-off thing and
probably not too relevant to people scoring well over 2 million points, but
for a guy like me (many heartbreaking runs ending in the 900,000s), a good
score on that level could be make-or-break for a whole 10-15 minute run.

Some of the scores guys put up on the original machines in the early 80s are
even more impressive when you consider they could end their game at any time
by shooting into the corner the wrong way.

------
420vision
What an abrupt ending... no resolution or anything, just this random tidbit!

"Larry insisted to come back and drive us to the airport. When he aggressively
honked at a city bus driver for trying to cut him, this felt like a life
lesson for me"

~~~
Untit1ed
There's another page that explains what happened after - they offered him a
job after he'd finished college but the video game crash ended up stopping
that.

------
jongold
Why was he working as a security guard instead of writing programs?

~~~
sp332
In one of the later parts, he complains that employers only look at diplomas
instead of what you can actually do. His prospects opened up a bit after he
graduated.

------
mathattack
I think this is him now ->
[http://www.linkedin.com/profile/view?id=73484462](http://www.linkedin.com/profile/view?id=73484462)

------
sgt
What does he mean by partner? The partner seems twice his age so perhaps it's
a poor translation for friend, professor, father, etc?

------
healthenclave
Awesome !! Is there so info on -

\- which country was he from ? \- Did he become a successful coder ??? \- What
is he upto these days ??

This story is incomplete !!

~~~
jackbravo
There is a part 2 and 3. I believe he was Canadian:

\-
[http://www.robotron2084guidebook.com/technical/christianging...](http://www.robotron2084guidebook.com/technical/christiangingras/part2/)
\-
[http://www.robotron2084guidebook.com/technical/christianging...](http://www.robotron2084guidebook.com/technical/christiangingras/part3/)

------
rasmus4200
I loved this game. Great read thank you.

------
Ellipsis753
This is truly an amazing feat. What an awesome thing to do. My hat is off to
him.

------
sp332
In part 3 a controller is mentioned called a "wireball". What is that?

~~~
joezydeco
It sounds like a messy translation of "mess of wires", like Christian had
soldered on a bunch of extra wires to scope out various signal lines and
interrupt the clock, etc.

~~~
pbsdp
[http://en.m.wikipedia.org/wiki/Wire_wrap](http://en.m.wikipedia.org/wiki/Wire_wrap)

------
cromwellian
Epic, pure epic.

