Twitter acquired Threader! Learn more

+ Your AuthorsArchive @Foone Hardware / software necromancer, collector of Weird Stuff, maker of Death Generators. (they/them) ko-fi: Oct. 20, 2021 3 min read

has anyone made a mod for doom where this is the end-of-level screen?

so I saw this screen while watching a let'splay, and was like "ooh, good target for the generator"

but then I look up the font and OH NO it's one of those ones that only does the letters they needed!

except, wait.
a,b,c,d,e... all the letters are here.
All the numbers are here.

this is a full font, it's just in a COMPLETELY SILLY ORDER

the game has the level names in plain ASCII in the ROM, but the're not used to display the levels. that's encoded differently.

I bet I could figure out where in the ROM they are if I had a relative searcher for the silly-order this font is in

I have all these tools for rearranging fonts but I don't yet have one for Fixing Silly Order

I could just leave it in this order and have the JSON point to it in silly order. but I have STANDARDS

now the obvious question:
do I spent 5 minutes manually photoshopping it back into order, or do I spend 30 minutes writing a script to automatically reorder it for me?

(the answer is clear. I always pick the latter option)

my first attempt at the script is less than successful

actually I just ran it on the wrong file.
there we go!

oh god, this font is not horizontal, it actually goes UP as the letters go right.

I'm not sure the death generator can even support this?

that's an interesting secret menu

yep. they added letters in the order used.
that's why it starts FINDCAGE

health is at 0xD0 (7 is max)
your number of collected spots is at 0xD2
invulnerability timeout is at 0xA36 (force to a positive value for infinite invulnerability)

I'm playing through the game to get more pictures to see how it works. more signs.

0xa38 is the "float up" timer. set it to anything above 0 and you'l float up

0xCE is the timer. (16bit)

yeah they used "Xing around" twice, in two back to back levels

and the last level

and over.
the but I didn't win the contest.
especially since it's 2021 and the contest probably ended in 1994


"wading" from "wading around" doesn't ascend, but "toying" from "toying around" does!


I'm not even sure how I'm gonna implement this.
define arbitrary curves that text follows? or simple slopes? manual positioning for every x-coord?

what if I just make the json font specification EVEN MORE TURING COMPLETE?

javascript: the cause of, and solution to, all of the death generator's problems

I wrote some code to dynamically adjust the font position per letter. it didn't work at all


yeah no this won't work at all

you can now completely overwrite the layout system at runtime
fun fact: the death generator is 99% layout system

I'm sure this won't lead to disaster

it's not exactly right. but it's close

I finished out the test set and it turns out I'm incorrect by 248,632 pixels

(this is mainly because the background scrolls)

fixing the backgrounds, I'm now down to being off by 23,111 pixels

these fuckers definitely hardcoded the letter positions for each of these screens. there is no consistency

punted on exact locations.
It's out!

You can follow @Foone.


Tip: mention @threader on a Twitter thread with the keyword “compile” to get a link to it.

Follow Threader