ツールなどの作成に当たって、自分がした解析結果とか。
アドレス | データ | 意味 |
0000H | 4バイト数値 |
kaodata.s7にある顔グラの個数 (通常版648、PK版678) リトルエンディアンなのでファイル上のデータでは通常版"88020000”,PK版"A6020000"と言う並びになっている(以下、他の4バイト数値も同様) |
顔グラの情報テーブル 顔グラ個数分4×4バイト数値のテーブルが続く | ||
0004H |
4バイト数値 |
顔グラ0番目のデータ開始位置(ファイル先頭ではなく、個数データを除いた位置なので、0番目の数値は0、以降11520ずつ増えていく) |
0008H | 4バイト数値 | 顔グラ0番目のデータ長(11520、どの顔グラも同じサイズなのですべて同じ値で一定) |
000CH | 4バイト数値 | 顔グラ0番目の幅(96、どの顔グラも同じサイズなのですべて同じ値で一定) |
0010H | 4バイト数値 | 顔グラ0番目の高さ(120、どの顔グラも同じサイズなのですべて同じ値で一定) |
以降、顔グラ個数分を満たすまで、4バイト×4のデータが続く(通常版16*648+4=10372、PK版16*678+4=10852バイトの位置まで) サンプルとして、PK版のアドレスにて説明 |
||
顔グラビットマップデータ(トップダウンで最上位ラインから)の、8ビットのパレット番号(実際のカラー成分はパレット情報を参照することになる) | ||
2A64H | 1バイト数値 | 顔グラ0番目のデータ 0ライン、0ピクセル(X=0,Y=0)のパレット番号 |
2A65H | 1バイト数値 | 顔グラ0番目のデータ 0ライン、1ピクセル(X=1,Y=0)のパレット番号 |
↓ | ↓ | ↓ 顔グラ0番目のデータ 96ピクセル×120ライン分繰り返し |
5764H | 1バイト数値 | 顔グラ1番目のデータ 0ライン、0ピクセル(X=0,Y=0)のパレット番号 |
以降、同様に顔グラ個数分を満たすまでビットマップデータが続く |
三国志6の顔グラ情報も同じ構造。顔グラのサイズも一緒なので、三国志6と7ではデータの融通が比較的容易。
アドレス | データ | 意味 |
0000H | 4バイト | ファイル上データでは、00030001Hとなっていて、実際のパレット情報には特に関係ないようにも見えるが、詳細は不明 |
パレット情報テーブル Red,Green,Blue,不明 の4バイトで構成される要素が256個続く | ||
0004H | 1バイト数値 | パレット0番目の色情報 Red |
0005H | 1バイト数値 | パレット0番目の色情報 Green |
0006H | 1バイト数値 | パレット0番目の色情報 Blue |
0007H | 1バイト数値 | パレット0番目の不明データ 0また4が埋められているが、マスク用の数値なのかアルファチャンネル数値なのか、詳細は不明 |
↓ | ↓ | ↓ 以降、同様に1バイト×4のデータがパレット256個分まで続く |
0403H | 1バイト数値 | パレット255番目の色情報 0また4が埋められているが、マスク用の数値なのかアルファチャンネル数値なのか、詳細は不明 |
三国志6のパレット情報もほぼ同じ構造だが、この1028バイトのテーブルが3つ並んでいる形になっている。
1.BMPファイルは通常ボトムアップ(データの先頭が最下位ラインから始まる)
2.BMPファイルのパレット情報と、Koeiデータのパレット情報では、色情報R,G,Bの並びが違う(BMP=B,G,R,0 Koei=R,G,B,謎)