1

古いroms gfxファイルを使用してリバースエンジニアリングを行って、タイルがどのように保存されているかを確認しようとしています(この例では、スノーブラザーズアーケードセット1を使用しています)。

これは私が今知っていることです:

  • 各色は、変更可能なパレットを指します (パレットを変更すると、タイル内のその色が変更されます)。

  • タイルのサイズは 16x16 です。

ファイルを 16 進エディタで見ると、少し混乱します。ピクセルが何バイトなのか、タイルがどのように表示されるのかわかりません。

これがどのように機能するかについてのアイデアはありますか?

4

2 に答える 2

2

ドキュメントがない場合、各ピクセルは 1 バイト (単純に 256 カラー パレットへのインデックス) であり、(16 x 16) 256 バイトのブロックが 1 つのタイルを構成すると仮定することから始めます。

これで、いくつかのヘッダー情報も存在する可能性が十分にあります。したがって、オフセット + 256バイトを読み取り、ロードされたパレットまたはグレースケール パレットのみを使用して表示する必要があります。

タイルのように見えるものが得られるまで、オフセットを増やし続けます。次に、後続のタイルを読み取って (その後、オフセットを 256 バイトずつインクリメントして)、仮定をテストします。もちろん、タイル間に他のデータがある場合は、ストライドを決定するまでこれをやり直す必要があります。

正しいパレットを読み込まないと、色がおかしくなる可能性が高いことに注意してください。パターン認識スキルに頼る必要があります。

そうは言っても、そのコンソール用の既存のオープンソースエミュレーターを見つけて、コードをリバースエンジニアリングしてフォーマットを発見することもできます.

于 2012-07-13T20:41:25.647 に答える
0

私は答えを見つけました(少なくともsnowbrosゲームでは):

タイルは 128 バイトで保存されます。

各バイトは 2 色 (1 色あたり 4 ビット (もちろんインデックス付き)) であり、次のように抽出されます。

16 進ファイル:

ここに画像の説明を入力

もちろん、hex は 0 から始まりますが、これはより視覚的であると思います。各セルドはバイト (2 ピクセル) です。

于 2012-07-14T22:38:26.683 に答える