Mr Wint’s Investigation Into The Games: Winter Edition’s Copy Protection

This is a deep one. As linked by one for the books over on Metafilter, a GitHub user with the username MrWint was looking at the code of the Olympics-like DOS minigame collection “The Games: Winter Edition.” They wondered why it seemed to be impossible to achieve better than a certain score in some of the events. It turns out to be because of failed copy protection checks in most of the versions of the game produced after the initial release. Most of the cracks of that game that can be found on the internet are affected. They even affect two later official physical releases, and GOG’s release, which is a terrible problem for people who bought any of those versions expecting a working game.

If you’ve played it and never been able to score higher than 86.7 meters in the Ski Jump, it’s not you, it’s the game practically gaslighting you into thinking you failed. It’s impossible to land the jump if you’re affected by the bug and have gone that far!

Here’s their description of the result of the checks, and here’s their lengthy writeup of the problem, what causes it, what it does, which versions don’t fail the check, and a fix for it. Both pages have animations of the bug in action. Here’s their patcher.

Here’s a tl;dr summary, although the most interesting part of it all is the reverse engineering and description of the problem. But in case you aren’t interested in that and just want the gist:

The original release came with a code wheel copy protection system, and performed a number of checks for the event that the protection was bypassed. A value was created as the result of the check, and was modified and stored in various other places. Each of the events itself checked one of those places against a second, obfuscated copy of the code wheel’s lookup table. If the original wheel check is bypassed, which happens for most of the versions of The Games: Winter Edition now, illegal or legal, those places won’t have the correct value, and the game will sabotage those events during play in different ways.

It’s really sneaky, and as it turns out, it also affects the GOG release of its sequel, The Games: Summer Edition in a similar manner, although cracks of that game managed to fix the sabotaged events.

Poking Technology Tries To Play Samples On A Commodore PET

The Commodore Amiga has quite nice digital sound output. The Commodore 64 has the SID chip, well-regarded in 8-bit computing circles. The Commodore PET, on the other hand….

I’ve seen people call the PET the first home computer. This is false. There were computers before it, but they were sold in the form of kits. One of them, the KIM-1, was sold by MOS Technology before they were bought by Commodore. The PET was released the following year as an all-in-one unit, even with an integrated monitor.

Some PETs had a basic speaker included. The speaker had to be driven directly. With the later SID, you wrote data into registers and the chip’s circuitry handled the sound generation over time, freeing up the process for other things. On the PET, the processor has to push bits into the register itself, or else use a shift register set up to do the bit pushing. That means, if you get the data in fast enough, that you actually have a fair bit of flexibility over what the speaker does, but it also means you spend a lot of CPU cycles in doing in.

The Youtube channel Poking Technology recently tried playing digitized sound through the PET’s poor little speaker and documented their work in a fairly long 58 minute video. This is it:

58 minutes is a bit of a time imposition. And there is some hardcore hackery going on, with them writing assembly code on camera and testing it over and over in an emulator until it works, as well as both harsh hiss and very high-pitched beeping. To avoid those fine examples of audio torture, you can jump here to hear the final result, at around the 56 minute mark. By the way, the sound being played is the Windows 95 start up noise, the one composed by Brian Eno.

CBS 8 San Diego’s Visit to Atari in 1982

I’ve been working a lot on compiling lists of programs that appeared in Loadstar, and it’s taking a lot of time. So here’s a quick item for today: a visit by the news team of CBS 8 in San Diego to Atari’s headquarters. 12 minutes from the company heyday in 1982, when they were riding high off the success of the Atari VCS/2600 and their many beloved arcade titles.

Super Metroid Map Logic Project

If you explore the internet long enough, you find wonders and horrors, but you also find very weird and obsessive things. One such thing is sm-json-data, a project to not only comprehensive catalog all of the tricks in Super Metroid and the situations they apply to and their uses, but to express it in a machine-readable fashion, so randomizers can use it.

I don’t even really know how to read it, but just the level of detail present here kind of makes me think it’s worthy of presentation here. It also sets off my allergies against obsession, it makes me itch like I’ve got hives, so I won’t be spending much time here. But maybe it’s the kind of thing you might find interesting?

Warning: this way lies madness.

sm-json-data (Github)

Romhack Thursday: Hyper Metroid Super

On Romhack Thursdays, we bring you interesting finds from the world of game modifications.

Why do people play romhacks in the first place? I’m setting aside joke hacks (most aren’t that funny), and hacks that seek to make something completely different from the original. I’m talking about the normal style of hack, the type that tries to deliver more of the original game. Especially for a game that’s beloved and well-made in the first place, like Super Metroid?

But you can’t go home again. Without substantial modification to the game’s code that even extensive hacks almost never pull off, the result is a remix of the original game. Making a game by itself is pretty hard, making an interesting modification that works as an extension of the original, while not going overboard in one of a half-dozen ways, is nearly impossible. Many hacks are unplayably hard. For some, like those invaders from the dark universe of kaizo hacks, that’s the point, but most players just aren’t into that scene. But if the game isn’t harder, then the people who are in the hack’s audience will probably just be bored.

I’m not quite sure that Hyper Metroid SUPER walks the line perfectly. I haven’t finished it (I have a deadline after all), and while I find it interesting there’s at least one sticking point I’ve noticed. But it does its job about as well as any other romhack I’ve seen, I haven’t spotted any bugs, and it’s fun to explore and work through the structure of Super Metroid once again, with a different map and items found in a different order.

The hyperbolic name is a result of it being a sequel to a sequel (to a sequel). Hyper Metroid was a previous hack from ten years ago, by creator RealRed, that’s pretty highly regarded by the Super Metroid hacking community, judging by its rating of 4.62 on Metroid Construction‘s user rating poll. Hyper Metroid won an award in the year of its release, and is at 19th place on its ranking of all Metroid hacks. While it’s only been out six days now, Hyper Metroid SUPER has a rating of 4.87, and is currently at the top of that same list.

Hyper Metroid did an excellent job of turning the Super Metroid engine to the exploration of a new world. Hyper Metroid SUPER is a great refinement in design, and shows what ten years of consideration and attention to design can bring to a game. The sudden deaths and hard stalls that are a problem with most romhacks are not here, but neither is it easy or simple. It’s still the work primarily of one person, and that presents limitations that are not easy to overcome when compared to an original game that was a strong team effort. But I haven’t rolled my eyes in the parts of the game that I’ve played so far, and that by itself is an accomplishment.

One aspect that’s deserving of mention is how, perhaps inspired by Metroid Zero Mission, Hyper Metroid SUPER guides the player along in their explorations in a manner similar to Nintendo’s own games, but also purposely allows for sequence breaking by an experienced player.

As stated, I haven’t finished Hyper Metroid SUPER yet, and it’s the kind of game where all it takes is one badly-designed element to wreck the whole experience. But so far, like the users of Metroid Construction, I rate it highly.

Hyper Metriod SUPER (hack of Super Metroid, metroidconstruction.com)

LOADSTAR Compleat: Commodore 64 Disk Magazine Archives

This is something I’ve been trying to make happen for some time. But then some work I put into it hit an unexpected snag (the maker of a library I had been depending on decided he wanted to be paid a subscription fee to use it or else he was going to put a nag screen on people’s projects), then other things came up, and so the project languished for months.

So now, on the premise that it’s better to get it out there and available and add features and fix things later, instead of sitting on it and potentially nothing happening with it ever, I have put up on itch.io ⅘ths of the run of classic Commodore 64 computer disk magazine LOADSTAR, with the blessing of owner/long-time managing editor Fender Tucker.

This isn’t the first time I’ve mentioned LOADSTAR in these pages. The magazine’s name came from the commonly-entered command on Commodore 64 computers LOAD”*”,8,1, to load the first program on disk into memory, and sometimes also to run it. LOAD”(star)”, you see. I packaged one of its programs, Dungeon, for sale on itch.io for $5 some months back and mentioned it here. This is an opportunity to get the collection it was drawn from. I recognize this is a bit self-serving, but I don’t do it very often, and there’s so much on LOADSTAR that the world deserves to know about. The price of $15 is because that’s what Fender has always sold it for. The issues can also be gotten for free elsewhere, yes. This is mostly an opportunity to get them all at once, and with the Fender’s approval: the person most responsible for all of it, the driving force behind it, the one who always believed the most in LOADSTAR, its very heart and soul.

I had been working for an explorer program for getting the contents of issues and searching through them without having to load each issue individually, but it had been stymied by the issue I mentioned in the first paragraph. Something else I’d like to do is supply an emulator that will run the issues directly, with sensible defaults. The version that’s up has an absolutely ancient copy of VICE for Windows with it. It’s so old that I’m not sure if there might be security issues with it; I should probably just remove it. In any case, current versions of VICE are available for many platforms and are free and open source.

To start an issue, you first start up your copy of VICE. The Commodore 64 emulator included is x64, or else x64sc; the Commodore 128 emulator is x128. Under the File menu, choose “Smart Attach…,” then pick the issue from within the LS64 folder for Commodore 64 issues, or LSQ128 for Commodore 128 issues. Make sure to click the Autostart button: it’ll load the Presenter program and run it automatically! You’ll find both 1541 (*.d64) and 1581 (*.d81) disk images. 90% of the time you’ll want to load the 1581 version, because those disks were much larger and a whole issue could fit on one of them! The 1541 versions (which while growing up I had to put up with) are split up into four disk sides, and are a hassle. By the way: the 1541 disk drive was excruciatingly slow. If you press Alt-W, you can toggle “Warp Mode,” which will speed up loading greatly! Just be sure to toggle it back off once your program has loaded!

And something the collection really needs is a list of highlights of interesting things on each issue, and also a directory of the people who made this unbelievable wealth of software. Here’s a few names to watch for: Jeff Jones (Assistant Editor), Barbara Schulak (Puzzle Maven), Ian Adams (Mathematician), Maurice Jones (Card Game Implementor of Great Skill), Jim Weiler (Third in Command), J.C. Hilty (BASIC Game Programmer who never let it get him down), Nick Peck (Creator of A Couple Of Awesome Games), Jon Mattson (General Gamesperson) and Walt Harned (Pixel Artist Extraordinaire). If I could affix all their names in the stars for the world to see forever, I absolutely would.

To construct the itch.io page I needed some screenshots, so I dipped into a few issues to make them, and got the names of their makers along the way. Here you go, but understand this is only a tiny fraction of what’s included.

Zorphon by Nick Peck, from LOADSTAR issue 39. A rather polished space shooter! The aliens are drawn using character mode. I like the classic Astrocade-like font for the text.
Pipe’s Peak by Bob Blackmer, from LOADSTAR issue 73. It looks like an action game, but I think it’s more of a timed puzzle?
Outpost by Thomas Czarneki, from LOADSTAR issue 60. A fairly blatant Missile Command clone, but it’s well polished. The opening menu asks if you want to play to lose, or play to win. I think the difference is, playing to lose starts you on Wave 7.
King’s Ransom by Scott Elder, from LOADSTAR issue 68. An interesting little game, you control a greedy king trying to scoop up coins before they fall into the lava. When a coin falls off the bottom, a gush of lava shoots up! There’s also skulls to avoid. In one of those little touches that you sometimes find in LOADSTAR software, if you wait on the title screen you get to see a hi-res illustration of the gameplay.
Quadrilation by Dave Johannsen, from LOADSTAR issue 68. A two-player game, playable against a computer opponent with four difficulty levels. Take turns placing your pieces so they overlap with as many squares of the same color as possible.
Stream, hi-res art by prolific Commodore 64 artist Walt Harned and included as part of The Compleat Walt.

Romhack Thursday: About Parallel Launcher

On Romhack Thursdays, we bring you interesting finds from the world of game modifications.

This week’s find isn’t a romhack specifically, but a way of playing them, both in patching and running them in an emulator, in a fairly automated way, at least if the hack you seek to play is for an N64 game, and especially if that game is Super Mario 64. It’s Parallel Launcher.

Parallel Launcher is an all-in-one solution to running N64 hacks. When you first run it, it’ll install a small Retroarch binary for its own use and set it up for exclusively for a couple of N64 emulators. You can supply the path to a folder of N64 roms and BPS patches, and it’ll try to apply patches to the roms on the fly when you try to play them.

It also has integration with the website romhacking.com, which is not connected with the hack news site romhacking.net or its follow-up romhack.ing. I’m not sure what the full extent of this integration entails, but if you have Parallel Launcher and a properly set up SM64 rom, and click on a Play Now link on a hack’s page on romhacking.com, it’ll mostly-automatically download the patch, patch the rom, and run it for you, without you having to do anything else other than allow the link to be passed from your browser to Parallel Launcher. There’s even some integration to track what stars you’ve found.

Once set up, Parallel Launcher works well! One of the biggest obstacle to playing romhacks, after sourcing the rom images themselves, is the effort and focus needed to generate them. You obtain the rom, then the patch, then the utility to do the patching. Then you run the utility, supply the location of the rom and the patch, and then roughly half the time the patching fails. If you’re using a format like BPS you’ll be told, and will then have to get the right version of the rom file or figure out how to repair yours. If you’re not using BPS or a similar kind of patch, you won’t find out until you try to run the game.

None of these steps is very hard to understand, but it’s a big hassle. While Parallel Launcher won’t help you find versions of roms, it’ll do just about everything else for you. In the way of emulators and emulation tools, it’s available for most current and popular desktop platforms. It’s a useful tool for a hack player’s box.

Foone Examines The Code of Carmen Sandiego

Foone! Everyone’s favorite examiner of old game code! She’s been looking at the Enhanced DOS Port of Where In The World is Carmen Sandiego! The surplus of exclamation points is how you know I’m not an “AI!” I use the scare quotes because it’s not “Artificial Intelligence” at all! Introduction and silly digression concluded! Opening paragraph complete!

Foone began her journey in search of the elusive mastermind back at the start of the year, and the thread is still going on. One of the early hacks she made is putting herself into the game as one of the criminals. I think this screen isn’t faked. She made and maintains the Death Generator website, so it wouldn’t even be particularly hard for her I think.

Some notes from the very long thread, which is still going:

  • Nouns used as verbs encountered: gibberish, chunk.
  • The game has support for changing the Acme Detective Agency image depending on different seasons of the year.
  • There is a handheld version of Where In The World Is Carmen Sandiego, which is actually a small DOS emulator, here’s the back of its box:

And here’s all of the people you can talk to in the DOS version:

I love this kind of cartoon art style, you (okay, I) don’t see it much anymore, now everything wants to look like anime.
  • The 1985 DOS version (so, not the one we’ve been following) has an invert-Y function for the joystick, in case you want to use a flight yoke controller.
  • A reference is made a post on Raymond Chen’s (awesome) Old New Thing blog, about a DOS game running under Windows 95 that crashed because it saw too much memory. It handled memory by allocating and allocating and expecting to be told “no” eventually. Windows 95 would keep giving it memory, going to virtual memory, from the swapfile. The program didn’t expect to keep being given more memory, and eventually it overflowed the array it used to keep track of it all. This seems to be the Old New Thing post.
  • On the world changing beneath the game: the frowned-upon word for Romani (beginning with ‘G’) is patched, the Brazilian currency name was wrong even when the game was released, lots of changed flags, the fall of the Soviet Union changed lots of things.

Behind The Code Examines the Mario 3 Revision

Displaced Gamers and their various technical dives, including the Behind the Code series, are favorites around here, and we’ve linked to them many times before. They take a lot of time with their content, but they always do a good job, much better than the average Youtube channel of whatever type, and it’s always something interesting to learn about. They have a new video up now (22 minutes) that examines the differences between the original and revised versions of Super Mario Bros 3, released a few months apart back in 1990.

Most of the differences were superficial: they changed the cover art slightly and added a ® symbol replacing a ™ on the Official Nintendo Seal. On the rom itself, they changed the names of the lands in the ending, from a flavorful set of localized names to just Adjective Land eight times in a row.

But there were other changes, and one of them was a substantial difference in the code, one that required moving much of it around by seven bytes to make room for it.

What was it? In brief, there’s one level in the game, 7-3, that uses a vertical-only scroll instead of a horizontal or multi-directional scroll, and it writes the images of the cards in the status window to the wrong place. So in the original release, on that one level, the card images are mysteriously blank during the vertical section.

That was fixed in the revision, which meant a check for what kind of scroll the level was using, and which changed the pointer to where to write them. Code needs space, and that space came out of a section of unused bytes at the end of the rom, with all the code between the change and that section shifted to account for it. If you had a Game Genie code that relied on data in those memory locations, too bad! You’ll need a modified version of that code.

Here’s the full low-down, which goes into much greater detail:

Sundry Sunday: Cursed Images and Game Music

Sundry Sunday is our weekly feature of fun gaming culture finds and videos, from across the years and even decades.

I think I’ve posted some of these before, but I don’t think I’ve done all of them, and I’m cleaning some links out of my list. So let’s take another look.

These are from a six-or-so year old meme that began with putting creepy (but not too creepy) music to battle music from perennial retro JRG favorite Earthbound. Earthbound had lots of weird and crazy enemies, so they fit fairly well. But they’re not all Earthbound collections, just so’s you knows.

I’ve got quite a few of these links. I could spread them across weeks, but I’ve got other posts to make, so I’ll just unload them all at once. Watch as many as you can stand.

First, the Earthbound collections. 3 minutes:

8 minutes:

Now, 9 minutes:

They’re getting longer in length. 12 minutes, if you’re getting tired of them I can’t say that I blame you:

This one’s 16 minutes:

And the mother (heh) of all collections, 51 minutes, using music from all three games:

The meme mutated a bit into science diagrams that look like shitposts, and with other game music. This one’s Miitopia (8 minutes):

And, with Splatoon music (11 minutes):

Last one! With Toby Fox music (13 minutes), you know, Undertale and Deltarune and stuff:

I’m glad to get those out of the list! Something different next time, whew.

16-Player Faceball 2000

Making the rounds has been a two hour Youtuber doc by Stop Skeletons Fro Fighting about the construction of a 16-player Faceball 2000 game. Here is the video, but don’t feel you have to watch it yet:

The video refers to a shorter video (19 minutes) by Zarithya, who solved some particular technical issues that made the 16-player game possible. If you’re in the mood for the full journey watch the above video; if you want less of your day consumed, try this one:

The gist: Faceball 2000 was a console (and portable) recreation of an Atari ST game called Midi Maze. Midi Maze was probably the first true FPS. Faceball 2000 got releases for multiple platforms, but the first, and most impressive technically, is probably the Gameboy version.

Developer Xanth Software F/X had a 16-player version of Gameboy Faceball working internally with special cables. Nintendo wanted them to support their new four-player adapter, but the mode that allowed for 16 players with the rigged cables was left in (it still works with an ordinary Gameboy link cable, jut limited to two players), although the devs noted in a 2005 interview that they had only managed to test it with up to 10 players.

Zarithya managed to figure out a way to play it with higher player counts with minimal extra hardware, and also discovered, and fixed, a bug that made 16-player games impossible with the code as released. It’s a pretty accessible explanation, you can probably understand it without much of a technical background.

That’s the main point; for the full story, the videos above are available. Enjoy, if you have the time!

Capcom’s Weird Save Data Checksum System In GBA Zeldas

Skawo reports on an odd bug in both the Capcom-made Gameboy Advance releases of Zelda games A Link to the Past and The Minish Cap. It’s explained, as is frequently the fashion, in a ten minute Youtube video, here:

The video’s a bit padded with injokes and gimmicks, but beneath it all the bug is really interesting. Many games have checks to ensure the validity of save data, but the developers of both games implemented theirs in an odd way, calculating a 16-bit checksum for the file data twice, once by adding and once by subtracting, saving them both, and them when the File Select screen is setting up adding them to each other and checking for zero with the negative bit set (the high-order bit). It usually works, except when the checksum is exactly zero, which happens one in 65,536 times.

When that occurs, the total will be zero without the negative sign, which will be detected falsely as corrupted save data. As luck would have it, naming your character “God” in the European version of GBA Link to the Past will trigger the bug, and make it so you can’t create the file. But the 1-in-65536 chance comes up every time you save and exit. (The file check is made upon loading the File Select screen, so just saving with a checksum of 0 won’t trigger it; if the player saves later in the same play session, non-zero checksums will be written over the bad ones.)

1-in-65536 is a rare event, but it’s not extremely rare, and it’s absolutely the case that over the years many players have had their games declared corrupted and made unloadable. If a player saves their game, say, 20 times through a playthrough, then that’s about a 1-in-3250 chance of losing all their progress, and both games sold much more than 3,250 copies.

Skawo demonstrates the bug in action in The Minish Cap here, in the peocess responding to some naysayers (10 minutes):