

#include <nitro/os.h>u32 OS_GetConsoleType( void );
なし。
プログラムの実行環境による u32 型の値です。
説明の項を参照してください。
プログラムの実行環境を表す u32 型の値を返します。
この OS_GetConsoleType() は動作環境によって処理を動的に切り替えたい場合に有効です。この関数によって複数の動作環境で共通のプログラムを作成することができます。
OS_GetConsoleType() は、「動作している環境」を取得するための関数であり、「動作しているモード」を調べるための関数ではありません。動作モードを調べる関数は、OS_IsRunOnTwl() です。 例えばNTR 用のゲームは NTRでも遊べますし、TWL で遊ぶことも出来ます。どちらの場合でも「NTRモード」でプログラムは動いていますが、動作しているハードウェアはNTR
であったり TWL であったりと異なります。
・
OS_IsRunOnTwl()では、「動作モードがNTRモードか、TWLモードか」はわかります。しかしどちらのハードウェア上で動作しているかはわかりません。
・OS_GetConsoleType()では、「NTRで動作しているか、TWLで動作しているか」はわかります。しかし動作モードはわかりません。
(但し、NITRO専用ROMの FINALROM版を TWL で動作させる場合、"NTR で動作している" ことを表す値が返ります。)
OS_GetConsoleType() は、1回目の呼び出しではデバイスやメモリ等を調査して値を決定しますが、2回目の呼び出しからは以前返した値と同じものをそのまま返しますので呼び出しによるオーバーヘッドは殆どありません。
最終版ROM (FINALROM) ライブラリでは返る値が限定されています。デバッガ上など実機以外で動作させていたときに、その環境を表す値以外の値を返すことがあります。
同様の関数として、OS_GetRunningConsoleType() があります。こちらはは 最終版ROM (FINALROM) でも実際にハードウェア構成を調べて値を返す点が違います。
この違いは、例えば TWL 最終版ROM を IS-TWL-DEBUGGER で動作させた場合などに見ることが出来ます。IS-TWL-DEBUGGER
にはメモリが 32MB 搭載されていますのでOS_GetRunningConsoleType() & OS_CONSOLE_SIZE_MASK の値は OS_CONSOLE_SIZE_32MB となりますが、OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK は OS_CONSOLE_SIZE_16MB となります。
最終版ROM にこれらの動作環境取得の関数が残る場合、OS_GetRunningConsoleType() よりは OS_GetConsoleType() の方が無難です。製品となった状況を想定すると、最終ROM は実機でしか動作しないはずなので、「動作している環境はデバッガである」など実機で有りえない値が返る可能性は排除しておきたいからです。そういう意味では
OS_GetRunningConsoleType() はデバッグ用途にのみ使用するのに留めておくのがよいでしょう。
・動作環境
返り値とOS_CONSOLE_MASKの論理積は、動作環境によって以下の値を取ります。
値 動作環境 OS_CONSOLE_TWLTWL 実機で動作 *1 OS_CONSOLE_NITRONITRO 実機で動作 OS_CONSOLE_TWLDEBUGGERIS-TWL-DEBUGGER 上で動作 *2 OS_CONSOLE_ISDEBUGGERIS-NITRO-DEBUGGER 上で動作 OS_CONSOLE_ENSATAensata NITRO Software Emulator 上で動作
TWL実機で動作していると判定された *1 の場合、OS_CONSOLE_TWLTYPE_MASKとの論理積でさらに分類されます。
但し通常はOS_CONSOLE_TWLTYPE_DEVの考慮は不要です。OS_CONSOLE_TWLだけで TWL実機と見なして問題ありません。
なお、TWLデバッガをデバッガソフトウェア非接続で使用する場合、動作環境はOS_CONSOLE_TWLとなり、TWL実機の種類はOS_CONSOLE_TWLTYPE_DEVとなります。
但し NITROデバッガをデバッガソフトウェア非接続で使用する場合は、動作環境はOS_CONSOLE_IS_DEBUGGERで、接続使用する場合と変わりません。
値 TWL実機の種類 OS_CONSOLE_TWLTYPE_RETAILTWL 製品実機 OS_CONSOLE_TWLTYPE_DEV開発用途にセキュリティー用の鍵が異なる TWL 実機 / TWLデバッガのソフトウェア非接続使用時
IS-TWL-DEBUGGER で動作していると判断された *2 の場合、OS_CONSOLE_BOARD_MASKとの論理積でさらに分類されます。
値 IS-TWL-DEBUGGER の種類 OS_CONSOLE_BOARD_A9_A7コンポーネント開発用 ARM9 / ARM7 両対応デバッガ OS_CONSOLE_BOARD_A9アプリケーション開発用 ARM9 専用デバッガ
・プログラムの読み込みデバイス
返り値とOS_CONSOLE_DEV_MASKの論理積は プログラムデータの読み込みデバイスによって以下の値を取ります。
値 読み込みデバイス OS_CONSOLE_DEV_CARDカードバスから読み込み OS_CONSOLE_DEV_CARTRIDGEカートリッジバスから読み込み *3 OS_CONSOLE_DEV_NANDNANDから読み込み OS_CONSOLE_DEV_SDCARDSDカードから読み込み OS_CONSOLE_DEV_MEMORYメモリ上から読み込み OS_CONSOLE_DEV_DOWNLOADダウンロードでの読み込み
*3 …TWL本体にはカートリッジスロットが無いのでTWL プラットフォームでこの値を取ることはありません。
・メモリサイズ
返り値とOS_CONSOLE_SIZE_MASKの論理積は、実装されているメインメモリサイズによって以下の値を取ります。
値 メインメモリサイズ OS_CONSOLE_SIZE_4MB4MByte OS_CONSOLE_SIZE_8MB8MByte OS_CONSOLE_SIZE_16MB16MByte OS_CONSOLE_SIZE_32MB32MByte
TWL実機でNITRO専用ROMを動作させた場合はビルド種類に依らずメモリサイズは 4MB となります。
以下は、OS_GetConsoleType() と OS_GetRunningConsoleType() で取得できる値を表しています。表の項目の論理和が取得できる値となります。OS_CONSOLE_DEV_xxx
は、実際にROMデータを読み込んだデバイスの値となります。
| NITRO モードの場合 | ||||
|---|---|---|---|---|
| 動作環境 | ビルド | OS_GetConsoleType()の値 |
OS_GetRunningConsoleType()の値 |
備考 |
| NTR実機 | DEBUG RELEASE |
OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
4つとも 同じです。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
||
| TWL実機 | DEBUG RELEASE |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
FINALROMのOS_GetConsoleType()だけ異なります。 ビルドに関わらず、メモリ搭載 量は 4MB になります。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
||
| IS-NITRO-DEBUGGER (デバッガソフトウェア 非接続時を含む) |
DEBUG RELEASE |
OS_CONSOLE_ISDEBUGGER OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_8MB |
OS_CONSOLE_ISDEBUGGER OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_8MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_ISDEBUGGER OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_8MB |
||
| ENSATA EMULATOR | DEBUG RELEASE |
OS_CONSOLE_ISDEBUGGER OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_8MB |
OS_CONSOLE_ISDEBUGGER OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_8MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_ISDEBUGGER OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_8MB |
||
| IS-TWL-DEBUGGER (一般開発用: ARM9) |
DEBUG RELEASE |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
||
| IS-TWL-DEBUGGER (コンポーネント開発用 ARM9 + ARM7) |
DEBUG RELEASE |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9_A7 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9_A7 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9_A7 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
||
| IS-TWL-DEBUGGER (一般開発用: ARM9) の デバッガソフトウェア非接続時 |
DEBUG RELEASE |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
FINALROMのOS_GetConsoleType()だけ異なります。 ビルドに関わらず、メモリ搭載 量は 4MB になります。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
||
| IS-TWL-DEBUGGER (コンポーネント開発用 ARM9 + ARM7) の デバッガソフトウェア非接続時 |
DEBUG RELEASE |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
FINALROMのOS_GetConsoleType()だけ異なります。 ビルドに関わらず、メモリ搭載 量は 4MB になります。 |
| FINALROM | OS_CONSOLE_NITRO OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV7 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_4MB |
||
| TWL モードの場合 | ||||
| 動作環境 | ビルド | OS_GetConsoleType()の値 |
OS_GetRunningConsoleType()の値 |
備考 |
| TWL実機 | DEBUG RELEASE |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
4つとも 同じです。 |
| FINALROM | OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
||
| IS-TWL-DEBUGGER (一般開発用: ARM9) |
DEBUG RELEASE |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
||
| IS-TWL-DEBUGGER (コンポーネント開発用 ARM9 + ARM7) |
DEBUG RELEASE |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9_A7 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9_A7 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
OS_CONSOLE_TWLDEBUGGER OS_CONSOLE_BOARD_A9_A7 OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
||
| IS-TWL-DEBUGGER (一般開発用: ARM9) の デバッガソフトウェア非接続時 |
DEBUG RELEASE |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
||
| IS-TWL-DEBUGGER (コンポーネント開発用 ARM9 + ARM7) の デバッガソフトウェア非接続時 |
DEBUG RELEASE |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
FINALROMのOS_GetConsoleType()だけ異なります。 |
| FINALROM | OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_RETAIL OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_16MB |
OS_CONSOLE_TWL OS_CONSOLE_TWLTYPE_DEV OS_CONSOLE_DEV_xxx OS_CONSOLE_SIZE_32MB |
||
NITRO モードでの動作環境識別
NITRO モードで動作する場合、本関数 OS_GetConsoleType() だけではNTR本体と TWL 本体のどちらで動作しているかの判断が出来ません。OS_GetRunningConsoleType() の値を調べれば区別できますが、前述の通り OS_GetRunningConsoleType() はできればデバッグ用途に留めたい関数です。そもそも通常はどちらのハードウェアで動作しているかを意識する必要はありませんが、どうしても識別したい場合のためにOSi_IsNitroModeOnTwl() という関数が用意されています。この関数が TRUE を返すときは、TWL上で NITRO
モードの ROM が動作していることになります。
OSi_IsNitroModeOnTwl() は限られた用途で使われるべきであるという理由と、TWL開発当初は NITRO 開発者がTWL
のことを知っているとは限らないという配慮から TWL の名が出ているこの関数は非公開関数の扱いとなっていたという経緯により、現在も非公開関数として扱われています。
OS_IsRunOnDebugger, OS_IsRunOnEmulator, OS_GetRunningConsoleType
2009/10/30 デバッガ非接続時に関しての情報を追記。NITROモードでの動作環境識別を修正
2008/04/15 モードによって表を分割
2008/03/27 環境やビルドによる実際の値を追加
2007/11/16 記述追加
2007/11/05 OS_GetRunningConsoleType() に移行