任天堂3DS「カスタムファームウェア」
luma3DSパッチと再調整任天堂3DSファミリーのコンソールのすべてのモデルで実行されているシステムソフトウェアの重要な部分。これは、ユーザーエクスペリエンスを大幅に改善し、3DSを終了をはるかに超えてサポートすることを目指しています。機能は次のとおりです。
luma3dsでは、boot9strapを実行する必要があります。
Boot9Strapがインストールされたら、最新リリースアーカイブをダウンロードして、アーカイブをSDカードのルートに抽出して「インストール」するか、HomeBrewメニューとCERTSバンドルとともにLuma3DSをアップグレードします。既存のファイルを交換し、必要に応じて既存のフォルダーをマージします。
メインのLUMA3DS構成メニューは、 BootでSelectを押すことでアクセスできます。構成ファイルは、sdカードのctrnandパーティションでctrnandパーティションにctrnandパーティションから起動された場合、ctrnandパーティションに/rw/luma/config.ini
に/luma/config.ini
に保存されます。
チェーンローダーメニューは、ブートで開始を押すか、構成メニューからアクセスします。ペイロードは、 .firm
拡張機能を使用して/luma/payloads
に配置されると予想されます。そのようなペイロードが1つしかない場合、前述の選択メニューがスキップされます。ホットキーはペイロードに割り当てることができます。たとえば、 x_test.firm
xがブートで押されたときにチェーンロードされます。
オーバーレイメニューのロザリナには、デフォルトのボタンの組み合わせがあります: l+down+select 。より大きな柔軟性のために、ほとんどのロザリナメニュー設定は自動的に保存されないため、「設定を保存」オプションになります。
GDBポートは、有効になると、通常のポートの場合は4000-4002
です。 info os processes
とともに、「拡張リモート」モードでのattach
の使用がサポートされ、奨励されています(リバースエンジニアリングの場合、 monitor getmemregions
もチェックしてください)。ブレークオンスタート機能のポートは、「拡張リモート」なしで4003
です。 DevkitarmパッチのGDBとIDA Pro(「ステッピングサポート」が有効になっていない)の両方が積極的にサポートされています。
Wikiはありますが、現在は非常に時代遅れです。
luma3dsは複数のコンポーネントで構成されています。各コンポーネント内のコードスタイルはほとんど一貫していますが、これらのコンポーネントは長年にわたって記述されており、メンテナーが新しいコンポーネント/プロジェクトで新しいコードを書く方法を反映していない場合があります。
Process9
コードを変更し、他のすべてのカスタムコンポーネントを挿入するためのパッチを適用する責任があります。これは、2015年にこのプロジェクトのために書かれた最初のコンポーネントでしたNATIVE_FIRM
Kernel( Kernel11
)を拡張するコード。上記のBareMetal Loaderによって、スタートアップコードを引っ掛けることでカーネルに注入され、その後、他のカーネルにフックを付けます。その機能には、フックシステムコール(SVC)、新しいSVCの導入、インタープロセス通信へのフック、任天堂のシステム設計の制限をバイパスすることが含まれます。これは、たとえば、ロザリーナがオーバーレイメニューエントリで他のプロセスを一時停止できるようにするコンポーネントです。これは、カーネルを完全にリバースエンジニアリングしなかったときに書かれ、2017年にロザリーナと一緒にリリースされました。 2023年に「ゲームプラグイン」サポートのさらなるフックが融合されましたerr:f
(致命的なエラー画面)再装備など。 2017年半ばに導入され、継続的に変更を受け、それ以来多くの外部の貢献を受けましたloader
にロードするよう指示することを再検討します。再実装により、RosalinaのブレークオンスタートGDB機能が可能になり、FSアクセス制御制限を適切に持ち上げます。 2019年に導入されましたLuma3DSにはまだ多くの機能と統合が計画されています!現在店頭にあるもののリストは次のとおりです。
TwlBg
およびAgbBg
の完全な再実装。これにより、DSおよびGBAゲーム(古い2DSを除く)で、トップ画面の上昇がはるかに優れていて、より構成可能なアップスケーリングが可能になります。これは現在、C ++ 23(ETAなし)で個人的に開発されています。これは非常に困難な努力ですが、これにはセミベアメタル(IPCなしの限定カーネル)のドライバースタック全体を書き換える必要がありますが、これはLUMA3DSが持つための最も重要な機能であり、ドライバーのsysmoduleの再件名を些細なものにするための最も重要な機能ですTWL_FIRM
およびAGB_FIRM
のProcess9
の再実装9Kernel11
の再実装Kernel11
には、新しいKDebugThread
スレッド作成のKThread
に添付することに関連するレース状態があり、別のスレッドnull referencing thread->debugThread
あります。これにより、チートエンジンは常に多くのスレッドを作成および破壊するゲームをクラッシュさせます(ポケモンなど)。Kernel11
が再実装されるまで、専用の「ゲームプラグイン」を持つことが唯一の選択肢です。luma3dsを構築するには、以下が必要です。
$PATH
のmakeromdkp-pacman
(または、既にPacmanを提供する分布については、リポジトリを追加):https://devkitpro.org/wiki/devkitpro_pacman3ds-dev
メタパッケージからのパッケージをインストール: sudo dkp-pacman -S 3ds-dev --needed
luma3dsリリースは3ds-hbmenu
にバンドルされていますが、luma3dsは実際に1つのファイル、 boot.firm
1つのファイルにコンパイルされます。 SDカードのルートにコピーするだけです(FTPDが最も簡単な方法です)、完了です。
このソフトウェアは、GPLV3の条件の下でライセンスされています。ライセンスのコピーをlicense.txtファイルで見つけることができます。
代わりに、GDBスタブのファイルは、MITまたは「gplv2または任意の後のバージョン」としてトリプルライセンスされています。その場合、ファイルヘッダーで指定されています。 PM、SM、PXIの再発現もMITに基づいてライセンスされています。
luma3dsは、多くの貢献と建設的なフィードバックがなければ、それが何であるかではありません。特に感謝します: