The BBC has posted a story, The mysterious origins of an uncrackable video game, which describes the investigation by two Game Archaeologists into the Atari 2600 game "Entombed".
The article is a narration of the story outlined in the abstract: Entombed: An archaeological examination of an Atari 2600 game (DOI: https://doi.org/10.22152/programming-journal.org/2019/3/4) and full article (pdf):
The Atari 2600 was an extremely limited device with 128 bytes of RAM, a scaled down version of the venerable 6502 processor called the 6507 which had only 13 address liness restricting it to 8 kB of addressable memory, no interrupt processing, and it had no frame buffer, so each line of pixels to be displayed had to be calculated in real time — racing the beam — so being limited to exactly 76 machine cycles per line. The paper succinctly puts it: "Given that 6507 instructions all take two or more cycles, there was no room for inefficiency."
As if that were not enough of a challenge, there were no libraries in ROM, all code had to be hand-crafted. No programmer documentation meant that to even get started programming, one had to reverse engineer how the 2600 even worked.
The word "uncrackable" in the title is not of the crypto flavor one would normally assume, but instead of the "How did they come up with that?" variety. Specifically: create a scrolling maze that had a path through it, all with the aforementioned hardware limitations.
The part that defies understanding is how did the programmer ever conceive of — and go about implementing — an algorithm that only needed to know the values of 5 neighboring pixels and a 32-entry lookup table?
| c | d | e | |||
| a | b | X |
In this case a pixel was either on (1=wall) or off (0=no wall).
Given the values of a, b, c, d, and e: compute the value of X: wall, no wall, or random().
The actual journal article goes into considerable depth as to how they deduced this code and even went so far as to write Python code to implement it which they included in an appendix.
As the BBC put it:
It seems straightforward, but the thing is, no-one can work out how the table was made.
Aycock and Copplestone have tried retro-engineering the table. They looked for patterns in the values to try and reveal how it was designed, but this was to no avail. Whatever the programmer did, it was a stroke of mild genius. Every time the game is played, a reliably navigable maze is pumped out. Were the table’s values random or even slightly different, the maze would likely fail to be drawn with a playable path through it. It just seems impossible to explain.
[...] The best guess the pair have is that the programmer behind the maze algorithm must have manually fine-tuned the table values until the game worked as desired, but that still doesn’t really explain the logic behind it.
(Score: 3, Interesting) by choose another one on Wednesday September 25 2019, @09:23AM (3 children)
Probably right. Problem is that with hardware complexity these days trial-and-error or calculate-all-possibilities is off the table from the start, but the tech archaeologists forget that when you've finished marvelling at how limited and constrained hardware was in the past you need to revisit those assumptions when looking at software designed to run on it - terribly constrained and limited also means try-every-way is a feasible design method.
There is also an element of survivor bias - we look at the best of the past and marvel at how good the creators were, forgetting that we only have the best to look at because the vast majority of failed stuff has long since been lost forgotten erased destroyed re-purposed or painted over. Look at all those massive cathedrals still standing after so many centuries - those medieval stone masons must have been geniuses...
(Score: 2) by FatPhil on Wednesday September 25 2019, @10:26AM (2 children)
After I posted my prior comment I realised that I should have equated the wide-eyed reaction to the table-driven algorithm, not being able to work out the simple rules behind it, as being similar to those who look at life on earth and say "Irreducible complexity! There must be some intelligent designer behind this!". Nope, just a stoner (read the paper) who just threw something random together that worked just well enough to be a playable game. It's as bad a design as the eyeball (blind spots because the sensor's back-to-front), or metabolism of lipids (break it apart, pack it together, break that apart, pack it together again, break it apart again...), or putting the fun hole between the piss hole and the shit hole (and the fun switch on the far side of the piss hole, so there's no avoiding the piss hole), or ... .
Great minds discuss ideas; average minds discuss events; small minds discuss people; the smallest discuss themselves
(Score: 2) by Bot on Wednesday September 25 2019, @08:43PM
If it is irreducible complexity, you gotta find a model to reduce it. It is not a theological problem. Creationists and atheists make it so, but it isn't, because the hypothetical God is not bound by time, so it can theoretically obtain the desired outcome from a freely evolving mechanism instead of creating it with an ad hoc intervention. In other words, creation vs evolution is meaningless in the hypothetical dimension of God. If that seem strange, consider an arrow of time t and a banal function of t, f(t) = 2t. You know every value because you are not bound by t. You don't need to travel over t to plot it. You know it for every possible value already. Such is God wrt time.
Account abandoned.
(Score: 2) by choose another one on Wednesday September 25 2019, @08:43PM
> The builders certainly learnt what flying buttresses are for. Namely keeping your walls vertical.
Probably by trial and error again - not by carefully calculating force lines. Buttresses (non flying) would have been used when walls started to bow, build em taller and wider until wall stops bowing. Flying buttresses were for the gothic taller-thinner look and maybe to save some stone, someone figured that the most important bit was the top and the outside (having figured how far up and out was needed) so why not save some stone by making it half an arch. Or something like that :-)