タイルデータ - Rickisthe1/CoilSnake-m2-basic GitHub Wiki
このセクションで言及されているすべてのアドレスとデータ構造は、アメリカ版の「MOTHER 2」のSNES版に基づいています。SFC版「MOTHER 2」も基本的に同じ動作をしますが、アドレスが異なります。しかし、「MOTHER 2」のGBA版は大きく異なるようです。このガイドでは、「まきへびドライ」がプロジェクト内でデータをどのように保存するかを説明します。ROM内でデータがどのように保存されているかだけでなく、プロジェクト内での保存方法にも焦点を当てています。「MOTHER 2」のマップ関連の完全なサポートには、現在のツールではサポートされていないいくつかの要素が必要です。
タイルセット
「MOTHER 2」のマップは、32種類の異なるタイルセットの中から選択できます。これらのいくつかは、グラフィック、衝突判定、配置、アニメーション情報を共有していますが、重複を除けば実質的には20種類です。これら20種類は「ファットタイルセット」または「FTSes」と呼び、32種類は単に「タイルセット」と呼びます(これは変更される可能性があります)。
ミニタイル
最初に、未加工のグラフィック、いわゆる「ミニタイル」について説明します。「MOTHER 2」のマップはすべて、前景と背景の2層に分かれた4bppグラフィックを使用しています。前景タイルは常に背景タイルとペアで使用され、最初の背景タイルは最初の前景タイルに、2番目の背景タイルは2番目の前景タイルに対応します。 「MOTHER 2」では、各「ファットタイルセット」に対して512個の背景タイルと384個の前景タイルのスペースを確保しています。つまり、128個の背景タイルには対応する前景タイルがなく、この場合、タイルマップ(配置)で指定されたミニタイル番号が384以上の場合、ゲームは常に前景タイル0を背景レイヤー2にロードします。前景タイル0は背景タイル0と同様に、すべてのタイルセットにおいて完全に透明です。さらに、実際に読み込まれる前景タイルとは異なり、「MOTHER 2」ではこのタイルに「BG優先ビット」を設定しないため、背景タイルやスプライトの前ではなく、その背後に(透明に)レンダリングされます。
ROMでは、各ファットタイルセットのミニタイルへの32ビットポインタが$EF105B
のテーブルに保存されています(「MOTHER 2」はHiROMを使用しているため、C00000
を引くとファイルアドレスが得られます)。これらのグラフィックは、HAL Laboratoriesの標準圧縮ツールを使用して圧縮されています(GitHubのdevinacker/exhalで、この形式をうまく処理するライブラリとユーティリティが提供されています)。
「まきへびドライ」のプロジェクト内では、ミニタイルは「Tilesets」フォルダ内の拡張子. FTSのテキストファイルの最初の三分の一に保存されています。各タイルは3行で保存され、最初の行は背景タイル、2番目の行は前景タイル、3番目の行は空白です。タイルは16進数で保存され、左から右、上から下に順番に並べられます。
パレット
各タイルセットには1つ以上のパレットが含まれています。これらは番号で識別できます。例えば、タイルセット31の最初のパレットは、UIやYAMLファイルで「31/0」と呼ばれることがあります。各パレットは1つ以上のイベントパレットで構成されており、ゲームはマップのパレットを、物語の進行に応じて設定されたりクリアされたりしたイベントフラグに基づいて変更できます。各イベントパレットには16色のサブパレットが6つ含まれています。これらのサブパレットは、ゲーム内のCGRAMでの配置を反映するために2〜7番と番号が付けられることがあります。
ROMでは、各タイルセット(非ファットタイルセット)の32ビットパレットポインタが$EF10FB
にあります。圧縮はありません。「まきへびドライ」のプロジェクト内では、イベントパレットの初期設定がFTSファイルの中央部分に保存されます。各イベントパレットは1行で表され、最初の2文字はタイルセット番号とパレット番号を示します(32進数で表記)。色は、赤・緑・青の順番で各色チャネルを表す1つの32進数文字で保存されます。
その後のイベントパレットは、前述の「map_palette_settings.yml」に保存されます。これらはFTSファイルのパレットと同じ形式で保存されていますが、タイルセット番号/パレット番号の文字は含まれていません(冗長だからです)。イベントパレットのメタデータもこのファイルに保存されます。
フラッシュ効果
パレットアニメーション番号(「フラッシュ効果」とも呼ばれる)は、サブパレット5の最初の色に保存されています。もし0の場合、アニメーションはありません。非0の場合、パレットアニメーションテーブルのインデックス(1始まり)を指定します。
配置と衝突判定
最後に、.FTSファイルに関連する配置と衝突判定について説明します。マップの指定されたセクターに配置できる最小の「メタタイル」は、4タイル×4タイルです。「メタタイル」とは、非常に小さな再利用可能なタイルマップのことです。ゲーム内では、このシステムは「リンク・トゥ・ザ・パスト」で使用される32x32ピクセルのブロックに似ています。