ICLPXのスマブラ改造日記2|2015年05月ICLPXのスマブラ改造日記2スマブラXの改造に関する記事をいろいろと書いていきます。PSA小ネタ|知ってても誰も使わなそうな小ネタです。これはオーバーヒートアイスクライマーのおまけ機能として入っています。シールを落としていちいち拾うのが面倒なときに使えます。CDとフィギュアにも使えると思います。Value-0(シールを消化する)これだけです。Item:Value-2で消化した方がいいと思います。たべもの消費の場合はAdd/SubtractDamageと違ってマイナス値までいかないので回復時マイナス値まで行かないように設定したい場合は使えるかもしれません。キャラ紹介|完全再現はできてませんが、投稿しました。DL強さランクとしては強キャラの中間より上ぐらいです。重くて吹っ飛びにくいですが、スマッシュ攻撃など、強い攻撃をガードすると簡単に撃破できます。攻撃力はそのままで基礎能力の一部だけ普通のプリンと同じという、比較的使いやすいバージョンも用意しました。PSA小ネタ|使えなくてくだらない小ネタです。キャラを透明化します。キャラの上のタグを消します。アイテムを持っていてもわからなくなります。入れるとカメラがそのキャラに反応しなくなります。これでエフェクトなどを出していない限り存在しててもわかりません。プレイヤーには狙われにくくなるかもしれませんが、CPは普通に襲ってきます。カメラがキャラに反応しなくなると、亜空の使者では「死なないと進めない」ようになってしまいますが、対処法は一応あります。いれるとカメラは再び反応するようになります。これを使ってPSAを作ってみました。戦いにくいだけですけどね(ステルスルイージDL)※このルイージはよほどのことがない限り更新するつもりはありません。5000などの大きな値を入れるか、バイナリエディタで1DC-1DFの値40733333を459C4000にしてください。することでタグが見えることはほぼなくなります。トレーニングでアイテムを出現させることができなくなりますが...エフェクトは見えるので一応プレイヤー操作でも戦えます。Effect(11150300)についてですが、エフェクトを消すときにValue-消したいエフェクト、Boolean-False、Boolean-Trueという入力が一般的に使われていますが、Value-消したいエフェクト、Boolean-True、Boolean-Trueでも消せるらしいです。PSA参考|@DIARY(β)で書いた記事のリメイクです。一部のキャラはLA-Bit[60]~LA-Bit[97]のうちLA-Bit[61]~LA-Bit[68]の変数を操作しています。LA-Bit[64]~LA-Bit[97]は変数操作をしていない限りTrueになっているのは見たことがないので、これらなら安心して使えるかもしれません。LA-Bitの98以降は、基本的に空き変数のはずなのにFalseから始まるだろうと思っていたら違うらしく、キャラによって最初からTrueな場合と最初はFalseな場合があります。これがいくつかだけ入れ替わる場合があります。そのため、使いにくいと思われます。LA-Bitの160以降は変数操作をすると、フリーズするらしいです。使わないことを推奨します。(LA-Bitの160以降でTrueとFalseの切り替えを何度やってもフリーズしない場合は教えてください。)ちなみになぜ最初から必ずFalseと決まっていて使われていなそうなを求めるのかというと理由があります。1つめは使われている変数を使ってしまうとバグを起こす可能性があるためです。Setを使えばEntryのアクションでセットしておきたいようなFloatなどを最初にセットできるからです。結論としては、最初からFalseと決まっている場合はいろいろと都合がいいのです。PSA参考|@DIARY(β)で書いた記事のリメイクです。PSACompressorを使っていたり、BrawlBoxでMoveDefのデータを圧縮している場合はどうでもいい記事かもしれません。こだわらない場合でもPSAで容量を増やすのは簡単ですが容量の減少をさせるのは難しいのに加えて限度があるので増加の阻止を行っておいた方がいいこともあります。追記(古い順)仕様変更?して楽に容量増加を阻止する方法を追加。楽な方法で代用の効く面倒な方法を背景と同化。PSACompressor追加。これを使えば基本的なこと以外はいらない。基本的なことも書きました。!注意!これらが原因でバグる可能性があります。バックアップはこまめにとりましょう。v0.67などで編集した後の圧縮では不具合を作り出す可能性があり、バグが発生しなくてもPSA2.70などで編集できなくなることがあるため、この方法を紹介しています。(PSACompressorを使う場合はPSAとバイナリエディタを使った容量の増加阻止方法は不要。クリックひとつでサブアクション内の空ルーチンの削除はすべて終わる。BrawlBoxのような圧縮はしないので、この記事の基本的なこと以外は特にいらないかも。(PSACompressorやBrawlBoxを使っている場合も有効)・同じ内容はSubRoutineを使う。(パラメータ数が1以下のイベントはこれをすると逆に容量が増える。トータルの使用容量が16バイト以上(パラメーター3つ以上のコマンドなど)ないとこうする意味はない。Collisionなど、パラメーター数の多いイベントをなるべく増やさない。(同じ内容が複数あるなら新しくSubRoutineを作って使ったりするといい。)・無駄にEventを増やさない。(PSAのみを使って編集している場合は、未定でも増やす可能性がある場合は先に増やしておいて残しておいた方がいいこともある)・使わないサブアクションの全てのイベントを消してOffsetを0にする。(1回につき数バイトだが実際にファイルサイズが減少する。Eventを追加→RemoveでOffsetを0にすればいい。PSAでこれをやると効率が悪い。)ちなみに、PSAでパラメータのあるEventを1つ消しただけでもファイルサイズは減らせます。(PSAでのみ)・なるべくOffsetを変えない。(そこまで重要ではないかも)-PSAとバイナリエディタを使った容量の増加阻止方法-PSAでファイルを保存したファイルに有効。1ヶ所バイナリエディタで値を変えるだけでいい。バイナリエディタでアドレス0x64の値を確認→+7Cしたアドレスの値を小さくする(2000程度に)たったこれだけで楽に容量増加の阻止が可能。既存のデータを変更しただけでは容量の増加が全くしなくなる。そのうえ無駄記述を消すと消した分のデータ量まで容量の増加がほとんど止まる(多少の増減はする)。PSAしか使わない場合はオススメ。詳しいことはこの記事を参照。FADEF00D"に変えるとより無駄がなくなる。ちなみにPSACompressorはこの無駄の削除も同時にワンクリックでやってくれる。)あと、バイナリエディタを使えば新しく作成したサブルーチンの場所が分からなくなってしまったときなどにも少しの手掛かりがあれば(バイナリエディタで検索をすることで)見つけ出すことができる場合があります。オフセットをメモし忘れて画面の切り替えや保存したりした時でも安心できます。(これはおそらく他のツールでは無理)ここからは仕様変更した場合はPSAでやっても使用容量は変わらないので以前このような方法があったという過去ログ的なものだと思えばいいでしょう。・ファイルは同じものを2つ(PSAなどでの確認用とバイナリエディタでいじる編集用)用意しておいた方がいい。・PSAやOpenSAで見たときのオフセットを+80(16進数)しないとデータは確認できない。・まちがって変更してしまうとSmashAttacksで確認するときなどにバグってしまうことがある。・プログラムオフセットから+80した値はType-Valueという形になっている。Typeに+4したオフセットにValueがある。+4せずにType変更をしてしまうとSmashAttacksで高確率でバグる。パラメーターが2つ以上ある場合は+8することで次のパラメーターに移動できる。不安ならSmashAttacksで同じ値を探していくといい。同じ値を探してもScalarやVariableだと見つからないので先に確認用の方をValueに値を変えておくとよい。・Scalarの1は10進数で60000、16進数でEA60となっている。これを掛けたり割ったりすることでScalarの0.1や3を出せる。これを使えば確認用がOpenSAだけでもScalar値を編集可能。・SmashAttacksですでにプログラムオフセットを変えてしまっている場合は容量はこれら方法を使わずにSmashAttacksで変更しても容量はそれ以上は増えない。Offset(パラメータオフセット)はOpenSA基準で書いている。Offsetはイベントの変更時に確認できる。(イベント名の下ににあるOffset)・SmashAttacksやOpenSAでパラメータオフセットを確認しながらパラメーターを変更するとSmashAttacksで変更した時に変更されるパラメータオフセットが変更されず、容量が増えない。(ここで注意することが1つある。TypeをPointer以外からPointerに変える場合は面倒なことに、”Offsetが0になっている値を変更してもフリーズしなくする方法”を使う必要があるのでこの場合はよほどのことがない限り普通にPSAで編集することを推奨する。)・PSAやOpenSAでパラメータオフセットを確認しながらパラメータを変更すると通常の場合はPSAで変更した時に変更されるパラメータオフセットが変更されず、容量が増えない。(TypeをPointer以外からPointerに変える場合は面倒なことに、”Offsetが0になっている値を変更してもフリーズしなくする方法”を使う必要があるのでこの場合はよほどのことがない限り普通にPSAで編集することを推奨する。コマンドの下4桁が変更前と変更後を比べて変更後の方が数値が大きい場合は後に続くプログラムオフセットを変更してスペースをあけるといった特殊なやり方が必要なことが多い。FADEF00D"となっているため"Type-値"に変えないと必ずバグる。)・既にある記述のサブルーチン化サブルーチンにしたいサブアクションのOffsetの値を検索し、そのOffsetを"00XXXXX"から"00000000"に変える。あとは、使う時にサブルーチンを使って呼び出せばいいだけ。Timerなどを使ってしまっているときにオリジナルのグラフィックなどを残しつつ追加のグラフィック表示などをループさせたいときに有用。ここからはバイナリエディタとPSAを行き来する必要があります。(そのため少し長い)する場合はその前にバックアップを取っておきましょう。それと、もう一つ注意事項。FADEF00D"は編集しない方がいい。いうと、手間だけがかかって容量の増える量は変わらないため。改変前のキャラのファイルがない時は、バイナリエディタでアドレス0x64にある値を+7Cしたアドレスにある数値を見ればいい。FADEF00D"はたいてい編集しても無駄。Eventを追加する方法(すでにオフセットが変更されていると使えない可能性があります。PSAで対象の最後のコマンドオフセットを確認。確認したものに+10したオフセットを探す。発見したオフセットを変更する。(パラメータオフセットならコマンドを値を何も変更せずDoneを押してパラメータオフセットを変更できたらOK。できなかったらこの方法は使えない)変更できたら保存。00000000"に変える。00000000"が連続している時も使えますが、なぜそうなっているかを確認しないとまずいかもしれません。)これでNoEventが追加されているはずです。Eventを増やせます。・サブルーチンを新しく作成する方法この方法は欠点が多いのであまり使わない方がいいです。後でコマンドを追加しにくくなる。必要ない無駄なイベントを消したときに空いたスペースで作るぐらいしかできない。FADEF00D"が2つ以上並んでいる時に作成可能。00000000"に変える。00000000"に変える。これを発見するためには編集し始めた個所から-80した値をSmashAttacksなどで確認する必要があります。000XXXXX"などに変更しオフセット(XXXXX-80)に適当なパラメーターに変更する。これだけではほぼ100%フリーズする。フリーズしなくするためには、”Offsetが0になっている値を変更してもフリーズしなくする方法”を使う必要がある。この時、コマンドのデータではなく指定したOffsetの位置を確認しておくこと。この値を追加することにより、フリーズさせせずに値を追加することができる。実はこれに関してはもっと楽な方法がある。PSAで普通に記述をして保存する。(既に記述をしている場合は次へ)そして、コピーしてデータを2つにする。(PSAまたはOpenSAでの確認用とバイナリエディタでの編集用。)(パラメータ数を1にして値を適当に入れただけでも大丈夫だが、その場合はあとで少し面倒。次に"FADEF00D"(×パラメータ数×2)をバイナリエディタで検索。ここでデータが見つからない場合は、この方法は使えない。見つかった場合は、そのオフセットの値を確認。次にPSAでコマンドオフセットを確認し、そのオフセットに飛ぶ。先ほど確認したOffsetの値から-80した値にパラメータオフセットを変更。次にPSAで変更する前のプログラムオフセットを確認。中身を全てコピーし、コピーしたらコピーした所をすべて"FADEF00D"で埋める。コピーしたものを2で確認したオフセットに編集前とトータルサイズが同じデータ量になるようにペーストする。”FADEF00D"が余っても気にしなくていい。あとは保存後にPSAで確認してもおかしい点がなければ実機でもフリーズしないはずです。FADEF00D"は再利用ができるため、結果的に容量の増加を抑えられるということです。ちなみにこの場合でもPSAでもう一度編集したりするとパラメータオフセットが変わってしまうので注意。値を変更することのないイベントに使いましょう。ダッシュ攻撃を出すと同時に近くにあるアイテムを拾ってしまうという仕様が邪魔なときに使えます。サブアクション開始から0Fの場所にLA-Bit[4]をセットする、たったこれだけです。Itemでアイテムは拾えます。この方法は主に回復アイテムなどの拾った瞬間に効果が出てしまうアイテムを無効化したいときに役立ちます。If:と記入すればいけると思います。PSA参考|@DIARY(β)で書いた記事のリメイク版です。大乱闘ではシールドを張った時プレイヤーに応じてシールドの色が変わります。これに使われている変数を使い、CPとプレイヤーを判別できます。(CPのシールドカラーが灰色なので)CPにこの神キャラは使わせたくない、なんて場合は特殊コマンドを作るなど面倒なことはせず、IC-Basic[21029]で判別してしまいましょう。完全にCPとプレイヤーを区別できるわけではないらしいので過信しないで下さい。IC-Basic[21029]<4の後にプレイヤー限定で使える技などを設定すればいいだけです。Setで判別するようにしておくと結果的に使用容量が少なくて済むかもしれません。CP固定(亜空の敵はバースト時のエフェクトが1Pと同じ色なので別だと思われる)...のようです。いうように値を入れるとシールドやバーストの色が1P以外のものが使えます。xxはグラフィック、yyは上の「IC-Basic[21029]に入っている値」を参考にしてください。※5以上を入れると0の時と同じになるだけでフリーズする、ということはないみたいです。Effectも同じようにすると違うカラーのエフェクトを出せます。Effect(11001000)などは真似をしてもできませんでした。TintのようにRGBAでグラフィック自体のカラー調節出来ればそちらの方がいいかもしれませんね。容量のいる固有エフェクトの価値は下がりそうですが。いったことができたら教えてほしいです。22:40|スマブラX改造|@DIARY(β)で書いた記事のリメイク版です。BrawlBoxv0.73では以前のバージョンとは違い日本語が文字化けをしないので、msbinファイルの編集をしやすいです。msbinファイルには制御文字というものが存在します。これはいわゆるよみがなの設定です。BrawlBoxv0.73で編集した時、この制御文字を崩してしまうことがあります。16進数で"0Bxxyy"という構成になっている制御文字が"0B"だけになっていたりしておかしくなっていると、実機でフリーズしてしまいます。BrawlBoxv0.73で編集すると実機でバグる数字は0Dと12で、それ以外の01~21はおそらく大丈夫かと思います。12はBrawlBoxで文字化けするため分かりやすいのですが、0Dは文字化けせずに0Dだけが消えてバグの原因になるので分かりにくいため、注意が必要です。11もBrawlBoxで文字化けしますが、その曲を編集しないのならバグの原因にはならないので気にしないでいいかもしれません。ちなみに計算方法は半角英数字が+1、全角文字が+3です。このことについての詳しい参考記事はこちらです。(使える漢字リストもあります)避ける方法は「制御文字を消す」と「文字化けする数字を避ける」の2種類があります。後者を使うのかというと、対戦時に表示される文字の大きさにばらつきが生まれてしまうからです。実際は気にしなければいいだけの話なのですが。いうわけで文字化けする数字を避ける方法を紹介します。ふりがなをつけない場合(空白のふりがなをつける場合)-この場合はバグの原因になっている数字をより小さい数字にかえるだけでいいので楽です。実はコピー&ペーストでもいけるのでバイナリエディタは使わなくてもよかったりします。↑このようにちなみに今回実際に使用したのはBrawlBoxv0.73bです。-ふりがなをつける場合-この場合は分割して文字化けする数字を避けてしまいましょう。例:メタナイトの(0B1206)[ぎゃくしゅう逆襲]↓メタナイトの(0B0903)[ぎゃく逆](0B0903)[しゅう襲]あと、この方法はオレ曲や対戦時以外にもメニューなどでも使えます。PSA小ネタ|@DIARY(β)でも書いたどうでもよくてくだらない小ネタです。Value-4でアイテムを拾うと回復、装備系のアイテムは普通に拾えるのに、ほとんどのアイテムは拾ってもアイテムを持っていない判定になってしまい、ハンマーを拾った時はバグります。一つアイテムを拾える(こちらは普通に使えます)のでこれで合成アイテム(見た目だけ)ができます。Itemで2つ持っていてもまとめて消せます。Itemではなく、Ifで判別してから拾っているようです。PSA参考|@DIARY(β)で書いた記事のリメイク版です。v0.20以降では普通にいじれるようになったので、もう残しておくほどの記事ではないかもしれません...ちなみに確認方法はv0.17とv0.20以降では変化はありません。ここでは、PSA2.70とバイナリエディタを使って編集する方法を紹介します。能力をいじるだけならほかのキャラと同じでSmashAttacks(以下SA)だけでもほとんどいじれます。オプション側の能力をいじる場合はSAで見られる範囲だけではとうてい編集できません。このまま神キャラにしてしまうとオプション側はほぼ戦力外になってしまいます。ふたりとも神キャラ化してしまいましょう。...というわけで、OpenSA2、BrawlBox(v0.67bを推奨しますが見るだけならv0.68bなどでもOKです)のうちどちらかを使ってください。バイナリエディタとSAだけでもできないことはないですが、難しいのでおすすめしません。始める前に先に同じファイルを複製しておくことを推奨します。見るだけならOpenSA2が一番見やすい&使いやすいと思います。OpenSA2では編集ができないので注意。-OpenSA2の場合-OpenSAで対象のファイルを開き、見るものをEventsからArticleに変えます。するとOffsetを確認できます。Routinesに確認したOffsetと同じ値を入れてやればSAで普通にいじれます。Routinesコマンドを入れましょう。Eventに変えてしまえば大丈夫です。通常のArticleもいじれます。Count)が0のOffsetは確認すらできません。アイスクライマーのオプション側のOtherはコマンドがあっても確認できません。-BrawlBoxの場合-v0.67bとv0.68bでいけました。こちらはSSEAttributesなども含めて確認と同時にいじることが可能です。PSA2.70などで開けなくなる&新しいバグを作ってしまうことがある...なのでやらない方がいいかも。(圧縮するのが主な原因だと思われますが微妙なところ。圧縮するのに場合によっては元ファイルより保存後のファイルの方が容量が大きくなることがあります。微妙に内容を変更しただけでも。)保存後もOpenSAでは開けますがナナのサブルーチンが確認できません...(更にBrawlBoxのSAエディタ機能も使えなくなってしまうこともあります)実際に実機で試してみるとふたりの能力を違うものにしても一応別々に読み込んでくれるようなので、どうしてもこちらで編集したいのであれば保存後のバグが少ないBrawlBoxv0.67bを推奨します。保存後もSAエディタが使えるようなら、続けてBrawlBoxv0.67bを使って編集するといいと思います。使いづらい気がしますけどね。コピー&ペーストなどの時は。Scriptsから確認可能。こちらは命令数が0でもOffsetを確認できます。オプション側のOtherも確認可能。ArticleのOtherは存在しないためか、確認できませんが。注意点はOpenSAと違い、16進数が10進数になっているため、16進数に直さなければならないこと。確認はここから(これを10進数に直します)↓(画像はBrawlBoxv0.68bのものです)あと、他にもOpenSAでは見れない情報がいくつか見れます。基本的にSAでいじる場合には関係ないことが多いです。-バイナリエディタの場合-これとSAだけでいじろうと思えばある程度はいじれます。(特にSAでいじれないSSEAttributesをいじる時オススメ。他にもできることが結構あります。)MainのOffsetを確認するだけならこれでも十分かも。SubActionは47、48、49、4A...(すべてMain)と続いているだけなので。実は工夫すればMain以外のOffsetも見れますけどね。-PSACompressorの場合-OpenSAと少し似ていますがEventsからデータが確認できたり、Otherや空データOffsetが見れたりと、こちらの方が便利です。専用の適切なテキストデータファイルがあればArticleもついでに見ることができます。ついでにイベントを追加したり、AttributesやSSEAttributesなども編集できますが、編集時にバグが起こるかもしれません。(画像はv0.17のもの。BrawlBoxやOpenSAよりやりやすい?)ここまでは他のソフトもうまく使えばSAで普通にできるからいいんだけど、コマンドが存在しないSubActionが存在するんだけど、特に待機時の無敵判定とかどうするの。Routineコマンドで何とかなるんですが、コマンドがないものはそういうわけにはいきませんよね。