Table of Contents
Pinball… It is a game that has conquered the hearts of the players in all operating systems from the time of Windows 95 to the time of XP. So why is it no longer part of Windows by default?
What does Microsoft say about Pinball?
Raymond Chen, who has been on the Windows team for a long time, cites 64-bit floating point arithmetic as the reason for the game’s removal. The computer could not detect whether the objects collided due to a floating point bug. In addition, the team had limited time and an undocumented code set. That’s why the game was removed from the Windows XP 64-bit version. But the situation is not just that.
Transition phase to 64-bit processors
It was clear that more processor and memory power was needed for servers and workstations. Intel and HP rolled up their sleeves and started to prepare a new processor architecture. Microsoft wanted to migrate Windows to these processors, but the developers only had an emulator for Itanium processors. Using emulators in a software project with millions of lines of code is very time-consuming.
In 1999, Compaq discontinued Windows support for computers using Alpha processors. As a result, Microsoft has left plenty of computers with Alpha processors, pages of documentation for the platform, and experienced names in software development for the platform.
Alpha was a 64-bit RISC-based processor architecture. Developers who had these workstations at their disposal moved the system to Alpha instead of using a simulator. The developers did not intend to release a new Windows version to Alpha. They saw how the system software functions on 64-bit systems and what errors there are on Alpha. Thus, they have completed the difficult part of the job, transitioning software from 32-bit to 64-bit.
Due to this transition period, there are different versions of Windows XP. Chen mentioned that the “Windows XP 64 Bit Edition” version is compatible with Itanium machines. There are 2 more versions of Windows XP; “Windows XP 64 Bit Edition Version 2003” (Itanium 2) and “Windows XP Professional 64 Bit Edition” (x86-64). The common point of these versions is that all of them are based on the version compiled on Alpha.
How do computers calculate decimals?
All platforms on which Pinball is migrated use the IEEE 754 floating point arithmetic standard. According to this standard, scientific notation can be used by performing bit-level operations, and we can represent decimal numbers like this. But things may go differently than expected since we do this in a limited area.
For example, when we add 0.2 and 0.1 in Python, we get 0.3000000000000000004 because, according to IEEE 754, 0.3 and 0.300000000000004 are the exact representation! On the other hand, even 0 (zero) has a sign in the IEEE 754 standard.
How was Pinball affected by this?
Pinball is a game written by Cinematronics, which also closed in 1997. Because of this, Microsoft engineers did not have any resources or people to ask questions about Pinball. Due to the team’s limited time and documentation, Pinball was shelved on 64-bit systems.
According to Raymond Chen’s guesses, the bug in Pinball’s collision detection system was caused by an incorrect default rounding mode of the C library or a bug with the MSVC compiler. The reason for this error was that the precision in the decimal number representation changed during the transition from 32-bit to 64-bit, and the rounding was done according to the old precision. We should also note that Pinball works flawlessly on current systems.
In addition, Pinball’s source codes are still in Cinematronics’ higher organizations. Due to the NDA (non-disclosure agreement) signed in the past, Microsoft is obliged not to share the source code.