2004年1月3日の日記の1番目の記事へのコメント
■ラスタースクロール
GBAでラスタースクロールに挑戦してみているのですが,動かすところで大はまりしてしまいました.-128〜127に正規化したsinのテーブルを作って,その値を使ってラインごとにずらしてスクロールさせたのですが,テーブルを引いた値が負の場合,キャストしようが何しようが,割算や右シフトで符号拡張してくれず,単にでかい正の数として扱われてしまいます・・・.あれこれ試した結果,charにしていたテーブルの配列の型をshortにしたら動いたわけですが,なんでなの???
試しにchar型とsigned char型をシフトするコードをコンパイルしてディスアセンブルしてみたら・・・,charの方はlsr(論理シフト)でsigned charの方はasr(算術シフト)・・・_|‾|○.調べてみたら,gccではcharはunsigned扱いなんですね・・・.まじで知らなかった・・・_|‾|○i|||.何年C使ってるんだってかんじです.はぁ,カッコワル・・・.ちなみに,ラスタスクロールはバッチリです.
[コメントを書く]
2004年1月3日の日記の1番目の記事へのコメント
[コメントを書く]