The place where random ideas get written down and lost in time.

2014-06-24 - Gameboy emulators

Category DEV

I have been playing Pokemon Yellow on an Android GameBoy Color emulator lately. Thoughts about these apps and their model.

  • First started with this one: "Gameboy Color A.D"
    • Simple app. Easy to use.
    • Free with ads in the home screen, not during play time. Ads not shown when in airplane mode.
    • All features available in free mode.
    • One of them (Fast Forward) wants you to watch a movie before activating it ⇒ skipped in airplane mode.
    • Lacks a couple features (Link Mode) + crappy zoom quality (too blurry)
  • Tried this alternative: "My Old Boy! Free (GBC)"
    • Better quality game.
    • Unfortunately many essential features are blocked by a "Only in paid version".
    • Load: you can save but cannot reload!
    • Link Remote: only in paid.
    • ⇒ That was enough of a kill-it-and-uninstall. I think the pure block is not a good strategy as I could not even evaluate the feature. The ability to save without reload is a total non-sense and feels like a bad bait-and-switch.
  • There are many many other Android apps for GBC emulation, most of them looking exactly like each other.
    • ⇒ My feeling is there are 1 or 2 engines out there and everyone is just repackaging the same thing.
  • There is one open source Android version: "Gameboid"
    • It seems the original project was open-source and then the original app went paid/closed on Android.
    • This uses an NDK z80/gbc emulator source + code around to handle inputs and display and stuff.
    • Doesn't seem to support the Link Cable feature which I want.
    • I could rebuild an app around this, but is it worth my time? Probably not.
  • So for a second I thought about whether I could rewrite the NDK gbc emu in Java.
    • ⇒ But surely someone has done it, hasn't it?
    • What do I know about z80 assembly code & emulation? ⇒ Nothing.
    • What do I know about GBC hardware emulation? ⇒ Nothing.
    • ⇒ Again, worth my time trying? Not really.
  • "JavaBoy" is one such emulator rewritten in Java.
    • Tried it and it builds and run as a Java App in IJ with no problem.
    • Source is clean and instructive.
    • Most interesting there's a one-file z80 emulator right in there.
    • The rest is handling peripherals and magic GBC-specific constants.
    • Mentions passes some kind of emulation test + a list of games compatibles.
    • ⇒ All this clearly shows I know little on the subject, nor do I really care.

So bottom line:

  • Reading the JavaBoy source code, I did learn a couple interesting things on how ROMs & save files are handled (basically they are 8k or 32k memory chunks) and they all tend to load a blah.zip or blah.gb with a side blah.sav for the 32k chunk so that means pretty much all these emulators are cross-compatible if you give them the right files.

Went with the paid version of "My Old Boy!".

  • It's disappointing that the Free version can't properly act as good test app.
  • Just suck it up and use the 15-min window for trying it out.
  • The Link Remote feature worked over wifi + over BT. It's a bit flaky (works fine initially when it goes bad.)
  • The app is $4.

It's not worth my time rebuilding my own emu for that price yet I had a fun time looking at the emulator sources and their implementations.


 Generated on 2024-11-22 by Rig4j 0.1-Exp-f2c0035