SGDK学習メモ:No.2、画像ファイル関連備忘録
*以下SGDKは記述時点で最新版のSGDK 1.70 (february 2022)を使用しています
SGDK学習の際のメモです。
resources.resの記述について(SGDKに添付されているファイルを読もうという話)
SGDKで使用する画像ファイルは今のところ
res/resources.res
に記述していますが、仕様をちゃんと把握せずにチュートリアルの内容をそのまま書いていました。
今回スクロールの学習の一環としてSGDKに含まれる
res/font_default.png
![](https://assets.st-note.com/img/1661838280403-lNMsHjCbUi.png?width=1200)
を一部修正して背景データとして表示しようしました。が、意図したとおりに表示されません。デバッガで見ると一部データが欠落しているようです。
これは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
今回の場合、自分の意図した通りに動かすためには
IMAGE fontimage "tiles/font_image.png" -1 0
とmapoptに0またはNONEを指定する必要がありました。
mapoptはデフォルトだと1/ALLで、重複しているとみなされたデータ(find duplicated and flipped tile)が排除されます。今回だと、例えば▶は◀のflippedとみなされていました。
修正後font_default.png(を一部修正したデータ)はすべて表示されるようになりました。
![](https://assets.st-note.com/production/uploads/images/85891611/picture_pc_87ac662d25d5eaaa4e18261e8849f782.gif)
ついでにABCボタン押下でスクロールする文字の色=パレットを書き換えできるようにしてみました。
余談ですがこの↑アニメーションgifはKega FusionのLog AVI File機能で録画→FFmpegでフレームレートを30にしてgif化したものです(ffmpeg -i in.avi -r 30 out.gif)。
【了】