I ported THOUSANDS of apps to Windows 95

878,127
0
Published 2024-04-11
▶VOTE for my NEXT PROJECT: www.patreon.com/posts/march-2024-poll-101363953
▶dotnet9x on GitHub: github.com/itsmattkc/dotnet9x

▶FOLLOW on Twitter: twitter.com/itsmattkc
▶FOLLOW on Twitch: twitch.tv/mattkclive
▶FOLLOW on Instagram: instagram.com/itsmattkc
▶SUPPORT on Patreon: patreon.com/mattkc

▶GUEST STARRING
YoshiToMario - twitter.com/yoshitomario
f4mi - youtube.com/f4micom
cs188 - youtube.com/cs188
skhali - www.instagram.com/skhaliplays
leecata - www.instagram.com/leecata_

▶MUSIC
00:16 - Mega Man 8 - Stage Select
01:13 - DDRKirby(ISQ) - Lost My Way
02:41 - Grieg - In the Hall of the Mountain King (recorded by Kevin MacLeod)
04:56 - Sonic X-treme - Pharoah Den
06:39 - Jake Chudnow - Moon Men (Instrumental)
07:25 - Mega Man 8 - Frost Man
10:03 - DDRKirby(ISQ) - Celestial Journey
16:20 - Francesco Biondi - Shopping Frenzy
19:14 - Susan Boyle - I Dreamed a Dream
19:36 - Sonic X-treme - Space Queens
21:27 - Mega Man 8 - Opening Stage
23:23 - Monsters Inc Scream Team Training - Install Music
24:36 - Kalachnikov - Mental delivrance
25:24 - DDRKirby(ISQ) - The Ecstasy of Life
27:23 - Kevin MacLeod - SCP-x5x
29:16 - Graff - rain eater
31:05 - Kevin MacLeod - SCP-x6x
31:59 - LHS - BRD Keygen #4
34:16 - Falcon - spineless
35:01 - Kevin MacLeod - SCP-x2x
35:18 - Kevin MacLeod - Quinn's Song: A New Man
36:20 - Maktone - class cracktro#15
38:58 - Kevin MacLeod - Cool Vibes
40:17 - Kevin MacLeod - Mystery Sax
42:38 - BetaMaster - QuickTime Pro 7.0kg
44:39 - CORE - mr spock's cryo-bed
46:12 - BLiZZARD - Contraduct Design
47:41 - Kevin MacLeod - Promising Relationship
50:53 - xyce - jet stream

▶SPECIAL THANKS
The Frida Cinema, Santa Ana
Matt and Montana
Dad

▶CHAPTERS
0:00 Intro
9:26 Act 1 - Famous Last Words
16:11 Intermission - Windows Unicode
19:14 Act 2 - Les MSI-érables
27:23 Act 3 - An Unhandled Exception Occurred
48:03 Finale - Resolution

All Comments (21)
  • @cs188
    This is a phenomenal piece of cinematography you've produced here. It doesn't even look low-budget! (well, except for my 2 second cameo)
  • @tanzytechgem490
    i’m a game developer, and the workaround for printing the unhandled exception to the gui made me CRY laughing. genius.
  • @XiC
    Neighbor Discovery Protocol Helper and 0x40 means "NDP_NEIGHBOUR_SOLICITED" A network mode to connect 2 computers without a router. And this step announces the computer on this network.
  • @informitas0117
    Program: eldritch screeching Matt: "40" Program: purring
  • @riaz8783
    A wise man once said DEVELOPERS DEVELOPERS DEVELOPERS DEVELOPERS
  • @tomwhit1982
    I worked at a tape manufacturer not long ago that has all the lab testing equipment still on 95. Youll be making some very happy people out there.
  • @slurp50s
    I write NET 2.0 projects all the time. You'd be shocked the private companies, cities, government, and other projects that all still run on dinosaur technology. Though, the depressing part is so little people utilize NET 2.0 and they continue making their ever expanding code/framework in the old framework that will never translate to the new one. It's such a pain to force clients to move to NET 2.0 because I've got to tell them, "Your code won't last forever. Use Net 2.0 because then you can continue coding but the library will translate to newer projects". Because in the NET world, there was an apocalyptic event that split the NET environment. Anyone who was on the 4.7 (or now 4.8) NET framework got completely dropped by Microsoft for the newer NET core framework. The newer one is millions of times better, but it screwed everyone on the old framework. So I've basically been employed for a long time simply helping project after project after project get off of 4.7 and onto the newer core. That's my developer rant. Your welcome. You're weird if you read this. But if you did. Remember. USE NET 2.0 IF YOU ARE STUCK ON THE OLD FRAMEWORK! Please!
  • @snake9206
    Imagine if every time you put a project on GitHub, you had to spend six months making a parody film explaining your process.
  • Fun fact, the installer has more registry keys than there are seconds in this video. Can't believe the amount of effort that went into this whole thing! Utterly incredible.
  • @frodzie
    I used to work in IT in the meat industry, we had multiple machines in factories across the world that still ran on 95 or 98 and had zero upgrade paths. When one went down if the spare didn't work (or just didn't exist) we would frantically scramble to bring up a VM backup of the machine and fight for ages to get it to talk with the old hardware. I can think of many situations where having this solution would have been useful. You sir, are a genius!
  • @HammeredHunter
    I hope Dave from Dave's Garage sees this. Reckon he'd love to see it being one of the devs of Windows' OS back in the 90s. Great effort mate. Was a pleasure to watch your journey and inspiring as a neat project for software devs to try it for fun that isn't just another 'portfolio piece'.
  • @bootie
    As a .net dev I really, really enjoyed seeing you get it working on an operating system it was never meant to run on! I haven't enjoyed a video as much as I did this one in a long time - well done Matt!!!
  • @evanbarnes9984
    Dude the fact that you did this project is insane on its own, but you also just MADE A FILM NOIR IN THE MIDDLE OF THIS VIDEO? So nuts dude, amazing work
  • @davidark9054
    I have to say, I am very surprised to not only see such a technical feat of backporting, but a good noir parody film. I've made movies with people, it's a lot of work. But you're also debugging. You are an inspiration!
  • @sorayaimperial
    Sometimes it actually might matter more than we think. When I was doing my thesis in chemistry less than 10 years ago, we had this chromatograph that needed to be connected to a computer with win 95. Mostly because of the port used to connect the machine to the PC, but also the software wouldn't properly run on more modern versions. While a bit older than two other models we owned, the fact was that this was the best chromatograph we owned - not as versatile or flexible, but it was the one less prone to weird malfunctions and was very reliable (while the more modern one, I spent more time "debugging" - ergo, moving screws and valves around - than actually working) and cheap to run thousands of analysis. This meant that my working process was: - Run stuff on 95 and save to a floppy disk. I could only save 2 or 3 runs (my thesis involved thousands) per floppy due to file size. - Get the floppy on another computer with XP, because it had both floppy disk and support USB. This PC does not support either the modern software I needed to run analysis on, neither the old software from the other PC. It also didn't have internet, presumably, because the USB was connected to a PCI port instead of network card. Realise that most modern usbs aren't recognised by the PC for some odd reason, needed to find a 1Gb drive to be able to make it work. Save to usb. - Take the USB across the hall to a modern computer running (at the time) Win 8.1 and finally shove the files into my analysis software and upload them to the cloud. - Repeat this 10x a day. Everyday. For two years. While I'm not sure backporting would've solved anything here (but probably we would've been able to transfer that port into a more modern computer if we had been able to run the software), this just goes to show that there is still a lot of specialised equipment still to this day running on win95 and good will (because I very much doubt they bought a 20k equipment - 20k is considered economical by this equipment standards - to replace a fully functioning old one).
  • @VNLX
    I checked ndphlpr.vxd file with a disassembler and it's really just a simple wrapper to get and set the thread context. Presumably on Windows 9x they could not use GetThreadContext and SetThreadContext because of some quirk. On newer versions they do not load that driver (obviously) and use GetThreadContext and SetThreadContext directly. Judging by paths in the .NET dlls (such as "f:\rtm\ndp\clr\src\debug\ee\debugger.cpp") ndp is just an internal codename or abbreviation for .NET. EDIT: I looked at the Win9x kernel and I think I understand why this is needed. In Win9x SetThreadContext changes the context immediately regardless of whether it's the current thread or another thread, while on newer versions an APC is used when changing the context of another thread. Presumably .NET needs the latter and it implements it through ndphlpr.vxd, also using an APC.
  • @Talking__Ben
    why is this a cinematic masterpiece? i expected a documentary on how some guy ported some modern windows apps to windows 95
  • The cinematography in this is amazing. Not only did you produce a genuinely informative and entertaining retro-tech video but you also made a FILM out of it. The sheer quality of it absolutely knocked my socks off and I loved the take on noir you added in the mix. Big W's all around man, this was a masterpiece.
  • Back in the late 80's I tried learning assembly by just using the C128 monitor and not an actual compiler program. You stepping through the program line by line brought nightmare flashbacks.