You Can Only Play This Game By Hacking It

Поділитися
Вставка
  • Опубліковано 22 гру 2024

КОМЕНТАРІ •

  • @nathanbaggs
    @nathanbaggs  10 місяців тому +1

    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

    • @ShishakliAus
      @ShishakliAus 8 місяців тому

      Excuse me sir but, I'm having trouble finding the link to your patreon...

  • @lukusridley
    @lukusridley Рік тому +379

    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 Рік тому +4

      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 11 місяців тому

      @@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 11 місяців тому +5

      Don't forget about talking to an inanimate rubber duck.

    • @vinesauceobscurities
      @vinesauceobscurities 11 місяців тому +4

      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 11 місяців тому +3

      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.

  • @map-reduce
    @map-reduce Рік тому +621

    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 Рік тому +26

      When you say the "Windows" version, do you mean Windows 3?

    • @map-reduce
      @map-reduce Рік тому +68

      @@aspzx Yes, Windows 3, sorry. Very old habits :D

    • @soundspark
      @soundspark Рік тому +5

      Definitely got a lot of enjoyment out of the game back in the day.

    • @bstoppel1
      @bstoppel1 Рік тому +20

      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 Рік тому +10

      Thank you for your work. I loved sc2k win95 as a kid. It was so cozy.

  • @kkinfl9582
    @kkinfl9582 Рік тому +1183

    Have you released this patch anywhere? I’m sure many people would appreciate the work you did.

    • @monkeylicker638
      @monkeylicker638 Рік тому

      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 Рік тому +133

      Yeah he should put this on PC gaming wiki

    • @nightchicken3517
      @nightchicken3517 Рік тому +59

      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 Рік тому +72

      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 Рік тому

      Don't think it would be legal. But he should hit up GOG about it.

  • @mme725
    @mme725 Рік тому +508

    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 Рік тому +87

      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 Рік тому

      @@leviathanx0815probably would‘ve taken more time than quickly inspecting the not found key errors

    • @lorenkuhn3806
      @lorenkuhn3806 Рік тому +61

      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 Рік тому

      @@lorenkuhn3806 probably would‘ve taken more time than quickly inspecting the not found key errors

    • @RandomUser2401
      @RandomUser2401 Рік тому

      @@rich1051414 probably would‘ve taken more time than quickly inspecting the not found key errors

  • @seritools
    @seritools Рік тому +24

    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 Рік тому +200

    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 Рік тому +84

      My thought was literally "If he is running a VM anyways, why not run a sim2000 only VM?"

    • @Stinktierchen
      @Stinktierchen Рік тому +60

      @@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 Рік тому +14

      ⁠@@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 Рік тому +14

      @@cynic5581 It's literally in the first 11 seconds of the video

    • @Poldovico
      @Poldovico Рік тому +14

      My first thought was "betcha Wine runs it"

  • @darkfoxfurre
    @darkfoxfurre Рік тому +57

    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.

    • @rnmnqrs
      @rnmnqrs Рік тому +22

      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 Рік тому +16

      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''

    • @rnmnqrs
      @rnmnqrs Рік тому +18

      @@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 Рік тому +16

      @@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.

    • @siymann
      @siymann Рік тому +9

      ​@@PatrykWolowiecyes this was a really long winded way to work out something that could easily be fixed using tools like psexec etc

  • @plusplusplus9837
    @plusplusplus9837 Рік тому +36

    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.

  • @chernobyl169
    @chernobyl169 Рік тому +48

    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 Рік тому +3

      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 Рік тому +2

      desktop existed in 95 its before 95 that it didn't exist.

    • @viell88
      @viell88 Рік тому

      ​@@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 Рік тому +3

      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 Рік тому +4

      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

  • @Roxor128
    @Roxor128 Рік тому +22

    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 Рік тому +3

      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 Рік тому +7

      AFAIK WINE/Proton is generally far more reliable for old Windows games than modern Windows is.

    • @GSBarlev
      @GSBarlev Рік тому

      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 Рік тому +3

      @@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 Рік тому +1

      @@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.

  • @stefan2564
    @stefan2564 Рік тому +116

    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

  • @vidal9747
    @vidal9747 Рік тому +76

    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 Рік тому +3

      Bum fights

    • @Cinkodacs
      @Cinkodacs Рік тому +15

      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 Рік тому

      @@I_DENOUNCE_THE_TALMUD ???

    • @Mostlyharmless1985
      @Mostlyharmless1985 Рік тому +9

      Maxis literally doesn’t exist except as a zombie hidden in a closet somewhere in EA.

    • @thelakeman2538
      @thelakeman2538 Рік тому +9

      If only IP laws were sane, reasonable, and based on consistent logic and were not tools for monopolization or lawyers' employment.

  • @arashikou6661
    @arashikou6661 Рік тому +27

    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 Рік тому

      if your want to play sim city 2000 your in for a computer science lesson kid🤣🤣🤣🤣🤣

  • @NewAgeSoldier
    @NewAgeSoldier Рік тому +13

    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 Рік тому

      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 Рік тому

      dosbox-x has more support for windows 95 than other forks@@HansLemurson

    • @darmoktalk
      @darmoktalk Рік тому +1

      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 Рік тому +1

      I have gotten my self periode correct hardware. It is the best way to do it.

    • @baipizhu
      @baipizhu 11 місяців тому

      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 Рік тому +75

    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 Рік тому +12

      yup. this was one of the first easy hurdles they just ignored.

    • @thebeckofkevin
      @thebeckofkevin Рік тому +25

      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 Рік тому +3

      @@thebeckofkevin I agree

    • @MrEdrftgyuji
      @MrEdrftgyuji Рік тому +13

      Or you could just buy a USB CD drive for next to nothing.

    • @WackoMcGoose
      @WackoMcGoose Рік тому

      @@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.

  • @Anthestudios
    @Anthestudios Рік тому +9

    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 Рік тому +144

    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 Рік тому +1

      Same ahah

    • @spaceghostmiid
      @spaceghostmiid Рік тому

      i’m not even a programmer, just a compsci enthusiast, i love this style of content.

    • @nojuanatall3281
      @nojuanatall3281 11 місяців тому

      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.

  • @azmrblack
    @azmrblack Рік тому +4

    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!

  • @BrunoValads
    @BrunoValads Рік тому +15

    Your work here is extremely important for game preservation

  • @xdan0x
    @xdan0x Рік тому +16

    For some reason I felt like subscribing to your channel at around the 4 minuet mark... 🤔

  • @PluMGMK
    @PluMGMK 11 місяців тому +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 11 місяців тому

      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 11 місяців тому +1

      @@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.

  • @RobertAdairWorkshop
    @RobertAdairWorkshop 11 місяців тому +1

    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!

  • @JoeTheis
    @JoeTheis Рік тому +9

    This is an insane level of detailed spelunking, but also presented in an entertaining and informative way. Bravo!

    • @SaraMorgan-ym6ue
      @SaraMorgan-ym6ue Рік тому

      yeah it would be simple to just run a virtual machine with windows 98

  • @HinkHall
    @HinkHall Рік тому +8

    I love these videos you make they're to the point and give SO much info

  • @TheRealJoelKolb
    @TheRealJoelKolb Рік тому +42

    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 Рік тому +4

      thats what i said hes running VM's, just play the game on an older version of windows.

    • @hairyballbastic8943
      @hairyballbastic8943 Рік тому +5

      he wouldn't make such an epic video though 😢

    • @gregorymorse8423
      @gregorymorse8423 Рік тому

      Decompiling the installer script is just as good

  • @Peter_Morris
    @Peter_Morris Рік тому +6

    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.

  • @Phdyaux
    @Phdyaux Рік тому +8

    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 Рік тому +3

      I believe that bug was for the original SimCity (non-2000), and dealt with windows 3.1’s memory management.

  • @chesthairascot3743
    @chesthairascot3743 Рік тому +1

    Dude, that was a super intuitive explanation. Always down to see old game patching videos.

  • @jmckinney0040
    @jmckinney0040 Рік тому +2

    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!

  • @HansLemurson
    @HansLemurson Рік тому +4

    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.

  • @43ann
    @43ann Рік тому +25

    another BANGER. So much can be learned with these videos.

    • @bzuidgeest
      @bzuidgeest Рік тому

      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.

  • @udirt
    @udirt Рік тому +1

    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!

  • @liveyourdreammedia
    @liveyourdreammedia Рік тому +3

    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

  • @EspyMelly
    @EspyMelly Рік тому +5

    Preservation of old games is becoming a harder and harder issue as we move forward.

    • @PsRohrbaugh
      @PsRohrbaugh Рік тому +4

      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.

  • @outervale
    @outervale Рік тому +13

    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.

  • @RokasSondaras
    @RokasSondaras Рік тому

    I been following for 2 about two months, but you keep bringing more to the table. :) great video.

  • @bigedwerd
    @bigedwerd Рік тому +20

    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 11 місяців тому +1

      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.

  • @robertoso8796
    @robertoso8796 Рік тому

    oh man, you're gonna get me in so much trouble when i start making changes i shouldn't make. i genuinely appreciate it

  • @xero110
    @xero110 Рік тому +4

    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.

  • @Nakagolas
    @Nakagolas Рік тому +2

    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.

  • @AmodeusR
    @AmodeusR Рік тому +5

    I came here thinking I would see some classic old game gameplay and ended up receiving a reverse engineer free workshop xD

  • @jnonymous
    @jnonymous 11 місяців тому

    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!

  • @Caligari87
    @Caligari87 4 місяці тому +11

    All the people saying "use a Win98 VM" or "buy period-correct hardware" completely missing the point.

    • @jmtradbr
      @jmtradbr 15 днів тому +1

      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.

    • @Caligari87
      @Caligari87 15 днів тому +1

      @jmtradbr the community thanks you for your pedantry

    • @jmtradbr
      @jmtradbr 15 днів тому

      @@Caligari87 your welcome 😃

    • @EntropicTroponin
      @EntropicTroponin 13 днів тому

      ​@@jmtradbr *you're

  • @JoeCole_social
    @JoeCole_social 10 місяців тому

    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.

  • @Luxalpa
    @Luxalpa Рік тому +4

    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 11 місяців тому

      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.

  • @ПётрПроценко-б3к

    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 Рік тому +4

    These videos are very cool, thanks for all the time and effort these must take dude :)

  • @ytdlgandalf
    @ytdlgandalf Рік тому +2

    How awesome that you tell your mistakes and explicitly mention your wrong assumptions! This stuff is good.

    • @nathanbaggs
      @nathanbaggs  Рік тому +3

      I think it’s important to not gloss too much over the mistakes, they’re all stepping stones to the solution (:

  • @GeomancerHT
    @GeomancerHT Рік тому +3

    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.

  • @Glitched_Starman
    @Glitched_Starman Рік тому +1

    This is really awesome! I look forward to when I can come back to this and understand everything that's been explained 👍

  • @Royaleah
    @Royaleah Рік тому +2

    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.

  • @MrTheog1989
    @MrTheog1989 Рік тому +1

    This channel is awesome and I can't wait to see more videos like this!

  • @AlexGeek
    @AlexGeek Рік тому +5

    The real game ended when Sim City ran

  • @kylehc15
    @kylehc15 11 місяців тому

    im glad you are working on getting it to work on modern system we need more people like you doing this kind of thing

  • @CapnSlipp
    @CapnSlipp Рік тому +7

    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 Рік тому +1

      That was my sediment also, what's the old saying though? There's many ways to skin the cat lol

  • @alberts6096
    @alberts6096 Рік тому

    best videos on youtube for me currently. you do amazing job.

  • @Mtaalas
    @Mtaalas Рік тому +5

    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 Рік тому +1

      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 Рік тому +5

      @@sonarun something tells me he makes this content for fun and they couldn't afford him

    • @LeonBlade
      @LeonBlade Рік тому

      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 Рік тому

      Potential legal issues. Just having this vid up instead means someone else might do that legwork open source.

    • @Mtaalas
      @Mtaalas Рік тому

      @@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.

  • @tcr7
    @tcr7 11 місяців тому

    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!

  • @jvgarrote
    @jvgarrote Рік тому +3

    First? Magnificent video, mate

  • @Airelon
    @Airelon 12 днів тому

    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.

  • @puskasis
    @puskasis Рік тому +6

    "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 Рік тому +1

      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.

  • @dracenmarx
    @dracenmarx Рік тому +12

    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 Рік тому +1

      Lol, was wondering the same thing.
      Glad he showed how to view the registry calls though.

    • @LeonBlade
      @LeonBlade Рік тому +2

      It's mainly just a video to explain how to solve a problem.

  • @genemachine02
    @genemachine02 Рік тому +7

    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 Рік тому +1

      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 Рік тому

      ​@@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.

  • @Gus_Diaz_83
    @Gus_Diaz_83 11 місяців тому

    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!

  • @leucome
    @leucome Рік тому +3

    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.

  • @adam-xt8te
    @adam-xt8te 11 місяців тому

    My favourite "look how smart I am" series. If I was gog I would hire you immediately

  • @davidew98
    @davidew98 Рік тому +3

    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 Рік тому

      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 11 місяців тому

      @@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.

  • @xcoder1122
    @xcoder1122 Рік тому +2

    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 Рік тому +1

      I assumed it was copy protection: so that you could not run it without 'registering" it first (with the "Mayor" registry key).

  • @forbiddenera
    @forbiddenera Рік тому +47

    "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 7 місяців тому +1

      Exactly my reaction

    • @Caligari87
      @Caligari87 4 місяці тому +18

      The goal was to make it run on a modern OS, so it makes sense to run it under a modern VM

    • @Johncw87
      @Johncw87 2 місяці тому +8

      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

    • @Marssel56
      @Marssel56 18 днів тому

      Goodluck running most old games in VM... Goodluck running also a lot of modern games to in VM

    • @jaykoerner
      @jaykoerner 14 днів тому +4

      ​@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

  • @porsche911c
    @porsche911c Рік тому

    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...

  • @vaendryl
    @vaendryl Рік тому +9

    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 Рік тому +5

      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 Рік тому

      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 Рік тому +2

      @@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 Рік тому

      @@CakeLancelot oh that's nice!

    • @scratchos9816
      @scratchos9816 Рік тому

      @@davidrmcmahon the save/load works fine on Wine 9.0-rc1 on Linux maybe wine can get a windows port lol

  • @smokeysky
    @smokeysky Рік тому

    wow i learned so much, plus i had a good laugh XD subscribed

  • @scratchos9816
    @scratchos9816 Рік тому +4

    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

  • @alexgayer85
    @alexgayer85 11 місяців тому

    Brilliant! Though since you were playing with VMs anyway, I may as well have just made a Win95 VM and tried it there. 😄

  • @ShapeyFiend
    @ShapeyFiend Рік тому +4

    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.

  • @JucheGang
    @JucheGang 11 місяців тому

    Awesome video! Detailed, engaging, and concise!

  • @llwellyncuhfwarthen
    @llwellyncuhfwarthen Рік тому +3

    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.

  • @gerry1980gm
    @gerry1980gm Рік тому

    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 !

  • @Chrs2021
    @Chrs2021 Рік тому +4

    It would have been easier to load a windows 98 vm install the game and extract the registry keys.

  • @TeamUnpro
    @TeamUnpro Рік тому

    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

  • @Book_Bird
    @Book_Bird Рік тому +4

    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

  • @LundisQuie
    @LundisQuie Рік тому

    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

  • @sanderbos4243
    @sanderbos4243 Рік тому +4

    Love these reverse engineering videos of yours!

  • @dinoscheidt
    @dinoscheidt Рік тому +2

    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.

  • @user-sl6gn1ss8p
    @user-sl6gn1ss8p Рік тому +3

    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?

  • @sapo-san8054
    @sapo-san8054 Рік тому

    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 Рік тому +4

    Nobody tell him about proton, it'll break his heart.

  • @straubulous9511
    @straubulous9511 11 місяців тому

    You just blew my mind. What I thought was going to be easy I realized you know so much more than myself.

  • @drelephanttube
    @drelephanttube 9 місяців тому

    I fn love your videos dude, thanks for sharing the knowledge!

  • @kuromiLayfe
    @kuromiLayfe Рік тому

    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

  • @StaticFreq
    @StaticFreq 11 місяців тому

    Truly awesome. Well done, sir!

  • @VladislavRumsh
    @VladislavRumsh Рік тому

    Just got this recommended, subbing right away

  • @dylantaylor490
    @dylantaylor490 11 місяців тому

    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.

  • @christinamay6596
    @christinamay6596 Рік тому +1

    I didn't understand much, but I loved the behind the curtain look at what makes games tick.

  • @cynic5581
    @cynic5581 Рік тому +1

    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.😂

  • @jetlaw_1
    @jetlaw_1 14 днів тому

    I probably understand about 3% of what you discuss, but I love every minute of it.

  • @Bozebo
    @Bozebo Рік тому

    This was great :)
    Now do Black & White xD

  • @TheRobMozza
    @TheRobMozza 11 місяців тому

    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

  • @kozad86
    @kozad86 Рік тому +1

    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).