Want early access to new videos and some behind the scenes content? Consider becoming a channel member ua-cam.com/channels/QvW_89l7f-hCMP1pzGm4xw.htmljoin
I love that this channel doesn't shy away from the fact that reverse engineering consists mainly of the emotion of being face down on your desk for hours while nothing works - the unglamorous truth!
Makes you wonder why people waste their time torturing them selves hacking a game just to be an asshole instead of using that skill to either make fun mod, their own damn game or anything else that's actually useful.
@@magnusm4 99.9% of the players you run into with an aimbot or wallhack etc are not the people who created that hack/tool, they're simply idiots who bought that from someone with the actual skills of creating it. Selling hacks is unfortunately a big business because a lot of people don't care about how/why they win, they just wanna win.
You say that but there's always going to be someone out there that's determined enough to dig into old code, or even rebuild the game in modern code. Years ago there was in fact an open source RE project, OpenSC2K, that could run on Windows, but EA issued a DMCA takedown on the project back in 2018, supposedly because it was infringing copyright through the use of assets that the dev probably didn't legally get. Still, EA pulling this crap is rich give how it's barely done anything with the SimCity IP for years besides the mobile BuiltIt. That also applies to all the pre-EA Maxis-era games, which may as well be abandonware at this point.
Every reverse-engineering project I had felt like being lost in dark woods with not a glimpse of light in the distance for days or weeks until suddenly it's over before you even know it if you've persisted. And trying to keep everything in your head steals sleep. An arduous trial of faith each time. 9:34 Like you can tell he's likely gone to bed exhausted and bummed before this revelation.
Well I'll be danged, this was my baby. I ported this from the Windows version, and it was one of the very first Windows 95 games ever published. What a fun blast from the past, I'm glad it popped up in my feed. It was interesting to see that you initially had palette problems, as those bedeviled me because the way the palette mapping was handled between WinG (which the Windows version used) and CreateDIBSection was slightly different. I don't remember all the details, but it took me weeks to get it right and not fall in to "pink mode" during various states (that's what you were seeing before you set the correct bitmap path.) Not sure what was up with the save game code, that came directly from the Windows version with no modification that I recall, so I don't take responsibility :D
He is not the first person to make this patch, there are some online that I've used and everything works. For example, SC2000X or "SimCity 2000 Open Source Patcher" and the SimCity 2000 Compatability Patcher.
Someone said that a patch exists online somewhere already. I'd be willing to create a patch, but I don't know where to get the file. The archive link has already been taken down, lol.
honestly after the GRAPHICS folder registry thing, I was feeling there was going to be a running theme of everything being registry failures. So your save/load problem I was sure was going to be it loading a NULL path for the directory it would save to/load from. Fascinating dive as usual 👍
He could as well just create a Windows XP VM, install the game and export the registry entries at that point..... But going the easy route isn't creating content 😅
He deliberately ignored that option to show the function patching technique. It's all well prepared and scripted. From an educational standpoint it's a nice touch.
Correction: 16bit windows execuables are supported (ish) in any 32-but Windows version, but not 64-bit. This includes Windows 10 32bit. Only the OS/2 subset support concluded with Win2000.
WineVDM adds a transparent layer of Win16 compatibility to 64-bit Windows. Old apps function very well with it, including Simcity 2000! Apps run like they are natively supported.
When a programmer approaches a problem instead of an IT engineer, the solution is sometimes completely different. I’m an IT professional and it’s really fascinating how you approach this. I’d be messing with virtualization or compatibility layers instead, myself.
@@dsihacker01 Because he runs it in a VM for security reasons and for stability reasons. The whole purpose of him was, to make the game run on a normal system of a normal user. VMs are used as a tool here, nothing else.
@@StinktierchenIs that the purpose? Because all he says is “I want to play SC2000 but being released in 1993 will it even run on a Windows 11 machine?”. Maybe you saw an unedited version of the video where he said he wants to run it natively in Windows 11?
That's a lot of effort using the nuclear option. If memory serves; Sim City 2000 uses Install Shield for its installer. Install Shield was 16 bit; because then you could use the same installer to package your files for 16-bit or 32-bit applications. It'd work for everything from Windows 3.1 to XP. All you'd need to do is use a 32bit or 64bit replacement for the 16bit Install Shield to get the game installed properly. In Windows 10, I don't need any compatibility settings enabled for it to run perfectly.
This, and there's many ways to do it, I guess the point of this video was to show how one would go about taking a shot at getting something like this to run, and explaining how it works and what tactic to use basically, which I'm not against, but I get the same feeling of ''omg why not just run this on an period correct PC''
@@tnmrvc his method is how we used to crack software years ago, look for the dialog that triggers the key entry window and backtrack from that, then change the jumps to insteaf take you to the full version
@@rnmnqrs Yeah as amazing as this all is... I think there was a far easier way to figure this out. Use a Win95 VM, dump the registry, install the game, play it once, dump the registry again, diff it with the previous version. Copy the installed files and registry entries into Win11. Done. Or at least that's how I would have gone about it.
This was my favorite of your low level videos so far, which is a high bar to clear because I thought the others were great too. Thanks for explaining all the Win32 Syscalls - basically all my programming has done on posix compliant OSes so I would be completely lost without you explaining all of them.
From 6:16, I immediately knew the culprit was the Windows File Dialog system. It was obvious; when you save or load, what do you EXPECT to see, as a user? A file dialog! In this case it seems like there is another missing registry entry to specify the default save game folder, which was silently failing and causing the file dialog callback to be undefined. Note that your dialog box opened in the default "Desktop" folder, which didn't exist in Windows 95.
He should have been able to see a simple registry query using Procmon, shouldn't he? I imagine that would have been the path of least resistance and the first to check. If you read the getopenfilename function arguments that he fixes at the end, it seems that the game originally used a hook to customize the save/load explorer interface; I'm guessing that this might not have been compatible with Windows 11 anymore, so by nulling out that hook, it seems to have worked.
I knew 'cause I had Sim City 2000 windows edition as a kid. Ah, good memories... those disks are long gone though. Last time I dabbled in the win32 GUI lib was back in 2012 in college (wrote a simple single window application in C as a test and I actually remember using the hook variable. I think you can use it to attach the dialog to a specific window, blocking it until the dialog is closed); was nice realizing that Sim City 2k uses it on most of it's functionalities.
I think he was referring to the location of the desktop folder. If memory serves me right in Win98 it was located in C:\Windows\Desktop (or maybe in system32, its been a while lol) and for Win2k and above it was moved into C:\Users\xxx\Desktop @@TatsuZZmage
After watching this, I tested it out in WINE. Both the Windows 3.1 and Windows 95 versions install fine, though they complain about a lack of 256-colour support, and the music doesn't work, but they otherwise work. DOS version in DOSBox works perfectly.
I also did try on wine right after the video it worked fine on first try. For the music if I remember correctly it was was CD audio track or midi. In that case we may need a soft-synth installed. The one I got only had games files no audio but there are midi files.
The problem for me with WINE is that WINE through Wayland doesn't support window decorations, meaning the various menus are not usable. I believe I ended up just settling for the DOS version, but the only way to run SimTower that I've found is through pcem (or one of its forks).
@@pierssegal5910 Gotta agree; to run old windows games on Linux i just went straight to Proton and manage to run all of the ones I wanted. Pretty good software Valve is making (very close to a "plug in play" solution for game compatibility).
@@GSBarlev Wine windows decoration work fine with Plasma Wayland. I did not knew there was wayland desktop without decoration for wine. It is such a weird choice from whomever developed that.
I would spend good money if you made a tutorial series on how to use each of these tools, general techniques of the trade, etc. This is a fantastic series and I’ve tried looking into this problem myself but didn’t get anywhere near what you’ve accomplished here because the tools are very intimidating
If something can't be bought it should be public domain. No matter their 30 years of rights. It should be immediately be voided if they do not sell something they started selling for over a year.
Thank Disney for that. If they did not lobby for century long copyright laws we might just have had the chance to have a slightly more sane system. Or not, most people will not care about literally anything until it actually hurts them, and even will not do anything about it.
Thank you for this! I really appreciate your patient explanation style and the way you take us through your thought process. Including the paths you explored that _didn’t_ work is equally educational as the successes and really important for showing people how to persevere.
There is an option of running DOSBox with Windows 3.1 or 95 so you can mount a CD virtually for 16-bit support. I've done this for several of my older computer games.
Yes, this had me questioning the whole framing of this video as is this was some kind of problem that required such an overly complicated solution. There just shouldn't be a reasonable expectation for it to run natively OOTB nowadays, and the whole "playing dumb" aspect of the video confused me.
You can also install 32-bit windows up through Windows 10. I just tried this on Windows 8.1 32-bit running in hyper-v. It prompts for NTVDM, which I guess is also for 16-bit software support. The file system support is still broken though. You would need to patch it if you wanted to save or load a file. African swallow is also "broken" as it is unlimited speed and years go by in seconds.
A heads up: Windows has never made it easier to have CDs without having a CD drive. In a lot of cases, it has first-class support for simply mounting the disk image (eg. .iso) directly. In some really picky cases, you can use Daemon Tools that entirely emulates there being a CD drive with a CD in it.
I think when he says 'track down an original cd version' he is saying an actual physical cd. If you're holding a disk in your hand, no amount of Daemon Tools is going to help. That said, I'm certain its easier to find an iso than everything he did here. I'd actually say finding a physical disk and buying a cd drive is easier than working through this process.
@@thebeckofkevin I crashed into this problem when trying to get _3D Ultra Lionel TrainTown_ working in DxWnd with in-game music, which requires the CD in the drive (and I have both a CD drive and an original game disc, so no issues on that front). The problem is, DxWnd didn't want to play nice with forwarding the CD as-is, and because the game music is stored on disc in _multi-track audio CD format_ (.bin/.cue), it was impossible to rip to ISO. Eventually I said "fsck it" and played as-is, no DxWnd, just accepting the janky 4:3-to-16:9 fullscreen stretch (which, to Win10's credit, the game worked nearly flawlessly with no modification to the executable)... and then I said "sudo fsck it" and _edited the music in in post_ for the playthrough on my other channel.
I must confess, the final part with the file handler went a bit over my head, but this is a great learning resource for how to look 'inside' programs. Thank you!
This is where console ports and emulators can be the solution. That is if the game was ever ported to a console. The state of PC gaming can be both amazing and horrible depending on what you want to play.
People like you are absolutely vital to the community - you invest your time to make titles we once loved playable again, and you get no compensation except for the joy of making it work. Being abe to step thru ASM in a decompiler & debugger is a very keen skill. From COUNTLESS people, THANK YOU, from the bottom of our hearts!
Very nice, I hadn't realized that the DOS release on GOG was an inferior version and that there was a native Windows one… One thing, you said the NE format was only supported until Win2000. I think it was actually supported on all 32-bit Windows versions, up to Windows 10. It's when you go 64-bit that you have a problem, because Microsoft didn't want the bother of supporting 16-bit code on a 64-bit kernel (even though it's technically possible and Linux does it with a few kludges).
there's no way in the hardware to run 16bit code once you entered 64bit. This was an intentional decision by AMD when depeloping amd64/x64. So you'd have to leave the 64bit world, go back to i386, to be able to execute 16bit code. Or alternatively implement some sort of VM for the 16bit code.
@@Engy_Wuck I'm afraid you're incorrect. There is no problem setting up a 16-bit code segment to run *Protected Mode* 16-bit code, such as Win16 applications like the setup program in this video. This is what Wine does, and I've done it myself in a little Linux program I was messing around with a few years ago. What you cannot run is 16-bit *Real Mode* code, such as DOS applications, which try to do segment arithmetic. These are provided for in Virtual-8086 mode, which like you said was deliberately removed by AMD from the 64-bit architecture.
I still have Simcity 2000 on an old Acer Acerpower DX4 that I bought new way back in 1996 but I haven't played it in years. Maybe 20 years. Oof. Your video brought back some good memories!
Very interesting. But did you ever consider spinning up a Windows 2000 VM to install and run the game and capturing data from there? I feel like that would've taken a lot of struggle and guesswork out of the process of getting it working in Windows 11.
Wow this video is WAAAY different than what I thought it would be. But wow, it is so much better than I thought, as well. Very interesting and informative.
Great vid. I have a feeling that Raymond Chen mentioned this bug in an old blog. As he worked on the Win 95 compatibility team he fixed up little things like this. I bet there was a patch in win 95 that fixed it.
I freaking love this content! It's getting old games to work and showing your detective process of how to debug through getting them to work. Can I get any better! Thank you so much keep it coming! Please!
Last year I was playing Sim City 2000 a bunch, and got a Windows version mostly working (animations would often freeze, though). I forget the whole process. But I found, interestingly enough, that the DOS version "felt" a little better to play. Something about the UI in the DOS version felt better to me even though I'd never played that as a kid.
So great, that he could just have used the 32 installer installshield executable for setup and get it running in one go. It was cringe worthy. As a tool demo it's nice, but the only way to get it running? No way. Fixing the setup would have worked using a vm w95 would have worked. Using a Linux vm with wine would have worked.
how nice, i feel like in 1996, hanging out with the CS students at the computer store :-) and it's so relaxing to listen to you. i know how all the "looking at this, we can see..." included some searching, but it's so calming to always just hear the successful end result. i'll keep that in mind for my own work!
nice video. Old games I personally like to run on Linux. much higher success rate compared to try and make windows listen to what the user wants xD but the fact you fix it yourself is just awesome
Preservation of everything is becoming harder. You can go to the library and get a newspaper from 1800. But a UA-cam video from 2 years ago? Good luck.
My god, this video is excellent. The way you break down your thought process and document it is wonderful for someone looking to learn ethical hacking and modding. Thank you.
Would it have been easier to debug along with a Windows 98 VM? The tools would be older but I assume the game would have ran properly and hit those variables you were looking for. This was awesome to watch. I wish I had this talent.
I love this kind of stuff. In the last few years so many old games are now playable in modern OS's. It sure would be nice if an Internet Archive download of this patched version became available.
The fact that I know exactly how to do exactly this and I still feel like I know nothing and want to know how to do this makes your videos pretty magical. You seriously make this look a lot more appealing and interesting than it is to do in reality, but the payoff is unlike anything. I'd love to see more, but I really don't want to know a human being does this too often to themselves.
Thanks for showing and explaining the reverse engineering process, including the tools you use, and the conclusions you make along the way. I've always been curious about it, and witnessing your process and what you're able to do with the tools, it's enlightening and inspiring for this C++ game programmer. I look forward to learning more on your channel. I've subscribed. Thank you!
the title say "You Can Only Play This Game By Hacking It" with is false. make a period-correct vm that the game works. that's how i play some old games. windows is good with backwards compatibility but even him has his limits when talking about 30 year old software.
So I just discovered this channel. And now my day is wrecked as I am hooked. Thanks for your work! I’m a hobbyist low level coder and this type of hacking is so darn educational.
I didn't watch the entire video but here's two tips in case you didn't mention them: DosBox for old 16 bit executables (I played SimCity Enhanced that way, works perfectly!) and also Sysinternals ProcMon for finding out the reason for these issues. It tells you all the files and registry keys that the process tries to contact (also if those were successful or failed) and so you usually know pretty quickly (without any IDAing) which files and registry keys you are missing.
WineVDM (AKA OTVDM) is a better solution for 16-bit Windows executables, as it lets you run them natively without needing to set up DOSBox and Windows 3.1. With WineVDM I was able to install SC2K just fine using its installer from the CD, but I still ran into the save/load crash as that's a separate issue.
Fantastic. Nostalgic. I've never actually wrote something complete for win32 and mfc, but I remember those save and load dialogues and how we had to call them.
Brings me back to trying to play the DOS version, but I couldn't because I couldn't get enough free low ram with the cd driver installed. It ran great in OS/2 as I could give it more low ram than DOS could in total.
Alternatively, of you're a Mac person who wants to play the old Mac version, that was 3 CPU architectures ago (before Apple Silicon 1. Intel, 2. PowerPC, and 3. Motorola 68K), so you'd just emulate System 7 on something like Basilisk II. Because modern computers are fast. Also, I don't understand why he's trying to debug the binary to figure out how to install the game. Just install in a Windows 2000 VM, take a snapshot of the filesystem before and after, use some CLI tool to spit out the filesystem and diff the before & after (I'm a Mac/Linux person, not terribly proficient in Windows command line, but Win 2000 was based on NT so there's little reason why you couldn't use fairly modern CLI tools), then copy all files it added to the newer Win 11 VM. Edit: I guess you'd have to dump the registry to text file too, and diff that. There must be tools for that.
Why the hell hasn't GOG hired you already... damn man! I just hope you could run a Patreon and use that to take some time to create real patches for these old software out there, so that people could get them running somewhat easily if they still own them. You'd do a huge service to archiving of these games and keeping them running!
@@Bozebo you can always create a piece of software that patches other piece of software and you don't need a license to distribute that patch. You can't obviously distribute the software you don't own license for, but patches and patchers are completely fair game.
Wow. I haven't even thought about SimCity 2000 in probably 20 years. I studied some rudimentary computer programming when I was in high school (people were still playing SimCity 2000 back then), so I knew just enough to be impressed by your skills and to understand how little I know. This was very impressive. I felt as though I was watching a master performing their craft. Thanks for the memories of both programming and SimCity 2000!
I was fortunate enough to have made a copy of my SC2k SE years ago. It runs very well on a very picky Win 3.1 DOSBOX. To be fair, I'm not sure my method has any less work involved than your way. Thank you for the video! SC2K is still one of my favorite games today.
"why is it so hard to play old games?" because it's against the interest of video game and console companies that you can play old titles. if they let you do that (or not doing anything against it), you gonna spend less time with new titles and will buy less new games, and they don't like that idea. so they even intentionally try to eradicate those options, like suing emulator creators. i actually grateful for the PC platform, as (for now) this is the only platform when they can't tell you how you use it. edit: by the way, great video, i learned a lot
Why didn't you install the game on a Windows 95 VM and exported the registry key to a .reg file? That would have been much easier than the Reverse Engineering
Thank you for patching the game! I hope gog is able to release this new and improved version you’ve created. Would be fun to jump back into the game after not having played it in 30 years
They never will. GOG is fairly well known for releasing a game with broken compatibility and then never releasing it. I also assume that selling the Windows 95 version also requires a change in licensing with the rights holder.
@@DoctorDalekthey don't need to, the gog version is not missing a single feature other than CD audio tracks. The game, dos or windows is exactly the same. You can also just update the installshield installer and install it properly or look at its install script to see every needed key. Maybe he did it as an example of tool use, but he used the most convoluted way possible to do this. Read the comments, you can get it working without modifying a single byte.
I don't know anything about coding or programming (other than old school HTML coding), but I really appreciate your patience here! It's thanks to people like you that I've managed to play classic nostalgic games on Steam! Shout-out to you and every other programmer that works hard to bring old games to full functionality on newer operating systems, so that many of us can all relive older chapters of our lives!
Just to see what would happen I installed it on Linux/Wine after watching this video. It installed normally with the setup.exe then the it ran fine on first try. Though I am not that surprised Wine is usually more compatible with legacy games.
Since the installer is a 16 installer and the game is a 32 bit executable you should be able to just run the installer through NTVDM. This will allow the program to be installed and you’ll be able to run the program as a 32 a bit executable.
You'll have to use the 32-bit version of Windows 10 or older, since Windows 11 only comes as a 64-bit version and NTVDM was never rewritten to run on 64-bit systems. It's possible to do, but Microsoft didn't feel a need to do it. IIRC either Windows 7 or Windows 10 made NTVDM an optional component so you'll also have to manually install it.
@@Daniel15au I believe he actually meant OTVDM, which is a port of WineVDM, Wine's NTVDM equivalent, to 64-bit versions of Windows. I tested it myself and the game's installer does indeed run just fine via OTVDM, though obviously the game still has the save/load crash bug.
This shows one of the biggest annoyances of most Windows apps of all times. They expect an installer to write some config somewhere and then will blindly rely that this config is just there when getting executed. On most other systems, apps will fall back to default config or re-create config on the fly if no config is found when the app is started and that's why other systems rarely need an installer. Even if software comes with an installer, when you extract it from there and just run it without ever executing the installer, it usually still works just fine. E.g. an app doesn't need config to know where it was installed to, it can check from where it is currently being executed (where the EXE file is located) and address all other code and data files simply relative to that location. Writing apps that are not able to run unless certain keys are wound in the windows registry is just a stupid idea, totally unnecessary and programmer laziness (or even worse, programmer ignorance or inability).
@Marssel56DOS box is a VM.... It plays old games fine that's literally its entire point, if you're talking about playing old games in a modern VM there is no difference from the games perspective versus modern hardware, they don't support anything either would have sound will be a problem without drivers to emulate different sound cards, and graphics are either software rendering, rendered with old versions of DirectX which work fine even with a VMs emulated graphics or they're using things like glide or expecting some other weird proprietary early 3D card. The VM has very little to do with any of these problems
tldw: 16bit installers are massive pain in the butt to anyone installing old software. honestly, I'm surprised nobody created a tool for dealing with these. it's a rather well known issue with a lot of old software.
There is! On PC Gaming Wiki there's a tool called " InstallShield 3 32-bit Generic Installer" that lets Sim City 2000 install as normal. There's also a patch for the save/load crash bug
funny how it works good in Wine 9.0-rc1 on Linux. Just have to play the game in the virtual desktop that wine has or it won't work and click on the task bar to get the window bar up and resize it to get the window the way you want it. The only problem is the window that has all the controls will not display on top of the city window so you can't have the city window fullscreen. this is a cool way to play it on an modern OS. But i'd say the best way if you have the hardware. Is to use 86box have it emu an 3dfx 3000 and install win98 and can run it in 1080p as long as you have the 3dfx 3000 drivers installed and play a lot more old school games like the 1st need for speed. BWT grate video
This is a really interesting video. You expect it to be an "OMG game is broken!!1" clickbait but seeing how people get this stuff running properly is very interesting. There are other games like Total Annihilation people have been exe hacking for years and have only really gotten running perfectly recently after lots of community collaboration. In other cases like Caesar 3 they've rebuilt an entirely new engine. It's amazing how enthusiasts keep this stuff alive and even add in lots of functionality that make it look and play better than it even did in the first place on the correct hardware.
Well I have handled the registry issues multiple times, and I would wager your save/load issue is an associated registry line or registry limiter (May have an issue with the file folder/location pointers being in old dos/win 95 not having extended file name allowances) I don't recall if Sim City had a specific file location/controlled installer and whether you were allowed to cycle/choose where to install and load etc from. It has been a LONG time since I played it. Oh and remember old computer systems had set and default file pathing, and if you failed to set your pathing correct in the autoexec or config file a lot of games would not run.
It was a good challenge for me, to understand the stuff. The important part was the STDCALL convention.. Stackpointer and to count the parameters right... In the 13th DWORD ...the flags :-) Then flip some bits and voila. Great Content !!! Thank You Nathan !
I’m so impressed by how you pull in expertise at every turn in this video. If you don’t mind sharing, I’d love to know what kinds (categories may be the better word) of development know-how you drew from, and how you built those skills in the first place
I just watch the whole video and I loved it! Expecially since SimCity 2000 was something both me and my step-dad used to play. I would suggest though adding a soft non-copyrighted track to videos like this. It helps a lot in elevating the content and makes it more pleasant to watch, expecially since everything else is fantastic
Or just run Windows XP in a VM. With software, it’s almost like people find an old screw (software) and complain that their modern, yearly highly advancing screw driver (hardware, operating systems, …) is not working with it. I love these reverse engineering videos, but as a software engineer this attitude 0:00 is very annoying. Either pay someone to build you an adapter for your new screw driver, or dig out the old one. You would neither want, nor can afford, to live in a world of endless backwards compatibility.
I'm no expert but maybe don't spin up a Windows *11* VM for a Windows 95 game? : p Seriously though, would it be "controversial" to put this up somewhere as a patch?
bro I'm not interested on playing SimCity 2000 BUT I admire your dedication and I aspire to have as much technical knowledge as you the day I ever go back to some old game to patch it and play it by myself. Looking at you, road rash 👀 You got my sub, keep up the interesting videos coming :)
and that is why i love the high seas … tons of original versions tend to already have tons of fixes in them to work on all windows versions and majority of the time they are applied by the game launcher itself as it detects what patch to run on what version
Excellent video. You never explicitly state you want it to run IN windows 11. Just you want to play the game ON your Windows 11 machine. So every time you said “let’s take a step back” I thought you were going to just run the game in a win95 vm like I do on MacOS.😂
I probably have weeks of my teen years wrapped up in SC2K - it was a blast, but I def like the newer stuff with all the detail I wish could have been possible in that older game (Cites: Skylines is a great example).
Want early access to new videos and some behind the scenes content? Consider becoming a channel member ua-cam.com/channels/QvW_89l7f-hCMP1pzGm4xw.htmljoin
Excuse me sir but, I'm having trouble finding the link to your patreon...
I love that this channel doesn't shy away from the fact that reverse engineering consists mainly of the emotion of being face down on your desk for hours while nothing works - the unglamorous truth!
Makes you wonder why people waste their time torturing them selves hacking a game just to be an asshole instead of using that skill to either make fun mod, their own damn game or anything else that's actually useful.
@@magnusm4 99.9% of the players you run into with an aimbot or wallhack etc are not the people who created that hack/tool, they're simply idiots who bought that from someone with the actual skills of creating it.
Selling hacks is unfortunately a big business because a lot of people don't care about how/why they win, they just wanna win.
Don't forget about talking to an inanimate rubber duck.
You say that but there's always going to be someone out there that's determined enough to dig into old code, or even rebuild the game in modern code. Years ago there was in fact an open source RE project, OpenSC2K, that could run on Windows, but EA issued a DMCA takedown on the project back in 2018, supposedly because it was infringing copyright through the use of assets that the dev probably didn't legally get.
Still, EA pulling this crap is rich give how it's barely done anything with the SimCity IP for years besides the mobile BuiltIt. That also applies to all the pre-EA Maxis-era games, which may as well be abandonware at this point.
Every reverse-engineering project I had felt like being lost in dark woods with not a glimpse of light in the distance for days or weeks until suddenly it's over before you even know it if you've persisted. And trying to keep everything in your head steals sleep. An arduous trial of faith each time.
9:34 Like you can tell he's likely gone to bed exhausted and bummed before this revelation.
Well I'll be danged, this was my baby. I ported this from the Windows version, and it was one of the very first Windows 95 games ever published. What a fun blast from the past, I'm glad it popped up in my feed. It was interesting to see that you initially had palette problems, as those bedeviled me because the way the palette mapping was handled between WinG (which the Windows version used) and CreateDIBSection was slightly different. I don't remember all the details, but it took me weeks to get it right and not fall in to "pink mode" during various states (that's what you were seeing before you set the correct bitmap path.) Not sure what was up with the save game code, that came directly from the Windows version with no modification that I recall, so I don't take responsibility :D
When you say the "Windows" version, do you mean Windows 3?
@@aspzx Yes, Windows 3, sorry. Very old habits :D
Definitely got a lot of enjoyment out of the game back in the day.
If that code came from the win3.1 version, I'm going to assume it was asking for the 16-bit file dialog which no longer exists.
Thank you for your work. I loved sc2k win95 as a kid. It was so cozy.
Have you released this patch anywhere? I’m sure many people would appreciate the work you did.
He is not the first person to make this patch, there are some online that I've used and everything works. For example, SC2000X or "SimCity 2000 Open Source Patcher" and the SimCity 2000 Compatability Patcher.
Yeah he should put this on PC gaming wiki
I ran into this problem in August, I don't know c yet, so I put it on hold, so I definitively want it public
Someone said that a patch exists online somewhere already. I'd be willing to create a patch, but I don't know where to get the file. The archive link has already been taken down, lol.
Don't think it would be legal. But he should hit up GOG about it.
honestly after the GRAPHICS folder registry thing, I was feeling there was going to be a running theme of everything being registry failures. So your save/load problem I was sure was going to be it loading a NULL path for the directory it would save to/load from.
Fascinating dive as usual 👍
He could as well just create a Windows XP VM, install the game and export the registry entries at that point..... But going the easy route isn't creating content 😅
@@leviathanx0815probably would‘ve taken more time than quickly inspecting the not found key errors
He deliberately ignored that option to show the function patching technique. It's all well prepared and scripted. From an educational standpoint it's a nice touch.
@@lorenkuhn3806 probably would‘ve taken more time than quickly inspecting the not found key errors
@@rich1051414 probably would‘ve taken more time than quickly inspecting the not found key errors
Correction: 16bit windows execuables are supported (ish) in any 32-but Windows version, but not 64-bit. This includes Windows 10 32bit. Only the OS/2 subset support concluded with Win2000.
WineVDM adds a transparent layer of Win16 compatibility to 64-bit Windows. Old apps function very well with it, including Simcity 2000!
Apps run like they are natively supported.
When a programmer approaches a problem instead of an IT engineer, the solution is sometimes completely different. I’m an IT professional and it’s really fascinating how you approach this. I’d be messing with virtualization or compatibility layers instead, myself.
My thought was literally "If he is running a VM anyways, why not run a sim2000 only VM?"
@@dsihacker01 Because he runs it in a VM for security reasons and for stability reasons. The whole purpose of him was, to make the game run on a normal system of a normal user. VMs are used as a tool here, nothing else.
@@StinktierchenIs that the purpose? Because all he says is “I want to play SC2000 but being released in 1993 will it even run on a Windows 11 machine?”.
Maybe you saw an unedited version of the video where he said he wants to run it natively in Windows 11?
@@cynic5581 It's literally in the first 11 seconds of the video
My first thought was "betcha Wine runs it"
That's a lot of effort using the nuclear option. If memory serves; Sim City 2000 uses Install Shield for its installer. Install Shield was 16 bit; because then you could use the same installer to package your files for 16-bit or 32-bit applications. It'd work for everything from Windows 3.1 to XP. All you'd need to do is use a 32bit or 64bit replacement for the 16bit Install Shield to get the game installed properly. In Windows 10, I don't need any compatibility settings enabled for it to run perfectly.
what about installing the game on a vm with win95 then exporting the generated reg keys as part of a new install process
This, and there's many ways to do it, I guess the point of this video was to show how one would go about taking a shot at getting something like this to run, and explaining how it works and what tactic to use basically, which I'm not against, but I get the same feeling of ''omg why not just run this on an period correct PC''
@@tnmrvc his method is how we used to crack software years ago, look for the dialog that triggers the key entry window and backtrack from that, then change the jumps to insteaf take you to the full version
@@rnmnqrs Yeah as amazing as this all is... I think there was a far easier way to figure this out. Use a Win95 VM, dump the registry, install the game, play it once, dump the registry again, diff it with the previous version. Copy the installed files and registry entries into Win11. Done. Or at least that's how I would have gone about it.
@@PatrykWolowiecyes this was a really long winded way to work out something that could easily be fixed using tools like psexec etc
This was my favorite of your low level videos so far, which is a high bar to clear because I thought the others were great too. Thanks for explaining all the Win32 Syscalls - basically all my programming has done on posix compliant OSes so I would be completely lost without you explaining all of them.
From 6:16, I immediately knew the culprit was the Windows File Dialog system. It was obvious; when you save or load, what do you EXPECT to see, as a user? A file dialog! In this case it seems like there is another missing registry entry to specify the default save game folder, which was silently failing and causing the file dialog callback to be undefined. Note that your dialog box opened in the default "Desktop" folder, which didn't exist in Windows 95.
He should have been able to see a simple registry query using Procmon, shouldn't he? I imagine that would have been the path of least resistance and the first to check. If you read the getopenfilename function arguments that he fixes at the end, it seems that the game originally used a hook to customize the save/load explorer interface; I'm guessing that this might not have been compatible with Windows 11 anymore, so by nulling out that hook, it seems to have worked.
desktop existed in 95 its before 95 that it didn't exist.
@@TatsuZZmage True. But there were third party shells prior to 95, such as Norton Desktop for Windows 3.x which provided a Macintosh-like desktop.
I knew 'cause I had Sim City 2000 windows edition as a kid. Ah, good memories... those disks are long gone though.
Last time I dabbled in the win32 GUI lib was back in 2012 in college (wrote a simple single window application in C as a test and I actually remember using the hook variable. I think you can use it to attach the dialog to a specific window, blocking it until the dialog is closed); was nice realizing that Sim City 2k uses it on most of it's functionalities.
I think he was referring to the location of the desktop folder. If memory serves me right in Win98 it was located in C:\Windows\Desktop (or maybe in system32, its been a while lol) and for Win2k and above it was moved into C:\Users\xxx\Desktop
@@TatsuZZmage
After watching this, I tested it out in WINE. Both the Windows 3.1 and Windows 95 versions install fine, though they complain about a lack of 256-colour support, and the music doesn't work, but they otherwise work. DOS version in DOSBox works perfectly.
I also did try on wine right after the video it worked fine on first try. For the music if I remember correctly it was was CD audio track or midi. In that case we may need a soft-synth installed. The one I got only had games files no audio but there are midi files.
AFAIK WINE/Proton is generally far more reliable for old Windows games than modern Windows is.
The problem for me with WINE is that WINE through Wayland doesn't support window decorations, meaning the various menus are not usable. I believe I ended up just settling for the DOS version, but the only way to run SimTower that I've found is through pcem (or one of its forks).
@@pierssegal5910 Gotta agree; to run old windows games on Linux i just went straight to Proton and manage to run all of the ones I wanted. Pretty good software Valve is making (very close to a "plug in play" solution for game compatibility).
@@GSBarlev Wine windows decoration work fine with Plasma Wayland. I did not knew there was wayland desktop without decoration for wine. It is such a weird choice from whomever developed that.
I would spend good money if you made a tutorial series on how to use each of these tools, general techniques of the trade, etc. This is a fantastic series and I’ve tried looking into this problem myself but didn’t get anywhere near what you’ve accomplished here because the tools are very intimidating
Agree
If something can't be bought it should be public domain. No matter their 30 years of rights. It should be immediately be voided if they do not sell something they started selling for over a year.
Bum fights
Thank Disney for that. If they did not lobby for century long copyright laws we might just have had the chance to have a slightly more sane system.
Or not, most people will not care about literally anything until it actually hurts them, and even will not do anything about it.
@@I_DENOUNCE_THE_TALMUD ???
Maxis literally doesn’t exist except as a zombie hidden in a closet somewhere in EA.
If only IP laws were sane, reasonable, and based on consistent logic and were not tools for monopolization or lawyers' employment.
Thank you for this! I really appreciate your patient explanation style and the way you take us through your thought process. Including the paths you explored that _didn’t_ work is equally educational as the successes and really important for showing people how to persevere.
if your want to play sim city 2000 your in for a computer science lesson kid🤣🤣🤣🤣🤣
There is an option of running DOSBox with Windows 3.1 or 95 so you can mount a CD virtually for 16-bit support. I've done this for several of my older computer games.
I've run games running Win 3.1 in DOSbox, but I've never done Win 95 in DOSbox. Any special tricks or caveats for getting Win95 working in DOSbox?
dosbox-x has more support for windows 95 than other forks@@HansLemurson
Yes, this had me questioning the whole framing of this video as is this was some kind of problem that required such an overly complicated solution. There just shouldn't be a reasonable expectation for it to run natively OOTB nowadays, and the whole "playing dumb" aspect of the video confused me.
I have gotten my self periode correct hardware. It is the best way to do it.
You can also install 32-bit windows up through Windows 10. I just tried this on Windows 8.1 32-bit running in hyper-v. It prompts for NTVDM, which I guess is also for 16-bit software support. The file system support is still broken though. You would need to patch it if you wanted to save or load a file. African swallow is also "broken" as it is unlimited speed and years go by in seconds.
A heads up: Windows has never made it easier to have CDs without having a CD drive. In a lot of cases, it has first-class support for simply mounting the disk image (eg. .iso) directly. In some really picky cases, you can use Daemon Tools that entirely emulates there being a CD drive with a CD in it.
yup. this was one of the first easy hurdles they just ignored.
I think when he says 'track down an original cd version' he is saying an actual physical cd. If you're holding a disk in your hand, no amount of Daemon Tools is going to help. That said, I'm certain its easier to find an iso than everything he did here. I'd actually say finding a physical disk and buying a cd drive is easier than working through this process.
@@thebeckofkevin I agree
Or you could just buy a USB CD drive for next to nothing.
@@thebeckofkevin I crashed into this problem when trying to get _3D Ultra Lionel TrainTown_ working in DxWnd with in-game music, which requires the CD in the drive (and I have both a CD drive and an original game disc, so no issues on that front). The problem is, DxWnd didn't want to play nice with forwarding the CD as-is, and because the game music is stored on disc in _multi-track audio CD format_ (.bin/.cue), it was impossible to rip to ISO. Eventually I said "fsck it" and played as-is, no DxWnd, just accepting the janky 4:3-to-16:9 fullscreen stretch (which, to Win10's credit, the game worked nearly flawlessly with no modification to the executable)... and then I said "sudo fsck it" and _edited the music in in post_ for the playthrough on my other channel.
I must confess, the final part with the file handler went a bit over my head, but this is a great learning resource for how to look 'inside' programs. Thank you!
I am an amateur programmer at best, but damn I love this content so much. Something about it just hits all the right dopamine receptors.
Same ahah
i’m not even a programmer, just a compsci enthusiast, i love this style of content.
This is where console ports and emulators can be the solution. That is if the game was ever ported to a console. The state of PC gaming can be both amazing and horrible depending on what you want to play.
People like you are absolutely vital to the community - you invest your time to make titles we once loved playable again, and you get no compensation except for the joy of making it work. Being abe to step thru ASM in a decompiler & debugger is a very keen skill. From COUNTLESS people, THANK YOU, from the bottom of our hearts!
Your work here is extremely important for game preservation
For some reason I felt like subscribing to your channel at around the 4 minuet mark... 🤔
Very nice, I hadn't realized that the DOS release on GOG was an inferior version and that there was a native Windows one… One thing, you said the NE format was only supported until Win2000. I think it was actually supported on all 32-bit Windows versions, up to Windows 10. It's when you go 64-bit that you have a problem, because Microsoft didn't want the bother of supporting 16-bit code on a 64-bit kernel (even though it's technically possible and Linux does it with a few kludges).
there's no way in the hardware to run 16bit code once you entered 64bit. This was an intentional decision by AMD when depeloping amd64/x64. So you'd have to leave the 64bit world, go back to i386, to be able to execute 16bit code. Or alternatively implement some sort of VM for the 16bit code.
@@Engy_Wuck I'm afraid you're incorrect. There is no problem setting up a 16-bit code segment to run *Protected Mode* 16-bit code, such as Win16 applications like the setup program in this video. This is what Wine does, and I've done it myself in a little Linux program I was messing around with a few years ago.
What you cannot run is 16-bit *Real Mode* code, such as DOS applications, which try to do segment arithmetic. These are provided for in Virtual-8086 mode, which like you said was deliberately removed by AMD from the 64-bit architecture.
I still have Simcity 2000 on an old Acer Acerpower DX4 that I bought new way back in 1996 but I haven't played it in years. Maybe 20 years. Oof. Your video brought back some good memories!
This is an insane level of detailed spelunking, but also presented in an entertaining and informative way. Bravo!
yeah it would be simple to just run a virtual machine with windows 98
I love these videos you make they're to the point and give SO much info
Very interesting. But did you ever consider spinning up a Windows 2000 VM to install and run the game and capturing data from there? I feel like that would've taken a lot of struggle and guesswork out of the process of getting it working in Windows 11.
thats what i said hes running VM's, just play the game on an older version of windows.
he wouldn't make such an epic video though 😢
Decompiling the installer script is just as good
Wow this video is WAAAY different than what I thought it would be. But wow, it is so much better than I thought, as well. Very interesting and informative.
Glad you liked it!
Great vid. I have a feeling that Raymond Chen mentioned this bug in an old blog. As he worked on the Win 95 compatibility team he fixed up little things like this. I bet there was a patch in win 95 that fixed it.
I believe that bug was for the original SimCity (non-2000), and dealt with windows 3.1’s memory management.
Dude, that was a super intuitive explanation. Always down to see old game patching videos.
I freaking love this content! It's getting old games to work and showing your detective process of how to debug through getting them to work. Can I get any better! Thank you so much keep it coming! Please!
Last year I was playing Sim City 2000 a bunch, and got a Windows version mostly working (animations would often freeze, though). I forget the whole process. But I found, interestingly enough, that the DOS version "felt" a little better to play. Something about the UI in the DOS version felt better to me even though I'd never played that as a kid.
another BANGER. So much can be learned with these videos.
So great, that he could just have used the 32 installer installshield executable for setup and get it running in one go.
It was cringe worthy. As a tool demo it's nice, but the only way to get it running? No way. Fixing the setup would have worked using a vm w95 would have worked. Using a Linux vm with wine would have worked.
how nice, i feel like in 1996, hanging out with the CS students at the computer store :-)
and it's so relaxing to listen to you. i know how all the "looking at this, we can see..." included some searching, but it's so calming to always just hear the successful end result. i'll keep that in mind for my own work!
nice video. Old games I personally like to run on Linux. much higher success rate compared to try and make windows listen to what the user wants xD but the fact you fix it yourself is just awesome
Preservation of old games is becoming a harder and harder issue as we move forward.
Preservation of everything is becoming harder. You can go to the library and get a newspaper from 1800. But a UA-cam video from 2 years ago? Good luck.
My god, this video is excellent. The way you break down your thought process and document it is wonderful for someone looking to learn ethical hacking and modding.
Thank you.
I been following for 2 about two months, but you keep bringing more to the table. :) great video.
Would it have been easier to debug along with a Windows 98 VM? The tools would be older but I assume the game would have ran properly and hit those variables you were looking for. This was awesome to watch. I wish I had this talent.
That was kind of my thinking. Let the game install somewhere that it works and do a before/after compare of the registry and the install directories.
oh man, you're gonna get me in so much trouble when i start making changes i shouldn't make. i genuinely appreciate it
I love this kind of stuff. In the last few years so many old games are now playable in modern OS's. It sure would be nice if an Internet Archive download of this patched version became available.
The fact that I know exactly how to do exactly this and I still feel like I know nothing and want to know how to do this makes your videos pretty magical. You seriously make this look a lot more appealing and interesting than it is to do in reality, but the payoff is unlike anything. I'd love to see more, but I really don't want to know a human being does this too often to themselves.
I came here thinking I would see some classic old game gameplay and ended up receiving a reverse engineer free workshop xD
Thanks for showing and explaining the reverse engineering process, including the tools you use, and the conclusions you make along the way. I've always been curious about it, and witnessing your process and what you're able to do with the tools, it's enlightening and inspiring for this C++ game programmer. I look forward to learning more on your channel. I've subscribed. Thank you!
All the people saying "use a Win98 VM" or "buy period-correct hardware" completely missing the point.
the title say "You Can Only Play This Game By Hacking It" with is false. make a period-correct vm that the game works. that's how i play some old games. windows is good with backwards compatibility but even him has his limits when talking about 30 year old software.
@jmtradbr the community thanks you for your pedantry
@@Caligari87 your welcome 😃
@@jmtradbr *you're
So I just discovered this channel. And now my day is wrecked as I am hooked. Thanks for your work! I’m a hobbyist low level coder and this type of hacking is so darn educational.
Awesome! Thank you!
I didn't watch the entire video but here's two tips in case you didn't mention them: DosBox for old 16 bit executables (I played SimCity Enhanced that way, works perfectly!) and also Sysinternals ProcMon for finding out the reason for these issues. It tells you all the files and registry keys that the process tries to contact (also if those were successful or failed) and so you usually know pretty quickly (without any IDAing) which files and registry keys you are missing.
WineVDM (AKA OTVDM) is a better solution for 16-bit Windows executables, as it lets you run them natively without needing to set up DOSBox and Windows 3.1. With WineVDM I was able to install SC2K just fine using its installer from the CD, but I still ran into the save/load crash as that's a separate issue.
Fantastic. Nostalgic. I've never actually wrote something complete for win32 and mfc, but I remember those save and load dialogues and how we had to call them.
These videos are very cool, thanks for all the time and effort these must take dude :)
How awesome that you tell your mistakes and explicitly mention your wrong assumptions! This stuff is good.
I think it’s important to not gloss too much over the mistakes, they’re all stepping stones to the solution (:
In modern windows computers, at least on windows 10, if you double click a cd/dvd image, it will automatically load it on a virtual drive.
This is really awesome! I look forward to when I can come back to this and understand everything that's been explained 👍
Brings me back to trying to play the DOS version, but I couldn't because I couldn't get enough free low ram with the cd driver installed. It ran great in OS/2 as I could give it more low ram than DOS could in total.
This channel is awesome and I can't wait to see more videos like this!
The real game ended when Sim City ran
My thoughts exactly!
im glad you are working on getting it to work on modern system we need more people like you doing this kind of thing
Alternatively, of you're a Mac person who wants to play the old Mac version, that was 3 CPU architectures ago (before Apple Silicon 1. Intel, 2. PowerPC, and 3. Motorola 68K), so you'd just emulate System 7 on something like Basilisk II. Because modern computers are fast.
Also, I don't understand why he's trying to debug the binary to figure out how to install the game. Just install in a Windows 2000 VM, take a snapshot of the filesystem before and after, use some CLI tool to spit out the filesystem and diff the before & after (I'm a Mac/Linux person, not terribly proficient in Windows command line, but Win 2000 was based on NT so there's little reason why you couldn't use fairly modern CLI tools), then copy all files it added to the newer Win 11 VM. Edit: I guess you'd have to dump the registry to text file too, and diff that. There must be tools for that.
That was my sediment also, what's the old saying though? There's many ways to skin the cat lol
best videos on youtube for me currently. you do amazing job.
Why the hell hasn't GOG hired you already... damn man!
I just hope you could run a Patreon and use that to take some time to create real patches for these old software out there, so that people could get them running somewhat easily if they still own them.
You'd do a huge service to archiving of these games and keeping them running!
Serioulsy, they should hire him, post the code, and he can get all of the subs and money just from creating this amazing content.
@@sonarun something tells me he makes this content for fun and they couldn't afford him
People say this type of comment a lot of things. This guy's job isn't to patch games, and I doubt he'd want to do it for a living.
Potential legal issues. Just having this vid up instead means someone else might do that legwork open source.
@@Bozebo you can always create a piece of software that patches other piece of software and you don't need a license to distribute that patch. You can't obviously distribute the software you don't own license for, but patches and patchers are completely fair game.
Wow. I haven't even thought about SimCity 2000 in probably 20 years. I studied some rudimentary computer programming when I was in high school (people were still playing SimCity 2000 back then), so I knew just enough to be impressed by your skills and to understand how little I know. This was very impressive. I felt as though I was watching a master performing their craft. Thanks for the memories of both programming and SimCity 2000!
First? Magnificent video, mate
I was fortunate enough to have made a copy of my SC2k SE years ago. It runs very well on a very picky Win 3.1 DOSBOX. To be fair, I'm not sure my method has any less work involved than your way. Thank you for the video! SC2K is still one of my favorite games today.
"why is it so hard to play old games?" because it's against the interest of video game and console companies that you can play old titles. if they let you do that (or not doing anything against it), you gonna spend less time with new titles and will buy less new games, and they don't like that idea. so they even intentionally try to eradicate those options, like suing emulator creators. i actually grateful for the PC platform, as (for now) this is the only platform when they can't tell you how you use it. edit: by the way, great video, i learned a lot
And you can't even lie that it's about profits - reselling old stuff like this is easy money.
It's all about THE MESSAGE.
Why didn't you install the game on a Windows 95 VM and exported the registry key to a .reg file? That would have been much easier than the Reverse Engineering
Lol, was wondering the same thing.
Glad he showed how to view the registry calls though.
It's mainly just a video to explain how to solve a problem.
Thank you for patching the game! I hope gog is able to release this new and improved version you’ve created. Would be fun to jump back into the game after not having played it in 30 years
They never will. GOG is fairly well known for releasing a game with broken compatibility and then never releasing it. I also assume that selling the Windows 95 version also requires a change in licensing with the rights holder.
@@DoctorDalekthey don't need to, the gog version is not missing a single feature other than CD audio tracks. The game, dos or windows is exactly the same.
You can also just update the installshield installer and install it properly or look at its install script to see every needed key.
Maybe he did it as an example of tool use, but he used the most convoluted way possible to do this.
Read the comments, you can get it working without modifying a single byte.
I don't know anything about coding or programming (other than old school HTML coding), but I really appreciate your patience here! It's thanks to people like you that I've managed to play classic nostalgic games on Steam! Shout-out to you and every other programmer that works hard to bring old games to full functionality on newer operating systems, so that many of us can all relive older chapters of our lives!
Just to see what would happen I installed it on Linux/Wine after watching this video. It installed normally with the setup.exe then the it ran fine on first try. Though I am not that surprised Wine is usually more compatible with legacy games.
My favourite "look how smart I am" series. If I was gog I would hire you immediately
Since the installer is a 16 installer and the game is a 32 bit executable you should be able to just run the installer through NTVDM. This will allow the program to be installed and you’ll be able to run the program as a 32 a bit executable.
You'll have to use the 32-bit version of Windows 10 or older, since Windows 11 only comes as a 64-bit version and NTVDM was never rewritten to run on 64-bit systems. It's possible to do, but Microsoft didn't feel a need to do it.
IIRC either Windows 7 or Windows 10 made NTVDM an optional component so you'll also have to manually install it.
@@Daniel15au I believe he actually meant OTVDM, which is a port of WineVDM, Wine's NTVDM equivalent, to 64-bit versions of Windows. I tested it myself and the game's installer does indeed run just fine via OTVDM, though obviously the game still has the save/load crash bug.
This shows one of the biggest annoyances of most Windows apps of all times. They expect an installer to write some config somewhere and then will blindly rely that this config is just there when getting executed. On most other systems, apps will fall back to default config or re-create config on the fly if no config is found when the app is started and that's why other systems rarely need an installer. Even if software comes with an installer, when you extract it from there and just run it without ever executing the installer, it usually still works just fine. E.g. an app doesn't need config to know where it was installed to, it can check from where it is currently being executed (where the EXE file is located) and address all other code and data files simply relative to that location. Writing apps that are not able to run unless certain keys are wound in the windows registry is just a stupid idea, totally unnecessary and programmer laziness (or even worse, programmer ignorance or inability).
I assumed it was copy protection: so that you could not run it without 'registering" it first (with the "Mayor" registry key).
"I decized to spin up a Win11 vm to play the game" .. because you couldn't just spin up a Win95 vm instead?
Exactly my reaction
The goal was to make it run on a modern OS, so it makes sense to run it under a modern VM
The only reason it was being set up in a VM was due to the claims of malware. The goal was to make it run on a modern version of Windows
Goodluck running most old games in VM... Goodluck running also a lot of modern games to in VM
@Marssel56DOS box is a VM.... It plays old games fine that's literally its entire point, if you're talking about playing old games in a modern VM there is no difference from the games perspective versus modern hardware, they don't support anything either would have sound will be a problem without drivers to emulate different sound cards, and graphics are either software rendering, rendered with old versions of DirectX which work fine even with a VMs emulated graphics or they're using things like glide or expecting some other weird proprietary early 3D card. The VM has very little to do with any of these problems
I loved watching this! It definitely brought up childhood memories of spending HOURS trying to get a new game to run on our Windows ME system...
tldw: 16bit installers are massive pain in the butt to anyone installing old software.
honestly, I'm surprised nobody created a tool for dealing with these. it's a rather well known issue with a lot of old software.
winevdm is probably the tool you're wanting - runs most 16bit Windows executables fine, doesn't even have to be installers necessarily.
There is! On PC Gaming Wiki there's a tool called " InstallShield 3 32-bit Generic Installer" that lets Sim City 2000 install as normal. There's also a patch for the save/load crash bug
@@CakeLancelot Just used that to install SC2K, but had the load/save bug. look like I need to save this video for another day!
@@CakeLancelot oh that's nice!
@@davidrmcmahon the save/load works fine on Wine 9.0-rc1 on Linux maybe wine can get a windows port lol
wow i learned so much, plus i had a good laugh XD subscribed
funny how it works good in Wine 9.0-rc1 on Linux. Just have to play the game in the virtual desktop that wine has or it won't work and click on the task bar to get the window bar up and resize it to get the window the way you want it. The only problem is the window that has all the controls will not display on top of the city window so you can't have the city window fullscreen. this is a cool way to play it on an modern OS. But i'd say the best way if you have the hardware. Is to use 86box have it emu an 3dfx 3000 and install win98 and can run it in 1080p as long as you have the 3dfx 3000 drivers installed and play a lot more old school games like the 1st need for speed. BWT grate video
Brilliant! Though since you were playing with VMs anyway, I may as well have just made a Win95 VM and tried it there. 😄
This is a really interesting video. You expect it to be an "OMG game is broken!!1" clickbait but seeing how people get this stuff running properly is very interesting. There are other games like Total Annihilation people have been exe hacking for years and have only really gotten running perfectly recently after lots of community collaboration. In other cases like Caesar 3 they've rebuilt an entirely new engine. It's amazing how enthusiasts keep this stuff alive and even add in lots of functionality that make it look and play better than it even did in the first place on the correct hardware.
Awesome video! Detailed, engaging, and concise!
Well I have handled the registry issues multiple times, and I would wager your save/load issue is an associated registry line or registry limiter (May have an issue with the file folder/location pointers being in old dos/win 95 not having extended file name allowances) I don't recall if Sim City had a specific file location/controlled installer and whether you were allowed to cycle/choose where to install and load etc from. It has been a LONG time since I played it.
Oh and remember old computer systems had set and default file pathing, and if you failed to set your pathing correct in the autoexec or config file a lot of games would not run.
It was a good challenge for me, to understand the stuff. The important part was the STDCALL convention.. Stackpointer and to count the parameters right... In the 13th DWORD ...the flags :-) Then flip some bits and voila. Great Content !!! Thank You Nathan !
It would have been easier to load a windows 98 vm install the game and extract the registry keys.
Yeah, Ghidra is powerful but holy heck can it sometimes make zero sense xD This vid was motivating to watch, I love this kind of stuff
I’m so impressed by how you pull in expertise at every turn in this video. If you don’t mind sharing, I’d love to know what kinds (categories may be the better word) of development know-how you drew from, and how you built those skills in the first place
I just watch the whole video and I loved it! Expecially since SimCity 2000 was something both me and my step-dad used to play.
I would suggest though adding a soft non-copyrighted track to videos like this. It helps a lot in elevating the content and makes it more pleasant to watch, expecially since everything else is fantastic
Love these reverse engineering videos of yours!
Or just run Windows XP in a VM. With software, it’s almost like people find an old screw (software) and complain that their modern, yearly highly advancing screw driver (hardware, operating systems, …) is not working with it. I love these reverse engineering videos, but as a software engineer this attitude 0:00 is very annoying. Either pay someone to build you an adapter for your new screw driver, or dig out the old one. You would neither want, nor can afford, to live in a world of endless backwards compatibility.
I'm no expert but maybe don't spin up a Windows *11* VM for a Windows 95 game? : p
Seriously though, would it be "controversial" to put this up somewhere as a patch?
bro I'm not interested on playing SimCity 2000 BUT I admire your dedication and I aspire to have as much technical knowledge as you the day I ever go back to some old game to patch it and play it by myself.
Looking at you, road rash 👀
You got my sub, keep up the interesting videos coming :)
Nobody tell him about proton, it'll break his heart.
You just blew my mind. What I thought was going to be easy I realized you know so much more than myself.
I fn love your videos dude, thanks for sharing the knowledge!
and that is why i love the high seas … tons of original versions tend to already have tons of fixes in them to work on all windows versions and majority of the time they are applied by the game launcher itself as it detects what patch to run on what version
Truly awesome. Well done, sir!
Just got this recommended, subbing right away
I still have my boxed copy of this one from my childhood. Im so happy to see it actually working on a modern system even with a patch.
I didn't understand much, but I loved the behind the curtain look at what makes games tick.
Excellent video. You never explicitly state you want it to run IN windows 11. Just you want to play the game ON your Windows 11 machine. So every time you said “let’s take a step back” I thought you were going to just run the game in a win95 vm like I do on MacOS.😂
I probably understand about 3% of what you discuss, but I love every minute of it.
This was great :)
Now do Black & White xD
You sir, are a very clerver man, well done! Although ir would of been lovely at the end of your video seeing it load up
I probably have weeks of my teen years wrapped up in SC2K - it was a blast, but I def like the newer stuff with all the detail I wish could have been possible in that older game (Cites: Skylines is a great example).