VRAMの割り当て
DSのVRAMを見て、結構大きいじゃんとか思ってましたが(ていうか実際大きいと思いますが)、いろいろ画像を重ねたりしようと思うと、レイヤー(っていうんですかね?)を駆使して表示しなければならないようで、ビデオメモリが足りなくなります。CPUのパワーがあるマシンならソフト側で重ね合わせて解決☆なんですが、それをDSでやろうとするとフレームレートが落ちちゃうんで、出来ればハードウェアでやってほしいなぁというところ。
VRAMを使っていてなぜかうまくいかないことが。MODE5のBG2とBG3を使って、サブ側のLCDの(ビットマップ)画像を重ね合わせようと試行錯誤してるんですが、うまくいきません。VRAMのCとHとIのバンクがサブのBGに割り当てられるようなので、こいつらにうまいことアドレスを割り振って使えば出来そうな気がするんですが。バンクCだけのときはうまくいくんですが、そこからバンクHをSUB_BGに割り当てただけで、動作がおかしくなります。バンクCに割り当てるアドレスを変えてもダメ。
http://tobw.net/dswiki/index.php?title=Graphic_modes
によると、バンクCは、06200000、06220000、06240000、06260000に割り当てられそうですが、(devkitProでもヘッダファイルの定義を見る限りではそんな感じ)
http://neimod.com/dstek/
によると、
- バンクC : 06200000〜0621FFFF
- バンクH : 06200000〜06207FFF
- バンクI : 06208000〜0620BFFF
に決め打ちって書いたりますね・・・。こっちのほうが正しいような気がしてきました。ていうか、06200000、06220000、06240000、06260000はミラーされてるだけで、全部同じとこ指してる気がします。
実際のとこどうなんでしょう?