A00000
B00001
C00010
D00011
E00100
F00101
G00110
H00111
I01000
J01001
K01010
L01011
M01100
N01101
O01110
P01111
Q10000
R10001
S10010
T10011
U1010
V1011
W1100
X1101
Y1110
Z1111

On the Subject of Pokémon Sprite Ciphers

Because memory on the Nintendo Game Boy is at a premium.

This module contains 3 screens, a keyboard, 2 arrows, and a submit button that displays the current page you’re on.

Pressing the left or right arrow takes you to the previous or next page. There are 2 pages.

To disarm the module, decrypt a word using the following five steps. Once you have the decrypted word, type it in using the keyboard. When you start typing, the screens go blank and the bottom screen will show what you are typing.

To clear your input, click one of the arrows.

Once you are satisfied with your input, press the button labeled “SUB” to submit your answer.

Step 1: Encrypted Binary Retrieval

For this step, use the letters from the top, middle and bottom screens on page 1 and the top screen on page 2. Concatenate them in this order and convert this encoded string to binary by replacing each letter with a binary code from the table on the right.

Step 2: Run-Length Encoding Decryption

First, remove the first bit. If it’s a 1 bit, you will start in raw mode; otherwise, in RLE mode. Afterwards, the two modes simply alternate.

Raw mode: Read pairs of bits until you encounter a 00 pair. Leave these bits intact, but remove the 00 pair.

RLE mode: Let n be the number of 1-bits from the current position, plus one. (Note that if the next bit is 0, then n = 1.) Form a binary number from the next n bits (this will consist of all 1-bits plus a single 0-bit), and another number from the n bits following that. Add those two binary numbers. Add one. Multiply by 2. Then replace all of these 2n bits with that many 0-bits.

Step 3: Bitmap Decoding

Remove the last bit from the bit sequence obtained in step 2. The rest of the bit sequence is a monochrome bitmap whose width and height are prime. If the removed bit is 1, the bitmap’s width is the larger prime, otherwise the smaller one.

Step 4: XOR transformation

This transformation applies separately to each row of pixels in the bitmap.

  • The first bit remains unchanged.
  • Each subsequent bit must be xored with the previous bit. Make sure to use the previous bit’s new value after it has been transformed.

Step 5: Solution extraction

The solution word may be represented within the final bitmap in any of the following ways:

  • Vertical Morse code: each pixel column is one letter, to be read from top to bottom.
  • Pigpen: each 3×3 box of pixels represents a letter written in Pigpen cipher.
  • Semaphore: each 3×3 box of pixels has its middle pixel set and the remaining pixels indicate the positions of Semaphore flags.
  • Unified English Braille: each 2×3 box of pixels represents a Braille glyph.
  • Alphabet: the message may also be written in plain English using the below 4-pixel-tall font. (In the message, there is no spacing between the letters.)
a b c d e f g h i j k l m n
o p q r s t u v w x y z