

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


						Written by Yoshihito Kira

						Last Update
						May  21, 2001   Ver.0.1.2
						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		回転スプライト
		08	poly		任意4頂点スプライト
		09	triangle	三角形

    定義ブロックは、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 XXXXXXXXXXXXX v h d

		    d 0:非表示 / 1:表示
		    h 0:水平順方向 / 1:水平反転
		    v 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
				(キートラックでは 0xffff)
	+00000002-00000003      トラックのステップ数
	+00000004-		トラック情報プロトコルによる、シーケンス


	0	終了

		00 00 XXXXXXXXXXXX XXXXXXXXXXXXXXXX


	1	wait

		01 00 XXXXXXXXXXXX tttttttttttttttt

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

		
	2	set

		10 00 XXXX ssssssss ssssssssssssssss

		    s  設定する状態の StrCode


	3	morf

		11 00 XXXXXXXXXXX d tttttttttttttttt

		00000000 ssssssss ssssssssssssssss

		    t  変化に要する時間
		    s  変化後の状態
		    d  回転方向(回転オブジェクトの場合のみ)


	4	signal

		00 01 XXXX ssssssss ssssssssssssssss

		dddddddddddddddd dddddddddddddddd

		    s  シグナル名
		    d  パラメータ

		※キートラックでのみ使用可能
