ここでは、3DS の TWLモード(DSi 互換モード)と TWL 本体(ニンテンドーDSi)では、同じアプリケーションでも一部動作に違いがあります。ここでは、その動作の違いを紹介します。これらの情報は、3DS 上でも動作するニンテンドーDS シリーズのアプリケーション(特にニンテンドーeショップでも販売される DSi ウェア)を開発する際の注意点として参照してください。
DSi ウェアをインポートする方法については ctr_makecia のリファレンスを参照してください。
15.1. 表示関連
15.1.1. LCD
LCD の設置方向の関係(「5.5. GX ライブラリの初期化」参照)で、液晶画面の走査方向が TWL とは異なります。また、エミュレーションのために約 1.3 フレーム遅れて描画されます。
15.2. 入力関連
15.2.1. タッチパネル
ドットバイドットモードで起動した場合、画面(表示域)の範囲外をタッチすることで、通常発生しにくい画面端のタッチを SDK(TWL/NITRO)の API が検出する可能性があります。
15.2.2. キー入力
スライドパッドによる十字ボタンのエミュレーション(「6.2.1. デジタルボタンとスライドパッド」参照)は、スライドパッドをスライドさせていない(入力と判定されない)ときはリアルタイムで十字ボタンの状態が更新されますが、スライドパッドをスライドさせているときは十字ボタンの状態が約 1 フレームに 1 度更新されます。そのためスライドパッドで操作している場合、更新タイミングによっては十字ボタンの入力が正確に反映されない可能性があります。
スライドパッドと十字ボタンの両方を使用して十字ボタンの上と下(もしくは左と右)を同時に入力したとしても、十字ボタンの入力は禁則処理(上下同時ならば上、左右同時ならば左が入力されたものとする)が行われた上でアプリケーションに通知されます。禁則入力が絶対に通知されないため、デバッグモードに入るなどのトリガとして禁則入力を使用しているアプリケーションは正しく動作しません。
15.2.3. 蓋閉じ
アプリケーションから見ると、HOME メニューが表示されている間は蓋閉じされた状態と同じです。通常の蓋閉じと同様に PAD_DetectFold()
は TRUE
を返しますが、キーやタッチパネルの入力はアプリケーションには通知されません。
15.2.4. サウンドボリューム
サウンドボリュームがスライドスイッチのため、ニンテンドーDSi では不可能なほど高速にサウンドボリュームが変更される可能性があります。
15.3. OS 関連
15.3.1. リセット、シャットダウン
OS_RebootSystem()
の処理にかかる時間が TWL で動作するときに比べて非常に長くなります。
15.3.2. アプリジャンプ
システムメニューバージョンのファイル名と内容が TWL と異なるため、それらの情報をチェックするようなルーチンが組み込まれていると、TWL モードでのみ誤動作する可能性があります。
15.4. 本体設定関連
15.4.1. リージョンコード
3DS では豪州リージョンが欧州リージョンに含まれるようになったため、TWL のリージョンで豪州リージョンにあたるアプリケーションは、3DS では欧州リージョンの本体で動作させることができます。
TWL リージョン |
動作可能な 3DS 本体のリージョン |
---|---|
JP(日本) |
JP(日本) |
US(米州) |
US(米州) |
EU(欧州) |
EU(欧州) |
AU(豪州) |
EU(欧州) |
EU(欧州)、US(米州) |
EU(欧州)または US(米州) |
EU(欧州)、AU(豪州) |
EU(欧州) |
EU(欧州)、AU(豪州)、US(米州) |
EU(欧州)または US(米州) |
CN(中国) |
CN(中国) |
KR(韓国) |
KR(韓国) |
15.4.2. 国設定
3DS では設定可能ですが TWL では該当のリージョンにない国設定が行われている場合、OSOwnerInfoEx
構造体の country
の値は 254(OTHER
)となります。
15.4.3. 言語設定
3DS では設定可能ですが TWL では該当のリージョンにない言語設定が行われている場合、OSOwnerInfoEx
構造体の language
の値は日本リージョンならば OS_LANGUAGE_JAPANESE
(日本語)、そのほかのリージョンならば OS_LANGUAGE_ENGLISH
(英語)となります。