I was one of the original authors of Space Cadet pinball. I don't have direct knowledge of the back story behind why it was removed so I can't add anything there but I want to say that I am very impressed with the thoroughness of your research.
@NCommander 2 ปีที่แล้ว +154
Very cool; one thing you might be able to answer for me, was Microsoft given the code to the final release of Full Tilt Pinball? From what I saw looking at the Pinball beta builds, it *looks* like it was a late beta build; multiball is missing from the NT version, but there is some code hooks relating to it.
Also, I wish I was good enough to get Maelstrom unlocked.See AlsoMarvel: I Have A Super USB Drive Chương 12Song 175: “Everyday People” by Sly and the Family Stone Part 2, “My Own Beliefs Are In My Song” – A History of Rock Music in 500 Songs – PodcastOpen-source cybersecurity could derail the internet as we know itUser generated content: Instructional Guides: Guiding the Way: The Importance of Instructional Guides - FasterCapital@nimbry2 ปีที่แล้ว +192
Full Tilt shipped some time later so I would expect there would be a time gap of some minor changes and bug fixes between the Microsoft and Maxis versions. It was long ago and the details aren't clear in my memory. If Mike Sandige or Kevin Gliner (my partners at Cinematronics) see this, they may be able to share more information.
@kevingliner80992 ปีที่แล้ว +247
There's a short answer and a long answer to your question. Or maybe an off-the-cuff answer and a more accurate answer.
Keep in mind I haven't had a chance to watch the video (although I definitely will when I get a chance, now that I'm aware of it). So the off-the-cuff answer is: Microsoft almost certainly had a copy of the full source to 3D Pinball, and not a beta version. What a lot of folks don't realize is that we didn't start building Full Tilt until 3D Pinball (Space Cadet) was within weeks of gold master as part of the Plus Pack. Possibly days: the deadline to include the Maxis name and phone number in the product, after which no further changes would be allowed by Microsoft, drove the pace we closed the Maxis publishing deal to build a 3 table commercial product (which later came to be called Full Tilt).
Microsoft had various rights to maintain the product and ship it with future operating systems, and among those were maintenance rights. We were required to deliver code updates if we made any and they cared enough to have them. I don't remember if they ever asked or if we ever provided any. Nevertheless, it's highly unlikely though they (or any publisher from that era) would have allowed a product to ship on hundreds of millions of machines without the ability to fix it themselves in case the original developer was unable to.
There's also zero chance they would have allowed a beta of pinball into the Plus Pack.
There were some bugs that made it through, of course. We fixed those for the Full Tilt version of Space Cadet that shipped 5 months later. And added a couple features we didn't finish in time for the Plus Pack (multi-ball, for example).
I came across the Chen thread long after it was dormant, which is unfortunate. I seem to recall one of his examples of bad pinball code was his inability to track down the collision source. However, I still have the source to Full Tilt and by extension, Space Cadet. Other than a couple bug fixes and minor features, the Space Cadet source should be identical to what we shipped in the Plus Pack. Last time this came up, it took me all of 30 seconds to find "collision.cpp". I'll separately add that Mike Sandige, who led the engineering effort on pinball, is a fantastic engineer - it would have been out of character for him to write anything obtuse.
So Chen was probably working from code that was a few steps removed from whatever we delivered to Microsoft. I have two possible theories on why that was the case:
1) Pinball was a 16-bit product. A few years after it shipped an engineer at Microsoft (David Plummer) was tasked with porting it to 32-bit systems so it could run on NT, Win2k, etc. Depending on how limited Plummer's time was or whatever ideas he had about re-writing the code, I'd speculate that Chen was looking at Plummer's port code, or Plummer's port code plus any number of other engineers in between him and when Chen got to it. I don't want to make it sound like Plummer wrote bad code - sometimes the goal is just to get something working and legibility isn't a priority. It's also possible Plummer wasn't working directly from the C++ source to begin with.
2) In order to put the cheat codes in that Microsoft wouldn't allow, we had to obfuscate them pretty heavily. I don't know what Mike did to make that happen, but perhaps it required making otherwise legible code less coherent. Although I doubt he would have made the code so hard to understand that critical areas like the collision algorithm would be hard to locate. And someone did eventually find the cheat codes years later and strip them out (at least the ones that generated our individual game credits and those random quotes). So maybe there's yet another engineer between Plummer and Chen who tackled the project.
That's the short answer, eh. I still have the source for Full Tilt somewhere, and the old contract with Microsoft (detailing their specific rights re: source), and a ton of email from that era between our company and Microsoft. I could probably tease out a more accurate answer for you once I have a chance to look at some of that (well, maybe not the email).@mikesandige64742 ปีที่แล้ว +123
@@NCommander Nice work with this video! I also don't know exactly why it was removed, but I tend to agree with your conclusion. I was lead programmer for Space Cadet and Full Tilt. No, we didn't provide Microsoft with Full Tilt Pinball sources or assets. I'm pretty sure I would have been the one to prepare such a delivery, and don't remember doing so.
@NCommander 2 ปีที่แล้ว +102
Hey, following up, since I saw the comments left by @Kevin Gliner, and @Mike Sandige, and damn, I didn't think the original authors would see this and I'm like wow.
I actually was somewhat skeptical of the claim after I started investigating this since honestly, I found the collision detection code staring at a disassembly, but I also have no reason to dispute Raymond's account; as I said in the video, I just thought there was more to the story.
I don't know if there's any way you can me to investigate the original source, although I suspect there is a rights nightmare there, I'd be willing to do a follow-up to this video, digging into the Full Tilt Collection, and a few details that have since come to light. Feel free to reach out to me via email (its on my profile, or michael -at- casadevall dot pro). I actually spent some time looking at the DEC Alpha build which appears to use 32-bit precision, so it's interesting to see what does and does work.
From what I can tell, NT was ported sometime before NT 4's final release, and that port was put in the Plus! Place. It will actually run on NT 3.51 "as is", but it lags, as that version of Windows has very slow GDI as compared to both NT 4 and Windows 95. From there, it was ported to Alpha, MIPS, and PowerPC, with all those ports working. There was then the Alpha64 port which was never released, and I suspect this was when Pinball broke with the crash bug we saw on XP RTM, which I suspect is a pointer sizing issue in the edge detector. This then got ported to IA64, axed, and well, everything else as I presented it.
I found out that someone actually did a full decompile of Space Cadet Pinball from the XP 32-bit version, and he couldn't find any collision issues on 64-bit, but I haven't look in-depth to see what exactly is going on there, but it does suggest that there was more to this story than not.