'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 'コスプレグラフィック作成スクリプト by はにわ 2009/08/16 ver1.10 '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> '■概要 ' モンスターACT/SPRファイルをプレイヤー髪型ACT/SPRファイルに変換します ' '■※注意※ ' 何分待っても処理が終わらない場合はバグが起きている可能性があります ' 自己責任になりますがタスクマネージャからwscript.exeを強制終了して下さい ' '■使い方 ' 1)下記『エラーになるケース』及び『補足』を良くお読み下さい ' 2)モンスターACTファイルをこのスクリプトにD&Dして下さい '  フォルダごとD&Dする事も出来ます ' 3)数十秒で処理が終わり、〜_player.actと〜_player.sprファイルが作成されます ' '■エラーになるケース ' メモリが足りない(メモリに1GB程の空きが必要になる場合があります) ' SPRファイルがACTファイルと同じフォルダに無い ' パスやファイル名にハングル文字が含まれている ' モンスターACTの中に攻撃や死亡等のモーションが無い ' モンスターグラフィックが大きい(例:魔王モロク) ' '■補足 ' 出来たファイルはactorでチェックすることをお勧めします ' 出来たファイルはクライアントで一通りの表示位置を確認することをお勧めします ' '■課題 ' 死亡時画像として死亡モーションの最後の画像を使っているのでおかしい場合がある ' パレットの都合上、半透明にならない(例:ボンゴン攻撃時の残影がはっきり見える) ' 拡大縮小の処理を行っていない ' モンスター固有の効果音を出せない(クライアントの仕様の為) ' '■感謝 ' 本スクリプト作成にあたり、actorを大変参考にさせて頂きました。感謝m(_ _)m '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Option Explicit '================================================================= '動作切替オプション '================================================================= Const FLG_ERROR_SKIP = 0 '1:実行エラー無視 それ以外:実行エラーでストップ '================================================================= '定数宣言 '================================================================= Const ENCODE_UNICODE = "unicode" 'StreamTypeEnum Const adTypeBinary = 1 Const adTypeText = 2 Const adWriteCreate = 1 Const adWriteOver = 2 Const NUM_ACT_PLAYER = 12 'プレイヤーACTの数(13-1=12) Const NUM_ORIENT = 8 '向きの数(8-1=7) Const NUM_SOUND_FILE_NAME = 40 '効果音ファイル名の長さ Const NUM_PI = 3.1415926535897932 '座標変換用 Const STR_FILE_ADD = "_player" '変換後ACT/SPRファイル名への付与文字列 '********************************************************************* 'メイン処理 '********************************************************************* Dim oParam '引数 Dim iPrmCnt '引数カウンタ Dim iPrcCnt '処理数カウンタ Set oParam = WScript.Arguments '引数取得 iPrcCnt = 0 '処理数を初期化 '引数の数だけループ For iPrmCnt=0 To oParam.Count-1 Execute oParam(iPrmCnt), iPrcCnt Next '処理終了メッセージ if iPrcCnt > 0 then WScript.echo "Finish." else WScript.echo "Target Not Found." end if '********************************************************************* 'フォルダ展開ファンクション '********************************************************************* Function Execute(ByVal fName, ByRef iPrcCnt) Dim sFso Dim sFile Dim sFolder Dim sSubFolder Dim iCnt Set sFso = WScript.CreateObject("Scripting.FileSystemObject") 'ファイルの場合 If sFso.FileExists(fName) = True Then '拡張子が.ACTであるもののみを処理する if UCase(Right(fName, 4)) = ".ACT" then '変換後のキーワードを含まないものを対象とする if InStr(fName,STR_FILE_ADD) = 0 then '変換処理 Convert(Left(fName, Len(fName)-4)) '処理数+1 iPrcCnt = iPrcCnt + 1 end if end if 'フォルダの場合 elseif sFso.FolderExists(fName) = True Then Set sFolder = sFso.GetFolder(fName) 'フォルダ内のファイルの数だけループ for Each sFile In sFolder.Files Execute sFolder.Path & "\" & sFile.Name, iPrcCnt next 'フォルダ内のサブフォルダの数だけループ for Each sSubFolder In sFolder.SubFolders Execute sFolder.Path & "\" & sSubFolder.Name, iPrcCnt next end if End Function '********************************************************************* '変換ファンクション '********************************************************************* Function Convert(fName) 'エラー無視設定 if FLG_ERROR_SKIP = 1 then On Error Resume Next end if '================================================================= '変数宣言 '================================================================= Dim sInAct '変換前ACTファイル名 Dim sOutAct '変換後ACTファイル名 Dim sInSpr '変換前SPRファイル名 Dim sOutSpr '変換後SPRファイル名 Dim sInp '変換前ACTファイルストリーム Dim sOut '変換後ACTファイルストリーム Dim bStream 'VBScriptバイトデータ操作クラス Dim iImgS 'イメージサイズ Dim iImgX 'イメージ幅 Dim iImgY 'イメージ高さ Dim iPos '読み込み位置 Dim iInPos '読み込み位置(入力) Dim iOutPos '読み込み位置(出力) Dim iSprNo 'スプライトNo Dim sFso 'FileSystemObject 'ACTデータ配列 Dim sHeader(5, 3) 'ヘッダー情報(6情報 * 最大4byte) Dim sFrmNum(12, 8, 3) 'フレーム数(act数 * 8方向 * 4byte) Dim sFrame() 'フレーム情報 Dim sSprite() 'スプライト情報 Dim sExtent() '拡張情報 Dim sSndNum(3) '効果音数(4byte) Dim sSound() '効果音情報 Dim sInterval(12, 7, 3) 'アニメーション間隔情報(act数 * 8方向 * 4byte) Dim sExtCns(12, 7, 8, 1) '拡張情報固定値(act数 * 8方向 * 最大9フレーム * 4情報) Dim sIntervalCns(12, 7) 'アニメーション間隔情報固定値(act数 * 8方向) 'SPRデータ配列 Dim sSprHead(2, 3) 'ヘッダー情報(3情報 * 最大4byte) Dim sImage() 'イメージ情報 Dim sImageSyn() '合成後イメージ情報 Dim sImageCmp() '圧縮後イメージ情報 Dim sImageData() 'イメージデータ Dim sImageDataSyn() '合成後イメージデータ Dim sImageDataCmp() '圧縮後イメージデータ Dim sPallet(255, 3) 'パレットデータ(256色 * 4byte) 'ACT-SPR対応 Dim sActSpr() 'ACT-SPR対応 '画像合成用 Dim sSyn(513, 513) '画像合成下地(512+1ドット * 512+1ドット) 'カウンタ Dim iActCnt 'ACTカウンタ Dim iOriCnt '向きカウンタ Dim iOriCntExt '向きカウンタ Dim iFrmCnt 'フレームカウンタ Dim iPalCnt 'パレットカウンタ Dim iSprCnt 'スプライトカウンタ Dim iExtCnt '拡張情報数カウンタ Dim iSndCnt '効果音カウンタ Dim iSefCnt '効果音ファイル名カウンタ Dim iImgCnt 'イメージカウンタ Dim iPlayActCnt 'プレイヤーACTカウンタ Dim iFrmCntExt 'フレームカウンタ(拡張) Dim iSprCntExt 'スプライトカウンタ(拡張) Dim iImgSCnt '圧縮イメージ展開/圧縮カウンタ Dim iZeroCnt '圧縮イメージ&H00データカウンタ Dim iCmpImgCnt '圧縮イメージ数 Dim iXCnt '幅カウンタ Dim iYCnt '高さカウンタ Dim iSCnt 'サイズカウンタ Dim iBuf '数値バッファ Dim iActNum 'アニメーション数 Dim iFrmNum 'フレーム数 Dim iPalNum 'パレット数 Dim iSprNum 'スプライト数 Dim iExtNum '拡張情報数 Dim iSndNum '効果音数 Dim iImgNum 'イメージ数 Dim iXMaxNum '幅最大値 Dim iYMaxNum '高さ最大値 Dim iXofsNum Dim iYofsNum Dim iXImgNum Dim iYImgNum Dim iRImgNum Dim iMirrNum Dim iRotNum Dim iRight Dim iLeft Dim iTop Dim iBottom Dim iRightMax Dim iLeftMax Dim iTopMax Dim iBottomMax Dim iXPos Dim iYPos Dim iYCntSyn Dim iXCntSyn Dim iRad Dim iImgSyn Dim iRotX Dim iRotY Dim iSprSyn Dim iMirFlg Dim iSin Dim iCos Dim dW Dim dH Dim iFrmMax Dim iWh Dim iHh Dim iXMagNum Dim iYMagNum Dim iTypNum Dim iXofsVal 'Xoffs補正用 Dim iXofsValTop 'Xoffs補正用 Dim iXofsValBtm 'Xoffs補正用 Dim sXofsValTop 'Xoffs補正用 Dim sXofsValBtm 'Xoffs補正用 Dim iYofsVal 'Yoffs補正用 Dim iYofsValTop 'Yoffs補正用 Dim iYofsValBtm 'Yoffs補正用 Dim sYofsValTop 'Yoffs補正用 Dim sYofsValBtm 'Yoffs補正用 Dim iTypeCd 'ACTファイルフォーマットタイプ '================================================================= '初期設定 '================================================================= sInAct = fName & ".act" sOutAct = fName & STR_FILE_ADD & ".act" sInSpr = fName & ".spr" sOutSpr = fName & STR_FILE_ADD & ".spr" Set sInp = CreateObject("ADODB.Stream") sInp.Type = adTypeBinary Set sOut = CreateObject("ADODB.Stream") sOut.Type = adTypeBinary Set bStream = New ByteStream 'FileSystemObject呼び出し Set sFso = WScript.CreateObject("Scripting.FileSystemObject") '拡張情報固定値 'act00(No0〜No7) sExtCns(0, 0, 0, 0) = "00000001" sExtCns(0, 0, 0, 1) = "FFFFFFC8" sExtCns(0, 0, 1, 0) = "FFFFFFFD" sExtCns(0, 0, 1, 1) = "FFFFFFC7" sExtCns(0, 0, 2, 0) = "00000005" sExtCns(0, 0, 2, 1) = "FFFFFFC7" sExtCns(0, 1, 0, 0) = "FFFFFFFC" sExtCns(0, 1, 0, 1) = "FFFFFFC7" sExtCns(0, 1, 1, 0) = "FFFFFFFA" sExtCns(0, 1, 1, 1) = "FFFFFFC7" sExtCns(0, 1, 2, 0) = "00000000" sExtCns(0, 1, 2, 1) = "FFFFFFC8" sExtCns(0, 2, 0, 0) = "FFFFFFFA" sExtCns(0, 2, 0, 1) = "FFFFFFC7" sExtCns(0, 2, 1, 0) = "0000000A" sExtCns(0, 2, 1, 1) = "FFFFFFB7" sExtCns(0, 2, 2, 0) = "FFFFFFFB" sExtCns(0, 2, 2, 1) = "FFFFFFC8" sExtCns(0, 3, 0, 0) = "0000000A" sExtCns(0, 3, 0, 1) = "FFFFFFB6" sExtCns(0, 3, 1, 0) = "0000000B" sExtCns(0, 3, 1, 1) = "FFFFFFB7" sExtCns(0, 3, 2, 0) = "FFFFFFFB" sExtCns(0, 3, 2, 1) = "FFFFFFC7" sExtCns(0, 4, 0, 0) = "0000000B" sExtCns(0, 4, 0, 1) = "FFFFFFB7" sExtCns(0, 4, 1, 0) = "FFFFFFF7" sExtCns(0, 4, 1, 1) = "FFFFFFB7" sExtCns(0, 4, 2, 0) = "0000000A" sExtCns(0, 4, 2, 1) = "FFFFFFB7" sExtCns(0, 5, 0, 0) = "FFFFFFF7" sExtCns(0, 5, 0, 1) = "FFFFFFB6" sExtCns(0, 5, 1, 0) = "00000006" sExtCns(0, 5, 1, 1) = "FFFFFFC7" sExtCns(0, 5, 2, 0) = "0000000B" sExtCns(0, 5, 2, 1) = "FFFFFFB6" sExtCns(0, 6, 0, 0) = "00000007" sExtCns(0, 6, 0, 1) = "FFFFFFC8" sExtCns(0, 6, 1, 0) = "00000006" sExtCns(0, 6, 1, 1) = "FFFFFFC8" sExtCns(0, 6, 2, 0) = "FFFFFFF8" sExtCns(0, 6, 2, 1) = "FFFFFFB7" sExtCns(0, 7, 0, 0) = "00000006" sExtCns(0, 7, 0, 1) = "FFFFFFC7" sExtCns(0, 7, 1, 0) = "00000003" sExtCns(0, 7, 1, 1) = "FFFFFFC8" sExtCns(0, 7, 2, 0) = "00000008" sExtCns(0, 7, 2, 1) = "FFFFFFC7" 'act01(No8〜No15) sExtCns(1, 0, 0, 0) = "00000001" sExtCns(1, 0, 0, 1) = "FFFFFFC8" sExtCns(1, 0, 1, 0) = "00000001" sExtCns(1, 0, 1, 1) = "FFFFFFC9" sExtCns(1, 0, 2, 0) = "00000001" sExtCns(1, 0, 2, 1) = "FFFFFFCB" sExtCns(1, 0, 3, 0) = "00000001" sExtCns(1, 0, 3, 1) = "FFFFFFCA" sExtCns(1, 0, 4, 0) = "00000001" sExtCns(1, 0, 4, 1) = "FFFFFFC8" sExtCns(1, 0, 5, 0) = "00000001" sExtCns(1, 0, 5, 1) = "FFFFFFC9" sExtCns(1, 0, 6, 0) = "00000001" sExtCns(1, 0, 6, 1) = "FFFFFFCB" sExtCns(1, 0, 7, 0) = "00000001" sExtCns(1, 0, 7, 1) = "FFFFFFCA" sExtCns(1, 1, 0, 0) = "FFFFFFFC" sExtCns(1, 1, 0, 1) = "FFFFFFC7" sExtCns(1, 1, 1, 0) = "FFFFFFFC" sExtCns(1, 1, 1, 1) = "FFFFFFC8" sExtCns(1, 1, 2, 0) = "FFFFFFFC" sExtCns(1, 1, 2, 1) = "FFFFFFCA" sExtCns(1, 1, 3, 0) = "FFFFFFFC" sExtCns(1, 1, 3, 1) = "FFFFFFC9" sExtCns(1, 1, 4, 0) = "FFFFFFFC" sExtCns(1, 1, 4, 1) = "FFFFFFC7" sExtCns(1, 1, 5, 0) = "FFFFFFFC" sExtCns(1, 1, 5, 1) = "FFFFFFC8" sExtCns(1, 1, 6, 0) = "FFFFFFFC" sExtCns(1, 1, 6, 1) = "FFFFFFCA" sExtCns(1, 1, 7, 0) = "FFFFFFFC" sExtCns(1, 1, 7, 1) = "FFFFFFC9" sExtCns(1, 2, 0, 0) = "FFFFFFFA" sExtCns(1, 2, 0, 1) = "FFFFFFC7" sExtCns(1, 2, 1, 0) = "FFFFFFFA" sExtCns(1, 2, 1, 1) = "FFFFFFC8" sExtCns(1, 2, 2, 0) = "FFFFFFFA" sExtCns(1, 2, 2, 1) = "FFFFFFCA" sExtCns(1, 2, 3, 0) = "FFFFFFFA" sExtCns(1, 2, 3, 1) = "FFFFFFC9" sExtCns(1, 2, 4, 0) = "FFFFFFFA" sExtCns(1, 2, 4, 1) = "FFFFFFC7" sExtCns(1, 2, 5, 0) = "FFFFFFFA" sExtCns(1, 2, 5, 1) = "FFFFFFC8" sExtCns(1, 2, 6, 0) = "FFFFFFFA" sExtCns(1, 2, 6, 1) = "FFFFFFCA" sExtCns(1, 2, 7, 0) = "FFFFFFFA" sExtCns(1, 2, 7, 1) = "FFFFFFC9" sExtCns(1, 3, 0, 0) = "0000000A" sExtCns(1, 3, 0, 1) = "FFFFFFB6" sExtCns(1, 3, 1, 0) = "0000000A" sExtCns(1, 3, 1, 1) = "FFFFFFB7" sExtCns(1, 3, 2, 0) = "0000000A" sExtCns(1, 3, 2, 1) = "FFFFFFB9" sExtCns(1, 3, 3, 0) = "0000000A" sExtCns(1, 3, 3, 1) = "FFFFFFB8" sExtCns(1, 3, 4, 0) = "0000000A" sExtCns(1, 3, 4, 1) = "FFFFFFB6" sExtCns(1, 3, 5, 0) = "0000000A" sExtCns(1, 3, 5, 1) = "FFFFFFB7" sExtCns(1, 3, 6, 0) = "0000000A" sExtCns(1, 3, 6, 1) = "FFFFFFB9" sExtCns(1, 3, 7, 0) = "0000000A" sExtCns(1, 3, 7, 1) = "FFFFFFB8" sExtCns(1, 4, 0, 0) = "0000000B" sExtCns(1, 4, 0, 1) = "FFFFFFB7" sExtCns(1, 4, 1, 0) = "0000000B" sExtCns(1, 4, 1, 1) = "FFFFFFB8" sExtCns(1, 4, 2, 0) = "0000000B" sExtCns(1, 4, 2, 1) = "FFFFFFBA" sExtCns(1, 4, 3, 0) = "0000000B" sExtCns(1, 4, 3, 1) = "FFFFFFB9" sExtCns(1, 4, 4, 0) = "0000000B" sExtCns(1, 4, 4, 1) = "FFFFFFB7" sExtCns(1, 4, 5, 0) = "0000000B" sExtCns(1, 4, 5, 1) = "FFFFFFB8" sExtCns(1, 4, 6, 0) = "0000000B" sExtCns(1, 4, 6, 1) = "FFFFFFBA" sExtCns(1, 4, 7, 0) = "0000000B" sExtCns(1, 4, 7, 1) = "FFFFFFB9" sExtCns(1, 5, 0, 0) = "FFFFFFF7" sExtCns(1, 5, 0, 1) = "FFFFFFB6" sExtCns(1, 5, 1, 0) = "FFFFFFF7" sExtCns(1, 5, 1, 1) = "FFFFFFB7" sExtCns(1, 5, 2, 0) = "FFFFFFF7" sExtCns(1, 5, 2, 1) = "FFFFFFB9" sExtCns(1, 5, 3, 0) = "FFFFFFF7" sExtCns(1, 5, 3, 1) = "FFFFFFB8" sExtCns(1, 5, 4, 0) = "FFFFFFF7" sExtCns(1, 5, 4, 1) = "FFFFFFB6" sExtCns(1, 5, 5, 0) = "FFFFFFF7" sExtCns(1, 5, 5, 1) = "FFFFFFB7" sExtCns(1, 5, 6, 0) = "FFFFFFF7" sExtCns(1, 5, 6, 1) = "FFFFFFB9" sExtCns(1, 5, 7, 0) = "FFFFFFF7" sExtCns(1, 5, 7, 1) = "FFFFFFB8" sExtCns(1, 6, 0, 0) = "00000007" sExtCns(1, 6, 0, 1) = "FFFFFFC7" sExtCns(1, 6, 1, 0) = "00000007" sExtCns(1, 6, 1, 1) = "FFFFFFC8" sExtCns(1, 6, 2, 0) = "00000007" sExtCns(1, 6, 2, 1) = "FFFFFFCA" sExtCns(1, 6, 3, 0) = "00000007" sExtCns(1, 6, 3, 1) = "FFFFFFC9" sExtCns(1, 6, 4, 0) = "00000007" sExtCns(1, 6, 4, 1) = "FFFFFFC7" sExtCns(1, 6, 5, 0) = "00000007" sExtCns(1, 6, 5, 1) = "FFFFFFC8" sExtCns(1, 6, 6, 0) = "00000007" sExtCns(1, 6, 6, 1) = "FFFFFFCA" sExtCns(1, 6, 7, 0) = "00000007" sExtCns(1, 6, 7, 1) = "FFFFFFC9" sExtCns(1, 7, 0, 0) = "00000005" sExtCns(1, 7, 0, 1) = "FFFFFFC7" sExtCns(1, 7, 1, 0) = "00000005" sExtCns(1, 7, 1, 1) = "FFFFFFC8" sExtCns(1, 7, 2, 0) = "00000005" sExtCns(1, 7, 2, 1) = "FFFFFFCA" sExtCns(1, 7, 3, 0) = "00000005" sExtCns(1, 7, 3, 1) = "FFFFFFC9" sExtCns(1, 7, 4, 0) = "00000005" sExtCns(1, 7, 4, 1) = "FFFFFFC7" sExtCns(1, 7, 5, 0) = "00000005" sExtCns(1, 7, 5, 1) = "FFFFFFC8" sExtCns(1, 7, 6, 0) = "00000005" sExtCns(1, 7, 6, 1) = "FFFFFFCA" sExtCns(1, 7, 7, 0) = "00000005" sExtCns(1, 7, 7, 1) = "FFFFFFC9" 'act02(No16〜No23) sExtCns(2, 0, 0, 0) = "00000001" sExtCns(2, 0, 0, 1) = "FFFFFFDD" sExtCns(2, 0, 1, 0) = "FFFFFFFE" sExtCns(2, 0, 1, 1) = "FFFFFFDC" sExtCns(2, 0, 2, 0) = "00000004" sExtCns(2, 0, 2, 1) = "FFFFFFDC" sExtCns(2, 1, 0, 0) = "FFFFFFFD" sExtCns(2, 1, 0, 1) = "FFFFFFDC" sExtCns(2, 1, 1, 0) = "FFFFFFFC" sExtCns(2, 1, 1, 1) = "FFFFFFDC" sExtCns(2, 1, 2, 0) = "00000001" sExtCns(2, 1, 2, 1) = "FFFFFFDD" sExtCns(2, 2, 0, 0) = "FFFFFFFB" sExtCns(2, 2, 0, 1) = "FFFFFFDC" sExtCns(2, 2, 1, 0) = "0000000A" sExtCns(2, 2, 1, 1) = "FFFFFFCB" sExtCns(2, 2, 2, 0) = "FFFFFFFC" sExtCns(2, 2, 2, 1) = "FFFFFFDC" sExtCns(2, 3, 0, 0) = "0000000B" sExtCns(2, 3, 0, 1) = "FFFFFFCB" sExtCns(2, 3, 1, 0) = "0000000B" sExtCns(2, 3, 1, 1) = "FFFFFFCB" sExtCns(2, 3, 2, 0) = "FFFFFFFC" sExtCns(2, 3, 2, 1) = "FFFFFFDC" sExtCns(2, 4, 0, 0) = "0000000B" sExtCns(2, 4, 0, 1) = "FFFFFFCD" sExtCns(2, 4, 1, 0) = "FFFFFFF7" sExtCns(2, 4, 1, 1) = "FFFFFFCE" sExtCns(2, 4, 2, 0) = "00000009" sExtCns(2, 4, 2, 1) = "FFFFFFCE" sExtCns(2, 5, 0, 0) = "FFFFFFF6" sExtCns(2, 5, 0, 1) = "FFFFFFCB" sExtCns(2, 5, 1, 0) = "00000006" sExtCns(2, 5, 1, 1) = "FFFFFFDC" sExtCns(2, 5, 2, 0) = "0000000B" sExtCns(2, 5, 2, 1) = "FFFFFFCC" sExtCns(2, 6, 0, 0) = "00000006" sExtCns(2, 6, 0, 1) = "FFFFFFDC" sExtCns(2, 6, 1, 0) = "00000005" sExtCns(2, 6, 1, 1) = "FFFFFFDC" sExtCns(2, 6, 2, 0) = "FFFFFFF6" sExtCns(2, 6, 2, 1) = "FFFFFFCB" sExtCns(2, 7, 0, 0) = "00000004" sExtCns(2, 7, 0, 1) = "FFFFFFDC" sExtCns(2, 7, 1, 0) = "00000000" sExtCns(2, 7, 1, 1) = "FFFFFFDD" sExtCns(2, 7, 2, 0) = "00000005" sExtCns(2, 7, 2, 1) = "FFFFFFDC" 'act03(No24〜No31) sExtCns(3, 0, 0, 0) = "FFFFFFF5" sExtCns(3, 0, 0, 1) = "FFFFFFCB" sExtCns(3, 0, 1, 0) = "FFFFFFF2" sExtCns(3, 0, 1, 1) = "FFFFFFD7" sExtCns(3, 0, 2, 0) = "FFFFFFF5" sExtCns(3, 0, 2, 1) = "FFFFFFCD" sExtCns(3, 1, 0, 0) = "FFFFFFF5" sExtCns(3, 1, 0, 1) = "FFFFFFCB" sExtCns(3, 1, 1, 0) = "FFFFFFF2" sExtCns(3, 1, 1, 1) = "FFFFFFD7" sExtCns(3, 1, 2, 0) = "FFFFFFF5" sExtCns(3, 1, 2, 1) = "FFFFFFCD" sExtCns(3, 2, 0, 0) = "FFFFFFF4" sExtCns(3, 2, 0, 1) = "FFFFFFCE" sExtCns(3, 2, 1, 0) = "FFFFFFF3" sExtCns(3, 2, 1, 1) = "FFFFFFDA" sExtCns(3, 2, 2, 0) = "FFFFFFF4" sExtCns(3, 2, 2, 1) = "FFFFFFCF" sExtCns(3, 3, 0, 0) = "FFFFFFF4" sExtCns(3, 3, 0, 1) = "FFFFFFCE" sExtCns(3, 3, 1, 0) = "FFFFFFF3" sExtCns(3, 3, 1, 1) = "FFFFFFDA" sExtCns(3, 3, 2, 0) = "FFFFFFF4" sExtCns(3, 3, 2, 1) = "FFFFFFCF" sExtCns(3, 4, 0, 0) = "0000000D" sExtCns(3, 4, 0, 1) = "FFFFFFCE" sExtCns(3, 4, 1, 0) = "0000000E" sExtCns(3, 4, 1, 1) = "FFFFFFDA" sExtCns(3, 4, 2, 0) = "0000000D" sExtCns(3, 4, 2, 1) = "FFFFFFCF" sExtCns(3, 5, 0, 0) = "0000000D" sExtCns(3, 5, 0, 1) = "FFFFFFCE" sExtCns(3, 5, 1, 0) = "0000000E" sExtCns(3, 5, 1, 1) = "FFFFFFDA" sExtCns(3, 5, 2, 0) = "0000000D" sExtCns(3, 5, 2, 1) = "FFFFFFCF" sExtCns(3, 6, 0, 0) = "0000000C" sExtCns(3, 6, 0, 1) = "FFFFFFCB" sExtCns(3, 6, 1, 0) = "0000000F" sExtCns(3, 6, 1, 1) = "FFFFFFD7" sExtCns(3, 6, 2, 0) = "0000000C" sExtCns(3, 6, 2, 1) = "FFFFFFCD" sExtCns(3, 7, 0, 0) = "0000000C" sExtCns(3, 7, 0, 1) = "FFFFFFCB" sExtCns(3, 7, 1, 0) = "0000000F" sExtCns(3, 7, 1, 1) = "FFFFFFD7" sExtCns(3, 7, 2, 0) = "0000000C" sExtCns(3, 7, 2, 1) = "FFFFFFCD" 'act04(No32〜No39) sExtCns(4, 0, 0, 0) = "FFFFFFFD" ' sExtCns(4, 0, 0, 0) = "FFFFFFFD" sExtCns(4, 0, 0, 1) = "FFFFFFC9" ' sExtCns(4, 0, 0, 1) = "FFFFFFC9" sExtCns(4, 0, 1, 0) = "FFFFFFFD" ' sExtCns(4, 0, 1, 0) = "FFFFFFFD" sExtCns(4, 0, 1, 1) = "FFFFFFC8" ' sExtCns(4, 0, 1, 1) = "FFFFFFC6" sExtCns(4, 0, 2, 0) = "FFFFFFFD" ' sExtCns(4, 0, 2, 0) = "FFFFFFFD" sExtCns(4, 0, 2, 1) = "FFFFFFC7" ' sExtCns(4, 0, 2, 1) = "FFFFFFC5" sExtCns(4, 0, 3, 0) = "FFFFFFFD" ' sExtCns(4, 0, 3, 0) = "FFFFFFFD" sExtCns(4, 0, 3, 1) = "FFFFFFC6" ' sExtCns(4, 0, 3, 1) = "FFFFFFC5" sExtCns(4, 0, 4, 0) = "FFFFFFFD" ' sExtCns(4, 0, 4, 0) = "FFFFFFFD" sExtCns(4, 0, 4, 1) = "FFFFFFC6" ' sExtCns(4, 0, 4, 1) = "FFFFFFC6" sExtCns(4, 0, 5, 0) = "FFFFFFFD" ' sExtCns(4, 0, 5, 0) = "FFFFFFFD" sExtCns(4, 0, 5, 1) = "FFFFFFC7" ' sExtCns(4, 0, 5, 1) = "FFFFFFC8" sExtCns(4, 1, 0, 0) = "FFFFFFFD" ' sExtCns(4, 1, 0, 0) = "FFFFFFFD" sExtCns(4, 1, 0, 1) = "FFFFFFC9" ' sExtCns(4, 1, 0, 1) = "FFFFFFC9" sExtCns(4, 1, 1, 0) = "FFFFFFFD" ' sExtCns(4, 1, 1, 0) = "FFFFFFFD" sExtCns(4, 1, 1, 1) = "FFFFFFC8" ' sExtCns(4, 1, 1, 1) = "FFFFFFC6" sExtCns(4, 1, 2, 0) = "FFFFFFFD" ' sExtCns(4, 1, 2, 0) = "FFFFFFFD" sExtCns(4, 1, 2, 1) = "FFFFFFC7" ' sExtCns(4, 1, 2, 1) = "FFFFFFC5" sExtCns(4, 1, 3, 0) = "FFFFFFFD" ' sExtCns(4, 1, 3, 0) = "FFFFFFFD" sExtCns(4, 1, 3, 1) = "FFFFFFC6" ' sExtCns(4, 1, 3, 1) = "FFFFFFC5" sExtCns(4, 1, 4, 0) = "FFFFFFFD" ' sExtCns(4, 1, 4, 0) = "FFFFFFFD" sExtCns(4, 1, 4, 1) = "FFFFFFC6" ' sExtCns(4, 1, 4, 1) = "FFFFFFC6" sExtCns(4, 1, 5, 0) = "FFFFFFFD" ' sExtCns(4, 1, 5, 0) = "FFFFFFFD" sExtCns(4, 1, 5, 1) = "FFFFFFC7" ' sExtCns(4, 1, 5, 1) = "FFFFFFC8" sExtCns(4, 2, 0, 0) = "0000000C" ' sExtCns(4, 2, 0, 0) = "0000000C" sExtCns(4, 2, 0, 1) = "FFFFFFB8" ' sExtCns(4, 2, 0, 1) = "FFFFFFB8" sExtCns(4, 2, 1, 0) = "0000000C" ' sExtCns(4, 2, 1, 0) = "0000000C" sExtCns(4, 2, 1, 1) = "FFFFFFB7" ' sExtCns(4, 2, 1, 1) = "FFFFFFB5" sExtCns(4, 2, 2, 0) = "0000000C" ' sExtCns(4, 2, 2, 0) = "0000000C" sExtCns(4, 2, 2, 1) = "FFFFFFB6" ' sExtCns(4, 2, 2, 1) = "FFFFFFB4" sExtCns(4, 2, 3, 0) = "0000000C" ' sExtCns(4, 2, 3, 0) = "0000000C" sExtCns(4, 2, 3, 1) = "FFFFFFB5" ' sExtCns(4, 2, 3, 1) = "FFFFFFB4" sExtCns(4, 2, 4, 0) = "0000000C" ' sExtCns(4, 2, 4, 0) = "0000000C" sExtCns(4, 2, 4, 1) = "FFFFFFB5" ' sExtCns(4, 2, 4, 1) = "FFFFFFB5" sExtCns(4, 2, 5, 0) = "0000000C" ' sExtCns(4, 2, 5, 0) = "0000000C" sExtCns(4, 2, 5, 1) = "FFFFFFB6" ' sExtCns(4, 2, 5, 1) = "FFFFFFB7" sExtCns(4, 3, 0, 0) = "0000000C" ' sExtCns(4, 3, 0, 0) = "0000000C" sExtCns(4, 3, 0, 1) = "FFFFFFB8" ' sExtCns(4, 3, 0, 1) = "FFFFFFB8" sExtCns(4, 3, 1, 0) = "0000000C" ' sExtCns(4, 3, 1, 0) = "0000000C" sExtCns(4, 3, 1, 1) = "FFFFFFB7" ' sExtCns(4, 3, 1, 1) = "FFFFFFB5" sExtCns(4, 3, 2, 0) = "0000000C" ' sExtCns(4, 3, 2, 0) = "0000000C" sExtCns(4, 3, 2, 1) = "FFFFFFB6" ' sExtCns(4, 3, 2, 1) = "FFFFFFB4" sExtCns(4, 3, 3, 0) = "0000000C" ' sExtCns(4, 3, 3, 0) = "0000000C" sExtCns(4, 3, 3, 1) = "FFFFFFB5" ' sExtCns(4, 3, 3, 1) = "FFFFFFB4" sExtCns(4, 3, 4, 0) = "0000000C" ' sExtCns(4, 3, 4, 0) = "0000000C" sExtCns(4, 3, 4, 1) = "FFFFFFB5" ' sExtCns(4, 3, 4, 1) = "FFFFFFB5" sExtCns(4, 3, 5, 0) = "0000000C" ' sExtCns(4, 3, 5, 0) = "0000000C" sExtCns(4, 3, 5, 1) = "FFFFFFB6" ' sExtCns(4, 3, 5, 1) = "FFFFFFB7" sExtCns(4, 4, 0, 0) = "FFFFFFF5" ' sExtCns(4, 4, 0, 0) = "FFFFFFF5" sExtCns(4, 4, 0, 1) = "FFFFFFB8" ' sExtCns(4, 4, 0, 1) = "FFFFFFB8" sExtCns(4, 4, 1, 0) = "FFFFFFF5" ' sExtCns(4, 4, 1, 0) = "FFFFFFF5" sExtCns(4, 4, 1, 1) = "FFFFFFB7" ' sExtCns(4, 4, 1, 1) = "FFFFFFB5" sExtCns(4, 4, 2, 0) = "FFFFFFF5" ' sExtCns(4, 4, 2, 0) = "FFFFFFF5" sExtCns(4, 4, 2, 1) = "FFFFFFB6" ' sExtCns(4, 4, 2, 1) = "FFFFFFB4" sExtCns(4, 4, 3, 0) = "FFFFFFF5" ' sExtCns(4, 4, 3, 0) = "FFFFFFF5" sExtCns(4, 4, 3, 1) = "FFFFFFB5" ' sExtCns(4, 4, 3, 1) = "FFFFFFB4" sExtCns(4, 4, 4, 0) = "FFFFFFF5" ' sExtCns(4, 4, 4, 0) = "FFFFFFF5" sExtCns(4, 4, 4, 1) = "FFFFFFB5" ' sExtCns(4, 4, 4, 1) = "FFFFFFB5" sExtCns(4, 4, 5, 0) = "FFFFFFF5" ' sExtCns(4, 4, 5, 0) = "FFFFFFF5" sExtCns(4, 4, 5, 1) = "FFFFFFB6" ' sExtCns(4, 4, 5, 1) = "FFFFFFB7" sExtCns(4, 5, 0, 0) = "FFFFFFF5" ' sExtCns(4, 5, 0, 0) = "FFFFFFF5" sExtCns(4, 5, 0, 1) = "FFFFFFB8" ' sExtCns(4, 5, 0, 1) = "FFFFFFB8" sExtCns(4, 5, 1, 0) = "FFFFFFF5" ' sExtCns(4, 5, 1, 0) = "FFFFFFF5" sExtCns(4, 5, 1, 1) = "FFFFFFB7" ' sExtCns(4, 5, 1, 1) = "FFFFFFB5" sExtCns(4, 5, 2, 0) = "FFFFFFF5" ' sExtCns(4, 5, 2, 0) = "FFFFFFF5" sExtCns(4, 5, 2, 1) = "FFFFFFB6" ' sExtCns(4, 5, 2, 1) = "FFFFFFB4" sExtCns(4, 5, 3, 0) = "FFFFFFF5" ' sExtCns(4, 5, 3, 0) = "FFFFFFF5" sExtCns(4, 5, 3, 1) = "FFFFFFB5" ' sExtCns(4, 5, 3, 1) = "FFFFFFB4" sExtCns(4, 5, 4, 0) = "FFFFFFF5" ' sExtCns(4, 5, 4, 0) = "FFFFFFF5" sExtCns(4, 5, 4, 1) = "FFFFFFB5" ' sExtCns(4, 5, 4, 1) = "FFFFFFB5" sExtCns(4, 5, 5, 0) = "FFFFFFF5" ' sExtCns(4, 5, 5, 0) = "FFFFFFF5" sExtCns(4, 5, 5, 1) = "FFFFFFB6" ' sExtCns(4, 5, 5, 1) = "FFFFFFB7" sExtCns(4, 6, 0, 0) = "00000004" ' sExtCns(4, 6, 0, 0) = "00000004" sExtCns(4, 6, 0, 1) = "FFFFFFC9" ' sExtCns(4, 6, 0, 1) = "FFFFFFC9" sExtCns(4, 6, 1, 0) = "00000004" ' sExtCns(4, 6, 1, 0) = "00000004" sExtCns(4, 6, 1, 1) = "FFFFFFC8" ' sExtCns(4, 6, 1, 1) = "FFFFFFC6" sExtCns(4, 6, 2, 0) = "00000004" ' sExtCns(4, 6, 2, 0) = "00000004" sExtCns(4, 6, 2, 1) = "FFFFFFC7" ' sExtCns(4, 6, 2, 1) = "FFFFFFC5" sExtCns(4, 6, 3, 0) = "00000004" ' sExtCns(4, 6, 3, 0) = "00000004" sExtCns(4, 6, 3, 1) = "FFFFFFC6" ' sExtCns(4, 6, 3, 1) = "FFFFFFC5" sExtCns(4, 6, 4, 0) = "00000004" ' sExtCns(4, 6, 4, 0) = "00000004" sExtCns(4, 6, 4, 1) = "FFFFFFC6" ' sExtCns(4, 6, 4, 1) = "FFFFFFC6" sExtCns(4, 6, 5, 0) = "00000004" ' sExtCns(4, 6, 5, 0) = "00000004" sExtCns(4, 6, 5, 1) = "FFFFFFC7" ' sExtCns(4, 6, 5, 1) = "FFFFFFC8" sExtCns(4, 7, 0, 0) = "00000004" ' sExtCns(4, 7, 0, 0) = "00000004" sExtCns(4, 7, 0, 1) = "FFFFFFC9" ' sExtCns(4, 7, 0, 1) = "FFFFFFC9" sExtCns(4, 7, 1, 0) = "00000004" ' sExtCns(4, 7, 1, 0) = "00000004" sExtCns(4, 7, 1, 1) = "FFFFFFC8" ' sExtCns(4, 7, 1, 1) = "FFFFFFC6" sExtCns(4, 7, 2, 0) = "00000004" ' sExtCns(4, 7, 2, 0) = "00000004" sExtCns(4, 7, 2, 1) = "FFFFFFC7" ' sExtCns(4, 7, 2, 1) = "FFFFFFC5" sExtCns(4, 7, 3, 0) = "00000004" ' sExtCns(4, 7, 3, 0) = "00000004" sExtCns(4, 7, 3, 1) = "FFFFFFC6" ' sExtCns(4, 7, 3, 1) = "FFFFFFC5" sExtCns(4, 7, 4, 0) = "00000004" ' sExtCns(4, 7, 4, 0) = "00000004" sExtCns(4, 7, 4, 1) = "FFFFFFC6" ' sExtCns(4, 7, 4, 1) = "FFFFFFC6" sExtCns(4, 7, 5, 0) = "00000004" ' sExtCns(4, 7, 5, 0) = "00000004" sExtCns(4, 7, 5, 1) = "FFFFFFC7" ' sExtCns(4, 7, 5, 1) = "FFFFFFC8" 'act05(No40〜No47) sExtCns(5, 0, 0, 0) = "FFFFFFFD" sExtCns(5, 0, 0, 1) = "FFFFFFC7" sExtCns(5, 0, 1, 0) = "FFFFFFF8" sExtCns(5, 0, 1, 1) = "FFFFFFC7" sExtCns(5, 0, 2, 0) = "FFFFFFE9" sExtCns(5, 0, 2, 1) = "FFFFFFD5" sExtCns(5, 0, 3, 0) = "FFFFFFE8" sExtCns(5, 0, 3, 1) = "FFFFFFD6" sExtCns(5, 0, 4, 0) = "FFFFFFE8" sExtCns(5, 0, 4, 1) = "FFFFFFD6" sExtCns(5, 1, 0, 0) = "FFFFFFFD" sExtCns(5, 1, 0, 1) = "FFFFFFC7" sExtCns(5, 1, 1, 0) = "FFFFFFF8" sExtCns(5, 1, 1, 1) = "FFFFFFC7" sExtCns(5, 1, 2, 0) = "FFFFFFE9" sExtCns(5, 1, 2, 1) = "FFFFFFD5" sExtCns(5, 1, 3, 0) = "FFFFFFE8" sExtCns(5, 1, 3, 1) = "FFFFFFD6" sExtCns(5, 1, 4, 0) = "FFFFFFE8" sExtCns(5, 1, 4, 1) = "FFFFFFD6" sExtCns(5, 2, 0, 0) = "0000000C" sExtCns(5, 2, 0, 1) = "FFFFFFB6" sExtCns(5, 2, 1, 0) = "00000007" sExtCns(5, 2, 1, 1) = "FFFFFFB6" sExtCns(5, 2, 2, 0) = "FFFFFFF5" sExtCns(5, 2, 2, 1) = "FFFFFFB9" sExtCns(5, 2, 3, 0) = "FFFFFFF3" sExtCns(5, 2, 3, 1) = "FFFFFFBB" sExtCns(5, 2, 4, 0) = "FFFFFFF3" sExtCns(5, 2, 4, 1) = "FFFFFFBB" sExtCns(5, 3, 0, 0) = "0000000C" sExtCns(5, 3, 0, 1) = "FFFFFFB6" sExtCns(5, 3, 1, 0) = "00000007" sExtCns(5, 3, 1, 1) = "FFFFFFB6" sExtCns(5, 3, 2, 0) = "FFFFFFF5" sExtCns(5, 3, 2, 1) = "FFFFFFB9" sExtCns(5, 3, 3, 0) = "FFFFFFF3" sExtCns(5, 3, 3, 1) = "FFFFFFBB" sExtCns(5, 3, 4, 0) = "FFFFFFF3" sExtCns(5, 3, 4, 1) = "FFFFFFBB" sExtCns(5, 4, 0, 0) = "FFFFFFF5" sExtCns(5, 4, 0, 1) = "FFFFFFB6" sExtCns(5, 4, 1, 0) = "FFFFFFFA" sExtCns(5, 4, 1, 1) = "FFFFFFB6" sExtCns(5, 4, 2, 0) = "0000000C" sExtCns(5, 4, 2, 1) = "FFFFFFB9" sExtCns(5, 4, 3, 0) = "0000000E" sExtCns(5, 4, 3, 1) = "FFFFFFBB" sExtCns(5, 4, 4, 0) = "0000000E" sExtCns(5, 4, 4, 1) = "FFFFFFBB" sExtCns(5, 5, 0, 0) = "FFFFFFF5" sExtCns(5, 5, 0, 1) = "FFFFFFB6" sExtCns(5, 5, 1, 0) = "FFFFFFFA" sExtCns(5, 5, 1, 1) = "FFFFFFB6" sExtCns(5, 5, 2, 0) = "0000000C" sExtCns(5, 5, 2, 1) = "FFFFFFB9" sExtCns(5, 5, 3, 0) = "0000000E" sExtCns(5, 5, 3, 1) = "FFFFFFBB" sExtCns(5, 5, 4, 0) = "0000000E" sExtCns(5, 5, 4, 1) = "FFFFFFBB" sExtCns(5, 6, 0, 0) = "00000004" sExtCns(5, 6, 0, 1) = "FFFFFFC7" sExtCns(5, 6, 1, 0) = "00000009" sExtCns(5, 6, 1, 1) = "FFFFFFC7" sExtCns(5, 6, 2, 0) = "00000018" sExtCns(5, 6, 2, 1) = "FFFFFFD5" sExtCns(5, 6, 3, 0) = "00000019" sExtCns(5, 6, 3, 1) = "FFFFFFD6" sExtCns(5, 6, 4, 0) = "00000019" sExtCns(5, 6, 4, 1) = "FFFFFFD6" sExtCns(5, 7, 0, 0) = "00000004" sExtCns(5, 7, 0, 1) = "FFFFFFC7" sExtCns(5, 7, 1, 0) = "00000009" sExtCns(5, 7, 1, 1) = "FFFFFFC7" sExtCns(5, 7, 2, 0) = "00000018" sExtCns(5, 7, 2, 1) = "FFFFFFD5" sExtCns(5, 7, 3, 0) = "00000019" sExtCns(5, 7, 3, 1) = "FFFFFFD6" sExtCns(5, 7, 4, 0) = "00000019" sExtCns(5, 7, 4, 1) = "FFFFFFD6" 'act06(No48〜No55) sExtCns(6, 0, 0, 0) = "0000000D" sExtCns(6, 0, 0, 1) = "FFFFFFB7" sExtCns(6, 0, 1, 0) = "00000012" sExtCns(6, 0, 1, 1) = "FFFFFFB6" sExtCns(6, 0, 2, 0) = "0000000D" sExtCns(6, 0, 2, 1) = "FFFFFFB7" sExtCns(6, 1, 0, 0) = "0000000D" sExtCns(6, 1, 0, 1) = "FFFFFFB7" sExtCns(6, 1, 1, 0) = "00000012" sExtCns(6, 1, 1, 1) = "FFFFFFB6" sExtCns(6, 1, 2, 0) = "0000000D" sExtCns(6, 1, 2, 1) = "FFFFFFB7" sExtCns(6, 2, 0, 0) = "00000002" sExtCns(6, 2, 0, 1) = "FFFFFFAF" sExtCns(6, 2, 1, 0) = "00000004" sExtCns(6, 2, 1, 1) = "FFFFFFB1" sExtCns(6, 2, 2, 0) = "00000002" sExtCns(6, 2, 2, 1) = "FFFFFFAF" sExtCns(6, 3, 0, 0) = "00000002" sExtCns(6, 3, 0, 1) = "FFFFFFAF" sExtCns(6, 3, 1, 0) = "00000004" sExtCns(6, 3, 1, 1) = "FFFFFFB1" sExtCns(6, 3, 2, 0) = "00000002" sExtCns(6, 3, 2, 1) = "FFFFFFAF" sExtCns(6, 4, 0, 0) = "FFFFFFFF" sExtCns(6, 4, 0, 1) = "FFFFFFAF" sExtCns(6, 4, 1, 0) = "FFFFFFFD" sExtCns(6, 4, 1, 1) = "FFFFFFB1" sExtCns(6, 4, 2, 0) = "FFFFFFFF" sExtCns(6, 4, 2, 1) = "FFFFFFAF" sExtCns(6, 5, 0, 0) = "FFFFFFFF" sExtCns(6, 5, 0, 1) = "FFFFFFAF" sExtCns(6, 5, 1, 0) = "FFFFFFFD" sExtCns(6, 5, 1, 1) = "FFFFFFB1" sExtCns(6, 5, 2, 0) = "FFFFFFFF" sExtCns(6, 5, 2, 1) = "FFFFFFAF" sExtCns(6, 6, 0, 0) = "FFFFFFF4" sExtCns(6, 6, 0, 1) = "FFFFFFB7" sExtCns(6, 6, 1, 0) = "FFFFFFEF" sExtCns(6, 6, 1, 1) = "FFFFFFB6" sExtCns(6, 6, 2, 0) = "FFFFFFF4" sExtCns(6, 6, 2, 1) = "FFFFFFB7" sExtCns(6, 7, 0, 0) = "FFFFFFF4" sExtCns(6, 7, 0, 1) = "FFFFFFB7" sExtCns(6, 7, 1, 0) = "FFFFFFEF" sExtCns(6, 7, 1, 1) = "FFFFFFB6" sExtCns(6, 7, 2, 0) = "FFFFFFF4" sExtCns(6, 7, 2, 1) = "FFFFFFB7" 'act07(No56〜No63) sExtCns(7, 0, 0, 0) = "0000001F" sExtCns(7, 0, 0, 1) = "FFFFFFBE" sExtCns(7, 1, 0, 0) = "0000001F" sExtCns(7, 1, 0, 1) = "FFFFFFBE" sExtCns(7, 2, 0, 0) = "00000010" sExtCns(7, 2, 0, 1) = "FFFFFFB9" sExtCns(7, 3, 0, 0) = "00000010" sExtCns(7, 3, 0, 1) = "FFFFFFB9" sExtCns(7, 4, 0, 0) = "FFFFFFF1" sExtCns(7, 4, 0, 1) = "FFFFFFB9" sExtCns(7, 5, 0, 0) = "FFFFFFF1" sExtCns(7, 5, 0, 1) = "FFFFFFB9" sExtCns(7, 6, 0, 0) = "FFFFFFE2" sExtCns(7, 6, 0, 1) = "FFFFFFBE" sExtCns(7, 7, 0, 0) = "FFFFFFE2" sExtCns(7, 7, 0, 1) = "FFFFFFBE" 'act08(No64〜No71) sExtCns(8, 0, 0, 0) = "00000037" sExtCns(8, 0, 0, 1) = "FFFFFFD3" sExtCns(8, 1, 0, 0) = "00000037" sExtCns(8, 1, 0, 1) = "FFFFFFD3" sExtCns(8, 2, 0, 0) = "00000037" sExtCns(8, 2, 0, 1) = "00000009" sExtCns(8, 3, 0, 0) = "00000037" sExtCns(8, 3, 0, 1) = "00000009" sExtCns(8, 4, 0, 0) = "FFFFFFCA" sExtCns(8, 4, 0, 1) = "00000009" sExtCns(8, 5, 0, 0) = "FFFFFFCA" sExtCns(8, 5, 0, 1) = "00000009" sExtCns(8, 6, 0, 0) = "FFFFFFCA" sExtCns(8, 6, 0, 1) = "FFFFFFD3" sExtCns(8, 7, 0, 0) = "FFFFFFCA" sExtCns(8, 7, 0, 1) = "FFFFFFD3" 'act09(No72〜No79) sExtCns(9, 0, 0, 0) = "00000004" sExtCns(9, 0, 0, 1) = "FFFFFFBE" sExtCns(9, 1, 0, 0) = "00000004" sExtCns(9, 1, 0, 1) = "FFFFFFBE" sExtCns(9, 2, 0, 0) = "00000004" sExtCns(9, 2, 0, 1) = "FFFFFFBE" sExtCns(9, 3, 0, 0) = "00000004" sExtCns(9, 3, 0, 1) = "FFFFFFBE" sExtCns(9, 4, 0, 0) = "00000004" sExtCns(9, 4, 0, 1) = "FFFFFFBE" sExtCns(9, 5, 0, 0) = "00000004" sExtCns(9, 5, 0, 1) = "FFFFFFBE" sExtCns(9, 6, 0, 0) = "00000004" sExtCns(9, 6, 0, 1) = "FFFFFFBE" sExtCns(9, 7, 0, 0) = "00000004" sExtCns(9, 7, 0, 1) = "FFFFFFBE" 'act10(No80〜No87) sExtCns(10, 0, 0, 0) = "00000004" sExtCns(10, 0, 0, 1) = "FFFFFFBE" sExtCns(10, 0, 1, 0) = "00000006" sExtCns(10, 0, 1, 1) = "FFFFFFBB" sExtCns(10, 0, 2, 0) = "00000007" sExtCns(10, 0, 2, 1) = "FFFFFFBA" sExtCns(10, 0, 3, 0) = "00000007" sExtCns(10, 0, 3, 1) = "FFFFFFBA" sExtCns(10, 0, 4, 0) = "FFFFFFF5" sExtCns(10, 0, 4, 1) = "FFFFFFC2" sExtCns(10, 0, 5, 0) = "FFFFFFED" sExtCns(10, 0, 5, 1) = "FFFFFFCE" sExtCns(10, 0, 6, 0) = "FFFFFFEC" sExtCns(10, 0, 6, 1) = "FFFFFFD1" sExtCns(10, 0, 7, 0) = "FFFFFFEC" sExtCns(10, 0, 7, 1) = "FFFFFFD1" sExtCns(10, 0, 8, 0) = "FFFFFFEC" sExtCns(10, 0, 8, 1) = "FFFFFFD1" sExtCns(10, 1, 0, 0) = "00000004" sExtCns(10, 1, 0, 1) = "FFFFFFBE" sExtCns(10, 1, 1, 0) = "00000006" sExtCns(10, 1, 1, 1) = "FFFFFFBB" sExtCns(10, 1, 2, 0) = "00000007" sExtCns(10, 1, 2, 1) = "FFFFFFBA" sExtCns(10, 1, 3, 0) = "00000007" sExtCns(10, 1, 3, 1) = "FFFFFFBA" sExtCns(10, 1, 4, 0) = "FFFFFFF5" sExtCns(10, 1, 4, 1) = "FFFFFFC2" sExtCns(10, 1, 5, 0) = "FFFFFFED" sExtCns(10, 1, 5, 1) = "FFFFFFCE" sExtCns(10, 1, 6, 0) = "FFFFFFEC" sExtCns(10, 1, 6, 1) = "FFFFFFD1" sExtCns(10, 1, 7, 0) = "FFFFFFEC" sExtCns(10, 1, 7, 1) = "FFFFFFD1" sExtCns(10, 1, 8, 0) = "FFFFFFEC" sExtCns(10, 1, 8, 1) = "FFFFFFD1" sExtCns(10, 2, 0, 0) = "00000012" sExtCns(10, 2, 0, 1) = "FFFFFFB8" sExtCns(10, 2, 1, 0) = "00000015" sExtCns(10, 2, 1, 1) = "FFFFFFB7" sExtCns(10, 2, 2, 0) = "00000016" sExtCns(10, 2, 2, 1) = "FFFFFFB7" sExtCns(10, 2, 3, 0) = "00000016" sExtCns(10, 2, 3, 1) = "FFFFFFB7" sExtCns(10, 2, 4, 0) = "00000009" sExtCns(10, 2, 4, 1) = "FFFFFFBA" sExtCns(10, 2, 5, 0) = "FFFFFFFF" sExtCns(10, 2, 5, 1) = "FFFFFFC2" sExtCns(10, 2, 6, 0) = "FFFFFFFD" sExtCns(10, 2, 6, 1) = "FFFFFFC4" sExtCns(10, 2, 7, 0) = "FFFFFFFD" sExtCns(10, 2, 7, 1) = "FFFFFFC5" sExtCns(10, 2, 8, 0) = "FFFFFFFD" sExtCns(10, 2, 8, 1) = "FFFFFFC5" sExtCns(10, 3, 0, 0) = "00000012" sExtCns(10, 3, 0, 1) = "FFFFFFB8" sExtCns(10, 3, 1, 0) = "00000015" sExtCns(10, 3, 1, 1) = "FFFFFFB7" sExtCns(10, 3, 2, 0) = "00000016" sExtCns(10, 3, 2, 1) = "FFFFFFB7" sExtCns(10, 3, 3, 0) = "00000016" sExtCns(10, 3, 3, 1) = "FFFFFFB7" sExtCns(10, 3, 4, 0) = "00000009" sExtCns(10, 3, 4, 1) = "FFFFFFBA" sExtCns(10, 3, 5, 0) = "FFFFFFFF" sExtCns(10, 3, 5, 1) = "FFFFFFC2" sExtCns(10, 3, 6, 0) = "FFFFFFFD" sExtCns(10, 3, 6, 1) = "FFFFFFC4" sExtCns(10, 3, 7, 0) = "FFFFFFFD" sExtCns(10, 3, 7, 1) = "FFFFFFC5" sExtCns(10, 3, 8, 0) = "FFFFFFFD" sExtCns(10, 3, 8, 1) = "FFFFFFC5" sExtCns(10, 4, 0, 0) = "FFFFFFEF" sExtCns(10, 4, 0, 1) = "FFFFFFB8" sExtCns(10, 4, 1, 0) = "FFFFFFEC" sExtCns(10, 4, 1, 1) = "FFFFFFB7" sExtCns(10, 4, 2, 0) = "FFFFFFEB" sExtCns(10, 4, 2, 1) = "FFFFFFB7" sExtCns(10, 4, 3, 0) = "FFFFFFEB" sExtCns(10, 4, 3, 1) = "FFFFFFB7" sExtCns(10, 4, 4, 0) = "FFFFFFF8" sExtCns(10, 4, 4, 1) = "FFFFFFBA" sExtCns(10, 4, 5, 0) = "00000002" sExtCns(10, 4, 5, 1) = "FFFFFFC2" sExtCns(10, 4, 6, 0) = "00000004" sExtCns(10, 4, 6, 1) = "FFFFFFC4" sExtCns(10, 4, 7, 0) = "00000004" sExtCns(10, 4, 7, 1) = "FFFFFFC5" sExtCns(10, 4, 8, 0) = "00000004" sExtCns(10, 4, 8, 1) = "FFFFFFC5" sExtCns(10, 5, 0, 0) = "FFFFFFEF" sExtCns(10, 5, 0, 1) = "FFFFFFB8" sExtCns(10, 5, 1, 0) = "FFFFFFEC" sExtCns(10, 5, 1, 1) = "FFFFFFB7" sExtCns(10, 5, 2, 0) = "FFFFFFEB" sExtCns(10, 5, 2, 1) = "FFFFFFB7" sExtCns(10, 5, 3, 0) = "FFFFFFEB" sExtCns(10, 5, 3, 1) = "FFFFFFB7" sExtCns(10, 5, 4, 0) = "FFFFFFF8" sExtCns(10, 5, 4, 1) = "FFFFFFBA" sExtCns(10, 5, 5, 0) = "00000002" sExtCns(10, 5, 5, 1) = "FFFFFFC2" sExtCns(10, 5, 6, 0) = "00000004" sExtCns(10, 5, 6, 1) = "FFFFFFC4" sExtCns(10, 5, 7, 0) = "00000004" sExtCns(10, 5, 7, 1) = "FFFFFFC5" sExtCns(10, 5, 8, 0) = "00000004" sExtCns(10, 5, 8, 1) = "FFFFFFC5" sExtCns(10, 6, 0, 0) = "FFFFFFFD" sExtCns(10, 6, 0, 1) = "FFFFFFBE" sExtCns(10, 6, 1, 0) = "FFFFFFFB" sExtCns(10, 6, 1, 1) = "FFFFFFBB" sExtCns(10, 6, 2, 0) = "FFFFFFFA" sExtCns(10, 6, 2, 1) = "FFFFFFBA" sExtCns(10, 6, 3, 0) = "FFFFFFFA" sExtCns(10, 6, 3, 1) = "FFFFFFBA" sExtCns(10, 6, 4, 0) = "0000000C" sExtCns(10, 6, 4, 1) = "FFFFFFC2" sExtCns(10, 6, 5, 0) = "00000014" sExtCns(10, 6, 5, 1) = "FFFFFFCE" sExtCns(10, 6, 6, 0) = "00000015" sExtCns(10, 6, 6, 1) = "FFFFFFD1" sExtCns(10, 6, 7, 0) = "00000015" sExtCns(10, 6, 7, 1) = "FFFFFFD1" sExtCns(10, 6, 8, 0) = "00000015" sExtCns(10, 6, 8, 1) = "FFFFFFD1" sExtCns(10, 7, 0, 0) = "FFFFFFFD" sExtCns(10, 7, 0, 1) = "FFFFFFBE" sExtCns(10, 7, 1, 0) = "FFFFFFFB" sExtCns(10, 7, 1, 1) = "FFFFFFBB" sExtCns(10, 7, 2, 0) = "FFFFFFFA" sExtCns(10, 7, 2, 1) = "FFFFFFBA" sExtCns(10, 7, 3, 0) = "FFFFFFFA" sExtCns(10, 7, 3, 1) = "FFFFFFBA" sExtCns(10, 7, 4, 0) = "0000000C" sExtCns(10, 7, 4, 1) = "FFFFFFC2" sExtCns(10, 7, 5, 0) = "00000014" sExtCns(10, 7, 5, 1) = "FFFFFFCE" sExtCns(10, 7, 6, 0) = "00000015" sExtCns(10, 7, 6, 1) = "FFFFFFD1" sExtCns(10, 7, 7, 0) = "00000015" sExtCns(10, 7, 7, 1) = "FFFFFFD1" sExtCns(10, 7, 8, 0) = "00000015" sExtCns(10, 7, 8, 1) = "FFFFFFD1" 'act11(No88〜No95) sExtCns(11, 0, 0, 0) = "00000002" sExtCns(11, 0, 0, 1) = "FFFFFFC9" sExtCns(11, 0, 1, 0) = "00000004" sExtCns(11, 0, 1, 1) = "FFFFFFC7" sExtCns(11, 0, 2, 0) = "00000004" sExtCns(11, 0, 2, 1) = "FFFFFFC5" sExtCns(11, 0, 3, 0) = "00000003" sExtCns(11, 0, 3, 1) = "FFFFFFC7" sExtCns(11, 0, 4, 0) = "FFFFFFFC" sExtCns(11, 0, 4, 1) = "FFFFFFC9" sExtCns(11, 0, 5, 0) = "FFFFFFEC" sExtCns(11, 0, 5, 1) = "FFFFFFCF" sExtCns(11, 0, 6, 0) = "FFFFFFF1" sExtCns(11, 0, 6, 1) = "FFFFFFCE" sExtCns(11, 0, 7, 0) = "FFFFFFF2" sExtCns(11, 0, 7, 1) = "FFFFFFCD" sExtCns(11, 1, 0, 0) = "00000002" sExtCns(11, 1, 0, 1) = "FFFFFFC9" sExtCns(11, 1, 1, 0) = "00000004" sExtCns(11, 1, 1, 1) = "FFFFFFC7" sExtCns(11, 1, 2, 0) = "00000004" sExtCns(11, 1, 2, 1) = "FFFFFFC5" sExtCns(11, 1, 3, 0) = "00000003" sExtCns(11, 1, 3, 1) = "FFFFFFC7" sExtCns(11, 1, 4, 0) = "FFFFFFFC" sExtCns(11, 1, 4, 1) = "FFFFFFC9" sExtCns(11, 1, 5, 0) = "FFFFFFEC" sExtCns(11, 1, 5, 1) = "FFFFFFCF" sExtCns(11, 1, 6, 0) = "FFFFFFF1" sExtCns(11, 1, 6, 1) = "FFFFFFCE" sExtCns(11, 1, 7, 0) = "FFFFFFF2" sExtCns(11, 1, 7, 1) = "FFFFFFCD" sExtCns(11, 2, 0, 0) = "0000000D" sExtCns(11, 2, 0, 1) = "FFFFFFBB" sExtCns(11, 2, 1, 0) = "0000000E" sExtCns(11, 2, 1, 1) = "FFFFFFBB" sExtCns(11, 2, 2, 0) = "0000000F" sExtCns(11, 2, 2, 1) = "FFFFFFB9" sExtCns(11, 2, 3, 0) = "0000000E" sExtCns(11, 2, 3, 1) = "FFFFFFBB" sExtCns(11, 2, 4, 0) = "0000000A" sExtCns(11, 2, 4, 1) = "FFFFFFBA" sExtCns(11, 2, 5, 0) = "FFFFFFFD" sExtCns(11, 2, 5, 1) = "FFFFFFBB" sExtCns(11, 2, 6, 0) = "00000000" sExtCns(11, 2, 6, 1) = "FFFFFFBB" sExtCns(11, 2, 7, 0) = "00000001" sExtCns(11, 2, 7, 1) = "FFFFFFBB" sExtCns(11, 3, 0, 0) = "0000000D" sExtCns(11, 3, 0, 1) = "FFFFFFBB" sExtCns(11, 3, 1, 0) = "0000000E" sExtCns(11, 3, 1, 1) = "FFFFFFBB" sExtCns(11, 3, 2, 0) = "0000000F" sExtCns(11, 3, 2, 1) = "FFFFFFB9" sExtCns(11, 3, 3, 0) = "0000000E" sExtCns(11, 3, 3, 1) = "FFFFFFBB" sExtCns(11, 3, 4, 0) = "0000000A" sExtCns(11, 3, 4, 1) = "FFFFFFBA" sExtCns(11, 3, 5, 0) = "FFFFFFFD" sExtCns(11, 3, 5, 1) = "FFFFFFBB" sExtCns(11, 3, 6, 0) = "00000000" sExtCns(11, 3, 6, 1) = "FFFFFFBB" sExtCns(11, 3, 7, 0) = "00000001" sExtCns(11, 3, 7, 1) = "FFFFFFBB" sExtCns(11, 4, 0, 0) = "FFFFFFF4" sExtCns(11, 4, 0, 1) = "FFFFFFBB" sExtCns(11, 4, 1, 0) = "FFFFFFF3" sExtCns(11, 4, 1, 1) = "FFFFFFBB" sExtCns(11, 4, 2, 0) = "FFFFFFF2" sExtCns(11, 4, 2, 1) = "FFFFFFB9" sExtCns(11, 4, 3, 0) = "FFFFFFF3" sExtCns(11, 4, 3, 1) = "FFFFFFBB" sExtCns(11, 4, 4, 0) = "FFFFFFF7" sExtCns(11, 4, 4, 1) = "FFFFFFBA" sExtCns(11, 4, 5, 0) = "00000004" sExtCns(11, 4, 5, 1) = "FFFFFFBB" sExtCns(11, 4, 6, 0) = "00000001" sExtCns(11, 4, 6, 1) = "FFFFFFBB" sExtCns(11, 4, 7, 0) = "00000000" sExtCns(11, 4, 7, 1) = "FFFFFFBB" sExtCns(11, 5, 0, 0) = "FFFFFFF4" sExtCns(11, 5, 0, 1) = "FFFFFFBB" sExtCns(11, 5, 1, 0) = "FFFFFFF3" sExtCns(11, 5, 1, 1) = "FFFFFFBB" sExtCns(11, 5, 2, 0) = "FFFFFFF2" sExtCns(11, 5, 2, 1) = "FFFFFFB9" sExtCns(11, 5, 3, 0) = "FFFFFFF3" sExtCns(11, 5, 3, 1) = "FFFFFFBB" sExtCns(11, 5, 4, 0) = "FFFFFFF7" sExtCns(11, 5, 4, 1) = "FFFFFFBA" sExtCns(11, 5, 5, 0) = "00000004" sExtCns(11, 5, 5, 1) = "FFFFFFBB" sExtCns(11, 5, 6, 0) = "00000001" sExtCns(11, 5, 6, 1) = "FFFFFFBB" sExtCns(11, 5, 7, 0) = "00000000" sExtCns(11, 5, 7, 1) = "FFFFFFBB" sExtCns(11, 6, 0, 0) = "FFFFFFFF" sExtCns(11, 6, 0, 1) = "FFFFFFC9" sExtCns(11, 6, 1, 0) = "FFFFFFFD" sExtCns(11, 6, 1, 1) = "FFFFFFC7" sExtCns(11, 6, 2, 0) = "FFFFFFFD" sExtCns(11, 6, 2, 1) = "FFFFFFC5" sExtCns(11, 6, 3, 0) = "FFFFFFFE" sExtCns(11, 6, 3, 1) = "FFFFFFC7" sExtCns(11, 6, 4, 0) = "00000005" sExtCns(11, 6, 4, 1) = "FFFFFFC9" sExtCns(11, 6, 5, 0) = "00000015" sExtCns(11, 6, 5, 1) = "FFFFFFCF" sExtCns(11, 6, 6, 0) = "00000010" sExtCns(11, 6, 6, 1) = "FFFFFFCE" sExtCns(11, 6, 7, 0) = "0000000F" sExtCns(11, 6, 7, 1) = "FFFFFFCD" sExtCns(11, 7, 0, 0) = "FFFFFFFF" sExtCns(11, 7, 0, 1) = "FFFFFFC9" sExtCns(11, 7, 1, 0) = "FFFFFFFD" sExtCns(11, 7, 1, 1) = "FFFFFFC7" sExtCns(11, 7, 2, 0) = "FFFFFFFD" sExtCns(11, 7, 2, 1) = "FFFFFFC5" sExtCns(11, 7, 3, 0) = "FFFFFFFE" sExtCns(11, 7, 3, 1) = "FFFFFFC7" sExtCns(11, 7, 4, 0) = "00000005" sExtCns(11, 7, 4, 1) = "FFFFFFC9" sExtCns(11, 7, 5, 0) = "00000015" sExtCns(11, 7, 5, 1) = "FFFFFFCF" sExtCns(11, 7, 6, 0) = "00000010" sExtCns(11, 7, 6, 1) = "FFFFFFCE" sExtCns(11, 7, 7, 0) = "0000000F" sExtCns(11, 7, 7, 1) = "FFFFFFCD" 'act12(No96〜No103) sExtCns(12, 0, 0, 0) = "FFFFFFFD" sExtCns(12, 0, 0, 1) = "FFFFFFC8" sExtCns(12, 0, 1, 0) = "FFFFFFFD" sExtCns(12, 0, 1, 1) = "FFFFFFC6" sExtCns(12, 0, 2, 0) = "FFFFFFFD" sExtCns(12, 0, 2, 1) = "FFFFFFC4" sExtCns(12, 0, 3, 0) = "FFFFFFFD" sExtCns(12, 0, 3, 1) = "FFFFFFC4" sExtCns(12, 0, 4, 0) = "FFFFFFFB" sExtCns(12, 0, 4, 1) = "FFFFFFCB" sExtCns(12, 0, 5, 0) = "FFFFFFFB" sExtCns(12, 0, 5, 1) = "FFFFFFCD" sExtCns(12, 1, 0, 0) = "FFFFFFFD" sExtCns(12, 1, 0, 1) = "FFFFFFC8" sExtCns(12, 1, 1, 0) = "FFFFFFFD" sExtCns(12, 1, 1, 1) = "FFFFFFC6" sExtCns(12, 1, 2, 0) = "FFFFFFFD" sExtCns(12, 1, 2, 1) = "FFFFFFC4" sExtCns(12, 1, 3, 0) = "FFFFFFFD" sExtCns(12, 1, 3, 1) = "FFFFFFC4" sExtCns(12, 1, 4, 0) = "FFFFFFFB" sExtCns(12, 1, 4, 1) = "FFFFFFCB" sExtCns(12, 1, 5, 0) = "FFFFFFFB" sExtCns(12, 1, 5, 1) = "FFFFFFCD" sExtCns(12, 2, 0, 0) = "0000000C" sExtCns(12, 2, 0, 1) = "FFFFFFBA" sExtCns(12, 2, 1, 0) = "0000000C" sExtCns(12, 2, 1, 1) = "FFFFFFB6" sExtCns(12, 2, 2, 0) = "0000000C" sExtCns(12, 2, 2, 1) = "FFFFFFB5" sExtCns(12, 2, 3, 0) = "0000000C" sExtCns(12, 2, 3, 1) = "FFFFFFB4" sExtCns(12, 2, 4, 0) = "0000000E" sExtCns(12, 2, 4, 1) = "FFFFFFBB" sExtCns(12, 2, 5, 0) = "0000000E" sExtCns(12, 2, 5, 1) = "FFFFFFBD" sExtCns(12, 3, 0, 0) = "0000000C" sExtCns(12, 3, 0, 1) = "FFFFFFBA" sExtCns(12, 3, 1, 0) = "0000000C" sExtCns(12, 3, 1, 1) = "FFFFFFB6" sExtCns(12, 3, 2, 0) = "0000000C" sExtCns(12, 3, 2, 1) = "FFFFFFB5" sExtCns(12, 3, 3, 0) = "0000000C" sExtCns(12, 3, 3, 1) = "FFFFFFB4" sExtCns(12, 3, 4, 0) = "0000000E" sExtCns(12, 3, 4, 1) = "FFFFFFBB" sExtCns(12, 3, 5, 0) = "0000000E" sExtCns(12, 3, 5, 1) = "FFFFFFBD" sExtCns(12, 4, 0, 0) = "FFFFFFF5" sExtCns(12, 4, 0, 1) = "FFFFFFBA" sExtCns(12, 4, 1, 0) = "FFFFFFF5" sExtCns(12, 4, 1, 1) = "FFFFFFB6" sExtCns(12, 4, 2, 0) = "FFFFFFF5" sExtCns(12, 4, 2, 1) = "FFFFFFB5" sExtCns(12, 4, 3, 0) = "FFFFFFF5" sExtCns(12, 4, 3, 1) = "FFFFFFB4" sExtCns(12, 4, 4, 0) = "FFFFFFF3" sExtCns(12, 4, 4, 1) = "FFFFFFBB" sExtCns(12, 4, 5, 0) = "FFFFFFF3" sExtCns(12, 4, 5, 1) = "FFFFFFBD" sExtCns(12, 5, 0, 0) = "FFFFFFF5" sExtCns(12, 5, 0, 1) = "FFFFFFBA" sExtCns(12, 5, 1, 0) = "FFFFFFF5" sExtCns(12, 5, 1, 1) = "FFFFFFB6" sExtCns(12, 5, 2, 0) = "FFFFFFF5" sExtCns(12, 5, 2, 1) = "FFFFFFB5" sExtCns(12, 5, 3, 0) = "FFFFFFF5" sExtCns(12, 5, 3, 1) = "FFFFFFB4" sExtCns(12, 5, 4, 0) = "FFFFFFF3" sExtCns(12, 5, 4, 1) = "FFFFFFBB" sExtCns(12, 5, 5, 0) = "FFFFFFF3" sExtCns(12, 5, 5, 1) = "FFFFFFBD" sExtCns(12, 6, 0, 0) = "00000004" sExtCns(12, 6, 0, 1) = "FFFFFFC8" sExtCns(12, 6, 1, 0) = "00000004" sExtCns(12, 6, 1, 1) = "FFFFFFC6" sExtCns(12, 6, 2, 0) = "00000004" sExtCns(12, 6, 2, 1) = "FFFFFFC4" sExtCns(12, 6, 3, 0) = "00000004" sExtCns(12, 6, 3, 1) = "FFFFFFC4" sExtCns(12, 6, 4, 0) = "00000006" sExtCns(12, 6, 4, 1) = "FFFFFFCB" sExtCns(12, 6, 5, 0) = "00000006" sExtCns(12, 6, 5, 1) = "FFFFFFCD" sExtCns(12, 7, 0, 0) = "00000004" sExtCns(12, 7, 0, 1) = "FFFFFFC8" sExtCns(12, 7, 1, 0) = "00000004" sExtCns(12, 7, 1, 1) = "FFFFFFC6" sExtCns(12, 7, 2, 0) = "00000004" sExtCns(12, 7, 2, 1) = "FFFFFFC4" sExtCns(12, 7, 3, 0) = "00000004" sExtCns(12, 7, 3, 1) = "FFFFFFC4" sExtCns(12, 7, 4, 0) = "00000006" sExtCns(12, 7, 4, 1) = "FFFFFFCB" sExtCns(12, 7, 5, 0) = "00000006" sExtCns(12, 7, 5, 1) = "FFFFFFCD" 'アニメーション間隔情報固定値 sIntervalCns(0, 0) = "40800000" sIntervalCns(0, 1) = "40800000" sIntervalCns(0, 2) = "40800000" sIntervalCns(0, 3) = "40800000" sIntervalCns(0, 4) = "40800000" sIntervalCns(0, 5) = "40800000" sIntervalCns(0, 6) = "40800000" sIntervalCns(0, 7) = "40800000" sIntervalCns(1, 0) = "40400000" sIntervalCns(1, 1) = "40400000" sIntervalCns(1, 2) = "40400000" sIntervalCns(1, 3) = "40400000" sIntervalCns(1, 4) = "40400000" sIntervalCns(1, 5) = "40400000" sIntervalCns(1, 6) = "40400000" sIntervalCns(1, 7) = "40400000" sIntervalCns(2, 0) = "40800000" sIntervalCns(2, 1) = "40800000" sIntervalCns(2, 2) = "40800000" sIntervalCns(2, 3) = "40800000" sIntervalCns(2, 4) = "40800000" sIntervalCns(2, 5) = "40800000" sIntervalCns(2, 6) = "40800000" sIntervalCns(2, 7) = "40800000" sIntervalCns(3, 0) = "40800000" sIntervalCns(3, 1) = "40800000" sIntervalCns(3, 2) = "40800000" sIntervalCns(3, 3) = "40800000" sIntervalCns(3, 4) = "40800000" sIntervalCns(3, 5) = "40800000" sIntervalCns(3, 6) = "40800000" sIntervalCns(3, 7) = "40800000" sIntervalCns(4, 0) = "40800000" sIntervalCns(4, 1) = "40800000" sIntervalCns(4, 2) = "40800000" sIntervalCns(4, 3) = "40800000" sIntervalCns(4, 4) = "40800000" sIntervalCns(4, 5) = "40800000" sIntervalCns(4, 6) = "40800000" sIntervalCns(4, 7) = "40800000" sIntervalCns(5, 0) = "40800000" sIntervalCns(5, 1) = "40800000" sIntervalCns(5, 2) = "40800000" sIntervalCns(5, 3) = "40800000" sIntervalCns(5, 4) = "40800000" sIntervalCns(5, 5) = "40800000" sIntervalCns(5, 6) = "40800000" sIntervalCns(5, 7) = "40800000" sIntervalCns(6, 0) = "40800000" sIntervalCns(6, 1) = "40800000" sIntervalCns(6, 2) = "40800000" sIntervalCns(6, 3) = "40800000" sIntervalCns(6, 4) = "40800000" sIntervalCns(6, 5) = "40800000" sIntervalCns(6, 6) = "40800000" sIntervalCns(6, 7) = "40800000" sIntervalCns(7, 0) = "40800000" sIntervalCns(7, 1) = "40800000" sIntervalCns(7, 2) = "40800000" sIntervalCns(7, 3) = "40800000" sIntervalCns(7, 4) = "40800000" sIntervalCns(7, 5) = "40800000" sIntervalCns(7, 6) = "40800000" sIntervalCns(7, 7) = "40800000" sIntervalCns(8, 0) = "40800000" sIntervalCns(8, 1) = "40800000" sIntervalCns(8, 2) = "40800000" sIntervalCns(8, 3) = "40800000" sIntervalCns(8, 4) = "40800000" sIntervalCns(8, 5) = "40800000" sIntervalCns(8, 6) = "40800000" sIntervalCns(8, 7) = "40800000" sIntervalCns(9, 0) = "40800000" sIntervalCns(9, 1) = "40800000" sIntervalCns(9, 2) = "40800000" sIntervalCns(9, 3) = "40800000" sIntervalCns(9, 4) = "40800000" sIntervalCns(9, 5) = "40800000" sIntervalCns(9, 6) = "40800000" sIntervalCns(9, 7) = "40800000" sIntervalCns(10, 0) = "40800000" sIntervalCns(10, 1) = "40800000" sIntervalCns(10, 2) = "40800000" sIntervalCns(10, 3) = "40800000" sIntervalCns(10, 4) = "40800000" sIntervalCns(10, 5) = "40800000" sIntervalCns(10, 6) = "40800000" sIntervalCns(10, 7) = "40800000" sIntervalCns(11, 0) = "40800000" sIntervalCns(11, 1) = "40800000" sIntervalCns(11, 2) = "40800000" sIntervalCns(11, 3) = "40800000" sIntervalCns(11, 4) = "40800000" sIntervalCns(11, 5) = "40800000" sIntervalCns(11, 6) = "40800000" sIntervalCns(11, 7) = "40800000" sIntervalCns(12, 0) = "40800000" sIntervalCns(12, 1) = "40800000" sIntervalCns(12, 2) = "40800000" sIntervalCns(12, 3) = "40800000" sIntervalCns(12, 4) = "40800000" sIntervalCns(12, 5) = "40800000" sIntervalCns(12, 6) = "40800000" sIntervalCns(12, 7) = "40800000" '================================================================= '変換前SPRファイル読み取り '================================================================= '----------------------------------- '変換前SPRファイルオープン '----------------------------------- sInp.Open sInp.LoadFromFile sInSpr '----------------------------------- 'ヘッダー部 '----------------------------------- 'ヘッダー情報(固定値/マジック+バージョン) sSprHead(0, 0) = ByteReadInt(sInp) sSprHead(0, 1) = ByteReadInt(sInp) sSprHead(0, 2) = ByteReadInt(sInp) sSprHead(0, 3) = ByteReadInt(sInp) '圧縮イメージ数 sSprHead(1, 0) = ByteReadInt(sInp) sSprHead(1, 1) = ByteReadInt(sInp) 'フラットイメージ数 sSprHead(2, 0) = ByteReadInt(sInp) sSprHead(2, 1) = ByteReadInt(sInp) 'イメージ数合計 iImgNum = sSprHead(1, 1) * 16^2 _ + sSprHead(1, 0) _ + sSprHead(2, 1) * 16^2 _ + sSprHead(2, 0) 'イメージ情報(イメージ数 * 3情報 * 2byte) ReDim sImage(iImgNum-1, 2 ,1) 'イメージデータ(イメージ数 * 最大縦256ドット * 最大横256ドット) ReDim sImageData(iImgNum-1, 255, 255) '----------------------------------- '圧縮イメージ部 '----------------------------------- '圧縮イメージ数 iImgNum = sSprHead(1, 1) * 16^2 _ + sSprHead(1, 0) for iImgCnt=0 to iImgNum-1 '幅 sImage(iImgCnt, 0, 0) = ByteReadInt(sInp) sImage(iImgCnt, 0, 1) = ByteReadInt(sInp) '高さ sImage(iImgCnt, 1, 0) = ByteReadInt(sInp) sImage(iImgCnt, 1, 1) = ByteReadInt(sInp) 'サイズ sImage(iImgCnt, 2, 0) = ByteReadInt(sInp) sImage(iImgCnt, 2, 1) = ByteReadInt(sInp) iImgX = sImage(iImgCnt, 0, 1) * 16^2 _ + sImage(iImgCnt, 0, 0) iImgY = sImage(iImgCnt, 1, 1) * 16^2 _ + sImage(iImgCnt, 1, 0) '圧縮データを展開しながら読み込む for iYCnt=0 to iImgY-1 for iXCnt=0 to iImgX-1 '1byte読み込み sImageData(iImgCnt, iYCnt, iXCnt) = ByteReadInt(sInp) '読み込みデータが&H00であるか if sImageData(iImgCnt, iYCnt, iXCnt) = 0 then '次の1byteの数値分だけ&H00を連続させる iBuf = ByteReadInt(sInp) for iZeroCnt=2 to iBuf iXCnt = iXCnt + 1 if iXCnt > iImgX-1 then iXCnt = 0 iYCnt = iYCnt + 1 end if sImageData(iImgCnt, iYCnt, iXCnt) = 0 next end if next next next '----------------------------------- 'フラットイメージ部 '----------------------------------- 'フラットイメージ数 iImgNum = sSprHead(2, 1) * 16^2 _ + sSprHead(2, 0) '圧縮イメージ数 iCmpImgCnt = sSprHead(1, 1) * 16^2 _ + sSprHead(1, 0) for iImgCnt=0 to iImgNum-1 '幅 sImage(iImgCnt+iCmpImgCnt, 0, 0) = ByteReadInt(sInp) sImage(iImgCnt+iCmpImgCnt, 0, 1) = ByteReadInt(sInp) '高さ sImage(iImgCnt+iCmpImgCnt, 1, 0) = ByteReadInt(sInp) sImage(iImgCnt+iCmpImgCnt, 1, 1) = ByteReadInt(sInp) iImgX = sImage(iImgCnt+iCmpImgCnt, 0, 1) * 16^2 _ + sImage(iImgCnt+iCmpImgCnt, 0, 0) iImgY = sImage(iImgCnt+iCmpImgCnt, 1, 1) * 16^2 _ + sImage(iImgCnt+iCmpImgCnt, 1, 0) 'フラットデータ読み込み for iYCnt=0 to iImgY-1 for iXCnt=0 to iImgX-1 '4byte読み込み(暫定) Call ByteReadInt(sInp) Call ByteReadInt(sInp) Call ByteReadInt(sInp) Call ByteReadInt(sInp) sImageData(iImgCnt+iCmpImgCnt, iYCnt, iXCnt) = "00" next next next '----------------------------------- 'パレット部 '----------------------------------- for iPalCnt=0 to 256-1 sPallet(iPalCnt, 0) = ByteReadInt(sInp) sPallet(iPalCnt, 1) = ByteReadInt(sInp) sPallet(iPalCnt, 2) = ByteReadInt(sInp) sPallet(iPalCnt, 3) = ByteReadInt(sInp) next '----------------------------------- '変換前SPRファイルクローズ '----------------------------------- sInp.Close '================================================================= '変換前ACTファイル読み取り '================================================================= '----------------------------------- '変換前ACTファイルオープン '----------------------------------- sInp.Open sInp.LoadFromFile sInAct '----------------------------------- 'ヘッダー部 '----------------------------------- sInp.Position = 0 'ACTバージョン sHeader(0, 0) = ByteReadInt(sInp) sHeader(0, 1) = ByteReadInt(sInp) 'フォーマットタイプ sHeader(1, 0) = ByteReadInt(sInp) sHeader(1, 1) = ByteReadInt(sInp) 'アニメーション数 sHeader(2, 0) = ByteReadInt(sInp) sHeader(2, 1) = ByteReadInt(sInp) '??(Header3) sHeader(3, 0) = ByteReadInt(sInp) sHeader(3, 1) = ByteReadInt(sInp) '??(Header4) sHeader(4, 0) = ByteReadInt(sInp) sHeader(4, 1) = ByteReadInt(sInp) sHeader(4, 2) = ByteReadInt(sInp) sHeader(4, 3) = ByteReadInt(sInp) '??(Header5) sHeader(5, 0) = ByteReadInt(sInp) sHeader(5, 1) = ByteReadInt(sInp) sHeader(5, 2) = ByteReadInt(sInp) sHeader(5, 3) = ByteReadInt(sInp) 'act数取得(アニメーション数÷向き数) iActNum = sHeader(2, 1) * 16^2 _ + sHeader(2, 0) iActNum = iActNum / (NUM_ORIENT) 'フォーマットタイプ取得 iTypeCd = Right("0" & Hex(sHeader(1, 1)), 2) _ & Right("0" & Hex(sHeader(1, 0)), 2) '----------------------------------- '配列領域確保 '----------------------------------- ReDim sFrame(iActNum-1, NUM_ORIENT-1, 79, 10, 3) 'フレーム情報(act数 * 8方向 * 80フレーム * 11情報 * 4byte) ReDim sSprite(iActNum-1, NUM_ORIENT-1, 79, 29, 10, 3) 'スプライト情報(act数 * 8方向 * 80フレーム * 30スプライト * 11情報 * 4byte) ReDim sExtent(iActNum-1, NUM_ORIENT-1, 79, 29, 4, 3) '拡張情報(act数 * 8方向 * 80フレーム * 30個 * 4情報 * 4byte) ReDim sActSpr(iActNum-1, NUM_ORIENT-1, 79, 2) 'ACT-SPR対応(act数 * 8方向 * 80フレーム * 3情報) '----------------------------------- 'フレーム部 '----------------------------------- 'act数だけループ for iActCnt=0 to iActNum-1 '向き数だけループ(8方向固定) for iOriCnt=0 to NUM_ORIENT-1 'フレーム数 sFrmNum(iActCnt, iOriCnt, 0) = ByteReadInt(sInp) sFrmNum(iActCnt, iOriCnt, 1) = ByteReadInt(sInp) sFrmNum(iActCnt, iOriCnt, 2) = ByteReadInt(sInp) sFrmNum(iActCnt, iOriCnt, 3) = ByteReadInt(sInp) 'フレーム数 iFrmNum = sFrmNum(iActCnt, iOriCnt, 3) * 16^6 _ + sFrmNum(iActCnt, iOriCnt, 2) * 16^4 _ + sFrmNum(iActCnt, iOriCnt, 1) * 16^2 _ + sFrmNum(iActCnt, iOriCnt, 0) 'フレーム数だけループ for iFrmCnt=0 to iFrmNum-1 'フレーム情報(パレット0〜7) for iPalCnt=0 to 7 sFrame(iActCnt, iOriCnt, iFrmCnt, iPalCnt, 0) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, iPalCnt, 1) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, iPalCnt, 2) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, iPalCnt, 3) = ByteReadInt(sInp) next 'フレーム情報(使用スプライト数) sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 0) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 1) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 2) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 3) = ByteReadInt(sInp) 'スプライト数 iSprNum = sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 3) * 16^6 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 2) * 16^4 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 1) * 16^2 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 0) 'スプライト情報(スプライト数だけループ) for iSprCnt=0 to iSprNum-1 'スプライト情報(Xoffs) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 3) = ByteReadInt(sInp) 'スプライト情報(Yoffs) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 3) = ByteReadInt(sInp) 'スプライト情報(SprNo) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 3) = ByteReadInt(sInp) 'スプライト情報(Mirror) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 3) = ByteReadInt(sInp) 'スプライト情報(Color) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 4, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 4, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 4, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 4, 3) = ByteReadInt(sInp) 'ヘッダー情報(フォーマットタイプが0x0203の場合) if iTypeCd = "0203" then 'スプライト情報(XMag) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 3) = ByteReadInt(sInp) 'スプライト情報(YMag) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 0) = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 0) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 1) = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 1) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 2) = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 2) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 3) = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 3) 'ヘッダー情報(フォーマットタイプが0x0203以外の場合) else 'スプライト情報(XMag) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 3) = ByteReadInt(sInp) 'スプライト情報(YMag) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 3) = ByteReadInt(sInp) end if 'スプライト情報(Rot) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 3) = ByteReadInt(sInp) 'スプライト情報(Type) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 3) = ByteReadInt(sInp) 'ヘッダー情報(フォーマットタイプが0x0204の場合) if iTypeCd = "0204" then 'スプライトNo iSprNo = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 3) * 16^6 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 2) * 16^4 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 1) * 16^2 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 0) 'スプライト情報(SprW) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 0) = sImage(iSprNo, 0, 0) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 1) = sImage(iSprNo, 0, 1) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 2) = 0 sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 3) = 0 'スプライト情報(SprH) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 0) = sImage(iSprNo, 1, 0) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 1) = sImage(iSprNo, 1, 1) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 2) = 0 sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 3) = 0 'ヘッダー情報(フォーマットタイプが0x0205の場合) elseif iTypeCd = "0205" then 'スプライト情報(SprW) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 9, 3) = ByteReadInt(sInp) 'スプライト情報(SprH) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 0) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 1) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 2) = ByteReadInt(sInp) sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 10, 3) = ByteReadInt(sInp) end if next 'フレーム情報(効果音No) sFrame(iActCnt, iOriCnt, iFrmCnt, 9, 0) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 9, 1) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 9, 2) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 9, 3) = ByteReadInt(sInp) 'フレーム情報(拡張情報数) sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 0) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 1) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 2) = ByteReadInt(sInp) sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 3) = ByteReadInt(sInp) '拡張情報数 iExtNum = sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 3) * 16^6 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 2) * 16^4 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 1) * 16^2 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 10, 0) '拡張情報(拡張情報数だけループ) for iExtCnt=0 to iExtNum-1 '拡張情報(Ext) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 0, 0) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 0, 1) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 0, 2) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 0, 3) = ByteReadInt(sInp) '拡張情報(ExtXoffs) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 1, 0) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 1, 1) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 1, 2) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 1, 3) = ByteReadInt(sInp) '拡張情報(ExtYoffs) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 2, 0) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 2, 1) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 2, 2) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 2, 3) = ByteReadInt(sInp) '拡張情報(terminate) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 3, 0) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 3, 1) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 3, 2) = ByteReadInt(sInp) sExtent(iActCnt, iOriCnt, iFrmCnt, iExtCnt, 3, 3) = ByteReadInt(sInp) next next next next '----------------------------------- '効果音部 '----------------------------------- '効果音数 sSndNum(0) = ByteReadInt(sInp) sSndNum(1) = ByteReadInt(sInp) sSndNum(2) = ByteReadInt(sInp) sSndNum(3) = ByteReadInt(sInp) '効果音数 iSndNum = sSndNum(3) * 16^6 _ + sSndNum(2) * 16^4 _ + sSndNum(1) * 16^2 _ + sSndNum(0) '効果音情報(効果音数 * 40byte) ReDim sSound(iSndNum-1,39) '効果音情報 for iSndCnt=0 to iSndNum-1 for iSefCnt=0 to NUM_SOUND_FILE_NAME-1 sSound(iSndCnt, iSefCnt) = ByteReadInt(sInp) next next '----------------------------------- 'アニメーション再生間隔部 '----------------------------------- 'act数だけループ(モンスターACTのみを考慮しているので4固定) for iActCnt=0 to iActNum-1 '向き数だけループ(8方向固定) for iOriCnt=0 to NUM_ORIENT-1 'アニメーション間隔 sInterval(iActCnt, iOriCnt, 0) = ByteReadInt(sInp) sInterval(iActCnt, iOriCnt, 1) = ByteReadInt(sInp) sInterval(iActCnt, iOriCnt, 2) = ByteReadInt(sInp) sInterval(iActCnt, iOriCnt, 3) = ByteReadInt(sInp) next next '----------------------------------- '変換前ACTファイルクローズ '----------------------------------- sInp.Close '================================================================= 'SPR変換処理 '================================================================= '----------------------------------- '配列領域確保 '----------------------------------- '合成後イメージ数カウント iImgSyn = 0 for iActCnt=0 to 4 'act00〜act04 for iOriCnt=0 to NUM_ORIENT/2-1 step 2 '下&左方向(斜めは飛ばす) iFrmNum = sFrmNum(iActCnt, iOriCnt, 3) * 16^6 _ + sFrmNum(iActCnt, iOriCnt, 2) * 16^4 _ + sFrmNum(iActCnt, iOriCnt, 1) * 16^2 _ + sFrmNum(iActCnt, iOriCnt, 0) 'フレーム数 for iFrmCnt=0 to iFrmNum-1 iImgSyn = iImgSyn + 1 next next next ReDim sImageSyn(iImgSyn, 2 ,1) '合成後イメージ情報(合成後イメージ数 * 3情報 * 2byte) ReDim sImageCmp(iImgSyn, 2 ,1) '圧縮後イメージ情報(合成後イメージ数 * 3情報 * 2byte) ReDim sImageDataSyn(iImgSyn, 255, 255) '合成後イメージデータ(合成後イメージ数 * 最大縦256ドット * 最大横256ドット) ReDim sImageDataCmp(iImgSyn, 65536) '圧縮後イメージデータ(合成後イメージ数 * 65536+1byte(最大縦256ドット*最大横256ドット+圧縮情報1byte)) '----------------------------------- 'フレーム内イメージ合成処理 '----------------------------------- '合成後イメージNo iImgSyn = 0 'act00〜act04を対象とする for iActCnt=0 to 4 '下/左向きだけ処理(斜めは飛ばす) for iOriCnt=0 to NUM_ORIENT/2-1 step 2 'フレーム数 iFrmNum = sFrmNum(iActCnt, iOriCnt, 3) * 16^6 _ + sFrmNum(iActCnt, iOriCnt, 2) * 16^4 _ + sFrmNum(iActCnt, iOriCnt, 1) * 16^2 _ + sFrmNum(iActCnt, iOriCnt, 0) 'フレーム数だけループ for iFrmCnt=0 to iFrmNum-1 'ACT-SPR対応表に新SprNoをセット sActSpr(iActCnt, iOriCnt, iFrmCnt, 0) = iImgSyn sActSpr(iActCnt, iOriCnt+1, iFrmCnt, 0) = iImgSyn 'スプライト数 iSprNum = sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 3) * 16^6 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 2) * 16^4 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 1) * 16^2 _ + sFrame(iActCnt, iOriCnt, iFrmCnt, 8, 0) '最大座標を初期化 iRightMax = "" iLeftMax = "" iTopMax = "" iBottomMax = "" '下地作成 for iYCnt=0 to 512 for iXCnt=0 to 512 sSyn(iYCnt, iXCnt) = 0 next next '合成イメージ数だけループ for iSprCnt=iSprNum-1 to 0 step -1 'スプライト情報(Type) iTypNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 0) * 16^6 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 1) * 16^4 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 2) * 16^2 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 8, 3) 'Type=0(圧縮画像のみを処理し非圧縮画像は無視する) if iTypNum = 0 then 'スプライト情報(SprNo) iImgNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 3) * 16^6 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 2) * 16^4 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 1) * 16^2 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 2, 0) 'スプライト情報(Xoffs) iXofsNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 3) * 16^6 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 2) * 16^4 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 1) * 16^2 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 0, 0) 'OxF000000000より大きければ負数なので反転させる if iXofsNum > 128*16^6 then iXofsNum = iXofsNum - (255*16^6+255*16^4+255*16^2+255) - 1 end if 'スプライト情報(Yoffs) iYofsNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 3) * 16^6 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 2) * 16^4 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 1) * 16^2 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 1, 0) 'OxF000000000より大きければ負数なので反転させる if iYofsNum > 128*16^6 then iYofsNum = iYofsNum - (255*16^6+255*16^4+255*16^2+255) - 1 end if 'スプライト情報(Mirror) iMirrNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 3) * 16^6 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 2) * 16^4 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 1) * 16^2 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 3, 0) ''スプライト情報(XMag) 'iXMagNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 0) * 16^6 _ ' + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 1) * 16^4 _ ' + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 2) * 16^2 _ ' + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 5, 3) ' ''スプライト情報(YMag) 'iYMagNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 0) * 16^6 _ ' + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 1) * 16^4 _ ' + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 2) * 16^2 _ ' + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 6, 3) 'スプライト情報(Rot) iRotNum = sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 3) * 16^6 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 2) * 16^4 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 1) * 16^2 _ + sSprite(iActCnt, iOriCnt, iFrmCnt, iSprCnt, 7, 0) '逆回転→順回転へ変換 iRotNum = iRotNum * (-1) 'ラジアン iRad = iRotNum * NUM_PI / 180 '画像幅/高さ iXImgNum = sImage(iImgNum, 0, 1) * 16^2 _ + sImage(iImgNum, 0, 0) iYImgNum = sImage(iImgNum, 1, 1) * 16^2 _ + sImage(iImgNum, 1, 0) 'Sin/Cos値 iSin = sin(iRad) iCos = cos(iRad) '回転後の幅/高さ dW = IntUp( Abs( iXImgNum * iCos ) + Abs( iYImgNum * iSin ) ) dH = IntUp( Abs( iXImgNum * iSin ) + Abs( iYImgNum * iCos ) ) '座標補正値 iXofsNum = 256 + iXofsNum - IntUp(iXImgNum/2) iYofsNum = 256 + iYofsNum - IntUp(iYImgNum/2) '処理時間短縮用 iWh = iXImgNum/2 iHh = iYImgNum/2 '回転後画像を1ドットずつループ処理 for iYCntSyn=(-1)*dH to dH for iXCntSyn=(-1)*dW to dW '回転後座標から回転前座標を逆算 iXCnt = Int( (iXCntSyn-iWh) * iCos - (iYCntSyn-iHh) * iSin + iWh ) iYCnt = Int( (iXCntSyn-iWh) * iSin + (iYCntSyn-iHh) * iCos + iHh ) '反転なら反転後座標を算出 if iMirrNum = 1 then iXCnt = (iXImgNum-1) - iXCnt end if '回転前画像の枠内に収まるか if iXCnt >= 0 and iXCnt < iXImgNum and iYCnt >= 0 and iYCnt < iYImgNum then '&H00(透過指定色)でなければ下地に上書き if sImageData(iImgNum, iYCnt, iXCnt) <> 0 then sSyn(iYofsNum+iYCntSyn, iXofsNum+iXCntSyn) = sImageData(iImgNum, iYCnt, iXCnt) end if end if next next end if next '画像部分の上下左右最大座標を仮決め iTopMax = 256 iBottomMax = 256 iRightMax = 256 iLeftMax = 256 '画像部分の上下左右最大座標を取得 for iYCnt=0 to 512 for iXCnt=0 to 512 if sSyn(iYCnt, iXCnt) <> 0 then if iYCnt > iTopMax then iTopMax = iYCnt elseif iYCnt < iBottomMax then iBottomMax = iYCnt end if if iXCnt > iRightMax then iRightMax = iXCnt elseif iXCnt < iLeftMax then iLeftMax = iXCnt end if end if next next '合成後幅 iXMaxNum = iRightMax - iLeftMax '反転時の中心座標ずれを防ぐため奇数にする if iXMaxNum mod 2 = 0 then iXMaxNum = iXMaxNum + 1 iRightMax = iRightMax + 1 end if sImageSyn(iImgSyn, 0, 0) = iXMaxNum mod 256 sImageSyn(iImgSyn, 0, 1) = Int(iXMaxNum / 256) '合成後高さ iYMaxNum = iTopMax - iBottomMax '反転時の中心座標ずれを防ぐため奇数にする if iYMaxNum mod 2 = 0 then iYMaxNum = iYMaxNum + 1 iBottomMax = iBottomMax + 1 end if sImageSyn(iImgSyn, 1, 0) = iYMaxNum mod 256 sImageSyn(iImgSyn, 1, 1) = Int(iYMaxNum / 256) '合成後X基点座標 iXPos = iLeftMax + IntUp(iXMaxNum/2) - 256 sActSpr(iActCnt, iOriCnt, iFrmCnt, 1) = iXPos sActSpr(iActCnt, iOriCnt+1, iFrmCnt, 1) = iXPos '合成後Y基点座標 iYPos = iBottomMax + IntUp(iYMaxNum/2) - 256 sActSpr(iActCnt, iOriCnt, iFrmCnt, 2) = iYPos sActSpr(iActCnt, iOriCnt+1, iFrmCnt, 2) = iYPos '画像部分だけ抽出 iYCntSyn = 0 for iYCnt=iBottomMax to iTopMax iXCntSyn = 0 for iXCnt=iLeftMax to iRightMax sImageDataSyn(iImgSyn, iYCntSyn, iXCntSyn) = sSyn(iYCnt, iXCnt) iXCntSyn = iXCntSyn + 1 next iYCntSyn = iYCntSyn + 1 next iImgSyn = iImgSyn + 1 next next next '----------------------------------- 'イメージ圧縮処理 '----------------------------------- for iImgCnt=0 to iImgSyn-1 '幅 sImageCmp(iImgCnt, 0, 0) = sImageSyn(iImgCnt, 0, 0) sImageCmp(iImgCnt, 0, 1) = sImageSyn(iImgCnt, 0, 1) '高さ sImageCmp(iImgCnt, 1, 0) = sImageSyn(iImgCnt, 1, 0) sImageCmp(iImgCnt, 1, 1) = sImageSyn(iImgCnt, 1, 1) iXImgNum = sImageCmp(iImgCnt, 0, 1) * 16^2 _ + sImageCmp(iImgCnt, 0, 0) iYImgNum = sImageCmp(iImgCnt, 1, 1) * 16^2 _ + sImageCmp(iImgCnt, 1, 0) '圧縮データ作成 iOutPos = 0 iZeroCnt = 0 for iYCnt=0 to iYImgNum-1 for iXCnt=0 to iXImgNum-1 if sImageDataSyn(iImgCnt, iYCnt, iXCnt) = 0 then '&H00カウンタを1つ増やす iZeroCnt = iZeroCnt + 1 '&H00カウンタが255になったら&H00と&HFFを書き込む if iZeroCnt = 255 then sImageDataCmp(iImgCnt, iOutPos) = 0 iOutPos = iOutPos + 1 sImageDataCmp(iImgCnt, iOutPos) = 255 iOutPos = iOutPos + 1 iZeroCnt = 0 end if else '&H00カウンタが1以上なら&H00とカウント数を書き込む if iZeroCnt >= 1 then sImageDataCmp(iImgCnt, iOutPos) = 0 iOutPos = iOutPos + 1 sImageDataCmp(iImgCnt, iOutPos) = iZeroCnt iOutPos = iOutPos + 1 iZeroCnt = 0 end if '圧縮前データをそのまま圧縮後データへ書き込む sImageDataCmp(iImgCnt, iOutPos) = sImageDataSyn(iImgCnt, iYCnt, iXCnt) iOutPos = iOutPos + 1 end if next next '&H00カウンタが1以上なら&H00とカウント数を書き込む if iZeroCnt >= 1 then sImageDataCmp(iImgCnt, iOutPos) = 0 iOutPos = iOutPos + 1 sImageDataCmp(iImgCnt, iOutPos) = iZeroCnt iOutPos = iOutPos + 1 iZeroCnt = 0 end if '圧縮後サイズ sImageCmp(iImgCnt, 2, 0) = iOutPos mod 256 sImageCmp(iImgCnt, 2, 1) = IntEx(iOutPos / 256) next '================================================================= '変換後SPRファイル生成 '================================================================= '----------------------------------- '変換後SPRファイルオープン '----------------------------------- sOut.Open '----------------------------------- 'ヘッダー部 '----------------------------------- 'ヘッダー情報(固定値/マジック+バージョン) sOut.Write = bStream.getByte(sSprHead(0, 0)) sOut.Write = bStream.getByte(sSprHead(0, 1)) sOut.Write = bStream.getByte(sSprHead(0, 2)) sOut.Write = bStream.getByte(sSprHead(0, 3)) 'ヘッダー情報(圧縮イメージ数) sOut.Write = bStream.getByte(iImgSyn mod 256) sOut.Write = bStream.getByte(IntEx(iImgSyn / 256)) 'ヘッダー情報(フラットイメージ数) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) '----------------------------------- '圧縮イメージ部 '----------------------------------- for iImgCnt=0 to iImgSyn-1 '幅 sOut.Write = bStream.getByte(sImageCmp(iImgCnt, 0, 0)) sOut.Write = bStream.getByte(sImageCmp(iImgCnt, 0, 1)) '高さ sOut.Write = bStream.getByte(sImageCmp(iImgCnt, 1, 0)) sOut.Write = bStream.getByte(sImageCmp(iImgCnt, 1, 1)) '圧縮後サイズ sOut.Write = bStream.getByte(sImageCmp(iImgCnt, 2, 0)) sOut.Write = bStream.getByte(sImageCmp(iImgCnt, 2, 1)) iImgS = sImageCmp(iImgCnt, 2, 1) * 16^2 _ + sImageCmp(iImgCnt, 2, 0) '圧縮データ for iSCnt=0 to iImgS-1 sOut.Write = bStream.getByte(sImageDataCmp(iImgCnt, iSCnt)) next next '----------------------------------- 'フラットイメージ部 '----------------------------------- '全て圧縮イメージにするのでフラットイメージは書き込まない '----------------------------------- 'パレット部 '----------------------------------- for iPalCnt=0 to 256-1 sOut.Write = bStream.getByte(sPallet(iPalCnt, 0)) sOut.Write = bStream.getByte(sPallet(iPalCnt, 1)) sOut.Write = bStream.getByte(sPallet(iPalCnt, 2)) sOut.Write = bStream.getByte(sPallet(iPalCnt, 3)) next '----------------------------------- '変換後SPRファイルクローズ '----------------------------------- sOut.SaveToFile sOutSpr, adWriteOver sOut.Flush sOut.Close '================================================================= '変換後ACTファイル生成 '================================================================= '----------------------------------- '変換後ACTファイルオープン '----------------------------------- sOut.Open '----------------------------------- 'ヘッダー部 '----------------------------------- 'ヘッダー情報(ACTバージョン) sOut.Write = bStream.getByte(sHeader(0, 0)) sOut.Write = bStream.getByte(sHeader(0, 1)) 'ヘッダー情報(フォーマットタイプ) sOut.Write = bStream.getByte(4) '固定(0x0204) sOut.Write = bStream.getByte(2) '固定(0x0204) 'ヘッダー情報(アニメーション数) sOut.Write = bStream.getByte(104) '固定(13act * 8方向 = 104) sOut.Write = bStream.getByte(0) '固定(13act * 8方向 = 104) 'ヘッダー情報(??) sOut.Write = bStream.getByte(sHeader(3, 0)) sOut.Write = bStream.getByte(sHeader(3, 1)) 'ヘッダー情報(??) sOut.Write = bStream.getByte(sHeader(4, 0)) sOut.Write = bStream.getByte(sHeader(4, 1)) sOut.Write = bStream.getByte(sHeader(4, 2)) sOut.Write = bStream.getByte(sHeader(4, 3)) 'ヘッダー情報(??) sOut.Write = bStream.getByte(sHeader(5, 0)) sOut.Write = bStream.getByte(sHeader(5, 1)) sOut.Write = bStream.getByte(sHeader(5, 2)) sOut.Write = bStream.getByte(sHeader(5, 3)) '----------------------------------- 'フレーム部 '----------------------------------- 'act00〜act12を生成する for iPlayActCnt=0 to NUM_ACT_PLAYER 'act毎のコピー元と規定フレーム数を設定 if iPlayActCnt = 0 then 'act00(立ち/固定) iActCnt=0 'コピー元データ-変換前act00(立ち) iFrmMax=3 '規定フレーム数 elseif iPlayActCnt = 1 then 'act01(移動) iActCnt=1 'コピー元データ-変換前act01(移動) iFrmMax=8 '規定フレーム数 elseif iPlayActCnt = 2 then 'act02(座り) iActCnt=0 'コピー元データ-変換前act00(立ち) iFrmMax=3 '規定フレーム数 elseif iPlayActCnt = 3 then 'act03(拾い) iActCnt=0 'コピー元データ-変換前act00(立ち) iFrmMax=3 '規定フレーム数 elseif iPlayActCnt = 4 then 'act04(立ち/アニメ) iActCnt=0 'コピー元データ-変換前act00(立ち) iFrmMax=6 '規定フレーム数 elseif iPlayActCnt = 5 then 'act05(特殊スキル) iActCnt=2 'コピー元データ-変換前act02(攻撃) iFrmMax=5 '規定フレーム数 elseif iPlayActCnt = 6 then 'act06(ダメージ/アニメ) iActCnt=3 'コピー元データ-変換前act03(ダメージ) iFrmMax=3 '規定フレーム数 elseif iPlayActCnt = 7 then 'act07(ダメージ/固定) iActCnt=3 'コピー元データ-変換前act03(ダメージ) iFrmMax=1 '規定フレーム数 elseif iPlayActCnt = 8 then 'act08(ダウン/固定) iActCnt=4 'コピー元データ-変換前act04(ダウン) iFrmMax=1 '規定フレーム数 elseif iPlayActCnt = 9 then 'act09(立ち/正面) iActCnt=0 'コピー元データ-変換前act00(立ち) iFrmMax=1 '規定フレーム数 elseif iPlayActCnt = 10 then 'act10(攻撃) iActCnt=2 'コピー元データ-変換前act02(攻撃) iFrmMax=9 '規定フレーム数 elseif iPlayActCnt = 11 then 'act11(物理スキル) iActCnt=2 'コピー元データ-変換前act02(攻撃) iFrmMax=8 '規定フレーム数 elseif iPlayActCnt = 12 then 'act12(詠唱スキル) iActCnt=0 'コピー元データ-変換前act00(立ち) iFrmMax=6 '規定フレーム数 end if '向き数だけループ(8方向固定) for iOriCnt=0 to NUM_ORIENT-1 '下→右、左→上への反転コピー設定 if iOriCnt = 4 then iOriCntExt = 2 iMirFlg = 1 elseif iOriCnt = 5 then iOriCntExt = 3 iMirFlg = 1 elseif iOriCnt = 6 then iOriCntExt = 1 iMirFlg = 1 elseif iOriCnt = 7 then iOriCntExt = 0 iMirFlg = 1 else iOriCntExt = iOriCnt iMirFlg = 0 end if 'フレーム数 sOut.Write = bStream.getByte(iFrmMax) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) 'フレーム数だけループ for iFrmCnt=0 to iFrmMax-1 '※特殊条件 '※act00などは規定フレーム必要な為、最初の1フレームを規定数だけ使いまわすよう '※使用フレームを0固定にする if iPlayActCnt = 0 then iFrmCntExt = 0 '※act08(ダウン)はモンスターのダウンアニメーションの最後の1フレームを使用する為 '※フレームカウンタを最終フレームの値にする elseif iPlayActCnt = 8 then iFrmNum = sFrmNum(iActCnt, iOriCntExt, 3) * 16^6 _ + sFrmNum(iActCnt, iOriCntExt, 2) * 16^4 _ + sFrmNum(iActCnt, iOriCntExt, 1) * 16^2 _ + sFrmNum(iActCnt, iOriCntExt, 0) _ - 1 iFrmCntExt = iFrmNum else iFrmNum = sFrmNum(iActCnt, iOriCntExt, 3) * 16^6 _ + sFrmNum(iActCnt, iOriCntExt, 2) * 16^4 _ + sFrmNum(iActCnt, iOriCntExt, 1) * 16^2 _ + sFrmNum(iActCnt, iOriCntExt, 0) iFrmCntExt = Int( iFrmCnt/iFrmMax * iFrmNum + 0.5 ) end if 'フレーム情報(パレット0〜7) for iPalCnt=0 to 7 sOut.Write = bStream.getByte(sFrame(iActCnt, iOriCntExt, iFrmCntExt, iPalCnt, 0)) sOut.Write = bStream.getByte(sFrame(iActCnt, iOriCntExt, iFrmCntExt, iPalCnt, 1)) sOut.Write = bStream.getByte(sFrame(iActCnt, iOriCntExt, iFrmCntExt, iPalCnt, 2)) sOut.Write = bStream.getByte(sFrame(iActCnt, iOriCntExt, iFrmCntExt, iPalCnt, 3)) next 'フレーム情報(使用スプライト数)(SprNo=-1と変換後Spr1枚の計2枚) iSprNum = 2 sOut.Write = bStream.getByte(2) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) 'スプライト情報(スプライト数だけループ) for iSprCnt=0 to iSprNum-1 '※特殊条件 'SprNoが-1のデータを作る if iSprCnt = 0 then iSprCntExt = 0 else iSprCntExt = iSprCnt -1 end if 'スプライト情報(Xoffs) iXofsVal = sActSpr(iActCnt, iOriCntExt, iFrmCntExt, 1) '反転するなら-1をかける if iMirFlg = 1 then iXofsVal = iXofsVal * (-1) end if '10進数から16進数へ変換(Hexがオーバーフローを起こすので分割する) iXofsValTop = IntEx(iXofsVal / 16^4) iXofsValBtm = iXofsVal - iXofsValTop * 16^4 if iXofsVal >= 0 then sXofsValTop = Right("0000" & Hex(iXofsValTop),4) sXofsValBtm = Right("0000" & Hex(iXofsValBtm),4) else if iXofsValTop = 0 then sXofsValTop = "FFFF" else sXofsValTop = Right("FFFF" & Hex(iXofsValTop),4) end if sXofsValBtm = Right("FFFF" & Hex(iXofsValBtm),4) end if sOut.Write = bStream.getByte(CInt("&H0" & Mid(sXofsValBtm, 3, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sXofsValBtm, 1, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sXofsValTop, 3, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sXofsValTop, 1, 2))) 'スプライト情報(Yoffs) iYofsVal = sActSpr(iActCnt, iOriCntExt, iFrmCntExt, 2) '10進数から16進数へ変換(Hexがオーバーフローを起こすので分割する) iYofsValTop = IntEx(iYofsVal / 16^4) iYofsValBtm = iYofsVal - iYofsValTop * 16^4 if iYofsVal >= 0 then sYofsValTop = Right("0000" & Hex(iYofsValTop),4) sYofsValBtm = Right("0000" & Hex(iYofsValBtm),4) else if iYofsValTop = 0 then sYofsValTop = "FFFF" else sYofsValTop = Right("FFFF" & Hex(iYofsValTop),4) end if sYofsValBtm = Right("FFFF" & Hex(iYofsValBtm),4) end if sOut.Write = bStream.getByte(CInt("&H0" & Mid(sYofsValBtm, 3, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sYofsValBtm, 1, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sYofsValTop, 3, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sYofsValTop, 1, 2))) 'スプライト情報(SprNo) if iSprCnt = 0 then sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) else '変換後SprNo iSprSyn = sActSpr(iActCnt, iOriCntExt, iFrmCntExt, 0) sOut.Write = bStream.getByte(iSprSyn mod 256) sOut.Write = bStream.getByte(IntEx(iSprSyn / 256)) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) end if 'スプライト情報(Mirror) sOut.Write = bStream.getByte(iMirFlg) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) 'スプライト情報(Color) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) 'スプライト情報(XMag) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(128) sOut.Write = bStream.getByte(63) 'スプライト情報(YMag) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(128) sOut.Write = bStream.getByte(63) 'スプライト情報(Rot) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) 'スプライト情報(Type) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) next 'フレーム情報(効果音No)(効果音無しとするのでFFFFFFFF固定) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) sOut.Write = bStream.getByte(255) 'フレーム情報(拡張情報数) sOut.Write = bStream.getByte(1) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) '拡張情報(Ext)(0x0045FA48固定) sOut.Write = bStream.getByte(72) sOut.Write = bStream.getByte(250) sOut.Write = bStream.getByte(69) sOut.Write = bStream.getByte(0) '拡張情報(ExtXoffs) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 0), 7, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 0), 5, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 0), 3, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 0), 1, 2))) '拡張情報(ExtYoffs) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 1), 7, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 1), 5, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 1), 3, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sExtCns(iPlayActCnt, iOriCnt, iFrmCnt, 1), 1, 2))) '拡張情報(terminate) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) sOut.Write = bStream.getByte(0) next next next '----------------------------------- '効果音部 '----------------------------------- '効果音数 sOut.Write = bStream.getByte(sSndNum(0)) sOut.Write = bStream.getByte(sSndNum(1)) sOut.Write = bStream.getByte(sSndNum(2)) sOut.Write = bStream.getByte(sSndNum(3)) '効果音数 iSndNum = sSndNum(3) * 16^6 _ + sSndNum(2) * 16^4 _ + sSndNum(1) * 16^2 _ + sSndNum(0) '効果音ファイル名 for iSndCnt=0 to iSndNum-1 for iSefCnt=0 to NUM_SOUND_FILE_NAME-1 sOut.Write = bStream.getByte(sSound(iSndCnt, iSefCnt)) next next '----------------------------------- 'アニメーション再生間隔部 '----------------------------------- 'act00〜act12を生成する for iActCnt=0 to NUM_ACT_PLAYER '向き数だけループ for iOriCnt=0 to NUM_ORIENT-1 'アニメーション間隔 sOut.Write = bStream.getByte(CInt("&H0" & Mid(sIntervalCns(iActCnt, iOriCnt), 7, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sIntervalCns(iActCnt, iOriCnt), 5, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sIntervalCns(iActCnt, iOriCnt), 3, 2))) sOut.Write = bStream.getByte(CInt("&H0" & Mid(sIntervalCns(iActCnt, iOriCnt), 1, 2))) next next '----------------------------------- '変換後ACTファイルクローズ '----------------------------------- sOut.SaveToFile sOutAct, adWriteOver sOut.Flush sOut.Close 'エラー無視設定 if FLG_ERROR_SKIP = 1 then On Error Goto 0 end if End Function '********************************************************************* ' IntExファンクション '********************************************************************* Function IntEx(iTmp) if iTmp >= 0 then IntEx = Int(iTmp) else IntEx = Int(iTmp * (-1)) * (-1) end if End Function '********************************************************************* ' IntUpファンクション '********************************************************************* Function IntUp(iTmp) if iTmp - IntEx(iTmp) <> 0 then if iTmp >= 0 then IntUp = Int(iTmp) + 1 else IntUp = Int(iTmp * (-1)) * (-1) - 1 end if else IntUp = iTmp end if End Function ''********************************************************************* '' ByteReadファンクション ''********************************************************************* 'Function ByteRead(sTmp) ' Dim str ' str = Hex(AscB(sTmp.Read(1))) ' if Len(str) = 2 then ' ByteRead = str ' else ' ByteRead = "0" & str ' end if 'End Function '********************************************************************* ' ByteReadIntファンクション '********************************************************************* Function ByteReadInt(sTmp) ByteReadInt = AscB(sTmp.Read(1)) End Function '********************************************************************* ' ByteStreamクラス(ネットからの拾いもの) '********************************************************************* Class ByteStream Private innerArray(255) '================================================================= ' クラスの初期化処理 '================================================================= Private Sub Class_Initialize() Dim wkStream Set wkStream = WScript.CreateObject("ADODB.Stream") wkStream.Type = adTypeText wkStream.Charset = ENCODE_UNICODE wkStream.Open Dim i For i=0 To &hff wkStream.WriteText ChrW(i) Next wkStream.Position = 0 wkStream.Type = adTypeBinary If ("fe" = LCase(Hex(AscB(wkStream.Read(1))))) Then wkStream.Position = 2 End If For i=0 To &hff wkStream.Position = wkStream.Position + 1 innerArray(i) = wkStream.Read(1) Next wkStream.Close Set wkStream = Nothing End Sub '================================================================= ' 指定した数値のByte()を返す '================================================================= Public Function getByte(num) If (num < 0) Or (UBound(innerArray) < num) Then getByte = innerArray(0) '0x00を返す Else getByte = innerArray(num) End If End Function End Class