用語と仕組み
EASY ARCADEの入力が、ゲーム基板へ届くまでの考え方を説明します。
物理入力・論理ボタン・基板出力
コントローラー上の物理ボタンは、まずEASY ARCADE本体の設定で論理ボタンへ変換されます。このエディタが扱うのは、その後の「論理ボタンからゲーム基板出力への変換」です。どの物理ボタンをAやBとして扱うかは、本体側で設定します。
論理ボタンと出力
通常の編集画面で扱う論理ボタンはCOIN、START、方向、A〜Jの16個です。ゲーム基板出力は1P側と2P側にそれぞれCOIN、START、方向、A〜Fの12個があります。G〜Jは直接対応する基板出力を持たず、マクロやステートセレクタの操作に使える4個の仮想ボタンです。ファイル形式には将来拡張用として32個までの論理ボタンIDが確保されています。
1つの論理ボタンから複数の基板出力を同時に出せます。たとえば論理ボタンGを、1P側のA+Bや2P側のAへ割り当てられます。2P出力はプロファイル上部の2P設定を有効にした時だけ編集画面へ表示されます。
直接マッピングとマクロ
直接マッピングは、論理ボタンを押している間、割り当てた基板出力をそのまま出します。マクロは、ボタンをきっかけにtick単位の出力シーケンスを再生します。マクロが直接入力や同時実行中のマクロとどう重なるかは、マクロごとの「合成」で設定します。
プロファイル全体で「1 tickを何フレームにするか」を設定できます。たとえば2なら、すべてのマクロで1 tickを2フレーム出力してから次へ進みます。
1つのマクロを複数の論理ボタンへ割り当てることも、1つの論理ボタンから複数のマクロを同時に起動することもできます。左右・上下反転や再生方法は、キー割り当てごとに設定されます。シーケンス要約では、DOWN+LEFT+A+Bのような同時出力を↙+A+Bとまとめて確認できます。
マクロの合成
合成は、マクロ実行中に、手で入力している方向やボタン、先に動いているマクロの出力を残すかどうかの設定です。たとえば↙を入力したまま、レバー操作を含むマクロを起動する場合を考えます。
OR
既存の出力を何も消さず、マクロの出力を加えます。
↙を入力したままマクロが→を出すと、基板には↓+←+→が同時に届きます。意図的な同時入力を作る場合や、ボタンだけのマクロに向きます。
自動
マクロの全ステップを調べ、方向を1つでも使っていれば、実行中は手で入力している↑↓←→をすべて無視して、マクロの方向出力に置き換えます。方向以外のボタン入力は、マクロのボタン出力とOR合成されます。
↙を入力したまま↓↘→+Aのマクロを起動すると、手で入力している↙はマクロの間だけ無視され、マクロのレバー方向がそのまま届きます。通常のコマンド入力にはこれが基本です。
カスタム
抑制する出力を自分で指定します。マクロ自身が使わない方向やボタンも指定できます。
レバー4方向に加えてAとBも抑制する、LEFTだけを抑制する、といった特殊な合成を作れます。
抑制はマクロの開始から終了まで続き、何も出力しないステップでも解除されません。複数のマクロが重なった場合、後から起動したマクロは、抑制対象にした直接入力と先に起動したマクロ出力を置き換えます。抑制対象外の出力はORで残ります。
ループ同期
複数のボタンに分けた連射や反復シーケンスを、共通のリズムで動かすための機能です。ボタンを押すタイミングが違っても、各出力の位置関係を一定に保てます。
| 位相 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| マクロ α | A | · | · | · |
| マクロ β | · | B | · | · |
αとβを別々のトリガーへ割り当てます。βを後から押しても、Bは常にAの1 tick後に出力されます。高度な連射、交互撃ち、複数ボタンの周期制御などに利用できます。
細かい動作を見る
通常の反復再生では、ボタンを押したフレームがtick 0になります。ループ同期では押した時刻から数えず、本体で共通に進み続けるVSyncカウンタから再生位置を決めます。再生位置は「floor(VSyncカウンタ ÷ Frame Step) mod マクロの総tick数」です。
途中の位相で初めてボタンを押した場合もtick 0から開始せず、その時点の出力から参加します。無効な間は出力しませんが、共通位相は進み続けます。総tick数が異なるマクロは、それぞれ自身の周期で同じ時計を参照します。
ループ同期ではシーケンス全体を1周期として使います。ONにすると「押している間反復」になり、ループ開始はstep 1へ固定されます。途中のstepからの部分ループとは併用できません。
「すぐに中断」ではリリースフレームで停止します。「現在の再生を完了」では現在周期の終端まで出力し、次のtick 0を出す直前に停止します。
マクロセット
マクロ定義とキー割り当ては別に保存されます。マクロセットを切り替えると、マクロ定義を作り直さずに、どの論理ボタンからどのマクロを起動するかをセットごとに変えられます。
たとえば使用キャラクターごとに必要なマクロが異なるゲームでは、Set 0をキャラクターA用、Set 1をキャラクターB用として、同じ論理ボタンへ別のマクロを割り当てられます。同じマクロを複数セットから参照することもできます。直接マッピング、連射、ステートセレクタはセット間で共通です。
連射
連射設定は論理ボタンごとに、本体設定を使うか、プロファイルで上書きするかを選びます。上書き時は連射無効・同期・表・裏と、VSync周期を基準にした分周比を指定します。VSyncが60Hzの場合、分周比2は30連、3は20連です。
ステートセレクタ
ステートセレクタは、増加・減少ボタンで状態を切り替え、その状態に対応する基板出力を保持します。たとえばGEARというセレクタにLOW、MID、HIGHを作り、状態ごとに異なる出力を持たせられます。占有マスクを指定すると、直接入力やマクロより優先してその出力を管理できます。
プロファイル
これらの設定をまとめたものがプロファイルです。プロファイルを.eamacroファイルへエクスポートし、USBメモリなどを介して読み込ませることで、編集した設定をEASY ARCADE実機へ伝えられます。通常は最新のv1.1形式を書き出します。旧ファームウェア向けのv1.0書き出しはファイルメニュー下部から選べますが、新機能を含む設定は内容を削らずエラーになります。
Profile JSON
.eamacro.jsonは、人間、AI、外部ツールと編集可能なプロファイルを交換するためのテキスト形式です。ボタンや出力をA、LEFTなどの名前で記述し、このエディタで読み込んで確認・修正してから実機用.eamacroへ書き出せます。Profile JSON自体に8KB制限はありませんが、実機用ファイルへ変換するときは本体向けの上限が適用されます。
編集画面
プロファイルを構成する設定を、目的別の画面で編集します。
ボタン設定
論理ボタンからゲーム基板出力への直接マッピングと、論理ボタンごとの連射設定を編集します。連射を上書きしないボタンには、EASY ARCADE本体の設定が使われます。
マクロ
マクロの出力シーケンス、起動する論理ボタン、再生方法、ループ同期、合成方式、ループ位置、出力方向の反転を編集します。シーケンスはステップ形式とタイムライン形式のどちらからでも編集できます。
マクロセット
使用するマクロセットを追加し、それぞれに分かりやすい名前を付けます。セットごとのボタン割り当ては、マクロ編集画面で対象セットを選んで設定します。
ステートセレクタ
状態を増減する論理ボタン、状態数、初期状態、占有マスク、各状態で保持するゲーム基板出力を編集します。
割り当て一覧
論理ボタンごとの直接出力、連射、マクロ、ステートセレクタの割り当てをまとめて確認します。表示するマクロセットを切り替えて比較できます。
共有
現在のプロファイルを共有ライブラリへ公開したり、ほかのユーザーが公開したプロファイルをダウンロードまたはエディタへ読み込んだりできます。閲覧とダウンロードにはログインが不要です。
投稿・編集・削除にはChatGPTでのログインが必要です。公開される作者情報は投稿時に入力した作者名だけで、ChatGPTの名前やメールアドレスは表示されません。
仕様と制限
実機用.eamacroファイルには、次の上限があります。
各項目の最大値をすべて同時に使えるとは限りません。最終的には.eamacroファイル全体が8192 bytes以内である必要があり、超過した場合は書き出せません。
Profile JSON Schema
AIや外部ツールでProfile JSONを作成するときは、次のJSON Schemaを参照してください。
https://studio.easy-arcade.net/easy-arcade-profile.schema.json