あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

作業中

久しぶりのGBA開発の洗礼・・・バグに6時間使いました。。GW初動に何やってるんだか。。えーと、今ToncとThe Audio Advanceから一部のサンプルソースを流用してdevkitPro用に変換しているところです。音楽関係も考えてるのに、あっちもやりたいこっちもやりたい。おかげでWikiの進捗が激落ちして月末まで終わるのは不可能になってしまいました。申し訳ありません。おそらく5月中旬か下旬までズレそうです。サボってるってことはなくて、2日に1回のペースでちょいちょい書います。日本語の手直しを少しやろうと思っていたら新規に書いていたりして何をやっているんだ、という状態です。今日はその成果の1つ。

ToncのHBLANK DMAとウィンドウ機能を使った表示例です。mode0 bg0,1,2を使っています。メトロイドの最初の方で見るトリックですね。HBLANK毎にウィンドウのラインサイズを決定するのですけど、このコードでどこがおかしいかわかりますか?変数の範囲が足りていないとかそんなちゃちなもんではありません。ハードウェア的問題です。あとVBLANK毎に呼んでいて、そのままだと昔のテレビのような砂漠映像になります。答えはリンク先のgithubでどうぞ。ノータイムで分かった方は私から拍手を送らせていただきます。

// u16 BgWinh[SCREEN_HEIGHT+1]

REG_DMA3SAD = (u32)&BgWinh[1];
REG_DMA3DAD = (u32)&REG_WIN0H;
REG_DMA3CNT = 1 | (DMA_DST_RELOAD | DMA_REPEAT | DMA_HBLANK | DMA_ENABLE);

github.com