10 ms·
Reverse Engineering SimTower
This is the story of building https://towers.world https://towers.world, a ~perfect, tick-for-tick reproduction of 1993 game SimTower.
I spent weeks reverse-engineering the original EXE and writing up a detailed spec of how the simulation actually works under the hood — population flow, elevator AI, the whole star-rating system. The specs are all on GitHub if you want to read them: https://github.com/phulin/tower-together/tree/main/specs https://github.com/phulin/tower-together/tree/main/specs
It's also collaborative. Multiple players can connect to the same tower, the simulation keeps running as long as anyone's connected, and build actions sync across clients in real time.
Because I rebuilt the UI, I could add features like shift-click to build grids of rooms - instead of painstakingly clicking to build rows of offices and hotels, shift-click allows a 10-floor grid to be built all at once.
The game runs on Cloudflare Durable Objects, one of my favorite web primitives.
Everything is open source: https://github.com/phulin/tower-together https://github.com/phulin/tower-together
- deleted 5mo ago[deleted]
- taejavu 5mo agoVery cool! I used to play this game for a few minutes every morning at a friends place before school. With the clone being open source, would you be open to QoL patches? I don’t have anything specific in mind, just curious how close to the original you want to stay.
- patrickhulin 5mo agoPatches are welcome, especially for UI stuff - the simulation I'd like to keep matching exactly. I have one deviation already: the floors are 0-indexed and lobbies are on 15, 30, ..., which would be 16, 31, ... in the original game.
- findalex 5mo agoI loved this game so much. Can't wait to see Santa.
- DonHopkins 5mo agoIt would be great for the movie theater to be able to play any video synchronized across multiple players so you can watch it together, like the awesome movie theater in Cursor Camp. Then we could all watch the extremely weird original SimTower movies together, in their 8-bit error diffusion dithered glory: https://www.youtube.com/watch?v=qq8o7gg87k4 https://www.youtube.com/watch?v=qq8o7gg87k4 Condom Duck: https://youtu.be/qq8o7gg87k4?t=211 https://youtu.be/qq8o7gg87k4?t=211 Psycho Party: https://youtu.be/qq8o7gg87k4?t=381 https://youtu.be/qq8o7gg87k4?t=381 Cursor Camp (recent hn discussion and neil.fun link): https://news.ycombinator.com/item?id=47949939 https://news.ycombinator.com/item?id=47949939 https://neal.fun/cursor-camp/ https://neal.fun/cursor-camp/ Also, LGR did these great reviews of SimTower and Yoot Tower, which he truly loves, so he disclaims that they are not exactly non-biased: LGR - SimTower - PC Game Review (15 years ago): https://www.youtube.com/watch?v=_4ToEDrhxo0 https://www.youtube.com/watch?v=_4ToEDrhxo0 LGR - Yoot Tower: The Sequel to SimTower (5 years ago): https://www.youtube.com/watch?v=CqNECXCd9iU https://www.youtube.com/watch?v=CqNECXCd9iU Yoot interviewed many interesting people for MACWORLD Japan, like Joanna Hoffman, Bill Atkinson, Steve Wozniak, Douglas Engelbart, and Alan Kay. Here's a transcript of Yoot Saito's interview of Alan Kay that he shared with me and I cleaned up and linked out: https://github.com/YootTowerManagement/YootTower/blob/main/Yoot_Saito_Alan_Kay_Interview/Yoot_Saito_Alan_Kay_Interview.md https://github.com/YootTowerManagement/YootTower/blob/main/Y... A Journey Through Computing History with Yoot Saito and Alan Kay Yoot towers wisely, Alan constructs the future -- foundations of change. Introduction In this captivating interview from 1993, recently unearthed and previously published only in Japan, renowned game designer Yutaka "Yoot" Saito of MACWORLD Japan engages with computing pioneer Alan Kay in a deep exploration of technology's past and future. This dialogue, captured on a cassette tape and transcribed, spans the evolution of personal computing, highlighting groundbreaking advancements and visionary ideas that have shaped modern technology. Yoot Saito, celebrated for his innovative approach to game design, and Alan Kay, known for his seminal contributions such as the development of the graphical user interface and the concept of the Dynabook, offer profound insights into both the historical trajectory and the potential futures of the digital world. This interview serves as a treasure trove of historical anecdotes, philosophical reflections, and forward-looking innovations, capturing a moment when two brilliant minds discussed the dynamics of technological progress. ---- I'd love to find all of Yoot's original interviews published in MacWorld Japan. Yoot was very active introducing and working with technology and researchers from the US with Japan in the early days of the Mac, and he pioneered psychological chat based AI games using voice recognition and synthesis, like Seaman. Seaman - Sega's Strangest Expedition Into Artificial Intelligence: https://www.youtube.com/watch?v=VV0zpPSXOx4 https://www.youtube.com/watch?v=VV0zpPSXOx4 Yoot Saito on His Classic Sega Game Where You Take Abuse from a Fish: https://www.vice.com/en/article/yoot-saito-on-his-classic-sega-game-where-you-take-abuse-from-a-fish/ https://www.vice.com/en/article/yoot-saito-on-his-classic-se... I found a couple of MacWorld Japan CDROM archives on Internet Archive, but my Mac says it can't mount the iso files. It appears to be an old HFS file system -- does anybody know how to to mount these treasures on a modern mac, with an emulator maybe? Or have the actual magazines lying around? https://archive.org/details/macworld-japan-vol-1-1995-01 https://archive.org/details/macworld-japan-vol-1-1995-01 https://archive.org/details/macworld-japan-vol-2-1995-09 https://archive.org/details/macworld-japan-vol-2-1995-09 MACWORLD-VOL-1-1995-01.iso: Apple Driver Map, blocksize 512, blockcount 460003, devtype 0, devid 0, driver count 0, contains[@0x200]: Apple Partition Map, map block count 2, start block 1, block count 2, name Quick TOPiX by OMI, type Apple_partition_map, valid, allocated, readable, contains[@0x400]: Apple Partition Map, map block count 2, start block 3, block count 460000, name MACWORLD-ROM Vol. 1, type Apple_HFS, valid, allocated, readable
- schnebbau 5mo agoAmazing, loved this game when I was younger. I would keep restarting every time I thought of a more effective layout. I don't think I ever made it to the cathedral though.
- deleted 5mo ago[deleted]
- ryeguy_24 5mo agoOh my gosh, this really brought me back. Haven't played that game in 30 years. What a great use of AI. Thanks for the trip down memory lane.
- jlev1 5mo agoWow! There was a little-known sequel to SimTower called Yoot Tower (named after Yoot Saito). It was a commercial flop, but I played it in the 2000s and again in the 2010s and very much enjoyed it! It had a lot of added customizability (more choices of restaurants and shops, for one thing). I would love to see that game recreated.
- thispbowden 5mo agoLove Yoot Tower! Can we clone it next?
- patrickhulin 5mo agoyes! I've been thinking about how to do it, but it will take some work!
- DonHopkins 5mo agoThat would be wonderful! There are a lot of different versions with all kinds of extensions. A cool thing about The Tower II (a later version of Yoot Tower only released in Japan) is the ability to plug in new content, using "Tower Kit"! So it should be possible to reverse engineer its plug-in system, and plug new stuff into it, or even create a plugin adaptor so you can easily create plugins in JavaScript / HTML / etc. "Tower Kit" was released, but I haven't been able to find an archive of the executable, just some web pages about it: https://web.archive.org/web/20000229064305fw_/http://www.openbook9003.co.jp/tower2/index.html https://web.archive.org/web/20000229064305fw_/http://www.ope... https://web.archive.org/web/20000311043425/http://www.openbook9003.co.jp/service/towerkitb.html https://web.archive.org/web/20000311043425/http://www.openbo... https://web.archive.org/web/20000310234154/http://www.openbook9003.co.jp/service/towerkit.html https://web.archive.org/web/20000310234154/http://www.openbo... https://web.archive.org/web/20000521002924fw_/http://www.openbook9003.co.jp/tower2/towerkit/whats_tk.html https://web.archive.org/web/20000521002924fw_/http://www.ope... There's even a monster movie version of "The Tower II Special Gamera Pack" released with “Gamera 3: Revenge of the Iris”! https://en.wikipedia.org/wiki/Gamera_3:_Revenge_of_Iris https://en.wikipedia.org/wiki/Gamera_3:_Revenge_of_Iris Here's a summary of Tower Kit: https://github.com/YootTowerManagement/YootTower/blob/main/README.md#whats-tower-kit https://github.com/YootTowerManagement/YootTower/blob/main/R... >What's Tower Kit? >Tower Kit is optional software for The Tower II. In The Tower II, you can select the stage where you want to start the game using the concept of a "map." The Tower II package comes with three maps: "Shinjuku Subcenter," "Hawaii Diamond Head," and "Kegon Falls," and the "Tower Kit" adds these maps. By installing this tower kit, a new stage game will begin. Tower kits don't just add more stages. Each map has new features, allowing you to play a completely new game. >Please try the "Tower Kit" which allows for infinite variations. >A love story between you, the person in charge of the Liberty Island redevelopment project, and two men and women who are your subordinates. Your work will have a subtle influence on the course of your love life. The Tower II is the first attempt at a crossover between redevelopment and love, set in New York. What is the ending...? [...]
- yesitcan 5mo ago[flagged]
- SuperNinKenDo 5mo ago[flagged]
- I_am_uncreative 5mo agoWhat's with the edit?
- cozzyd 5mo agoJudging from user's posting history, they're not the biggest fans of llms This is kind of the perfect use case though -- it's a game who cares if it's right or not.
- DonaldPShimoda 5mo agoSome people also have moral issues with LLMs. If the poster is such a person, the accuracy metric may simply be irrelevant.
- efromvt 5mo agoCan you still build a garage in the bottom corner to get more starting money??
- MrPowerGamerBR 5mo agoJust a fyi for anyone that doesn't know: A few years back Don Hopkins got the permission from Yoot Saito to open source Yoot Tower, SimTower's sequel: https://github.com/YootTowerManagement/YootTower https://github.com/YootTowerManagement/YootTower ...however I don't think that the source was ever published anywhere, considering that the repository still doesn't have the source code yet. ("Please check out the YootTower repo, where I'll publish the source code once it's cleaned up, reviewed and approved by Yoot, and relicensed with the MIT licensed.")
- DonHopkins 5mo agoI spoke with Yoot about it recently. There are some issues with Nintendo and licensing that may take some time to work through. My fingers are crossed, but it might take a while and require patience. We all want it to happen though! Meanwhile I'm working on Micropolis (based on the original SimCity Classic code, cleaned up, and compiled with Emscripten into WASM), and also reimplementing The Sims character animation system and content management and creation system in TypeScript with WebGPU and MOOLLM. ;) Micropolis WASM + WebGL tile renderer demo: https://micropolisweb.com https://micropolisweb.com MicropolisCore repo: https://github.com/SimHacker/MicropolisCore https://github.com/SimHacker/MicropolisCore Micropolis design docs: https://github.com/SimHacker/MicropolisCore/tree/main/designs https://github.com/SimHacker/MicropolisCore/tree/main/design... Sims character animation demo with WebGPU renderer: https://vitamoo.space https://vitamoo.space Source code: https://github.com/DnfJeff/SimObliterator_Suite/tree/main/vitamoo https://github.com/DnfJeff/SimObliterator_Suite/tree/main/vi... Design docs: https://github.com/DnfJeff/SimObliterator_Suite/tree/main/vitamoo/docs https://github.com/DnfJeff/SimObliterator_Suite/tree/main/vi... Designs for creating LLM driven Sims content editing and creation tools, uplifting and simulating The Sims in MOOLLM, and downloading The Sims content back into the original game: https://github.com/SimHacker/moollm/tree/main/designs/sim-obliterator https://github.com/SimHacker/moollm/tree/main/designs/sim-ob... >"What would your Sims say if they could finally talk to you?" >Two-way bridge between The Sims 1 save files and MOOLLM. Characters, objects, and pets step between a 26-year-old game VM and an LLM-powered universe, retaining and synchronizing their parallel existences. >The One-Line Version >Drag a 25-year-old Sims save file in. Watch the character wake up. Have a conversation with them. Send them home changed. The Uplift: Sims ↔ MOOLLM Character Bridge https://github.com/SimHacker/moollm/blob/main/designs/sim-obliterator/THE-UPLIFT.md https://github.com/SimHacker/moollm/blob/main/designs/sim-ob... It's all still a work in progress that I hack on when I have spare time (and spare money for tokens), so no ship date known! ;)
- johnfn 5mo agoFirst of all, super cool. I have a soft spot for SimTower as well. :) > I didn’t want to do a function-by-function port. First, APIs may be copyrightable - and copying a binary that closely might implicate copyright more than an approach closer to clean-room design. But it was clear that I needed some level of feedback from the ground-truth binary in order to provide a hill for the LLM to climb on the reimplementation. Interesting, but isn't this what, say, the Ocarina of Time reverse engineer port does[1]? I imagine the fact that this hasn't been served a takedown notice from Nintendo is a proof that it's defensible? Or at least that there's precedent, ha. Anyway, this is really cool. I genuinely think the only thing that's missing for me to waste an afternoon here is the sound effects! [1]: https://github.com/zeldaret/oot https://github.com/zeldaret/oot
- charcircuit 5mo agoIt is not proof. It is a clear derived work infringing on the copyright of Nintendo.
- realusername 5mo agoDepends of the country, a lot of countries have exceptions for interoperability (at least the whole EU) and since these projects are mainly used to make ports to other systems, it may be covered.
- AshamedCaptain 5mo agoThis is an absolutely ridiculous interpretation. There is no interoperability here at all, you are literally just copying the work in question. It is like claiming that compiling Samba to run in $NEW_PLATFORM suddenly strips Samba of the GPLv3.
- realusername 5mo agoYou absolutely aren't copying the work, recompilation projects are intensive work and a re-imagining of what the source code could look like. Compilation is still a one way process. And then for the legal part, that's why it's called an exception.
- cortesoft 5mo agoI love SimTower, and one of the reasons I keep my SheepShaver environment working is so I can still play it on Mac OS 9. I’ll have to check this out!
- ad_hockey 5mo agoFYI you can also play it in the browser, although it's the DOS version: https://playclassic.games/games/simulation-dos-games-online/play-simtower-online https://playclassic.games/games/simulation-dos-games-online/...
- Dwedit 5mo agoI remember that SimTower (Windows 3.1 version) would briefly draw the dialog boxes in Japanese, then immediately redraw it in English. This was on a computer without any Japanese fonts.
- deleted 5mo ago[deleted]
- EdwardDiego 5mo agoI sunk ages into "the world's most brutal elevator simulator" - how does the game model elevator demand? I always wondered if it was some sort of Poisson distribution.
- qingcharles 5mo agoCan you talk about how you actually disassembled the EXE and reverse-engineered it?
- DaiPlusPlus 5mo agoTFA says he used Ghidra with a plugin that lets an LLM do all the actually fun parts. It’s like having your golf caddy take all your swings for you.
- grogenaut 5mo agoI played when I was a kid. I figured out you could just build condos like crazy and make money pause build more, and repeat, get tons of money, build all the way up. But I couldn't figure out how to get people to the top level for that achievement. I'm gonna Google that and see what I got wrong
- manwe150 5mo agoI see to recall it being an express elevator to floor 90 (multiple of 15), then a short regular elevator for the rest of the way to the cathedral. I beat the game several times, usually with the 100% lowest-cost office build.
- alfiedotwtf 5mo agoI spent many many hours on SimTower. I think the end was when the Pope stayed in your penthouse
- swyx 5mo ago> This project used an absolutely ridiculous number of tokens. I had to upgrade to the Claude Code $200/month plan and carefully avoid usage in the 8 AM-2 PM 2x peak window. that doesnt sound too terrible to be honest. TIL that 8am-2pm is 2x usage.
- LostMyLogin 5mo ago> First, the AI makes premature conclusions about subsystems, records them, and then struggles to figure out when to abandon its earlier guesses. This perfectly describes what feels off to me about Opus 4.7 (unsure if that’s what you are using). It seems to go down an incorrect path, I correct it, but it still references things from it. Trying to direct it back becomes a mess. Has anyone experience this as well or am I going crazy? Doesn’t happen with 4.6 for me.
- appplication 5mo agoI’ve had not great experiences with Opus 4.7. It seems the model is overall less effective at reliably delivering via my standard way of interacting, and it also forgets things it was asked several times, even just minutes after being reminded again (e.g. “don’t in-line imports”). I’m probably holding it wrong, but I think a given a sufficiently advanced AI it would essentially be impossible to use it incorrectly. Feels like a step backwards in this regard.
- IcyWindows 5mo agoI see it in 4.6
- ChickeNES 5mo agoHeh, I have four different games I am currently experimenting with, luckily I skipped this one as I am still expecting the original/Yoot source will be published (hopefully DonHopkins sees this and it nudges him to get it uploaded!).
- DonHopkins 5mo agoI posted an update in response to this message: https://news.ycombinator.com/item?id=47970301 https://news.ycombinator.com/item?id=47970301
- ok_dad 5mo agoI love you this was the best sim game when I was a kid and now I’ll spend my weekend on your site!
- immanuwell 5mo ago[flagged]
- dsl 5mo agoIt is missing the most important function. If the first tile you build is a lobby in the bottom left corner, it is supposed to double your starting money. :)
- ashdnazg 5mo agoThe real question is how many other things it's missing. Reading the process in TFA, it's very much dependent on the comprehensiveness of the testing framework. And apparently, the tests never built a lobby in the bottom left corner... Anything else it didn't try, is probably also not documented and not implemented. With the growing use of AI in reverse engineering, we might need to shift our goals to more strongly verifiable ones, such as matching decompilation.
- ndiddy 5mo agoYeah the simulation also seems to have some bugs. I saw a person get stuck waiting for an elevator for hours when all the elevators were idle. He got more and more pissed off until he eventually despawned overnight. I agree that you need to be able to produce source code that matches the original binary before you can start porting things.
- lesuorac 5mo agoI would bet a lot. My memory is that you could make multi-level lobbies on the first floor and you'd end up with like a grand staircase. Edit: Apparently just pillars no staircase - https://old.reddit.com/r/SimTower/comments/1q63yvc/a_nice_tower/ https://old.reddit.com/r/SimTower/comments/1q63yvc/a_nice_to...
- disillusioned 5mo agoLiterally the first thing I tried. :-/
- LandR 5mo agoWas this a thing? I never knew this!! Man, pre big-internet was so hard to find information on games. I remember for the original tomb raider a friend needed a guide, so I wrote and printed out them a guide for the full game, since I played it pretty obsessively.
- dwedge 5mo agoI want someone to do this with SimCopter. I loved that game but I don't think it was very popular
- rho4 5mo agoYou can only serve the 3 closest levels to a lobby with stairs or escalators.
- neals 5mo agoPlayed it for a few cycles. I feel like the elevators are a bit bugged, they keep idle in the lobby why people are waiting to get on (and turning red)
- mfgadv99 5mo ago[dead]
- jcranmer 5mo agoEvery once a while, I get the itch to replay SimTower. Unfortunately, the latest times I've attempted, something in WINE manages to interact so poorly with the window manager that it crashes X altogether. This has led me to poke at it to consider either building my own version of WINE that doesn't crash my desktop or building my own UI on top of the existing 16-bit code in a franken-build to make it work. I've been leaning towards the latter, partially because I have an idea to replace one of the functions that's currently implemented as a horrible irreducible CFG that's a pain to understand with... some 16-bit AVX instructions. Mostly for the amusement of saying that I have used 16-bit AVX instructions.
- dude187 5mo agoThis post is very timely, as I got the itch to setup and play simtower literally last week. I used dosbox to install Windows 3.1, then installed simtower in that. It's not the native window manager integration you'd get in wine, but worked very well. Some ui glitches but nothing that affected usability. Worth noting I'm running Linux
- madcaptenor 5mo agoI had SimTower but could never quite figure it out - might be time to give it another shot.
- petercooper 5mo agoI did something similar, though at a much smaller scale, with Windows 3.1 Solitaire a few weeks ago, both to see how possible it is (with LLMs) and also to learn about Ghidra for myself. Sadly, I discovered nothing new that wasn't already surfaced through previous reverse engineering, but did turn it into a behavior-equivalent (almost, Draw One by default, and I got lazy with Vegas scoring) Web port: https://peterc.org/solitaire/ https://peterc.org/solitaire/ (you can press W to trigger the win animation without winning, just for laughs) I can certainly believe a much larger app like SimTower could overwhelm an LLM-based process without a lot of handholding as even Solitaire required a fair bit of that from me. I'm hoping to take on 1991's A-Train next (the game that inpired SimCity 2000's interface).
- socratic_weeb 5mo ago> Coud an llm You lost me there
- wdb 5mo agoNever heard of SimTower. Only knew about SimEarth, SimAnt, SimCity and SimLife
- s1mplicissimus 5mo agoSo I really liked SimTower back in the day, this was a lovely read. Not sure if this is intentional, but while playtesting, I noticed that I can just build Condos and destroy them again for a total of ~+100k. Was it that way in the original?