ここではタイトル画面の差し替えを行っていきます


必要なもの

まずタイトル用画像を用意します
画像サイズは240x160、色数は透明色こみで224色まで

その画像が左上になるように画像サイズを256x256にし余白を透明色用の色にします
そして画像のパレットの1番目に透明色を配置してください

出来上がった256x256の画像をWinGritで開き、メニューのView→GBA Export..を選びます

設定画面が出るので、画像の通りに設定し左下のOKで保存
※ファイルのパス(保存先)には日本語パスがないほうがいいかも(日本語フォルダを選ぶと文字化けしていた)
Map欄にチェックを入れ、reduceのpalのチェックを外す
Pal欄のnumに画像の色数を入れる
Fileのtypeを「Binary {*.bin}」にし、h.fileのチェックを外す

保存先に.img .map .palの3つのファイルが出来ていると思います(拡張子はどれも.bin)

imgファイルをバイナリエディタで開き、まずファイルの容量(16進数)を確認します
(例えばデータ末尾に飛んだ場所のカーソルの位置のアドレスが容量と同じ)

imgファイルの先頭に4バイト追加します(Insertキーを押し挿入モードにする等)
追加した4バイトの2,3バイト目に上で確認した容量を書き、保存します
(もし容量が0x9640だった場合、先頭4バイトは00 40 96 00となる)

書き加えたimgファイルをLZ77 Decompress.exeにドラッグし起動します
decompressかcompressかを聞かれるのでcを入力しEnterで決定すると、(ファイル名)_Compressedというファイルが出来ていると思います

これでタイトル用の画像変換作業は完了です


次に、3つのファイルの追加とポインタ書き換えをします

ROMの容量を増やし、空きスペースに.img .map .palのデータを追加します(バイナリエディタでコピペするなどして追加)

それぞれ3つの追加した先頭のアドレスを確認します
確認したら、30CC4に飛びます(両バージョンとも同じ)
ここがimgのポインタになります
2C 89 7F 88と書かれているところを上で確認したimgのアドレスに書き換えます
同じように30CD0にpalのポインタを、30D0Cにmapのポインタを書き換え保存します
※ポインタ右端の88,08は書き換えてはならない
 もし7FF500に追加したのなら、00 F5 7F 88とする

そして3059Cに飛び、A0 05 03 08と書かれている4バイトを全部00にします
※パレットアニメーションをしないようにしている
 ASMハックをよく理解せずアドレスを潰してアニメーションしないようになったがおそらく問題はない

これでタイトル画面が差し変わっているはずです


※タイトル画面で点滅している電脳獣のパレットは別にあり、そのパレットが後から読み込まれアニメーションします
 パレットアニメーションの対応は手間がかかるのでまた今度(未定)
 3030C:パレットアニメーションのポインタ一覧
 7FDB5C:アニメーションにつかうパレット



|