# Upsidetown Created conveniently for "GAMES MADE QUICK??? FOUR+" by Dr. Dos Requires [ZZT v3.2](https://museumofzzt.com/file/z/zzt.zip) and [Zeta](http://zeta.asie.pl/) to run. Windows users can run UPTOWN.BAT with Zeta and ZZT installed to load the font and Zeta automatically. Linux users should run `zeta86 -e UPSIDE.COM -e ZZT.EXE` To play without the font, just run Zeta directly. ## Description "Upsidetown" is simply Tim Sweeney's 1991 ZZT world "Town of ZZT" flipped vertically. It was done mostly as a goof. Something simple (so I thought) that could be finished quickly enough during a jam in which I was more invested in watching speedruns more than anything else. Originally, I was going to mirror the world horizontally but then I realized Upsidetown is a good pun. ## Guidance for non-ZZTers If you've never played ZZT before, simply choose keyboard and color on the main screen and hit "P" on the game's title to begin playing. If you're using the font the text will be a bit hard to read. Arrow keys move. Shift + arrow keys shoot. "T" lights a torch. "S" saves. Town is most people's first ZZT game so it shouldn't be too hard to learn what things do. It does however have a few possible softlocks, some of which won't be immediately obvious. (Save before you do anything in the bank.) You can use "?" to open a cheat prompt where you can use the following cheats: * "HEALTH" * "AMMO" * "TORCHES" * "GEMS" * "KEYS" * "ZAP" The cheats are not case sensitive. "?ZAP" can be used to erase the tiles adjacent to the player. ## Development The process for turning Town upsidedown begins with a script for Zookeeper that takes an input world and flips the board layout and stats. I actually wrote the script a few days prior to the jam as just a silly idea I had, then realized there was more effort needed to actually get a fully playable game out of the script and shelved it like most things I start. But then the jam happened and I didn't have any better ideas so I went back to it. The script only properly handled the most obvious of things which meant that after it was done generating a new world, I had to manually make several changes by hand including: * Replacing all directions in ZZT-OOP (so /n/n/n became /s/s/s) * Changing the direction of transporters * Changing the direction of blinkwalls * Changing the direction of duplicators * Changing the direction of conveyors[1] In reality, modifying the script to do everything but ZZT-OOP should have been trivial, but I already had flipped the OOP first and didn't want to have to merge my work with a better script output. Also in reality, the code in Town at least is simple enough that I probably could have rigged up ZZT-OOP flipping as well. Even as I wrote the script for flipping, I knew that a smarter idea would be to use the Reconstruction of ZZT's source code to straight up draw the board upsidedown and not have to modify the ZZT world whatsoever, but then I'd have to write Pascal instead of Python, and let's be real this is a novelty at best. With the project mostly completed I realized that actually the easiest way to play some upsidedown ZZT is to use a web browser build of Zeta and just apply the CSS `transform: rotate(180deg);` to the canvas. Also I made a font that turns code page 437 upsidedown as well. I tried doing my final full run test of the game with it, and promptly quit as it was totally messing with my mind and I was struggling to cross the three lakes board. Also also my script had a few bugs in it which meant more hand-fixing things than I would have liked, such as corrupting the last board, or breaking horribly when the player was located on the very top or very bottom row. This is one reason why I didn't release the script. The other reason is that it requires a yet unfinished updated version of the Zookeeper library for manipulating ZZT worlds that I'd also have to distribute for anybody to be able to use it. ## Cool Links * [Museum of ZZT](https://museumofzzt.com) - A modern archive of 2000+ ZZT worlds which can be downloaded, explored, or played in a browser * [Worlds of ZZT on Twitter](https://twitter.com/worldsofzzt) - A Twitter bot which posts screenshots of random ZZT boards every three hours and serves as the main source of news about ZZT * [Worlds of ZZT on Patreon](https://patreon.com/worldsofzzt) - I work on the Museum and write about ZZT games. This is patron supported if you'd like to offer financial support. * [Worlds of ZZT on Discord](https://museumofzzt.com/discord) - Come hang out with us and talk about ZZT games and make ZZT games. We'd love to have chill people who enjoy creating. [1] Depending on the way they're used, you might not have to change them at all. Boards like the mixer play just fine, and you can use the boulders in the armory to still get the guardian's key, but the final challenege needs them to be flipped in order for the player to be able to exit the room with the tigers unless the player wants to abuse ZZT's pause mechanics.