Modding a GBA to behave like a real GBC

Started by Paar, April 13, 2015, 01:27:48 AM

Previous topic - Next topic

Paar

Hi,

there's something that's bugging me lately.

As many of you surely know, there are some GBC games that are "GBA enhanced" - when you put them to a GBA, they will make access to an additional content and swap to a brighter color palette so the image is nicely visible on the original GBA.

To my knowledge there are four of those enhanced games:

- The Legend of Zelda: Oracle of Ages
- The Legend of Zelda: Oracle of Seasons
- Wendy: Every Witch Way
- Shantae

Anyway, additional content is nice. But the birghter color palette is not, especially when you're playing on a GBA SP AGS-101 (the one with the better screen) or Gameboy Player (on Gamecube). The colors look washed out in comparion to the original colors.

What I want to do - I want to play those games in their original colors on a GBA SP AGS-101 without using a cheat device such as Gameshark. I have one and I tried to play the Zelda: Oracle of Seasons with it and it works (the cheat codes already exist, see the discussion on Gamehacking.org). There is one problem: the contact with the cartridge is loose and sometimes the game freezes when I unknowingly touch the device while playing. So it's not very practical and certainly not ergonomical as the device is rather large and uncomfortable too.

This is how the detection works (from GbdevWiki):

"Detecting CGB (and GBA) functions CGB hardware can be detected by examing the CPU accumulator (A-register) directly after startup. A value of 11h indicates CGB (or GBA) hardware, if so, CGB functions can be used (if unlocked, see above). When A=11h, you may also examine Bit 0 of the CPUs B-Register to separate between CGB (bit cleared) and GBA (bit set), by that detection it is possible to use 'repaired' color palette data matching for GBA displays."

I made some research and it appears that whether the B register is filled with 0 or 1 depends on the BIOS. I thought that I could swap the BIOS module with a one from a broken Gameboy Color, but unfortunately the BIOS is embedded in the CPU chip. You even cannot update the BIOS as it's read-only.

My question is - is it possible to make some kind of modchip that would force a game to think it's inserted in a GBC when it's actually inserted in a GBA? What would be needed to make it work?

Paar

I could try it differently.

Do you know someone that has good knowledge of the GBA hardware?

kendrick

I think you're going about this the wrong way. Looking at the issue as a hardware problem means that you're only ever going to have a handful of GBA systems that are specially modified to do what you want. And then you introduce the possibility of compatibility problems with other games

I think what you shoulkd be doing instead is changing the software. The games in question include the extra color data that bothers you so much, so you could do one of two things: Either remove the extra palette information, or change the way the game identifies itself to the system so that GBA doesn't know to drop into the other color mode. Then you're writing the modified game ROM image out to a flash card or other external cart thing.

I'm kinda treading outside of our mandate now, since coding is not really what the site is about. But I bet you'd me more willing to test code updates in an emulator, rather than tearing up multiple GBA systems until you find the right answer from that side. Hope that's useful to you.