Multi-layer retro puzzle contest

Steve Chamberlin offers up a multi-layered puzzle on his blog.

It’s all about this image and what you can get out of it:

image

There are some hints, of sorts, in the post. The solution is a person’s name.

Beware: the comments to the post contain spoilers and the solution!

His very next post spills all the beans, as it was solved in a little over a day. But let’s try not to post spoilers here, in case anyone wants to try to puzzle it out.

(There’s a cogwheel in the compose window on this forum, with a Hide Details choice, which you can use to hide things like spoilers.)

2 Likes

My first guess is,

Hidden in case of spoilers

it’s Atari 8-bit output (ATASCII). It doesn’t look like a BASIC program, structurally (the start of the lines won’t translate to sensible line numbers), so I guess, we’re supposed to shift and and/or unscramble what’s given by the ATASCII-codes.
(Here, it starts to become laborious, since any further analysis would require to [manually] transcribe the character codes represented by the image.)


Update: This would be the first line (transcoded manually, beware off any errors – indeed, see update 3 below):

41 1F C0 20 8F C3 F8 5C F0 04 7F 18 5C F1 FC 7F 00 3C 89 C8
80 E1 EF B8 50 0F 22 FB E4 1E 00 88 DF 02 C7 1C 70 00 00

If anyone can read anything into this, you’re welcome!


Update 2: What it is not: 6502 code

Here’s a disassembly of what starts promising, but becomes a mess soon:

41 1F      EOR ($1F,X)
C0 20      CPY #$20
8F         ???
C3         ???
F8         SED
5C         ???
F0 04      BEQ $000E
7F         ???
18         CLC
5C         ???
F1 FC      SBC ($FC),Y
7F         ???
00         BRK
3C         ???
89         ???
C8         INY
80         ???
E1 EF      SBC ($EF,X)
B8         CLV
50 0F      BVC $0029
22         ???
FB         ???
E4 1E      CPX $1E
00         BRK
88         DEY
DF         ???
02         ???
C7         ???
1C         ???
70 00      BVS $0026
00         BRK

Well it could start with a data section of sorts, but it’s not 6502 code straight out of the box.


Update 3: There were, indeed, errors. This is the first line as decoded programmatically:

41 1F C0 20 8F E3 F8 07 F0 04 7F 18 07 F1 FC 7F 00 3C 89 C8 80 E1 EF B8 70 0F 22 FB E4 1E 00 88 8E 01 C7 1C 70 00 00
1 Like

I’ve read the subsequent post so have completely disqualified myself, but

Hidden in case of spoilers

it turns out ImageMagick has a function which makes it easy to map from a known character set to a set of character codes.

So what I thought might be arduous and not worth it might turn out to be relatively straightforward.

So…

Hidden in case of spoilers

…I wrote my own decoder (too lazy to read the ImageMagick docs) and this is the output:

41 1F C0 20 8F E3 F8 07 F0 04 7F 18 07 F1 FC 7F 00 3C 89 C8 80 E1 EF B8 70 0F 22 FB E4 1E 00 88 8E 01 C7 1C 70 00 00
49 10 40 20 88 22 08 04 00 04 40 06 04 11 04 40 00 22 DA 28 80 91 02 24 88 08 A2 08 24 10 01 48 90 00 28 82 88 00 00
22 10 40 11 08 22 08 04 00 04 40 01 84 11 04 40 00 22 FA 28 80 91 02 24 88 08 A2 10 44 10 02 28 A0 00 28 82 88 00 00
22 10 40 11 08 22 08 04 00 04 48 00 44 11 04 48 00 3C AA 2A 80 E1 C2 38 88 0F 22 20 84 1C 02 28 A6 00 48 84 88 00 00
14 10 40 0A 08 22 08 04 00 04 40 01 84 11 04 40 00 22 8A 2F 80 A1 02 28 88 08 22 41 04 10 03 E8 A2 00 88 88 88 00 00
14 10 40 0A 08 22 08 04 00 04 40 06 04 11 04 40 00 22 8A 2D 80 91 02 24 88 08 22 82 04 10 02 28 92 01 08 90 88 00 00
08 1F C0 04 0F E3 F8 07 F1 FC 40 18 04 11 FC 40 00 3C 89 C8 80 89 E2 22 70 08 1C FB E7 9E 02 27 0E 01 E7 1E 70 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 C0
7F 1F C0 31 FC 03 F8 FE 3F 8F E0 00 00 20 8F E3 00 06 01 FC 7F 1F C7 F0 0F E3 F8 06 3F 80 41 1F C0 81 FC 7F 00 03 E0
40 10 00 C1 00 02 08 80 20 88 20 00 00 20 88 00 C0 01 81 04 40 10 44 10 08 02 00 18 20 00 41 10 41 41 04 41 00 00 80
40 10 03 01 00 02 08 80 20 88 20 00 00 11 08 00 30 00 61 04 40 10 44 10 08 02 00 60 20 00 22 10 41 41 04 41 00 00 80
40 12 04 01 20 02 48 80 24 88 20 01 80 11 08 01 08 00 11 04 48 10 44 10 08 02 40 80 24 00 22 10 42 21 04 49 00 08 88
40 10 03 01 00 02 08 80 20 88 20 01 80 0A 08 00 30 00 61 04 40 10 44 10 08 02 00 60 20 00 14 10 42 21 04 41 00 00 00
40 10 00 C1 00 02 08 80 20 88 20 00 00 0A 08 00 C0 01 81 04 40 10 44 10 08 02 00 18 20 00 14 10 44 11 04 41 00 00 00
7F 1F C0 31 00 03 F8 80 3F 8F E0 00 00 04 08 03 00 06 01 04 40 1F C7 F0 0F E3 F8 06 20 00 08 1F C4 11 FC 7F 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00
7F 1F C7 F1 FC 60 00 00 01 80 7F 1F C7 F1 FC 03 F8 FE 04 0F E0 10 47 F1 80 02 08 FE 04 0F E3 F8 00 00 00 00 00 00 00
41 10 00 11 04 18 00 00 00 60 41 10 04 11 04 02 00 80 0A 08 20 10 44 00 60 02 08 82 0A 08 22 08 00 00 80 00 00 00 00
41 10 00 11 04 06 00 00 00 18 41 10 04 11 04 02 00 80 0A 08 20 08 84 00 18 01 10 82 0A 08 22 08 00 00 C0 00 00 00 00
41 10 00 11 04 01 00 30 00 04 41 12 04 11 04 02 00 80 11 08 20 08 84 00 84 01 10 82 11 08 22 48 00 47 E0 00 00 00 00
41 10 00 11 04 06 00 30 00 18 41 10 04 11 04 02 00 80 11 08 20 05 04 00 18 00 A0 82 11 08 22 08 00 00 C0 00 00 00 00
41 10 00 11 04 18 00 00 00 60 41 10 04 11 04 02 00 80 20 88 20 05 04 00 60 00 A0 82 20 88 22 08 00 00 80 00 00 00 00
7F 10 00 11 04 60 00 00 01 80 41 10 07 F1 FC 03 F8 80 20 8F E0 02 04 01 80 00 40 FE 20 8F E3 F8 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00

(If interested, it’s just a matter of reading the image and a sample image of ATASCII into a HTML5 canvas and scanning blocks of 8 x 8 pixels into a linear, binary representation each, and then comparing the message to the array of sampled ATASCII characters.)

1 Like

Congrats! This is called ‘level 3’ in the notes.

BTW, since this may be of broader interest, here’s my simple and unambitious image-to-ATASCII parser:

https://www.masswerk.at/img2atascii/

So…

Hidden in case of spoilers

…looking at the data, there’s some box-like structure to it. Could it be some kind of zero-padded file format? However, a quick search doesn’t reveal any file signature starting with the magic numbers “41 1D” (horizontally) or “41 49” (vertically). Also, the box-like structure only reveals itself at the curious row length of 39 bytes and I never heard a file format using chunks of this size.

Hm. If the particular size matters, is it a bitmap image?

Let’s try an interpretation as a greyscale image (data as intensity values), here scaled to 800% pixel-size:

bitmap-greyscale

This looks promising, but there seems to be some redundancy to it. Is it a RGB image showing some kind of typography?

So, here’s the data interpreted as a RGB bitmap:

bitmap-rgb

Seems almost readable, but not quite.
I think, it’s close, but I’m getting something wrong. – Is there some chunk size per channel involved?
(I tried some variants of this, but I’m not getting any further for now.)

Hint if you want it

Try various x and y, and various bit depths

Doesn't seem to lead anywhere

I tried 4-bit and 6-bit with respective width-adjustments, both in RGB and as a greyscale (maybe index-mapped), but it doesn’t seem to reveal any structure. Or I’m not recognizing, what I should be recognizing.
Looks like I’m at a dead end.

So I looked up the solution…

Ok, regarding the second part of level 3 (color depth), sometimes you don’t get the most obvious … no chance I would have thought about this anytime soon.
Level 4 would have been quite obvious (at least to anyone socialized with Carl Bark’s Junior Woodchucks[1]). However, no chance I would have gotten the cultural reference (level 5). It’s simply not on my map. A propos map, I doubt I would have mastered Level 6, given inevitable frustrations over the message as a whole.

[1] in German, “Fähnlein Fieselschweif” – thank you, Dr. Erika Fuchs! :slight_smile:

1 Like