うーん完全にお手上げ状態。テンポが高速になっていて計算式がおかしい、ということはわかります。
ではその計算式を見ると以下になっていて問題はず・・・。
// GBA timer2,3(cascade) = (GBA clock / samples rate) * samples uint32_t time = 0x100000000 - (16800000 / 44100) * ((d3 << 8) | d2); fputc(0x61, fp); fputc((uint8_t)(time >> 0), fp); fputc((uint8_t)(time >> 8), fp); fputc((uint8_t)(time >> 16), fp); fputc((uint8_t)(time >> 24), fp); fputcCnt += 5; continue;
GBA側への受け渡しも問題ないし。タイマーのカスケードの仕様か何かハードウェア的問題か・・・。
取っ掛かりがないものですからダメかもしれません。