画像を書き込む際の注意点
画像データ(画像/パレット/タイルマップ)には圧縮形式と未圧縮形式の二種類があり、異なる形式で書き込んでしまうと正常に表示されない。
目的の画像がどちらの形式なのかは画像アドレスページを参照。簡単な見分け方として1byte目が[10]なら圧縮形式の可能性が高い。
未圧縮形式はデータをそのままバイナリ化するのでどのツールでもバイナリデータは変わらず、サイズも画像の大きさを変更しない限り変わる事はない。
ただし圧縮形式はツールによって圧縮の仕様が異なる為、全く同じ画像を書き込み全く同じ見た目で表示されていたとしてもバイナリデータは使用したツールによって内容もサイズも異なる。
素ROMの圧縮形式の画像データを抽出し、各種ツールで再度書き込み直した際のバイナリデータの比較は以下。
使用ツール | フシギバナ正面画像 | けつばん通常パレット | タイトルロゴ画像 | タイトルロゴタイルマップ | ||||
サイズ | 元データとの違い | サイズ | 元データとの違い | サイズ | 元データとの違い | サイズ | 元データとの違い | |
素ROM | 1344byte | - | 22byte | - | 6673byte | - | 528byte | - |
GBAGC | 1344byte | 0byte | 22byte | 0byte | 6673byte | 0byte | 527byte | 0byte |
unLZ.GBA | 1344byte | 0byte | 22byte | 0byte | 6676byte | 0byte | 528byte | 0byte |
GBAGE | 1344byte | 9byte | 24byte | 比較不可 | 6676byte | 16byte | 528byte | 6byte |
grit | 1344byte | 88byte | - | - | 6680byte | 比較不可 | - | - |
pokemon_image | 1344byte | 105byte | 24byte | 比較不可 | 6679byte | 比較不可 | - | - |
NSE | 1395byte | 比較不可 | 24byte | 比較不可 | - | - | - | - |
pokemon_Synthesis | 1528byte | 比較不可 | 23byte | 比較不可 | - | - | - | - |
このように素ROMと全く同一のバイナリデータを書き込む事ができるツールはGBAGCとunLZ.GBAしか存在しない。
また、特定の場面の画像をGBAGE/pokemon_imageで書き込むと特定環境下で画像が表示された際にクラッシュしたり表示がおかしくなる現象が確認されている。
不具合が確認された画像は以下。
- アイテム画像
- タイトルロゴ画像(画像によってクラッシュする場合としない場合がある?)
- 技アニメ画像
- 技アニメパレット
不具合が確認された環境は以下。
- BIOS使用VBA
- NO$GBA
- gpSP
- 実機
これらの組み合わせ以外での不具合は確認されていないが、万全を期すなら素ROMと同じバイナリデータを書き込めるツールを使用するのが一番安全と思われる。
クラッシュの発生は以下の変更を行う事で回避可能。
バージョン | アドレス | 変更前 | 変更後 |
FR | 0x1C7A4B | D0 | E0 |
EM | 0x29597F | D0 | E0 |
結局どのツールが安全なの?
- 圧縮形式はGBAGCが一番安全。
- 未圧縮形式はどのツールでもバイナリデータは変わらないのでお好みでOK。
ツール紹介
GBA General Compressor(以下GBAGC)
公式ページ
2017年に登場した最新ツール。unLZ.GBA同様素ROMと全く同じバイナリデータを書き込む事ができる安全性の高いツール。
圧縮効率が良くデータサイズも一番少なく済むので安全面でもサイズ面でも圧縮画像の書き込み時は極力使用する事を勧める。
導入機能がシンプルかつ高性能でこれまで複数ツールの使い分けが必要だった箇所もこのツールだけで全て対応できる。
特に16色~256色まで書き込むパレット数を自由に指定できるのはこのツールだけ。
未圧縮形式にも対応しておりunLZ.GBAの上位互換のような存在。
機能
- 圧縮画像の閲覧/抽出/書き込み(16色/256色)
- 圧縮パレットの閲覧/抽出/書き込み/編集(16色~256色)
- 未圧縮画像の閲覧/抽出/書き込み(16色/256色)
- 未圧縮パレットの閲覧/抽出/書き込み/編集(16色~256色)
- 圧縮タイルマップの抽出/書き込み
- ポインタ自動書き換え機能
- 圧縮データサイズの表示
unLZ.GBA
最初期から存在するツール。素ROMと全く同じバイナリデータを書き込める唯一のツールだったが後にGBAGCが登場した事で唯一ではなくなった。
名前の通り閲覧/抽出/書き込み共に圧縮形式のみ対応しており未圧縮形式は使用できない。
タイルマップの書き込み時に末尾のデータが欠けてしまう不具合や、ポインタ自動書き換え機能で無関係な部分も書き換えてしまう不具合がある為注意。
圧縮画像検索は精度が悪くヒットしない画像も存在するのでGBAGEを使用する事を勧める。
機能
- 圧縮画像の検索
- 圧縮画像の閲覧/抽出/書き込み(16色/256色)
- 圧縮パレットの閲覧/抽出/書き込み(16色/256色)
- 圧縮タイルマップの抽出/書き込み
- ポインタ自動書き換え機能(※不具合あり)
GBA Graphics Editor(以下GBAGE)
公式ページ
比較的新しいツールで多機能・高性能。
プレビュー機能が非常に充実しており、サイズの指定や反転表示、タイルマップの表示確認も可能と閲覧/抽出機能に関しては随一。
変更点は即座にROMに書き込まれず、[File]→[Save]を選択したタイミングで一括で更新される。
GBAGEでROMを読み込み、同じROMを他のツールで編集してからGBAGE側で保存すると他のツールで編集した部分が失われ、GBAGEで読み込んだ時点のデータに巻き戻ってしまう仕様がある。
複数のツールで並行して作業する際は要注意。
画像書き込み機能は特定環境下で画像が表示された際に不具合が確認されているので閲覧/抽出にのみ使用する事を勧める。
機能
- 圧縮画像の検索
- 未使用圧縮画像のスキャン
- 圧縮画像の閲覧/抽出/書き込み(16色/256色)
- 圧縮パレットの閲覧/抽出/書き込み(16色/256色)
- 未圧縮画像の閲覧/抽出/書き込み(16色/256色)
- 未圧縮パレットの閲覧/抽出/書き込み(16色/256色)
- 圧縮タイルマップの抽出/書き込み
- ポインタ自動書き換え機能
- 画像の回転/反転プレビュー
- タイルマップのプレビュー
Nameless Sprite Editor [Classic](以下NSE)
公式ページ
オブジェクト画像の編集に使用するツールだがプラグインやブックマークを使用する事でそれ以外の画像も編集可能。
圧縮画像の書き込みは圧縮効率が悪い為基本的に未圧縮画像の編集に使用する。
画像アドレス/パレットアドレス/画像サイズをブックマークに記録しておく事ができ、未圧縮画像の編集に便利。
簡易的なパレット編集機能とペイント機能が搭載されており、画像を用意しなくても直接編集が可能。
未圧縮画像のインポート時に末尾2pxのデータが欠けてしまう不具合がある。その場合はペイント機能で欠けた部分を自力で描き足してやる必要がある。
機能
- 圧縮画像の閲覧/抽出/書き込み/編集(16色)
- 圧縮パレットの閲覧/抽出/書き込み/編集(16色)
- 256色パレットは書き込みのみ
- 未圧縮画像の閲覧/抽出/書き込み/編集(16色)
- 未圧縮パレットの閲覧/抽出/書き込み/編集(16色)
- 256色パレットは書き込みのみ
- ポインタ自動書き換え機能
- ペイント機能
- ブックマーク機能
ツール簡易比較
ツール | 対応画像形式 | 画像 | パレット | タイルマップ | 備考 | ||
16色 | 256色 | 16色 | 256色 | ||||
GBAGC | BMP/GIF/PNG | ○ | ○ | ○ | ○ | ○ | +素ROMと全く同じバイナリデータを書き込める +書き込みデータサイズが一番小さい +書き込むパレット数を指定できる |
---|---|---|---|---|---|---|---|
unLZ.GBA | GIF/PNG | ○ (圧縮のみ) | ○ (圧縮のみ) | ○ (圧縮のみ) | ○ (圧縮のみ) | △ (不具合あり) | +素ROMと全く同じバイナリデータを書き込める +書き込みデータサイズが一番小さい -未圧縮形式には対応していない -タイルマップの書き込みに不具合がある |
GBAGE | BMP/GIF/PNG | ○ | ○ | ○ | ○ | ○ | +多機能 +閲覧/抽出機能が高性能 -書き込んだ画像が特定環境下でクラッシュする不具合がある |
NSE | BMP/PNG | ○ | × | ○ | △ (書き込みのみ) | × | +ブックマーク機能 +簡易ペイント機能搭載 +パレット編集機能あり -256色パレットは書き込みのみ可能 |