- 167 名前:Moonlight mailto:sage [2007/07/20(金) 20:25:55 ID:H4HcI83W]
- 読み返すと日本語が不自由なひとで恥ずかしいです。長文失礼します。
>>148 DLDIからキャパシティを取得するときは、リージョンIDをメインメモリ全域から32bit単位で検索してDLDI本体を探しだし、そこを基点にして0x64バイト目にFEATUREフラグセットが32bit値で入っているので、そこを読み込めばOKです。 リージョンIDは、リトルエンディアンの32bit定数で(0xBF8DA5ED)です。 検索する際、自分自身はスキップしてくださいね。 DLDIパッチファイルから直接取得するなら、ファイル先頭から同じく0x64バイト目になります。 DLDIフォーマットの詳細についてはDLDIテンプレートか、 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をコントロールするのとどっちがスマートかは微妙です…。
|

|