



MGS2用2Dレイアウト/アクション組み込み形式





						Written by Yoshihito Kira



						Last Update

						Jan. 23, 2001	Ver.0.1.1





§概要



  以下は、2D レイアウト情報を実際のゲームシステム上に組み込むための

  フォーマットである。中間形式がテキストで表現されるのに対し、組み込み形式は

  バイナリで表現される。



  

§ヘッダ



  データ全体のヘッダは、以下のように定義づけられる。



  00000000-00000003	バージョン情報(00 00 00 01)

  00000004-00000007	オブジェクト定義セクション先頭アドレス(0x00000010固定)

  00000008-0000000B	状態定義セクション先頭アドレス

  0000000C-0000000F	アクション定義セクション先頭アドレス



  各アドレスは、データ先頭からの相対アドレスで表現される。





  バージョン番号は、以下の形式で格納される。



    +00  予備

    +01  メジャー番号

    +02  マイナー番号

    +03  パッチレベル



  各番号は、以下の基準で更新される。



    メジャー番号: ファイル内容を構成する概念自体に大きな変更があった場合



    マイナー番号: 概念自体には特に変更が無いが、フォーマットが変更された場合。

		  たとえば、構造体のサイズが変更された場合など。

		  



    パッチレベル: フォーマット自体に大きな変更は無く、小さな追加や仕様修正が

		  あった場合。たとえば、未使用領域だった部分を他の用途に使う

		  ように拡張した場合。





§オブジェクト定義セクション



[1] オブジェクト定義セクションの構成



    +00000000-00000003	収録されているオブジェクトの定義個数

    +00000004-		定義ブロック群





    上記アドレスは、*オブジェクト定義セクション先頭からの* アドレス

    である点に注意。



    定義ブロック群は、1オブジェクトあたり 8バイトからなるオブジェクト定義時に

    使用される基本情報である。

    この定義ブロックを定義個数分ならべて、オブジェクト定義セクションは完了と

    なる。





[2] 定義ブロック形式



    Ver. 0.0.1 形式

        +00-01    ID

	+02-03    親オブジェクトのID

	+04	  属性

	+05	  頂点数

	+06	  未定義

	+07	  未定義



    Ver. 0.1.x 形式

	+00-03    オブジェクトの StrCode

        +04-05    ID

	+06-07    親オブジェクトのID

	+08	  属性

	+09	  頂点数

	+0a	  未定義

	+0b	  未定義

	+0c	  未定義

	+0d	  未定義

	+0e	  未定義

	+0f	  未定義



	属性の内容: (全バージョン共通)

		00	empty

		01	point

		02	line

		03	lstrip

		04	box

		05	sprite

		06	zoom

		07	spin



    定義ブロックは、8バイト(Ver 0.0.1)/16バイト(Ver 0.1.x) で一つの

    オブジェクトを意味する。親オブジェクトのIDが 0xffff であった場合は、

    親オブジェクトが無いものとして扱う。







§状態定義セクション



[1] 状態定義セクションの構成



    +00000000-00000003    状態を定義されるオブジェクトの数

    +00000004-		  オブジェクト状態情報(個数分)



    オブジェクト状態情報は、ある特定のオブジェクトのとりうる状態をまとめた

    情報である。



    このオブジェクト状態情報が指定個数列挙されたところで、状態定義セクション

    は完了となる。





[2] オブジェクト状態情報の形式



    +00000000-00000001	  0xffff

    +00000002-00000003	  0xffff

    +00000004-00000007	  使用する .tri の StrCode。ただし、上位1バイトは 0x80



    もしくは



    +00000000-00000001	  状態設定の対象となるオブジェクトの ID

    +00000002-00000003	  オブジェクトがもつ状態の数

    +00000004-		  状態定義ブロック(個数分)





[3] 状態定義ブロックの形式



    +00000000-00000003	  状態名の StrCode。上位1バイトは 0x00

    +00000004-		  状態設定プロトコルに基づくシーケンス



    状態設定プロトコルは以下の通り。    

    

        0	状態終了



		0000 XXXXXXXXXXXX XXXXXXXXXXXXXXXX





	1	表示/非表示設定



		0001 XXXXXXXXXXXX XXXXXXXXXXXXXXX d



		    d 0:非表示 / 1:表示



		その状態におけるオブジェクトの表示状態を設定する。





	2	使用テクスチャ設定



		0010 XXXX ssssssss ssssssssssssssss



		    s  テクスチャの StrCode





	3	頂点設定



		0011 XXXXXXXXXXXX mmmmmmmm nnnnnnnn



		    n 設定開始頂点番号

		    m 設定する頂点の個数



		オブジェクトの頂点座標値を設定する。このコードの後に、

		以下の形式の座標値が個数分続く。



		yyyyyyyyyyyyyyyy xxxxxxxxxxxxxxxx



		x  16bit 浮動小数点形式で表現された x 座標値

		y  16bit 浮動小数点形式で表現された y 座標値

		



	4	頂点色設定



		0100 XXXXXXXXXXXX mmmmmmmm nnnnnnnn



		    n 設定開始頂点番号

		    m 設定する頂点の個数



		オブジェクトの頂点RGBA値を設定する。このコードの後に、

		以下の形式の座標値が個数分続く。

		

		aaaaaaaa bbbbbbbb gggggggg rrrrrrrr



		    r  R の輝度値

		    g  G の輝度値

		    b  B の輝度値

		    a  A の輝度値







	5	表示サイズ設定



		0101 XXXXXXXXXXXX XXXXXXXXXXXXXXXX



		これ以下に、次のデータが一つだけ続く。

		

		hhhhhhhhhhhhhhhh wwwwwwwwwwwwwwww



		    w  16bit 浮動小数点形式で表現された表示幅

		    h  16bit 浮動小数点形式で表現された表示高





	6	UV値設定



		0110 XXXXXXXXXXXX XXXXXXXXXXXXXXXX



		これ以下に、次のデータが一つだけ続く。

		

		vvvvvvvvvvvvvvvv uuuuuuuuuuuuuuuu



		    u  16bit 浮動小数点形式で表現された U値

		    v  16bit 浮動小数点形式で表現された V値





	7	テクスチャサイズ設定



		0111 XXXXXXXXXXXX XXXXXXXXXXXXXXXX



		これ以下に、次のデータが一つだけ続く。

		

		HHHHHHHHHHHHHHHH WWWWWWWWWWWWWWWW



		    W  16bit 浮動小数点形式で表現されたテクスチャ幅

		    H  16bit 浮動小数点形式で表現されたテクスチャ高さ





	8	アルファブレンディング設定



		1000 XXXX FFFFFFFF XXXXXXXX DD CC BB AA



		     A 入力カラー値 A の指定

		     B 入力カラー値 B の指定

		     C 入力α値 C の指定

		     D 入力カラー値 D の指定

		     F 固定アルファ値(C が 10 の場合のみ参照)



		アルファブレンディングを行うことと、その際に GS の ALPHA

		レジスタに設定する値を指定する。



		このコマンドが無い場合、アルファブレンディングを行わない。

	



	9	プライオリティ補正値設定(Ver.0.1.1 or later)



		1001 XXXXXXXXXXXX XXXXXXXXXXXXX ppp



		     p プライオリティ補正値



		その状態におけるプライオリティ補正値を指定する。



	10	回転オブジェクト中心位置設定



		1010 XXXXXXXXXXXX XXXXXXXXXXXXXXXX



		以下に一つだけ次のデータが続く。



		yyyyyyyyyyyyyyyy xxxxxxxxxxxxxxxx



		     x	左上頂点からの、x方向の差分

		     y	左上頂点からの、y方向の差分



		回転オブジェクトの回転中心位置を設定する。

		表示座標設定は、この回転中心位置に対するものとなる。



	11	回転角設定



		1011 XXXXXXXXXXXX aaaaaaaaaaaaaaaa



		     a  16bit浮動小数点数: 回転角を、一周4096 で表した値



		回転オブジェクトの状態として、オブジェクト自体の回転角を

		指定する。

		回転角は、一周(2π[rad])を 4096 として表した、浮動小数点数に

		よって与えられる。





	12	下位オブジェクト表示座標係数設定(Ver.0.1.2 or later)



		1100 XXXXXXXXXXXX mmmmmmmmmmmmmmmm



		     m 16bit浮動小数点数: 下位オブジェクト座標値係数



		このオブジェクトの子や孫など、下位のオブジェクトの座標値に

		ここで指定された係数をかける。サイズ等も同様。



		このコマンドが指定されたオブジェクトそのものは影響を受けない。

		





§アクション定義セクション

	+00000000-00000003	アクションの数

	+00000004-		アクションデータ





[1] アクションデータ



	+00000000-00000003	アクションを識別するための StrCode

	+00000004-00000007	トラックの数

	+00000008-		トラックデータ

	





[2] トラックデータ



	+00000000-00000001	操作対象となるオブジェクトの ID

	+00000002-00000003      トラックのステップ数

	+00000004-		トラック情報プロトコルによる、シーケンス





	0	終了



		00 XXXXXXXXXXXXXX XXXXXXXXXXXXXXXX





	1	wait



		01 XXXXXXXXXXXXXX tttttttttttttttt



		    t   待ち時間(1/300秒単位)



		

	2	set



		10 XXXXXX ssssssss ssssssssssssssss



		    s  設定する状態の StrCode





	3	morf



		11 XXXXXXXXXXXXX d tttttttttttttttt



		00000000 ssssssss ssssssssssssssss



		    t  変化に要する時間

		    s  変化後の状態

		    d  回転方向(回転オブジェクトの場合のみ)

