ICLPX's Apps

使用可能な特殊機能に関して

ここでは使用可能な特殊機能(隠し機能っぽいもの)を紹介しています。

-複数のファイルをまとめてドロップした時の仕様
-[Paste]ボタンでまとめてデータの編集をする機能
機能の仕様
例と結果
データのリサイズ機能について
Pasteの仕様について

複数のファイルをまとめてドロップした時の仕様
ファイルをまとめてドロップした後、出力するデータを入力(Command Type)すると動作します。
上側は、0=不明なEventをすべて表示、1=使用しているVariableをすべて表示(Article内データを含む)、2=使用しているVariableをすべて表示(Article内データを除く)、3=不明なRequirementをすべて表示、部分一致検索用のイベントデータ=イベントの部分一致検索
となっています。Variableの表示は特定の変数を表示しないオプションの効果を受けます。これらはデータが見つからなければ見つからなかったと表示され、データは出力されません。

残りはAN000-000 (000=Offset)=指定範囲のAttributesを出力、AS000-000 (000=Offset)=指定範囲のSSE Attributesを出力、AF000-000 (000=Action ID)=指定範囲のAction Flagsを出力、EF000-000 (000=Action ID)=指定範囲のExtra Action Flagsを出力、SF000-000 (000=SubAction ID)=指定範囲のAnimation名とFlagsを出力、その他=読み込みをキャンセル
キャンセル以外は、指定した範囲のデータを書き出します。これらは出力できるデータがなくてもそのような表示はされずに出力されます。
出力するデータが使えないものである場合も、自動的にキャンセルされる仕様になっています。この時、ファイルは読み込まれません。

出力できるデータがある場合は、結果をテキストファイルとして出力するか質問されます。
「はい」と答えるとDataSearchフォルダが作られて、そのフォルダ内にResult.txtとして出力されます。
「いいえ」と答えると代わりにCompressタブに結果が表示されます。
DataSearchフォルダがある場合は表示されず、自動的にDataSearchフォルダに結果がテキストファイルとして出力されます。
この時、既存のテキストファイルは上書きせず、テキストファイルを毎回新規作成する仕様になっています。

[Paste]ボタンでまとめてデータの編集をする機能
メモ帳などにアプリから得られるテキストデータをコピーしてできることです。※テキストデータなので、普通に入力してもOKです。
文字列データをクリップボードにコピーして、Pasteボタンを押すことで、まとめて多数のデータを書き換えることができる機能です。
この機能を使うには、メモ帳などにデータを書き込んで、文字列を完成させてクリップボードにコピーを行う必要があります。
また、編集用の機能なのでFighter.pacでは使えません。

この機能を使うと、同じようなことをまとめてできるので、イベントデータなどの編集が簡単になるかもしれません。
Eventsタブ内で、通常のイベント貼り付けさえ行うことができるなら、どこでもできます。(Fighter.pacは不可)
v0.39からはEventsタブ内なら開いている場所で通常のイベントの貼り付けができない場所でも機能します。
テンプレートを作れるのも便利ですが、Sub Routine内のデータやArticleのデータには使えないので注意。
※どこでPasteをクリックしても効果は同じです。この機能を使って特定のデータを消すもしくはイベントの追加をするからと言ってわざわざそこに開く必要はありません

例:
AC:SpA:Ex=117-118,
これをPasteボタンをクリックして貼り付けると、Paste Previewが表示されます。(この内容でコピーしますがよろしいですか?という確認です)
「Events All Clear: Specials Exit 117-118,」
確定するとSpecialsから見ることができるExitのイベントデータがAction117と118の所だけ全て削除されます。

例の「AC」の部分は「どのようなことを行うか」という部分で、使用可能なのは全部で10種類です。
・AC:イベントを全削除する。空ルーチンでもOffsetは0にする。Offsetがすでに0のものには効果はない。
・PB:イベントリストの一番下(最後)に、イベントデータを貼り付ける
・PF:イベントリストの一番上(最初)に、イベントデータを貼り付ける
・PO:イベントリストを新しいイベントデータで上書きする
・SN:サブアクションネームを新しく入れた名前で上書きする
・SF:SubActionFlags(Animation Flagsから編集できるデータ)を新しく入れたデータで上書きする
・AF:ActionFlags(メインタブData、サブタブMiscから編集できるデータ)を新しく入れたデータで上書きする
・EF:ExtraActionFlags(メインタブData、サブタブMiscから編集できるデータ)を新しく入れたデータで上書きする
・AT: Attributes、SSE Attributesの値を変更する (v0.38b~)
・LS: Sub Routineイベントで別カテゴリのSub Actionリストを上書き、Offsetの入れ替え (v0.39~)

最後に「/」を入れて、2つ以上の動作を行うこともできます。でも、Externalの設定はできません。(External設定のあるSub Routineイベントなどの貼り付けは可能)

SN、SF、AF、EF、ATの5つはAC、PB、PF、POと異なる書き方が必要なので、
まず、AC、PB、PF、POの4つについて書きたいと思います。

AC:SpA:Ex=117-118,といったように書き込むと動作しますが、
この中で、「AC」の部分は「どのようなことを行うか」
「SpA:Ex」の部分は「どのタブで使われているデータか」「Listの内のどのデータか」
「117-118,」は117が「開始地点」、118が「終了地点」
をそれぞれ表しています。

「どのようなことを行うか」の部分が「PF」などで、イベントを追加したい場合はこの後ろに、
普通にCopyボタンをクリックしてコピーされるデータを貼り付けるだけでOKです。

「どのタブで使われているデータか」「Listの内のどのデータか」については、
Copyボタンを右クリックした時に出る、「Copy Routine」をクリックすると、
SpecialsのEntry 112を選択中だと「E=00070100:SpA:En=112,」
Sub ActionのMain 0を選択中だと「E=00070100:SubA:M=000,」
OverrideのExit 0を選択中だと「E=00070100:SOR:Ex=000,」
がクリップボードに書き込まれます。
この「E=00070100:SpA:En=112,」のうち、「SpA:En=112」の部分を取り出して使えばOKです。
※Articlesタブ、Sub Routinesタブから入手できるデータは、使えません。

「開始地点」「終了地点」については、そのままです。
開始地点のIDと終了地点のIDをそれぞれ入れるだけです。
注意点としては、
IDが0や1でも「000」といったように必ず3桁にしないと動作しないことと、
Overrideの場合は設定されたActionIDが「開始地点」と「終了地点」のID内に入っている場合に動作するため、位置を書き込んでも正常な動作をしないということ
この2つくらいです。
※「開始地点」と「終了地点」の値が逆になっている場合は「開始地点」の1つだけの設定が適用されます。これを利用して、「終了地点」を0にしておき、103、104、105、106にそれぞれ一つずつ指定サブルーチンの位置が違うデータを貼り付けるように設定、まとめて貼り付けを行わせる。 といったこともできます。ちなみに、変更前のものだと「開始地点,」となっている場合は動作しません。

v0.38bから、貼り付けらえれるデータに条件を付けられるようになりました。
圧縮などのテンプレートとして使えます。なお、同時に使える条件は1つだけです。
v0.38b~v0.39で使える条件は、A(Animation Name !=)、C(Event Count)、S(Sub Routine External)の3つです。

書き方の例(A):
PF:SubA:M=001-005(A)E=00070100:SubA:M=000,
指定されたSub Action IDでAnimationがnullでない場合、指定された動作を行います。

書き方の例(C):
PF:SubA:M=001-005(C<2)E=00070100:SubA:M=000,
指定されたイベントリストのイベント数が指定された内容とあっている場合、指定された動作を行います。
この場合はEvent Count<=2が条件となるので、イベント数が2個以下なら動作するということになります。
「<」の部分で使える他のコマンド:
>... イベント数が指定数以上なら実行
<... イベント数が指定数以下なら実行
!... イベント数が指定数と異なるなら実行
その他... イベント数が指定数と同じなら実行

書き方の例3(S):
PO:SubA:G=119-11B(S=effectAnimCmd_SmashThrowFCommon)E=00070100:SE00000000,
この場合、External Sub Routinesリストの中に「S=」の後に書かれている項目が存在するなら、貼り付け可能です。
また、Externalの付いたSub Routineをコピーすると取得できる「E=00070100:SE00000000,」などの項目が存在する場合、
「S=」の後に書かれている項目を貼り付けられるように自動で書き換えられます。
存在しない場合、Paste Previewのリストに表示されず、貼り付けもできません。
また、貼り付けできた場合も、条件などはPaste Previewのリストには表示されません。


「どのようなことを行うか」という部分が、SNの場合
SN:Set003-004,JumpFといった書き方をします。
「003-004,」の部分は「開始地点」と「終了地点」、「JumpF」の部分は書き変え後のAnimation名です。
通常の場合と同様で、Animation名の部分に「<null>」を入力するとAnimation名のデータを消すことができます。文字数最大が31までなのも同じです。
※改行を途中で入れると改行以降のデータの読み込みが行われません。また、「SN:Set003-004,<null>SN」といったように入れた場合、「<null>」の後ろにあるデータは読み込まれず「<null>」だけが適用されます。


「どのようなことを行うか」という部分が、SFの場合
SF:Set003-004,00020000といった書き方をします。
「003-004,」の部分は「開始地点」「終了地点」、「00020000」の部分は書き変え後のFlagsです。
今回の「00020000」だとLoopの部分のみにチェックが入り、他は全部チェックが外れた状態になります。
「Set」の部分を「And」または「Or=」(Or,でもOK)に変えると効果を変えることもできます。
(AndだとAnd演算、Or=だとOr演算を行います)
SF:And003-004,00020000→Loop以外にチェックが入っている場合はLoop以外のチェックを外す
SF:Or=003-004,00020000→Loopにチェックが入っていない場合はチェックを入れる
一応、下4桁も変更できますが、意味はないかと思われます。
※最初の文字さえ合っていれば動作します。「Or=」ではなく「ORs」、「Set」ではなく「SET」と書いても問題なく動作します。


「どのようなことを行うか」という部分が、AF、EFの場合
EF:Set117-118,1-00002000といった書き方をします。
「Set117-118,」の部分は「開始地点」「終了地点」、終了地点の後ろの「1」の部分は書き換えたいFlagsの場所、「00020000」の部分は書き変え後のFlagsです。
SFと同じで、「Set」の部分を「And」または「Or=」に変えると効果も同じように変わります。
AFの場合はCommonActionFlags(Action0~111のデータ)とSpecialActionFlags(Action112以降のデータ)がありますが、ここでは区別がありません。110-112と入れるとCommonActionFlagsの110と111、SpecialActionFlagsの112にデータが適用されます。
1つのAFまたはEFにつき1つのFlagsだけ、変更をできます。つまり、複数の同時編集には「/」を入れる必要があります。
例えば、ExtraActionFlagsのFlags0とFlags1をまとめて変更したい場合は、EF:Set117-118,0-20000040/EF:Set117-118,1-00002000といったように書くといいです。
このFlagsに関しては、よくわかっていない部分なのであまり利用価値はないかもしれません...

「どのようなことを行うか」という部分が、ATの場合
AT:Set014-01C,>*2といった書き方をします。
AT:の後のSetの部分は何に設定しても変化はありません。
その次の2つの値で位置を指定します。どちらも4で割り切れる値である必要があります。
「>」と「*」はそれぞれ別の動作を表します。
「>」の部分で使える他のコマンド:
A ... Attributesの値を変更
S ... SSE Attributesの値を変更
> ... Attributesの値を使ってSSE Attributesの値を変更
< ... SSE Attributesの値を使ってAttributesの値を変更
その他... それぞれの値を使ってそれぞれの値を変更

「*」の部分で使える他のコマンド:
+ ... 取得した値に、後ろに続く値を加算する
- ... 取得した値から、後ろに続く値を減算する
* ... 取得した値から、後ろに続く値を乗算する
その他... 後ろに続く値で変更した項目を上書きする

「どのようなことを行うか」という部分が、LSの場合は複数の書き方があります。

LSの機能1: Sub Routineイベントで別カテゴリのSub Actionリストを上書き
Sub Actionの指定したカテゴリのイベントリストを指定したカテゴリにコピーします。
例えば「LS:SM>SG,048-049」をPasteすると
Sub Action Main 48をPointerで指定したSub Routineイベント1つで、Sub Action GFX 48のリストを上書きし、
Sub Action Main 49をPointerで指定したSub Routineイベント1つで、Sub Action GFX 49のリストを上書きします。

例の「SM」と「SG」の部分はそれぞれコピー元(SM)とコピー先(SG)のカテゴリを指していて、
MainはSM、GFXはSG、SFXはSS、OtherはSO、NMainはNM、NGFXはNG、NSFXはNS、NOtherはNOで指定できます。
ここではSMなどと記載していますが、右クリックメニューの「Copy Routine」をコピーした時の「E=00070100:SubA:M=000,」の「:M」の部分です。

048-049はもちろん、開始点(048)と終了点(049)です。
ACなどと同じで、開始点が終了点以下だと単一データのコピーができます。
同じく、終了点はオーバーした場合一番最後に自動的に合わせてくれるのですべてのIDに適用も容易です。

単純なコピー機能ではなく、イベントリストが空の場合はSub Routineイベントでの指定はせず、ただイベントリストが空になり、
イベントが1つでパラメータが1つ以下の場合はイベントそのものをコピーします。

FitPopoでは使えると思われますが、他のファイルでは使えないかも。
ちなみに「LS:SM=SG,048-049」に変えると上書き時のイベントをSub RoutineからGotoにすることができます。

LSの機能2: Offsetの入れ替え
指定個所と指定個所のイベントリストをOffsetごと入れ替えます。
例えば「LS:SubA:M=000xSubA:G=000」をPasteすると
Sub Action Main 0とSub Action GFX 0のOffsetが交換されます。
片方がOffset0だと移動のような感じになります。
当然「SubA:M=000」と「SubA:G=000」はそれぞれ右クリックメニューの「Copy Routine」をコピーした時の「E=00070100:SubA:M=000,」の「SubA:M=000」の部分です。
そのため、そういったものをコピーできないArticleなどには使えません。
またこの機能では、Offset設定はそのままなのでSub Routineイベントなどの値は変わりません。

片方がSubRoutineの場合は異なる動作をします。
例えば「LS:SubA:M=000x2-00000000」をPasteすると、Sub Action Main 0にあるイベントリストを独立したサブルーチンにして、Sub Action Main 0のOffsetを0にします。
このとき、「2-00000000」の部分は「2」の部分が「S」でさえなければどんな設定でも同じです。(文字数は減らすと機能しません)
他のSub Routineイベントなどはそのイベントリストを指定したままになるので、サブルーチン指定用に置いているSub Actionなどのイベントを独立させるときに便利。

逆に独立したサブルーチンをOffsetにすることもできます。
例えば「LS:2-0000C558xSubA:M=003」をPasteすると、Sub Action Main 3のOffsetを独立したサブルーチン(0xC558)と入れ替えます。
このとき、元のSub Action Main 0のイベントリストはどこかで使われていれば残りますが、どこにも使われていない場合は削除されます。
もちろんこれも、他のSub Routineイベントなどはそのイベントリストを指定したままになります。
独立したサブルーチンを「E=00070100:SubA:M=003,」で指定したい時などに便利。
なお、空のイベントリストなどはOffsetにはできず、Cannot Pasteと出ます。

ちなみに、「LS:SubA:M=000xSubA:G=000」の「x」の部分は16進数値以外なら何でもいいです。


例と結果

Pasteするデータ: AC:SpA:En=117-FFF,
結果: Specials Entry 117から最後までのデータを全削除(終点が最大値を超えても、エラーは出ずに超えない個所まで動作になる)

Pasteするデータ: PO:SubA:M=07F-083,E=00090100:SubA:M=07E,/PF:SubA:M=0CC-0CC,E=00090100:SubA:M=07E,
結果: Sub Action Main 7Fから83までとCCのイベントリストのデータを「Goto:2x(Sub Action Main 7EのOffset)」で上書きする(「終了地点」を「開始地点」以下の値にすると、対象を1つの部分のみに絞って動作させられる)

Pasteするデータ: AC:SOR:Pr=004-004,
結果: Action Pre 4のイベント全削除またはExternal設定解除(ボタンで設定できるExternalがある場合、POなら解除してイベントを書き込むが、PFとPBの場合は動作しない。)

※「どのようなことを行うか」 の部分が「SN」以外なら、「/」の前に改行を1~2つ入れて、その改行もまとめてクリップボードにコピーしてこの機能を使っても、動作に変化はありません。

データのリサイズ機能について (v0.39から利用可能)
Miscデータなど、特定のデータサイズを変更したい人向けの機能です。なので、普通は使う必要はありません。
また、この機能でしかサイズを変更できないようなデータはPSARemakerで圧縮すると、たいてい元に戻ります。
Pasteで動作する特殊機能ですが、こちらは他のものとは違い、1回のPasteで1動作しかしません。

「Resize:XXXXX*YY」をPasteすると使えます。XXXXXはOffset、YYはSize。
Pasteした内容が利用可能な内容なら、プレビューと注意が英語で出ます。Current Sizeは動作前、つまり現在のサイズです。
問題がなければ「はい」を押すと動作します。
この機能の使用後は保存してファイルを再読み込みする必要があります。
この機能を使うと、Miscタブで見られるデータなどを疑似的に増やすことができます。(減らすこともできます)
元のサイズと設定したサイズが同じ場合、または元のサイズが0x100以上だと編集はできません。
※疑似的に増やせるだけなので、実際に増やしたデータが使えるとは限りません。

非推奨ではあるものの、リサイズ機能使用後にそのまま編集は可能です。ただし、多くの機能が制限されます。
編集機能が制限されないタブはSpecials、Sub Actions、Sub Routines、Attributesです。
EventsタブのPasteボタンも使えるので、保存せずにリサイズ機能をもう一度使うこともできます。

例:未編集のFitMario.pacのBoneReferencesを20に増やす
MiscタブからBoneReferencesを選択します。
Offsetに「1E8BC」と表示されるので、XXXXXの部分に代入します。
今回は20個に増やすのでYYに14(16進数で20)を代入します。
できあがった「Resize:1E8BC*14」をEventsタブ上のPasteボタンで貼り付けると、BoneReferencesが拡張されます。
BoneFloats2なども同じ方法で増やせますが、一つにつきデータサイズが7なので注意。
同じような方法でデータ数を減らすこともできます。ただし、0には減らせません。
増やしたデータの位置には通常、0が入りますが「*」の代わりに「-」を入れると、FADEF00Dが入ります。
BoneReferencesなどのデータでは「FADEF00D」は使えるデータとしてカウントされないので注意。
「-」以外の文字なら何を入れても結果は同じです。


ちなみに「まとめ貼り付け」だけでなく、通常の「Paste」を行った時も、イベント最初の「E=」の部分を改行に変えたとしても問題なく動作します。(スペースは1文字、改行は2文字扱い。最後の部分に改行が入ってもある程度(10文字まで)の余分なデータは無視される。)
簡単に言うと、重要な部分である16進数データさえ問題がなければ、それ以外が変になっていても読み込めるというわけです。
(v0.30以前のバージョンでもできます)

例:
E=000A0100:6-0000001F,E=1F020000:E=000F0000:
↑のコピーされた文字列を↓ようにしても問題なく上のものと同じ動作をします。(「0x」から改行を含んで「!」まで)
0x000A0100 6x0000001F
1F020000+
000F0000&
*******!
Excelなどにデータをまとめることもできます。
うまくExcelとPSACompressorを使えば、使用変数を探すためのデータ作成などが簡単にできるかもしれません。

圧縮用テンプレート (v0.38bから利用可能)
PO:SubA:G=119-11B(S=effectAnimCmd_SmashThrowFCommon)E=00070100:SE00000000,
/PO:SubA:G=126-000(S=effectAnimCmd_HarisenSwing4HoldCommon)E=00070100:SE00000000,
/PO:SubA:G=138-000(S=effectAnimCmd_HarisenSwing4HoldCommon)E=00070100:SE00000000,
/PO:SubA:G=13F-000(S=effectAnimCmd_HarisenSwing4HoldCommon)E=00070100:SE00000000,
/AC:SOR:Pr=004-000,
/PO:SOR:Pr=00D-000(S=statusAnimCmdPre_JumpAerial)E=00070100:SE00000000,/

あとはCompressタブでDelete Unused Externalsにチェックを入れて圧縮すると使われていないExternalを消して容量を削減できます。

※Fighter.pacを読み込めばわかりますが、
effectAnimCmd_SwordSwing4HoldCommonとeffectAnimCmd_StarRodSwing4HoldCommonとeffectAnimCmd_LipStickSwing4HoldCommonの内容はeffectAnimCmd_HarisenSwing4HoldCommonと同じです。
effectAnimCmd_SmashThrowBCommonとeffectAnimCmd_SmashThrowHiCommonとeffectAnimCmd_SmashThrowLwCommonの内容はeffectAnimCmd_SmashThrowFCommonと同じです。
statusAnimCmdPre_Flyの内容はstatusAnimCmdPre_JumpAerialと同じです。
statusAnimCmdPre_Runの内容はありません。
これらをExternal Sub Routinesリストの中から消すと、確実に使用容量減らすことができます。
なお、中身が同じ内容になっているExternalデータは他にも存在します。

inserted by FC2 system