GitHubでSciresM氏が、SwitchのCFWとして開発が進められているAtmosphèreのリリースプランを公開していました。
https://github.com/Atmosphere-NX/Atmosphere/wiki/release-plans以下、雑な訳。
公開予定
v0.7はAtmosphère初の正式リリースとなります。0.7の残りの主要な問題が解決されるとリリースとなります。
現在0.7のリリースは2018年8月中となる見込みです。以下の機能をサポートします。
●Fusée, カスタムブートローダー
microSDカードからの任意のKIPのロード/カスタマイズをサポートしています。
コンパイル時に定義されたカーネルパッチを各FW毎にサポートしています。
microSDカードに配置したBCT.iniを編集して設定可能で、Atmosphèreは代替となるブートローダーであるhekateでも起動可能です。
●Exosphère, 全機能を有したカスタムセキュリティモニター
Exosphereは任天堂のTrustZoneファームウェアの再実装で、全機能を完全に再現しています。
加えて、Homebrew開発者のためにAtmosphere APIバージョンを提供するよう拡張しました。
●Stratosphère, カスタムシステムモジュールのセット
・ ローダーシステムモジュール
任天堂のローダーを再実装し、オリジナルの機能を完全に再現しています。
microSDカードへ任意の実行ファイルをリダイレクトするように拡張しました。
ファイルが "/atmosphere/titles/タイトルID/exefs/" に存在すればそちらが優先的にロードされます。
.stubファイルを作成する事でexefsのそのファイルをスタブとして扱う事が可能です。
リダイレクトは特定のボタンを押し続ける事でトグル可能になります。
・FW2.0.0以上では "/atmosphere/titles/タイトルID/exefs.nsp" がある場合はexefsを完全に置き換えます。
・NSOコンテンツへのパッチ機能をサポート
"/atmosphere/exefs_patches/<user-defined patch name>/<Hex Build-ID for NSO to patch>.ips"
のようなパスの全てのパッチが適用され、各FWや各ゲームタイトルに対するパッチを容易に配布可能です。
IPSとIPS32の両方のパッチ形式がサポートされています。
・microSDカード上の実行可能ファイルからのコンテンツをインストールせず起動出来るよう拡張
これは起動時にFsStorageId_Noneを指定する事で可能です。
・サービスマネージャシステムモジュール
任天堂のサービスマネージャを再実装し、オリジナルの機能を完全に再現しています。
コンパイル時にsmhaxの再導入をサポート。クライアントはイニシャライズをスキップしてサービス検証をスキップ可能です。
任天堂のオリジナルと比べ、Homebrewが特権サービスのハンドルを増やせるように拡張されました。
MITMリスナーを任意のサービスにインストールするための新たなAPIを追加しました。
APIはサービスが副作用無し, ノンブロッキングで登録されているかどうかを検出可能です。APIのドキュメントも公開します。
・プロセスマネージャシステムモジュール
任天堂のプロセスマネージャを再実装し、オリジナルの機能を完全に再現しています。
Homebrewが任意のプロセスに対するハンドルを取得し、実行を妨げる事無くシステムメモリを読み書き出来るように拡張
任天堂のboot2システムモジュールの拡張実装を組み込んで拡張しました。
microSDカードへのアクセス許可を高速化するためにタイトルの起動順序を最適化しました。
エラー収集システムモジュールを起動しないようにしたため、多くのシステムテレメトリエラーレポートは全く生成されません。
ユーザーはmicroSDカードに "/atmosphere/titles/タイトルID/boot2.flag" を作成することで、独自のカスタムシステムモジュールを
microSDカードに配置してboot2の起動にフラグを立てることが可能です。
・カスタムfs.mitmシステムモジュール
AtmosphèreのMITM APIを使用してユーザーがゲームコンテンツを簡単に変更出来るようにします。
ゲームによって送信される全てのFSコマンドをインターセプトし、RomFS/DLCをマウントするコマンドを利用することで、
ゲーム/DLCのMODを簡単に作成/配布する事が可能です。
fs.mitmはベースRomFSイメージを解析し、"/atmosphere/titles/タイトルID/romfs.bin" と
"/atmosphere/titles/タイトルID/romfs/" の全ファイルを1つのRomFSイメージとしてマージします。
マージする際にはromfs.binよりもromfsフォルダ内のファイルが優先され、romfs.binはベースRomFSよりも優先されます。
加えて、microSDカードに "/atmosphere/titles/タイトルID/fsmitm.flag" を作成する事で、microSDカードが有効になる前に
起動された物を除く任意のタイトルよって送信されるコマンドをインターセプトするために使用可能です。
・カスタムクラッシュレポートシステムモジュール
任天堂のcreportシステムモジュールの代替として働きます。
"/atmosphere/crash_reports/<timestamp>_タイトルID.log" としてシステムクラッシュのレポートを人間が読める形で生成します。
レポートはerpt sysmoduleに送信されないため、クラッシュレポートに関する全テレメトリが無効になります。
●ユーザーエクスペリエンスを高めるための一般的なシステムの安定性の改善
計画
Atmosphèreに実装する予定の機能がいくつかあります。
これらが実装されると、Atmosphèreのバージョンは0.7/0.8/0.9と上がり、最終的には1.0になるでしょう。
現在計画されている機能には以下が含まれます。(以下の内容に限定されません。)
●Thermosphère, ハイパーバイザーベースのemunandの実装
●機能豊富なデバッグツールセット(Stratosphèreのコンポーネント)
・カスタムデバッグモニタシステムモジュールでSwitchのプロセスをデバッグするAPIを提供します。
これは任天堂のデバッグモニタの再実装にはならないかもしれません。おそらくLuma3DSから拝借したgdbstubの実装が含まれます。
このAPIはRAMの編集やチートエンジン目的で使用する必要があるはずです。
・カスタムシェルモジュール
ユーザーが様々なRPCを実行するための手段を提供します。これは任天堂のシェルの再実装にはならないかもしれません。
これによりWi-FiとUSBの両方を介したクライアント接続がサポートされるはずです。
・カスタムロギングシステムモジュール
Atmosphèreのコンポーネント(及びおそらく任天堂のシステムモジュールも)のデバッグ出力の手段を提供します。
これによりmicroSDカード/WI-Fi/USB経由のロギングがサポートされるはずです。
●アプリケーションレベルのプラグインシステム
理想としては、3DSのNTR-CFWのプラグインシステムと似通った動作をし、ユーザーは自分のスレッドで
ゲームのプロセスにて独自のコードを実行可能になります。
●ARコード/Gamesharkのアナログ実装
これによりデバイス上で動作するチートコードの開発や共有が容易になります。
●Atmosphèreの既存のコンポーネントのさらなる拡張
●ユーザーエクスペリエンスを高めるための一般的なシステムの安定性の改善