NintendoDS(NDS)非公式開発 Part2
■ このスレッドは過去ログ倉庫に格納されています
0167Moonlight
2007/07/20(金) 20:25:55ID:H4HcI83W>>148
DLDIからキャパシティを取得するときは、リージョンIDをメインメモリ全域から32bit単位で検索してDLDI本体を探しだし、そこを基点にして0x64バイト目にFEATUREフラグセットが32bit値で入っているので、そこを読み込めばOKです。
リージョンIDは、リトルエンディアンの32bit定数で(0xBF8DA5ED)です。
検索する際、自分自身はスキップしてくださいね。
DLDIパッチファイルから直接取得するなら、ファイル先頭から同じく0x64バイト目になります。
DLDIフォーマットの詳細についてはDLDIテンプレートか、
http://chishm.drunkencoders.com/DLDI/
の'Default (No device)'辺りのソースの'/specs/dldi_crt0.s'か、'/source/default.s'を見てみてください。
一応フラグの意味だけ抜き出すと、
#define FEATURE_MEDIUM_CANREAD (0x00000001)
#define FEATURE_MEDIUM_CANWRITE (0x00000002)
#define FEATURE_SLOT_GBA (0x00000010)
#define FEATURE_SLOT_NDS (0x00000020)
こんな感じになっています。
とりあえず、バイナリエディタで開いてみて0x64バイト目を見たら概要が掴めるかもです。
ちなみに、オフセット0x60から32bit値がデバイスID(MPCFとかM3CFとか)になります。
libfatを書き換えて細かくDLDIをコントロールするのとどっちがスマートかは微妙です…。
■ このスレッドは過去ログ倉庫に格納されています