When users were asked to switch to Windows 95, backwards compatibility was one of the carrots dangled in front of their faces. It was a feature previously explored with Windows 3.x, which Microsoft also wanted to carry over to the next-generation operating system.
However, as the Twitter user Kal Yoshika (and the website Rock Paper Shotgun) recently dug up in an old blog by former Microsoft programmer Joel Spolsky, getting this to work wasn't exactly straightforward.
Behind the scenes, someone had to go to the effort of solving those weird, little edge cases and creating bespoke solutions to get your video game library to run as expected, with one key example of this being the Windows 95 version of SimCity.
In this instance, Jon Ross, a developer who worked on the Windows 3.x version of SimCity at Maxis had accidentally left a memory bug in. This wasn't an issue on Windows 3.x, with SimCity still being able to run as intended, but on Windows 95 testers had difficulty getting it to work. Rather than shy away from the problem, staff at Microsoft took it upon themselves to start hunting down the bug and eventually added some special code to change how memory allocation works, specifically for that game.
Spolsky writes in the blog:
"Windows 95? No problem. Nice new 32 bit API, but it still ran old 16 bit software perfectly. Microsoft obsessed about this, spending a big chunk of change testing every old program they could find with Windows 95. Jon Ross, who wrote the original version of SimCity for Windows 3.x, told me that he accidentally left a bug in SimCity where he read memory that he had just freed. Yep. It worked fine on Windows 3.x, because the memory never went anywhere.
"Here’s the amazing part: On beta versions of Windows 95, SimCity wasn’t working in testing. Microsoft tracked down the bug and added specific code to Windows 95 that looks for SimCity. If it finds SimCity running, it runs the memory allocator in a special mode that doesn’t free memory right away. That’s the kind of obsession with backward compatibility that made people willing to upgrade to Windows 95."
This is a fascinating story that reveals some of the unseen work that goes into getting our favourite games to run across different generations of hardware. Today it's easy to take backwards compatibility for granted when you can simply load up DosBox or something equivalent and play pretty much anything you remember from your childhood, but it all had to start somewhere with groups of obsessive trouble-shooters creating bespoke solutions to beat the "chicken and egg problem" of providing software for new machines.
Do you recall any other examples of this we should know about? Let us know in the comments!