
Doom (1993) Encryption - turrini
https://twitter.com/Foone/status/1189249817492557826
======
ibejoeb
Neat stuff, but this really affirms, to me, that Twitter is a really terrible
platform for any content longer than a single tweet.

~~~
philshem
A Twitter thread to explain why @foone uses Twitter threads:
[https://twitter.com/foone/status/1066547670477488128?s=21](https://twitter.com/foone/status/1066547670477488128?s=21)

~~~
LIV2
Is there a reason someone can't just ramble in a blog post?

~~~
foone
ADHD. If I have a long-form blog post to write end, I get caught up in going
back and rephrasing and re-editing and such, and it never gets finished.

Twitter's paragraph-size chunks with minimal editing (if I really have to, I
can delete the last post and re-create it) means that I can't get stuck in the
process of editing and revising, so I have to keep moving forward.

So it's really the only way I can write. My wife's gone through and rewritten
some twitter threads into a blogpost for me, but she hasn't gotten to this one
yet.

BTW, You can also use a threadreader/unroller to make a pseudo-blog-post out
of it.

~~~
QualityReboot
You produce some of the most interesting threads I've read on Twitter. Thanks
for sharing as much as you do.

Out of curiosity, why not mastodon? Do you see a path from Twitter to a
federated or decentralized service?

------
tehmillhouse
Axiom Verge (2015) uses the same trick to avoid the `strings` utility, but
with parametrized cheat codes. (Back then I took it apart in a decompiler and
looked up all the cheats, see
[https://trollbu.de/axiomverge/](https://trollbu.de/axiomverge/))

------
_Microft
Foone's is easily one of the most interesting and weird accounts to follow on
Twitter.

Check out this thread starting with a response on the toxicity of _Rhodium_
and prepare for one hell of a ride!

[https://twitter.com/Foone/status/1190340638899724288](https://twitter.com/Foone/status/1190340638899724288)

------
tosteris
Similar efforts to hide string literals were used 5 years earlier in one of
the first Internet worms: Morris worm.

[http://spaf.cerias.purdue.edu/tech-
reps/823.pdf](http://spaf.cerias.purdue.edu/tech-reps/823.pdf) sect. 5.1.7

~~~
quotemstr
Huh. I'd forgotten that only five years elapsed between the Morris worm and
DOOM. That's amazing progress in a very short time.

------
TravHatesMe
Is this not considered obfuscation? I thought encyption implies there is a key
of some kind to decode the message. This seems like obfuscating binary and
translating it at runtime, à la security-through-obscurity.

~~~
treve
Based on the algorithm in the tweet, it looks like it's reversible. This would
imply that it's indeed encryption and not a hash function or anything.

~~~
TravHatesMe
There is nothing preventing someone from decoding this message. Sure it's a
bit of a hassle to reverse-engineer the isomorphic function but there is
nothing secure about this. The cheat codes are not encrypted, they are
obfuscated.

Wikipedia defines encryption as "the process of encoding a message or
information in such a way that only authorized parties can access it and those
who are not authorized cannot."

~~~
sowbug
That's a poor definition. If I read someone's GPG password off a Post-It on
their desk, I can decrypt any information encrypted with it, but I'm not
authorized to do so.

A better definition would distinguish between those in possession of both the
algorithm and all its inputs, and those who aren't in possession, and rather
than saying they "cannot" access the encoded information, it would say that
access is impractical or at least cumbersome.

By that better definition, it's still encryption, because it made it
cumbersome for someone to access the codes without understanding the
encryption method.

~~~
TravHatesMe
> because it made it cumbersome for someone to access the codes without
> understanding the encryption method.

I disagree. This is security through obscurity. You are simply transforming
data, byte-by-byte without any key. This is encoding data using an isomorphic
function. By you definition, GZIP is encryption.

------
tambourine_man
If you enjoy this kind of content do yourself a favor and follow this guy.
It’s an amazing account.

------
shakna
I think this small piece of nostalgia (and memories of struggling with
extenders) is fairly timeless, and many game devs still say something similar
today:

> We are going to use the 1.95 4GWPRO dos extender for the new version and
> patch, but if you have difficulty with it, we will provide other executables
> that you can try with the 1. 8 DOS4GW extender and 1.94 4GWPRO extender.

> Yes, we think this business with flakey extender versions is a pain, too.
> The price we pay for want to make this game on a platform with a market.
> PC's. DOS. Sigh.

\- Dave Taylor

~~~
Jare
Heh DOS4GW was incredibly stable compared to the one that 3DStudio 4 used,
what was the name... Pharlap?

~~~
bluedino
Phar Lap was named after a horse!

DOS4GW was probably the most common, especially with PC games.

PMODE was pretty popular with the hobbyist market. CWSDPMI was also pretty
popular once DJGGP started being used with it instead of Go32 (which I think
wasn't even a full dpmi provider)

~~~
Jare
Yeah I was using PMode for our demos since it came out in 94, but for my 1995
game I stuck with DOS4GW, and after Win95 and the GameSDK came out it was time
to move to Win32.

------
hinkley
If the cheat codes appear in the code in a particular order, wouldn’t people
tend to document them in order of appearance? I don’t see why two people
wouldn’t generate the same list from the same code base.

------
gigatexal
More and more gems coming out of the source code from the mind of Carmack.

~~~
hunterjrj
Actually, this was implemented by Dave Taylor:
[https://twitter.com/ID_AA_Carmack/status/1189567625631883265...](https://twitter.com/ID_AA_Carmack/status/1189567625631883265?s=20)

~~~
gigatexal
Ahh cool! Thanks for clarifying

