Pinball… It is a game that is in all operating systems from the time of Windows 95 to the time of XP, and has set a throne for the players. 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 very 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 or not due to a floating point bug. In addition, the team had limited time and undocumented code. That’s why the game was removed from 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 started to prepare a new processor architecture by rolling up their sleeves. 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 is a very time-consuming task.
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. It was not the developers’ intention to release a new Windows version to Alpha. They saw how the system software works on 64-bit systems and what kind of 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. The “Windows XP 64 Bit Edition” version that Chen mentioned 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 and attempted to 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 since we are doing this in a limited bit area, things may not go as expected.
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 same representation! On the other hand, even 0 (zero) has a sign in the IEEE 754 standard.
You can view the representation of decimal numbers according to the IEEE 754 standard here. It should also be noted that the computer we tested has an x86-64-based i5-6500T processor.
How Was Pinball Affected By This?
Pinball is a game written by Cinematronics, which 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 limited documentation, Pinball was shelved on 64-bit systems.
Raymond Chen speculated that 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. It should also be noted that Pinball works flawlessly on current systems.
In addition, Pinball’s source codes are still in Cinematronics’ parent organizations. Due to the NDA (non-disclosure agreement) signed in the past, Microsoft is obliged not to share the source code.