I just noticed that the GBC Wizardry ports/remakes trigger OAM DMA in code that runs directly out of ROM, rather than jumping into the FF80-FFFE internal RAM region to do it like you're "supposed" to. The DMA source page they use is in work RAM; they're not doing the "DMA from VRAM to OAM" thing (which I've never actually seen--can anyone name a game that does that?)
These games do still spin in a loop for 40*4*4 master clocks after triggering the DMA.
Since these games evidently work on real GBC hardware, I guess the GBC CPU has separate buses to the cartridge slot and to work RAM to make this possible? I'm assuming that during the DMA it's possible to access ROM but not RAM, and that's why the games still have to spin in a loop until the DMA is done...
Another thing about OAM DMA I'm curious about: a certain document says that the original GB doesn't support DMA from ROM to OAM--the source page has to be within the range [80, DF]. Is this actually true, and if so, why? I've seen schematics for the original GB and it certainly looks like the cartridge slot and work RAM are on the same bus. Is the high bit of the data written to FF46 simply ignored by the hardware?
These games do still spin in a loop for 40*4*4 master clocks after triggering the DMA.
Since these games evidently work on real GBC hardware, I guess the GBC CPU has separate buses to the cartridge slot and to work RAM to make this possible? I'm assuming that during the DMA it's possible to access ROM but not RAM, and that's why the games still have to spin in a loop until the DMA is done...
Another thing about OAM DMA I'm curious about: a certain document says that the original GB doesn't support DMA from ROM to OAM--the source page has to be within the range [80, DF]. Is this actually true, and if so, why? I've seen schematics for the original GB and it certainly looks like the cartridge slot and work RAM are on the same bus. Is the high bit of the data written to FF46 simply ignored by the hardware?