I assume you didn't get BIOS to play the opening swirl sound, because you'd notice it's not OK on that ADPCM processing Anyway, my bet is you're not issuing interrupts. You should get away without GD, but Maple has to be there. Not to mention VSYNC and related IRQ events: HBLANK_IN (doesn't have to be accurate except few cases), VBLANK_IN and VBLANK_OUT. There's a register that keeps track of current scanline - VPOS. That one has to be properly maintained, especially around zero wrap.