Oldweb: Remembering ionpool.net

The World Wide Web is now over thirty years old. In that time, more content has vanished from it than remains now, but some of it can still be dredged up from the shadowy archives of the Wayback Machine. This is the latest chapter in our never-ending search to find the cool gaming stuff that time forgot….

It used to be that the internet was full of thousands of tiny sites. Many of them might only have gotten a few visits a year, if that, but they were there, quietly and earnestly providing a resource for people who might be looking for it.

One of these sites was ionpool.net, which used to host a listing of classic gaming information. Here it is from its last archived version on the Wayback Machine from December 29, 2020. There’s a lot of links there, and the nature of the Wayback is, unless I check every one of those links, I can’t be sure if any of them will work. The few I’ve tried do, which is something at least.

ionpool.net in 2013, this is just the beginning of the list

There’s a lot of interesting documents there, presented in the classic List Of Tiny Links format. There’s far more there than I can summarize in a simple throwaway daily blog post like this one, but I particular point out to KLAX In Three Lessons, a series of Usenet posts written by Lyle Rains of Atari Games himself. In fact, those posts are so interesting that I might call them out in a later post….

Back to ionpool.net. The thing that saddens me is that the site still exists, but instead of providing the information that it helpfully offered back in 2013, now it’s just a black page with a graphic reading “END OF LINE.” This:

I can understand that even the slight resources necessary to preserve a website can, over time, become onerous. But I’d think it would be an equivalent cost to host an image like that, instead of leaving the old content up indefinitely. It was largely text files anyway.

Ah well. There is still the Wayback Machine, after all, slow and incomplete as it might be and difficult to sort through like it is. I can’t help but think that we should have more alternatives, though. The Internet Archive is not forever either.

A Guided Tour of the NES

This tab has been open on my browser for literally months, so I’m finally excising it from the bar….

A while back the site HackADay did a teardown of the NES, going through how to take it apart and reassemble it, and going through some of the elements of its assembly. It doesn’t go into a lot of detail, but that lets it be fairly short, at only nine minutes.

NES Hardware Explained (HackADay post, Youtube video)

An Ad From Compute Magazine #001

This is an ad, on the first page of the first issue of Compute Magazine, for “the pet program” from “softside software,” names all in lowercase. I have no idea if any copies of these programs remains in existence in our universe, but two places to look would be zimmers.net’s FTP archive and the Silicon PET Archive, and even in this era of the internet there are a fair number of PET software archives remaining.

Softside was far from the only company to put out its hopeful shingle through the pages of early computer magazines. At the time, magazine publishing worked with a lead time of several months. It is possible that Softside Software had gone under even by the time this ad saw print, but then again maybe not. A forum thread on AtariAge mentions several BASIC games sold by a “SoftSide,” apparently an Atari 8-bit magazine-on-disk, but they were based in New Hampshire, and the Softside of the ad was in New York.

Notes on the programs proffered:

  1. Graphics Pac 2: I’m not sure what they mean, as the reference I’ve found claims the PET didn’t have a bitmapped display, but there were several models, and further add-on cards that added bitmapped displays, an 80-column mode, and even (gasp) color. A simple “Microsette” itself would not be enough. We are near the end of the PET’s reign as Commdore’s core product though.
  2. Assembler 2001: It is easy to laugh this off nowadays when assemblers are mostly free software (and thank frog for that), but this was before that, and before the internet. $16 is a great price for an assembler from that time.
  3. Bike. Apparently it was a Hammurabi/Lemonade Stand style game, where you made business decisions through simple menus and entering figures. Maybe someday someone will write such a game about running Commodore. You might scoff at the warning that “Bike is dangerously addictive,” but standards were lower then. It was 1979; Wizardry wouldn’t be published until 1981. “Worth a million in fun, we’ll offer Bike at $9.95.” I admire their chutzpah.
  4. Pinball. “Dynamic usage of the PET’s graphics features” would have meant using its hardcoded, unchangable ROM graphics character set, with no sprites. “With sound!” That would mean its simple piezoelectric speaker. Don’t expect Raul Julia’s voice, or even Gorgar’s, to talk to you from the machine.
  5. Super Doodle. Certainly of no relation to Omni Software’s popular Commodore paint program. Super Doodle lets you use any number of colors so long as they’re black or green, and a resolution of 40×25 characters. “Why waste any more paper.” Well probably because loading your notes off of tape would take too long.
  6. Driving Ace. Offers two games for $9.95. The description doesn’t give a good sense of what they were like, but there are essentially only three kinds of racing game: scrolling in one direction (Monaco GP style), one screen or scrolling all around (Sprint style), and 3D (Pole Position through to Ridge Racer to F-Zero). I presume one of these is like Sprint and the other is like Monaco GP; I don’t think the PET was capable of even a slight approximation of 3D, but then, Pole Position’s hardware shouldn’t have been capable of what it could do either.

The ad is from Compute Magazine, most often stylized as COMPUTE! with an exclamation point, grew out of The PET Gazette in 1979. That former publication centered around the computing devices from Commodore International’s subsidiary, Commodore Business Machines. CBM had been around for over two decades up to that point as a maker of typewriters, adding machines and calculators, but in a maverick move by its co-founder and president Jack Tramiel, they bought MOS Technologies, which had just startled the nascent computing world by creating an ultra low cost microprocessor, the 6502. Tramiel had learned from a bit of a bastard move by Texas Instruments, who used their ownership of much of their supply chain to release a line of calculators that sold for less than Commodore’s production costs. Now, Tramiel owned the company that produced the chip that would soon launch the personal computing revolution, and could make other chips too, and Commodore was set to soon pull off Texas Instruments’ trick on the home computer industry with the VIC-20 and Commodore 64.

But until then they made other computers. They made the KIM-1 “single board computer,” and the PET 2001 and other machines with the PET branding. The PET Gazette’s audience was originally those machines, but burgeoning success convinced them to publish a more generalized 6502-focused magazine, and that magazine was Compute.

I have more to come on Compute, which in many ways was the archetypal type-in program magazine. It was far from the only one; other magazines offering type-in software at the time, names now even more obscure than Compute’s, were Creative Computing, Family Computing, and Commodore’s own publications Commodore Magazine and Power Play. Compute would for a while languish somewhat in the shadow of its own sister publication, borrowing part of its name from its predecessor, Compute’s Gazette, which focused on Commodore’s computers, the VIC-20, the Commodore 64, and later the Commodore 128.

The PET Gazette was founded by Small System Services Inc., and was published out of a shop, the Corner Computer Store, in Greensboro, North Carolina. Presumably that changed as the subscription rolls increased. Eventually Compute would be sold to ABC Publishing, a subsidiary of the broadcast network, and it would continue happily for several years. When its fortunes began to wane it was sold, first to Penthouse Publishing (really!), where its logo was redone to resemble that of its own publication Omni, then later to Ziff-Davis, who only wanted its subscriber list anyway; I don’t think they ever published an issue. As it became clearer that the future would be MS-DOS and Mac, its focus shifted, but they kept up their small systems focus for surprisingly long. I don’t think the Penthouse era provided any coverage that wasn’t DOS, Windows or Mac, but it would take time to check. Corrections later, if necessary.

Mario Paint Data Overflow Error

There is a subtle flaw in SNES art creation tool Mario Paint. It has 32K of Save RAM, which is not technically enough to save an entire project, normal and animation canvases included. The program uses data compression to get everything to fit, and the compression is good enough that most of the time everything can be squeezed in, but such is the nature of data compression that it is not guaranteed to work on all possible data.

What happens when Mario Paint can’t fit everything into its save file? This:

A comment on the video gives purpose to the numbers the robot displays as it counts down. 100-25 is compressing the image; 25-12 is erasing the save RAM, and 12-0 is copying the data into save RAM.

On Super Mario World’s Score Display

Awesome Mario trivia blog Supper Mario Broth noted on Mastodon that Super Mario World is extremely inefficient in displaying Mario’s score.

There is more information on SWMspeedruns.com, but in brief, SMW stores the player’s score as a 24-bit value as hexadecimal digits, and converts that value to decimal when it’s time to display it. There is no good way to do that that doesn’t involve figuring out the entire arithmetic, but Super Mario World does it particularly slowly: it starts with a copy of the score, then sees if it’s over 1,000,000. If it is, it increases the millions digit of the displayed score by 1, subtracts a million from the work value, then repeats. When it runs out of millions it repeats with the hundred-thousands, and repeats until it finishes with the tens. At least it doesn’t try it with the 1s, seeing as how nothing in the game awards single points!

In a worse-case scenario, with a score of 9,999,990, the code goes through this whole process every frame, consuming up to 8% of the time available for game logic.

What could the game have done to accomplish this better? It could have found out how many of each digit there was once instead of looping and incrementing. It could only figure out the score when the value changes. Or it could save the value as the digits themselves in decimal, just increment them by the right values when its needed, and then copy that figure to the screen. That’s largely what 8-bit games would do.

Even worse, if Luigi is the active character, the game does this twice: it figures out and prints Mario’s score, then it does it again for Luigi’s score, placing it onscreen in the same place.

While printing the score is just one thing the game does each frame, the effect is great enough that complex scores can lag the game, enough that speedrunners take the score into account to avoid it.

This adds to the evidence that Super Mario World development was rushed. It’s already known that a lot of the code in SMW is buggy, allowing for some truly heroic exploits like programming a text editor in SRAM purely by manipulating objects in an early level.

The “No Fire” Trick in Galaga

Arcade Galaga has an interesting bug that’s been known of for a long time, that can be taken advantage of to cause the enemies to stop firing. The inner workings of the bug are explained on its page on the website Computer Archeology, but here it is in brief: on the first level, if you leave the bugs at the far left or right sides of the formation alive and wait long enough, 10 to 15 minutes, just surviving their attacks, then eventually the enemies will stop firing all together, and will never fire again for the rest of the game.

Why does this happen? Galaga reserves eight hardware sprites for the shots of the enemy bugs. Galaga’s graphics hardware has no way to disable the displaying of a sprite, so if something isn’t supposed to be visible it’s kept off screen, at horizontal coordinate zero. A shot sprite at that coordinate is never updated, and never moves. This is in addition to the game’s internal records of which shots are in use. When a bug wants to fire a shot, the game looks at which shots are available, and if one isn’t in use, it puts it at the proper place, and sets its velocity (X and Y deltas). From then until it leaves the screen, it’ll be updated every frame. When it is detected as having gone off-screen, it’ll be marked as out of play, and its X coordinate will be set to 0. Shots at X=0 are never updated.

The problem is, it’s possible for bugs to fire shots while they are at X position 0. This happens most commonly when bugs at the far left and right extremes of the board attack. The shot is marked as in-use, but it’ll never be updated, and so it’ll never be cleaned up and set back to be available for firing. When all eight possible shots are in this limbo, the bugs can’t fire any more. The machine resets the shots at the end of a game, so the problem won’t affect subsequent plays.

Ben Golden Diamond performed the trick in a Youtube video, and he manages to get it to happen in around seven minutes. He doesn’t explain the precise criteria for doing the trick, but his description will still work, it just has unnecessary steps. It will work on any level, but it’s easiest to do on the first. In the video, sometimes the bugs fire wraparound shots from off-screen. That’s a good indication that the bugs are sometimes firing from the 0 coordinate.

Keep in mind, performing the trick on purpose will disqualify a score for world records. The scoreboard on a local Galaga machine probably won’t care, though.

TrueType Unicode versions of the Amiga System Fonts

Strictly speaking they’re not from a game, but the Amiga was regarded as a gaming computer, so you may be interested in these modern-OS compatible versions of the Amiga system font Topaz, with extra characters done in the style of the originals! They’re made by “Screwtapello” on Mastodon!

Amiga Topaz Unicode Nerd Font (gitlab.com)

More From Displaced Gamers on Dr. Jekyll and Mr Hyde

We presented Displaced Gamers’/Behind the Code’s video on the jankiness of kusoge disgrace Dr. Jekyll and Mr. Hyde back on Saturday. They did another video on that game, that delves into why the game’s frame rate is so inconsistent. In summary, its engine throttles its framerate in a terrible way, using long delay loops. It’s a pretty awful idea! It’s 19 1/2 minutes long. The video claims it’s even geekier than their first video on the game, but I think it’s actually slightly less technical, at least it doesn’t fill the screen with as much 6502 assembly code.

Another fact about J&H: the Japanese version had two full levels that were cut from the U.S. version, which replaced them with replays of other levels. It made a bad game even worse!

Now, because of Behind The Code, you know more about the Dr. Jekyll and Mr. Hyde game than many much better NES titles. Congratulations!

Behind the Code: Dr Jekyll and Mr. Hyde

For some reason there’s been a lot of Youtube videos lately that fit our eclectic purview, so here’s a code-heavy dive into infamous NES disasterpiece Dr. Jekyll and Mr. Hyde.

It’s 19 minutes long, and is even geekier than is usual for us, going into a disassembly of the game’s machine code in its quest to make the game marginally less awful.

As long as we’re on the topic, here’s Jeremy Parish’s NES Works episode on Dr. J & Hyde, which is also 19 minutes, and also covers the somewhat better (but not hugely so) game Amagon:

While we’re on the subject, did you know that Jekyll & Hyde has a secret ending? Both endings are shown here (4 minutes):

The “bad” ending is the normal one, and shorter, but is arguably a happier conclusion to the story. To get it, all you have to do is get to the end of Stage 6 with Jekyll. That’s all.

To get the other ending, get to Stage 6 with Jekyll, then turn into Hyde and get to the end of his version of the stage. Usually, if Hyde gets as far into his level as Jekyll has gotten into his, he’s struck by lightning and dies. But in this level he’ll be allowed to reach the end of his version of the level for some reason, where there’s a boss! Beat it, and when you return to Jekyll’s world the enemies will be gone, and he’ll be free to finish the level without harassment. However, ending events will be different….

Mega Man’s Score System

Looks like we’re on another Youtube binge, ayup ayup. This time it’s another hopeful video constructor asking us to consider the oddity of the score system in the original Mega Man (a.k.a. Rockman).

When you post as many Youtube videos as I do, it’s easy to form opinions about their style. That of “TheRetroDude,” as he styles himself, is interesting, it’s still hyper-edited in the way that so many Youtubers loathsomely adopt, but it’s not nearly as distracting as those. He keeps the volume down, as well as the number of swoopy objects tearing around the screen like a toddler newly introduced to Toblerone.

He has good points about how extraneous the game’s scoring system is too, although his misgivings could be laid against many other games. In Super Mario Bros, score is mostly a spacer before toppled turtles start giving extra lives. I think that score isn’t a bad addition to a game as long as it’s implemented thoughtfully, yet for too long it hasn’t been. Even in the NES days it was included to give players a short term goal to aim for, when they didn’t really need it.

What would a good scoring system look like, one that rewarded skill? Well–

  • Losing a life would reset score to that at the last passed checkpoint, eliminating point pressing from lives.
  • Extra lives at game end would be worth a bonus each.
  • Game timers are worth a small, yet substantial, award at level end, to prioritize fast play over slow.
  • Awards should be given for score, most typically extra lives, but others are possible too.
  • Replaying levels, and other means of “minting points,” earning arbitrary scores, should be ruthlessly eliminated. If the player can replay levels indefinitely then think about if your game really needs a score, and if it does, don’t allow players to earn more points from replaying them without costing them the points from that last pass.

Two games that come to mind that do scores well are:

  • ZANAC on the NES, being a scrolling shooter without checkpointing score is generally fair, although it is possible to warp backwards does break the no-replay rule, and
  • Star Fox 64, which only adds a level’s score to the player’s total at its end. SF64 is a game obviously designed around score attacks.

Where was I? Oh! Here is that video about Mega Man’s scoring system.

Mega Man 1’s Really Weird Score System (Youtube, 9 minutes)

Pac-Man in Three Patterns

PacStrats on Youtube has a video that gives three patterns that will take a casual player all the way to the kill screen at level 256.

I say casual because this doesn’t attempt to produce a “perfect” game, of 3,333,360 points. This is because it doesn’t attempt to eat all four ghosts on every Energizer while that is possible. It actually ignores the ghosts when they’re vulnerable. There are patterns for that on PacStrats too, but you’re not going to be able to do it by memorizing just three patterns. You can really push your personal limits, and that of your free time, trying to get better at video games, and most of us have a point where we have to say that’s enough, and then go and read a book/buy groceries/have sex/something else. The three patterns in the video below are a nice middle ground.

It isn’t easy to devise a Pac-Man patterns, and it’s much harder to come up with a small number of patterns that cover all the levels. Patterns work because the movement of the ghosts is completely deterministic, depending on how Pac-Man moves. If you can move Pac-Man with frame-perfect accuracy, then the ghosts will oblige you by always responding in the same ways. The frame-perfect requirement is eased up a lot by the nature of Pac-Man’s motion. So long as you don’t reverse directions or delay, Pac-Man can only change direction at intersections. So long as you have the joystick, or whatever ludicrous controller setup you’re using, pressed in the direction you want to go next three frames ahead of the turn, your gluttinous circle’s progress will be on track for that pattern.

So, if you try to perform a pattern and it doesn’t work, what went wrong? Most commonly it’s because you hesitated at some point, failing to make a turn at least three frames in advance. Sometimes that’ll be okay, but two of the ghosts, Pink (Speedy/Pinky) and Blue (Bashful/Inky) use the direction that Pac-Man is facing in their AI calculations, and that can change much more rapidly compared to his location in the maze. Even being a single frame off in your timing can produce a situation where Pac-Man will be facing a direction that will cause them to take a different path at a choice. Also, some of the motion of the ghosts is determined by the amount of time that’s elapsed in the current level, and if Pac-Man’s in a subtly wrong position then it can be disastrous later on.

The periods over which the patterns are good are the first four levels (Cherry to second Orange), levels 5 through 20 (first Apple through to 8th Key) and from 21 onward (9th Key to the kill screen). The actions of the ghosts are not the same throughout the run of each pattern. The second pattern, in particular, works over so many levels mostly because its creator, through trial and error, happened upon a pattern that’s good for so much of the game. Because the travels of the ghosts will be different on different levels, it’s important not to get spooked because they are moving differently than they did on previous levels. So long as you move Pac-Man through the patterns assuredly, without delay, and at least three frames in advance, then he’ll clear the boards in succession for as long as you care to keep going, until level 256, where Pac-Man’s All-You-Can-Eat buffet closes its doors.

Unfortunately, PacStrats has made their pattern video non-embedable, so if you want to see these patterns in action you’ll have to click through to the video’s Youtube page.

Beat Pac-Man Using 3 Simple Patterns (Youtube, 20 minutes)

Sundry Sunday: From AGDQ, A Dog Replaces R.O.B. in Gyromite

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

This week’s fun video isn’t decades old, in fact it’s from just a few days ago, from AGDQ.

The NES title Gyromite, a.k.a. Robot Gyro, is a very interesting game from a design standpoint, possibly more interesting than it is to actually play (although I think its music is very catchy). It’s never been rereleased by Nintendo, for the probable reason that it relies on the accessory R.O.B. to play.

R.O.B: It’s not just that funky Smash Bros. character! (Image from Wikipedia, taken by Evan-Amos.)

R.O.B. was a motorized accessory that activated servos in its arms depending on light signals sent to it from the screen. No cords went from R.O.B. to the NES. It used photoreceptors in its “eyes” to detect the screen signals, which were ultimately caused by player input on the controller. A fairly roundabout means of control, honestly.

Only two official R.O.B. games were made, and Gyromite (Going by its Japanese name “Robot Gyro” according to the title screen) used the “gyro” accessory for play. A platform is placed in front of R.O.B., on which you place the controller for Player 2.

On the controller is a device that spins the “gyros,” colored weighted tops. By manipulating the arms with action on Player 1’s controller, making them swing around and opening and closing the claws at the right time, you can cause R.O.B. to lift the spinning gyros from their platform, then set them down on the NES controller’s buttons. In the game, this caused colored pillars to rise or fall according to the control signals.

R.O.B. with gyro setup. Image from the blog Nerdly Pleasures.

While manipulating all of this, you also have to watch out for the action of the game itself. Gyromite is a simple platformer, but one without a jump button. The difficulty comes from having to essentially play two games at once, the platforming on screen and manipulating R.O.B. to position pillars in the right places in space and time.

R.O.B.’s motions are not simple to command either. It takes time for the arms to pivot between their destinations, time that must be accounted for in the on-screen action, and while the tops spin for quite a while they will eventually have to be collected and set back on their pedestals so they can be spun back up to full speed, or else they’ll topple over on the button. This doesn’t produce a failure state in the game. It’s just left to you to pick the top up yourself and put it back on its stand to be spun again. R.O.B. isn’t capable of such feats of dexterity.

There’s a lot more to say about R.O.B., and how it was mostly distributed as part of the Nintendo Entertainment System’s “Deluxe Set” in the U.S., the more expensive version that didn’t come with Super Mario Bros. Instead of that, let’s talk about how, due to the fact that R.O.B. is just a fancy-shmancy way to press controller buttons, that you can replace it entirely with some other mechanism, or indeed, even animal.

That’s what happened Wednesday at AGDQ, where Peanut Butter the Dog, with coaching from JSR_, left R.O.B. gathering dust in the closet as they played through Gyromite Game B.

They didn’t make it all the way without running out of lives, but they picked back up and kept going. And that doesn’t detract at all from Peanut Butter’s skills, or amazing doggy focus. They are intent on reading those hand signals and getting those tasty treats. So while they didn’t earn a world record, for “Dog playing Gyromite Game B,” their accomplishment is of definite note.

There are around four minutes of introductions at the start of the video, so if you want to jump right in to the run, begin here.

Gyromite by Peanut Butter the Dog & JSR_ in 26:24 – Awesome Games Done Quick 2024 (Youtube, 33 minutes)