Nintendo DSで自作コードを動かすための環境の概要

PSPに比べて、Nintendo DSで自作コードを動かす環境を作るのは結構難しい。しかし、DSでiPodできるソフトやリモートデスクトップのようにPCを遠隔操作するソフトなど、魅力的なソフトが結構あるので、本気で環境そろえたい気持ちになってきた。

Nintendo DSで自作コード(homebrew)を動かすための環境については、DSLinuxというLinuxをDSに移植するプロジェクトのWikiによくまとまっている。英語だけど。
で、ざっと調べてみた結果…おおまかに言って、以下の2つの方法で自作プログラムを起動しているようだ。
  1. ・DSのファームウェアを書き換えて、(正規品かどうかのチェックをスキップすることで)自作プログラムを動かすもの
  2. ・自作プログラムを動かすためのアダプタプログラムを、正規のDSソフトとしてDS本体に認識させ、アダプタプログラムが自作コードを起動するもの
1.の手段の代表的なものが、FlashMeと呼ばれるもの。
DS(のファームウェア)はソフトの起動時にRSA署名をチェックすることでプログラムが正当なものかどうかをチェックしているようで、任天堂に承認されていないプログラムはこのチェックではじかれてしまう。そこで、DSのファームウェア自体を書き換えることで、このチェックをスキップしてしまおうというアイデアが1.になる。
一度DSのファームウェアを書き換えてしまえば、元のデバイスは二度と必要なくなるので、誰かに借りることができるならお手軽にできるよう。

2.の手段の代表的なものは、PassMeシリーズやNoPassと呼ばれるもの。
これは、DSソフトのスロットに正当なRSA署名を持ったプログラムを差してDSにはまっとうなソフトが起動すると思わせ、そのソフト経由で自作プログラムを起動するというアイデアで、チェックをスルーするためのアダプタのような働きを持つデバイスを利用する。
このため、このアプローチでは自作プログラム格納用のデバイスを別途用意する必要があり、アダプタ製品によってプログラム格納用デバイスの種類が異なる。
アダプタ自身が別のカード(CFとかSDとか)を差すスロットを持っている場合には、ここに直接差す。持っていない場合には、GBAスロットにカードを差すこととなる。ただしこのケースでは、直接GBAスロットに差すことのできるカードは市販されていないため、CFやSDとのアダプタが必要となる。

さらにこれらの変則版として、DSダウンロードプレイのハックを組み合わせる方法もあるようだ。これはWireless Multibootと呼ばれ、元々DSに存在するダウンロードプレイの機能をハック(具体的には、PCからDSにソフトをダウンロードさせるようにする)して、自作プログラムをDSにダウンロードして実行させるというもの。ただし、上記のようにDSはプログラムの正当性をチェックしているので、1.の手段と組み合わせる必要がある。
この手段を用いた場合、自作プログラム格納用のカードとアダプタは不要となる点がメリットだろう。

コメント