The first one was pretty embarrassing, basically I was using windows calculator to find a the right shift amount for 0x2000 and used 1 << 0xD, but I forgot my hex for a second and put 1 << 14 in my program so all the reads/writes to the upper 8KB of VRAM failed.
The palette issues where simply because I was doing the 15bpp to 32bpp conversion at the wrong time. My code uses A8R8G8B8 for everything, but the GameBoy Color uses X1B5G5R5. I could use the same format, but someday I'd like to implement a tile editor/viewer and have it work for all systems so it's easier just to stick with 32bpp.
Finally the problem with the old GameBoy games, was that I forgot about the changes in RAM size between systems. The GameBoy Color has 8 4KB banks of internal RAM, but the older version only has 8KB. With the older games I was only accessing the first 4KB.
Anyway, enough talk. Here's what you came here for:
I can't get the damn Oracle series to work. Seems it still thinks it's running on an old system.
Edit: Nevermind, fixed that as well.