I agree with ShaolinMonk more than I do with Qrayzie.
The GBA and NDS processors are compatible, and can run the same code. You would have to fiddle with the adressing, and adjust the graphics to compensate for the bigger screen (add a black frame around the GBC graphics; a computer-fbased patcher would do that), but most GBA code could be run on the ARM7 of the DS (and the ARM9) without translation.
The code itself would be loaded into RAM, with the essentials (sprites, behavioural functions, etc.) kept in the RAM constantly, and the ARM9 swapping the temporary stuff (level maps, between the flash card and the remaining RAM. The ARM7 would only access the DS' RAM.
Option 2: convince the DS to enable GBA execution (quasi-GBA mode) while running in DS mode. The ARM7 is enough to run GBA code, it just needs to be tricked into accessing the rest of RAM instead of Slot2, while the ARM9 is free to do the aforementioned swapping.
The problem with GBC on GBA is that they have different, not-so-compatible processors, so that every line of code has to be translated "on the fly" to match the GBA processor. That's why Goomba Color still isn't fully functional, and I doubt it will ever be.
I admit to a poor choice of words. As Qrayzie said,
QUOTE said:
emulator authors will rarely develop an emulator for functionality already built into the hardware
The functionality is there, we just need a way to abuse it.