You Can Only Play This Game By Hacking It

  Рет қаралды 343,948

Nathan Baggs

Nathan Baggs

Күн бұрын

Пікірлер: 1 100
@nathanbaggs
@nathanbaggs 9 ай бұрын
Want early access to new videos and some behind the scenes content? Consider becoming a channel member kzbin.info/door/QvW_89l7f-hCMP1pzGm4xwjoin
@ShishakliAus
@ShishakliAus 7 ай бұрын
Excuse me sir but, I'm having trouble finding the link to your patreon...
@map-reduce
@map-reduce 11 ай бұрын
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
@aspzx
@aspzx 11 ай бұрын
When you say the "Windows" version, do you mean Windows 3?
@map-reduce
@map-reduce 11 ай бұрын
@@aspzx Yes, Windows 3, sorry. Very old habits :D
@soundspark
@soundspark 11 ай бұрын
Definitely got a lot of enjoyment out of the game back in the day.
@bstoppel1
@bstoppel1 11 ай бұрын
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.
@ciscornBIG
@ciscornBIG 11 ай бұрын
Thank you for your work. I loved sc2k win95 as a kid. It was so cozy.
@lukusridley
@lukusridley 11 ай бұрын
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!
@magnusm4
@magnusm4 10 ай бұрын
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.
@Ztygs
@Ztygs 10 ай бұрын
@@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.
@jansenart0
@jansenart0 10 ай бұрын
Don't forget about talking to an inanimate rubber duck.
@vinesauceobscurities
@vinesauceobscurities 10 ай бұрын
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.
@MuradBeybalaev
@MuradBeybalaev 10 ай бұрын
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.
@mme725
@mme725 11 ай бұрын
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 👍
@leviathanx0815
@leviathanx0815 11 ай бұрын
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 😅
@RandomUser2401
@RandomUser2401 11 ай бұрын
@@leviathanx0815probably would‘ve taken more time than quickly inspecting the not found key errors
@lorenkuhn3806
@lorenkuhn3806 11 ай бұрын
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.
@RandomUser2401
@RandomUser2401 11 ай бұрын
@@lorenkuhn3806 probably would‘ve taken more time than quickly inspecting the not found key errors
@RandomUser2401
@RandomUser2401 11 ай бұрын
@@rich1051414 probably would‘ve taken more time than quickly inspecting the not found key errors
@darkfoxfurre
@darkfoxfurre 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.
@ReneManqueros
@ReneManqueros 11 ай бұрын
what about installing the game on a vm with win95 then exporting the generated reg keys as part of a new install process
@tnmrvc
@tnmrvc 11 ай бұрын
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''
@ReneManqueros
@ReneManqueros 11 ай бұрын
@@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
@PatrykWolowiec
@PatrykWolowiec 11 ай бұрын
@@ReneManqueros 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.
@siymann
@siymann 11 ай бұрын
​@@PatrykWolowiecyes this was a really long winded way to work out something that could easily be fixed using tools like psexec etc
@kkinfl9582
@kkinfl9582 11 ай бұрын
Have you released this patch anywhere? I’m sure many people would appreciate the work you did.
@monkeylicker638
@monkeylicker638 11 ай бұрын
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.
@Sameer.Trivedi
@Sameer.Trivedi 11 ай бұрын
Yeah he should put this on PC gaming wiki
@nightchicken3517
@nightchicken3517 11 ай бұрын
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
@LeonBlade
@LeonBlade 11 ай бұрын
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.
@heroclix0rz
@heroclix0rz 11 ай бұрын
Don't think it would be legal. But he should hit up GOG about it.
@seritools
@seritools 11 ай бұрын
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.
@thetinpin
@thetinpin 11 ай бұрын
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.
@lexisnep525
@lexisnep525 11 ай бұрын
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
@dsihacker01 11 ай бұрын
My thought was literally "If he is running a VM anyways, why not run a sim2000 only VM?"
@Stinktierchen
@Stinktierchen 11 ай бұрын
@@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.
@cynic5581
@cynic5581 11 ай бұрын
⁠@@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?
@fritzcolburn
@fritzcolburn 11 ай бұрын
@@cynic5581 It's literally in the first 11 seconds of the video
@Poldovico
@Poldovico 11 ай бұрын
My first thought was "betcha Wine runs it"
@stefan2564
@stefan2564 11 ай бұрын
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
@GeorgeMixalis
@GeorgeMixalis 11 ай бұрын
Agree
@chernobyl169
@chernobyl169 11 ай бұрын
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.
@michaelchristianrusso
@michaelchristianrusso 11 ай бұрын
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.
@TatsuZZmage
@TatsuZZmage 11 ай бұрын
desktop existed in 95 its before 95 that it didn't exist.
@viell88
@viell88 11 ай бұрын
​@@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.
@Smogne
@Smogne 11 ай бұрын
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.
@navsingh9406
@navsingh9406 11 ай бұрын
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
@plusplusplus9837
@plusplusplus9837 11 ай бұрын
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.
@vidal9747
@vidal9747 11 ай бұрын
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.
@borisyeltsin6606
@borisyeltsin6606 11 ай бұрын
Bum fights
@Cinkodacs
@Cinkodacs 11 ай бұрын
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.
@ZappyOh
@ZappyOh 11 ай бұрын
@@I_DENOUNCE_THE_TALMUD ???
@Mostlyharmless1985
@Mostlyharmless1985 11 ай бұрын
Maxis literally doesn’t exist except as a zombie hidden in a closet somewhere in EA.
@thelakeman2538
@thelakeman2538 11 ай бұрын
If only IP laws were sane, reasonable, and based on consistent logic and were not tools for monopolization or lawyers' employment.
@Roxor128
@Roxor128 11 ай бұрын
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.
@leucome
@leucome 11 ай бұрын
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.
@pierssegal5910
@pierssegal5910 11 ай бұрын
AFAIK WINE/Proton is generally far more reliable for old Windows games than modern Windows is.
@GSBarlev
@GSBarlev 11 ай бұрын
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).
@Smogne
@Smogne 11 ай бұрын
@@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).
@leucome
@leucome 11 ай бұрын
@@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.
@arashikou6661
@arashikou6661 11 ай бұрын
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.
@SaraMorgan-ym6ue
@SaraMorgan-ym6ue 11 ай бұрын
if your want to play sim city 2000 your in for a computer science lesson kid🤣🤣🤣🤣🤣
@43ann
@43ann 11 ай бұрын
another BANGER. So much can be learned with these videos.
@bzuidgeest
@bzuidgeest 11 ай бұрын
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.
@xdan0x
@xdan0x 11 ай бұрын
For some reason I felt like subscribing to your channel at around the 4 minuet mark... 🤔
@Anthestudios
@Anthestudios 11 ай бұрын
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!
@sonarun
@sonarun 11 ай бұрын
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.
@stickguy9109
@stickguy9109 11 ай бұрын
Same ahah
@spaceghostmiid
@spaceghostmiid 11 ай бұрын
i’m not even a programmer, just a compsci enthusiast, i love this style of content.
@nojuanatall3281
@nojuanatall3281 10 ай бұрын
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.
@RobertAdairWorkshop
@RobertAdairWorkshop 10 ай бұрын
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!
@NewAgeSoldier
@NewAgeSoldier 11 ай бұрын
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.
@HansLemurson
@HansLemurson 11 ай бұрын
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?
@tuckster27
@tuckster27 11 ай бұрын
dosbox-x has more support for windows 95 than other forks@@HansLemurson
@darmoktalk
@darmoktalk 11 ай бұрын
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.
@brostenen
@brostenen 11 ай бұрын
I have gotten my self periode correct hardware. It is the best way to do it.
@baipizhu
@baipizhu 10 ай бұрын
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.
@Mackinstyle
@Mackinstyle 11 ай бұрын
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.
@Tom_Neverwinter
@Tom_Neverwinter 11 ай бұрын
yup. this was one of the first easy hurdles they just ignored.
@thebeckofkevin
@thebeckofkevin 11 ай бұрын
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.
@Tom_Neverwinter
@Tom_Neverwinter 11 ай бұрын
@@thebeckofkevin I agree
@MrEdrftgyuji
@MrEdrftgyuji 11 ай бұрын
Or you could just buy a USB CD drive for next to nothing.
@WackoMcGoose
@WackoMcGoose 11 ай бұрын
@@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.
@BrunoValads
@BrunoValads 11 ай бұрын
Your work here is extremely important for game preservation
@PluMGMK
@PluMGMK 10 ай бұрын
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).
@Engy_Wuck
@Engy_Wuck 10 ай бұрын
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.
@PluMGMK
@PluMGMK 10 ай бұрын
@@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.
@azmrblack
@azmrblack 11 ай бұрын
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!
@Phdyaux
@Phdyaux 11 ай бұрын
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.
@Eyetrauma
@Eyetrauma 11 ай бұрын
I believe that bug was for the original SimCity (non-2000), and dealt with windows 3.1’s memory management.
@Peter_Morris
@Peter_Morris 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.
@nathanbaggs
@nathanbaggs 11 ай бұрын
Glad you liked it!
@outervale
@outervale 11 ай бұрын
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.
@JoeTheis
@JoeTheis 11 ай бұрын
This is an insane level of detailed spelunking, but also presented in an entertaining and informative way. Bravo!
@SaraMorgan-ym6ue
@SaraMorgan-ym6ue 11 ай бұрын
yeah it would be simple to just run a virtual machine with windows 98
@liveyourdreammedia
@liveyourdreammedia 11 ай бұрын
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
@HinkHall
@HinkHall 11 ай бұрын
I love these videos you make they're to the point and give SO much info
@jmckinney0040
@jmckinney0040 11 ай бұрын
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!
@bigedwerd
@bigedwerd 11 ай бұрын
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.
@bryede
@bryede 10 ай бұрын
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.
@chesthairascot3743
@chesthairascot3743 11 ай бұрын
Dude, that was a super intuitive explanation. Always down to see old game patching videos.
@HansLemurson
@HansLemurson 11 ай бұрын
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.
@udirt
@udirt 11 ай бұрын
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!
@xero110
@xero110 11 ай бұрын
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.
@ytdlgandalf
@ytdlgandalf 11 ай бұрын
How awesome that you tell your mistakes and explicitly mention your wrong assumptions! This stuff is good.
@nathanbaggs
@nathanbaggs 11 ай бұрын
I think it’s important to not gloss too much over the mistakes, they’re all stepping stones to the solution (:
@EspyMelly
@EspyMelly 11 ай бұрын
Preservation of old games is becoming a harder and harder issue as we move forward.
@PsRohrbaugh
@PsRohrbaugh 11 ай бұрын
Preservation of everything is becoming harder. You can go to the library and get a newspaper from 1800. But a KZbin video from 2 years ago? Good luck.
@AmodeusR
@AmodeusR 11 ай бұрын
I came here thinking I would see some classic old game gameplay and ended up receiving a reverse engineer free workshop xD
@AlexGeek
@AlexGeek 11 ай бұрын
The real game ended when Sim City ran
@nathanbaggs
@nathanbaggs 11 ай бұрын
My thoughts exactly!
@Luxalpa
@Luxalpa 11 ай бұрын
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.
@executor32
@executor32 10 ай бұрын
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.
@GeomancerHT
@GeomancerHT 11 ай бұрын
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.
@Nakagolas
@Nakagolas 11 ай бұрын
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.
@Mtaalas
@Mtaalas 11 ай бұрын
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!
@sonarun
@sonarun 11 ай бұрын
Serioulsy, they should hire him, post the code, and he can get all of the subs and money just from creating this amazing content.
@cho4d
@cho4d 11 ай бұрын
@@sonarun something tells me he makes this content for fun and they couldn't afford him
@LeonBlade
@LeonBlade 11 ай бұрын
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.
@Bozebo
@Bozebo 11 ай бұрын
Potential legal issues. Just having this vid up instead means someone else might do that legwork open source.
@Mtaalas
@Mtaalas 11 ай бұрын
@@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.
@robertoso8796
@robertoso8796 11 ай бұрын
oh man, you're gonna get me in so much trouble when i start making changes i shouldn't make. i genuinely appreciate it
@TheRealJoelKolb
@TheRealJoelKolb 11 ай бұрын
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.
@1-eye-willy
@1-eye-willy 11 ай бұрын
thats what i said hes running VM's, just play the game on an older version of windows.
@hairyballbastic8943
@hairyballbastic8943 11 ай бұрын
he wouldn't make such an epic video though 😢
@gregorymorse8423
@gregorymorse8423 11 ай бұрын
Decompiling the installer script is just as good
@tcr7
@tcr7 10 ай бұрын
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!
@genemachine02
@genemachine02 11 ай бұрын
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
@DoctorDalek
@DoctorDalek 11 ай бұрын
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.
@bzuidgeest
@bzuidgeest 11 ай бұрын
​@@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.
@ПётрПроценко-б3к
@ПётрПроценко-б3к 11 ай бұрын
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.
@GGRS
@GGRS 11 ай бұрын
These videos are very cool, thanks for all the time and effort these must take dude :)
@JoeCole_social
@JoeCole_social 9 ай бұрын
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.
@nathanbaggs
@nathanbaggs 9 ай бұрын
Awesome! Thank you!
@Royaleah
@Royaleah 11 ай бұрын
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.
@RokasSondaras
@RokasSondaras 11 ай бұрын
I been following for 2 about two months, but you keep bringing more to the table. :) great video.
@jvgarrote
@jvgarrote 11 ай бұрын
First? Magnificent video, mate
@jnonymous
@jnonymous 10 ай бұрын
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!
@CapnSlipp
@CapnSlipp 11 ай бұрын
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.
@TradieTrev
@TradieTrev 11 ай бұрын
That was my sediment also, what's the old saying though? There's many ways to skin the cat lol
@MrTheog1989
@MrTheog1989 11 ай бұрын
This channel is awesome and I can't wait to see more videos like this!
@puskasis
@puskasis 11 ай бұрын
"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
@KopperNeoman
@KopperNeoman 11 ай бұрын
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.
@Glitched_Starman
@Glitched_Starman 11 ай бұрын
This is really awesome! I look forward to when I can come back to this and understand everything that's been explained 👍
@scratchos9816
@scratchos9816 11 ай бұрын
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
@Gus_Diaz_83
@Gus_Diaz_83 10 ай бұрын
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!
@vaendryl
@vaendryl 11 ай бұрын
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.
@CakeLancelot
@CakeLancelot 11 ай бұрын
winevdm is probably the tool you're wanting - runs most 16bit Windows executables fine, doesn't even have to be installers necessarily.
@Palo_din
@Palo_din 11 ай бұрын
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
@davidrmcmahon
@davidrmcmahon 11 ай бұрын
@@CakeLancelot Just used that to install SC2K, but had the load/save bug. look like I need to save this video for another day!
@vaendryl
@vaendryl 11 ай бұрын
@@CakeLancelot oh that's nice!
@scratchos9816
@scratchos9816 11 ай бұрын
@@davidrmcmahon the save/load works fine on Wine 9.0-rc1 on Linux maybe wine can get a windows port lol
@cynic5581
@cynic5581 11 ай бұрын
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.😂
@ShapeyFiend
@ShapeyFiend 11 ай бұрын
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.
@LundisQuie
@LundisQuie 11 ай бұрын
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
@forbiddenera
@forbiddenera 11 ай бұрын
"I decized to spin up a Win11 vm to play the game" .. because you couldn't just spin up a Win95 vm instead?
@lostguy362
@lostguy362 6 ай бұрын
Exactly my reaction
@Caligari87
@Caligari87 3 ай бұрын
The goal was to make it run on a modern OS, so it makes sense to run it under a modern VM
@Johncw87
@Johncw87 Ай бұрын
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
@kylehc15
@kylehc15 10 ай бұрын
im glad you are working on getting it to work on modern system we need more people like you doing this kind of thing
@Book_Bird
@Book_Bird 11 ай бұрын
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
@xcoder1122
@xcoder1122 11 ай бұрын
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).
@jamesphillips2285
@jamesphillips2285 11 ай бұрын
I assumed it was copy protection: so that you could not run it without 'registering" it first (with the "Mayor" registry key).
@sanderbos4243
@sanderbos4243 11 ай бұрын
Love these reverse engineering videos of yours!
@porsche911c
@porsche911c 11 ай бұрын
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...
@leucome
@leucome 11 ай бұрын
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.
@straubulous9511
@straubulous9511 10 ай бұрын
You just blew my mind. What I thought was going to be easy I realized you know so much more than myself.
@davidew98
@davidew98 11 ай бұрын
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.
@Daniel15au
@Daniel15au 11 ай бұрын
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.
@executor32
@executor32 10 ай бұрын
@@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.
@fauzirahman3285
@fauzirahman3285 11 ай бұрын
> My computer doesn't even have a CD drive You can buy an external USB CD drive these days
@llwellyncuhfwarthen
@llwellyncuhfwarthen 11 ай бұрын
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.
@alberts6096
@alberts6096 11 ай бұрын
best videos on youtube for me currently. you do amazing job.
@Chrs2021
@Chrs2021 11 ай бұрын
It would have been easier to load a windows 98 vm install the game and extract the registry keys.
@sapo-san8054
@sapo-san8054 11 ай бұрын
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 :)
@PlayingItWrong
@PlayingItWrong 11 ай бұрын
Nobody tell him about proton, it'll break his heart.
@Norieu
@Norieu 10 ай бұрын
bro going trough a whole series of computer engineering just to get a game working
@dracenmarx
@dracenmarx 11 ай бұрын
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
@sloth4urluv
@sloth4urluv 11 ай бұрын
Lol, was wondering the same thing. Glad he showed how to view the registry calls though.
@LeonBlade
@LeonBlade 11 ай бұрын
It's mainly just a video to explain how to solve a problem.
@adam-xt8te
@adam-xt8te 10 ай бұрын
My favourite "look how smart I am" series. If I was gog I would hire you immediately
@user-sl6gn1ss8p
@user-sl6gn1ss8p 11 ай бұрын
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?
@TeamUnpro
@TeamUnpro 11 ай бұрын
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
@gerry1980gm
@gerry1980gm 11 ай бұрын
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 !
@christinamay6596
@christinamay6596 11 ай бұрын
I didn't understand much, but I loved the behind the curtain look at what makes games tick.
@kuromiLayfe
@kuromiLayfe 11 ай бұрын
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
@christianb9077
@christianb9077 7 ай бұрын
I'd just have tried it with Wine on Linux. But then, I know next to nothing of programming. Great video!
@dylantaylor490
@dylantaylor490 10 ай бұрын
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.
@smokeysky
@smokeysky 11 ай бұрын
wow i learned so much, plus i had a good laugh XD subscribed
@alexgayer85
@alexgayer85 10 ай бұрын
Brilliant! Though since you were playing with VMs anyway, I may as well have just made a Win95 VM and tried it there. 😄
@boltonky
@boltonky 11 ай бұрын
As an IT person i love the amount of technical effort you have gone too :) reminds me of being younger when i used to program stuff I would of personally run it in a virtual machine but where is the fun in that.
@JucheGang
@JucheGang 10 ай бұрын
Awesome video! Detailed, engaging, and concise!
@ixamraxi
@ixamraxi 11 ай бұрын
I'd have just pulled an old win95 retro computer out of the closet, but your way works too. :P
@VladislavRumsh
@VladislavRumsh 11 ай бұрын
Just got this recommended, subbing right away
@Bukkarooo
@Bukkarooo 11 ай бұрын
Very interesting to see what it took to get it cooperative with modern Windows 11. The save/load aspect especially tricky, as the rest seemed like things that may have been resolved if the SETUP program was actually able to do its thing. I know I would have just spun up a Win95 VM and run the setup and game in there, but it was actually really cool to see the steps you took to identify and fix the different errors. It took a long time to identify things, but it's interesting to see how "few" changes need to be made to essentially port it to run natively.
@kozad86
@kozad86 11 ай бұрын
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).
@StaticFreq
@StaticFreq 10 ай бұрын
Truly awesome. Well done, sir!
@TheRobMozza
@TheRobMozza 10 ай бұрын
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 Hacked Diablo II To Use Modern Graphics
13:16
Nathan Baggs
Рет қаралды 300 М.
When Your Game Is Bad But Your Optimisation Is Genius
8:52
Vercidium
Рет қаралды 1,5 МЛН
СКОЛЬКО ПАЛЬЦЕВ ТУТ?
00:16
Masomka
Рет қаралды 3,1 МЛН
小路飞还不知道他把路飞给擦没有了 #路飞#海贼王
00:32
路飞与唐舞桐
Рет қаралды 84 МЛН
Hacking a 25 Year Old Game To Make It Work
11:26
Nathan Baggs
Рет қаралды 299 М.
The Free Version Of StarCraft Is NOT What It Seems...
12:17
Nathan Baggs
Рет қаралды 81 М.
Fixing Multiplayer Of A 25 Year Old Game
12:37
Nathan Baggs
Рет қаралды 102 М.
Hacking a weird TV censoring device
20:59
Ben Eater
Рет қаралды 3,2 МЛН
AI Automations 101: Reverse Engineer Any API
16:16
Hichem's Journey
Рет қаралды 1,6 М.
I Made A Virus - I Instantly Regretted It
12:44
Nathan Baggs
Рет қаралды 22 М.
How Do Hackers Actually Cheat In Games?
12:38
Nathan Baggs
Рет қаралды 38 М.
Reverse Engineering This Insane Glitch (Ocarina of Time)
12:46
Nathan Baggs
Рет қаралды 62 М.
Hacking This Game To Remove Jump Scares (Observation Duty)
10:19
Nathan Baggs
Рет қаралды 16 М.
СКОЛЬКО ПАЛЬЦЕВ ТУТ?
00:16
Masomka
Рет қаралды 3,1 МЛН