2019-03-14

GBA Modding

I had to try out the GBA backlight mod for myself. I’ve been slowly collecting the pieces necessary to perform the mod:

  • SNES-style reproduction GBA shell (eBay; $13);
  • Glass Famicom-style screen lens (RetroModding; $5);
  • GBA with a 40-pin motherboard ($30);
  • AGS-101 screen to 40-pin motherboard type “B” adapter cable (God of Gaming; $8);
  • AGS-101 screen (God of Gaming; $78);
  • 25 watt Weller soldering iron with a fine tip (Lowe’s; $20);
  • Precision X-acto knife (Home Depot; $4);
  • Electrical tape (Lowe’s; $4)
  • Tri-wing screwdriver (possibly Lik-Sang; I’ve had it for years)

I ordered the shell just over a year ago when the SNES design first appeared, and got the matching screen lens about 6 months ago. I found a cheap GBA at a local retro toy fair last month. The most expensive part was the screen; they were half the price last year. The rumor is that the screens are no longer being produced, pushing up the prices, but I wonder if Donald Golf’s trade war is contributing to the inflating cost.

The mod instructions are simple:

  • Disassemble GBA;
  • Cut away excess plastic from top of shell so that larger screen fits;
  • Connect the screen to the adapter cable;
  • Connect the adapter cable to the motherboard;
  • Solder additional wire from adapter cable to the motherboard;
  • Assemble GBA.

Cutting the shell to size was easy enough. Many sites recommend a Dremel instead of a X-acto knife, but I found that the plastic used in the reproduction shell was soft enough to make cutting through it fairly easy. At one point the knife snapped in half, pinging a razor-sharp chunk of blade across my desk, but fortunately the half-blade was better suited to slicing up the plastic than the pointed tip had been.

The first time I put the GBA together I didn’t bother soldering the wire. A few online guides suggest that this is optional if you don’t mind a dimmer display. Having used other modded GBAs I thought that the dim screen was disappointing, so I decided to open it back up and solder it. This was the part that concerned me: I don’t mind ruining a cheap reproduction shell, but I really didn’t want to damage a GBA motherboard. I haven’t done any soldering in years and never anything as fine as required here. Surprisingly this part of the mod also went smoothly and I got the wire soldered on my first attempt.

The electrical tape comes in handy in a few places:

  • Taping around the edges of the screen to eliminate light bleed;
  • Insulating the area where the cartridge slot pins poke through the back of the motherboard;
  • Insulating the soldered wire from other components around it.

With all of this done I loosely screwed the GBA together and gave it a try. It worked!

I screwed it together properly. It didn’t work.

I unscrewed it a little. It worked!

Hmm. If I squeezed the bottom of the GBA the screen switched off. Looking closely, it seemed that the screen was still working but the backlight was off. Time to unscrew it fully and figure out what’s going on.

Some diagnosis later - disassembling everything I’d just put together, including removing the soldered wire - I found that there was a tiny rip in the ribbon cable that connects the screen to the adapter. This cable is part of the screen and cannot be replaced. Any damage to the cable means the screen is dead. I have no idea where the rip came from, but now I needed a new screen. Remember that I said the screen was the most expensive component in the mod?

Nuts.

Another $78, another week, and finally a new screen arrived. In the meantime I’d re-soldered the adapter cable’s wire; of course it detached again whilst I was working on the GBA so I had to solder it a third time. Each solder was messier than the last, but I somehow avoided damaging the motherboard. This time there were no rips and I got the GBA assembled. I didn’t bother taping up the screen with electrical tape as I’d subsequently heard that it doesn’t look that great.

The last piece was the Famicom-style screen lens. The lens came with glue already in place. All I had to do was peel the backing off the lens, ensure the screen and lens were clean, and stick it down. After checking both surfaces and sticking the lens down I switched the GBA on to discover that there was now some sticky goop between the lens and the screen. I have no idea how that got there. One quick complete disassembly, clean and reassembly later and I had a fully modded GBA.

Lessons learned along the way:

  • The SNES shell is very gray, and I think a white shell might look better with the multicolor buttons and Famicom lens;
  • An X-acto knife is good enough to mod the shell, but beware breaking blades;
  • You absolutely must solder the adapter wire for the best display;
  • Soldering the wire isn’t as difficult as you’d think;
  • You’re not treating the screen’s ribbon cable carefully enough, even if you take into account this lesson;
  • The light bleed around the screen edges is annoying, but not annoying enough that I want to open it up again (RetroModding sell a “backlight bleeding protector” which might work better than electrical tape);
  • The tools to do the mod weren’t as expensive as I’d expected;
  • Screens and adapter cables can be ~20% cheaper on eBay and AliExpress if you don’t mind waiting for delivery from China;
  • You can probably buy a pre-modded GBA for around the price of the individual components;
  • You can definitely buy a pre-modded GBA for considerably less than the price of the individual components if you damage your first screen and have to buy another.

The most important lesson I learned was this:

  • I should stick to software.

Here’s the finished product:

GBA-101

2019-02-04

And Another Chiptune

Another one:

This one came from a little guitar riff (haltingly played on an unplugged 335, which is why it sounds so thin):

I ran out of ideas and ended up making the lead follow the riff, and then made it loop. Excitingly, I found a use for the arpeggio effect.

2019-01-25

Another Chiptune

This is a chiptune I’ve been tinkering with for a while:

I thought this one sounded a bit like GameBoy Castlevania until I listened to that soundtrack again and realized that its composer really knew his stuff. Oh well, I like it anyway.

2018-11-12

Debugging With mGBA

I finally figured out how to get the mGBA debug server working:

  • Build your GBA ROM.
  • Open the ROM with mGBA.
  • Open the mGBA debug server UI (in macOS, open Tools -> Start GDB server…).
  • Using the default options (port 2345 and address 0.0.0.0), hit “Start”.
  • Open up a terminal and run /opt/devkitpro/devkitARM/bin/arm-none-eabi-gdb to start GDB.
  • In GDB, enter target remote localhost:2345 to connect to mGBA.
  • Enter file <path_to_elf>, replacing <path_to_elf> with the full path to the .elf file that should have been created alongside your ROM.
  • When asked if you want to change the file, enter y and hit Return.

Now you should be connected to mGBA, with symbols loaded, ready to start debugging.

2018-10-13

Professor Sinister v20181013

PypeBros kindly created a title screen for Professor Sinister, so here’s a new release:

In addition to the title screen, this latest version includes some bugfixes, tweaks to the music and improved audio quality.

Get in touch if you have a way of getting the ROM onto one of those cheap reproduction carts that folks sell on Etsy. I’d love to have a physical copy of this on a dedicated cart.

2018-08-06

Professor Sinister XM Music

On the subject of XM music modules, here’s the Professor Sinister mod:

This has all of the different tracks embedded in it in different blocks. The song index is:

  • 00: Empty block (songs that don’t loop jump here when they end)
  • 01: Climb Time (in-game music);
  • 0B: Pause jingle;
  • 0C: Oh Well (game over music);
  • 14: Something Sinister (title music);
  • 27: Ooops (lost a life music).

You’ll need something like MilkyTracker to play it.

2018-08-05

Professor Sinister v20180805

I’ve decided to scale back Professor Sinister in order to move on to other projects. Things that didn’t make the cut:

  • High score table;
  • New level designs;
  • New sound samples;
  • Attract mode.

With the exception of new level designs, these are all minor features that aren’t important. New level designs would have been great, but I found that larger levels had the effect of overly-emphasizing the simplicity of the game. The larger the levels, the “thinner” the game feels. Redesigning levels within the existing size constraints isn’t interesting, so I’m keeping the original designs.

The last thing to do is the bitmap for the title screen. I have no idea when I’ll get around to that.

Here’s an almost-final version:

I had to check that the game wasn’t completely invisible on an original, unlit GBA-001. Here it is:

Professor Sinister Original GBA

It’s no worse than any other game on the system. Thanks to the GBA-001’s horrible screen that’s the best picture I could get.

Here’s a screenshot:

Professor Sinister Screenshot

2018-07-29

More Professor Sinister Music

Here’s the last Professor Sinister track:

This is the title screen music.

I’d planned to put up a post with piano demo tracks of all three chiptunes, but unfortunately all but one have conversations over the top. Here’s that one, anyway:

This was the last 10 seconds of almost 3 minutes worth of piano doodling. I’d got an idea of what the tune should sound like, solidified the ideas on the piano, wrote it up in MilkyTracker, and found that I hated it. The final chiptune came almost entirely from this little snippet of music that was a throwaway accident at the end of the demo recording.

“Oh Well” and “Climb Time” both came from noodling on the piano, which I find is a much more efficient way of discovering melodic ideas than trying to come up with something directly in a tracker. “Something Sinister” on the other hand was entirely written in a tracker, except for the basic 4 chord progression that it uses. That came from another piano noodling session.