Hacker News new | ask | show | jobs
by praptak 879 days ago
A relevant quote about the lenghts they went to to assure stuff not getting broken:

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

https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii...

2 comments

A huge difference between 1995 and today is in 1995 "simcity.exe" might represent fewer than a half dozen artifacts because patches and updates were rare. An exception covering a handful of cases is maintainable and testable.

Today patches are near constant so a "simcity.exe" might represent hundreds of different versions of the code. It's much harder to maintain exceptions since the list of cases is much larger. Even if your test harness is embarrassingly parallel your results are only as accurate as the latest version available to test.

None of that is impossible but there's additional non-zero costs involved in maintaining compatibility exceptions. At some point they tip over to not being worth the investment.

It was actually Simcity 2000 for DOS.

Jonathan Ross SimCity 2000 (1993) (IBM Programming) https://www.mobygames.com/developer/sheet/view/developerId,7...

Recently someone hacking away at DOS extender code stumbled on the same bug and fixed it independently.

https://www.vogons.org/viewtopic.php?p=1007153#p1007153

"New version 1.7 of DOS32AWE released, the download link is in the first message. Finally Sim City 2000 is supposed to be working flawlessly. The bug is in the game which sometimes overwrites unallocated RAM . A spare buffer is dedicated now which handles such buggy behavior. Could be useful in other games too."