[HN Gopher] The Space Quest II Master Disk Blunder
       ___________________________________________________________________
        
       The Space Quest II Master Disk Blunder
        
       Author : smcameron
       Score  : 370 points
       Date   : 2024-05-23 15:16 UTC (7 hours ago)
        
 (HTM) web link (lanceewing.github.io)
 (TXT) w3m dump (lanceewing.github.io)
        
       | khedoros1 wrote:
       | There were a couple posts on this yesterday too (although no
       | discussion there either).
       | 
       | https://news.ycombinator.com/item?id=40438604
       | 
       | https://news.ycombinator.com/item?id=40437834
       | 
       | It's weird how stories sometimes take a few tries to catch on.
        
         | indigoabstract wrote:
         | It looks like third time's a charm. I for one think it's a
         | feature to have stories competing for the reader's attention
         | and just take their time to bubble up to the front page.
         | 
         | And this is quite an interesting story. Since the Sierra games'
         | source code was never publicly released, it makes me think how
         | radical id were to open source their games at the time, in the
         | 90's.
        
         | Suppafly wrote:
         | Might depend on what time of day they are posted?
        
         | lance_ewing wrote:
         | I was wondering the same thing. I was the first post, then saw
         | the second one. I was quite surprised to see this third one
         | really take off like this. Yeah, perhaps it does depend on the
         | time of day? - A big thank you to smcameron for reposting.
        
       | mmastrac wrote:
       | Ah yes, the two modes of disk erase failure: 1) the "quick
       | format" that just re-wrote the FAT and root directory, leaving
       | data, and 2) the immediately recognizable 0xE5 (s in the 437
       | codepage). I used to use the Norton disk editor tool (IIRC, part
       | of Disk Doctor) to explore my drive from time-to-time and it was
       | somewhat fun to try and piece back together deleted files. In
       | some cases, it was actually because I had accidentally deleted
       | something important and UNDELETE wasn't good enough to get it
       | back.
       | 
       | In one hare-brained moment, I decided to see what would happen if
       | I turned off the DIR attribute bits on all of the directory
       | entries in the root of my drive to see what would happen in DOS.
       | The stress of trying to find a boot disk to edit those attributes
       | back left a few decades of PTSD, though I'm sure that taught me
       | some valuable, subconscious lessons. Eventually I did recover
       | from that mistake!
        
         | sumtechguy wrote:
         | I blew away a boot sector once playing that game....
        
       | MenhirMike wrote:
       | It did apparently happen with quite a few games, where the Master
       | Disk wasn't a brand new disk but some random disk that someone
       | formatted and sent over to duplication. There are other games
       | where cut content or early source code was recovered that way
       | because the duplication house didn't work on a file system level
       | but duplicated the entire disk as-is.
        
       | JohnFen wrote:
       | Still not as bad as when a company I worked for managed to press
       | and ship a ton of CDs that included a virus.
        
         | ljf wrote:
         | Ouch - no where near that bad but once I was working on a
         | children's online game. The game was large (500MB or more), and
         | this was still pretty early on in ADSL roll out - lot's of kids
         | still had dial up. So we offered a CD with the game on for
         | free.
         | 
         | After 800 of them arrived for me to start mailing out, they
         | found a small issue with the game, which they patched - "don't
         | worry the kids will just have to run the patch the first time
         | they play" - I tested it, the patch was 800MB...
         | 
         | I didn't send any of the CDs out.
        
           | zoky wrote:
           | How the heck could a 500MB game have an 800MB patch? Sounds
           | like someone had no idea what they were doing...
        
             | ljf wrote:
             | I just managed the website - I wasn't involved in the game,
             | but it didn't seem to be that well managed from my outside
             | perspective.
             | 
             | I think part of the issue was there was not system to
             | 'patch' - so the far larger download in theory allowed them
             | to add smaller patches to the game in the future, but that
             | didn't happen as far as I remember.
             | 
             | I don't think we even ended up opening all the levels of
             | the game as the uptake wasn't that great.
        
           | mypalmike wrote:
           | I worked at a game company in the 90s that shipped a strategy
           | game with a bug where the AI would literally never attack the
           | player. I think the cause was some last minute copy/paste
           | while rushing to deliver the game to the publisher. It was
           | discovered before the game hit the shelves, but the decision
           | was made to ship it anyhow and release a patch, which had
           | just become a somewhat reasonable practice with all those
           | 33.6k modems out there.
        
         | MenhirMike wrote:
         | Still could be worse. For example, the King's Quest 8 Master
         | CD-ROM contained a copy of King's Quest 8.
        
           | gwbas1c wrote:
           | ???
           | 
           | Did you mean to type something different? Obviously the
           | King's Quest 8 master will contain King's Quest 8.
        
             | Sniffnoy wrote:
             | That's the joke. It's a joke about the quality of King's
             | Quest 8.
        
               | hi-v-rocknroll wrote:
               | KQV was the best one. The later ones jumped the shark.
        
           | ykonstant wrote:
           | It was a true catastrophe.
        
         | joezydeco wrote:
         | There was a game startup a long time ago that shipped the
         | heavily instrumented debug build of an Xbox game instead of the
         | certified gold master.
        
       | coldcode wrote:
       | Between 1987 and 1993, I prepared around nine master disks for
       | two Mac apps. I always used a fresh floppy and had a long list of
       | checks to ensure the disk was correct. Thankfully, all came out
       | right, especially when some were used to make 100k disks. It's a
       | good thing no one has to do this anymore!
        
         | shagie wrote:
         | They do, though its called "docker layers"
         | 
         | I have seen layers that were:                   base
         | add tools         add source code         compile
         | delete source code         delete extra tools         (ship -
         | why is the docker image so large?  Oh well, storage is
         | cheap...)
         | 
         | And there are easy ways to resolve this such as multi stage
         | builds ( https://docs.docker.com/build/building/multi-stage/ )
         | - but mistakes still happen from time to time when people
         | aren't aware that the current view of the docker image contains
         | all of the previous layers too.
        
           | coldcode wrote:
           | At least you can replace it quickly if you find it broken.
           | Back then, we could only afford to make an update once. When
           | you mailed out the update disk, you had to charge for it ($10
           | or so, disk, mailing container, printed instructions,
           | postage, and label); if you sent out 100k bad disks, you had
           | to eat $1M. If it was version 1.0, it went into a box and was
           | shipped to distributors, retailers, and mail-order, and you
           | might never even know who the end user was.
        
       | mmahemoff wrote:
       | My favourite part is no-one apparently discovered the source code
       | sitting on the disk for an entire generation.
       | 
       | "Surprisingly, no one appeared to have noticed that this
       | happened, not Sierra, not their competitors or their customers,
       | and it was only discovered decades later, the first known
       | discovery of it by online user NewRisingSun in October 2016."
       | 
       | Reminds me of the recent breakthroughs in Tetris and Super Mario
       | Bros. When I played these games as a kid, I would have thought
       | they'd be forgotten relics decades later, impossible for anyone
       | but the most dedicated hobbyist to stand up and run, let alone
       | keep learning new things about them. The internet and emulators
       | breathed new life into those earlier games and computing.
        
         | LaundroMat wrote:
         | I guess your last sentence answers your question. I'm sure some
         | people had found the deleted files, but because that would
         | before the internet was ubiquitous, it was not generally known
         | or recorded.
        
           | lance_ewing wrote:
           | Yeah, this could well be true. I was using a Hex Editor a lot
           | back in the late 80s and early 90s, and that involved many of
           | the Sierra games. Most of the time I was looking at the files
           | installed on a hard disk though, as I generally installed the
           | game from the floppy to the hard disk first and assumed I had
           | everything. I think it would have been rare for me to be
           | viewing the whole floppy disk of a Sierra game sector by
           | sector in a Hex Viewer, although I did do that a lot for some
           | disks. I'm surprised I didn't spot this back in those days. I
           | bought this version of Space Quest II back in 1989.
        
           | Suppafly wrote:
           | Or it was recorded, but it was on fidonet or some bbs system
           | that didn't make the transition to the WWW and no one old
           | enough to remember actually remembers or cares anymore.
        
         | grishka wrote:
         | There are people who archive old software using modern tools
         | like flux imaging to allow making perfect disk copies. It might
         | be someone noticing data in free space while imaging one of
         | these disks.
        
       | TillE wrote:
       | I don't think there's any particular secret sauce in the AGI
       | engine, such that competitors would benefit from a leak. There
       | are probably other examples I can't think of, but Hugo's House of
       | Horrors was basically an AGI-style game made by one guy just a
       | few years later.
       | 
       | Beyond the initial novelty of a graphical adventure, Sierra games
       | worked because they put a ton of effort into creating those
       | graphics and actually writing the game. The tech isn't nothing,
       | but it's a small fraction of the end product.
        
         | pavlov wrote:
         | Information and useful example code were much harder to acquire
         | in those days. Learning to build working software was immensely
         | harder than today because there was nothing to build on. There
         | was almost no meaningful open source on MS-DOS, and certainly
         | no open source game engines.
         | 
         | In that environment a widespread leak of the AGI source might
         | have been significant, at least as an inspiration that would
         | have provided a blueprint of exactly how these most popular PC
         | games of the era were made.
        
         | GuB-42 wrote:
         | I sometimes wonder if leaked source code has any value,
         | especially code like that that doesn't contain secrets that
         | could be taken advantage of by hackers (ex: keys, backdoors,
         | ...).
         | 
         | The leak obviously doesn't come with any license, so you can't
         | reuse that code for your own products, at least not if you
         | don't want to get sued. So it means that in order to take
         | advantage of the code for your own work, you need to read it,
         | understand the techniques, and apply them to your own work in a
         | way that doesn't smell like copyright infringement. More often
         | than not, it is harder to do than going from scratch, and in
         | cases it is advantageous, how often will you get a real
         | competitive advantage?
         | 
         | Developers often write code from scratch even when they could
         | use open source code that is well documented and with a
         | permissive license. Reading code is often harder than writing
         | it. Even just rebuilding it may be challenging.
         | 
         | It may facilitate piracy, but barely, games often got cracked
         | and distributed within days, and the copy protection may not
         | even be part of the source code.
        
           | Gormo wrote:
           | If I'm not mistaken, Microsoft now owns all of the old Sierra
           | IP (if I'm not mistaken, the chain of custody was: Sierra ->
           | CUC -> Cendant -> Havas -> Vivendi Universal -> Activision
           | Blizzard -> Microsoft) and I wouldn't expect Microsoft to sue
           | over old source code to a 40-year old game engine with a
           | graphics resolution of 160x200. In fact, given that they've
           | been gradually opening source code for DOS from the same era,
           | they might even be convinced to make an official release of
           | it.
        
         | IAmNotACellist wrote:
         | The learning rate of your internal neural net was still dialed
         | up near max, vs. today, where it's rapidly decreasing and thus
         | things you're exposed to aren't nearly as capable of shaping
         | your internal weights.
        
       | rietta wrote:
       | Fascinating! What a fortuitous mistake for historical
       | preservation purposes. Also a good lesson in why media overwrites
       | are important.
        
       | elvis70 wrote:
       | Double Dragon II: The Revenge for DOS from 1989 was distributed
       | on two floppy disks, one of which contained the entire source
       | code in a deleted archive file, invisible from the DIR command
       | but easily recoverable:
       | https://tcrf.net/Double_Dragon_II:_The_Revenge_(DOS)
        
         | jpsouth wrote:
         | This might be a silly question, but how does this even happen?
         | 
         | I would have thought they'd finalise the game, get a 'master'
         | of sorts and then send it to a mass production facility - how
         | would the deleted archive end up on the master? Did they
         | accidentally copy it over, then remove it before shipping?
         | 
         | Edit: definitely should have read the comments here before
         | adding my own!
        
           | MenhirMike wrote:
           | Yeah, Duplication Houses usually duplicate the disk sector-
           | by-sector, instead of on a file system level. (This makes a
           | lot of sense, because it allowed the disk to contain any file
           | system). But that also means that data that was still on the
           | physical sectors of the disk got copied as well, regardless
           | of whether the file system on the disk was still referencing
           | that data.
        
             | Rinzler89 wrote:
             | _> Yeah, Duplication Houses usually duplicate the disk
             | sector-by-sector_
             | 
             | I think they went even deeper. From the vintage computing
             | nerds I saw on YouTuber, I think the duplication houses
             | were replicating the raw magnetic flux off the disks as-is,
             | since game studios were implementing some crafty low level
             | anti-piracy measures on the golden disks to ensure that if
             | you did sector level copies at home you wouldn't be able to
             | run the game.
        
               | MenhirMike wrote:
               | That makes sense, I do remember some Commodore 64 games
               | that even a Nibbler couldn't properly duplicate, and how
               | some people modified their 1541 drives to have a
               | different timing to work with some of that stuff.
        
               | EvanAnderson wrote:
               | I wonder if anybody ever made an analog flux reversal-
               | level disk copier out of consumer floppy drives. I'm not
               | an electronics person but it sounds like it would
               | something like a "dubbing" tape deck. Provided the
               | reading and writing drives' spindle motors and heads were
               | synchronized (which, presumably, could be done with an
               | encoder on the reading drive) I would think it would be a
               | fairly simple device. All the analog circuitry for
               | reading and writing would be in an off-the-shelf floppy
               | drive.
        
               | Rinzler89 wrote:
               | The hardware you're talking about you can buy today. It's
               | used by retro computing geeks working in SW preservation.
               | Pretty sure it also existed back in the day. The point
               | wasn't to make copying impossible, it was to make it
               | impossible for home users.
        
               | TacticalCoder wrote:
               | Hence the cracking scene: home users would get pirated
               | version of the games, with the copy protection removed
               | from the code.
               | 
               | P.S: if I'm not mistaken in some cases original, legit,
               | disks were physically damaged on purpose (for example
               | with a hole being physically punched at a precise
               | location) and then the copy-protection would try to write
               | something at that spot and re-read it. If the write/re-
               | read succeeded, they knew the floppy was good and hence
               | they knew it couldn't be an original disk.
        
               | deaddodo wrote:
               | That doesn't make sense, no? Most of these disks had
               | their read-write tab blocked and so the floppy drive
               | would just operate in read-only mode anyways.
        
               | EvanAnderson wrote:
               | > The hardware you're talking about you can buy today.
               | 
               | Only sort of. The Greaseweazel and its ilk are sampling
               | digital data. They're "seeing" the data after the analog
               | front-end on the drive has processed it.
               | 
               | I'm talking about something that's more like reading the
               | raw magnetic flux reversals in the analog domain,
               | amplifying the signal, and writing it to another disk w/o
               | ever leaving the analog domain. Exactly like a dubbing
               | tape deck.
               | 
               | Edit:
               | 
               | I wrote this in another comment up-thread but, for
               | completeness:
               | 
               | The Applesauce[0] project seems to do what I'm talking
               | about. It samples analog signals from the drive, rather
               | than the output of an ADC in the drive. No doubt the
               | clever architecture of the Disk II drives is what allows
               | for this.
               | 
               | [0] https://wiki.reactivemicro.com/Applesauce
        
               | MenhirMike wrote:
               | I'm not aware of any direct copier, most disk duplicators
               | that were sold to regular people were just a bunch of
               | floppy drives with regular disk copy software.
               | 
               | These days, there is the delightfully named Greaseweazle
               | (https://github.com/keirf/greaseweazle) and similar
               | devices to _read_ disks at a magnetic level, but I'm not
               | sure if there is something to _write_ disks. I don't see
               | any reason why such a thing couldn't exist, I'm just not
               | aware of it.
               | 
               | Tech Tangent has a good in-depth video about imaging
               | disks for archival purposes if interested:
               | https://www.youtube.com/watch?v=UxsRpMdmlGo
        
               | Gormo wrote:
               | KryoFlux (https://kryoflux.com) reads and writes magnetic
               | flux data.
        
               | EvanAnderson wrote:
               | > ...similar devices to _read_ disks at a magnetic
               | level...
               | 
               | It's not, though. It's reading the disk after the drive's
               | analog-to-digital converter has had its way with the
               | analog flux transitions coming off the head. There's auto
               | gain control circuits in there, and a pre-amplifier, and
               | finally the ADC. Greaseweazel and its ilk are closer to
               | the flux than just reading the disk in the conventional
               | manner but it isn't actually sampling the raw flux
               | reversals.
               | 
               | The Domesday Duplicator is closer to what I'm taking
               | about. You can do software-defined manipulation of the
               | sampled analog signal. In its case, it's a software-
               | defined laserdisk player. (One could do the same w/ VHS,
               | for example.)
               | 
               | I'll try to dig up a good Vintage Computer Festival talk
               | from a guy who was recovering analog signals from old
               | tapes and reconstructing the data by building a software-
               | defined "tape drive" and using signal processing
               | algorithms that would be applicable in the software-
               | defined radio domain.
               | 
               | It occurs to me that such an analog duplicator wouldn't
               | need fancy FPGAs and high-speed digital signal processing
               | that didn't exist back then. It would "just" need very
               | clean analog circuitry and decent motor control.
               | 
               | Edit:
               | 
               | Here we go. Video of the talk:
               | https://www.youtube.com/watch?v=sKvwjYwvN2U
               | 
               | A comment I made about it:
               | https://news.ycombinator.com/item?id=31939703
               | 
               | Edit 2:
               | 
               | It looks like the Applesauce[0] project does what I'm
               | talking about. It's sampling analog signals from the
               | drive, rather than the output of an old ADC. Very cool.
               | 
               | [0] https://wiki.reactivemicro.com/Applesauce
               | 
               | There's some discussion here[1] about analog recovery of
               | floppy data and some past discussion[2] from HN.
               | 
               | [1] https://scarybeastsecurity.blogspot.com/2021/05/recov
               | ering-l...
               | 
               | [2] https://news.ycombinator.com/item?id=27187435
        
               | deaddodo wrote:
               | In some cases this would be a sort of DRM, sure. But it
               | certainly wasn't universal. Most smaller-midsize
               | distribution houses just used something like this:
               | 
               | https://www.awp1.com/st.html
               | 
               | Or, if they were very small, they would just use multiple
               | smaller scale devices that could do 2-4 copies at a time,
               | like this:
               | 
               | https://pbs.twimg.com/media/Dgr_J-
               | NUEAAHZ0I?format=jpg&name=...
               | 
               | Some of the expensive ones of these could do magnetic
               | signal copying, but most just did sector-by-sector.
               | 
               | At least, that's my understanding. Bit before my time.
        
               | chriscjcj wrote:
               | The TRS-80 Color Computer's "Sands of Egypt" employed
               | this very strategy. They planted a glitch on a certain
               | sector of the disk. If memory serves, you could copy the
               | disk, but doing so would "fix the glitch." The game
               | checked for the presence of the glitch on the disk and
               | wouldn't run without it.
               | 
               | https://www.cocopedia.com/wiki/index.php/Sands_of_Egypt
        
             | jpsouth wrote:
             | Thanks for the explanation, that makes it much clearer.
        
             | esafak wrote:
             | This reminds me of the low-level disk cloning utilities
             | crackers used to circumvent copy protection, and how they
             | competed to build faster ones.
        
         | benjaminpv wrote:
         | I always liked the cases where people have broken open ROMs
         | only to find that the compilation process stuffed a bunch of
         | directory and filenames in the silicon. It's funny to think
         | that in a time when literally every byte cost money there's a
         | fair number of carts that have people's FAT entries burned into
         | them.
         | 
         | https://forums.nesdev.org/viewtopic.php?t=17324
        
           | toast0 wrote:
           | Well... every byte costs money, but it's really quantized. If
           | your game doesn't fit in a power of 2, you have to pay more
           | to get the bigger one (and maybe even a lot more if you also
           | need to include a mapper, plus using a mapper means you've
           | got to adjust your code and what not). But if you're using
           | 75% of your quantized space, you don't need to be that picky.
        
             | bryanlarsen wrote:
             | The last time I built a ROM (in the 90's) it had 7 free
             | bytes of space. That was not a coincidence. It was larger
             | than that and then optimized until it hit a nice power of
             | two and then I stopped optimizing.
        
             | repiret wrote:
             | It is quantized, but not necessarily to a power of two. RAM
             | and flash sizes of 3x2^n are common even in contemporary
             | microcontrollers, and it's clearly possible to use fewer R
             | chips then your bus decoder supports in the less integrated
             | computers of yore.
             | 
             | And once you have a project with a fixed amount of ROM,
             | either because the hardware is at a point in its life cycle
             | where you can't change it, or it's third-party hardware and
             | you have to use what you get, or because you're already at
             | your BoM budget, then your software will behave like an
             | ideal gas - it will expand to fill the available ROM. This
             | happens because until you run out of ROM, you will write
             | your software in whatever way is easiest to get your job
             | done. But then once you run out of ROM, you will go back
             | and look for something that you can make smaller. Then you
             | can add a few more features or whatever, until you run out
             | of space again. This process will repeat until you're done,
             | but your ROM will always be nearly full.
        
           | micheljansen wrote:
           | DynaMike from that page deserves special mention for
           | accidentally including some browser history with... you
           | guess... https://tcrf.net/DynaMike
        
           | JohnBooty wrote:
           | a time when literally every byte cost money
           | 
           | Possibly overpedantic; please forgive me if so!
           | 
           | Every chip cost money, right? If your game shipped on a
           | single 1mbit EEPROM, it cost the same amount of money whether
           | it was 90% full or 99.99% full. There was of course a cost
           | incentive not to go over 1mbit, or to get your size down
           | enough to fit onto a 512kbit EEPROM.
        
           | deaddodo wrote:
           | This has happened quite a few times:
           | 
           | https://tcrf.net/Category:Games_with_uncompiled_source_code
           | 
           | It's usually more common on CD games with the directory/file
           | being unlisted, but it's always interesting to find partial
           | source code bakes into ROMs. Last I heard/understood, it was
           | usually as some sort of white space padding; in the case of
           | CD-ROMs and an artifact of the sector-copying mechanism in
           | disk duplicators.
           | 
           | Also, the bytes cost money, but if you have a 32K ROM
           | (because the next lowest size is 16K) and only 28K of data,
           | it's not costing anything extra to fill that space.
        
         | hypertexthero wrote:
         | This was the second multiplayer game I ever played, when
         | visiting a friend's house, on his dad's computer. The first, on
         | the same computer, was a DOS version of Spacewar!
         | 
         | If I remember right, we'd reach a boss and the game would
         | freeze, so we never managed to beat Double Dragon II.
         | 
         | Good memories.
        
       | greenthrow wrote:
       | This article has a bunch of stuff asserted as facts that just
       | aren't.
       | 
       | As mentioned in another comment, there was nothing technically
       | advanced about AGI itself. If other studios wanted to get into
       | adventure games they didn't need to steal AGI to do it. And no
       | one with a functioning brain would have used a stolen game engine
       | for a commercial game. Companies don't want to give away their
       | code but in the case of adventure games it's not because they are
       | worried about their competitors.
       | 
       | The other assertion that's off-base is that this would have been
       | a sackable offense. No. Sierra still had legal protection against
       | competitors using their game engine. This goof, while a little
       | embarassing, had no real financial or security or any other
       | damaging implications for the company. I doubt anyone would have
       | gotten any more than a talking to about how to avoid it happening
       | again.
        
         | lance_ewing wrote:
         | Yeah, that is a fair point. I was a little too eager and
         | dramatic with my wording. I have now removed the bit about it
         | potentially being a sackable offence, as I feel you are
         | probably right regarding that. Someone else in the comments
         | made a similar point.
         | 
         | Your point about the legal protection against competitors is a
         | good one too. I've tried to reword the bit that suggested it
         | might be drastic. Let me know if you think it reads better now.
         | Thanks.
        
       | me_again wrote:
       | I sometimes wonder about the commercial impact of source code
       | leaks. In this case, nobody noticed until the product was
       | commercially irrelevant, but what might have happened if some
       | competitor had noticed?
       | 
       | My guess is probably nothing. Having the interpreter source code
       | is a liability for other companies in case of an infringement
       | lawsuit. Are there good examples where a source code leak
       | actually led to significant consequences for a company?
        
         | ryandrake wrote:
         | My hunch is that companies tend to be paranoid and vastly
         | overestimate the commercial importance of their source code.
         | Are there really that many realistic opportunities to copy
         | secrets from one mature source tree to another and commercially
         | benefit from it? These code bases are likely totally different,
         | use different design patterns, different internal APIs, data
         | models are different, maybe even different languages.
         | 
         | Anyone who has done integration work between two totally
         | foreign-to-each-other code bases knows that the integration
         | effort is often greater than just writing the code from
         | scratch.
         | 
         | The biggest risk is probably someone getting their hands on the
         | entire project, including code, art assets, build
         | infrastructure, and just compiling an identical program to
         | release under their own name. But that would be obvious and
         | probably easy to prove/litigate.
        
           | cesarb wrote:
           | > Are there really that many realistic opportunities to copy
           | secrets from one mature source tree to another and
           | commercially benefit from it? These code bases are likely
           | totally different, use different design patterns, different
           | internal APIs, data models are different, maybe even
           | different languages.
           | 
           | When you're stuck failing to make something work, it can be a
           | large benefit to be able to look at how somebody else managed
           | to make it work. Sometimes it's a bit you forgot to set on a
           | register somewhere, sometimes it's a sequence of operations
           | that tickles a hardware bug which can be avoided by doing
           | things in a different order. On a higher level, sometimes the
           | issue is that the A API is implemented as "return <error>"
           | and only the corresponding W API is actually implemented. Or
           | the trick to make the API work is to cast one of the many
           | objects you already got into a non-intuitive poorly-
           | documented interface, allowing you to call a method which
           | returns yet another object which allows you to do what you
           | actually want. And so on.
        
       | jandrese wrote:
       | I wonder if this is the only copy of that source code that
       | survives? It's extremely common for source code from that era to
       | be lost to time, especially from defunct companies. From a
       | historical and preservation viewpoint this "blunder" may be a
       | miracle.
        
         | lance_ewing wrote:
         | It happened twice at Sierra, around the same time in fact. I
         | have found part of the AGI interpreter source code on a King's
         | Quest III disk (version 2.14, 720KB version, disk 1). There is
         | nowhere near as much, but lucky for us, it happens to include a
         | few complete files that were not on the SQ2 disk. So that
         | increases the total amount of source a bit.
         | 
         | I have checked other Sierra disks, and so far the SQ2 and KQ3
         | occurrences are the only ones I know of.
        
       | EvanAnderson wrote:
       | Always do sector-level imaging of old disks, at minimum, for
       | archiving. ("Flux"-level images taken with something like
       | Greaseweazel are even better.)
        
         | hi-v-rocknroll wrote:
         | Greaseweazle. Back in the day, there was Central Point's Copy
         | II PC Deluxe Option Board, or the rarer Central Point's Copy II
         | PC Enhanced Option Board able to copy physically-damaged-for-
         | copy-protection media.
         | 
         | For copy protection, NevrLock and CrackAid. I still encounter
         | DOS malware and a lack of proper cracking in some poor quality
         | releases on the interwebs. For archival purposes, it's
         | generally better to buy several physical copies of a game and
         | Greaseweazle it and end up with at least 1 complete and
         | unspoiled version.
        
       | mrguyorama wrote:
       | This exact situation actually happened all the time. The cutting
       | room floor lists about 500, in various states between just a
       | little accidental included code to most of it:
       | 
       | https://tcrf.net/Category:Games_with_uncompiled_source_code
        
         | lance_ewing wrote:
         | Thanks for the link. I hadn't previously visited that site.
         | Very interesting.
         | 
         | From a quick check, I can't see this particular Space Quest II
         | disk's AGI interpreter uncompiled code mentioned in there yet.
         | Do you agree?
         | 
         | I have noticed that the same thing happened with a King's Quest
         | III disk, in fact it looks like it may have happened around the
         | same time as the Space Quest II occurrence.
        
           | mrguyorama wrote:
           | https://tcrf.net/Space_Quest_II:_Vohaul%27s_Revenge
           | 
           | This AGI code is mentioned at the bottom of the Space Quest
           | II page. It's not technically "source code for the game" so
           | it doesn't fit in the category I linked above.
        
       | Exuma wrote:
       | This game was such an insane strong part of my childhood that
       | when I think about the present day many years later it feels like
       | a dream. I try to imagine in my current life having the same sort
       | of "connection" to a game and it just feels impossible.
       | Everything around me feels like "just" a game, show, material
       | object, whatever... but space quest 2,3,4 all feel like they are
       | fundamentally part of my DNA, intertwined with it.
        
         | thyrox wrote:
         | I feel that for music. During my teenage years I used to listen
         | to the same songs over and over on my walkman. I still remember
         | 99% lyrics to the whole albums. The music used to have such a
         | strong connection.
         | 
         | Nowadays there are 1000+ songs in my playlist I can't even
         | recollect 20% lyrics nor there is a chance in hell that I would
         | listen to every single song on the entire album let alone every
         | single song by tthe same artist.
         | 
         | It's like if I don't like the first 10 seconds, it's hide song
         | and Spotify makes sure I never have to listen to that again.
         | Even though some of my all time favorites are songs I hated at
         | first but then there was no hide song button.
         | 
         | Sorry I digress but yeah the connections you make in childhood
         | are really something. I just hope it's my age and not the
         | technology responsible for this and the youth of today feel the
         | same connection too.
        
         | the_af wrote:
         | Same feelings but specifically about Space Quest II.
         | 
         | I played SQ I way later in life, and SQ III didn't resonate as
         | strongly with me. The rest were no longer EGA "text input"
         | games either.
         | 
         | SQ II brings back memories. I learned some of my English with
         | it, too. I remember the feeling of satisfaction when I
         | discovered I could "rub berries" on Roger Wilco ;)
        
           | sedatk wrote:
           | SQ III had a hilarious Sierra HQ part.
        
             | the_af wrote:
             | Oh, don't get me wrong, I liked The Pirates of Pestulon.
             | It's also the last EGA SQ to my recollection. Call me weird
             | but the limited palette of EGA graphics appeals to me.
             | 
             | It just didn't have as big an impact on my young self as SQ
             | II.
        
             | Gormo wrote:
             | Leisure Suit Larry III, released around the same time as SQ
             | III, also has a very similar fourth-wall-break at the end
             | of the game. The Sierra team must have had _Blazing
             | Saddles_ on their minds in the late  '80s.
        
           | macksd wrote:
           | I actually attribute my high typing speed to the practice I
           | got with OPEN DOOR, TAKE KEYCARD, CLOSE LOCKER, LOOK
           | CAULDRON. Police Quest, King's Quest, Space Quest. Good
           | memories.
        
           | swozey wrote:
           | I loved SQ but it frustrated me so much. As a kid I could NOT
           | get anywhere with it without one of those hint books with the
           | red garbled text or calling the Sierra Hint Line (on my
           | parents bill...).
           | 
           | All of the Sierra games, as much as I loved them, would just
           | piss me off with dying constantly. Having to do a specific
           | thing at a specific time or dying. You had to do SUCH
           | specific things. I remember the park/lake scene and pulling
           | people over driving in PQ being impossible until I found
           | hints.
           | 
           | I'm not sure I ever beat a Sierra game outside of LSL. Maybe
           | a KQ and potentially a QFG, but I definitely didn't beat a
           | PQ. I LOVED PQ3. I think out of all of them that SQ was the
           | one that really, really pissed me off, and scifi is my
           | favorite genre, with no other scifi adventure games back then
           | (other than beneath a steel sky which I also got nowhere
           | with), total bummer.
           | 
           | Whenever I discovered LucasArts (DOTT I think was first),
           | Legend of Kryndaria, Discworld, etc, it was such a breath of
           | fresh air. There was a Black Cauldron game that I LOVED.
           | 
           | I remember all of these games so vividly. I don't think I
           | remember many other games nowadays to that degree. Baba Yagas
           | hut, the wizards house, cleaning the stables in qfg, Otto
           | standing outside the bar.. Could very well be because I died
           | so much and played scenes over and over..
           | 
           | edit: This made me want to give them a go again..
           | https://playclassic.games/games/point-n-click-adventure-
           | dos-...
           | 
           | edit2: I forgot how slow you walk.. ugh. There are a LOT of
           | modern Adventure games now on Steam. It's had a bit of a
           | comeback and they're usually affordable games. I'm playing
           | the Plague Doctor of Wippra right now. All of the Wadjet Eye
           | games are really cool too.
        
             | eloisant wrote:
             | Yes, Space Quest was fun overall but dying was not. I think
             | it was LucasArts who started to make adventure games where
             | you can't die.
        
             | the_af wrote:
             | > _I loved SQ but it frustrated me so much. As a kid I
             | could NOT get anywhere with it without one of those hint
             | books with the red garbled text or calling the Sierra Hint
             | Line (on my parents bill...)._
             | 
             | Interesting! When I played SQ II, it was a pirated copy and
             | I had no hint book. Also, no access to the Sierra Hint Line
             | from my country. _And_ no Internet websites to google the
             | answer, either. So I beat them all by myself. All of those
             | games were pirated, and the hardest was SQ 4 which would
             | randomly crash to desktop, and I wasn 't sure if this was
             | supposed to happen, or some badly cracked copy-protection
             | thing, and to this day I still don't know.
             | 
             | Spanish is my native language, so the inspiration to try
             | things like this was pretty cool: "mooom, how do you say
             | "rub" in English? I think I'm supposed to rub these berries
             | on the dude!"
             | 
             | > _I forgot how slow you walk.. ugh._
             | 
             | Oh, yes. Those early adventures didn't let you teleport to
             | the next screen either, you had to _very slowly_ walk all
             | the way. I used to use savegames for fast teleporting:
             | "ok, this didn't work, I want to go back to that other
             | screen but it's so far, let's restore my savegame".
        
         | MrMetlHed wrote:
         | I was just delighted that "free little dude" worked on rescuing
         | the creature early on in that game. It's also the first game
         | I've ever played of the sort (as like a ten-year-old) and I
         | spent weeks and weeks with it.
        
         | brandall10 wrote:
         | Space Quest III was my first Sierra game and it definitely has
         | that hold. But so many of their games from that period really
         | were so special, Police Quest II, LSL III, Hero's Quest in
         | particular I ended up playing roughly together.
         | 
         | There was something really magical about those text driven EGA
         | Sierra games. To me it was a goldilocks level of
         | emotional/creative connection between Infocom and the later
         | point and click VGA variants.
        
           | lance_ewing wrote:
           | I bought Space Quest II and III on the same day, back in
           | 1989. I think it was on a Saturday morning, and by the end of
           | the next day, I'd already finished Space Quest III. But Space
           | Quest II took a lot longer, more like 2 months to finish.
           | Having lived the game for longer, my memories of SQ2 are
           | fonder.
        
         | ErneX wrote:
         | Same, this was the 1st game I had on the first PC we had at
         | home. And I didn't even know English so I played through all of
         | it using an English-Spanish dictionary and lots of patience.
        
         | elbelcho wrote:
         | I have very similar feelings. My dad worked at a steel mill and
         | was friends with a 'computer guy' at the mill who gave him a
         | copy of SQ2 for me to play at home. I played that game
         | relentlessly but was pretty young so I was confused by a lot of
         | it.
         | 
         | Anytime I was really stuck, I would ask dad to ask the
         | 'computer guy' how to get past a certain point and I seem to
         | remember he would kindly provide hints, but not outright
         | solutions.
         | 
         | It's probably been 35 years since, but I even remember with
         | some detail a dream I had related to that game. It really had a
         | big impact on me.
        
         | mavamaarten wrote:
         | I have the same feeling about the first games I played
         | "seriously". You know, some games you know of and have played
         | as a kid, but some game was the first game that you consciously
         | invested time in to finish it. For me it was some super weird
         | Shrek-themed clone of MarioKart on the Nintendo GameBoy
         | Advance. As a kid I really didn't see it as a MarioKart clone,
         | just a fun game I wanted to finish entirely.
         | 
         | I absolutely forgot about it and only recently saw some YouTube
         | video about what a weird game that was. Seeing that game again
         | with its soundtracks and weird sound effects and clunky
         | mechanics really triggered that exact feeling of a "connection"
         | that you speak of.
        
       | Joel_Mckay wrote:
       | This still happens at some firms every so often with source code
       | and private signing key sets.
       | 
       | The issue is usually management making an arbitrary call on who
       | is part of the development pipeline. Thus, for a time some
       | contractors and partners may get a backup of the build tree or
       | temporary repository access (if you catch the "new" users.)
       | 
       | It is harder than one would think to keep things confidential...
       | 
       | Cleaning up after one of these leaks is another set of problems,
       | but usually at that point it is better to jump ship.
       | 
       | Best of luck, =)
        
       | Dwedit wrote:
       | The Famicom version of Air Fortress has a ridiculously large
       | amount of stuff unintentionally making it into the ROM. There is
       | some uncompiled ASM code in there, some MS-DOS directory
       | listings, some text strings from one of the EXEs used to build
       | the game, and even more.
       | 
       | The Japanese cartridge was 128+128KB large.
       | 
       | Then they built the US NES version. Most of the 128K of graphics
       | data was duplicate graphics, or unused. There was about 36KB of
       | actual unique graphics. They shrunk the graphics down to 32KB by
       | removing an image of a planet from one of the endings, and
       | shipped it on a 128+32KB cartridge instead of a 128+128KB
       | cartridge.
       | 
       | Source: https://tcrf.net/Air_Fortress
        
       | boricj wrote:
       | Back when release artifacts were hand crafted, these often
       | contained leftovers that weren't meant to be shipped, like cut
       | content [1] or debugging symbols [2]. When I stumbled upon
       | debugging symbols hidden inside the data archive of the demo
       | version of the video game I'm reverse-engineering, it was an
       | unexpected but very helpful surprise.
       | 
       | Nowadays with CICD, automated builds and other modern development
       | practices it probably happens less often.
       | 
       | [1] https://tcrf.net
       | 
       | [2] https://www.retroreversing.com/games/symbols
        
         | playingalong wrote:
         | CICD pipelines can also work the opposite direction. No one
         | looks into several thousands of console output unless there is
         | some error. Also the tests are likely to pass even with
         | excessive content in the final release package.
         | 
         | So my intuition is rather opposite. It may happen more often.
         | Or at least CICD makes it more likely to happen than manual
         | building. There might be other factors too.
        
           | boricj wrote:
           | I'd say manual building has a chance of a slip-up every time
           | it is done, whereas automated building has a chance that it
           | will slip-up every time it is executed.
        
       | ajxs wrote:
       | I've been doing a lot of reverse-engineering of synthesiser ROMs
       | lately. The Yamaha DX9 ROM has some fragments of the firmware's
       | symbol table embedded in the empty space left in the binary[0],
       | along with a big block of 6303 code that was probably from
       | whatever development system they used. It's a really amazing
       | feeling when you stumble upon things like this! I'm such a nerd
       | about these things that I feel like some kind of software-
       | archaeologist, getting a small glimpse into the past. Finding
       | this sent me down a really deep rabbit hole trying to find out
       | more information about what development tools Yamaha might have
       | used. I never discovered anything definitive, but reading the
       | documentation on contemporary devtools gave me a real
       | appreciation for modern workflows!
       | 
       | 0:
       | https://ajxs.me/blog/Hacking_the_Yamaha_DX9_To_Turn_It_Into_...
        
       | olliej wrote:
       | Not sure this would have counted as "losing it to the public
       | domain" - accidentally leaking the sources doesn't negate
       | copyright (presumably just trade secrets stuff by Iqbal)
        
         | lance_ewing wrote:
         | Yeah, sorry, that was a poor choice of words on my part. I have
         | reworded the sentence slightly to hopefully avoid the legal
         | implication.
        
       | johnyzee wrote:
       | I love the change history comments. They show a high level of
       | attention to detail and craftsmanship, at a time long before
       | source control tools made this kind of thing obvious (and
       | honestly, even after CVS/SVN/Git it still wasn't obvious to a lot
       | of people).
       | 
       | This post also makes me think of the famous 'No Silver Bullet'
       | essay[1], which in 1986 predicted that software would more or
       | less continue to be written they way it was then, by programmers,
       | painstakingly, one instruction after the other. The similarity of
       | the game engine code (along with the comments) in the OP, to
       | something I might have written today, bears this out, I think,
       | almost 40 years (!) later.
       | 
       | [1] https://en.wikipedia.org/wiki/No_Silver_Bullet
        
         | progbits wrote:
         | To this day I see too many git commits like "fix" and "stuff".
        
           | brokenmachine wrote:
           | No need for personal attacks.
        
       | pcwalton wrote:
       | Looking through the repo, some of the assembler [1] looks odd:
       | getShdwOfst:             xor bh,bh             mov bl,al
       | mov di,bx             shl di,1             shl di,1
       | shl d1,1             ...
       | 
       | Why shift one bit at a time, like you would on a CPU like the
       | 6502 with no multi-bit shift instructions? Was this hand-ported
       | from some system without those?
       | 
       | [1]:
       | https://github.com/lanceewing/agi/blob/main/src/CMGRAPHX.ASM...
        
         | grumpyprole wrote:
         | 8088 did not have a barrel shifter, so multi-bit shifts would
         | have been expensive and non-interruptible over multiple clocks.
         | Perhaps game devs just avoided them out of habit.
        
         | ksherlock wrote:
         | It was hand-written for a system without multi-bit shift
         | instructions.
         | 
         | 8086 shifts were 1 bit at a time (2 cycles for a register
         | shift.) or using cl for the count (8 cycles + 4 cycles/bit for
         | a register shift).
         | 
         | constant multi-bit shifts were added in the 80186.
        
       | jesprenj wrote:
       | > FormMaster duplication machine
       | 
       | Anyone got any links with more info about this device?
        
         | lance_ewing wrote:
         | I found it very difficult to find references to it online.
         | There is a reference in the "Hackers" book by Steven Levy to
         | Sierra On-Line having one (he uses the name "Form Master"), and
         | former Sierra employees have mentioned it as well but with the
         | two words run together as FormMaster. As I couldn't find much
         | more, I'm not sure which form of spelling is correct.
         | 
         | https://www.google.co.uk/books/edition/Hackers/JwKHDwAAQBAJ?...
         | 
         | There is a photograph in a September 1983 issue of a Japanese
         | magazine called "LOGiN" of one of Sierra On-Line's disk copying
         | machines but the article doesn't mention it by name. I wonder
         | if it is the FormMaster/Form Master machine.
         | 
         | https://archive.org/details/login-september-1983/LOGiN%20-%2...
         | 
         | As an aside, that September 1983 magazine is the earliest clear
         | reference to the development of King's Quest that I could find.
         | It isn't mentioned by name but it is obvious that it is King's
         | Quest that is being referred to.
        
       | accrual wrote:
       | Kind of a tangent but I wonder how the serial numbers on the
       | floppy disks were generated. They're clearly not sequential and
       | the length differs between version 2.0D and 2.0F.
       | SER# 312929011101963 (15 digits)         SER# 3129289101202698
       | (16 digits)
       | 
       | I wonder if they kept track of these in a CSV or something. Was
       | the idea a customer could call in with their serial number and
       | report a problem, which could be traced to a batch number or
       | something? Anyway, just a curiosity I noticed.
        
         | lance_ewing wrote:
         | I was also wondering about these numbers when putting the
         | article together. The photo of the 2.0D disk is of my own
         | personal copy of the game. I assume the number is unique to
         | that disk, but I haven't spent any time at all researching
         | that. I wonder if someone has.
        
       ___________________________________________________________________
       (page generated 2024-05-23 23:00 UTC)