# Imp 2 Map Gen Keys: Over-Explained

**ETA**: I tried to put this together more concisely in another blog post. See User blog:Enojado271/Imp 2 Map Gen Keys: In Summary for something maybe a little clearer.

Note: I did all this on version 1.0.0.3 for Windows.

## Known pairs

- Igea/Blue (from the wiki)
- Iora/Neni
- Swiga/Swark for roots iga/ark
- Iordelly/Kirnally for roots Iorde/Kirna (
**ETA**: except Iorde and Kirna aren't really roots, see below) - Caun/Dath
- Teva/Rhos
- Cis/Cog for roots is/og

(and more see below)

iga/ark appear to be root words, you can add the same things to either one and get the same map. The same is true for Iorde/Kirna and all the four-letter pairs. (Go crazy! Iordeiga/Kirnaark/Iordeark/Kirnaiga all work.) You can step up and down the ASCII Link titlecharacter line and keep making new pairs, Teva/Rhos Tewa/Rhps Texa/Rhqs ... and some Unicode worked for me, TeÇa/RhÀs made a pair. Capitalization is just 32 steps down the line, so Iga/Ark iGa/aRk ...

Keys are max 32 characters long, and how long the pair becomes doesn't seem to matter, though all known pairs are the same length.

I was never able to break a pair by moving them in step up and down the line, regardless of how many of the characters I changed. (**ETA**: true for ASCII. Extended Unicode doesn't work properly.) )'!/!2+ is iga/ark shifted 64 steps down, and it's a pair. But you can't cut into the roots: Iorde/Kirna and Caun/Dath both have one of the same characters in the same position, but Iode and Kina or Cun and Dth aren't pairs.

Failed endeavors included trying backslashed and caretted control characters, and converting the root words to decimal/bin/hex and summing them or looking for patterns.

I think there's two map gen styles. One for characters randomly typed in, another using some sort of syllabary -- various root syllables were defined arbitrarily so that maps could have pretty names, but they wanted more syllables than they had map gen actions that they liked, so we got synonyms. (**ETA**: I no longer believe this.)

## ROUND 2: An ASCIIcking

Further random map generation found two very interesting new pairs, or rather a pair and added one to an existing pair for a triple:

Kaes/Kana for roots es/na

Teva/Rhos/Toba for roots ev/ob

I noticed the na in Kirna and realized something I thought was a root might not be! In fact Kirna/Kires is a pair. So what does that say about Iorde

Kirna is to Kires as Iorde is to...

na is to es as de is to...

Converting to decimal:

110 97 is to 101 115 as 100 101 is to... 91 119 (-9,+18)

91 119 is [w and de/[w is in fact a root pair.

EUREKA!

First human-generated root pair: de/[w

Kir and Ior is not a pair.

What na does to Kir es also does to Kir

What de does to Ior [w also does to Ior

The result of what na or es do to Kir is the same as the result of what de or [w do to Ior

Teva/Rhos/Toba provide a similar opportunity.

ev is to ob as ho is to...

101 118 is to 111 98 as 104 111 is to 114 91 (+10,-20)

114 91 is r[ so Rhos/Rr[s should be a pair... and they are.

though if I had said ob is to ev I would have gotten (-10,+20)

94 131 I can't use, 131 is too high

step down ten, 94 101 should be a pair with 84 121

^e/Ty is a pair.

But not all pairs are two letters. iga/ark but not ig ar, ga rk, or i_a a_k.

105 103 97 to 97 114 107 (-8,+11,+10)

if each number is half the weight of the one before, the +10 carries over as a +5, then this is (-8,+16) which fits the previous pattern. It also suggests why they're pairs, a -8 in the first place and a +16 in the second place would cancel each other out.

If this were true what sort of new pair could I construct?

(-4,+12,-9,+4,-7,+6)

Newmap/JqnqZv is indeed a pair.

EUREKA... again!

First pair generated on both sides by a human: Newmap/JqnqZv

Do all pairs need to be the same length? If I have a key of 33 88 (**ETA**: you mean 66 88?) and apply (+44,-88) to it, is it a pair with 77 0? !X and M are not a pair.

What if the null is in front? Take 33 33 (**ETA**: wrong again, it's 66 33) and give it (-33,+66) is it a pair with 0 99? !! and c are also not a pair.

...and correcting for the above errors doesn't create pairs of differing lengths either.

Using this information to test the syllabary idea, I assume that if any map were named specifically, it would be the tutorial maps. When I checked them they changed -- I saw good7 then I restarted and saw good10 . good10 is the same in the tutorial and the map room, and a simple rotation finds good10/hmpb2. is a pair. So if they're named it's on the underlying numerical level.

So what does na do to Kir to make it the same as what de does to Ior

Kirna 75 105 114 110 97 = 75*16 + 105*8 + 114*4 + 110*2 + 97 = 1200+840+456+220+97 = 2813

Iorde 73 111 114 100 101 = 73*16 + 111*8 + 114*4 + 100*2 + 101 = 1168+888+456+200+101 = 2813

But Kina and Iode aren't a pair...

Kina 75 105 110 97 = 75*8 + 105*4 + 110*2 + 97 = 600+420+220+97 = 1337

Iode 73 111 100 101 = 73*8 + 111*4 + 100*2 + 101 = 584+444+200+101 = 1329

So every map has a canonical number. Kirna/Iorde is map 2813. There must be a way to get pairs of varying lengths.

z is 122. !8 is 33*2+52=122. z and !8 are not a pair.

To double-check I'll make a six-character 2813.

7!!!!? = 55*32 + 33*16 + 33*8 + 33*4 + 33*2 + 63 = 2813

7!!!!? is not a pair with Iorde

So **only every key of the same length that sums to the same number will give the same map**. Kirna/Iorde is map 2813 of the five-character group.

## ROUND 3: The Unicodening

I think my last chance to break this open and get the candy is Unicode. The highest character I've been able to get the program to accept is Latin Small Letter Z with caron, U+017E, decimal 382.

!!ž is 33*4+33*2+382=580 (**wrong**)

x!" is 120*4+33*2+34=580

These are not a pair, which means **something about Unicode is different**. TeÇa/RhÀs did work, so at some point it stops working. þc/ÿa are a pair, so the Latin-1 Supplement block of Unicode works as expected. (**ETA**: It doesn't.)

Žc and ža (that's U+017D and U+017E) don't make a pair, so Latin Extended-A isn't playing nicely with itself, much less anything else.

@þ = 64*2+254 = 382 (**wrong**) and is not a pair with ž

Through brute force and ignorance I discovered that !œ/ ž is a pair. That's an exclamation point and U+0153, paired with a space and U+017E. So 33*2+U+0153 = 32*2+U+017E.

À`/!ž (that's U+017E) are a pair

192*2+96=480 (**wrong**)

33*2+414=480 (**also wrong**)

414? Why 414? (It might not be 414 -- I don't know that À is 192. [**It isn't**.])

!!ž is 33*4+33*2+414=612 (**wrong**)

~!* is 126*4+33*2+42=612

but they are not a pair

!À is 33*2+192=258 (**wrong**)

p" is 112*2+34=258

they are not a pair

Unicode doesn't do what I thought it did.

~Œ/dÀ implying (**ETA**: incorrectly) U+0152 is twenty-six after À

Lucky that map produces such a notable Portugal, I spotted it immediately when I made H

~Œ/dÀ/ H

H = 32*2+72=136

0( = 48*2+40=136

dÀ = 100*2-64=136 whaaa? À is negative 64?

~Œ = 126*2-116=136

!!À = 132+66-64 = 134

"À~ = 136-128+126 = 134

!!À/"À~ so À is truly negative 64 and multiplied as such

À is decimal 192. 192-256 = -64

But Œ U+0152 is decimal 338, which has no apparent connection to -116

À`/!ž

-64*2+96 = -32

33*2-98 = -32

So ž U+017E decimal 382 is -98.

ž/!œ

32*2-98 = -34

33*2-100 = -34

So œ U+0153 decimal 339 is -100. If there's a pattern here it's beyond me.

!!/þg

33*3 = 99

-2*2+103 = 99

þ U+00FE decimal 254 is -2, 254-256. So perhaps the wraparound holds for Latin-1 Supplement but not Latin Extended-A.

If that's true, ß U+00DF decimal 223 should be -33. And it is.

AA/rß

65*3 = 195

114*2-33 = 195

So Latin-1 Supplement is broken but predictably so, and Latin Extended-A is just broken.

I think I've learned all I can from this little exercise, it seems unlikely I'll find a pair of differing lengths. And even more unlikely I'll figure out how to make a map I want, but didn't somebody make a map editor for this game? Anyway, if you've ever wanted to visit the Big Bang, here are some maps that sum to nothing. (Even though they all equal zero, they should be different maps because they're different lengths.) Be the first kid on your block to play on Map Zero! (There is nothing special about any of these Maps Zero.)