Community画像github.com

Jakeschincariol/console-skill

PS2Recompで作ったゲームをWindows、Mac、Linux、Steam Deck、Android、PS Vita向けにビルドし、ゲームファイルを含めずにパッケージ化します。

console-skill とは?

このスキルは、PS2Recompを使って再コンパイルされたゲームコードを、対応する各プラットフォーム向けの実行可能ファイルにビルドし、自分で所有するゲームディスクから取得したゲームデータだけを後から追加できる「プレイヤーパッケージ」を作成します。doctorコマンドで開発マシンのツールチェーンをチェックし、不足しているツールのインストールコマンドを表示します。planコマンドで各ターゲット(Windows、macOS、Linux、Steam Deck、Android、PS Vita、Web(実験的))ごとに適切なビルド手順を出力し、packageコマンドでプレイヤーフォルダ(実行ファイル、ライブラリ、空のgame/フォルダ、PLAYERS.md、起動スクリプト、.recomp.json)を生成します。guardコマンドでパッケージ内にディスクイメージやPS2 ELF、IRXモジュールなどのゲームデータが含まれていないか厳格にチェックし、セーフガードとして機能します。このスキルはユーザーが「Steam Deckに入れて」「Androidで動かしたい」「Vita版を作って」などと依頼したときや、ポーティング済みのゲームを他のデバイスに配布するためにパッケージ化する際に使用します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jakeschincariol/console-skill/tree/HEAD/console-anywhere

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

console-anywhere

PS2Recomp ポートは、再コンパイルされたゲームコードとランタイムからビルドされた通常のネイティブプログラム (ps2EntryRunner) で、raylib で描画されます。同じ CMake プロジェクトが Windows、macOS(Apple Silicon は sse2neon 経由)、Linux、Steam Deck 向けにビルドされ、android/ で APK、vita/ で vpk が生成されます。このスキルはツールチェーンをチェックし、各デバイス向けの正しい手順を出力し、プレイヤーが自分のディスクからゲームを持ち込めるようにパッケージ化します。

正直な制限:PS2Recomp は主に MSVC でテストされているため、Mac、Linux、Android、Vita のビルドはテストが少なくなっています。Vita は PC よりもはるかに遅く、Android にはまだオンスクリーンコントロールがありません。また、ランナーはあなたのゲームの再コンパイルされたコードからコンパイルされるため、パッケージはあなた自身のデバイス専用です。ディスク自体は含まれませんが、ゲームから派生しているため、アップロードするものではありません。

以下、${CLAUDE_SKILL_DIR} はこのスキルのフォルダ(この SKILL.md がある場所)です。

python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor                       # このマシンのOS向け
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor --target android --target vita   # または --target all
python3 "${CLAUDE_SKILL_DIR}/targets.py" plan --target steamdeck --elf-name SLUS_203.12
python3 "${CLAUDE_SKILL_DIR}/targets.py" package --runner out/release/ps2xRuntime/ps2EntryRunner \
        --target linux --elf-name SLUS_203.12 --game "My Game" --serial SLUS-20312 \
        --out console/dist/mygame-linux
python3 "${CLAUDE_SKILL_DIR}/targets.py" guard console/dist/mygame-linux   # 圧縮やプッシュの前に
python3 "${CLAUDE_SKILL_DIR}/targets.py" recomp-json --game "My Game" --serial SLUS-20312 --status playable

ターゲット: windows、macos、linux、steamdeck、android、vita、web(plan と doctor のみ:別のツールチェーン)。plan は --repo(PS2Recomp のチェックアウトディレクトリ)と --build-dir を受け取ります。package は --lib FILE(追加ライブラリ)、--allow FILE、--replace、--status、--json を受け取ります。終了コード: 0 正常、1 不足または拒否、2 不正な入力。

読み書きするファイル

ファイル内容
ビルド出力ps2EntryRunner(+ 隣の .dll / .so / .dylib)、app-release.apk、または ps2EntryRunner.vpk
console/dist/<name>/プレイヤーフォルダ: ランナー、ライブラリ、game/(空)、PLAYERS.md、play.bat / play.command / play.sh / install-android.sh、.recomp.json、.console-dist.json
templates/PLAYERS.mdプレイヤー向け説明テンプレート
.recomp.jsonオプションのプロジェクト説明。recomp lists で読まれます(PS2Recomp 自体は無視)
console/STATE.mdビルドフォルダとチェックアウトパスを読み取り、ビルド結果を記録

手順

  1. どこでプレイしたいか尋ねる:PC、Mac、Steam Deck、Android フォン・タブレット・TV ボックス、ホームブリューの Vita。「テレビで」は Bluetooth パッドを接続した Android TV ボックス、またはコントローラーを接続した PC または Deck を指します。
  2. ポートはまずここで動作している必要があります。 開発マシン上でビルドし、/console-tester で確認してください。デスクトップでクラッシュするものは、スマートフォンでも改善しません。
  3. Doctor. targets.py doctor --target <t>。不足しているものを表示されたコマンドでインストールし、再度 doctor を実行します。
  4. Plan. targets.py plan --target <t> --elf-name <ディスクのELF>。ユーザーのチェックアウト(再コンパイルされたコードがある場所)の手順に従います。各ターゲットの詳細と各情報の出典は reference/targets.md を参照してください。
  5. ビルド:計画のコマンドでビルドします。インクリメンタルビルドのみ;ビルドフォルダをクリーンしたり、Vita で CLEAN=1 を指定したりしないでください。別のリリースフォルダ(out/release)を使うと、日常のビルドを壊さずに済みます。
  6. パッケージ化。 targets.py package --runner <ビルド済みファイル> --target <t> --out console/dist/<name>。--elf-name(指定しないと起動スクリプトがプレイヤーの SYSTEM.CNF から BOOT2 を読み取ります)と、.recomp.json 用の --game/--serial を追加します。
  7. ガードの判定を読む。 拒否された場合、各ファイルとその理由がリストされます。原因を修正してください(--lib が間違っている、ランナーの横にディスクファイルがあるなど)。ディスクイメージ、PS2 ELF、IRX、SYSTEM.CNF、ランナーソースに allow 行を追加しないでください:allow ファイルは、本当にユーザー自身のファイルである誤検出のみに、理由を付けて記述するためのものです。詳細は reference/guard.md を参照してください。
  8. デバイスにインストール: PLAYERS.md に従い、プレイヤーが自分のディスクを game/ にダンプします。そこでテストし、結果を console/STATE.md に記録します。

各ターゲットの概要(一行)

ターゲットランナーELF の検出方法備考
Windowsps2EntryRunner.exe + FFmpeg DLLplay.bat が game\<ELF> を渡すMSVC、最もテストされたパス
macOSps2EntryRunnerplay.command が game/<ELF> を渡すsse2neon 経由の arm64 ビルド;Homebrew FFmpeg が必要(組み込まない場合は不要)
Linuxps2EntryRunnerplay.shraylib のビルドに X11 と GL ヘッダが必要
Steam DeckLinux ビルドplay.sh、Steam で非 Steam ゲームとして追加Proton 経由の Windows ビルドも可(ここでは未テスト)
Androidapp-release.apk-Pps2xBootElf=... で組み込むファイルは adb push で /storage/emulated/0/Android/data/com.ps2x.runner/files/ へ;コントローラーをペアリングする
PS Vitaps2EntryRunner.vpk./vita/build.sh <ux0:data/... path> で組み込む./vita/setup.sh を一度実行;VitaShell でインストール;低速
web(PS2Recomp のターゲットではない)snuri00/ps2-web-recomp は別のリコンパイラ:同じディスクの別ポート、実験的

ガードレール

  • 自分でゲームを用意してください。 各プレイヤーは自分が所有するディスクから自分でダンプしたゲームを提供します。ISO、ELF、BIOS ファイルをダウンロードしたり、見つける手伝いをしたり、要求したりしないでください。BIOS は不要です。
  • ゲームの一部を公開してはいけません。 package はディスクイメージ(ISO、BIN、IMG、MDF、NRG、CHD、CSO および ISO 9660 形式のファイル、名前は問わない)、PS2 ELF と IRX モジュール(マジックナンバーと機械的に識別)、SLUS_203.12 のようなディスク形式の名前、SYSTEM.CNF、再コンパイルされた runner/ ソース、game/ 内のファイル、および 512 MB を超えるファイルを拒否します。ランナー自体は再コンパイルされたゲームコードからビルドされています:パッケージはユーザー自身のデバイス用であり、アップロード用ではありません。パッチ、オーバーライド、オリジナルアセットを共有してください。
  • ソニーとは関係ありません。 PlayStation は Sony Interactive Entertainment の商標です。PS Vita ホームブリュー、Steam、Android、その他のプラットフォームはそれぞれの所有者に帰属します。
  • ユーザーのファイルを絶対に破壊しないでください。 --replace はこのツールが作成したフォルダのみを置き換え、game/ に何かが含まれている場合(プレイヤーのディスク、mc0/ のセーブデータ)は拒否します。

連携先

  • /console-tester に、パッケージ化の前後にこのマシンでビルドを実行させる。
  • /console-controller に、デバイスのコントロール設定を任せる(Steam Deck では xbox レイアウト、Android ではタッチゾーンまたは Bluetooth パッド)。
  • /console-saves に、デバイス間でのセーブデータの移動を任せる(mc0/ はゲームの ELF と同じ場所に置く)。

関連スキル