Demo: Back to the PET

The Commodore 64 was not Commodore’s first home computer. It wasn’t even the VIC-20. Their first machines were the line of the PET, or “Personal Electronic Transactor,” as labored an acronym as any.

The PET was a decent machine, with integrated monochome monitor and a heavy metal case. Although it had no color, no sprites, only a basic speaker for sound and no synth, it had a number of things in common with the later C64, particularly the 6502 processor that lay at the core of half of the personal computers sold at the time.

There was something else, something fairly major, that the PET lacked: customizable graphics. No hi-res mode, and no programmable character sets. The graphics were encoded on a ROM that wasn’t even mapped to the CPU’s address space. The letter ‘A’ would forever look like a letter ‘A’. It couldn’t be changed to anything else, even a slightly different ‘A’. This greatly limited what PETs could display, and basically doomed it as a gaming computer.

Commodore tried to compensate for this feature by including “PETSCII,” a set of custom characters included in the upper 128 characters of its ROM intended for makeshift graphics. PETSCII would survive throughout the rest of the Commodore 8-bit line, even featuring on machines that had programmable graphics: the VIC-20, C64 and C128 all had it included too. (The Twitter account PETSCIIBOTS (now inactive) shows off its many graphical characters in making robots.)

On the later machines PETSCII graphic characters were a fun nicety. On the PET, they were all you had, all you would ever have. This is exactly the kind of limitation that demo authors love circumventing where they can, and taking advantage of when they can’t. Hence: Back To The PET, a demo, complete somehow with chiptunes, that runs on Commodore’s ancient machine:

Every character cell of every frame of this video is one of the PET’s 256 ROM-based characters. It had no hardware scrolling, so effects are all faked or done 8 characters at a time. Yet it’s still pretty slick! The PET had quite a better selection of graphics characters than even IBM’s code page 437, including lines of single pixel differences in thickness and horizontal and vertical position. Image what the ASCII artists of the 90s could have done with this selection! Luxurious!

Reviving ZZT

ZZT was (is) an ancient shareware DOS game that runs in character mode, created and published by Tim Sweeney. Originally published by Potomac Computer Systems, a company ran out of the basement of Sweeney’s house, when it expanded its software selection it was renamed to Epic MegaGames, and later Epic Games, under which title it remains today, still headed by Tim Sweeney after all these years. He would go on to create the Unreal Engine, upon which the modern fortunes of the company were founded.

Images from the Worlds of ZZT bot

But back to ZZT, which is still a nifty piece of software, and a lot of fun to mess around with. It included an editor that allowed users to create their own scenarios, which spawned a modding community that survives to this day. Noted game designer and educator anna anthropy wrote a book about ZZT for Boss Fight and she continues to carry its banner today. ZZT scenarios both old and new can be found on the site Museum of ZZT, and every three hours Mastodon bot Worlds of ZZT publishes screenshots from random ZZT adventures.

Because it’s a character-mode game, ZZT modules are often confused with classic roguelike computer games. ZZT is not necessarily a roguelike, but it may be possible for someone to write a classic-style roguelike game in ZZT.

But running a DOS game nowadays is not as easy as it used to be. It requires the use of either a vintage computer system running a compatible DOS, a virtual machine like VirtualBox or Docker, or some DOS emulator, such as DOSbox, a tool for emulating a working DOS system that can run on current OSes, or Zeta, a DOS emulator with just enough features to get ZZT working.

ZZT was written in Turbo Pascal, but its source code had been misplaced by Tim Sweeney and was considered lost, until very recently (the past few days), when a nearly-complete version of ZZT 3.0 was found. Most of it can be downloaded from The Almost of ZZT, on Github, which is that version minus some parts of the source that are considered to be under third-party copyright.

Since it is incomplete it is not useful for compiling a working game, and is presented for historical reasons more than anything. Fortunately, there already exists The Reconstruction of ZZT, a reverse-engineered (with Sweeney’s blessing) version from 2020 that compiles to identical binaries.

ZZT is a subject that deserves much more detail than I can give it in an introductory post like this. Maybe later….

A Video on Wario Land 4’s Sound Design

Did you ever play Wario Land 4 on the Gameboy Advance? It was the last “classic” Wario Land game before its team switched over to making WarioWare games. If you’re a gaming, or at least a Nintendo, enthusiast you probably know what WarioWare games sound like, that endearingly weird crushed and echoey sound, but you might be surprised to discover that Wario Land 4 sounds of a piece with the Wario Land titles! Here’s the intro, hear for yourself:

Here’s the original WarioWare’s intro to compare its sound to. It’s all the good stuff!

geno7 over on Youtube (who has a terrific home page, by the way!) did a 51-minute deep dive into WL4’s sound design that’s just the kind of obsessive attention to detail that our cadre of pixel art loonies appreciate! Have a gawk and a listen and see if you agree.

The Bizarre Music and Sound Design of Wario Land 4 (Youtube, 51 minutes)

Kenta Cho’s Paku Paku

Kenta Cho, also known as ABAgames on Twitter and the web, has been at this for a good long while now. He has an amazing way of distilling the essence of gameplay down to its absolute barest essentials. He’s especially known for bullet hell, but my favorite games from him are his many many gameplay experiments. This is one of them: Pac-Man boiled down to its very essence, with the whole maze being a single corridor. It’s Paku Paku:

The single control, any keypress, reverse the direction of travel of Pac-Man’s green cousin up there. The single ghost chases Paku single-mindedly, slowly getting faster. Paku can wrap around the screen at the edge, which causes Blinky to chase them directly. (They’re not that bright.) Eating the large blinking dot that I insist on calling an Energizer makes the ghost vulnerable for a few short seconds. If the ghost is eaten, they regenerate if their eyes made it off the screen. Clearing the whole board of dots instantly produces a new set.

You only get one life, but new games start rapidly. The nearly five minute video above contains dozens of plays. No one gets you over losing and into a new attempt like Kenta Cho does.

Think you can do better? You might! Give it a try!

Paku Paku (Github, browser-playable link)

How Do You Say “Bahamut?”

Drew Mackie’s Thrilling Tales of Old Videogames brings up the issue of frequent Final Fantasy summon and sometimes optional boss monster Bahamut’s pronouncation, and tells us its mythological source wasn’t pronounced ba-HA-mut, but instead, ba-ha-MOOT.

Bahamut is one of the oldest traditions in Final Fantasy, going all the way back to the first game, where much of the game’s bestiary came directly from the Dungeons & Dragons books. Yet Bahamut was not fightable in that game, they wouldn’t fall into their standard role of challenge encounter until the third Japanese game. Like many D&D creatures, and JRPG creatures too, Bahamut was a borrowing from a mythological source. They were one of the entities upon whose back the world is carried. Observe:

Which of these entities is “dragon king” Bahamut? The person is just an “earth-bearing angel.” The bull is Kuyuta. Bahamut, or “Bahamoot,” is the fish. What’s more, it’s thought that the name derives from Behemoth, from the book of Job, despite Behemoth not being a fish. But Final Fantasy already has a Behemoth….

None of this proves much of anything. RPG writers, both tabletop and videogame, have long just pulled anything out of mythology, and sometimes more recent literature, that they wanted and just used it, regardless of author, age or culture. Gary Gygax had a Monster Manual to fill, he didn’t have any internet to help him fill it, but lots of other people enthusiastically used his bastardization, to help them compile their own bastardizations. That’s what most game lore is when you get right down to it: it’s bastardizations all the way down.

This is just a fraction of the edifying enfo, er info, in the article, a link to which awaits you here:

Bahamut and Behemoth: One And The Same? (Thrilling Tales of Old Videogames)

Sundry Sunday: Eario, Janitor of the Mushroom Kingdom

From the files of the old webcomic Brawl in the Family, which has been gone for years now but is still fondly remembered in some circles, and who’s website is still on the web for as long as Keenspot’s servers survive, is this voiced version of the story of Eario. You know, Wario is Mario with the M upside down, so Eario is Mario with the M… sideways. Kind of.

This working-class version feels like it’s a bit more in keeping with Mario’s blue-collar roots. He wasn’t always the hero of the Mushroom people, he was just a carpenter working on a construction site one day when a gorilla went crazy, grabbed a lady, and climbed a tall building. Mario’s had many adventures since then, and a lot of job changes. Eario is the Mario who wasn’t so lucky.

WikiData on Video Games

From Wikidata.

Picture your life and interests. Let’s pick out as part of it your interest in, knowledge of, and enthusiasm for video games. In the future, after you’re gone, what will be left of it? What will be remembered of what you know and have seen? Where will all of that go? Have you considered that, the way the internet is, a lot of that will simply disappear, tracelessly?

Websites die, and when they do, they leave very little in their wake. The early days of the web was filled with an overabundance of fansites and web shrines, and most of those are gone. The demise of Geocities, the decay of free web hosts in general, and the loss of online service web communities and hosts like Compuserve Ourworld, has resulted in the large-scale deletion of huge swaths of content, and the loss of web directories as a thing, combined with Google Search’s slide into senility, means what survives is a lot harder to find.

This is a discursive lead-in to the work at WikiData in cataloging games and game sites, which is summarized for 2022 here. Information on their efforts was written up here.

I wish I could say more, their work seems very important, but I’m just starting to learn about it myself! Apparently there is a means of querying their information to answer questions, like which game series has the most games? More on this in the future.

Godot 4.0

Godot reaches version 4.0! It’s is the free and open-source multiplatform game development system and engine with the most mojo, and it’s only a 50MB download! Here’s the official list of new features, but here’s some highlights:

  • New rendering options for 2D and 3D, including Vulkan
  • Improved shadows
  • Automatic occlusion culling
  • New 2D level editing tools
  • Many shader improvements
  • Scripting improvements for both GDScript and C#, plus support for extensions written in C, C++ and Rust
  • The return of Godot Physics
  • Support for multiple windows
  • An improved UI editor
  • Improvements to animation
  • Editor support for Android and browsers
  • and exports for several new platforms, including Raspberry Pi and ARM-based Chromebooks.

7DRL 2023 Begins Tomorrow!

A quick note today, the 7-Day RogueLike challenges begins tomorrow! Try to make a roguelike game in seven days! This will be its nineteenth year, and its sixth on itch.io! Slashie, Darren Gray and Jeff Lait are running it again this year!

Consider joining it to make a game, or consider playing this year’s entries, or those of previous years! Last year there were 65 official entries. Regularly, a number of really interesting games are entered, but all manner of entries are accepted and are playable each year, from nearly professional to barely hacked together, and ranging from full classic style roguelikes to only slightly inspired by the general idea of procedural generation.

The 7 Day Roguelike Challenge

Pizza Tower!

It must seem like we have the indie gaming spaces hooked up into our very veins here, but truthfully it’s very easy for games with even a lot of buzz to slip through our greedy fingers. So it is with Pizza Tower (Steam), an extremely cartoony and entertaining platformer heavily influenced by Wario Land 4 (3h,22m). All kinds of people have been praising it, and saying that it does basically nothing wrong.

Here’s Polygon raving about it:

Take a good look at it. The loose animation is actually perfect, which it should be because the game took five years to make. The pixel art has way too many frames. The music jams so much. All of its jokes are funny. It even parodies Five Nights at Freddy’s throughout one level with jumpscares.

Its hero, the amusingly-named Peppino Spaghetti, isn’t Wario, but has his own vibe. He looks like he might have an aneurysm at any second. But like Wario he’s mostly invincible when he’s not fighting a boss. In normal levels enemies may slow him down, or cause him to lose points, or even give him temporary abilities, but they can’t stop him. He has a wide variety of moves to get him through the game world that you’ll have to completely master by the end.

The biggest point in common with Wario Land 4 is the escape sequences. Each of the game’s levels has a place in it where you have to destroy a pillar, which starts a timer and forces you to go back through the level you just passed with some minor differences. You can fail here if you don’t make it out in time. In order to get the highest rank on a stage, the vaunted “P” rating, you have to escape perfectly, without breaking your combo, and find all the treasures… and also escape twice within the time limit, by going through a 2nd Lap portal at the exit that takes you back to the beginning!

It’s already gotten a lot of people talking about it in terms like Game of the Year, and I’m sure it’ll be a prominent run at SGDQ 2023! Have a trailer:

Pizza Tower (Steam, $19.99)

Behind the Code Examines The NES Punch-Out!! Boxer Engine

Here’s another of those deep-dive NES internal videos from Behind the Code, possibly the most complex one they’ve done to date. Most game engines, when you examine their basic logic, are basically physics simulations, with some AI included to determine how actors behave.

Not so with the Punch-Out!! games. They are essentially entirely different kinds of games from that. You have certain things you can do moment to moment, and opposing boxers do too. Each of those opponents basically runs a big script, made out of byte code, that determines their behavior throughout each round of each fight. I am struck both by the simplicity (no need to simulate gravity) and the complexity (boxers take all kinds of things into account) of the system.

One of the interesting things shown is that the engine can affect more than just the boxers, but can also subtly affect the crowd, which is how the previously-revealed fact that a specific camera person in the crowd uses his flash right at the moment the player must counter Bald Bull’s charge move. It turns out that this isn’t the only instance of this happening in the game!

You don’t need to know 6502 assembly code to get what the narrator is talking about, but a lot of code is shown, so those of you who understand it may get a bit more out of it. Here are a few basics to help you follow along.

The 6502 has only three registers (bits of memory internal to the CPU that can be accessed quickly), the Accumulator (sometimes called just A), the X register, and the Y register. Each is only one byte long. The Accumulator is by far the most flexible, but all three are general-purpose registers. The most common instructions are Loads (LDA, LDX, LDY), Stores (STA, STX, STY), Transfers between registers (TAX, TAY), Incrementing and Decrementing (INX, INY, DEX, DEY), Adding (ADC), Subtracting (SBC), Comparing (CMP), Branches (some of them, Branch Not-Equal to Zero: BNE, Branch Equal to Zero: BEQ, Branch of Carry Set: BCS, Branch on Carry Clear: BCC), Jump (JMP), Jump to Subroutine (JSR), and Return from Subroutine (RTS). While some instructions are just one byte long, the longest any 6502 instruction can be is three bytes, and the opcode (the command itself) is always just one.

(I wrote all of that from memory. I figured, I have all of this in my head from my coding youth, I might as well use some of it.)

The 6502 can only address 64K of memory, so often systems will use bank switching to connect various memories to it within that space. The great majority of NES/Famicom games had to do this. Punch-Out!! was unique on the NES in that it was the only game to use Nintendo’s MMC2 chip. (I wonder if the chip was designed ahead of time, and they made this game as an excuse to use it?) Punch-Out!! uses MMC2 to bank in each boxer’s large data script as needed.

Behind The Code: How Do Boxers Work in Mike Tyson’s Punch-Out!!? (Youtube, 20 minutes)