touchHLE - iPhone OSアプリ用の高レベルエミュレータ

(High-level emulator for iPhone OS apps)

Created at: 2022-12-02 02:03:56
Language: Rust
License: MPL-2.0

touchHLE: iPhone OS アプリ用の高レベルエミュレータ

touchHLE は、iPhone OS アプリ用の高レベルエミュレータ (HLE) です。最新のデスクトップオペレーティングシステムで動作し、Rustで記述されています。

HLEとしてのtouchHLEは、QEMUのような低レベルエミュレータ(LLE)とは根本的に異なります。エミュレートされたCPUが実行する唯一のコードは、アプリのバイナリと少数のライブラリです。touchHLEはiPhone OSに取って代わり、システムフレームワーク(Foundation、UIKit、OpenGL ES、OpenALなど)の独自の実装を提供します。

このプロジェクトの目標は、iOSの初期の頃からゲームを実行することです。iPhone OS 2.x用のiPhone/iPod touchアプリのみがこれまでにテストされています。モダン/64ビットiOSアプリのサポートは明らかに目標ではなく、ゲームではないアプリのサポートは複雑さのために優先される可能性は低いです。一方、将来的には、いくつかの新しい32ビットバージョン(特に3.xおよび4.x)およびiPad用のアプリのサポートを試みる可能性があります。iPhone OS 1.xのサポートも試みられるかもしれません。

私たちのホームページをご覧ください!https://touchhle.org/

プロジェクトの背後にある歴史と動機に興味がある場合は、元の発表を読むことをお勧めします。

重要な免責事項

このプロジェクトは、Apple Incと提携または承認されていません。iPhone、iPhone OS、iOS、iPod、iPod touch、iPadは、米国またはその他の国におけるApple Inc.の商標である可能性があります。

touchHLEは、合法的に所有しているソフトウェアをエミュレートする場合にのみ使用してください。

プラットフォームのサポート

touchHLE はテスト済みであり、x64 Windows および x64 macOS でサポートされていると見なされます。Linuxおよび一部のAArch64システム(少なくとも64人が成功)でビルドすることは可能かもしれませんが、現時点では保証はありません。あなたがAppleシリコンMacユーザーなら:心配しないでください、x<> macOSビルドはロゼッタの下で動くと報告されています。

x64 と AArch64 以外のアーキテクチャは完全にサポートされておらず、変更される可能性はほとんどありません。

最終的にはAndroidをサポートすることが望ましいでしょう。それはおそらくそれほど多くの作業ではありません。

入力方法:

  • シミュレートされたタッチ入力には、次の 2 つのオプションがあります。
    • マウス/トラックパッド入力(マウスの左ボタンを押してタップ/ホールド/ドラッグ)
    • ゲームコントローラーの右アナログスティックを使用した仮想カーソル(スティックまたは右ショルダーボタンを押してタップ/ホールド/ドラッグ)
  • シミュレートされた加速度計入力 (チルト コントロール) の場合、現在、左アナログ スティックを備えたゲーム コントローラーが必要です。実際の加速度計のサポートはまもなく提供されますが、最初のリリースにはありません。

開発状況

実際の開発は2022年<>月に始まり、これまでのところ一人のフルタイムの情熱的なプロジェクトです。これまでのところ、リリースは<>つしかなく、将来について約束することはできません。しばらくお待ちください。

現在、サポートされている機能は、サポートされている単一のアプリが使用する機能よりもはるかに多くはありません。ただし、コードは可能な限り合理的に完成しようとします。

アプリのサポート

きれいなスクリーンショットとビデオについては、ホームページをチェックしてください!

  • スーパーモンキーボール(2008年、App Storeのローンチタイトル)、テスト済みバージョン1.0、1.02、1.3(1.3が最も厳しくテストされています)
    • 完全にプレイ可能で、すべてが機能します。とりわけ:
      • 効果音と音楽
      • ロゴ、タイトル、メニュー、ランキング、設定、クレジット画面
      • メインゲーム、インスタントゲーム(シャッフルプレイ)、練習ゲームモード
      • ゲームの永続性を保存する(設定、ロック解除、記録)
      • アプリを閉じて再度開いた後に前のゲームを続行する
      • チュートリアル(それを持っているバージョン)
    • リリース時の一貫したフルfps(30fps)は、かなりパワー不足のラップトップ(2017 Retina MacBook、パッシブ冷却!
    • 特別な機能強化:オプションを介して内部解像度を上げて実行できます。約4Kまでの解像度がテストされています。小規模 (2×、3×) でパフォーマンスに目立った影響はありません。
      --scale-hack=
    • 推奨されるゲームコントローラー設定:
      --y-tilt-offset=24
    • 既知の問題: macOS で約 0.2MB/秒のメモリリーク。エミュレータ自体の明らかな問題はすべて除外されているため、macOS自体、SDL2、またはその他の依存関係の問題である可能性があります。ありがたいことに、これは十分に遅いので、ほとんどのプレイセッションでは問題にならないはずです。

現在、他のアプリが動作することは知られていません。これは将来確実に改善されるでしょう。:)

使い

まず、バイナリリリースまたは自分でビルドしてtouchHLEを入手します(次のセクションを参照)。

次に、実行できるアプリが必要になります。上記の「アプリのサポート」セクションを参照してください。アプリ バイナリを使用するには、暗号化を解除する必要があることに注意してください。

現在、グラフィカルユーザーインターフェイスがないため、通常はコマンドラインを使用してtouchHLEを実行する必要があります。Windows を初めて使用する場合:

  1. ファイルまたはバンドルを と同じフォルダに移動します。
    .ipa
    .app
    touchHLE.exe
  2. Shiftキーを押しながら、フォルダウィンドウの空のスペースを右クリックします。
  3. 「PowerShell で開く」をクリックします。
  4. その後、入力 (または必要に応じて) 入力して Enter キーを押します。
    .\touchHLE.exe "YourAppNameHere.ipa"
    .app
  5. 入力すると、ゲームコントローラーなどに使用できるオプションを確認できます。
    .\touchHLE.exe

現在、言語検出は Windows では機能しません。アプリに報告される言語設定を変更するには、アプリを実行する前に、ISO 639-1 言語コードを入力してから Enter キーを押します。いくつかの一般的な言語コードは、(英語)、(ドイツ語)、(スペイン語)、(フランス語)、(イタリア語)、および(日本語)です。サポートされる言語を決定するのはアプリ自体であり、エミュレーターではないことに注意してください。

SET LANG=
en
de
es
fr
it
ja

アプリによって保存されたデータ(保存されたゲームなど)はすべてフォルダーに保存されます。

touchHLE_sandbox

サポートされているものとしてリストされているゲームの実行中にエミュレーターがほぼ即座にクラッシュする場合は、Steamオーバーレイ、Discordオーバーレイ、RivaTuner統計サーバーなどのオーバーレイがオンになっているかどうかを確認してください。悲しいことに、これらのツールは便利ですが、他のアプリやゲームに自分自身を注入することで機能し、常に自分自身の後にクリーンアップするとは限らないため、touchHLEを壊すことができます...それは私たちのせいではありません。😢現在、RivaTuner統計サーバーのみが問題であることが知られています。別のオーバーレイが機能しない場合は、それについてお知らせください。

構築と貢献

git リポジトリの BUILDING.md ファイルと CONTRIBUTING.md ファイルを参照してください。

ライセンス

touchHLE © 2023 hikari_no_yumeおよびその他の寄稿者。

touchHLE 自体のソースコード (その依存関係ではない) は、Mozilla Public License バージョン 2.0 の下でライセンスされています。

ライセンスの互換性の問題により、バイナリはGNU一般公衆利用許諾契約書バージョン3以降の下にあります。

依存関係のすべてのライセンスのベストエフォートリストを表示するには、touchHLEをビルドし、実行時にフラグを渡します。

--copyright

バンドルされたダイナミックライブラリ( )とフォント( )には異なるライセンス条項が適用されることに注意してください。詳細については、それぞれのディレクトリを参照してください。

touchHLE_dylibs/
touchHLE_fonts/

感謝

私たちは巨人の肩の上に立っています。ありがとうございました:

  • プロジェクトに貢献した、またはプロジェクトを財政的に支援したすべての人。
  • このプロジェクトで使用されている多くのライブラリの作成者と貢献者: dynarmic、rust-macho、SDLrust-sdl2stb_imageopenal-softhoundcafRustTypeLiberation フォント、Noto CJK フォントrust-plist、gl-rs、cargo-license、cc-rs、cmake-rs、および Rust 標準ライブラリ。
  • 一般的にRustプロジェクト
  • 公式またはその他の方法で、iPhone OSプラットフォームを文書化したさまざまな人々がいます。このドキュメントの多くは、このコードベース内にリンクされています。
  • iOSのハッキング/脱獄コミュニティ。
  • フリーソフトウェアファウンデーションは、libgccとlibstdc++をコピーレフトにして、このプロジェクトをABI地獄から救ってくれました。
  • ギドラのためのアメリカ合衆国の国家安全保障局。
  • プロジェクトに興味を持ち、提案や励ましをしてくれた多くの友人。
  • 初期のiPhone OSアプリの開発者。あなたが作成した宝物!
  • Apple、そして彼らの前のNeXTは、そのような素晴らしいプラットフォームを作成してくれました。