SGDK学習メモ:No.2、画像ファイル関連備忘録

*以下SGDKは記述時点で最新版のSGDK 1.70 (february 2022)を使用しています

SGDK学習の際のメモです。


resources.resの記述について(SGDKに添付されているファイルを読もうという話)

SGDKで使用する画像ファイルは今のところ
res/resources.res
に記述していますが、仕様をちゃんと把握せずにチュートリアルの内容をそのまま書いていました。

今回スクロールの学習の一環としてSGDKに含まれる
res/font_default.png

を一部修正して背景データとして表示しようしました。が、意図したとおりに表示されません。デバッガで見ると一部データが欠落しているようです。

これはresources.resに

IMAGE  fontimage  "tiles/font_image.png" -1

という記述をしていたせいでした。

SGDKにはbin/rescomp.txtというファイルが存在し、これを読んで理由がわかりました。

IMAGE name img_file [compression [mapopt [mapbase]]]
(中略)
mapopt define the tilemap optimisation level, accepted values:
0 / NONE = no optimisation (each tile is unique)
1 / ALL = find duplicated and flipped tile (default)
2 / DUPLICATE = find duplicated tile only

rescomp.txt

今回の場合、自分の意図した通りに動かすためには

IMAGE  fontimage  "tiles/font_image.png" -1 0

mapoptに0またはNONEを指定する必要がありました。
mapoptはデフォルトだと1/ALLで、重複しているとみなされたデータ(find duplicated and flipped tile)が排除されます。今回だと、例えば▶は◀のflippedとみなされていました。
修正後font_default.png(を一部修正したデータ)はすべて表示されるようになりました。

ついでにABCボタン押下でスクロールする文字の色=パレットを書き換えできるようにしてみました。

余談ですがこの↑アニメーションgifはKega FusionのLog AVI File機能で録画→FFmpegでフレームレートを30にしてgif化したものです(ffmpeg -i in.avi -r 30 out.gif)。

【了】


この記事が気に入ったらサポートをしてみませんか?