Live data from Hacker News

Why was Pinball removed from Windows Vista?

blogs.msdn.com

121–130 of 149 posts

Re: Why was Pinball removed from Windows Vista?

#121

Earlier quoted context omitted.

Elaborate on what? It seems rather obvious that a popular game with a minor bug rendering it unplayable would have that bug fixed by someone for free if it was open source. Or do you want me to elaborate on why it's too bad? Well, pinball is the best game that was ever included with Windows, so it's unfortunate that it's not still there.

First, it was not a minor bug, it is a major bug that made the whole product unusable. Second, the whole code base was one big, nasty, uncommented mud-ball. From the article: "... we simply couldn't figure out why the collision detector was not working. Heck, we couldn't even find the collision detector!" I was genuinely curious to hear how you think sprinkling fairy dust open source on top of the mess is going to ma…

Why are you so angry? Is it so offensive to you that I think that millions of programmers throughout the world with nearly unlimited time could do something that a couple Microsoft programmers couldn't do in a short period of time?

Re: Why was Pinball removed from Windows Vista?

#122

Earlier quoted context omitted.

A huge amount of Unix software uses UTF-16 just like Windows (including Java). You're just being deliberately ignorant of the history. UTF-8 didn't exist and UCS-2/UTF-16 was the standard . One could argue that the Unicode Consortium screwed up assuming that Basic Multilingual Plane would be enough characters for everyone.

I am not ignorant of the history. Please try to follow this reasoning: 1. Faced with a new character set which was larger than eight-bits (Unicode 16-bit) Microsoft said "hey let's make an all-new API" and set to work rewriting everything 2. Faced with a new character set which was larger than eight-bits (Unicode 32-bit), the Unix guys said "hey let's create a standard way to encode these characters and rewrite nothi…

#2 massively ignores the fact they didn't bother to solve the problem until much much later. In fact, everyone else solved it the same way as Microsoft before then even on Unix. Actually, a bunch of Unix guys were involved in the design of UCS-2 and UTF-16 so I'm not sure why it's Microsoft's fault.

But yes, some Unix guys eventually faced with a bigger problem, significantly more time, and a design already started by the Unicode Consortium eventually solved it better. But that's not really much of an argument.

Also arguing that there is no risk going to UTF-8 is ridiculous. Anything that treats UTF-8 as ASCII, as you suggest, is going to do it wrong in some way. At least making a new API forced developers to think about the issue.

Re: Why was Pinball removed from Windows Vista?

#123

Wait, can't 64-bit windows run 32-bit programs?

Answer is in the article: [That would have been even more work, because there was at the time no infrastructure in Setup for having 32-bit-only components. (And then automatically uninstalling it when WOW64 was disabled.) And besides, all the people who criticized Windows 96 as "not really a 32-bit operating system because it has some parts in 16-bit" would use the same logic to say that 64-bit Windows is "not really…

Man, if that's the case, does using a BIOS mean I'm still running a 16-bit operating system?

If so, then I guess I've got to marvel at how popular "16-bit" Linux is - I can run 64-bit only applications, watch Flash, Netflix... whoever knew a 16-bit OS could be so powerful!

Re: Why was Pinball removed from Windows Vista?

#124

The best part of this article is in the comments. An original programmer on the game explains the reason that the bug was occurring and also why the code was unreadable (hint: they did it in assembly) Ah, the quantum tunneling pinball! We ran into this while writing the original code at Cinematronics in 1994. Since the ball motion, physics, and coordinates were all in floating point, and the ball is constantly being…

So all it needs it a really good cup of tea.

...to power the Infinite Improbability Drive.

Re: Why was Pinball removed from Windows Vista?

#125

Earlier quoted context omitted.

Assembler makes the point even more apparent: MSG_LOOP_PostMessage: mov a, MSG_Head cjne a, #MSG_BUFFER_END - 2, mlpm0 mov a, #MSG_BUFFER sjmp mlpm1 mlpm0: inc a inc a mlpm1: cjne a, MSG_Tail, mlpm2 clr a ret mlpm2: mov r0, MSG_Head mov @r0, MSG_Code inc r0 mov @r0, MSG_Parameter mov MSG_Head, a mov a, #1 ret I wrote that about fifteen years ago. Of course, the routine's label tells you something: "MSG_LOOP_PostMessa…

This code is definitely readable, but I feel like the port from assember to C might have been too direct. Originally head was a pointer and it made sense to have conditional jumps, but in the C code head is an offset starting at 0. Why keep the entire if structure when you can simply have msg_loop.head = (msg_loop.head + 1) % MESSAGE_LOOP_SIZE // Advance head and wrap

You know, it's been about fifteen years.

I remember I had to convert this to C in a hurry because new features had to be added. Doing it in assembler was just about unthinkable. The entire project consists of nearly 100 assembler files and resulted in about 90 files once translated into C.

This was a marathon run and once the entire project was translated and working the focus was narrowly shifted in the direction of adding functionality rather than optimizing the code.

This code was running on an 8051-derivative. Performance was important. You are always counting clock cycles on these systems. I think that if you look at the resulting machine code with the relevant variables mapped to the data memory space the modulo statement doesn't really do any better than a spelled-out conditional statement. In fact, it could be a couple of clock cycles slower (just guessing).

Again, it's been a long time. I can totally see looking at the generated assembly and saying something like "That's as fast as it it going to get. Move on!".

We all make less-than-elegant code at one point or another. Hopefully not too many times. :-)

http://www.keil.com/support/man/docs/is51/

https://www.silabs.com/Support%20Documents/TechnicalDocs/C80...

Re: Why was Pinball removed from Windows Vista?

#126

Earlier quoted context omitted.

To me that fragment says that the story is a bit more colourful than what really happened. This quote comes from Raymond Chen. The guy who includes ISA bus, interrupts and starting up a debugger in one post ( http://blogs.msdn.com/b/oldnewthing/archive/2007/01/30/15574... ); or analysing chip issues and software workarounds for them ( http://blogs.msdn.com/b/oldnewthing/archive/2011/01/12/10114... ). Maybe the code w…

A programmer from the original game commented on the article and said much of it was done in asm then later ported to C by msft, so it probably was really that messy.

This smells like automatically generated procedure names based on dataflow analysis.

Re: Why was Pinball removed from Windows Vista?

#127
post #47

Earlier quoted context omitted.

Open source wasn't exactly a huge priority for Microsoft in 1995 when the application came into existence. In fact I think it's a testament to their backwards compatibility that pinball survived for as long as it did with little or no maintenance.

Quite the opposite. In 1995, killing open source was one of Microsoft's top priorities. It isn't much lower on the list these days.

Indeed, and it was still on their agenda in 1998. Microsoft saw Linux as their worst enemy and developed business strategies to eradicate it (by means of 'de-commoditizing'). Then, the 'Halloween Documents' leaked. ESR writes:

"In the last week of October 1998, a confidential Microsoft memorandum on Redmond's strategy against Linux and Open Source software was leaked to me by a source who shall remain nameless." This document can be read at http://www.catb.org/esr/halloween/halloween1.html

Read more at http://www.catb.org/esr/halloween/

Re: Why was Pinball removed from Windows Vista?

#128
post #66

Earlier quoted context omitted.

"Often, however, the same effect is had under the guise of "clever hacks" - look how clever and awesome I am!" Sometimes I write code like that. Then I delete it and write it the proper way. Clever code is code you will not be able to understand in the morning. There is Kernighan's adage "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you a…

useful thoughts. it reinforces my view that it's really the intent that bugs me. I've dealt with crap code, littered with comments like "I'm sorry, didn't know what I was doing, etc". The person/people knew they were in a tough spot. In other cases I've dealt with crap code with random comments like "Java sucks. Sun sucks. Everyone using Java sucks and is stupid - Ruby is the only true language, and it sucks that thi…

This ranting was in a professional environment, or some kind of open source project..?

Re: Why was Pinball removed from Windows Vista?

#129

Earlier quoted context omitted.

This code is definitely readable, but I feel like the port from assember to C might have been too direct. Originally head was a pointer and it made sense to have conditional jumps, but in the C code head is an offset starting at 0. Why keep the entire if structure when you can simply have msg_loop.head = (msg_loop.head + 1) % MESSAGE_LOOP_SIZE // Advance head and wrap

You know, it's been about fifteen years. I remember I had to convert this to C in a hurry because new features had to be added. Doing it in assembler was just about unthinkable. The entire project consists of nearly 100 assembler files and resulted in about 90 files once translated into C. This was a marathon run and once the entire project was translated and working the focus was narrowly shifted in the direction of…

> the modulo statement doesn't really do any better than a spelled-out conditional statement

Actually, on modern processors the modulo would probably be more efficient than the conditional due to cool stuff they do like pipelining. Pipelining is basically where they execute instructions ahead of time (sort of in pseudo-parallel); and so when there's a branch, there's a fair chance the results from future processing might have to be thrown out.

One of the techniques that's used to go around this is branch prediction[1], where they initially guess whether a branch will be taken or not and then depending on whether the branch was actually taken, they change their guess. This works particularly well for for loops and the kind.

Another development on the ARM side (and MIPS too, I think) are instructions that are embedded with conditionals in them.[2]

[1] http://en.wikipedia.org/wiki/Branch_predictor

[2] http://en.wikipedia.org/wiki/ARM_architecture#Conditional_ex...

Re: Why was Pinball removed from Windows Vista?

#130
Apparently, someone has actually FIXED it and put it online. Although hard to know if the linked EXE isn't just a trojan. Anyone have a clean room they can test it in?

http://mspinball.weebly.com/index.html

See: http://blogs.msdn.com/b/oldnewthing/archive/2012/12/18/10378...

Post reply on HN