三国志7 解析した情報など

ツールなどの作成に当たって、自分がした解析結果とか。


顔グラデータファイル関連

・kaodata.s7 の構造(通常版7475332バイト、PK版7821412バイト)

アドレス データ 意味
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ではデータの融通が比較的容易。

・P_kao.s7 の構造(1028バイト)

アドレス データ 意味
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つ並んでいる形になっている。

※これらのファイルからBMPファイルを構築する際、以下の点に注意。

1.BMPファイルは通常ボトムアップ(データの先頭が最下位ラインから始まる)

2.BMPファイルのパレット情報と、Koeiデータのパレット情報では、色情報R,G,Bの並びが違う(BMP=B,G,R,0 Koei=R,G,B,謎)


inserted by FC2 system