Hardcore Gaming 101 on Agent USA

There’s a whole genre of computer game that’s almost extinct these days, the inventive educational semi-simulation. Some examples include the beloved M.U.L.E. and Where in the World is Carmen Sandiego, and another one is Scholastic and Tom Snyder Productions’ Agent USA. Chris Gallagher on Hardcore Gaming 101 tells us all about it. (Note about HG101: it seems only http links work there at the moment. Visiting the site right now over https brings up an error.)

The educational aspect, as with the best of these games, is not the foremost aspect of gameplay, it teaches by having the taught information be useful to the gameplay rather than its entire point. You’re Agent USA, a white hat with legs trenchcoat, and you’re trying to save the United States from the “FuzzBomb,” a device that spreads a kind of zombieism by contact with people (black hats with legs).

Your only weapon, and defense, against the “FuzzBodies” are crystals. You can drop them on the ground and, while they’re there, they’ll slowly grow, making more crystals around them. Bystanders love to pick crystals up off the ground, so you have to keep pushing them away, but FuzzBodies that touch crystals turn back to normal.

Winning is accomplished by collecting 100 crystals and touching the FuzzBomb, but you have to avoid touching FuzzBodies as you approach it. If you get touched, you lose half of your crystals, and if you run out you get Fuzzed youself, and are forced to watch your character walk around randomly until it happens to touch a crystal, which could be nearly immediate or take quite a long time.

The educational aspects come from geography, knowing the names of towns to visit, and learning state capitals, which have a special significance to the game. Capitals are the only cities with info booths, which supply various pieces of info as well as the location of the FuzzBomb. There’s also an aspect of time management: trains depart on strict schedules, and you may end up having to wait a bit after getting your ticket.

I have vague memories of reading about Agent USA when it was new, and always wondered about how it worked. Another game from the same publisher and developer, and from around the same time, was In Search Of The Most Amazing Thing.

Finishing Super Mario 2 USA’s First World But Without Beating Bosses

It’s been a difficult time here for the moment, so I’m doing low-effort posts at the moment. I have ideas for several more long-form posts, but if the posts be long, so is the time to write them properly. So, in the meantime, here’s yet another Youtube video on a random piece of video game hyper-esoterica.

It’s a good one this time though! A 25-minute video on using all kinds of glitches and tricks to avoid beating bosses in a game where every level ends with a boss!

Super Mario 2, USA version, isn’t a game that I don’t think of when it comes to glitches, and I’d wager it doesn’t for many of you either, so it’s a bit reassuring to know that it’s got as many weird ways to bend the game’s rules as do games like Super Mario Bros. and Ocarina of Time. The video’s from Retro Game Mechanics Explained, which, along with Displaced Gamers, are among my favorite channels for digging deeply into the actually assembly code of games, and figuring out exactly why they do, or don’t do, what they could/should. Along the way you’ll get a basic understanding of how SMB2USA handles connections between areas.

If you’re as obsessed with understanding how these games were put together as I am, it’ll be like sugar candy to you! If you aren’t, well, maybe you’ll find it interesting anyway.

The Basics of Sonic Physics

The (very most barest) basics are explained in this five-minute video from Game Facts Special:

The (impossibly detailed) specifics are on Sonic Retro. Warning: you have no idea.

Can I summarize them briefly? Not really, but here’s the basics. The tiles link to a list of heights for that tile. If Sonic is traveling vertically up a wall, then the heights count as widths. If upside-down, then the inverse of the tile’s heights are used.

Every frame, Sonic emits four or five “sensors,” basically raycasts, around his feet and head. Those indicate where he’s standing and where the ceiling is. If he’s traveling vertically the rays are rotated 90 degrees in the proper direction, and for an upside-down Sonic they’re rotated 180 degrees. Additionally, each tile has a record of what its angle is, and that’s used for things like how it affects speed and what angle Sonic should jump at.

When going around a loop, Sonic’s sensors remain as normal until up past 45 degrees up the first ramp. Then his sensors rotate, and he’s now going up. 135 degrees around the loop, it rotates again, and again at 225 degrees, and one more time at 315 degrees. The same height values get used for each slope, just used for different purposes. It’s surprising it works as well as it does, really.

“Beating” Super Mario Bros By (Virtually) Swapping Cartridges

This seems like it’s going a bit too far to me. That’s the very phrase, “going too far,” that video creator 100th Coin uses, when he finishes Super Mario Bros. by swapping cartridges in mid-play.

And it’s not even really swapping cartridges. This is a TAS, a tool-assisted speedrun, so instead of physically removing a cartridge and putting in another one within a single machine cycle, it just switches rom images into an emulated machine’s address space.

It’s pretty ludicrous, but at least the video maker is upfront about this. Correction: they’re up front about it within their 40-minute video, but not in the title. The title is pretty click-baity, but I guess creators get views however they can in the Youtube hellscape of 2025, if content makers can survive.

“Cloudsurfing” in Final Fantasy VII

Final Fantasy games tend to have weird and crazy bugs, and VII was certainly no different. A bug beloved of speedrunners is called “Cloudsurfing,” where taking advantage of the way the game detects walkable overworld triangles and the way they’re cached to use Chocobos to walk over oceans and through mountains. Properly utilized, it can be used to skip a large portion of Disc 1.

AceZephyr explains it all in a 38-minute video:

Can I summarize it? I’ll try—

Prior Final Fantasy games used a simple tilemap to represent terrain. Final Fantasy VII’s overworld switched over to a world made up of triangles, each of which with a terrain code that indicated which entities can traverse it.

The triangles, additionally, are divided into square chunks. No triangle extends outside its chunk. Additionally, in each chunk, the triangle vertices aren’t represented literally for each triangle. Instead, the triangle coordinates are indexes into a list of coordinates, all to save a bit more memory.

Now, while each chunk is much smaller than the entire overworld, each can have over 100 triangles, so the code does some additional optimization. It keeps track of the last six triangles Cloud has touched, and checks them first when moving. If a triangle in this list is touched, then the search is stopped without checking the 100+ other triangles in the chunk.

Now, chunks are loaded into memory dynamically as Cloud explores, both for interaction and for rendering. The game loads the 25 chunks immediately around him off the disk, and some more in the direction the camera is facing. These chunks are constantly going stale (going out of range) and being refreshed as Cloud moves and the camera changes direction. Chunks are stored in a linked list, so are usually located by pointers, which means the chunks don’t need to be actually moved in memory, but instead references to them are copied and moved around. Some older chunks stick around in memory, then, while new ones are loaded, and the new chunks get moved to the top of the list.

Now this is the hardest part for me to explain, as I don’t have the firmest grasp on it….

When Cloud boards most vehicles, his entity is despawned and the vehicle is created with an empty list of cached triangles. But when he gets on a Chocobo, his entity is not despawned. While the Chocobo has its own cached list of triangles, since Cloud is still being rendered on screen, his entity is preserved, and with it pointers to the last triangles he interacted with. These are kept, unused, while the Chocobo handles all of the collision and terrain checking.

When Cloud gets off Choccy, he still has a list of the last triangles he interacted with… but they refer to the data from the chunk he was last in. Now the game is smart enough that, if this is different from his original chunk, to refresh things, but if it’s the same chunk I think this doesn’t happen. But this doesn’t mean everything will work without problems. The chunks will probably be loaded in a different order, and that means the cached triangles will refer to different data.

And since the vertices themselves aren’t stored in the triangle list, but indexes* to another list of data, it’s possible for some of this data to come from outside of the expected area, and for there to be duplicated coordinates among them.

Due to the way FFVII figures out which triangle Cloud is in, if two of the points in a triangle are on the same location, the game becomes much less discerning about whether Cloud is inside it or not. And if all three of the triangle’s vertices are in the same spot, forming what’s called a point triangle, just a single dot, then the game can’t declare Cloud is outside of it at all! So long as that triangle gets checked first, then the game will think Cloud is inside that triangle, so long as he’s in the same chunk. This could potentially turn the whole thing walkable.

Did I get it sufficiently right? Watch the video, and decide for yourself!

* The English graduate in me demands I point out that I know I’m being inconsistent with the plurals of vertex and index. Properly, like how I’m not writing vertexes, I should be writing indices, not indexes. I think that index is used more in contemporary English, so I made an editorial decision to pluralize it in a more familiar way. There, explanation: given.

Lost Port of Castlevania Dawn of Sorrow For Nokia Flip Phones

“Dr4gonBlitz” on Youtube found and played though a Nokia port of Castlevania: Dawn of Sorrow. It makes for a very interesting watch for people familiar with the original. (38m)

The player’s style is hyperbolic, in the common Youtuber style, but he knows the original. Dawn of Sorrow was made as a Nintendo DS game first and foremost, using many of its hardware features including its two screens and touchscreen, and I’m surprised any port was made, let alone one for pre-Apple smartphones

I always find it interesting to see how games get redesigned for lesser hardware, like the Tiger Game.Com port of Symphony of the Night. In Dawn of Sorrows’ case, most of the game’s souls, items and weapons were removed, the map was mostly kept the same but had some changes, several bosses didn’t make it, and “Aricado,” Alucard in disguise, isn’t even in the game. On the other hand, they added in a new item called a “Lost Soul” that serves as an auto-activating, one-time extra life.

The video is worth a look for IGA-style Castlevania fans!

An “Arcade Raid” in West Virginia

The title of the video makes it sound like feds crashing an illegal gaming establishment or something, but instead, it’s a number of people who discovered an abandoned house with a bunch of arcade games in it! And they didn’t crash it uninvited, but instead, once they figured out it existed, they contacted the Mayor’s office of the nearby town, discovered that the property had fallen into the town’s ownership, and arranged to purchase the machines from them. So, a happy ending! (34 minutes)

Well, mostly happy. Some of the machines had been stolen in the meantime, and some of them weren’t in great shape. The Centipede they tried to rescue fell apart. But they did manage to obtain a real classic, an Atari Food Fight, one of the arcade games designed by GCC, who also hacked together Ms. Pac-Man for Bally/Midway, and Quantum, also for Atari. It’s overall a nice story, as these machines aren’t getting any younger.

The video concludes with gameplay of the two rescuers competing against each other at Food Fight, and one of them managed to trigger a full-length Instant Replay, playing the complete (I believe) Instant Replay music, which is rarely heard since it gets trimmed to the length of the play, and requires waiting out nearly the entire timer to hear it!

Homebrew Distribution Tools: NES Bag and GBC Bag

The scenario: you’ve made a homebrew NES, Game Boy or Game Boy Color game, maybe by using a paid tool like NESMaker, or a free tool like GBStudio. Or maybe you used an assembler. Or maybe you hand-forged it yourself out of elemental bits with the chip documentation laid out on a table beside you? (Don’t laugh, I used to write 6502 code like that back in the day, when I didn’t have an assembler! The Commodore 64 Programmer’s Reference Guide was a godsend.)

The problem: you’ve made something you think is pretty darn great. Maybe you’d like to distribute it for people to use easily without having to set up an emulator, like it were some kind of native application? Maybe you’d even want to sell what you’ve made, and participate in the equatable exchange of goods and services you’ve heard people talk about in huddled whispers, but never thought you might engage with yourself?

The solution: Use EASTPIXEL‘s NESbag or GBCbag!

The indicated programmacalities* take a supplied rom image (even if said image never came from actual ROM chips) and erect a software box around it. Then you can distribute that package to other people, and they can double-click it to run it, just like it were a standard desktop executable, and it’s even rumored to be Steam Deck compatible.

A pre-built version is supplied for Windows. For Linux you’ll probably have to compile some code, if just because there’s so many distributions. For Mac, you’ll have to compile it yourself as well, but the process is rumored to be pretty simple.

* Feel free to use this word in your own conversations! People will love it!

C64 Demo: NINE by Iftkryo

The demoscene is a rich source of awesome, and at times ridiculous, imagery and sounds. Once in a while we sift through it to find things to entertain you with.

On Youtube, some Commodore 64 observers have been in a bit of a tizzy examining a new demo by Iftkryo, called NINE (3m).

If you don’t know anything about the computer, it might not seem too interesting. A block-graphics wizard lifts his hat and out comes nine large digits in different colors that then float around the screen.

The more you know about the Commodore 64, though, the more interesting it is. The machine’s graphics chip, the VIC II, is can only display eight hardware sprites at once. Then the sprites cluster together on the same scanline, meaning ordinary multiplexing can’t be happening. Then they drift up into the upper boarder. It demonstrates complete mastery of the hardware, doing a lot of things that simply shouldn’t be possible.

Iftkryo has produced a video giving away his secrets, closely explaining how the demo does its magic (22m):

It’s a good exploration of a number of weird C64 graphics tricks: sprite multiplexing of course, opening up the side and top boarders, and making productive use of mysterious graphics that appear off the top of the screen if the boarder is gone. While little code is shown, it’s definitely on the more technical end of things we present here. I’d give it a four out of five on Drebnar’s Geekiness Scale. But if you like learning about obscure tech details of a forty-year-old computer? And who doesn’t? There it is!

A Video Game Font Collection

What do you know, I’ve made it almost a whole week without making a Youtube video the primary subject of a post! Josh Bycer’s post notwithstanding: not only did I not make the post, but the focus is a video he made himself!

The font for Atari Football. The popular “Press Start” font available in multiple places on the internet, and used in many classic arcade games from many companies, is derived from this one from Atari Inc.

Without further ado, today’s post is about a font collection made by thealmightyguru, and presented on a webpage here. Despite what the main page implies, the individual game pages do not seem to have their fonts for individual download. You’ll probably have to download the while collection, available here, for that. You won’t have to worry about long downloads though, for the whole archive is only 1.4 megabytes!

Here are some examples:

The Intellivision system font is very distinctive. It was used in many Intellivision games, because it was stored on a ROM chip in the console.
This font comes from arcade Golden Axe. It’s reminiscent of several Sega arcade games from that time.
This one’s from Exidy’s arcade game Circus. Before Atari’s font was copied by everyone, many arcade games used utilitarian fonts like this one.

One of Doom’s fonts. It was shown off on the creator’s Bluesky feed.

Thrilling Tales of Old Videogames: FF vs D&D

Thrilling Tales of Old Videogames is one of the better game-related blogs out there, and their new post on how freely the first Final Fantasy cribbed from Dungeons & Dragons, and how that’s affected later games that have had to reckon with the changing legal landscape, is pretty darn interesting.

One of the facts represented is that, while D&D has always borrowed heavily from myth and literature for its beasties, Hasbro considers certain specific monsters to be their property, because they were created out of whole cloth, or at least heavily-obfuscated cloth. Obfuscated enough cloth. They link to a post on the blog Prismatic Wasteland that lists them all out with commentary: Beholder, Gauth, Carrion Crawler, Tanar’ri, Baatezu, Displacer Beast, Githyanki, Githzerai, Mindflayer and its alternate name Illithid, Umber Hulk and Yuan-Ti. These are considered “product identity” monsters, and other products should not use them under penalty of lawsuit. “Tanar’ri” and “Baatezu” are hilarious as identity-monsters, because they were only named that so TSR could excise the words “devil” and “demon” from their game in deference to the 80s Satanic Panic.

I urge you to follow that link too, as it’s an informative read itself. I personally can add that a definition for a Beholder has been in the source code for Nethack since 3.2 (nethackwiki), but is set to never be generated in the game, possibly waiting for an age where its actualization would be less legally fraught. (I’ve included the game info for Beholder at the end of this post.)

So let’s RTS (“ReTurn from Subroutine“) and get back to today’s subject, the Thrilling Tales post. A lot of the monsters mentions got revisions in later Final Fantasy games, and even in remakes of FF1. Even in the NES version if Final Fantasy, the Beholder became the Evil Eye, which is a legally-distinct giant oculus-monster.

FF1J’s Beholder, compared to the Evil Eye from one of the English ports. While it should be recognized that the Evil Eye here has much greater color depth, since it came from a remake, I think the design is generally better. The Beholder’s wide toothy smile isn’t as becoming for an alien eye-creature. (Images are from [ugh] the Fandom Final Fantasy wiki.)

Rather than interrogate their whole post, I think you should just go read it yourself. Go, go! I’ll be here when you get back, just, tomorrow.

nethackwiki’s sidebar for the Beholder, including its source code reference

Entertaining Bits of the Arcade Manual of Wizard of Wor

Lots of arcade machines have boring manuals, full of schematics, operator settings and assembly instructions, and nothing else. The manual for Bally/Midway’s Wizard of Wor machine has some other information, including a fairly complete play description including inner details of how the monsters are generated and how levels get harder, and a listing of all the phrases the game’s voice synth uses during play.

Wizard of Wor

There was recently an upload of 2,000 arcade manuals to the Internet Archive (as reported by Jason Scott on his Bluesky account, although he’s also on Mastodon, twice apparently), and that’s where I found the manual for Wizard of Wor.

Some quotes (italics are mine):

“When you have reached dungeons eight and above, you have become a Worlord. Now you have the honor of testing your skill in the Worlord dungeons. These dungeons are much tougher, there are fewer walls and more open spaces. If even one shot misses, and travels the long distance down to the opposite wall, a monster wiii very likely come up and gobble you down. Finding and establishing yourself in solid strategic positions is very difficult. It is easy to have several worriors chomped up in a row. Sometimes the monsters will line up along one edge of the maze — a lovely parade. However, if just one monster starts approaching from the top, watch out!” (page 11)

“The Wizard of Wor loves to hear the patter of little feet running through his dungeons. So he created some lovely beasties, known as Worlings. Burwor is beautiful, bouncing blue. Six of them exist on each dungeon level. They always remain visible. This is because the Wizards favorite color is blue. As each Burwor is shot, a Garwor may come to take his place. Garwor is kind of overfed, and waddles a bit, but he has yellow scales that are just delicate. As Garwors are shot, Thorwors are teleported in to take their place. Thorwor is sleek and dangerous red.” (page 11)

“The Wizard of Wor: Even at a young age, the Wizard showed promise in the mystic arts. But it took many dangerous encounters and many years of research and study to sharpen his skills to his current high level. Over the centuries, the Wizard has retained his chaotic sense of humor, much to the chagrin of worriors entering his dungeons (see the list of phrases).” (page 12)

And some of the phrases spoken by the Wizard during the game, spoken by the synth:

  • “Hey! Insert Coin!”
  • “Another coin for my treasure chest.”
  • “Ah good! My pets were getting hungry. Ha ha ha ha!”
  • “You’re off to see the Wizard, the magical Wizard of Wor.”
  • “Remember, I’m the wizard, not you.”
  • “If you can’t beat the rest, then you’ll never get the best! Ha ha ha ha!” (The Wizard laughs a lot.)
  • “If you destroy my babies, l’ll pop you in the oven! На һа һа һа!”
  • “Wasn’t that lightning bolt delicious? Ha ha ha ha!”
  • “Hey! Your space boot’s untied! Ha ha ha ha!”
  • “The Wizard of Wor thanks you.” (aww)