Month: January 2025

Mega Man 1&2 for Game Boy

A couple of years back, Marc Robledo released a colorization patch for Mega Man 5 for Game Boy. Since then he's released similar hacks for 3 and 4, and together with SpecialAgentApe's hacks of the first two games, that means all 5 are now available in color:

I figured now would be a good time to play back through the series. I feel like these games get a bad rap (except for 5, which everybody agrees is the good one) and I remember them not being nearly as bad as their reputation. I was curious to see if I still felt the same way or if the critics were right.

So I replayed the first two and it's a little of both — their shortcomings are more obvious to me than they were when I was playing them on an old DMG, but on the other hand I think they're above average for Game Boy platformers of their vintage. The first game is the better of the two, but the second has more interesting ideas that would pay off in later sequels (and in at least one case eventually make it into the console games).


Mega Man World GBC Edition

First, the bad: the game is only six levels, and about half of them are boring. There's not a lot of variety to the enemies, either; hope you like Suzy, because you're going to be seeing a fuck of a lot of her.

But. It feels like a Mega Man game.

I don't know if I'm overrating basic competence or if the critics are underrating it, but this game manages to do a lot of little things right: it's got full-size NES sprites but the smaller screen doesn't feel cramped. The rooms sacrifice a substantial amount of vertical space but still feel like there's enough room to move, and when enemies scroll onscreen horizontally you always have time to react to their appearance. The physics and hit detection all feel right. It may sound like I'm damning the game with faint praise, but it's pretty striking how many Game Boy platformers, especially Game Boy adaptations of console platformers, get these very basic things wrong. (Hell, even Super Mario Land 2, one of the best games on the system, has physics that feel a little off for a Mario game.)

The music is great; it's mostly remixes of the original tunes from the NES games, but they're reproduced well on the Game Boy sound chip.

The sound effects don't fare as well; everything's weirdly high-pitched. I know the Game Boy has a different sound chip than the NES and it wouldn't be possible to reproduce the sounds exactly, but it's certainly possible to do it better than this — and we know that for a fact because 3, 4, and 5 do.

People frequently describe these games as being made up of levels from the NES games, but that's really not accurate — sure, you've got Cut Man, Elec Man, Ice Man, and Fire Man, and their stages look roughly similar to the NES versions, but they're not the same levels. There are definitely sections that feel like they're copied from the first NES game and reworked into a more compact form, but there's also stuff from later games, or stuff that's entirely new. It doesn't all work — like I said, about half the stages are downright boring — but it's not bad.

The final stage is the best; it's longer and it's tricky (I admit to using save states liberally) but it's tricky in a way that's consistent with the rules of other Mega Man games. Yes, there are times you jump down a pit and there are spikes at the bottom, but if you've played a Mega Man game before you know that trick and you have a pretty good idea where they're going to be and how to avoid them. There are disappearing blocks with tricky timing where you have to jump at exactly the right split-second or you'll die, but the game lets you watch the pattern before you start. Decisions like that show a level of polish that I don't think these games usually get credit for.

The structure of the game is interesting even if it doesn't entirely work. It includes four Robot Masters from the original Mega Man on NES (Cut Man, Elec Man, Ice Man, and Fire Man) and then, when you get to the teleporters in Dr. Wily's castle, instead of re-fighting the same bosses from before as in the NES games, there are four from Mega Man 2 (Flash Man, Quick Man, Bubble Man, and Heat Man) and finally a new boss (Enker) who, like the other eight Robot Masters, gives you a weapon when you defeat him. The formula is a little raw here — getting 5 new weapons in a row right before moving on to the last level in the game doesn't exactly give you much chance to use them — but it's a promising start that gets greatly refined in the sequels.

Anyway, I think Mega Man World (or Dr. Wily's Revenge if you're nasty) is better than its reputation and if you're a Mega Man fan it's worth a look, particularly in this new color iteration. And if you don't want to play through it yourself, here's a YouTube video of somebody named NintendoComplete doing it:


Mega Man World 2 GBC Edition

This one's widely regarded as the worst of the series, and on replaying it I think that's probably about right. But it has a lot of interesting ideas that are developed later in better games.

Most notably, where the first game had teleporters leading to another set of Robot Masters, the second one has teleporters leading to an entire second set of stages. The third game would dispense with the teleporter gimmick and just give you a second level select screen; splitting up the eight Robot Masters into two sets of four would eventually make its way into the console games.

Another interesting idea that doesn't quite work: where the first game's soundtrack was largely made up of remixes of the tunes from the NES games, the second game's is largely original — each stage will take the first couple of bars of the NES version but then launch into an original tune from there. It's a neat idea; the biggest problem is that none of them are anywhere near as good as the originals.

In fact the entire soundtrack has this kind of grating, tinny sound to it. There's a hack by forple that improves it and pitches everything lower, and SecretAgentApe's colorization hack includes the audio mod as an option on the start screen. I think it sounds good; my one gripe is that the sound effects frequently sound clipped. YMMV; I played it on an Analogue Pocket and I don't hear the same problem in this video of Amy Rose Longplays playing it on an emulator:

Mega Man World 2 improves on the previous game in some significant ways, including much more enemy variety. But I feel like the whole is less than the sum of its parts. The stages are more diverse than in the previous game, and they manage to fit some of the more striking setpieces from the NES games in, like the giant wolf on Wood Man's stage and the giant cat on Top Man's. It doesn't feel as sparse or repetitive as the last game. But the stage design isn't as considered, either. It's too easy (I used save states on the final level but probably needn't have bothered; the last boss is easy to beat with your basic P-shooter and while he hits hard, I only had to use one energy tank out of my full count of four). And while the second round of stages should hypothetically mean a better balance of weapons to use, in practice the devs make some pretty dumb decisions on which Mega Man 2 weapons do or don't work on which Mega Man 3 enemies — why in the hell doesn't the Air Shooter work on the monkey guys in Hard Man's stage? Where the first game did what it could within some strict limitations, the second game feels like it has a lot more tools to work with but doesn't quite know what to do with them.


Anyway, that's the first two Mega Man games for Game Boy and, more specifically, the color hacks by SpecialAgentApe. I'm hoping to give Marc Robledo's color hacks for 3 and 4 a shot (and maybe replay his 5, which I played through on release but which has been revised since). If I have anything to say about them later, maybe I'll share here.

Crackling Audio on a DualSense Controller

I'm going to cut to the chase in case somebody finds this post searching for a solution to this problem: try a different USB cable.

Okay, so now that I've gotten the actual solution out of the way, a little bit of background on how I got there.

I use Arch Linux on the PC in my living room, which is my primary gaming device. A couple of years back I was having trouble with Bluetooth connectivity and I bought a couple of cheap 15' USB A-to-C cables on Amazon.

(By the way, I have a simple "try this first" recommendation for Bluetooth connectivity issues in Linux, too: rmmod btusb && modprobe btusb)

Up until this point those USB cables worked great. I've used them with an Xbox controller and various 8bitdo controllers and never had any issue.

Last month I picked up a DualSense controller, because I heard it's got some advanced features that certain first-party Sony games like Horizon Forbidden West and Ghost of Tsushima (and a few third-party games like Final Fantasy 7 Remake Intergrade) use.

So I fired up Horizon Forbidden West and instead of haptic feedback I got this godawful crackling audio out of my controller.

And I've never actually used a DualSense controller before, but it pretty clearly wasn't supposed to sound like that.

So, okay, it was the USB cable, and I've already told you it was the USB cable. But I didn't figure that out right away. As a Linux user, I have spent the past twenty years training myself to assume that any given issue I have with my computer is some weird Linux problem.

I did some reading. It seems that DualSense features are supported in Steam Play and work just fine on a Steam Deck.

But just because something works on the Deck doesn't mean it's going to work on my particular desktop Linux setup. As any PC gamer will tell you, there's a world of difference between a single hardware target and the countless variables of a general-purpose PC.

So I set to work, trying to figure out if it was a problem with Pipewire, or Proton, or my udev rules, or what.

It wouldn't be entirely accurate to say I spent weeks on it. It did take me weeks to figure it out, but it's not like I was working on it consistently. I have a job, a one-year-old, and not a whole hell of a lot of free time, and those times I did manage to spend some time troubleshooting the controller, after awhile I'd say "fuck it" and just play the damn game for awhile. (And if the audio crackling got to be too distracting, well, I could always just use a different controller. Or play a different game.)

But finally, scouring DuckDuckGo results for other posts by people who'd had similar problems, I found a Reddit post where somebody suggested trying a different USB cable.

And well, you know that fixed it because I already told you that back in the first sentence of this post.

I looked back at the Amazon listing for the USB cables I'd bought. The brand is iSeekerKit and the first thing I noticed is that it explicitly mentions they work with PS5 controllers. But on closer inspection I note that the listing specifically describes them as "Charger for PS5 Controller". It doesn't say anything about being a data cable for a PS5 controller. Pretty sneaky, iSeekerKit.

Anyway, I've ordered a new pack of 15' USB A-to-C cables, from a brand I've actually heard of (JSAUX). We'll see how they do.

I keep thinking of that new EU regulation requiring devices to standardize on USB-C for their charging connectors, and boy, they're gonna be mad when they find out a standardized connector isn't the same thing as a standardized cable.

Bill Boyd, COBOL Programmer

It wouldn't be quite right to say Grandpa didn't talk much. He talked plenty about the weather and college sports. But aside from those topics, he didn't talk much.

He'd occasionally talk about his time in the Air Force, or his work at SRP, the local electric company.

He only ever asked me about my work once. He knew I was a programmer, and he asked if people still use COBOL. I told him that it's kind of a niche language now but it's still used some places.

He retired from SRP in the mid-'80s; I picture him using a terminal connected to a mainframe. He was oldschool enough that he'd heard of FORTRAN but not C.

It was a short conversation but hey, I guess Grandpa was the first programmer in the family. How 'bout that.

Artie Facts: She Was a Good Citizen

In 2013, my wife and I adopted a puppy. At the shelter, her breed was listed as "pit bull terrier". We named her Artemis.

Around the same time, we started looking into adopting a child. We checked out various adoption agencies, listened to their spiel. You can probably picture about how it looked; group of 20 or 30 prospective parents sitting in a room while an agency rep gets up at the front and gives a presentation explaining who they are and how the process works.

At one of them, maybe the first one we went to, the lady giving the presentation got to the part about pets and said dog breeds didn't matter except for two: they wouldn't allow adoption by families with pit bulls or Rottweilers. She said something ignorant like "Those breeds aren't safe; we've tried before and no matter how they're raised and no matter how well-trained they are, they could lash out and attack without warning at any time."

My wife and I were stunned. We were still new to this; we didn't know whether we'd just given up our chances at adoption by choosing the wrong breed of puppy.

And for my part, I couldn't help noticing the irony of an adoption agency judging an adopted member of our family as unsafe based entirely on who her biological parents were.

(Incidentally, maybe a week after this, my nephew — two years old at the time — poked Artie right in the eye and she just let him do it and didn't react. Some vicious beast.)

My first reaction to the adoption agency judging my puppy was the same as my first reaction to a lot of things in life: "They can go fuck themselves." My wife, more diplomatic than I am, asked the lady after the presentation if there was anything we could do to change their mind. The lady said we could get a DNA test and if the dog was less than 50% pit bull that would be okay.

We also talked to the trainer we'd been seeing at the shelter and asked him if he had any suggestions for proving our dog was safe. He suggested getting her certified as a Canine Good Citizen.

We got the DNA test; it said she was 1/4 bull terrier, 1/4 cairn terrier, 1/8 boxer, the rest indeterminate. And we got the Good Citizen certificate. But in the end, we chose not to go with that agency anyway, or any agency; we opted for private adoption instead.

And when the social worker came to our house to evaluate us, we told her about the challenges we'd faced, including the adoption agency that didn't want to work with us because our dog was too dangerous.

The social worker looked down at her feet, where Artie had curled up and fallen asleep, and said "This dog?" and laughed. We passed the evaluation.

Close to a decade after we got Artie, we were finally able to adopt a baby. And when the baby became a toddler and pulled her tail and poked her eyes, she took it with quiet dignity.

Artie passed away last month, at the ripe old age of 11. I've given away most of her things but there's still a tote in the garage I need to go through. Most of her paperwork is going in the recycle bin. But I'm going to hang onto her DNA results and her Good Citizen certificate.

The shelter doesn't use the "pit bull terrier" designation anymore. They just say "terrier mix" now.