NITRO-SDK CHANGELOG OLD VERSION

# NITRO-SDK 変更履歴

→ TWL-SDK 変更履歴

■NITRO-SDK 4.1 正式版 (2007/07/10)
  Note 48-01: (CARD) ROM 転送関数の内部修正
  Note 48-02: (DevEnv) C++ コンストラクタや StaticInitializer の AUTOLOAD 対応
  Note 48-03: (DevEnv) 拡張メモリへの Autoload 適用時のアリーナ先頭アドレスの修正
  SDK 4.1 正式版での既知の問題点

■NITRO-SDK 4.1 RC (2007/06/15)
  Note 47-01: (CARD) キャッシュ無効化処理切り替え用関数の追加
  Note 47-02: (MI) アロケータ構造体の追加
  Note 47-03: (PM) LCD off 期間の調整
  Note 47-04: (TOOL) makerom.exe の -M オプションの動作不良の修正
  Note 47-05: (WFS) WFS ライブラリの正式公開
  Note 47-06: (WM) WM_IsExistAllowedChannel 関数の不具合修正
  SDK 4.1 RCでの既知の問題点

■NITRO-SDK 4.1 PR (2007/05/18)
  Note 46-01: (CARD) CARD_UnlockBackup 関数の修正
  Note 46-02: (CARD) キャッシュ無効化処理切り替え用関数の追加
  Note 46-03: (CARD) マイクサンプリング中にカードを抜いた際の不具合修正
  Note 46-04: (CARD) 新規バックアップデバイスへの対応
  Note 46-05: (CTRDG) CTRDG_GetPhiClock 関数の追加
  Note 46-06: (DevEnv) ビルド変数 MAKELCF_FORMAT の定義変更および説明文の追加
  Note 46-07: (FS) FS_LoadOverlay 関数の修正
  Note 46-08: (GX) GX_SetVCount 関数の変更
  Note 46-09: (GX) Sub_Double3D サンプルデモの修正
  Note 46-10: (MB) DS ダウンロードプレイ子機デバッグ用プログラムの更新
  Note 46-11: (MB) MB_FakeSetCompareGGIDCallback 関数の追加
  Note 46-12: (MI) MI_SetMainMemoryPriority 関数のリファレンス修正
  Note 46-13: (MI) デバイスアクセス用ユーティリティ機能の追加
  Note 46-14: (MIC) MICAutoParam 構造体のリファレンスマニュアルの説明追記
  Note 46-15: (MIC) mic-2 サンプルデモの修正
  Note 46-16: (MTX) 行列関数に関する整理
  Note 46-17: (OS) OS_ResetSystem 関数の修正
  Note 46-18: (STD) 書式文字列関数の追加
  Note 46-19: (TOOL) makelcf SPECFILE の SearchSymbol 文の処理の不具合修正
  Note 46-20: (TOOL) makerom の 2Gbit ROM 正式サポート
  Note 46-21: (WFS) WFS ライブラリのテスト公開
  Note 46-22: (WM) WM_ERRCODE_OVER_MAX_ENTRY の発生条件に関する説明追記
  Note 46-23: (WM) WM_StartMPEx 関数での設定値の影響を一時的なものに変更
  Note 46-24: (WM) WM_StartMPEx 関数のオプション処理の変更
  Note 46-25: (WM) Wii との MP 通信における不具合修正
  Note 46-26: (WM) wmPadRead-child デモの追加
  SDK 4.1 PRでの既知の問題点

■NITRO-SDK 4.0 正式版 (2007/02/15)
  Note 45-01: (DevEnv) ソースコードの書式統一
  Note 45-02: (その他) アイコンデータの更新
  SDK 4.0 正式版での既知の問題点

■NITRO-SDK 4.0 RC (2007/01/22)
  Note 44-01: (ENV) ENV ライブラリの修正
  Note 44-02: (FX) FX_AsinIdx 関数および FX_AcosIdx 関数の追加
  Note 44-03: (GX) GXBg23Control256x16Affine 構造体の追加
  Note 44-04: (GX) GX_SetVCount 関数のリファレンス修正
  Note 44-05: (MB) MB_End 関数の不具合修正
  Note 44-06: (MB) mb_child_simple.srl プログラムの修正
  Note 44-07: (OS) IRQ ハンドラの修正
  Note 44-08: (OS) 拡張言語対応アプリケーション作成に関するドキュメントを追加
  Note 44-09: (PM) LCD off 期間の調整
  Note 44-10: (TOOL) makebanner のリファレンスマニュアルの説明追加
  Note 44-11: (TOOL) makelcf のデフォルト IRQ スタックサイズ変更
  SDK 4.0 RCでの既知の問題点

■NITRO-SDK 4.0 PR (2006/11/27)
  Note 43-01: (CARD) DMA 転送中にカードを抜くと画像が乱れる不具合の修正
  Note 43-02: (CARD) カードの抜け検出方法に関する不具合修正
  Note 43-03: (CP) divider.h の修正
  Note 43-04: (DevEnv) NITRO-SDK パッケージのビルドに使用する CodeWarrior のバージョン変更
  Note 43-05: (DevEnv) enum を常に int サイズに変更
  Note 43-06: (GX) G3*_Vtx10 関数のリファレンス修正
  Note 43-07: (MB) ダウンロード中に蓋を閉じカードを抜いた際の不具合修正
  Note 43-08: (MB) MB_FakeSetVerboseScanCallback 関数の追加
  Note 43-09: (OS) OSOwnerInfo 構造体、OS_GetOwnerInfo 関数の変更
  Note 43-10: (OS) OS_Init 関数の V カウント調整
  Note 43-11: (OS) OS_TPrintfEx, OS_TVPrintfEx, OS_VSNPrintfEx 関数の追加
  Note 43-12: (OS) 拡張言語コードの韓国語対応
  Note 43-13: (PM) ストリーム再生中のカード抜け発生時に、電源が OFF されない不具合の修正
  Note 43-14: (SND) SND_FlushCommand 関数のスレッドセーフ化
  Note 43-15: (STD) STD_CopyLString, STD_CopyLStringZeroFill 関数の修正
  Note 43-16: (STD) Scanf 関数の文字クラス対応
  Note 43-17: (TOOL) bash の仕様変更への対応
  Note 43-18: (TOOL) makerom のリファレンスマニュアルの記述修正
  Note 43-19: (WM) サンプルデモの修正
  SDK 4.0 PRでの既知の問題点

■NITRO-SDK 3.2 正式版 (2006/08/28)
  Note 42-01: (CARD) CARD_GetRomHeader 関数のリファレンス修正
  Note 42-02: (GX) AntiAlias サンプルデモの修正
  Note 42-03: (OS) 関数コスト計測におけるバッファ溢れチェックの追加
  Note 42-04: (PM) ワイヤレス通信中のカード抜け発生時における不具合修正
  Note 42-05: (WM) サンプルデモの修正
  SDK 3.2 正式版での既知の問題点

■NITRO-SDK 3.2 RC2 (2006/08/17)
  Note 41-01: (CARD) ワイヤレス通信中のカード抜け発生時に電源が OFF されない不具合の修正
  Note 41-02: (CP) CP_RestoreContext 関数内でのウェイトの追加
  Note 41-03: (CP) 割り込み内での除算器の使用に関する注意の追加
  Note 41-04: (CTRDG) カートリッジの活線挿抜に関する不具合修正
  Note 41-05: (OS) OS_SleepThreadDirect 関数の追加
  Note 41-06: (OS) スレッド切り替え処理の内部修正
  Note 41-07: (OS) 起動時の Vカウント調整
  Note 41-08: (PRC) 除算器に関するスレッドセーフ化
  Note 41-09: (STD) 文字コード変換関数の仕様変更
  Note 41-10: (WBT) WBT_CMD_REQ_GET_BLOCK_DONE 通知の不具合修正
  Note 41-11: (WBT) サンプルデモの修正
  Note 41-12: (WM) WM_SetWEPKey/Ex 関数の修正
  Note 41-13: (WM) wepMode のリセット処理の修正
  Note 41-14: (WM) wepMode 設定に関する不具合の修正
  Note 41-15: (WM) サンプルデモの修正
  SDK 3.2 RC2での既知の問題点

■NITRO-SDK 3.2 RC (2006/07/25)
  Note 40-01: (CARD) カード抜け発生時に電源が OFF されないという不具合修正
  Note 40-02: (DevEnv) テンプレートファイルによる ITCM/DTCM 使用サイズ判定処理の不備
  Note 40-03: (MATH) MATHCompareFunc のリファレンス修正
  Note 40-04: (MATH) MATH_QSortStackSize 関数の変更
  Note 40-05: (MB) multiboot-PowerSave サンプルの修正
  Note 40-06: (MB) ライフタイム初期値の変更
  Note 40-07: (STD) 文字コード変換関数の修正
  Note 40-08: (VIB) VIB ライブラリの修正
  Note 40-09: (WM) サンプルデモの修正
  Note 40-10: (WM) 通信終了時の新規接続禁止
  SDK 3.2 RCでの既知の問題点

■NITRO-SDK 3.2 PR (2006/07/07)
  Note 39-01: (CARD) 抜け検出処理の修正
  Note 39-02: (CTRDG) AGB バックアップアクセス関数のリファレンス修正
  Note 39-03: (CTRDG) ドキュメントの修正
  Note 39-04: (DevEnv) make システムの共通定義ファイルにおいて古い CodeWarrior のサポートを停止
  Note 39-05: (MATH) MATH_QSort 関数の修正
  Note 39-06: (MI) LZ77圧縮時のオーバーアクセス不具合の修正
  Note 39-07: (MI) エンディアン変換関数の 8bit 版を追加
  Note 39-08: (OS) OS_InitException 関数の修正
  Note 39-09: (OS) 関数コスト計測の修正
  Note 39-10: (PM) LCD OFF 時にカードが抜けた場合、電源 OFF されないという不具合の修正
  Note 39-11: (PM) PM_GoSleepMode 関数のリファレンス修正
  Note 39-12: (PM) スリープモード後の RTC アラーム割り込み不具合の修正
  Note 39-13: (STD) STD_CopyLString 関数のリファレンス修正
  Note 39-14: (STD) STD_CopyLString 関数の仕様変更と STD_CopyLStringZeroFill 関数の追加
  Note 39-15: (STD) ShiftJIS <-> Unicode 変換関数の追加
  Note 39-16: (TOOL) CodeWarrior 2.x 用のオーバーレイ関連の新機能への対応
  Note 39-17: (TOOL) compstatic ツールのリファレンス修正
  Note 39-18: (TOOL) makerom の新仕様の 1Gbit/2Gbit ROM サポート
  Note 39-19: (TOOL) 有効な ROM パラメータの組み合わせの判定処理の追加
  Note 39-20: (WM) WFS サンプルデモの修正
  Note 39-21: (WM) WM_EndDataSharing 関数の変更
  Note 39-22: (WM) Wii との通信におけるリンクレベル値の調整
  Note 39-23: (WM) サンプルデモの修正
  Note 39-24: (WM) 初期化・終了関数の不具合修正
  Note 39-25: (WM) 初期化関数内のポートコールバック初期化の不具合修正
  Note 39-26: (WM) 切断時の不正な動作の修正
  SDK 3.2 PRでの既知の問題点

■NITRO-SDK 3.1 正式版 (2006/05/02)
  Note 38-01: (CARD) ROM の DMA 転送に関する修正
  Note 38-02: (CTRDG) AGB バックアップアクセス関数の追加
  Note 38-03: (CTRDG) CTRDG_SetPhiClock 関数, CTRDG_GetPhiClock 関数の追加
  Note 38-04: (FS) ROM アーカイブの内部修正
  Note 38-05: (FX) FX_Mul 関数の変更
  Note 38-06: (FX) VEC_Normalize 関数の修正
  Note 38-07: (GX) G2_SetBlendAlpha 関数のリファレンスに記述の追加
  Note 38-08: (MATH) MATHCompareFunc のリファレンス修正
  Note 38-09: (MI) MI_CompressLZ 関数の圧縮不具合修正
  Note 38-10: (OS) OS_GetConsoleType 関数の修正
  Note 38-11: (OS) exceptionDisplay-2 サンプルデモの修正
  Note 38-12: (PRC) デモ用の図形辞書データの修正
  SDK 3.1 正式版での既知の問題点

■NITRO-SDK 3.1 RC (2006/04/11)
  Note 37-01: (CARD) 新規バックアップデバイスへの対応
  Note 37-02: (DevEnv) .itcm.bss/.dtcm.bss/.wram.bss セクションの追加
  Note 37-03: (DevEnv) modulerules.cctype.CW の修正
  Note 37-04: (FX) MTX_Copy* 関数のリファレンス追加
  Note 37-05: (GX) G3OP_DUMMY_COMMAND の追加
  Note 37-06: (GX) ジオメトリコマンドサイクル一覧の修正
  Note 37-07: (MI) エンディアンを考慮するメモリアクセス関数の追加
  Note 37-08: (OS) OS_CheckHeap 関数の修正
  Note 37-09: (OS) アリーナの概要修正
  Note 37-10: (OS) スタックの8バイトアラインメント対応
  Note 37-11: (PM) PM_ForceToPowerOff 関数及び PM_ForceToPowerOffAsync 関数の修正
  Note 37-12: (SND) SND_SetTrackMuteEx 関数の追加
  Note 37-13: (TOOL) attachsign ツールのリファレンス修正
  Note 37-14: (TOOL) ppmconv ツールで読み込めない PPM ファイルがあった不具合の修正
  Note 37-15: (VIB) pulse_vib サンプルデモの修正
  Note 37-16: (WM) dataShare-Model サンプルデモの修正
  Note 37-17: (WM) wireless-all サンプルデモの追加
  Note 37-18: (WM) サンプルデモの修正
  SDK 3.1 RCでの既知の問題点

■NITRO-SDK 3.1 PR (2006/03/14)
  Note 36-01: (ARM7) コンポーネントでの抜け検出自動処理の改善
  Note 36-02: (CARD) CARD_CheckPulledOut 関数の内部修正
  Note 36-03: (CTRDG) AGB カートリッジ領域へのアクセス制限強化
  Note 36-04: (CTRDG) CTRDG_CheckPulledOut 関数の追加
  Note 36-05: (GX) 2D_CharBg_Direct サンプルデモの修正
  Note 36-06: (GX) G2_GetBG2ScrPtr 関数及び G2_GetBG3ScrPtr 関数のリファレンス修正
  Note 36-07: (MB) MB_FAKESCAN_PARENT_BEACON 通知の追加
  Note 36-08: (MB) MB_ReadMultiBootParentBssDesc 関数の動作変更
  Note 36-09: (MB) クローンブートサンプル親機への再接続時のリトライ不具合の修正
  Note 36-10: (MB) ドキュメントの更新
  Note 36-11: (MIC) 自動サンプリング時の制限の明記
  Note 36-12: (PM) PMAmpGain 列挙型に関する不具合修正
  Note 36-13: (PM) PM_ForceToPowerOff 関数及び PM_ForceToPowerOffAsync 関数の変更
  Note 36-14: (TOOL) makerom におけるワイルドカードによるファイル指定時の ROM 内収録順序の固定
  Note 36-15: (VIB) VIB ライブラリの追加
  Note 36-16: (WBT) WFS サンプルモジュールの修正
  Note 36-17: (WBT) 関数リファレンスの修正
  Note 36-18: (WBT) 関数リファレンス概要追加
  Note 36-19: (WM) MP 通信中の子機の Null 応答に関する仕様変更
  Note 36-20: (WM) WMGameInfo 構造体の定義変更
  Note 36-21: (WM) WM_IsValidGameBeacon, WM_IsValidGameInfo 関数の追加
  Note 36-22: (WM) minPollBmpMode の不具合の修正
  Note 36-23: (WM) ドキュメントの更新
  Note 36-24: (その他) マクロの記述修正
  SDK 3.1 PRでの既知の問題点

■NITRO-SDK 3.0 正式版 (2006/01/16)
  Note 35-01: (CARD) 関数リファレンス概要追加
  Note 35-02: (DevEnv) packnlf ツールのリファレンスマニュアル追加
  Note 35-03: (DevEnv) ソースコードの書式統一
  Note 35-04: (MI) MI_CompressLZFast 関数, ntrcomp.exe の LZ 圧縮不具合修正
  Note 35-05: (OS) OS_ResetSystem 関数の不具合修正
  Note 35-06: (OS) 中国版起動画面の修正
  Note 35-07: (PRC) デモ用の図形辞書データの修正
  Note 35-08: (WM) サンプルデモのデバッグ文字列の表示修正
  Note 35-09: (WM) 内部の通信パラメータの補正
  SDK 3.0 正式版での既知の問題点

■NITRO-SDK 3.0 RC3 (2005/12/26)
  Note 34-01: (MATH) ビット演算関数の追加
  Note 34-02: (MB) MB_ReadSegment関数の省メモリ指定時の不具合の修正
  Note 34-03: (MB) 悪条件下でのMP通信効率の改善
  Note 34-04: (OS) DC_TouchRange関数のリファレンス修正
  Note 34-05: (OS) OS_CreateThread 関数の修正
  Note 34-06: (WBT) wbt-1 サンプルデモの修正
  Note 34-07: (WBT) ユーザコールバックの不具合修正
  Note 34-08: (WM) MP 通信パラメータの不具合修正
  Note 34-09: (WM) WH に関するパラメータ設定方法の変更
  Note 34-10: (WM) 通信切断時の内部動作の改善
  SDK 3.0 RC3での既知の問題点

■NITRO-SDK 3.0 RC2 (2005/12/05)
  Note 33-01: (CARD) バックアップ操作関数の不具合修正
  Note 33-02: (CTRDG) AGBカートリッジのアクセス許可関数の追加
  Note 33-03: (DevEnv) SDK バージョン比較用マクロの追加
  Note 33-04: (DevEnv) SDK_INLINE, SDK_DECL_INLINE の追加
  Note 33-05: (DevEnv) makebanner ツールの修正
  Note 33-06: (DevEnv) ntexconv の更新
  Note 33-07: (DevEnv) packnlf ツールの追加
  Note 33-08: (MB) MBP サンプルモジュールの修正
  Note 33-09: (MB) MB_FAKE_WORK_SIZEの定義を追加
  Note 33-10: (MB) 親機ビーコンのフラグに関する不具合修正
  Note 33-11: (MI)MI_CompressLZFast関数の追加
  Note 33-12: (OS) ARM7デバッグ出力自動化ビルドスイッチの追加
  Note 33-13: (OS) Ｖブランク待ち関数の定義変更
  Note 33-14: (OS) サンプルデモからの OS_InitPrintServer, OS_PrintServer 関数の削除
  Note 33-15: (OS) サンプルデモからの PXI_Init 関数の削除
  Note 33-16: (OS) サンプルデモの SVC_WaitVBlankIntr 関数の変更
  Note 33-17: (OS) 拡張メイン RAM アリーナの開始位置修正
  Note 33-18: (WBT) WFS サンプルモジュールの修正
  Note 33-19: (WBT) WFS 関連サンプルデモの修正
  Note 33-20: (WM) 2D_CharBg_3, Sub_CharBg_3 サンプルデモの更新
  Note 33-21: (WM) MP通信のタイミング設定関数の追加
  Note 33-22: (WM) MP通信の送信サイズ設定関数の追加
  Note 33-23: (WM) MP通信間隔の制御機能の追加
  Note 33-24: (WM) dataShare-Model サンプルデモの更新
  Note 33-25: (WM) dataShare-Model サンプルデモの表示修正
  Note 33-26: (WM) フレームあたりの最大MP通信回数の設定値の追加
  Note 33-27: (WM) 受信強度レベルの仕様変更
  Note 33-28: (WM) 送受信サイズの事前チェックを無効化するオプションの追加
  Note 33-29: (WM) 無線通信のイベントカウンタに関する注意
  SDK 3.0 RC2での既知の問題点

■NITRO-SDK 3.0 RC (2005/11/07)
  Note 32-01: (CARD) EEPROM デバイス操作の内部処理修正
  Note 32-02: (CARD) ROM アクセス後の抜け検出処理の追加
  Note 32-03: (CARD) 新規バックアップデバイスへの対応
  Note 32-04: (DevEnv) #pragma define_section のパラメータ修正
  Note 32-05: (DevEnv) ENV ライブラリ用リソースデータ変換ツールの追加
  Note 32-06: (DevEnv) NITRO-SDK パッケージ作成スクリプトの修正
  Note 32-07: (DevEnv) SDK パッケージのビルドに使用した CodeWarrior のバージョンの変更
  Note 32-08: (DevEnv) コンパイルターゲットに関するリファレンス追加
  Note 32-09: (ENV) ENV ライブラリのリファレンス追加
  Note 32-10: (ENV) ENV ライブラリの変更
  Note 32-11: (GX) G3BS_LoadMtx43 関数の修正
  Note 32-12: (GX) Sub_Double3D サンプルデモの再修正
  Note 32-13: (MATH) MATH_QSort 関数の不具合修正
  Note 32-14: (OS) ARM7 専用WRAMアリーナの HI アドレス計算の修正
  Note 32-15: (OS) OS_GetTotalOccupiedSize 関数の追加
  Note 32-16: (OS) OS_PutString 関数の修正
  Note 32-17: (OS) SDK_COMPILER_ASSERT の追加
  Note 32-18: (OS) Vブランク待ち関数の改良
  Note 32-19: (OS) キャッシュ関数の引数 const 化
  Note 32-20: (OS) スタック溢れチェック関数の修正
  Note 32-21: (OS) 引数データバッファ切り換えのサポート
  Note 32-22: (OS) 実時間とチック値の変換マクロの修正
  Note 32-23: (OS) 中国版起動画面の更新
  Note 32-24: (OS)　終了するスレッドを含むスレッドキュー操作の修正
  Note 32-25: (PRC) サンプルツール pdic2c.pl の修正
  Note 32-26: (RTC) RTC の曜日情報取得の変更
  Note 32-27: (SND) SND_CalcDecibel 関数に引数0を入れたとき適切な値を返さない問題を修正
  Note 32-28: (STD) STD ライブラリの追加
  Note 32-29: (WBT) GetBlock 要求通知の不具合修正
  Note 32-30: (WBT) WFS サンプルモジュールの修正
  Note 32-31: (WM) WM テストツールの更新
  Note 32-32: (WM) WM_SetLifeTime 関数のリファレンス記述の修正
  Note 32-33: (WM) mongoose コンポーネントの改良
  Note 32-34: (WM) port 受信コールバックに通知する情報の追加
  Note 32-35: (WM) port 受信コールバックの初期化時の通知を追加
  Note 32-36: (WM) テスト用 API の追加
  Note 32-37: (WM) 子機が WM_EndMP 関数を呼ぶとワイヤレス通信機能が停止する不具合の修正
  Note 32-38: (WM) 自ら切断した場合の切断通知の追加
  Note 32-39: (WM) 接続と切断に関する内部動作の再修正
  SDK 3.0 RCでの既知の問題点

■NITRO-SDK 3.0 PR4 (2005/09/08)
  Note 31-01: (CARD) CARD_CancelBackupAsync 関数の追加
  Note 31-02: (CARD) FRAM デバイス操作の内部処理修正 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-03: (CARD) エラーコード CARD_RESULT_NO_RESPONSE の追加
  Note 31-04: (DevEnv) lsf ファイルにおけるオーバーレイグループのサポート
  Note 31-05: (DevEnv) makelcf における特定のセクション名での不具合の修正
  Note 31-06: (DevEnv) makelcf の修正
  Note 31-07: (DevEnv) ツールコマンド loadrun, nitrorun の追加
  Note 31-08: (ENV) 環境リソースライブラリ libenv*.a の追加
  Note 31-09: (FS) FS_EndOverlay関数の修正 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-10: (FS) ドキュメントの修正 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-11: (FX) FX_FX64C_TO_F32 マクロの修正
  Note 31-12: (FX) FX_InvSqrt 関数の不具合修正 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-13: (MB) MB_GetMultiBootDownloadParameter 関数の追加 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-14: (NVRAM) NVRAM からデータを読み出す際のエラー判定に関する不具合の修正
  Note 31-15: (OS) ARM7 側のデバッグ出力関数のリファレンス追加 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-16: (OS) DTCM アリーナの上位アドレス不具合の修正
  Note 31-17: (OS) NitroStaticInit 関数のリファレンス追加 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-18: (OS) OSThread 関連の関数の引数 const 型の整理
  Note 31-19: (OS) OS_GetOpt 関数の追加
  Note 31-20: (SND) キャッシュ無効化処理の最適化 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-21: (WM) MP 通信時の切断検知処理の不具合修正 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-22: (WM) SSID マッチング長指定可能なスキャン種類の追加
  Note 31-23: (WM) インフラストラクチャモードにおけるスキャンの SSID マッチング長の修正
  Note 31-24: (WM) 子機接続に関する内部処理の修正 (NITRO-SDK 2.2 正式版 で公開済)
  Note 31-25: (WM) 接続失敗時の原因をより詳細にするインターフェースの追加
  SDK 3.0 PR4での既知の問題点

■NITRO-SDK 3.0 PR3 (2005/08/10)
  Note 30-01: (CARD) CARD_CheckPulledOut 関数のリファレンス修正 (NITRO-SDK 2.2 RC で公開済)
  Note 30-02: (CARD) CARD_IdentifyBackup 関数の引数制限 (NITRO-SDK 2.2 RC で公開済)
  Note 30-03: (MB) サンプルデモの修正 (NITRO-SDK 2.2 RC で公開済)
  Note 30-04: (OS) OS_SetThreadDestructorStack 関数の追加
  Note 30-05: (OS) OS_Sleep 関数で用いるアラームのキャンセル処理
  Note 30-06: (WM) 子機側の過負荷時の処理の変更
  Note 30-07: (WM) 切断時の内部動作の変更 (NITRO-SDK 2.2 正式版 で公開済)
  SDK 3.0 PR3での既知の問題点

■NITRO-SDK 3.0 PR2 (2005/08/04)
  Note 29-01: (DevEnv) ISD_NITRO_DEBUGGER のパス修正 (NITRO-SDK 2.2 RC で公開済)
  Note 29-02: (GX) Sub_Double3D サンプルデモの再修正 (NITRO-SDK 2.2 RC で公開済)
  Note 29-03: (GX) ディスプレイリストの状態取得関数の引数へ const 修飾子を追加 (NITRO-SDK 2.2 RC で公開済)
  Note 29-04: (OS) OS_GetLowEntropyData 関数の追加
  Note 29-05: (PM) LCD オフ状態からスリープモードに移行したあとの復帰処理の修正 (NITRO-SDK 2.2 RC で公開済)
  Note 29-06: (WM) WM_SetIndCallback 関数のコールバックへの通知の追加
  Note 29-07: (WM) WM_SetPowerSaveMode 関数の追加
  Note 29-08: (WM) ignoreFatalError 設定時の復帰不具合の修正 (NITRO-SDK 2.2 RC で公開済)
  Note 29-09: (WM) 子機側の受信処理の変更
  Note 29-10: (WVR) thumb ビルド版 ichneumon コンポーネントの不具合修正 (NITRO-SDK 2.2 RC で公開済)
  SDK 3.0 PR2での既知の問題点

■NITRO-SDK 3.0 PR (2005/07/22)
  Note 28-01: (Cht) ピクトキャッチ用デモの追加
  Note 28-02: (DevEnv) nitro.h のプリコンパイルヘッダ対応
  Note 28-03: (FS) オーバーレイ関数の動作変更 (NITRO-SDK 2.2 RC で公開済)
  Note 28-04: (GX) GX サンプルデモの修正
  Note 28-05: (MATH) MD5 関数の高速化 (NITRO-SDK 2.2 RC で公開済)
  Note 28-06: (OS) IRQ スタックのスタック溢れチェック機構の追加
  Note 28-07: (OS) OS_GetArgc 関数および OS_GetArgv 関数による引数のサポート
  Note 28-08: (OS) OS_KillThread 関数と OS_KillThreadWithPriority 関数の追加
  Note 28-09: (OS) スレッドデストラクタの実装
  Note 28-10: (OS) スレッド構造体へのユーザパラメータ追加
  Note 28-11: (OS) スレッド最大数の制限を撤廃
  SDK 3.0 PRでの既知の問題点

#### NITRO-SDK 3.0シリーズと NITRO-SDK 2.2シリーズは、NITRO-SDK 2.2 PR を基点として枝分かれしていて、並列的にバージョン管理しています。
ただし 2.2シリーズでの変更はすべて 3.0シリーズに含まれています。
2.2シリーズの詳細はこちら

■NITRO-SDK 2.2 PR (2005/07/15)
  Note 27-01: (CARD) CARD_CheckPulledOut 関数の追加
  Note 27-02: (CARD) 新規バックアップデバイスへの対応
  Note 27-03: (CTRDG) カートリッジ情報取得時のキャッシュ操作の修正
  Note 27-04: (DevEnv) bin2obj ツールの追加
  Note 27-05: (DevEnv) CYGWIN の cygdrive prefix が /cygdrive ではない場合のサポート
  Note 27-06: (DevEnv) LCF テンプレートの修正
  Note 27-07: (DevEnv) rsf の StackSize 指定の不具合修正
  Note 27-08: (DevEnv) TS_VERSION のデフォルト値の変更
  Note 27-09: (DevEnv) #include のサーチパスの変更
  Note 27-10: (FS) FS_CreateFileFromMemory 関数および FS_CreateFileFromRom 関数の追加
  Note 27-11: (FS) FS_End 関数の追加
  Note 27-12: (FS) FS_WaitAsync 関数の不具合修正
  Note 27-13: (FS) オーバーレイのアンロード時の不具合修正
  Note 27-14: (FX) 逆正接関数の不具合修正
  Note 27-15: (GX) Sub_Double3D サンプルデモの修正
  Note 27-16: (GX) ディスプレイリスト操作関数内でのASSERT不具合修正
  Note 27-17: (MATH) MATH_QSort 関数の不具合修正
  Note 27-18: (MATH) SHA-1 関数の高速化
  Note 27-19: (MATH) 高速フーリエ変換関数の追加
  Note 27-20: (MB) multiboot-wfs サンプルの追加
  Note 27-21: (MB) デバッグ用の拡張メモリ領域の解放
  Note 27-22: (MB) ユーザ定義拡張パラメータの追加
  Note 27-23: (MI) MI_CompressHuffman 関数および ntrcomo.exe のハフマン圧縮不具合修正
  Note 27-24: (OS) OS_Sleep 関数の内部動作修正
  Note 27-25: (OS) OS_TryLockMutex 関数不具合の修正
  Note 27-26: (OS) OS_YieldThread 関数の追加
  Note 27-27: (OS) 起動時初期化処理の内部修正
  Note 27-28: (OS) 中国版起動画面処理の拡張
  Note 27-29: (OS) データキャッシュのフラッシュ不具合の修正
  Note 27-30: (OS) 複数の OSMutex をロックする際の不具合修正
  Note 27-31: (OS) ヘッダファイルに関するリファレンス追加
  Note 27-32: (RTC) 日付・時刻と総経過秒の相互変換関数の追加
  Note 27-33: (RTC) 日付・時刻を変更する API への制限追加
  Note 27-34: (WBT) Wbt-fs サンプルデモの修正
  Note 27-35: (WBT) WBT サンプルデモの修正
  Note 27-36: (WM) Key Sharing 関数の仕様変更と廃止予定の明記
  Note 27-37: (WM) WM_StartScanEx 関数の内部動作の変更
  Note 27-38: (WM) WMTestTool.srl の更新
  Note 27-39: (WM) 子機が接続していない場合での MP 通信の抑止
  Note 27-40: (WM) 子機切断通知の不具合修正
  Note 27-41: (WM) フレームあたりの MP 通信回数制限の追加
  SDK 2.2 PRでの既知の問題点

■NITRO-SDK 2.1 正式版 (2005/05/09)
  Note 26-01: (CARD) カードアクセス用DMAチャンネルの正当性判定追加
  Note 26-02: (DevEnv) 浮動小数点ライブラリ指定オプションの追加
  Note 26-03: (FS) FINALROMバージョンのオーバーレイ関数の内部修正
  Note 26-04: (MB) サンプルデモの追加
  Note 26-05: (OS) 拡張言語コードの追加
  Note 26-06: (SND) インストのリリース無効化機能の追加
  Note 26-07: (WBT) サンプルデモの修正
  Note 26-08: (WM) サンプルデモの修正
  SDK 2.1 正式版での既知の問題点

■NITRO-SDK 2.1 RC (2005/04/21)
  Note 25-01: (CARD) CARD_Init関数で作成されるスレッドに関する記述の追加
  Note 25-02: (CTRDG) カートリッジデバイス抜け検出関数の追加
  Note 25-03: (CTRDG) カートリッジバスのロックと抜け検出処理に関するリファレンスの説明追加
  Note 25-04: (CTRDG) カートリッジ状態に関するリファレンスの記述修正
  Note 25-05: (DevEnv) メモリマップの変更(DTCMのアドレス変更)
  Note 25-06: (FS) 割り込みに関する正当性判定の強化
  Note 25-07: (GX) G3_FrustumW関数の修正
  Note 25-08: (MATH) クイックソート関数の追加
  Note 25-09: (MATH) checksum, CRC の計算関数の追加
  Note 25-10: (MIC) mic-2サンプルデモの修正
  Note 25-11: (MB) MB_Init関数のTGIDを自動生成するオプションの追加
  Note 25-12: (MB) 各種ワイヤレス駆動パラメータ設定関数の追加
  Note 25-13: (MB) MBP サンプルデモの修正
  Note 25-14: (OS) ランチャースレッドのスタックチェック処理修正
  Note 25-15: (OS) OS_Sleep関数の内部動作修正
  Note 25-16: (OS) キャッシュフラッシュ関数の内部動作の修正
  Note 25-17: (OS) サンプルデモの修正
  Note 25-18: (OS) 書式文字列関数のリファレンス訂正
  Note 25-19: (OS) 拡張言語コードの暫定対応
  Note 25-20: (SND) サウンドライブラリ配布の一元化
  Note 25-21: (SND) SND_PrepareSeq関数およびSND_StartPreparedSeq関数の追加
  Note 25-22: (WM) 内部動作の変更
  Note 25-23: (WM) TGIDを自動生成する関数の追加
  SDK 2.1 RCでの既知の問題点

■NITRO-SDK 2.1 PR (2005/04/07)
  Note 24-01: (CARD) CARDRomHeader 構造体の追加
  Note 24-02: (CARD) CARD_IdentifyBackup 関数の内部チェック追加
  Note 24-03: (CARD) ROMの種類を明示的に指定するサンプルデモの追加
  Note 24-04: (DevEnv) ワンタイムPROMビルドオプションのサポート
  Note 24-05: (DevEnv) SDKバージョンのフォーマット変更
  Note 24-06: (GX) G3_GetDLSize 関数の不具合修正
  Note 24-07: (MATH) メッセージダイジェスト値の計算関数の追加
  Note 24-08: (MB) MB_GetGameEntryBitmap 関数の追加
  Note 24-09: (OS) OS_ResetSystem 関数のカードロック内部処理修正
  Note 24-10: (OS) キャッシュフラッシュ関数の内部実装変更
  Note 24-11: (OS) サンプルデモの修正
  Note 24-12: (RTC) 日付書き込み関数の不具合修正
  Note 24-13: (Snd) サウンドドライバ情報取得関数追加
  Note 24-14: (Snd) SND_FlushCommand 関数のフラグ SND_COMMAND_IMMEDIATE 追加
  Note 24-15: (Snd) SNDInstType に SND_INST_NULL 追加
  Note 24-16: (WM) 「ワイヤレス通信ライブラリ解説」の更新
  Note 24-17: (WM) 切断タイミングによる不具合の修正
  Note 24-18: (WM) WM_StartScanEx関数の不具合修正
  Note 24-19: (WM) 切断処理に関する不具合の修正
  Note 24-20: (WM) DS ワイヤレスプレイで WEP Key を使用するデモの追加
  SDK 2.1 PRでの既知の問題点

■NITRO-SDK 2.0 正式版 (2005/03/11)
  Note 23-01: (CTRDG) カートリッジ状態に関するリファレンスへの記述追加
  Note 23-02: (DevEnv) ソースコードの書式統一
  Note 23-03: (DevEnv) ビルド済みDSプログラムのリファレンス追加
  Note 23-04: (DevEnv) 関数リファレンスでの引数範囲の明記
  Note 23-05: (DevEnv) 弱いシンボルの宣言用マクロ SDK_WEAK_SYMBOL を定義
  Note 23-06: (FS) 圧縮オーバーレイのロード時の不具合の修正
  Note 23-07: (MI) データ圧縮時のアラインメント調整オプションの追加
  Note 23-08: (PRC) 関数内部での正当性判定の修正
  Note 23-09: (PRC) 関数の返り値の型の変更
  Note 23-10: (WM) 切断タイミングによる不具合の修正
  Note 23-11: (WM) WM_StartMPEx 関数の minPollBmpMode を使用した場合の不具合修正
  Note 23-12: (WM) 通信内容が消えてしまう不具合の修正
  Note 23-13: (WM) port 通信用送信キューの段数の変更
  Note 23-14: (WM) WMPortSendCallback 構造体の変更
  Note 23-15: (WM) 状態チェックの修正と強化
  Note 23-16: (WM) WM_EndKeySharing 関数の返り値修正
  Note 23-17: (WM) WH サンプルデモの修正
  SDK 2.0 正式版での既知の問題点

■NITRO-SDK 2.0 RC5 (2005/02/25)
  Note 22-01: (ARM7) コンポーネントの追加と廃止
  Note 22-02: (CHT) サンプルデモの修正
  Note 22-03: (DevEnv) 厳格な警告オプションへ対応するソースコード修正
  Note 22-04: (FS) overlay-staticinit サンプルデモの追加
  Note 22-05: (FS) アーカイブのサスペンド状態に関する内部異常の修正
  Note 22-06: (FS) FS_LoadOverlayImage 関数の内部エラー判定修正
  Note 22-07: (GX) GX_GetOBJVRamModeBmp 関数の返り値の型訂正
  Note 22-08: (GX) GXBg23ControlAffine 構造体の無効なメンバの削除
  Note 22-09: (GX) G2_GetBG3Control* 関数, G2S_GetBG3Control 関数の不具合修正
  Note 22-10: (GX) VRAM割り当てを試行する関数群の追加
  Note 22-11: (MATH) code32.h による MATH_CountLeadingZeros 関数の inline への切り替えの不具合修正
  Note 22-12: (MB) DSダウンロードプレイ親機のビーコンへユーザデータを設定するインターフェイスの追加
  Note 22-13: (MI) 圧縮関数の追加
  Note 22-14: (MI) AGBカートリッジ用のROMアクセスサイクル設定関数の追加
  Note 22-15: (MI) 起動時の多重DMAの不具合への対処
  Note 22-16: (MIC) 自動サンプリングエンジンの最適化
  Note 22-17: (OS) 割り込み概要ページへのリンク追加
  Note 22-18: (OS) スレッドのスケジューリング制御関数の追加
  Note 22-19: (OS) キャッシュのロックダウン関数の不具合修正
  Note 22-20: (OS) ロックダウンされたキャッシュの解放関数の追加
  Note 22-21: (OS) OS_ResetSystem 関数でのリセット時キャッシュ不具合の修正
  Note 22-22: (OS) OS_GetITCMAddress 関数の追加
  Note 22-23: (PM) LCDオフ状態からスリープモードに移行したあとの復帰処理の変更
  Note 22-24: (SND) サウンドライブラリの更新
  Note 22-25: (WM) Sequential 通信におけるパケット複製の不具合修正
  Note 22-26: (WM) minPollBmpMode 時の Sequential 通信における制限事項の明記
  Note 22-27: (WM) WM_PortSendCallback 構造体 restBitmap メンバに関する不具合修正
  Note 22-28: (WM) WM_Reset 関数に関する不具合修正
  Note 22-29: (WM) WM_IsBssidEqual 関数, WM_CopyBssid 関数の動作修正と16bit版の追加
  Note 22-30: (WM) WM非同期関数のコールバックと途中通知の順番についての注意書きの追加
  Note 22-31: (WM) 再送時に完了コールバックが来なくなる不具合の修正
  Note 22-32: (WM) WH サンプルデモの不具合修正
  Note 22-33: (WM) WFS サンプルデモの不具合修正
  Note 22-34: (WM) 新規関数の追加
  Note 22-35: (WM) MP通信開始時の内部動作の改善
  Note 22-36: (WM) 親機開始時の内部動作の不具合修正
  Note 22-37: (WM) WM_SetMPData* 関数のコールバックに関する変更
  Note 22-38: (WM) 接続許容台数の上限付近での新規接続時の不具合修正
  Note 22-39: (WM) 解説ドキュメントの正式公開
  Note 22-40: (WVR) 無線ドライバ駆動制御ライブラリの追加
  SDK 2.0 RC5 での既知の問題点

■NITRO-SDK 2.0 RC4 (2005/01/14)
  Note 21-01: (CHT) ピクトチャット関連ライブラリの追加
  Note 21-02: (MATH) MATH カテゴリの新設
  Note 21-03: (MATH) 乱数用関数の追加
  Note 21-04: (MB) 擬似 DS ダウンロードプレイ子機の不具合修正
  Note 21-05: (MB) MBライブラリ終了時の内部スレッド不具合の修正
  Note 21-06: (MB) MBライブラリ終了時の内部動作修正
  Note 21-07: (MB) エントリー子機に対し随時データの先行配信するデモを追加
  Note 21-08: (WM) 無線ライブラリへの機能追加
  Note 21-09: (WM) WM非同期関数群へのより厳密な排他制御の追加
  Note 21-10: (WM) MP 通信のパワーマネージメント設定の修正
  Note 21-11: (WM) WFSサンプルの改善
  Note 21-12: (WM) 親機の使用するチャンネルを決定するデモの修正
  Note 21-13: (FS) ファイルシステムドキュメントの更新
  Note 21-14: (GX) 描画用レジスタのリード関数を追加
  Note 21-15: (GX) サブ2Dエンジン用ビットマップOBJのVRAM拡張フラグの定義を削除
  Note 21-16: (GX) データサイズによる転送方法の判別
  Note 21-17: (GX) GX_SetBankForBGEx使用時のASSERTの不具合修正
  Note 21-18: (GX) GX_ResetCapture関数を追加
  Note 21-19: (CARD,CTRDG) 強制停止処理の改良
  Note 21-20: (CARD) CARD_ReadRomID関数の廃止
  Note 21-21: (CARD) NITRO-CARDアクセス許可状態の設定関数の追加
  Note 21-22: (TP) TP_GetLatestRawPointInAuto関数の動作を修正
  Note 21-23: (TP) タッチパネルがLCDから受けるノイズへの対策を強化
  Note 21-24: (MIC) 自動サンプリング中にサンプリングレートを調整するAPIの追加
  Note 21-25: (OS) アプリケーション向けの割り込みチェックフラグの追加(再掲)
  Note 21-26: (OS) OS_DestroyThread() 関数の追加
  Note 21-27: (OS) OSデモ interrupt-key-1 の廃止と WaitIrq-2 の変更
  Note 21-28: (OS) OS_EnableMainExArena(), OS_DisableMainExArena() の追加
  Note 21-29: (OS) OS_DisableWriteBufferForProtectionRegion() の修正
  Note 21-30: (OS) ヒープ関数の追加と変更
  Note 21-31: (MI) 圧縮データのストリーミング展開
  Note 21-32: (MI) MI_SendGXCommandAsync*() の不具合修正
  Note 21-33: (MI) 多重DMAの不具合への対処
  Note 21-34: (PXI) PXI 初期化処理の変更
  Note 21-35: (DevEnv) makerom にクローンブート用のサイズチェックオプション追加
  Note 21-36: (DevEnv) ドキュメント形式の統一
  Note 21-37: (DEMO) tips/MyBuildMessage デモの追加
  Note 21-38: (TOOL) emuchildの出力ファイルを省サイズ化
  Note 21-39: (SND) サウンドライブラリの更新
  SDK 2.0 RC4 での既知の問題点

■NITRO-SDK 2.0 RC3 (2004/11/29)
  Note 20-01: (MB) 擬似DSダウンロードプレイ子機機能の追加
  Note 20-02: (MB) MB_GetParentSystemBufSize( ) 関数の不具合修正
  Note 20-03: (MB) MB_ReadSegment( ) 関数の機能拡張
  Note 20-04: (MB) MB_StartParentEx( ) / MB_EndEx( ) 関数の名称変更
  Note 20-05: (MB) MB_DisconnectChild( ) の追加
  Note 20-06: (MB) 親機受信バッファサイズ変更の廃止
  Note 20-07: (MB) クローンブートサンプルの追加
  Note 20-08: (MB) multiboot-Model 親機への再接続時のリトライ不具合の修正
  Note 20-09: (MB) DSダウンロードプレイに関するドキュメントを追加
  Note 20-10: (WM) ARM7 側無線ライブラリの修正
  Note 20-11: (WM) MP 通信のライフタイムの導入
  Note 20-12: (WM) 「ワイヤレス通信チュートリアル」の追加
  Note 20-13: (FS) FS_LoadOverlayImageAsync( ) 関数の追加
  Note 20-14: (FS) FS_RegisterOverlayToDebugger( ) 関数の廃止
  Note 20-15: (GX) GX_GetVCountEqVal( ) 関数の追加、および他の VCOUNT 一致割り込み関連 API の名称変更
  Note 20-16: (GX) GX_SetBankForBGEx( ) 関数の追加
  Note 20-17: (CARD) カード抜け後処理関数 CARD_TerminateForPulledOut() の変更
  Note 20-18: (MI) 差分フィルタの復元関数を追加
  Note 20-19: (MI) 起動時専用のメモリクリア処理関数の追加
  Note 20-20: (OS) VAlarmについての不具合修正
  Note 20-21: (OS) デバッグ関数の weak シンボル化
  Note 20-22: (SND) SND_InvalidateWaveData( ) で関係ない発音が止まる不具合を修正
  Note 20-23: (MIC) MIC_GetLastSamplingAddress( ) が正確なアドレスを返さない不具合の修正
  Note 20-24: (PRC) 識別子名の変更
  Note 20-25: (WM) WM_SetMPDataToPort*( ) の引数チェックの強化
  SDK 2.0 RC3 での既知の問題点

■NITRO-SDK 2.0 RC2 (2004/11/04)
  Note 19-01: (WM) WM_GetAllowedChannel( ) でのエラー発生時の返値の変更
  Note 19-02: (WM) WM_End ライブラリ終了関数の仕様を一部変更
  Note 19-03: (WM) WMDisconnectCallback 構造体の新設
  Note 19-04: (WM) WM_Reset( ) 関数の初期化動作の修正
  Note 19-05: (WM) データシェアリング終了時の処理の修正
  Note 19-06: (WM) データシェアリングにおけるデータサイズ上限変更
  Note 19-07: (MB) MBUserInfoのnameLengthが無効となる不具合を修正
  Note 19-08: (MB) MB_StartParentEx関数, MB_EndEx関数の追加
  Note 19-09: (MB) MB_UnregisterFile関数のリファレンスに注意事項を追加
  Note 19-10: (MB) チャンネル電波使用率を検出するデモを追加
  Note 19-11: (MB) multiboot デモにおける tgid 値の設定手法の変更
  Note 19-12: (MB) MB_End ライブラリ終了関数の仕様を一部変更
  Note 19-13: (WBT) wbt-fs サンプルデモの通信切断時エラー処理の修正
  Note 19-14: (WBT) wbt-fs サンプルデモの修正
  Note 19-15: (WBT) WBTライブラリの修正
  Note 19-16: (FS) FS_RegisterOverlayToDebugger関数の追加
  Note 19-17: (OS) Vカウントよるアラーム処理の変更
  Note 19-18: (OS) オーナー情報「お気に入りの色」取得関数の追加
  Note 19-19: (OS) 関数コスト計測プロファイラの修正
  Note 19-20: (OS) OS_SetTick() の修正
  Note 19-21: (OS) OS_ResetSystem() の修正
  Note 19-22: (OS) DTCM へのデータセクション転送処理の修正
  Note 19-23: (CARD) CARD_GetRomHeader 関数の追加
  Note 19-24: (CARD) CARDアクセス時の自動起動DMAチェック処理修正
  Note 19-25: (ARM7) ferret へのカードとカートリッジ抜き検出機能の追加
  Note 19-26: (PM) スリープ復帰時のLCD状態の修正
  Note 19-27: (MI) DMA 時のアドレスチェック処理の修正
  Note 19-28: (MI) MI_DmaFill*() の修正
  Note 19-29: (GX) G3X_IsLineBufferOverflow( ), G3X_ResetLineBufferOverflow( ) の改名
  Note 19-30: (GX) レジスタの定義誤りの修正
  Note 19-31: (GX) G3X_InitTableのテーブルクリア不具合の修正
  Note 19-32: (SND) サウンドライブラリの更新
  Note 19-33: (CTRDG) CTRDG_IsNumberID()、CTRDG_IsBitID() のリファレンス追加
  Note 19-34: (DevEnv) IPL GUI 版 mb_child, 無線接続チェック用ツール WMTestTool の収録
  SDK 2.0 RC2 での既知の問題点

■NITRO-SDK 2.0 RC1 (2004/10/07)
  Note 18-01: (WM) WM ライブラリの変更
  Note 18-02: (MB) mb_child.srl プログラムが最大文字数処理で停止する問題の修正
  Note 18-03: (MB) multiboot-Model デモのダウンロードシーケンス変更
  Note 18-04: (MB) mb_child.srl プログラムの表示文字を英語へ変更
  Note 18-05: (WBT) WBT_CancelCurrentCommand( ) 関数の追加
  Note 18-06: (DEMO) WM デモ ball の警告対処
  Note 18-07: (DEMO) multiboot デモのユーザ名処理の変更
  Note 18-08: (DevEnv) NITRO-SDK のバージョンの表示ツールの収録
  Note 18-09: (DevEnv) バナー表示ツールの最終版の収録
  Note 18-10: (DevEnv) lsf ファイルの常駐領域名称の記述とモジュール圧縮処理のリンク
  Note 18-11: (OS) メインメモリ用プロテクションリージョン設定の変更
  Note 18-12: (OS) リセット時のサウンド停止処理
  Note 18-13: (OS) OS_CreateThread( ) の修正
  Note 18-14: (OS) 関数トレースプロファイラの修正
  Note 18-15: (PM) LCD 切り替え関数 PM_SetLCDPower( ) の修正
  Note 18-16: (PM) スリープ時の残像を避ける修正
  Note 18-17: (PM) スリープ時の IRQ マスク復帰処理の修正
  Note 18-18: (PM) スリープ時のコールバック呼び出し処理の追加
  Note 18-19: (CARD) 複数回のカード初期化呼び出し処理の修正
  Note 18-20: (CTRDG) カートリッジ関数の追加
  Note 18-21: (RTC) RTC アラーム監視方式の変更
  Note 18-22: (RTC) 日付と曜日の整合性に関する修正
  Note 18-23: (GX) クリアデプスイメージ単体でのクリアイメージの使用を追加。
  SDK 2.0 RC1 での既知の問題点

■NITRO-SDK 2.0 FC (2004/09/30)
  Note 17-01: (WBT) 無線ブロック転送ライブラリの正式公開
  Note 17-02: (WM/TP) 無線処理によってタッチパネルのオートサンプリングが停止する不具合の修正
  Note 17-03: (WM) WMライブラリの変更
  Note 17-04: (DEMO) multiboot-Model デモの修正
  Note 17-05: (DevEnv) makebanner ツールの修正
  Note 17-06: (DevEnv) LIBSYSCALL 処理の修正、および libsyscall.a の格納位置の変更
  Note 17-07: (DevEnv) NITRO_COMPRESS におけるオーバーレイの圧縮処理修正
  Note 17-08: (DevEnv) バナーファイルのフォントセットの変更
  Note 17-09: (DevEnv) ROM スペックファイルにおけるバナーファイルの位置制限と対策
  Note 17-10: (GX)レジスタの定義不具合の修正
  Note 17-11: (MI) MI_SendGXCommandAsyncFast の修正
  Note 17-12: (MI) MI_SendGXCommand() の修正
  Note 17-13: (FS) FS_GetPathName()呼び出し時の不具合修正
  Note 17-14: (OS) OS_Init() で呼ばれる初期化関数の追加
  Note 17-15: (CARD) カード抜き検出処理の変更
  Note 17-16: (TP) validity条件の変更
  SDK 2.0 FC での既知の問題点
  SDK 2.0 FC での追加情報

■NITRO-SDK 2.0 PR7 (2004/09/21)
  Note 16-01: (WM) WMライブラリの変更
  Note 16-02: (FS) 圧縮されたオーバーレイのロード時の不具合修正
  Note 16-03: (CTRDG) カートリッジ抜き検出APIの作成
  Note 16-04: (CARD) カード抜き検出APIの作成
  Note 16-05: (GX) G3Cでのディスプレイリスト生成時の不具合修正
  Note 16-06: (OS) RTC 割り込みの処理
  Note 16-07: (MIC) 自動サンプリング開始関数のI/F変更
  Note 16-08: (SND) サウンドライブラリの更新
  Note 16-09: (DevEnv) バナーファイルのテストビューア生成ツールの収録
  Note 16-10: (DEMO) 最終 ROM 作成のデモの追加
  SDK 2.0 PR7 での既知の問題点

■NITRO-SDK 2.0 PR6 (2004/09/13)
  Note 15-01: (OS) 本体情報を取得する関数の追加
  Note 15-02: (OS) ソフトリセットの実装
  Note 15-03: (OS) メモリ割り当てシステムを破棄する OS_ClearAlloc() の追加
  Note 15-04: (OS) アラームセット時のエラー表示の変更
  Note 15-05: (MI) DMAレジスタに関する定義の追加
  Note 15-06: (WM) 無線コントロールライブラリの修正、機能追加
  Note 15-07: (WM) 無線強度のアイコンの収録
  Note 15-08: (WBT) ブロック転送ライブラリのテスト公開
  Note 15-09: (SND) サウンドライブラリの更新
  Note 15-10: (DevEnv) 圧縮された常駐モジュールへの対応
  Note 15-11: (DevEnv) make run による nitload の起動
  Note 15-12: (DevEnv) 各ハードウェアバージョンに対応する ferret コンポーネントの提供
  Note 15-13: (OS) OS_CheckHeap() の修正
  Note 15-14: (MI) ntrcomp.exe のランレングス圧縮時の不具合修正
  Note 15-15: (MI) DMA 処理の修正
  Note 15-16: (WM/SND) 無線とサウンド同時使用時の不具合対処
  Note 15-17: (MB) MB_GetSegmentLength 関数の返り値に関する不具合の修正
  Note 15-18: (MB) Multiboot サンプルの Debug 版における動作不具合の修正
  Note 15-19: (CARD) バックアップアクセス関数の初回呼び出し時の問題の修正
  Note 15-20: (PRC) CharacterRecognition-1 デモのスタック溢れの修正
  Note 15-21: (OS) OS_TPrintf(簡易版 printf) の追加
  SDK 2.0 PR6 での既知の問題点

■NITRO-SDK 2.0 PR5 (2004/08/30)
  Note 14-01: (WM) [重要] 無線コントロールライブラリの修正、機能追加
  Note 14-02: (MI) [重要] 自動起動するDMAに関するハードウェア制限への対処
  Note 14-03: (DevEnv) [重要] ハードウェアのバージョンに対応したコンポーネント・ライブラリの収録
  Note 14-04: (DevEnv) mongoose の TEG 環境でのサポート停止
  Note 14-05: (DevEnv) makerom の Reject 指定の初期値に `"."`(ドット) で始まるファイルを追加
  Note 14-06: (DevEnv) SDK をビルドする CodeWarrior のバージョンを 0.6.1 に変更
  Note 14-07: (DevEnv) .itcm/.dtcm セクションのコードが ITCM/DTCM へ配置されない問題の修正
  Note 14-08: (GX) モザイクサイズ設定での不具合の修正
  Note 14-09: (GX) gx.h の GX_InitEx() などの定義における不具合の修正
  Note 14-10: (CARD) FLASH デバイスのサポート
  Note 14-11: (CARD) 割り込み禁止状態での CARD_Init() 呼び出し時の問題の修正
  Note 14-12: (CARD) CARD_IdentifyBackup() 呼び出し時の問題の修正
  Note 14-13: (MI) メインメモリ表示起動 DMA などにおけるメインメモリへのアクセス優先権
  Note 14-14: (OS) Tick 値取得関数の修正
  Note 14-15: (OS) VBlank 割り込み時における割り込みチェックフラグの自動設定処理を停止
  Note 14-16: (OS) TS環境におけるDTCMの位置変更
  Note 14-17: (OS) OS_Init() 内部からの PM_Init() の呼び出し
  Note 14-18: (OS) OS_GetConsoleType() による正確な動作環境判定
  Note 14-19: (TP) タッチパネル接触判定時の誤認識
  Note 14-20: (PM) スリープからの復帰要因に RTC アラームをサポート
  Note 14-21: (RTC) RTC の 24 時制固定による運用
  Note 14-22: (DEMO) アプリケーション起動時に A ボタンが押されている場合の対処
  Note 14-23: (Doc) ntrcomp などの補助ツールのリファレンスマニュアルの追加
  SDK 2.0 PR5 での既知の問題点

■NITRO-SDK 2.0 PR4 (2004/08/11)
  Note 13-01: (WM) 無線コントロールライブラリの修正、機能追加
  Note 13-02: (MB) マルチブートライブラリの追加
  Note 13-03: (PM) PMライブラリの追加
  Note 13-04: (MIC/TP) マイクのサンプリングとタッチパネルとの並行動作
  Note 13-05: (MIC) IS-NITRO-DEBUGGER でのマイクサポートおよび前処理の追加
  Note 13-06: (MIC) mic2wav ツールの修正
  Note 13-07: (GX) LCDパワー制御関数の変更
  Note 13-08: (GX) G3*_MultTransMtx33の追加
  Note 13-09: (GX) GXの使用するDMA番号を設定する関数の追加
  Note 13-10: (GX) GX_PowerGeometry()／GX_Power3D() の不具合修正
  Note 13-11: (GX) GX_SetGraphicsMode()のレジスタへの書き込み制限変更
  Note 13-12: (CARD) NITRO-CARDアクセスAPIの正式公開
  Note 13-13: (FS) FS_ReadDir関数で得られるファイルIDがずれる不具合の修正
  Note 13-14: (DevEnv) makelcf/makerom の変数展開時における不具合と変数定義ファイルサポート
  Note 13-15: (DevEnv) autoload モジュールの情報をオーバーレイネームファイルへ出力
  Note 13-16: (DevEnv) mingw 環境での C++ ライブラリのリネームに失敗していた点の修正
  Note 13-17: (OS) Vブランクカウンタの設置
  Note 13-18: (PAD) PAD_SetIrq(), PAD_ClearIrq() の廃止
  Note 13-19: (MI) 同期DMA後の DMAビジーウェイトの追加
  Note 13-20: (SND) サウンドライブラリの更新
  Note 13-21: (Demo) GX デモ 3D_BoxTest の修正
  Note 13-22: (Demo) GX デモ LinesOver の修正
  Note 13-23: (Demo) SPI デモ spiMonkey の出力画面の修正
  Note 13-24: (DevEnv) char 型の符号設定の変更
  SDK 2.0 PR4 での既知の問題点

■NITRO-SDK 2.0 PR3plus (2004/07/29)
  Note 12-01: (DOC) WM ライブラリリファレンスマニュアルの加筆、修正
  SDK 2.0 PR3plus での既知の問題点

■NITRO-SDK 2.0 PR3 (2004/07/27) [緊急リリース版]
  Note 11-01: (OS) システム共有領域の定義ミスの修正
  Note 11-02: (DevEnv) 構造体のパディング警告設定の修正
  SDK 2.0 PR3 での既知の問題点

■NITRO-SDK 2.0 PR2 (2004/07/26)
  Note 10-01: (WM) 無線コントロールライブラリの追加
  Note 10-02: (DevEnv) メモリマップの変更 (DTCMのアドレス変更) (TSのみ)
  Note 10-03: (DevEnv) DTCMの違いを吸収するパラメータの追加
  Note 10-04: (DevEnv) C++ 例外テーブルのリンクでエラー発生していたことの対処
  Note 10-05: (SVC) SVCライブラリ更新とリファレンスの追加
  Note 10-06: (OS) ロック関数の整備(1) ロックIDの型統一
  Note 10-07: (OS) ロック関数の整備(2) アンロック関数の名称変更
  Note 10-08: (MI) MI_GetCartridgeRomCycle* 関数の名称の変更 (再掲)
  SDK 2.0 PR2 での既知の問題点

■NITRO-SDK 2.0 PR1 (2004/07/20)
  Note 9-01: (DevEnv) TS 版のライブラリサポートとデフォルトターゲット変更
  Note 9-02: (DevEnv) ROM バイナリファイルの拡張子の変更
  Note 9-03: (DevEnv) オーバーレイ手法の変更
  Note 9-04: (DevEnv) LCFファイル記述の変更
  Note 9-05: (DevEnv) makeルールの変更
  Note 9-06: (DevEnv) nef,srl ファイルの生成規則の修正
  Note 9-07: (DevEnv) コンパイルスイッチ NITRO_CODEGEN_ALL の追加
  Note 9-08: (SND) サウンドライブラリの更新
  Note 9-09: (FS) FS_RegisterArchiveName関数の不具合修正
  Note 9-10: (FS) async デモのスレッド内デバッグ表示の不具合の修正
  Note 9-11: (FS) FS_WaitAsync 関数が未完了で制御を返す不具合の修正
  Note 9-12: (GX) GX_SetBankForTex(), GX_LoadTexEx(), GX_LoadTex() の修正
  Note 9-13: (GX) GXデモ中のクリアカラーα値のデフォルト変更
  Note 9-14: (FX) FX_AtanIdx(), FX_Atan2Idx() の追加
  Note 9-15: (FX) ジオメトリエンジンへ値を送らない行列計算APIの追加
  Note 9-16: (OS) NITRO_MEMSIZE=8M 時のアリーナ設定の修正
  Note 9-17: (OS) alloc, free などメモリ割り当て関連関数のスレッドセーフ化
  Note 9-18: (OS) OS_JoinThread(), OS_IsThreadTerminated() の作成
  Note 9-19: (OS) DMAのアドレスチェックASSERTの修正
  Note 9-20: (OS) OS_SetProtectionRegion() の動作変更
  Note 9-21: (OS) 関数コスト計測プロファイラの変更
  Note 9-22: (MI) 圧縮データの圧縮タイプ・展開後サイズ取得関数の追加
  Note 9-23: (MI) MI_GetCartridgeRomCycle* 関数の名称の変更
  Note 9-24: (MI) MI_CpuCopyFast() のASSERTの修正
  Note 9-25: (MI) DMA パラメータ設定と停止処理の変更
  Note 9-26: (CP) 除算器の除数セット方法の変更
  Note 9-27: (MIC) サンプリング種別の拡張
  Note 9-28: (PRC) 図形認識API の追加(テスト公開)
  Note 9-29: (TP) タッチパネルの取得データ精度の変更
  SDK 2.0 PR1 での既知の問題点

■NITRO-SDK 1.2 (2004/6/16)
  Note 8-01: (CP) IRQハンドラ内でのCPコンテキスト切り替え処理の追加
  Note 8-02: (FX) 定数定義の修正と追加
  Note 8-03: (OS) アイドルスレッド処理の修正
  Note 8-04: (SPI) spiMonkeyデモの修正
  Note 8-05: (DevEnv) makerom/makelcf 変数値読み込みバグの修正
  SDK 1.2 での既知の問題点

■NITRO-SDK 1.2 RC1 (2004/6/10)
  Note 7-01: (GX) メイン LCD とサブ LCD 出力先切り替えの設定フラグの変更
  Note 7-02: (MIC) マイクAPIの追加
  Note 7-03: (TP) 最大サンプリングレートの変更
  Note 7-04: (TP) タッチパネルコマンド送信直後に割り込みが発生した場合の不具合修正
  Note 7-05: (TP) オートサンプリングインターフェイスの変更
  Note 7-06: (TP) TP_SetCallback()の引数の型変更
  Note 7-07: (FS) async デモの全読み込み完了サイズ表示の不具合の修正
  Note 7-08: (FS) オーバーレイのデータキャッシュが更新されない不具合の修正
  Note 7-09: (FS) FS_SetDefaultDMA()関数の不具合の修正
  Note 7-10: (OS) IRQハンドラの仕様変更
  Note 7-11: (OS) デフォルトの最大スレッド数の変更
  Note 7-12: (OS) OS_GetNumberOfThread() の作成
  Note 7-13: (OS) アリーナ設定の変更
  Note 7-14: (OS) プロテクションリージョン関数の変更
  Note 7-15: (OS) Profile機能のOSライブラリからの分割
  Note 7-16: (OS) 関数コールトレース表示の修正
  Note 7-17: (OS) OS_GetConsoleType() の作成
  Note 7-18: (OS) OS_Printf()等デバッグ用関数のFINALROMビルドでの扱い変更
  Note 7-19: (OS) TCM関数名の変更
  Note 7-20: (OS) OSデモ構成の変更
  Note 7-21: (GX) GXデモの修正
  Note 7-22: (GX) Ensataバージョンアップによるデモの制限解除
  Note 7-23: (GX) 拡張パレット用VRAM設定名称の変更
  Note 7-24: (GX) GX_Initの複数呼び出しの対策
  Note 7-25: (GX) GX_GetObj_* の作成
  Note 7-26: (FX) FX32_CONST()マクロの作成
  Note 7-27: (MI) MI_UncompressRL8() の修正
  Note 7-28: (DevEnv) makerom, makelcf の解説の追加
  Note 7-29: (DevEnv) 本体 NVRAM に保持されるデータの書き換えツール
  Note 7-30: (DevEnv) FINALROM 版のビルドで -g オプション追加
  Note 7-31: (DevEnv) makerom で誤まったエラーメッセージが出力される不具合の修正
  SDK 1.2 RC1 での既知の問題点

■NITRO-SDK 1.2 PR1 (2004/5/24)
  Note 6-01: (DevEnv) CodeWarrior NITRO V0.5 への対応
  Note 6-02: (DevEnv) ROM バイナリ作成ツールを elftobin から makerom へ変更
  Note 6-03: (DevEnv) lcf の ALIGN(32) 追加
  Note 6-04: (DevEnv) 実行バイナリ生成規則の依存ファイルの追加手段のサポート
  Note 6-05: (DevEnv) CodeWarrior以外のコンパイラからのヘッダインクルードへの対応
  Note 6-06: (DevEnv) IDE デモサンプルの配布終了
  Note 6-07: (ARM7) 統合コンポーネントferretの追加
  Note 6-08: (FS) ファイルシステム、オーバーレイのサポート
  Note 6-09: (TP) タッチパネル関数のサポート
  Note 6-10: (CP) 除算器、平方根演算器の割り込み、マルチスレッドへの対応
  Note 6-11: (GX) MtxFx22 用の API 作成
  Note 6-12: (GX) TEG ボードにおけるコマンド FIFO の動作不良の対策
  Note 6-13: (GX) GX_SetBankForARM7() への GX_VRAM_ARM7_128_C の追加
  Note 6-14: (GX) BG拡張パレットへの GX_VRAM_BGEXTPLTT_01_F の指定時の不具合の修正
  Note 6-15: (GX) ジオメトリエンジンの処理落ちと同期を取るデモの追加
  Note 6-16: (GX) scaleW を調整できる透視変換行列関連 API 作成
  Note 6-17: (GX) GX_Init 関数によるコマンド FIFO リセット処理の変更
  Note 6-18: (GX) フォグモードの制御の不具合の修正
  Note 6-19: (OS)スレッドシステムの扱いの変更
  Note 6-20: (OS) OS_SPrintf() の追加
  Note 6-21: (OS) TEG ボードメモリバイトアクセス対策
  Note 6-22: (OS) OS_WaitIrq()、OS_WaitAnyIrq() の作成
  Note 6-23: (OS) ATTRIBUTE_ALIGN(x) の作成
  Note 6-24: (OS) IDLEスレッドスタックの拡張
  Note 6-25: (OS) OS_GetLockID(), OS_ReleaseLockID() の作成
  Note 6-26: (OS) OS_SetSwitchThreadCallback() の作成
  Note 6-27: (OS) OS_ExitThread() 時の Mutex 開放
  Note 6-28: (OS) ARM7 コンポーネントのループ処理の変更
  Note 6-29: (OS) OS_SetProtectionRegion7(), OS_SetProtectionRegion7 の修正
  Note 6-30: (OS) システムクロックの定義
  Note 6-31: (OS) OS_Panic() の停止動作変更
  Note 6-32: (OS) OSのデモ構成の変更
  Note 6-33: (OS) IRQハンドラの変更
  Note 6-34: (OS) 関数コールトレース、関数コスト計測機構の作成
  Note 6-35: (OS) アプリケーション向けの割り込みチェックフラグの追加
  Note 6-36: (SND) サウンドライブラリの更新
  SDK 1.2 PR1 での既知の問題点

■NITRO-SDK 1.0 (2004/4/5)
  Note 5-01: CodeWarrior NITRO V0.4 への対応
  Note 5-02: GX_HBlankOBJProc() / GXS_HBlankOBJProc() の修正
  Note 5-03: G2_SetOBJAttr() / G2S_SetOBJAttr() の修正
  Note 5-04: GX_DisableBankFor*() の修正
  Note 5-05: NitroPostLinker.bat の修正
  Note 5-06: fs/file-1 デモのリンク不具合の修正
  Note 5-07: makerom(β版)の修正
  Note 5-08: makelcf(β版) 用 lcf テンプレートの修正
  SDK 1.0 での既知の問題点

■NITRO-SDK 1.0 RC1 (2004/3/30)
  Note 4-01: G3_Frustum() の不具合修正
  Note 4-02: GX_LoadTex() での転送エラー修正
  Note 4-03: GX_RegionCheck_Obj() の修正
  Note 4-04: GX3_GetCommandFifoStatus() の修正
  Note 4-05: DTCMの位置変更のサポート
  Note 4-06: codereset.h の修正
  Note 4-07: 例外ベクタ設定不具合
  Note 4-08: 周期アラームのハンドル内自己キャンセル追加
  Note 4-09: OS_IsThreadAvailable() の追加
  Note 4-10: 定数やアドレス代入アセンブラ表記の統一
  Note 4-11: G2_SetBG3ControlDCBmp() 不具合の修正
  Note 4-12: 固定小数定義の追加
  Note 4-13: マクロ FX_MUL32x64C とインライン関数 FX_Mul32x64c の丸め処理の統一
  SDK 1.0 RC1 での既知の問題点

■NITRO-SDK 1.0 PR2 (2004/3/17)
  Note 3-01: PXI ライブラリの追加
  Note 3-02: グラフィックサンプルの追加
  Note 3-03: MIのファイル展開API に対応する圧縮ツールの追加
  Note 3-04: NITRO-SDK と AGBSDK 両環境の共存についてのドキュメント追加
  Note 3-05: OBJ と BG のバンク EFG の設定
  Note 3-06: G3X_InitMtxStack() の問題の修正
  Note 3-07: man のジオメトリコマンドサイクルの一覧のリンク追加
  Note 3-08: OS_Sleep() の作成
  Note 3-09: スレッド切り替えに関する不具合修正
  Note 3-10: OS_ReadMessage() の作成
  Note 3-11: IRQチェックフラグセットに関する修正
  Note 3-12: 複数のVカウントアラームに関する修正
  Note 3-13: チックの不具合修正
  Note 3-14: 時間とチックの変換マクロ追加
  Note 3-15: タイマー割り込みコールバックからの復帰不具合の修正
  Note 3-16: OS_DisableInterrupts() 等におけるFIQの扱いの変更
  Note 3-17: デバッガの例外ハンドラ呼び出しに関する仕様変更
  Note 3-18: ARM7 のレジスタ名の変更
  Note 3-19: レジスタ表の修正
  Note 3-20: マニュアルの修正
  Note 3-21: IRQテーブルの修正
  SDK 1.0 PR2での既知の問題点

■NITRO-SDK 1.0 PR1 (2004/2/27)
  Note 2-01: NITRO-SDK への改称
  Note 2-02: ソースのプロセッサ別の分類
  Note 2-03: サブ LCD 対応 API およびデモの追加
  Note 2-04: ELF ファイルの拡張子の変更
  Note 2-05: サンプルコードのディレクトリの移動および自動テスト用コードの追加
  Note 2-06: SDK の Thumb コードコンパイル
  Note 2-07: 関数単位で ARM コード/ Thumb コード生成の切替手段の提供
  Note 2-08: SDK ライブラリでの C++ サポート
  Note 2-09: X,Y ボタンのサポート
  Note 2-10: make 関連ファイルに関する修正
  Note 2-11: マクロの複文表記の修正
  Note 2-12: ヘッダファイル内のインラインアセンブラ関数を C ソースへ移動
  Note 2-13: マクロ CODEGEN_PROC を NITRO_PROC へ名称変更
  Note 2-14: elftobin での結合用 ARM7 バイナリの変更
  Note 2-15: IRQ スタックサイズ設定機構の追加
  Note 2-16: 例外発生時のコンテキスト表示機構の追加
  Note 2-17: MI_Dma*Async() での NULL コールバック設定時の不具合修正
  Note 2-18: TCM 領域にかかる DMA の警告の追加
  Note 2-19: 起動時のメモリクリア処理の追加
  Note 2-20: キャッシュ関連の関数の引数のアドレス丸め
  Note 2-21: OS_CreateThread() の引数追加、スレッド優先制御の自由度向上
  Note 2-22: スレッドのスタック溢れのチェック機構のサポート
  Note 2-23: アラームおよび 64bit 計時カウンタの実装
  Note 2-24: V カウントアラームの実装
  Note 2-25: MI_DmaSend*() , MI_CpuSend*() の追加
  Note 2-26: OS_StartTimer*() のアサート判定の修正
  Note 2-27: CPUメモリ関数の追加
  Note 2-28: TEG ボードの VBLANK 中のメインバスへのアクセスに伴うハードバグ対策
  Note 2-29: Light パラメータの調整
  Note 2-30: 動的 DL 作成関数群のオーバーフローチェックの実装
  Note 2-31: G3_Ortho() のバグ修正
  Note 2-32: G3_EndMakeDL() が正しいサイズを返さないバグの修正
  Note 2-33: G2_SetBG*Control256x16Pltt() の引数の追加
  Note 2-34: G3CS_LoadTexMtxEnv(), G3CS_LoadTexMtxTexCoord() の不具合修正
  Note 2-35: 追加された半透明テクスチャの API サポート
  Note 2-36: VecFx16 型と関連 API のサポート
  Note 2-37: DEMO ライブラリのヘッダファイルに C のリンケージ指定追加
  SDK 1.0 での既知の問題点

■2004年1月20日 irisSDK snapshot patch1 (2004/2/4)
  Note 1-01: 3D 関連の test コードの実行速度が遅いことの修正
  Note 1-02: VEC Mag のオーバーフロー対応
  Note 1-03: MTX_Concat43() の修正
  Note 1-04: G2_SetBGxControl() 系の関数の定義修正
  Note 1-05: MTX_Inverse43() の平行移動計算の修正
  Note 1-06: GX_SetOBJVRamModeBmp() の定義修正
  Note 1-07: バイトアクセス対策版ライブラリへの対応
  Note 1-08: G2_SetBG3Priority() の定義修正
  Note 1-09: マクロ GX_FX16PAIR の定義修正
  Note 1-10: パッケージ収録のライブラリファイルの IS_IRIS_EMULATOR 対応
  Note 1-11: ARM7 版の libstubsisd.a ファイルの追加収録
  Note 1-12: システム予約領域のサイズの定義修正
  Note 1-13: GX サンプルプログラムで G3_LightVector() 設定のコマンド位置の修正
  Note 1-14: MI_DmaCopy16Async() でコールバックが呼ばれない不具合の修正
  snapshot 20040120+Path1 の既知の問題点

## ■ NITRO-SDK Version 4.1 正式版

(2007/07/10)

### Note 48-01: (CARD) ROM 転送関数の内部修正

CARD_ReadRom 関数内部の転送処理を若干修正しました。
動作仕様に変更はありません。

### Note 48-02: (DevEnv) C++ コンストラクタや StaticInitializer の AUTOLOAD 対応

C++ コンストラクタや Static Initializer を Autoload セクションに配置するとリンク処理に失敗してしまっていました。
ですから lcf template ファイルを修正し、C++ コンストラクタや Static Initializer に対して Autoload 処理が出来るように修正しました。

### Note 48-03: (DevEnv) 拡張メモリへの Autoload 適用時のアリーナ先頭アドレスの修正

デバッグ用拡張メモリへ Autoload 処理を行うとき OS_GetArenaLo 関数に引数 OS_ARENA_MAINEX を与えた際の値が正しく設定されていませんでした。
これを修正するため、拡張メモリ領域への Autoload を行なうための専用のセクションとして MAINEX という名のセクションを設定し、拡張メモリへ転送したいオブジェクトをこのセクション中で列挙できるように修正しました。
例: 拡張メモリに OBJS_MAINEX を配置する場合の lsf 記述
Autoload MAINEX
{
Address　　　0x02400000
Object　　　　$(OBJS_MAINEX)　　(.text)
Object　　　　$(OBJS_MAINEX)　　(.data)
Object　　　　$(OBJS_MAINEX)　　(.bss)
}
拡張メモリ領域への Overlay 処理においては修正点はありません。

### SDK 4.1 正式版での既知の問題点

ありません。

## ■ NITRO-SDK Version 4.1 RC

(2007/06/15)

### Note 47-01: (CARD) キャッシュ無効化処理切り替え用関数の追加

Note 46-02 で追加したはずの関数が、実際は追加されていませんでしたので、これを追加しました。

### Note 47-02: (MI) アロケータ構造体の追加

メモリ確保およびメモリ解放の標準的な関数プロトタイプとして、MIAllocator 構造体とその操作関数群を公開しました。

### Note 47-03: (PM) LCD off 期間の調整

Note 44-09 の修正をより正確なものに修正しました。

### Note 47-04: (TOOL) makerom.exe の -M オプションの動作不良の修正

makerom.exe において -M オプションで指定された変数定義リストファイル内に記述した変数の定義を正しい値に展開する動作に問題があり、展開後の変数の値の末尾に改行コードが常に付加されるようになっていました。
これを修正し、改行コードを取り除くようにしました。

### Note 47-05: (WFS) WFS ライブラリの正式公開

Note 46-21でテスト公開とされていたWFS ライブラリの関数リファレンスが用意され、 正式公開となりました。

### Note 47-06: (WM) WM_IsExistAllowedChannel 関数の不具合修正

使用すべきチャンネルが存在するかどうかに関わらず、常に TRUE を返してしまう不具合があり、これを正しい値を返すように修正しました。

### SDK 4.1 RCでの既知の問題点

ありません。

## ■ NITRO-SDK Version 4.1 PR

(2007/05/18)

### Note 46-01: (CARD) CARD_UnlockBackup 関数の修正

バックアップデバイスの非同期処理を実行中に CARD_UnlockBackup 関数が呼び出された場合はライブラリ内部で強制的に完了を待つよう修正し、この点について関数リファレンスに説明を追記しました。

### Note 46-02: (CARD) キャッシュ無効化処理切り替え用関数の追加

ROM アクセスの DMA 転送に伴うキャッシュ無効化処理について従来は転送サイズに関わらず部分的な無効化を行っていましたが、ある程度のサイズ以上になるとキャッシュ全体を無効化したほうが効率が良くなるため、この処理方式を切り替えるサイズ閾値を自由に設定できる CARD_SetCacheFlushThreshold 関数を追加しました。

### Note 46-03: (CARD) マイクサンプリング中にカードを抜いた際の不具合修正

マイクのサンプリング中にカードが抜かれるとバックライトが OFF になったりシャットダウンしてしまうことがあるという不具合があり、これを修正しました。

### Note 46-04: (CARD) 新規バックアップデバイスへの対応

CARD ライブラリが 16Mb-FLASH バックアップデバイスに対応し、CARD_BACKUP_TYPE_FLASH_16MBITS を CARDBackupType 列挙型に追加しました。
関連して、リファレンスとサンプルデモも更新しました。

### Note 46-05: (CTRDG) CTRDG_GetPhiClock 関数の追加

Note 38-03 で 追加したはずの CTRDG_GetPhiClock 関数が、実際は追加されていませんでしたので、これを追加しました。

### Note 46-06: (DevEnv) ビルド変数 MAKELCF_FORMAT の定義変更および説明文の追加

ビルド変数 MAKELCF_FORMAT の定義を変更し、アプリケーション側のMakefile などにおいて独自の設定値があればそちらを優先するようにしました。
また、$NitroSDK/docs/SDKRules/Rule-Defines.html に ビルド変数 MAKELCF_FORMAT や MAKELCF_FLAGS などの説明を追加しました。

### Note 46-07: (FS) FS_LoadOverlay 関数の修正

FS_LoadOverlay 関数のリファレンスにサンプルのコード例を1点追加しました。

### Note 46-08: (GX) GX_SetVCount 関数の変更

GX_SetVCount 関数を以下のような方法で使用すると LCD に悪影響を及ぼす危険性があるため、そのような使用ができないよう関数内に制限を加えました。

- V カウントを進める。
- 1フレームに2回以上呼ぶ。

### Note 46-09: (GX) Sub_Double3D サンプルデモの修正

2画面3D を使用し、2画面に別々のフォグを設定している際に負荷の高い処理を行うとフォグの設定が上画面と下画面でずれてしまうという不具合があり、$NitroSDK/build/demos/gx/UnitTours/Sub_Double3D サンプルデモにフォグの設定とその対処コードを追加しました。

### Note 46-10: (MB) DS ダウンロードプレイ子機デバッグ用プログラムの更新

デバッガ環境で起動した際の実行制御が可能になるよう $NitroSDK/bin/ARM9-TS/ROM/mb_child.srl を更新しました。

### Note 46-11: (MB) MB_FakeSetCompareGGIDCallback 関数の追加

擬似マルチブート子機から複数の GGID を検索したい場合など、ビーコン判定方法をコールバックとして任意に指定できるよう MB_FakeSetCompareGGIDCallback 関数を追加しました。

### Note 46-12: (MI) MI_SetMainMemoryPriority 関数のリファレンス修正

MI_SetMainMemoryPriority 関数のリファレンスに注意書きを追記しました。

### Note 46-13: (MI) デバイスアクセス用ユーティリティ機能の追加

ROM などのデバイスを制御するユーティリティとして MIDevice 構造体と MICache 構造体を新設し、それらを操作する関数群を追加しました。

### Note 46-14: (MIC) MICAutoParam 構造体のリファレンスマニュアルの説明追記

MICAutoParam 構造体のリファレンスにバッファループ使用時の注意を追記しました。

### Note 46-15: (MIC) mic-2 サンプルデモの修正

mic-2 サンプルデモの実行結果を WAV ファイルに保存する sampling.bat スクリプトの記述内容が古いものであったため、loadrun.exe ツールを使用して正常に動作するよう修正しました。

### Note 46-16: (MTX) 行列関数に関する整理

以下の行列関数の内部実装を整理し、関数実体を GX ライブラリから MTX ライブラリへ移動しました。
関数仕様に変更はありません。

- MTX_LookAt
- MTX_Frustum(W)
- MTX_Perspective(W)
- MTX_Ortho(W)
- G3_LookAt
- G3_Frustum(W)
- G3_Perspective(W)
- G3_Ortho(W)

### Note 46-17: (OS) OS_ResetSystem 関数の修正

OS_ResetSystem 関数を呼び出しているスレッドのスタックがリセット時に ROM をロードする領域に存在する場合、そのスタックが破壊されてしまうという不具合があり、これを修正しました。
なおメインスレッドのスタックは DTCM 上にあるためスタックの位置を変更せずにメインスレッドから OS_ResetSystem 関数を呼び出している場合はこの不具合は発生しません。

### Note 46-18: (STD) 書式文字列関数の追加

以下の書式文字列出力関数群を追加しました。

- STD_TSPrintf
- STD_TVSPrintf
- STD_TSNPrintf
- STD_TVSNPrintf

これらは OS ライブラリに用意されている同名の関数と同じ仕様です。
従来の OS 関数の実体は互換性のためそのまま残りますが、内部では単に STD 関数を呼び出すよう変更されています。

### Note 46-19: (TOOL) makelcf SPECFILE の SearchSymbol 文の処理の不具合修正

makelcf SPECFILE の SearchSymbol 文において、複数のパラメータを指定すると makelcf コマンドが不正な LCF を出力する不具合がありました。
makelcf コマンドおよび標準の LCF テンプレートを修正し、複数のパラメータ記述に対応しました。

### Note 46-20: (TOOL) makerom の 2Gbit ROM 正式サポート

Note 39-18 で仮対応されていた 2Gbit ROM が正式対応となりました。

### Note 46-21: (WFS) WFS ライブラリのテスト公開

MP 通信を使用して親機から子機へファイルシステムを提供する WFS ライブラリをテスト公開しました。
これは従来 $NitroSDK/build/demos/wirelss_shared/wfs に収録されていたサンプルモジュールをライブラリ化したものです。
現在、テスト公開のため以下の既知の問題があります。

- 関数リファレンスが収録されていません。
- 従来のサンプルモジュールのコードはそのまま残されており、今回用意された WFS ライブラリを使用するように変更されていません。

### Note 46-22: (WM) WM_ERRCODE_OVER_MAX_ENTRY の発生条件に関する説明追記

WM_ERRCODE_OVER_MAX_ENTRY の発生条件に関する説明を以下のファイルに追記しました。

- $NitroSDK/docs/TechnicalNotes/AboutWirelessManager.pdf
- WM_StartConnect, WM_StartConnectEx 関数のリファレンスマニュアル

### Note 46-23: (WM) WM_StartMPEx 関数での設定値の影響を一時的なものに変更

これまで、WM_StartMPEx 関数で設定した ignoreFatalErrorMode などの設定値は WM_EndMP 関数で MP モードを抜けても保持されており、次に WM_StartMP 関数を呼び出すと、前回の設定が引き継がれていました。
このため、MB_EndToIdle 関数を使用しつつ、WM_StartMP 関数で引き続き MP 通信を開始した場合、MB ライブラリが内部的に設定している設定値である ignoreFatalErrorMode が TRUE となっていました。
そこで、この問題が発生しないよう、WM_StartMPEx 関数の引数で設定する MP の各種設定値は、次の WM_StartMP 関数の呼び出し時に引き継がないように変更しました。
WM_StartMP 関数の呼び出し時のデフォルトの設定値を変更したい場合は、WM_SetMPParameter 関数で明示的に設定値を変更するようにしてください。
なお、これらの MP の各種設定値は WM_Initialize 関数や WM_Enable 関数を呼び出した時点で初期化されます。

### Note 46-24: (WM) WM_StartMPEx 関数のオプション処理の変更

WM_StartMPEx 関数において、mpFreq が連続転送モードを示す 0 であった場合は、fixFreqMode の指定を無視するように変更しました。

### Note 46-25: (WM) Wii との MP 通信における不具合修正

Wii が MP 親機である場合に電波環境によらず MP ライフタイム切れで通信が切断されてしまうことがあり、これを修正しました。

### Note 46-26: (WM) wmPadRead-child デモの追加

Wii のネットワーク機能に関する開発キットである RevoEX に収録されている mpdldemo/mpdlntr2rvl デモが配信する子機プログラム wmPadRead-child を追加しました。

### SDK 4.1 PRでの既知の問題点

ありません。

## ■ NITRO-SDK Version 4.0 正式版

(2007/02/15)

### Note 45-01: (DevEnv) ソースコードの書式統一

ライブラリおよびサンプルデモのソースコード全体で、インデントや改行に関する構文上の書式を統一しました。

### Note 45-02: (その他) アイコンデータの更新

$NitroSDK/data 以下の picto chat 及び wireless 関連のアイコンを更新しました。

### SDK 4.0 正式版での既知の問題点

ありません。

## ■ NITRO-SDK Version 4.0 RC

(2007/01/22)

### Note 44-01: (ENV) ENV ライブラリの修正

ENV_STRING(X), ENV_BINARY(X) において必要なキャスト処理が行われていなかったため、これを修正しました。
また、ライブラリの関数内に不必要なデバッグ出力がありましたので、これを修正しました。

### Note 44-02: (FX) FX_AsinIdx 関数および FX_AcosIdx 関数の追加

逆正弦、逆余弦を求める関数として FX_AsinIdx 関数および FX_AcosIdx 関数を追加しました。

### Note 44-03: (GX) GXBg23Control256x16Affine 構造体の追加

GXBg23Control256x16Pltt 構造体から必要のない reserved 領域を削除した新しい構造体 GXBg23Control256x16Affine を追加しました。
この修正に伴い、G2*_GetBG2Control256x16Pltt、G2*_SetBG2Control256x16Pltt に変わる関数として、G2*_GetBG2Control256x16Affine、G2*_SetBG2Control256x16Affine 関数を追加しました。

### Note 44-04: (GX) GX_SetVCount 関数のリファレンス修正

GX_SetVCount 関数のリファレンスに注意書きを追記し、それに伴って $NitroSDK/build/demos/gx/UnitTours/VCount デモを削除しました。

### Note 44-05: (MB) MB_End 関数の不具合修正

MB_Init 関数でライブラリを初期化した後に MB_StartParent 関数などを呼び出さずそのまま MB_End 関数を呼び出した場合にライブラリ内部で強制停止してしまう不具合があり、この問題を修正しました。

### Note 44-06: (MB) mb_child_simple.srl プログラムの修正

DS ダウンロードプレイの子機プログラムとして mb_child_simple.srl を使用した際に再起動後のプログラムが本体実機と異なる挙動をする場合があり、この不具合を修正しました。

### Note 44-07: (OS) IRQ ハンドラの修正

IRQ ハンドラ内でスレッドの切り替えが発生した際に、新しく実行状態になるスレッドのレジスタの１つが保存されているコンテキストから正しく戻されない不具合がありました。これを修正しました。

### Note 44-08: (OS) 拡張言語対応アプリケーション作成に関するドキュメントを追加

$NitroSDK/docs/TechnicalNotes/AboutExtendedLanguage.pdf に拡張言語対応アプリケーションの作成に関するドキュメントを追加しました。

### Note 44-09: (PM) LCD off 期間の調整

LCD の off 期間が稀に仕様上不正な値(100ms 以下)になってしまうことがあり、これを修正しました。

### Note 44-10: (TOOL) makebanner のリファレンスマニュアルの説明追加

makebanner のリファレンスマニュアルに中国、韓国向けアプリケーションのための説明を追加しました。

### Note 44-11: (TOOL) makelcf のデフォルト IRQ スタックサイズ変更

makelcf ツールで StackSize パラメータを省略した際のデフォルト IRQ スタックサイズを、従来の 1024 バイトから 2048 バイトへ変更しました。

### SDK 4.0 RCでの既知の問題点

ありません。

## ■ NITRO-SDK Version 4.0 PR

(2006/11/27)

### Note 43-01: (CARD) DMA 転送中にカードを抜くと画像が乱れる不具合の修正

DMA 転送中にカードを抜くと画像が乱れる場合がありましたのでこれを修正しました。

### Note 43-02: (CARD) カードの抜け検出方法に関する不具合修正

今まではカード抜け検出は意図せず、すべてをカード割り込みによってチェックしていましたが、これからは ROM ヘッダの「カード割り込みによる抜け検出禁止フラグ」をみてカード割り込みによってチェックするのか、カードの ROM-ID を見てチェックするのかを判断してカード抜けを検出するように変更しました。
また、今回の不具合は「カード割り込みによる抜け検出禁止フラグ」を意図的に立てた場合のみ発生していました。

### Note 43-03: (CP) divider.h の修正

プリコンパイルヘッダを使用せずに $NitroSDK/include/nitro/cp/divider.h をインクルードした場合、インクルード順によってコンパイルエラーが発生することがありましたので、これを修正しました。

### Note 43-04: (DevEnv) NITRO-SDK パッケージのビルドに使用する CodeWarrior のバージョン変更

NITRO-SDK パッケージのビルドに使用する CodeWarrior のバージョンを 2.0SP1 に変更しました。

### Note 43-05: (DevEnv) enum を常に int サイズに変更

IDE の言語設定において Enums Always Int の項目にチェックを入れずにコンパイルした場合、enum を int 型と異なるサイズになり、構造体などのサイズが変わってしまう可能性があるため enum が常に int サイズで定義されるように変更しました。

### Note 43-06: (GX) G3*_Vtx10 関数のリファレンス修正

G3*_Vtx10 関数のリファレンスにおいて「説明」の記述に誤りがありましたので、これを修正しました。

### Note 43-07: (MB) ダウンロード中に蓋を閉じカードを抜いた際の不具合修正

MB_ReadSegment 関数をバッファサイズに MB_SEGMENT_BUFFER_MIN を指定し DS ダウンロードプレイを実行している最中に本体の蓋が閉じられカードが抜かれると MB ライブラリの中で強制停止してしまうという不具合があり、この問題を修正しました。

### Note 43-08: (MB) MB_FakeSetVerboseScanCallback 関数の追加

MB_FakeSetVerboseScanCallback 関数が追加され、MB_FakeStartScan 関数を使用してマルチブート親機のビーコンをスキャンする際に、受信したすべての生のビーコンを通知可能になりました。
この関数を使用することで、マルチブートではない親機のビーコンを同時に取得することが可能となります。

### Note 43-09: (OS) OSOwnerInfo 構造体、OS_GetOwnerInfo 関数の変更

OSOwnerInfo 構造体のメンバ nickName, comment について、終端コード用に 2byte ずつ領域を確保するようにしました。
また OS_GetOwnerInfo 関数において、終端コードを入れるよう修正しました。

### Note 43-10: (OS) OS_Init 関数の V カウント調整

OS_Init 関数実行後常に V カウント値が一定になるようにウェイト処理を追加しました。

### Note 43-11: (OS) OS_TPrintfEx, OS_TVPrintfEx, OS_VSNPrintfEx 関数の追加

OS_VSNPrintf 関数にバイト列出力機能を追加した OS_VSNPrintfEx 関数及びそれを呼び出す OS_TPrintfEx関数、OS_TVPrintfEx 関数を追加しました。

### Note 43-12: (OS) 拡張言語コードの韓国語対応

拡張言語コードとして韓国語を追加しました。
また、韓国版アプリを作成するサンプルとして $NitroSDK/build/demos/os/forKorea-1 を追加しました。

### Note 43-13: (PM) ストリーム再生中のカード抜け発生時に、電源が OFF されない不具合の修正

Note 36-13 の修正によって、ストリーム再生中にカードが抜けた場合に、本体が閉じられている状態でも電源が OFF されないことがあるという不具合があり、これを修正しました。

### Note 43-14: (SND) SND_FlushCommand 関数のスレッドセーフ化

SND_FlushCommand 関数がスレッドセーフになっていなかった問題がありましたが、これを修正しました。

### Note 43-15: (STD) STD_CopyLString, STD_CopyLStringZeroFill 関数の修正

STD_CopyLString 関数および STD_CopyLStringZeroFill 関数の返す値が正しくない不具合がありましたので、これを修正しました。

### Note 43-16: (STD) Scanf 関数の文字クラス対応

STD_TSScanf 関数などの文字列走査関数群の対応書式として文字クラスを追加しました。

### Note 43-17: (TOOL) bash の仕様変更への対応

bash の仕様変更にともない、$NitroSDK/tools/bin 以下の bash スクリプトの改行コードを CRLF から LF に変更しました。

### Note 43-18: (TOOL) makerom のリファレンスマニュアルの記述修正

Reject 文の設定パラメータの有効範囲についての記述を追加しました。

### Note 43-19: (WM) サンプルデモの修正

$NitroSDK/build/demos/wireless_shared 以下のサンプルライブラリ wh に以下の修正を加えました。

- WH_Initialize 関数を2回以上繰り返して呼び出せる不具合があり、これを修正しました。
- wh を使用する場合に WM_SetIndCallback 関数でコールバックを指定すると wh の指定するコールバックとどちらが設定されるか不定である不具合がありました。
  これに対応するため、WH_SetIndCallback 関数を追加しました。

また $NitroSDK/build/demos/wm/wireless-all、$NitroSDK/build/demos/mb/multiboot-Model のサンプルデモにおいて、マルチブート子機が親機に再接続にいく直前に、別のダウンロード子機がマルチブート親機に接続にいってしまうと、TGID が異なる場合でもわずかな期間だけは接続中とみなされ、遅れてきた正式な子機がそれで追い出されてしまうことがありましたので、何度か再接続を試みるようにすることで、これを修正しました。

### SDK 4.0 PRでの既知の問題点

ありません。

## ■ NITRO-SDK Version 3.2 正式版

(2006/08/28)

### Note 42-01: (CARD) CARD_GetRomHeader 関数のリファレンス修正

製品実機以外の環境において CARD_GetRomHeader 関数が正しい情報を取得できないという記述を関数リファレンスに追記しました。

### Note 42-02: (GX) AntiAlias サンプルデモの修正

$NitroSDK/build/demos/gx/UnitTours/AntiAlias サンプルデモにおいてアンチエイリアス ON/OFF の表示が、初期状態のみ誤った表示をしてしまっているという不具合がありましたので、これを修正しました。

### Note 42-03: (OS) 関数コスト計測におけるバッファ溢れチェックの追加

関数コストを計測する際に使用するバッファが一杯まで使用されたかを調べるために、OS_CheckFunctionCostBuffer 関数, OS_CheckStatisticsBuffer 関数を追加しました。

### Note 42-04: (PM) ワイヤレス通信中のカード抜け発生時における不具合修正

ワイヤレス通信中でカード抜け発生時にごくまれにバックライトが OFF になってしまう場合があり、これを修正しました。

### Note 42-05: (WM) サンプルデモの修正

$NitroSDK/build/demo/wireless_shared の各サンプルライブラリに以下の修正を加えました。

- サンプルライブラリWFSにおいて親子でファイルシステムのみを共有する場合に、親機のファイル数と子機のオーバーレイ数によっては不正なファイルテーブルを生成するという不具合があり、これを修正しました。
- サンプルライブラリWHにおいて子機側がMP通信開始処理中に不意に切断された場合などに、 内部で暗黙にリセット処理が実行されてしまうためエラー内容を確認できないという問題があり、これを修正しました。

### SDK 3.2 正式版での既知の問題点

ありません。

## ■ NITRO-SDK Version 3.2 RC2

(2006/08/17)

### Note 41-01: (CARD) ワイヤレス通信中のカード抜け発生時に電源が OFF されない不具合の修正

ワイヤレス通信を実行中に本体が閉じられている状態でカード抜けが発生すると電源が正しく OFF されない場合があり、この不具合を修正しました。

### Note 41-02: (CP) CP_RestoreContext 関数内でのウェイトの追加

割り込み処理内で CP_RestoreContext 関数を使用して除算器の状態を復元した際に、割り込み処理の完了までに除算器の状態復元が完了しない場合がありました。
この不具合を修正する為に、CP_RestoreContext 関数内に必要なウェイト処理を追加しました。

### Note 41-03: (CP) 割り込み内での除算器の使用に関する注意の追加

これまで割り込み内での CP の使用についての注意事項が CP_SetDiv 関数, CP_SetSqrt 関数, CP_RestoreContext 関数のリファレンス内にしか記述されていませんでしたので、CP の概要ページに他の CP 関連のリファレンスに割り込み内での使用についての注意とサンプルコードを追加しました。
また、除算器を内部で使用している関数のリファレンスすべてからこの注意事項へのリンクを追加しました。

### Note 41-04: (CTRDG) カートリッジの活線挿抜に関する不具合修正

電源投入時以外にソフトリセット後にもカートリッジの認識を行っていたため、カートリッジが挿入されていない状態で電源を入れた後カートリッジを挿入してソフトリセットするとそのカートリッジを認識してしまうという不具合があり、これを修正しました。

### Note 41-05: (OS) OS_SleepThreadDirect 関数の追加

指定したスレッドを直接休止状態に遷移させることができる OS_SleepThreadDirect 関数を追加しました。

### Note 41-06: (OS) スレッド切り替え処理の内部修正

OS_RescheduleThread 関数によるスレッド切り替え処理が割り込みを禁止した状態で実行されるよう修正しました。

### Note 41-07: (OS) 起動時の Vカウント調整

プログラム起動時、常に Vカウント値の初期値が一定になるようにウェイト処理を追加しました。

### Note 41-08: (PRC) 除算器に関するスレッドセーフ化

PRC の SuperFine アルゴリズムで、除算器を割り込み禁止にせずに使用している部分がありましたので、これを修正しました。

### Note 41-09: (STD) 文字コード変換関数の仕様変更

実際に格納された変換後の文字数と同様に、実際の変換された変換元の文字数も取得できるよう関数仕様を変更しました。

### Note 41-10: (WBT) WBT_CMD_REQ_GET_BLOCK_DONE 通知の不具合修正

WBT_RegisterBlock 関数に NULL バッファを指定して WBT_CMD_PREPARE_SEND_DATA 通知を利用する場合に、完了時の WBT_CMD_REQ_GET_BLOCK_DONE 通知が発生しないという不具合があり、これを修正しました。

### Note 41-11: (WBT) サンプルデモの修正

$NitroSDK/build/demos/wbt/wbt-1 サンプルデモにおいて切断と接続を繰り返して2回以上同じモードを選択した場合に接続状況を正常に管理できなくなるという不具合があり、これを修正しました。

### Note 41-12: (WM) WM_SetWEPKey/Ex 関数の修正

WM_SetWEPKey/Ex 関数において、wepMode が WM_WEPMODE_NO の場合に wepkey に NULL を入れると正常に動作しない不具合がありましたので、これを修正しました。

### Note 41-13: (WM) wepMode のリセット処理の修正

状態が親機から子機に遷移する場合などに wepMode がリセットされないことがありましたので、これを修正しました。

### Note 41-14: (WM) wepMode 設定に関する不具合の修正

接続を試みた親機の wepMode が子機側に設定される不具合がありましたが、子機側で呼ばれた WM_SetWEPKey/Ex 関数の値を反映されるように修正しました。

### Note 41-15: (WM) サンプルデモの修正

$NitroSDK/build/demo/wireless_shared 以下のサンプルライブラリ wh に以下の修正を加えました。

- 与えた MAC アドレスの親を探して自動的に接続する WH_ChildConnectAuto 関数が、正常にキャンセルできないという不具合があり、これを修正しました。
- Note 39-23 の変更が不完全であったため、これを修正しました。

### SDK 3.2 RC2での既知の問題点

ありません。

## ■ NITRO-SDK Version 3.2 RC

(2006/07/25)

### Note 40-01: (CARD) カード抜け発生時に電源が OFF されないという不具合修正

本体が閉じられている状態でカード抜けが発生した場合でも、電源 OFF されないことがありました。
この不具合を修正しました。

### Note 40-02: (DevEnv) テンプレートファイルによる ITCM/DTCM 使用サイズ判定処理の不備

lcf テンプレートファイルによる ITCM/DTCM の使用領域のオーバーフローチェックにおいて、ITCM/DTCM 上にオーバーレイ領域を設定し、オーバーレイにより使用領域が多重化しているにも関わらず、多重化していないとみなして使用領域を計算していました。
このため領域に余裕があるにも関わらずエラーと判定されるケースがありました。
現状では lcf テンプレート上でオーバーレイ動作を加味した ITCM/DTCM のサイズのチェック処理をうまく実装できないため、使用領域のチェックにおいてはオーバーレイ領域を計算対象外としています。
このため ITCM/DTCM 上のオーバーレイ領域のサイズの管理はアプリケーション作成される方が注意する必要があります。
具体的にはダミー変数を ITCM/DTCM 領域の最後に置き、その変数のアドレスが領域をはみ出ていないかをチェックします。

### Note 40-03: (MATH) MATHCompareFunc のリファレンス修正

MATHCompareFunc のリファレンスにおいて、「返り値」の記述が実際の動作とは逆の説明になっていましたので修正しました。

### Note 40-04: (MATH) MATH_QSortStackSize 関数の変更

Note 39-05 の変更に伴って MATH_QSortStackSize 関数が 0 以下を返さないように変更しました。

### Note 40-05: (MB) multiboot-PowerSave サンプルの修正

$NitroSDK/build/demos/mb/multiboot-PowerSave サンプルの中で、実際には MB_SetPowerSaveMode 関数を呼び出していませんでしたので、これを修正しました。

### Note 40-06: (MB) ライフタイム初期値の変更

MB ライブラリ内部のワイヤレス制御に使用するライフタイムのデフォルト値を、WM ライブラリと同じ設定になるよう変更しました。

### Note 40-07: (STD) 文字コード変換関数の修正

文字コード変換関数に以下の修正を行いました。

- 内部の文字変換テーブルに誤りがあったので修正しました。
- 変換後のサイズのみを取得したり部分文字列を変換したりできるよう、 関数仕様を一部変更しました。

### Note 40-08: (VIB) VIB ライブラリの修正

VIB ライブラリに以下のような変更を加えました。

- VIB_StartPulse 関数で不正なパルスパラメータを与えられないようチェック処理を追加
- ライブラリ内の排他制御の改良に伴った、パルス制御の精度向上

### Note 40-09: (WM) サンプルデモの修正

$NitroSDK/build/demo/wireless_shared/wh の WH サンプルモジュールに WH_SetSsid 関数を追加しました。

### Note 40-10: (WM) 通信終了時の新規接続禁止

WM_EndParent および WM_Reset 関数で親機を終了する場合に、終了処理での子機切断の直後に新規の子機が接続してくる場合がありましたが、この場合に接続してきた子機を自動的に切断するように変更しました。
この際には子機側に WM_DISCONNECT_REASON_NO_ENTRY という切断要因が通知されます。

### SDK 3.2 RCでの既知の問題点

ありません。

## ■ NITRO-SDK Version 3.2 PR

(2006/07/07)

### Note 39-01: (CARD) 抜け検出処理の修正

プログラム起動直後のわずかなタイミングでカードが抜けた場合に ARM7 側でのカード抜け自動検出が正しく発生しないことがあり、これを修正しました。

### Note 39-02: (CTRDG) AGB バックアップアクセス関数のリファレンス修正

AGB バックアップアクセス関数のリファレンスに IS-NITRO-DEBUGGER 1.66 以前のバージョンでは AGB バックアップデバイスに正常にアクセスできない旨を追記しました。

### Note 39-03: (CTRDG) ドキュメントの修正

以下の DS 用 AGB カートリッジバックアップアクセス解説ドキュメントにおいていくつかの誤記を修正しました。
$NitroSDK/docs/TechnicalNotes/AboutAGBBackupforDS.pdf

### Note 39-04: (DevEnv) make システムの共通定義ファイルにおいて古い CodeWarrior のサポートを停止

make システムにおいて使用される共通定義ファイル commondefs.cctype.CW において CodeWarrior for NINTENDO DS の Version 1.0.2 以前の古いバージョンのもののサポートを停止しました。
これより Version 1.2 以降のコンパイラがサポート対象となります。

### Note 39-05: (MATH) MATH_QSort 関数の修正

ソートするデータの個数を 0 か 1 にした場合、正常に動作しない不具合があり、これを修正しました。

### Note 39-06: (MI) LZ77圧縮時のオーバーアクセス不具合の修正

MI_CompressLZ関数およびMI_CompressLZFast関数での圧縮の際、 圧縮後のデータが圧縮前よりも大きくなる場合圧縮に失敗しますが、 この時に、圧縮先として用意されたバッファに対して1byteの オーバーアクセスが発生する事がありました。
この不具合は修正されました。

### Note 39-07: (MI) エンディアン変換関数の 8bit 版を追加

エンディアン変換の関数に 8bit 版を追加しました。
これらはソースコードの視認性を統一するために用意され、実際には何の変換も行いません。

### Note 39-08: (OS) OS_InitException 関数の修正

例外ハンドラが設定される条件に誤りがあり、loadrun でプログラムを実行した場合にユーザ指定の例外ハンドラが呼ばれなくなる不具合がありました。
これを正しい条件に修正をしました。

### Note 39-09: (OS) 関数コスト計測の修正

関数コスト計測に関して、__PROFILE_ENTRY 関数と __PROFILE_EXIT 関数で関数入出記録を保存するときに割り込みがかかって別のコスト計測の記録を取るという状況下で、正確なコスト計測が出来なくなる場合がありましたので、os_functioncost.c の該当箇所を割り込み禁止にしてこの不具合を回避しました。

### Note 39-10: (PM) LCD OFF 時にカードが抜けた場合、電源 OFF されないという不具合の修正

Note 36-13 の修正の際、PM_ForceToPowerOffAsync 関数が割り込み禁止中に呼ぶことができないという問題があったため、LCD OFF 時にカードが抜けた場合に、本体が閉じられている状態でも電源 OFF されないという不具合が発生していました。
これを修正しました。

### Note 39-11: (PM) PM_GoSleepMode 関数のリファレンス修正

PM_GoSleepMode 関数のリファレンスにおいて、ガイドラインを考慮しない説明の記述があったためこれを修正しました。

### Note 39-12: (PM) スリープモード後の RTC アラーム割り込み不具合の修正

復帰要因に RTC アラームを含めずにスリープモードに移行するとスリープからの復帰後にそれ以降の RTC アラーム割り込みが効かなくなることがありました。
この不具合を修正しました。

### Note 39-13: (STD) STD_CopyLString 関数のリファレンス修正

STD_CopyLString 関数のリファレンスに誤りがありましたのでこれを修正しました。

### Note 39-14: (STD) STD_CopyLString 関数の仕様変更と STD_CopyLStringZeroFill 関数の追加

STD_CopyLString 関数が 一般的な strlcpy 関数とは違った仕様で実装されていたため、strlcpy 関数と同じ動作となるように変更を行いました。
この修正に伴い、関数の返り値がコピー先のポインタを示す char 型のポインタからコピー元の文字列長を返す int 型の値へ変更されました。
また、strlcpy 関数とは異なる仕様で実装されていた旧 STD_CopyLString 関数を、返り値を STD_CopyLString 関数と同じくコピー元の文字列長を返す int 型の値に変更して、STD_CopyLStringZeroFill 関数として追加しました。
この2つの関数の違いとしては、STD_CopyLStringZeroFill 関数はコピーサイズがコピー元より大きかった場合、差分の箇所を NULL で埋めるという処理になっている点になります。

### Note 39-15: (STD) ShiftJIS <-> Unicode 変換関数の追加

STD ライブラリに ShiftJIS と Unicode の文字列の変換を行う関数を追加しました。
また、使用方法を示すデモを、$NitroSDK/build/demos/std/unicode-1 に追加しました。

### Note 39-16: (TOOL) CodeWarrior 2.x 用のオーバーレイ関連の新機能への対応

CodeWarrior 2.x 以降において、リンク処理を行なうときに、シンボルの検索対象となるオーバーレイグループを指定することができるようになりました。
この機能をサポートするために lsf ファイルの書式を拡張し、SearchSymbol コマンドをサポートしました。
またこれに合わせて、makelcf コマンド、そして lcf テンプレートファイルもそれぞれ修正しました。
詳しくは makelcf のマニュアルをご参照ください。
この変更を以て、CodeWarrior2.0 に正式対応しました。

### Note 39-17: (TOOL) compstatic ツールのリファレンス修正

compstatic ツールのリファレンスにおいて -f オプションに関する記述を追記しました。

### Note 39-18: (TOOL) makerom の新仕様の 1Gbit/2Gbit ROM サポート

新仕様の 1Gbit/2Gbit ROM のサポートのために ROM フォーマットが一部変更され、1Gbit 以上のサイズの ROM イメージにおいて最上位の一定サイズの領域がシステム予約となりました。
NITRO-SDK 3.2 PR 以降では、この新仕様に対応した ROMフォーマットでの出力が makerom のデフォルト設定となっています。
NITRO-SDK 3.2 PR 以前の古いフォーマットで ROM イメージを出力したい場合は makerom のオプションに -V1 を追加してください。

### Note 39-19: (TOOL) 有効な ROM パラメータの組み合わせの判定処理の追加

makerom ツールの動作を指定するための rsf ファイルにおいて RomSize と RomSpeedType の設定の組み合わせが実際に ROM 化可能であるかどうかを判定するための処理を追加しました。
RomSpeedType が MROM の場合は RomSize が 512Mbit 以下である必要があります。
また RomSpeedType が 1TROM である場合は RomSize が 128Mbit 以上でなければなりません。

### Note 39-20: (WM) WFS サンプルデモの修正

WM サンプルデモに以下の修正を加えました。

- $NitroSDK/build/demos/wireless_shared/wfs の WFS サンプルモジュールで WFS_Init 関数の初期化処理が終わる前に WFS_Start 関数を呼び出してしまうと WFS の内部状態が異常になる問題があり、これを修正しました。
  親子ともワイヤレスが IDLE ステートの状態で初期化関数を呼び出してこの関数から返った後に接続を開始していれば、この問題は起こりません。

### Note 39-21: (WM) WM_EndDataSharing 関数の変更

Note 39-23 の変更に伴って、WM_EndDataSharing 関数内のステートチェックを削除しました。

### Note 39-22: (WM) Wii との通信におけるリンクレベル値の調整

Wii がMP親機である場合に WM_GetLinkLevel 関数で取得できるリンクレベル値を調整しました。

### Note 39-23: (WM) サンプルデモの修正

$NitroSDK/build/demo/wireless_shared 以下のサンプルライブラリ wh, wc では WM_EndDataSharing 関数を呼び出していなかったため wc, wh の各 Reset 関数内に WM_EndDataSharing 関数を呼び出す処理を追加しました。

### Note 39-24: (WM) 初期化・終了関数の不具合修正

WM_Init 関数を実行中に別スレッドや割り込みハンドラから WM ライブラリの任意の関数を呼び出すと、初期化処理が完了していないにも関わらず初期化完了済みと判定され、その結果意図しない不正な動作を行う可能性がありました。
また、WM_Finish 関数にも同様の状態管理に関する不具合がありました。
これらの不具合を修正しました。

### Note 39-25: (WM) 初期化関数内のポートコールバック初期化の不具合修正

WM の初期化関数内でのポートコールバックの初期化に不具合があり、不要な警告が生成されていましたので、これを修正しました。

### Note 39-26: (WM) 切断時の不正な動作の修正

接続と切断を高頻度で繰り返すと、まれに WM の内部状態が不正な状態になることがありましたが、これを修正しました。

### SDK 3.2 PRでの既知の問題点

ありません。

## ■ NITRO-SDK Version 3.1 正式版

(2006/05/02)

### Note 38-01: (CARD) ROM の DMA 転送に関する修正

ROM からの DMA 転送を行う際に転送先バッファがキャッシュライン 32BYTE 境界に整合していないとバッファに隣接する変数がキャッシュ操作の影響を受ける場合がありましたが、これを修正しました。

### Note 38-02: (CTRDG) AGB バックアップアクセス関数の追加

AGB カートリッジ上に搭載されたバックアップデバイスへのアクセスを行うための一連の API を CTRDG ライブラリに追加しました。

### Note 38-03: (CTRDG) CTRDG_SetPhiClock 関数, CTRDG_GetPhiClock 関数の追加

カートリッジの PHI 端子から出力されるクロックの設定と設定値の取得を行う CTRDG_SetPhiClock 関数, CTRDG_GetPhiClock 関数を用意しました。
これまで同様の関数が MI_SetPhiClock 関数, MI_GetPhiClock 関数となっていましたがカテゴリの見直しを行って CTRDG_ に移動しました。
また内部の動作も、CTRDG_SetPhiClock 関数では、ARM7, ARM9 の両クロックを設定するようにしました。
これまでは ARM9 しか変更しておらず、カートリッジのアクセス権が ARM7 に移ったときにクロック出力のパターンが変わってしまっていました。
取得関数である CTRDG_GetPhiClock 関数の動作は MI_GetPhiClock 関数から変わっていません。

### Note 38-04: (FS) ROM アーカイブの内部修正

CARD_SetPulledOutCallback 関数で設定したコールバックが FALSE を返し、かつ CARD_TerminateForPulledOut 関数が呼び出されるまでの期間に FS_OpenFile 関数などの ROM ファイルアクセスを実行すると処理が完了しなくなってしまう不具合があり、これを修正しました。
なお、FS_LoadTable 関数でファイルテーブルをメモリにロードしている場合はこの不具合は発生しません。

### Note 38-05: (FX) FX_Mul 関数の変更

FX_Mul 関数で桁あふれが発生した場合、マクロ SDK_WARNING でメッセージを表示するように変更しました。
また、関数リファレンスにも追記しました。

### Note 38-06: (FX) VEC_Normalize 関数の修正

関数に与える値が一定値以上の場合に正しい結果が得られない不具合がありましたので、一定値以上の場合、マクロ SDK_WARNING でメッセージを表示するように変更しました。
また、関数リファレンスにも追記を行いました。

### Note 38-07: (GX) G2_SetBlendAlpha 関数のリファレンスに記述の追加

G2_SetBlendAlpha 関数のリファレンスに、第1対象面にはバックドロップ面を指定できない旨を追記しました。

### Note 38-08: (MATH) MATHCompareFunc のリファレンス修正

MATH_QSort 関数でソートをおこなう際に、比較関数として与える関数の型である MATHCompareFunc のリファレンスに２つの比較要素が等しい場合は 0 を返す必要がある旨を追記しました。

### Note 38-09: (MI) MI_CompressLZ 関数の圧縮不具合修正

Note 35-04 で修正された LZ 圧縮時にオーバーアクセスが発生する不具合の修正が LZ 圧縮関数の低速版 MI_CompressLZ 関数に反映されていませんでした。
この不具合を修正しました。

### Note 38-10: (OS) OS_GetConsoleType 関数の修正

OS_GetConsoleType 関数の返り値が、関数リファレンスの記述と異なる値を返す可能性がありましたので、これを修正しました。

### Note 38-11: (OS) exceptionDisplay-2 サンプルデモの修正

$NitroSDK/build/demos/os/exceptionDisplay-2 サンプルデモにおいて、CW2.0 を使用することにより、必要な関数がデッドストリップされてしまう問題があったため、明示的にデッドストリップを行わないように修正しました。

### Note 38-12: (PRC) デモ用の図形辞書データの修正

デモ用の図形辞書データで「げ」の書き順が間違っていましたので、これを修正しました。

### SDK 3.1 正式版での既知の問題点

・CodeWarrior 2.0 の仕様に暫定的に対応しました。ただしこれにともなった変更は現状のアプリケーションには影響はありません。
次回リリース時には正式対応となる予定です。

## ■ NITRO-SDK Version 3.1 RC

(2006/04/11)

### Note 37-01: (CARD) 新規バックアップデバイスへの対応

CARD ライブラリが 8Mb FLASH バックアップデバイスに対応し、CARD_BACKUP_TYPE_FLASH_8MBITS を CARDBackupType 列挙型に追加しました。
関連して、リファレンスとサンプルデモも更新しました。

### Note 37-02: (DevEnv) .itcm.bss/.dtcm.bss/.wram.bss セクションの追加

今までは .itcm/.dtcm/.wram セクションにおいて .bss セクションの指定をしていなかったため、初期値を持たない .bss セクションに置かれるものが .data セクションに置かれてしまっていました。
$NitroSDK/build/tools/makelcf、$NitroSDK/include/nitro/section.h の修正及び、$NitroSDK/include/nitro/specfiles、$NitroSDK/build/components/ichneumon 以下の.template を修正し、.itcm/.dtcm/.wram に .bss セクションを追加しました。

### Note 37-03: (DevEnv) modulerules.cctype.CW の修正

sed コマンドのバージョンにより NITRO-SDK でビルドエラーが発生する場合がありましたので、これを修正しました。

### Note 37-04: (FX) MTX_Copy* 関数のリファレンス追加

MTX_Copy* 関数についての説明を関数リファレンスの FX カテゴリに追加しました。
以下の関数のリファレンスが追加されています。

- MTX_Copy22 関数
- MTX_Copy33 関数
- MTX_Copy43 関数
- MTX_Copy44 関数

### Note 37-05: (GX) G3OP_DUMMY_COMMAND の追加

ジオメトリコマンドの未定義コマンドである 0xFF をダミーコマンド G3OP_DUMMY_COMMAND として追加しました。

### Note 37-06: (GX) ジオメトリコマンドサイクル一覧の修正

環境マップを使用した場合、各ソースに相当するコマンドのサイクル数が増えることが判明しました。
これについて関数リファレンスのジオメトリコマンドサイクル一覧に追記しました。

### Note 37-07: (MI) エンディアンを考慮するメモリアクセス関数の追加

リトルエンディアン・ビッグエンディアンを考慮してメモリを読み書きするための関数群を追加しました。

### Note 37-08: (OS) OS_CheckHeap 関数の修正

ヒープのハンドルの指定が OS_CURRENT_HEAP_HANDLE だった場合にエラーを返される不具合がありました。
これを修正しました。

### Note 37-09: (OS) アリーナの概要修正

関数リファレンスの OS のアリーナについての概要において、アリーナの管理とメモリ確保についての図の記述に間違いがあったためこれを修正し、説明文を追加しました。

### Note 37-10: (OS) スタックの8バイトアラインメント対応

関数呼び出しの中でスタックポインタが常に8バイトに整合するようスタック処理を調整しました。

### Note 37-11: (PM) PM_ForceToPowerOff 関数及び PM_ForceToPowerOffAsync 関数の修正

Note 36-13 での仕様変更に不具合がありましたので、これを修正しました。

### Note 37-12: (SND) SND_SetTrackMuteEx 関数の追加

シーケンストラックのミュート時に、発音中の音に対する処理を選択できる SND_SetTrackMuteEx 関数を追加しました。

### Note 37-13: (TOOL) attachsign ツールのリファレンス修正

attachsign ツールのリファレンスにおいて認証コード取得に関する記述を変更しました。

### Note 37-14: (TOOL) ppmconv ツールで読み込めない PPM ファイルがあった不具合の修正

photoshop で作成した ppm ファイル(NetPBMformats Plugin経由で)を ppmconv* で変換しようとすると、Cannot convert file "xxxx.ppm" とメッセージが出力され、変換できませんでした。
原因は、ファイルヘッダの解析処理の実装が ppm 仕様を完全にカバーしていなかったことによるものです。
上記の問題点を修正しました。
これにより今まで変換できなかった幾つかの ppm ファイルが変換できるようになります。
また修正前の ppmconv* ツールで正常に変換が出来ていた ppm ファイルに対して、この修正の影響はありません。

### Note 37-15: (VIB) pulse_vib サンプルデモの修正

Note 36-15 で NITRO-SDK のすべてのサンプルデモのソースから削除した SVC_WaitVBlankIntr 関数が pulse_vib サンプルデモ内で使用されていたため、これを OS_WaitVBlankIntr 関数に変更しました。
また、振動カートリッジライブラリの制限に反するパラメータを入力してもサンプルが停止しないように変更しました。

### Note 37-16: (WM) dataShare-Model サンプルデモの修正

ユーザが指定した子機台数 (WH_CHILD_MAX) が WM_NUM_MAX_CHILD より少なかった場合、WH_CHILD_MAX を超えて WM_GetSharedDataAddress 関数が呼ばれていたので、これを修正しました。

### Note 37-17: (WM) wireless-all サンプルデモの追加

WM ライブラリの機能を総合的に使用するサンプルとして $NitroSDK/build/demos/wm/wireless-all サンプルデモを追加しました。

### Note 37-18: (WM) サンプルデモの修正

WM サンプルデモに以下の修正を加えました。

- $NitroSDK/build/demos/wireless_shared/wc の WC サンプルモジュールでデータシェアリングと MP 直接制御の両方のモードを併用できるように修正しました。
- $NitroSDK/build/demos/wireless_shared/wh の WH サンプルモジュールで1フレームあたりの MP 通信回数上限を WH_MP_FREQUENCY として wh_config.h 内で設定可能に変更しました。
  この値を定義していない従来のプログラムはデフォルトの1になります。

### SDK 3.1 RCでの既知の問題点

・AGB カートリッジ上に搭載されたバックアップデバイスへのアクセスを行うための一連の API を CTRDG ライブラリに追加しました。
しかし、今回追加された AGB バックアップアクセス関数は検証が完全ではないため動作は保障されていません。
次回リリース時には正式対応となる予定です。
・CodeWarrior 2.0 の仕様に暫定的に対応しました。ただしこれにともなった変更は現状のアプリケーションには影響はありません。
次回リリース時には正式対応となる予定です。

## ■ NITRO-SDK Version 3.1 PR

(2006/03/14)

### Note 36-01: (ARM7) コンポーネントでの抜け検出自動処理の改善

従来は、カードとカートリッジのいずれか一方のバスを OS_Lock* 関数で長期間ロックし続けているとその間は もう一方のデバイスの抜け検出が実行できませんでしたが、これを実行できるように変更しました。

### Note 36-02: (CARD) CARD_CheckPulledOut 関数の内部修正

CARD_CheckPulledOut 関数を複数回呼ばれた場合に、コールバックが何度も呼ばれてしまうことのないように変更しました。 今後は、CARD_CheckPulledOut 関数での呼び出し及び、ARM7 の抜け検出を通じて一度しかコールバックが呼ばれないようになりました。

### Note 36-03: (CTRDG) AGB カートリッジ領域へのアクセス制限強化

AGB カートリッジ領域への不意な書き込みアクセスを回避するため、CTRDG_Init 関数内でプロテクションリージョンの初期設定を変更するよう処理を追加しました。 カートリッジへ書き込みアクセスを行う場合は、カートリッジ情報を必ず確認した上で CTRDG_Enable 関数を呼び出す必要があります。
※なお、この機能に対応した IS-NITRO-DEBUGGER ver1.65 以降のデバッガでないと OS_Printf 関数などのデバッグ文字列出力時に強制停止してしまうのでご注意ください。

### Note 36-04: (CTRDG) CTRDG_CheckPulledOut 関数の追加

カートリッジの抜き検出を ARM9 からただちに行う CTRDG_CheckPulledOut 関数を追加しました。

### Note 36-05: (GX) 2D_CharBg_Direct サンプルデモの修正

$NitroSDK/build/demos/gx/UnitTours/2D_CharBg_Direct サンプルデモで、 GX_LoadBG3Bmp 関数の前に G2_SetBG3ControlDCBmp 関数で正しく設定するよう修正しました。

### Note 36-06: (GX) G2_GetBG2ScrPtr 関数及び G2_GetBG3ScrPtr 関数のリファレンス修正

G2_GetBG2ScrPtr 関数および G2_GetBG3ScrPtr 関数のリファレンスにおいてビットマップ BG の場合の記述に間違いがあったため、これを修正しました。

### Note 36-07: (MB) MB_FAKESCAN_PARENT_BEACON 通知の追加

MBFakeScanCallbackFunc コールバックへ通知されるイベントに MB_FAKESCAN_PARENT_BEACON を追加しました。 この通知は MB 親機のビーコンを受信するたびに発生します。
関連して、サンプルデモの multiboot-Model と fake_child で MB_GetUserVolatData 関数を使用するよう処理を追加しました。

### Note 36-08: (MB) MB_ReadMultiBootParentBssDesc 関数の動作変更

MB_ReadMultiBootParentBssDesc 関数内で本来指定するべきだった gameInfo の magicNumber メンバ, ver メンバが初期化されないままであったので、これを修正しました。

### Note 36-09: (MB) クローンブートサンプル親機への再接続時のリトライ不具合の修正

Note 20-08:での修正内容がクローンブートサンプルに適用されておらず、 子機ブート後に親機に再接続する際、一度でも親機への接続に失敗するとリトライができないという不具合があったため、これを修正しました。

### Note 36-10: (MB) ドキュメントの更新

以下の MB ライブラリ関連ドキュメントを更新しました。
$NitroSDK/docs/technicalNotes/AboutMultiBoot.pdf

### Note 36-11: (MIC) 自動サンプリング時の制限の明記

マイクの自動サンプリングを行う際に、サンプリング結果を格納するバッファとして拡張メインメモリを指定することができない、 という制限がある事をリファレンスマニュアルに追記しました。ライブラリの動作には変更はありません。

### Note 36-12: (PM) PMAmpGain 列挙型に関する不具合修正

PM_GAINAMP_DEFAULT マクロ内で使用している定数 PM_AMPGAIN_DEFAULT が実際には定義されていなかったため、 これを修正し PMAmpGain 列挙型に PM_AMPGAIN_DEFAULT を追加しました。

### Note 36-13: (PM) PM_ForceToPowerOff 関数及び PM_ForceToPowerOffAsync 関数の変更

アプリケーション側で DS 本体の電源を OFF にする際、LCD OFF 状態で本体電源を OFF にすると、ごくまれに DS 本体が再起動してしまうことがありました。
そのため LCDを ON にした後で電源を OFF にするよう PM_ForceToPowerOff 関数及び PM_ForceToPowerOffAsync 関数の仕様を変更しました。

### Note 36-14: (TOOL) makerom におけるワイルドカードによるファイル指定時の ROM 内収録順序の固定

makerom において ROM 内部へ収録するファイルをワイルドカードによって指定した場合に ファイルの収録順序がビルドに使用している PC のファイルシステムのエントリの順番に 依存する場合がありました。このため、同じアプリケーションをビルドしているにも 関わらず PC 毎にファイルの収録順序が変わってしまうという現象が発生しました。
これを修正し、makerom においてファイルを名前でソートした順で収録することにしました。

### Note 36-15: (VIB) VIB ライブラリの追加

ニンテンドーDS 用オプションカートリッジである振動カートリッジを制御するライブラリとして、VIB ライブラリを新設しました。

### Note 36-16: (WBT) WFS サンプルモジュールの修正

$NitroSDK/build/demos/wireless_shared/wfs に収録されているWFS サンプルモジュールに以下の修正を行いました。

- 親機側のファイルリスト初期化処理においてリスト終端の内容が不定になるという不具合があり、これを修正しました。
- 最大接続台数の子機群から極端な頻度で同時にファイル要求を受けると親機側のファイルハンドルが不足することがあり、これを修正しました。
- ファイル要求中の子機が切断すると他の子機のファイル要求が進捗しなくなる場合があり、これを修正しました。

### Note 36-17: (WBT) 関数リファレンスの修正

関数リファレンスにおいて、以下のコマンドが子機から子機へ直接発行できる旨の誤った記述があり、これを修正しました。

- WBT_PutUserData
- WBT_GetBlockInfo
- WBT_GetBlock

### Note 36-18: (WBT) 関数リファレンス概要追加

WBT ライブラリの関数リファレンスに「概要」の項目を追加しました。

### Note 36-19: (WM) MP 通信中の子機の Null 応答に関する仕様変更

Note 30-06で MP 通信中の子機が Null 応答を返さないように仕様を変更しましたが、 環境により、まれに動作を不安定にすることがありましたので、Note 30-06 での変更をキャンセルし、以前の仕様に戻しました。
また、子機の Null 応答を許す代わりに、親機は Null 応答を受け取った場合、子機が通信を失敗したとみなすように仕様を変更しました。
なお、WM_SetMPInterval 関数の機能が追加されていますので、Null 応答を返すように変更しても、子機側の過負荷問題は発生しません。

### Note 36-20: (WM) WMGameInfo 構造体の定義変更

WMGameInfo 構造体の定義を変更しました。version フィールドは廃止され、magicNumber フィールドに名前を変更しました。 magicNumber フィールドは DS 用のビーコンであれば 0x0001 で固定です。 また、予約領域から1バイトを使用して ver フィールドを新設しました。
現バージョンでは ver フィールドは必ず 0 ですが、今後、WMGameInfo 構造体の形式が変更されると増加します。 ただし、将来的に下位互換は保たれますので、ver フィールドをチェックして動作を制限してはいけません。 これらの変更により、WMGameInfo.version を参照していたプログラムでは書き換えが必要となります。
また、gameNameCount_attribute フィールドは attribute フィールドに名前を変更しました。 旧名でも参照できますが、今後は新しいフィールド名を使用してください。
また、この変更作業にあわせて、全く使用されていないコンパイルスイッチの WM_GAMEINFO_TYPE_OLD のサポートを終了しました。

### Note 36-21: (WM) WM_IsValidGameBeacon, WM_IsValidGameInfo 関数の追加

スキャン結果のビーコンが、DSワイヤレスプレイ用親機のものかどうかを判別するために WM_IsValidGameBeacon 関数と、WM_IsValidGameInfo 関数を追加しました。 内部的に WMGameInfo.magicNumber が正しいかどうかを判定します。 また、WM の各デモをこの関数を使用するように変更しました。

### Note 36-22: (WM) minPollBmpMode の不具合の修正

MP 通信のオプションである minPollBmpMode を有効にした場合、一定時間後に通信が途切れて MP ライフタイム切れになってしまう不具合がありましたが、これを修正しました。
minPollBmpMode を使用して特殊な通信を行っているタイトルのみこの不具合の影響を受けます。

### Note 36-23: (WM) ドキュメントの更新

以下の WM ライブラリ関連ドキュメントを更新しました。
$NitroSDK/docs/technicalNotes/AboutWirelessManager.pdf

### Note 36-24: (その他) マクロの記述修正

引数に()がついていなかったマクロを正しい記述に修正しました。
()の存在の有無で動作が変わるような引数を与えていない限りこの変更による影響はありません。
修正したマクロは以下です。

- SDK_NULL_ASSERT
- SDK_ALIGN4_ASSERT
- GX_VFCFX10
- GX_FX16ST
- GX_COMP4x4_PLTT_IDX
- GX_PACK_MTXMODE_PARAM
- GX_PACK_VIEWPORT_PARAM
- SVC_CpuClear
- SVC_CpuCopy
- WC_ROUNDUP_32

なおこの変更に伴い、該当する関数リファレンスも修正しました。

### SDK 3.1 PRでの既知の問題点

ありません。

## ■ NITRO-SDK Version 3.0 正式版

(2006/01/16)

### Note 35-01: (CARD) 関数リファレンス概要追加

CARD ライブラリの関数リファレンスに「概要」の項目を追加しました。

### Note 35-02: (DevEnv) packnlf ツールのリファレンスマニュアル追加

packnlf ツールのリファレンスマニュアルを追加しました。

### Note 35-03: (DevEnv) ソースコードの書式統一

ライブラリおよびサンプルデモのソースコード全体で、インデントや改行に関する構文上の書式を統一しました。

### Note 35-04: (MI) MI_CompressLZFast 関数, ntrcomp.exe の LZ 圧縮不具合修正

MI_CompressLZFast 関数で LZ 圧縮をする際に、メモリのオーバーアクセスを起こす可能性がありました。
また、NITRO-SDK 3.0 RC2 以降の ntrcomp.exe にも同様の不具合があり、異常終了または圧縮データサイズが僅かに増加する可能性がありました。
これらの不具合を修正しました。

### Note 35-05: (OS) OS_ResetSystem 関数の不具合修正

OS_ResetSystem 関数の内部でカートリッジへアクセスすることがあり、そのためカートリッジバスがロックされたままで呼び出された場合にライブラリ内部で無限ループしてしまう問題があり、これを修正しました。
この不具合は NITRO-SDK 3.0 RC3 でのみ発生します。

### Note 35-06: (OS) 中国版起動画面の修正

Note 32-23 の更新に伴い、起動画面が文字化けするという不具合がありましたのでこれを修正しました。

### Note 35-07: (PRC) デモ用の図形辞書データの修正

デモ用の図形辞書データで「け」の書き順が間違っておりましたので、図形辞書データの「け」を修正しました。

### Note 35-08: (WM) サンプルデモのデバッグ文字列の表示修正

$NitroSDK/build/demo/wireless_shared 以下のサンプルライブラリ wh, wfs, wc のデバッグ出力において16進数の前には "0x" をつけて表示するようにしました。

### Note 35-09: (WM) 内部の通信パラメータの補正

環境により MP 通信に失敗しやすくなることがありましたので、通信の内部パラメータに補正を入れて改善しました。

### SDK 3.0 正式版での既知の問題点

ありません。

## ■ NITRO-SDK Version 3.0 RC3

(2005/12/26)

### Note 34-01: (MATH) ビット演算関数の追加

ビット演算を行う以下のインライン関数群を追加しました。

- MATH_CountTrailingZerosおよびMATH_CTZマクロ
- MATH_GetLeastSignificantBitおよびMATH_LSBマクロ
- MATH_GetMostSignificantBitおよびMATH_MSBマクロ

### Note 34-02: (MB) MB_ReadSegment関数の省メモリ指定時の不具合の修正

MB_ReadSegment関数で小さなバッファサイズを指定してアーカイブから動的に配信データをロードする際にブロック転送が進捗しなくなってしまう場合があり、 この問題を修正しました。

### Note 34-03: (MB) 悪条件下でのMP通信効率の改善

MBライブラリのブロック転送の実装において、 親機側でWM_ERRCODE_SEND_FAILEDがしばしば発生しうるような悪い通信環境では転送効率が大きく低下することがあり、これを修正しました。

### Note 34-04: (OS) DC_TouchRange関数のリファレンス修正

ニンテンドーDSのCPUであるARM946E-Sはpld命令を実行しても何も行わない仕様のため、 この機能を使用しているDC_TouchRange関数のリファレンスにその旨を記述しました。

### Note 34-05: (OS) OS_CreateThread 関数の修正

OS_CreateThread 関数で初期化するスレッド構造体の初期値によっては、 スレッド実行時にアクセス例外のエラーになってしまうという不具合がありましたが、 これを修正しました。

### Note 34-06: (WBT) wbt-1 サンプルデモの修正

$NitroSDK/build/demos/wbt/wbt-1 サンプルデモで、 サンプルソース内のマクロスイッチ NOT_USE_ALLOCを有効にするとコンパイルエラーにより正しくビルドできなかったため、これを修正しました。

### Note 34-07: (WBT) ユーザコールバックの不具合修正

各コマンドの完了を通知するユーザコールバック内で引数のresultメンバの値が不定であったため、 これを修正しました。

### Note 34-08: (WM) MP 通信パラメータの不具合修正

3.0RC2 で追加された MP 通信の各種パラメータの設定が正常に機能していませんでしたので、これを修正しました。

### Note 34-09: (WM) WH に関するパラメータ設定方法の変更

WH を使用している SDK の全てのデモは$NitroSDK/build/demos/wireless_shared/wh/wh_config.hを直接参照し設定を共有していまし たが、各デモで個別に設定を持つようになりました。
この変更によって、wh_config.hの場所が $NitroSDK/build/demos/wireless_shared/wh/default/ に変更になっています。

### Note 34-10: (WM) 通信切断時の内部動作の改善

DS本体のロットによっては、通信切断直後のわずかなタイミングでまれに内部動作に異常が生じるハードウェアがあり、 その対策をWMライブラリ内部で行うように処理を追加しました。

### SDK 3.0 RC3での既知の問題点

ありません。

## ■ NITRO-SDK Version 3.0 RC2

(2005/12/05)

### Note 33-01: (CARD) バックアップ操作関数の不具合修正

小さなサイズ指定でのバックアップ書き込みをワイヤレス通信中に実行すると、成功した場合でもまれにCARD_RESULT_TIMEOUTを返す場合があり、 この問題を修正しました。

### Note 33-02: (CTRDG) AGBカートリッジのアクセス許可関数の追加

AGBカートリッジへのアクセス許可状態を制御するための以下の関数群を追加しました。

- CTRDG_IsEnabled
- CTRDG_Enable
- CTRDGi_CheckEnableld

### Note 33-03: (DevEnv) SDK バージョン比較用マクロの追加

SDK のバージョンを数値情報に変換するマクロ SDK_VERSION_NUMBER を追加しました。
また現在の SDK バージョンを表す定数 SDK_CURRENT_VERSION_NUMBER を追加しました。

### Note 33-04: (DevEnv) SDK_INLINE, SDK_DECL_INLINE の追加

関数のインライン指定用マクロシンボルとして SDK_INLINE および SDK_DECL_INLINE を追加しました。
これにより、インライン指定の形式を一括して切り替え可能になりました。
これらのマクロの値を変更した場合は NITRO-SDK 全体を再ビルドする必要があります。
ただし、インライン関数の実体化に関する不具合が修正されたバージョンのコンパイラを使用している環境であり、さらにこの不具合を回避するために inline を static inline にしていた関数の場合に限り、これらのマクロを static inline から inline に変更することによってコードサイズを削減することができます。
これらのマクロを変更することは基本的に無保証となりますのでアプリケーション側での判断において行ってください。

### Note 33-05: (DevEnv) makebanner ツールの修正

makebanner ツールで使用する bsf ファイル内の記述において、ゲームタイトル名または説明文の文字列の先頭部分が指定可能な言語パラメータのいずれかと一致する場合にこの文字列内容をバナーファイルへ含めないという不具合があり、これを修正しました。

### Note 33-06: (DevEnv) ntexconv の更新

$NitroSDK/tools/bin/ntexconv.exe を現在リリースされている最新の TXLib パッケージ内の netconv.exe に更新しました。
SDK ではアイコンイメージ作成時にのみ ntexconv を使用しているので動作は変わりませんが、テクスチャ作成を行う場合でも SDK 内の ntexconv を使用することができるようになりました。

### Note 33-07: (DevEnv) packnlf ツールの追加

.nlf ファイルが参照している全てのファイル指定を相対パス化し、それら全てをまとめ ZIP ファイルとして出力するツール packnlf を追加しました。
このツールの追加は NITRO-SDK 3.0 RC で入っていましたが、changelog から漏れていました。

### Note 33-08: (MB) MBP サンプルモジュールの修正

$NitroSDK/build/demos/wireless_shared/mbp に収録されている MBP サンプルモジュールで、以下の不具合を修正しました。

- 親機側が MBP_StartRebootAll 関数を呼び出して子機群が再起動を試行するタイミングにおいて、接続中の最後の子機だけがキャンセルで抜けた場合にまれに親機側の処理が進捗しなくなるという不具合があり、これを修正しました。

### Note 33-09: (MB) MB_FAKE_WORK_SIZEの定義を追加

MB_FakeInit関数を呼び出す際に必要となるバッファサイズをMB_FAKE_WORK_SIZEとして定義しました。 この値は、従来から存在するMB_FakeGetWorkSize関数で取得されるサイズと等価な定数として定義されます。

### Note 33-10: (MB) 親機ビーコンのフラグに関する不具合修正

MB 親機が送信する初回のビーコンにおいて WM_ATTR_FLAG_MB フラグは無効のまま WM_ATTR_FLAG_ENTRY フラグのみ有効となっていたため、同一 GGID をワイヤレスプレイとダウンロードプレイで共用するアプリケーションがこれを誤検出しうるという不具合があり、これを修正しました。

### Note 33-11: (MI)MI_CompressLZFast関数の追加

9KB程度のワークバッファを必要とする代わりに、これまでも用意されていたMI_CompressLZ関数と比較して数倍高速にLZ圧縮をおこなうMI_CompressLZFast関数を追加しました。

### Note 33-12: (OS) ARM7デバッグ出力自動化ビルドスイッチの追加

OS_InitPrintServer 関数と OS_PrintServer 関数を OS ライブラリ内から自動的に呼び出すよう設定するビルドスイッチとして NITRO_ENABLE_ARM7_PRINT を追加しました。
このスイッチを指定しない場合は従来どおりの仕様となります。
このビルドスイッチはOSライブラリに対してのみ有効であり、設定を切り替える場合はOSライブラリを再ビルドする必要があります。

### Note 33-13: (OS) Ｖブランク待ち関数の定義変更

SVC_WaitVBlankIntr 関数は低優先度のスレッドにリソースを開放しない仕様であり、 使い方によっては問題が発生するため、SVC_WaitVBlankIntr 関数呼び出しが自動的に OS_WaitVBlankIntr 関数呼び出しに置換されるように変更しました。 但しこの置換はヘッダファイル内の define による置換ですので、再ビルドした際に初めて有効になる点にご注意下さい。
この変更の結果、実際にVブランク割り込み待ち動作へ入るまでにかかるオーバーヘッドがわずかに増加しました。 アプリケーションの挙動には殆ど影響ありませんが、どうしても従来通りのシステムコールを用いなければならない場合には、 環境変数 NITRO_SVC_WAITVBLANK_COMPATIBLE を定義する事で、今回の変更を無効にする事が出来ます。 但しこの場合はスレッドの問題は未解決のままになりますので、十分な検証を行って下さい。
また、「Note 32-18: (OS) Vブランク待ち関数の改良」において SVC_WaitVBlankIntr 関数を弱シンボル化して別定義で上書き可能としたと報告しましたが、 今回の修正により弱シンボルである必要がなくなりましたので、これを元に戻しました。

### Note 33-14: (OS) サンプルデモからの OS_InitPrintServer, OS_PrintServer 関数の削除

NITRO-SDK の全てのサンプルデモのソースから OS_InitPrintServer, OS_PrintServer 関数を削除しました。

### Note 33-15: (OS) サンプルデモからの PXI_Init 関数の削除

NITRO-SDK の全てのサンプルデモのソースから PXI_Init 関数を削除しました。
この変更によってデモの動作が変わることはありません。

### Note 33-16: (OS) サンプルデモの SVC_WaitVBlankIntr 関数の変更

NITRO-SDK の全てのサンプルデモのソースの SVC_WaitVBlankIntr 関数の呼び出し部分を OS_WaitVBlankIntr 関数に変更しました。
この変更によってデモの動作が変わることはありません。

### Note 33-17: (OS) 拡張メイン RAM アリーナの開始位置修正

拡張メインメモリアリーナの開始アドレスが、OS のアリーナ概要ページでは 0x23e0000 ( overlay がある場合はそれを考慮してさらに上位のアドレスとなります。以下同様) となっていますが lcf テンプレートの定義は 0x2400000 となっていました。
これを、OS概要ページにあわせるように 0x23e0000 としました。

### Note 33-18: (WBT) WFS サンプルモジュールの修正

$NitroSDK/build/demos/wireless_shared/wfs に収録されている WFS サンプルモジュールに以下の修正を行いました。

- いくつかの関数で、初期化前および終了後に呼び出された場合の正当性判定を強化しました。

### Note 33-19: (WBT) WFS 関連サンプルデモの修正

WFS サンプルモジュールを使用する以下のサンプルデモ内で子機が FS_ReadFile 関数を呼び出している箇所について、リード中の親機切断を検知できるよう処理を修正しました。

- $NitroSDK/build/demos/wbt/wbt-wfs
- $NitroSDK/build/demos/mb/multiboot-wfs

### Note 33-20: (WM) 2D_CharBg_3, Sub_CharBg_3 サンプルデモの更新

$NitroSDK/build/demos/gx/UnitTours/{2D_CharBg_3,Sub_CharBg_3} サンプルデモにおいて、縮小しすぎるとアサートで停止してしまう不都合を修正しました。

### Note 33-21: (WM) MP通信のタイミング設定関数の追加

フレーム同期通信モードにおいて、各フレームの初回のMP通信の準備を開始するのはこれまで親機ではVアラームカウントが260、 子機では240と固定値となっていましたが、これを設定するWM_SetMPTiming関数を追加しました。 実装上の制限により、220〜262, 0〜190 の範囲内で設定する必要があります。
通信処理中は ARM7 が活発に活動するようになり、ARM9 でメインメモリアクセスのストールが多く発生するようになりますので、 通信タイミングを調整することによって ARM9 の平均的な動作パフォーマンスが向上することがあります。 明示的に設定しなおさない場合は従来の設定値がデフォルトとして使用されます。

### Note 33-22: (WM) MP通信の送信サイズ設定関数の追加

これまでは、MP通信の送信サイズは親機が通信前にWM_SetParentParameter関数で設定する WMParentParam構造体内のparentMaxSizeおよびchildMaxSizeフィールドの値で固定となっていましたが、 これを通信処理中に変えられるように変更しました。 この親機送信サイズ、子機送信サイズはそれぞれWM_SetMPParentSize関数とWM_SetMPChildSize関数で設定できます。
親機と子機の送信サイズは、親機ではWM_StartParent関数の実行時にWMParentParam構造体のparentMaxSize、childMaxSizeの値で初期化され、 子機ではWM_StartConnect関数で接続した際にbeaconに乗っていた設定情報で初期化されます。 これらの値はWM_SetMPParentSize関数、WM_SetMPChildSize関数を使用して縮小することはできますが、初期値を超えることはできません。 また、子機側においては、親機送信サイズは設定する意味を持たず、また子機送信サイズの設定値は MP 通信を行うたびに親機の子機送信サイズの設定値で上書きされます。
親機の送信はこれまでもデータサイズが小さければ電波も短く送出されていましたので、設定しなおすメリットはあまりありません。 一方、子機側は常にchildMaxSizeで指定したバイト数分の電波を送出していましたので、必要なサイズに再設定することにより、 送信時間が減少して通信を安定化することができます。 なお、現在の実装ではこれらの関数で再設定した送信サイズよりも大きなサイズのデータがすでに WM_SetMPDataToPort関数で送信予約されていた場合、 そのデータは送出されず送信キューに溜まり続けますので注意してください。

### Note 33-23: (WM) MP通信間隔の制御機能の追加

フレーム同期通信モードの2回目以降と連続通信モードでのMP通信において、 直前のMP通信との時間間隔を設定できるWM_SetMPInterval関数を追加しました。 親子独立にマイクロ秒単位で指定できます。
デフォルトでは、親機が1000us、子機が0us(間隔なし)となっています。 この値を調整することでスループットを向上させることができますが、 親機によるMP通信間隔が子機の受信処理時間より短くなってしまうと取りこぼしによって反対にスループットが低下します。 その場合、無駄な再送が発生することで電波の使用効率も悪くなりますので注意してください。

### Note 33-24: (WM) dataShare-Model サンプルデモの更新

$NitroSDK/build/demos/wm/dataShare-Model サンプルデモで、接続対象の親機情報を表示する処理を親機リスト画面に追加しました。

### Note 33-25: (WM) dataShare-Model サンプルデモの表示修正

$NitroSDK/build/demos/wm/dataShare-Model サンプルデモで起動時に文字出力画面が崩れることがあり、これを修正しました。

### Note 33-26: (WM) フレームあたりの最大MP通信回数の設定値の追加

従来は再送も含めた1フレームあたりの最大MP通信回数は6回で固定でしたが、これを設定できるように変更しました。 WM_SetMPParameter関数でWMMPParam.maxFrequency を設定してください。 なお、WM_StartMPEx関数のfixFreqMode引数の処理は、maxFrequencyもmpFreq 引数の値に設定する、という動作に内部的に変更しています。

### Note 33-27: (WM) 受信強度レベルの仕様変更

WM_GetLinkLevel 関数で取得できる受信強度レベルには、送信失敗時に補正がかかるようになっていますが、これまでは親子で補正のかかり方が異なり、同一条件下で親子の受信強度の表示が大きく異なる場合がありました。
これを解消するため、親機の送信失敗の検知基準を緩め、親子の受信強度レベルの振る舞いが近くなるように変更しました。

### Note 33-28: (WM) 送受信サイズの事前チェックを無効化するオプションの追加

従来からWM_StartMP関数内部で行われていた各種の正当性判定(送受信サイズ設定値、送受信バッファサイズ、ならびに通信時間制限5600[us]の事前チェック) を無視する特別なオプションを追加しました。 WM_StartMP関数を呼び出す前にWM_SetMPParameter関数でWMMPParam.ignoreSizePrecheckModeをTRUEに設定してください。
この機能とWM_SetMPParentSize関数、WM_SetMPChildSize関数を組み合わせることにより、 子機の接続台数などの条件によって柔軟に送信サイズを変更することが可能になります。 ただしその場合には、通信所要時間と送受信バッファサイズの制限を超えないようアプリケーション側で気をつけるようにしてください。 受信バッファサイズの足りない設定で親機がMP通信を開始しようとした場合には実行時のチェックでそれを検出してMP通信は行われず、 その状態が続くとMPライフタイムによるタイムアウトが発生するため、通信は切断されます。

### Note 33-29: (WM) 無線通信のイベントカウンタに関する注意

無線ハードウェア内の特定のアドレス空間のバッファにアクセスするといくつかのイベントカウンタがクリアされるという想定外の動作をすることが報告されました。
この動作により、ソフトウェアで管理しているイベントカウンタに累積されるカウントが実際に発生したイベントカウントに満たない場合があります。
WM_GetWirelessCounter 関数により取得可能なイベントカウントの内いくつかは正確な値でない可能性がありますので、ご注意下さい。
また、影響を受ける可能性のあるイベントカウンタについてはリファレンスマニュアルに追記しました。

### SDK 3.0 RC2での既知の問題点

ありません。

## ■ NITRO-SDK Version 3.0 RC

(2005/11/07)

### Note 32-01: (CARD) EEPROM デバイス操作の内部処理修正

EEPROM デバイスをバックアップに使用している場合、工場出荷時に稀にハードウェア内部ステータスの初期値異常が生じることがあり、その対応処理を追加しました。

### Note 32-02: (CARD) ROM アクセス後の抜け検出処理の追加

CARD_ReadRom 関数および CARD_ReadRomAsync 関数で読み込み処理が完了した際に、毎回その場でカード抜け検出を行うよう処理を追加しました。
これにより、抜け検出コールバック通知より先にアプリケーションが不正なデータを参照することは無くなりました。

### Note 32-03: (CARD) 新規バックアップデバイスへの対応

CARD ライブラリが 4Mb FLASH バックアップデバイスに対応し、CARD_BACKUP_TYPE_FLASH_2MBITS を CARDBackupType 列挙型に追加しました。
関連して、リファレンスとサンプルデモも更新しました。

### Note 32-04: (DevEnv) #pragma define_section のパラメータ修正

#pragma define_section のパラメータを
「 #pragma define_section DTCM ".dtcm",".dtcm",abs32,RWX 」
のようにコンマで区切って誤った記述をしてしまっていたため
「 #pragma define_section DTCM ".dtcm" abs32 RWX 」
のようにスペースで区切るように修正しました。
すでに上で挙げたような誤った記述方法をしている場合は、同じように修正してください。

### Note 32-05: (DevEnv) ENV ライブラリ用リソースデータ変換ツールの追加

XML 形式で書かれた ENV ライブラリ用リソースデータを C のソースファイル形式に変換するためのツール xml2env と
INIT 形式で書かれた ENV ライブラリ用リソースデータを C のソースファイル形式に変換するためのツール init2env を追加しました。

### Note 32-06: (DevEnv) NITRO-SDK パッケージ作成スクリプトの修正

NITRO-SDK 3.0 PR 〜 3.0 PR4 パッケージでは、パッケージ作成時に使用するスクリプトに不備があり、 THUMB 版 ichneumon コンポーネントが正常に動作しないという問題がありました。
これを修正しました。

### Note 32-07: (DevEnv) SDK パッケージのビルドに使用した CodeWarrior のバージョンの変更

SDK パッケージのビルドに使用した CodeWarrior のバージョンを 1.2SP1 に変更しました。
また、$NitroSDK/include/nitro/version.h にビルドで使用した CodeWarrior コンパイラとリンカのビルド番号を記録するようにしました。

### Note 32-08: (DevEnv) コンパイルターゲットに関するリファレンス追加

コンパイルターゲットについての説明を関数リファレンスの関連情報に追加しました。

### Note 32-09: (ENV) ENV ライブラリのリファレンス追加

ENV ライブラリのリファレンスを追加しました。

### Note 32-10: (ENV) ENV ライブラリの変更

ENV_Init 関数の仕様を変更し、新たに ENV_AppendResourceSet 関数を追加しました。今までは ENV_Init 関数に ENVResource を引数として渡していましたが、今後は複数の ENVResource を登録できるようになりました。

### Note 32-11: (GX) G3BS_LoadMtx43 関数の修正

G3BS_LoadMtx43 関数内で使用している ASSERT の条件パラメータが間違っているという不具合があり、これを修正しました。

### Note 32-12: (GX) Sub_Double3D サンプルデモの再修正

$NitroSDK/build/demos/gx/UnitTours/Sub_Double3D サンプルデモに以下の修正を行いました。
Note 29-02 で行った修正内容が完全でなく、同様の症状が再現する場合があったため、これを再び修正し、SwapBuffers コマンドやジオメトリエンジンに関する 説明をコメントとして追加しました。

### Note 32-13: (MATH) MATH_QSort 関数の不具合修正

MATH_QSort 関数に不具合があり、ソート後に昇順もしくは降順に正しく並んでいない値が発生する可能性がありました。
この不具合は修正されました。

### Note 32-14: (OS) ARM7 専用WRAMアリーナの HI アドレス計算の修正

ARM7 側で IRQ スタックサイズを 0又は負で指定していると WRAM 先頭位置を基準にして領域を決定しており、それを原因として ARM7 専用 WRAM アリーナの HI アドレス計算に誤りがありました。
正しくは WRAM の先頭部分を占めるプログラム領域の末尾を基準にすべきでした。
修正後は正しく計算されます。
但し、従来の mongoose 及び ichneumon ではスタック領域指定を正の値で定義していますので、修正前でも後でも全く動作の違いはありません。
通常のゲームアプリケーションでは SDK 付属の mongoose / ichneumon を使用しますので、この変更による影響はございません。

### Note 32-15: (OS) OS_GetTotalOccupiedSize 関数の追加

ヒープ中の使用メモリサイズを取得する OS_GetTotalOccupiedSize 関数を追加しました。
これまでもあった OS_GetTotalAllocSize 関数は、使用されているメモリブロックのデータ領域のサイズを合計していましたが、今回追加された OS_GetTotalOccupiedSize 関数はメモリブロックのヘッダ部分のサイズも加算しています。

### Note 32-16: (OS) OS_PutString 関数の修正

FINALROM ビルド時、OS_PutString 関数は影響のないコードに置き換えられますが引数のデッドストリップが行なわれていませんでした。
これを修正して、この関数は何も行なわず、引数のデッドストリップがなされるようにしました。

### Note 32-17: (OS) SDK_COMPILER_ASSERT の追加

コンパイル時に条件をチェックして、条件を満たされない場合はコンパイルエラーにするマクロ SDK_COMPILER_ASSERT を追加しました。

### Note 32-18: (OS) Vブランク待ち関数の改良

SVC_WaitVBlankIntr システムコールを用いて Vブランク割り込みを待つ場合に、この関数を呼び出したスレッドは休止状態にはならず、割り込み待ちの間は自身より低優先度のスレッドにリソースを開放しないという問題があります。
システムコールの内容修正は困難ですので、スレッドを休止状態にして Vブランク割り込みを待つ OS_WaitVBlankIntr 関数を代用関数として用意しました。
また、システムコールを呼び出す SVC_WaitVBlankIntr 関数を弱シンボルとし、別定義で上書きすることができるように修正しました。

### Note 32-19: (OS) キャッシュ関数の引数 const 化

DC および IC で始まるキャッシュ操作関数でメモリポインタを引数に取るものの中で、内部操作でその内容を変更しないものに関して const をつけるようにしました。
変更となったのは以下の関数です。

- DC_StoreRange
- DC_FlushRange
- DC_TouchRange
- DC_LockdownRange
- DC_CleanRange
- DC_CleanAndInvalidateRange
- IC_PrefetchRange
- IC_LockdownRange

### Note 32-20: (OS) スタック溢れチェック関数の修正

スタック溢れのチェック用の関数で、スタックの途中にチェックコードを設定する OS_SetThreadStackWarningOffset 関数およびOS_SetIrqStackWarningOffset 関数において、引数が0の時にスタックの最下位アドレスに設定していたオーバーフロー用のチェックコードを上書きしていました。
このためスタックチェックが正しく行なわれていませんでしたが、これを修正しました。

### Note 32-21: (OS) 引数データバッファ切り換えのサポート

ROM イメージに、ツールコマンド buryarg で引数データを埋め込み、プログラムから OS_GetArgv 関数や OS_GetOpt 関数等で取得出来る仕組みがありますが、この引数データバッファをランタイムに切り替えることが出来るようになりました。
OS_SetArgumentBuffer 関数 / OS_GetArgumentBuffer 関数を参照してください。
また、引数データバッファのデータを作成するために文字列から変換する OS_ConvertToArguments 関数を用意しました。

### Note 32-22: (OS) 実時間とチック値の変換マクロの修正

OS_SecondsToTicks 関数や OS_TicksToSeconds 関数などの実時間とチック値の変換マクロを修正しました。
これまで、内部では符号付きの32ビット精度で演算をしていたため、少々大きめの引数を指定するとオーバーフローが発生し正しい値を返していませんでした。
修正内容は以下の通りです。
・これまでのマクロについて、内部演算は64ビットで行なうようにしました。
・明示的に内部演算を32ビットで行いたい場合のために、

- OS_SecondsToTicks32 関数
- OS_MilliSecondsToTicks32 関数
- OS_MicroSecondsToTicks32 関数
- OS_TicksToSeconds32 関数
- OS_TicksToMilliSeconds32 関数
- OS_TicksToMicroSeconds32 関数

を用意しました。

### Note 32-23: (OS) 中国版起動画面の更新

OS_InitChina 関数で表示される中国版起動画面が更新されました。

### Note 32-24: (OS)　終了するスレッドを含むスレッドキュー操作の修正

あるスレッドが、スレッドキューに登録されたままで OS_DestroyThread 関数や OS_KillThread 関数等で終了したときスレッドキューからスレッドの情報を取り去るようにしました。
これは、OS_JoinThread 関数で別のスレッドの終了を待っているときに、あるスレッドが別のスレッドに終了させられた場合も含みます。
これまでは削除されたスレッドの情報がスレッドキューに残っていたため OS_WakeupThread 関数でスレッドキュー内のスレッドを一気に実行可能状態にしようとしたときにすでに削除されたスレッドまでも対象になっており、スレッドリストの状態に不具合が生じる場合がありました。
今回はこれが修正されました。

### Note 32-25: (PRC) サンプルツール pdic2c.pl の修正

PRC のデモと一緒に使用するサンプルツールである pdic2c.pl が出力するソースファイルが古い形式でしたので、これを修正しました。
また、ヘッダファイルとソースファイルを別々のファイルに出力するオプションなども追加しました。

### Note 32-26: (RTC) RTC の曜日情報取得の変更

RTC から曜日情報を含んだデータを読む際には曜日は日付から計算して返すようにしました。
これまでは RTC 内部で保持している値をそのまま返していましたが、RTC で表現できるもっとも遅い時刻である2099年12月31日23時59分の境界を跨いだ後、RTC の値を設定しなおすまでは間違った曜日情報を返していました。

### Note 32-27: (SND) SND_CalcDecibel 関数に引数0を入れたとき適切な値を返さない問題を修正

SND_CalcDecibel (及び SND_CalcDecibelSquare )関数で、引数に0を入れたとき、これまでは-723を返していましたが、-32768を返すように修正しました。
これまでは、ボリュームモジュレーションを使ったときに、プレイヤーのボリュームを0にしても、音が聞こえてしまうことがありました。
この問題は修正されました。

### Note 32-28: (STD) STD ライブラリの追加

文字列操作に関連した API 群を扱うライブラリとして、STD ライブラリを新設しました。
STD ライブラリには以下の関数が含まれます。

- STD_CopyString (STD_StrCpy)
- STD_CopyLString (STD_StrLCpy)
- STD_SearchString (STD_StrStr)
- STD_GetStringLength (STD_StrLen)
- STD_ConcatenateString (STD_StrCat)
- STD_CompareString (STD_StrCmp)
- STD_CompareNString (STD_StrNCmp)
- STD_CompareLString (STD_StrLCmp)
- STD_TSScanf
- STD_TVSScanf

関数の右()内に書かれた STD_StrCpy 関数などは その左に書かれた STD_CopyString 関数などの別名として define されています。

### Note 32-29: (WBT) GetBlock 要求通知の不具合修正

本来は相手の WBT_GetBlock 関数完了時にのみ発生すべき WBT_CMD_REQ_GET_BLOCK_DONE システムコールバック通知が WBT_GetBlockInfo 関数でも同様に発生するという問題があり、これを発生させないよう修正しました。
この通知を使用していないアプリケーションでは問題ありません。

### Note 32-30: (WBT) WFS サンプルモジュールの修正

$NitroSDK/build/demos/wireless_shared/wfs に収録されている WFS サンプルモジュールに対して以下の修正を行いました。

- WFS_Init 関数を重複して呼び出した場合に割り込み禁止状態のまま関数からかえってしまう不具合があり、これを修正しました。
- 従来は静的に常駐していた内部ワークメモリを WFS_Init 関数呼び出し時にアロケータから確保するよう変更しました。
- WFS を使用する各種サンプルデモで、ポート番号として SDK で予約されている WM_PORT_BT を使用していたためこれを修正しました。

### Note 32-31: (WM) WM テストツールの更新

WMTestTool.srl が Scan 時に、同一親機のチャンネル情報が更新されるようになりました。

### Note 32-32: (WM) WM_SetLifeTime 関数のリファレンス記述の修正

WM_SetLifeTime 関数のリファレンスの記述に間違いがあり、これを修正しました。
フレームライフタイムのデフォルト値は「ライフタイム無し」と記述していましたが、正しくは「ビーコン間隔×5回分の時間」です。

### Note 32-33: (WM) mongoose コンポーネントの改良

ARM7 側のコンポーネントとして mongoose を使用した場合に、WM ライブラリの状態遷移を行う非同期処理中に ARM9 のメインメモリへのアクセスが著しく阻害されるという問題がありますが、mongoose コンポーネントを改良することでこの問題を改善しました。
問題は解決された訳ではなく改善されたに過ぎない、という点にご注意下さい。

### Note 32-34: (WM) port 受信コールバックに通知する情報の追加

WMPortRecvCallback に connectedAidBitmap フィールドを追加しました。現在接続中の AID のビットマップが格納されます。

### Note 32-35: (WM) port 受信コールバックの初期化時の通知を追加

WMStateCode に WM_STATECODE_PORT_INIT を追加し、WM_SetPortCallback 関数の呼び出し時に このステートコードで port 受信コールバックを呼び出すように変更しました。 WMPortRecvCallback の myAid フィールドや connectedAidBitmap フィールドを使用した初期化処理を行うことを想定しています。
接続通知の一貫性を保つため、WM_STATECODE_PORT_INIT でのコールバック呼び出しも割り込み禁止状態で行われますので注意してください。
この変更により、Note 32-38 と同様に非互換が発生する可能性があります。

### Note 32-36: (WM) テスト用 API の追加

WM ライブラリに存在するテスト用 API が拡張されました。 これらのAPI はテスト目的の為に用いられますので、通常は使用する必要はありません。
また、この拡張によって通常使用時のWMライブラリの動作が変わることはありません。
但し、API の追加によって WMApiid 列挙型が拡張されておりますので、列挙の並び順に依存するプログラムには影響が出る可能性がありますのでご注意下さい。

### Note 32-37: (WM) 子機が WM_EndMP 関数を呼ぶとワイヤレス通信機能が停止する不具合の修正

親機が MP 通信を続けている最中に、子機が特定のタイミングで WM_EndMP 関数を呼び出すと、その後のワイヤレス通信機能が停止する不具合がありましたが、これを修正しました。
SDK の 3.0 以降で発生する不具合です。
ワイヤレス通信機能が停止すると、ワイヤレス通信関係の非同期関数の完了コールバックが呼び出されなくなります。
fake_child を使用して、複数台の子機を接続した場合に不具合が発生することが分かっています。
なお、親機から通信を終了するような処理になっている場合は、この不具合の影響を受けません。

### Note 32-38: (WM) 自ら切断した場合の切断通知の追加

これまでは、WM_DisconnectChildren 関数などの WM 関数を明示的に呼び出して接続を切断した場合は切断通知が発生しない仕様でしたが、 新規に WMStateCode に WM_STATECODE_DISCONNECTED_FROM_MYSELF を追加し、これで切断通知するように変更しました。
この変更によりソースコードの非互換が発生する可能性があります。
WMStartParentCallback, WMStartConnectCallback, WMPortRecvCallback の state フィールドに入る可能性のあるステートコードが増えていますので、 既知の WM_STATECODE_* 以外を受け取った場合はプログラムの実行を停止する、などの処理を行っている場合は注意が必要です。
また、この通知を利用して DataSharing は親機から明示的に子機を切断しても停止しなくなりました。
この対応にともなって、以下の関数を追加しました。

- WM_GetAID 関数
- WM_GetConnectedAIDs 関数

### Note 32-39: (WM) 接続と切断に関する内部動作の再修正

Note 31-24 および Note 30-07 で公開された修正項目が完全な対応ではありませんでしたので、これを再度修正しました。

### SDK 3.0 RCでの既知の問題点

- 本 SDK に含まれている ntexconv ( $NitroSDK/tools/bin/ntexconv.exe ) は、現在リリースされている TXLib パッケージ内の ntexconv に比べてバージョンが古くなっています。
  SDK ではアイコンイメージ作成時にのみ ntexconv を使用しているので古いバージョンのままでも問題はありませんが、テクスチャ作成を目的として ntexconv を使用される場合は問題がありますので、最新の TXLib パッケージ内の ntexconv を使用して下さい。

## ■ NITRO-SDK Version 3.0 PR4

(2005/09/08)

### Note 31-01: (CARD) CARD_CancelBackupAsync 関数の追加

バックアップデバイスの非同期処理を中断するための関数として CARD_CancelBackupAsync 関数を追加しました。
また、この関数で中断された処理の結果値として CARDResult 列挙値に CARD_RESULT_CANCELED を追加しました。

### Note 31-02: (CARD) FRAM デバイス操作の内部処理修正

FRAM デバイスをバックアップに使用している場合、本体起動時に稀にハードウェア内部ステータスの不整合が生じることがあり、その対応処理を追加しました。

### Note 31-03: (CARD) エラーコード CARD_RESULT_NO_RESPONSE の追加

バックアップ操作関数の結果値として、CARDResult 列挙型に CARD_RESULT_NO_RESPONSE を追加しました。
これは CARD_RESULT_TIMEOUT から細分化されたエラー値で、カードの接触不良とおぼしき場合に返されます。

### Note 31-04: (DevEnv) lsf ファイルにおけるオーバーレイグループのサポート

オーバーレイグループをサポートしました。
リンカは同一グループに属するオーバーレイが、同じメモリ領域上に配置されていると仮定します。
互いに排他的なオーバーレイモジュールを同一のグループに指定しておくことで、そのオーバーレイ間の関数呼び出しをリンク時にエラーとして検出できます。
互換性保持のため、オーバーレイグループ省略時には現セクション名と同じ名のグループが設定されます。

### Note 31-05: (DevEnv) makelcf における特定のセクション名での不具合の修正

lsf ファイルにおけるセクションの記述において main と main_bss というように"存在するセクション名" + "_bss" というセクションが存在すると問題が起きる場合がありました。
"_bss" の他にも "_DATA", "_BSS" など幾つかの文字列で同様の問題が起きました。
これは lcf.template ファイルの問題です。
$NitroSDK/include/nitro/specfiles 以下の *.lcf.template ファイルを修正しました。
これにより前のバージョンまで存在していたオーバーレイに関する幾つかのシンボル情報を直接参照することが出来なくなりました。
これにより、シンボルを直接参照しているアプリケーションに不都合が起こる可能性があるため、当面の間、古いバージョンの *.lcf.template を $NitroSDK/include/nitro/specfiles/2.x に収録します。
必要に応じて、これを $NitroSDK/include/nitro/specfiles へ上書きコピーしてください。
(make でビルドを行なう場合は変数 LCFILE_TEMPLATE で指定してください)
オーバーレイに関する情報を取得する場合、オーバーレイID をインデックス値としてオーバーレイテーブルを参照するのが公式な方法ですので、よろしくお願いします。

### Note 31-06: (DevEnv) makelcf の修正

DTCM にオーバーレイを配置すると、メインメモリ領域のアリーナの設定に不具合が起こっていましたが、これを修正しました。
ITCM のオーバーレイを行なった際のITCMアリーナ設定も正しく修正しました。
またこれまで出来なかった拡張メインメモリ領域のオーバーレイにも対応しました。

### Note 31-07: (DevEnv) ツールコマンド loadrun, nitrorun の追加

loadrun はバイナリデータを IS-NITRO-EMULATOR にダウンロードし、実行するためのコマンドです。
動作時間や OS_Exit 関数の呼び出しなどで終了することが出来ます。
nitrorun は引数データをバイナリに埋め込む buryarg コマンドと loadrun コマンドを一度に呼び出すためのスクリプトです。
コマンドラインから引数を与える感覚でバイナリの実行が可能となります。

### Note 31-08: (ENV) 環境リソースライブラリ libenv*.a の追加

リソース名からそのリソースに対応する値を取得する ENV ライブラリを追加しました。
これは動作環境のパラメータをプログラムに与えるのに用いられ、再コンパイルは必要ですが、パラメータを容易に書き換えたり複数のプログラムで共通の環境を設定するのに便利なライブラリとなっています。

### Note 31-09: (FS) FS_EndOverlay関数の修正

Note 28-03での動作変更にともない、オーバーレイのアンロード時にオーバーレイ上にあるグローバルなオブジェクト配列のデストラクタが正しく起動しないという不具合があり、これを修正しました。

### Note 31-10: (FS) ドキュメントの修正

以下のFSライブラリ解説ドキュメントにおいていくつかの誤記を修正しました。

- $NitroSDK/docs/TechnicalNotes/AboutFileSystem.pdf

### Note 31-11: (FX) FX_FX64C_TO_F32 マクロの修正

fx64c 型から f32 型への変換を行なうマクロ FX_FX64C_TO_F32 に不具合があり、正確な値を返していませんでした。
これを修正しました。

### Note 31-12: (FX) FX_InvSqrt 関数の不具合修正

FX_InvSqrt 関数に与える引数が一定値を超えると正しく計算されないという不具合がありましたが、これを修正しました。

### Note 31-13: (MB) MB_GetMultiBootDownloadParameter 関数の追加

Note 27-22で追加した機能に関連し、ダウンロード時のユーザ定義拡張パラメータを参照する MB_GetMultiBootDownloadParameter 関数を追加しました。

### Note 31-14: (NVRAM) NVRAM からデータを読み出す際のエラー判定に関する不具合の修正

NVRAM からデータを読み出す際、読み出し先のバッファのアドレスが 0x02400000 を越えると読み出しに失敗するという不具合が発見されました。
この不具合を修正しました。

### Note 31-15: (OS) ARM7 側のデバッグ出力関数のリファレンス追加

従来から存在した ARM7 側のデバッグ出力に使用する OS_InitPrintServer 関数および OS_PrintServer 関数のリファレンスを追加し、アプリケーションで特に使う必要がない旨も記述しました。

### Note 31-16: (OS) DTCM アリーナの上位アドレス不具合の修正

DTCM アリーナの上位アドレスを決定する個所に不具合がありました。
rsf ファイルでスタックサイズの指定に負の値を指定したときに生じていました。
これを修正しました。

### Note 31-17: (OS) NitroStaticInit 関数のリファレンス追加

Note 27-31の追加にあわせ、NitroStaticInit 関数の説明を関数リファレンスに追加しました。

### Note 31-18: (OS) OSThread 関連の関数の引数 const 型の整理

OSThread 関連の関数で、引数に OSThread* 型のものを取るものについてその引数を const OSThread* として定義したほうがよいと判断したものについてそのように修正しました。
修正したのは以下の関数です。

- OS_IsThreadTerminated 関数
- OS_CheckStack 関数
- OS_GetThreadPriority 関数
- OS_GetThreadDestructor 関数
- OS_GetThreadParameter 関数
- OS_GetStackStatus 関数
- OS_DumpThreadCallTrace 関数

### Note 31-19: (OS) OS_GetOpt 関数の追加

ツールコマンド buryarg で埋め込んだ srl 等バイナリの引数データの中から、'-'で始まる文字列をプログラムに対する実行オプションとして取得するのに便利な OS_GetOpt 関数を追加しました。
実行時には、パラメータはオプションの後に来るようにしてください。
またサンプルデモの $NitroSDK/build/demos/os/argument-1 に OS_GetOpt 関数を使用するコードを追加しました。

### Note 31-20: (SND) キャッシュ無効化処理の最適化

サウンドライブラリ内から DC_InvalidateRange 関数を呼びだしている箇所で、指定している範囲が必要以上に広かったため、適切なサイズになるように修正しました。
この修正により、サウンド処理の負荷が軽減されます。

### Note 31-21: (WM) MP 通信時の切断検知処理の不具合修正

MP通信時に、通信相手の電源が切れるなどして存在しなくなった場合にはタイムアウトにより通信の切断が通知されますが、タイムアウト時の処理に不具合があり、切断通知が発生しない場合がありました。この不具合を修正しました。

### Note 31-22: (WM) SSID マッチング長指定可能なスキャン種類の追加

WM_StartScanEx 関数で行う SSID の一致確認を特定の長さに限定したいという特殊な用途に対応するために、WMScanExParam.scanType に WM_SCANTYPE_ACTIVE_CUSTOM と WM_SCANTYPE_PASSIVE_CUSTOM を追加しました。
この scanType を使用すると WMScanExParam.ssidMatchLength で指定した長さまでしか SSID の一致確認を取らなくなります。
これに伴い、WMScanExParam 構造体が変更されています。

### Note 31-23: (WM) インフラストラクチャモードにおけるスキャンの SSID マッチング長の修正

インフラストラクチャモード時に WM_StartScanEx 関数で SSID を指定してスキャンした場合、先頭の8バイトしか一致確認を取っていないという不具合がありました。
これを WMScanExParam.ssidLength で指定した長さで一致確認を取るように修正しました。

### Note 31-24: (WM) 子機接続に関する内部処理の修正

通信状態の非常に悪い環境で子機から繰り返し再接続を受ける状況において親機の内部状態が異常になるという不具合があり、これを修正しました。

### Note 31-25: (WM) 接続失敗時の原因をより詳細にするインターフェースの追加

WM_StartConnect[Ex] 関数を用いて接続を試みた結果失敗した場合に、失敗理由を類推する助けとなる通信相手の状態コードをコールバック関数にて通知する機能を追加しました。
具体的には WMStartConnectCallback 構造体に wlStatus メンバを追加しました。
なお、通常の使用時にはアプリケーションから特に参照して頂く必要はありません。

### SDK 3.0 PR4での既知の問題点

- C標準関数互換のライブラリとして、STDライブラリがテスト公開されています。
  現在は一部の関数のみ使用可能ですが、リファレンスは収録されておりません。

## ■ NITRO-SDK Version 3.0 PR3

(2005/08/10)

### Note 30-01: (CARD) CARD_CheckPulledOut 関数のリファレンス修正

CARD_CheckPulledOut 関数のリファレンスにて、この関数を呼び出す前に CARD_LockRom 関数を呼び出して CARD-ROM のバスをロックしておく必要がある旨を追記しました。

### Note 30-02: (CARD) CARD_IdentifyBackup 関数の引数制限

CARD_IdentifyBackup 関数に与えるデバイス種別で CARD_BACKUP_TYPE_NOT_USE を指定出来ないよう制限を追加しました。
この変更は 3.0PR で入っていましたが、changelog から漏れていました。

### Note 30-03: (MB) サンプルデモの修正

$NitroSDK/build/demos/mb/cloneboot サンプルに以下の修正を行いました。

- 親機側が ConnectMain 関数に失敗した場合に WH モジュールを終了せず再試行してしまう不具合があり、これを修正しました。

### Note 30-04: (OS) OS_SetThreadDestructorStack 関数の追加

スレッドデストラクタが実行される際のスタックを指定する OS_SetThreadDestructorStack 関数を追加しました。
特に指定がない場合は、スタックポインタは自らのスレッドを破棄する場合はそのままで、他のスレッドに破棄された場合はスタックの最上位に変更されます。

### Note 30-05: (OS) OS_Sleep 関数で用いるアラームのキャンセル処理

OS_Sleep 関数で休止状態になっているスレッドが他のスレッドから破棄された場合、OS_Sleep 関数で用いているアラームを破棄するように しました。
これまではアラームが破棄されなかったため、すでに不要となったアラームハンドラが呼ばれたり、アラームリストが上書きされてしまうことがありました。

### Note 30-06: (WM) 子機側の過負荷時の処理の変更

Note 29-08と関係して、内部処理の都合により子機側の過負荷時の処理を変更しました。
これまでは、子機側の ARM7 が過負荷になり、送信データの設定が間に合わなかった場合には Null 応答が出ていましたが、その代わりに応答をまったく返さないように変更しました。
この副作用として、子機側は過負荷時には受信処理が飛ばされるようになり、通信効率が若干落ちますが、負荷は低減されます。

### Note 30-07: (WM) 切断時の内部動作の変更

Note 25-22により、切断時には切断通知を出せる電波状態になるまで待つように変更していましたが、これを一定の時間でタイムアウトするように変更しました。
これにより WMTestTool.srl を用いて Noise Rate を 100% にした場合に終了しなくなっていた件が改善されます。

### SDK 3.0 PR3での既知の問題点

ありません。

## ■ NITRO-SDK Version 3.0 PR2

(2005/08/04)

### Note 29-01: (DevEnv) ISD_NITRO_DEBUGGER のパス修正

$NitroSDK/build/buildtools/commondefs.emtype.ISD で定義される ISD_NITRO_DEBUGGER が指すパスの位置を修正しました。

### Note 29-02: (GX) Sub_Double3D サンプルデモの再修正

$NitroSDK/build/demos/gx/UnitTours/Sub_Double3D サンプルデモに以下の修正を行いました。
Note 27-15で行った修正内容が完全でなく、同様の症状が再現する場合があったため、これを再び修正しました。

### Note 29-03: (GX) ディスプレイリストの状態取得関数の引数へ const 修飾子を追加

以下の関数で引数では渡されたポインタの内容を書き換えていませんが、引数に const 修飾子が付いていませんでしたので、これを追加しました。

- G3_GetDLStart 関数
- G3_GetDLLength 関数
- G3_GetDLSize 関数

### Note 29-04: (OS) OS_GetLowEntropyData 関数の追加

実行毎にシステム状態から異なるデータを生成して返すOS_GetLowEntropyData 関数を追加しました。
また、デモとして $NitroSDK/build/demos/os/entropy-1 を追加しました。

### Note 29-05: (PM) LCD オフ状態からスリープモードに移行したあとの復帰処理の修正

LCD オフの状態からスリープモードに移行して復帰すると、GX ライブラリの内部状態と実際の状態に不整合が生じるという不具合がありました。これを修正しました。
(参照：Note 22-23 (PM) LCDオフ状態からスリープモードに移行したあとの復帰処理の変更)

### Note 29-06: (WM) WM_SetIndCallback 関数のコールバックへの通知の追加

WM_SetIndCallback 関数のコールバックに通知されるものに WM_STATECODE_INFORMATION を追加しました。これは、内部で発生した事象の情報を通知するためのものです。
コールバック引数の WMIndCallback.reason で通知内容を表します。reason の値としては、WM_StartMPEx 関数の ignoreFatalError を TRUE にし、かつ fatal error が発生した場合に通知される WM_INFOCODE_FATAL_ERROR が定義されています。

### Note 29-07: (WM) WM_SetPowerSaveMode 関数の追加

インフラストラクチャ通信時に省電力モードを切り替える WM_SetPowerSaveMode 関数を追加しました。

### Note 29-08: (WM) ignoreFatalError 設定時の復帰不具合の修正

WM_StartMPEx 関数の ignoreFatalError 引数を TRUE にしていた場合、子機側で fatal error が発生しても自動切断されなくなりますが、ここの処理に不具合があり、以降の通信ができなくなっていました。
これを修正しました。

### Note 29-09: (WM) 子機側の受信処理の変更

これまで、子機は自分宛でない MP フレームを受信した場合、WM_StartMP 関数に state が WM_STATECODE_MP_IND で errcode が WM_ERRCODE_INVALID_POLLBITMAP の通知が来ていましたが、これを全く何の通知も出さないように変更しました。
また、MP ACK フレームでの WM_STATECODE_MPACK_IND の通知も同様に変更しました。
なお、port を利用した送受信はこの変更による影響を受けません。

### Note 29-10: (WVR) thumb ビルド版 ichneumon コンポーネントの不具合修正

thumb ビルド版の ichneumon コンポーネントを使用するとプログラムが動作しないという問題が確認されていましたが、これを修正しました。

### SDK 3.0 PR2での既知の問題点

ありません。

## ■ NITRO-SDK Version 3.0 PR

(2005/07/22)

### Note 28-01: (Cht) ピクトキャッチ用デモの追加

ピクトキャッチ処理を行うサンプルデモを $NitroSDK/build/demos/cht/catch-min に追加しました。
このサンプルデモは、必要最小限の機能しか実装していないので、従来からあるピクトキャッチのサンプルデモよりもコードサイズが小さくなっています。

### Note 28-02: (DevEnv) nitro.h のプリコンパイルヘッダ対応

$NitroSDK/include/nitro.h に対するプリコンパイルヘッダに対応するようになりました。
ビルドシステムはビルドに先立ち $NitroSDK/include/nitro.h をプリコンパイルし、その結果をファイルのビルド時に読み込みます。
これによりビルドの高速化が期待できます。
もし、このコンパイルを一時的に抑制したい場合は、NITRO_NO_STD_PCHDR に値を設定してください。

### Note 28-03: (FS) オーバーレイ関数の動作変更

アンロードされるオーバーレイ上に配置されたデストラクタを必要とするグローバルオブジェクトが存在している場合に、従来はこれらに対して自動的にデストラクタを呼び出していましたが、これを呼び出さないように動作を変更しました。

### Note 28-04: (GX) サンプルデモの修正

$NitroSDK/build/demos/gx/UnitTours/2D_Oam_256_16 サンプルデモ内部の十字キー操作において、FINALROM で十字キーの操作ができないバグがありました。
この問題を修正しました。

### Note 28-05: (MATH) MD5 関数の高速化

MD5 関数の実装を差し替えました。
コードサイズは約半分になり、以前の実装から2割程度の速度が向上しています。
インターフェイスの変更はありません。
この変更は 2.2PR で入っていましたが、changelog から漏れていました。

### Note 28-06: (OS) IRQ スタックのスタック溢れチェック機構の追加

IRQ モードでのスタックに、スレッドのスタックと同様のスタック溢れチェック機構を追加しました。
これはスタックの最上位、最下位(と、必要ならばその間)にチェックコードを書き込んでおき、そこが書き換えられたかによって、スタックがその位置まで到達したかどうかを調べる、というものです。
このために追加された関数は以下の通りです。

- OS_SetIrqStackChecker
- OS_SetIrqStackWarningOffset
- OS_CheckIrqStack
- OS_GetIrqStackStatus

### Note 28-07: (OS) OS_GetArgc 関数および OS_GetArgv 関数による引数のサポート

ROMファイルに引数データを与え、プログラムから取得する機構を用意しました。
$(NitroSDK)/tools/bin/buryarg のツールで引数データを埋め込み、OS_GetArgc 関数と OS_GetArgv 関数でそのデータをプログラムから利用することが出来ます。 これを利用すれば、コンパイルすることなくプログラムの実行条件を変更することが可能です。
また、この機能を使用したサンプルデモを $NitroSDK/build/demos/os/argument-1 として追加しました。
この機能はデバッグ用途として用意されており、FINALROMビルド時には無効化されます。

### Note 28-08: (OS) OS_KillThread 関数と OS_KillThreadWithPriority 関数の追加

他のスレッドを終了させる関数として OS_KillThread 関数と OS_KillThreadWithPriority 関数を追加しました。終了時にスレッド優先度を設定するかしないかでいずれかを使い分けることが出来ます。
OS_KillThread 関数と OS_DestroyThread 関数との違いは、終了するスレッドのスレッドデストラクタが呼ばれるかどうかという点です。
これら２つの関数を比較するサンプルデモを $NitroSDK/build/demos/os/thread-9 に追加しました。

### Note 28-09: (OS) スレッドデストラクタの実装

スレッドが終了する際に予め設定した関数を呼ばせる、スレッドデストラクタの機能を実装しました。
設定は OS_SetThreadDestructor 関数となります。
スレッドデストラクタが呼ばれるのは以下の場合です。

- スレッドのタスクを最後まで実行し終わった
- OS_ExitThread 関数で終了した
- OS_KillThread* 関数で他のスレッドから終了させられた
- OS_KillThread* 関数で自らのスレッドを終了させた

以下の場合はスレッドデストラクタは呼ばれません。

- OS_DestroyThread 関数で他のスレッドから終了させられた
- OS_DestroyThread 関数で自らのスレッドを終了させた

スレッドデストラクタのサンプルデモを $NitroSDK/build/demos/os/thread-7 に追加しました。

### Note 28-10: (OS) スレッド構造体へのユーザパラメータ追加

スレッド構造体 OSThread にユーザパラメータメンバを追加しました。
この領域はシステムで参照することも変更することもありません。
アプリケーションごとに自由な用途に使用することが出来ます。
設定と取得は以下の関数で行ないます。

- OS_SetThreadParameter
- OS_GetThreadParameter

### Note 28-11: (OS) スレッド最大数の制限を撤廃

これまで OS で同時に扱えるスレッドの最大個数は16個(通常16個で、ヘッダ内定義の書き換えによって8〜32個が可能) でしたが、この最大数制限を撤廃しました。
スレッドに関する API はこれまでと変わりません。
この変更に関して、スレッドを大量に作成する２つのサンプルデモを $NitroSDK/build/demos/os/thread-8 と $NitroSDK/build/demos/os/thread-10 に追加しました。

### SDK 3.0 PRでの既知の問題点

ありません。

## ■ NITRO-SDK Version 2.2 PR

(2005/07/15)

### Note 27-01: (CARD) CARD_CheckPulledOut 関数の追加

ARM7 が定期的に行うカード抜け検出処理の結果通知を待たず ARM9 から直接判定を行う関数として CARD_CheckPulledOut 関数を追加しました。
特にカードアクセスをしていない通常の場面では必要ありませんが、カード抜けを遅延無く確実に判定する必要がある場面においては CARD_IsPulledOut 関数のかわりにこちらを使用することができます。

### Note 27-02: (CARD) 新規バックアップデバイスへの対応

CARD ライブラリが 512kb EEPROM および 256kb FRAM バックアップデバイスに対応し、CARD_BACKUP_TYPE_EEPROM_512KBITS と CARD_BACKUP_TYPE_FRAM_256KBITS を CARDBackupType 列挙型に追加しました。

### Note 27-03: (CTRDG) カートリッジ情報取得時のキャッシュ操作の修正

CTRDG_Init 関数実行時の、カートリッジ情報領域を読む際のキャッシュ操作を修正しました。
これまでメーカーコードやゲームコードといったカートリッジ情報を取得する際に誤った値を返すことがありましたが、修正されました。

### Note 27-04: (DevEnv) bin2obj ツールの追加

バイナリファイルをオブジェクトファイルに変換するためのツール bin2obj を追加しました。
これは CodeWarrior for NINTENDO DS パッケージ内の BinToElf ツールと同じ働きをするものですので、どちらを使用しても問題ありません。

### Note 27-05: (DevEnv) CYGWIN の cygdrive prefix が /cygdrive ではない場合のサポート

CYGWIN のコマンドラインからビルドを行なう場合において、cygdrive prefix がデフォルトの設定である /cygdrive でない場合にビルドが失敗していました。
これを修正し cygdrive prefix が変更されている場合にもビルドが出来るようにしました。

### Note 27-06: (DevEnv) LCF テンプレートの修正

$NitroSDK/include/nitro/specfiles/ARM9-TS-cloneboot-C.lcf.template の LCF テンプレートを使用するプログラムでは .sinit セクションがリンクされず static initializer の機能が使用できませんでしたが、これを修正しました。

### Note 27-07: (DevEnv) rsf の StackSize 指定の不具合修正

rsf(リンカスペックファイル)にて指定する StackSize で、第1パラメータに負数を指定すると指定可能な最大サイズからパラメータ値の絶対値を引いたものとなるという仕様が有効ではありませんでした。
これを修正しました。

### Note 27-08: (DevEnv) TS_VERSION のデフォルト値の変更

PMIC のバージョンを示す SDK_TS_VERSION 定数のデフォルト値を 100 から 200 に変更しました。
SDK_TS_VERSION = 200 は、IS-NITRO-EMULATOR ハードウェア Ver.E 以上、ニンテンドーDS 製品 に搭載されております PMIC のバージョンに相当します。
この変更により NITRO-SDK にて提供しております機能の内部動作が変わることはありませんが、この定数をビルドスイッチとして動作を変更するアプリケーション(マイクを使用するサンプルデモなど) には影響が生じますのでご注意下さい。
なお、環境変数として NITRO_TS_VERSION を指定すると SDK_TS_VERSION はデフォルト値ではなく指定した値となります。
また、NITRO-SDK では TS_VERSION 毎に os 及び spi ライブラリが用意されています。
これは TS ブレッドボードなどを用いた開発環境においてオーナー情報のセーブフォーマットが古い場合に意味を持ちますが、セーブフォーマットが発売実機と同等の場合には全く同じライブラリとなります。
make システムを使用した場合には環境変数により自動的にリンクするライブラリが選択されますが、IDE を使用する開発環境では手動でリンクするライブラリを選択して頂く必要があります。
但し TS ブレッドボードなどを用いた開発環境を使用する場合を除いてはライブラリを選択する意味がありませんので、デフォルトでリンクされるライブラリを用いることに問題はありません。

### Note 27-09: (DevEnv) #include のサーチパスの変更

Makefile を用いたビルドを行う際の #include のサーチパスに #include を呼び出したファイルのあるディレクトリも含めるように変更しました。
従来どおりのサーチパスである必要がある場合は、Makefile 中で
MACRO_FLAGS += -cwd proj
という指定を入れるようにしてください。

### Note 27-10: (FS) FS_CreateFileFromMemory 関数および FS_CreateFileFromRom 関数の追加

メモリ領域やCARDの特定の領域を一時的なファイルとみなして開く関数として、FS_CreateFileFromMemory 関数および FS_CreateFileFromRom 関数を追加しました。
また、これらの動作を示すサンプルとして $NitroSDK/build/demos/fs/file-3 サンプルデモを追加しました。

### Note 27-11: (FS) FS_End 関数の追加

FS ライブラリを初期化前の状態に戻す関数として FS_End 関数を追加しました。

### Note 27-12: (FS) FS_WaitAsync 関数の不具合修正

非同期コマンドがまだアーカイブに処理されていない状態のファイルハンドルに対して FS_WaitAsync 関数を呼び出した場合にアーカイブの処理が停止してしまうという不具合があり、この問題を修正しました。

### Note 27-13: (FS) オーバーレイのアンロード時の不具合修正

FS_UnloadOverlay関数やFS_EndOverlay関数でオーバーレイをアンロードする際にデストラクタが正しく呼び出されないことがあるという不具合があり、 この問題を修正しました。
具体的には、次の条件を同時に満たすオブジェクトが対象になります。

- オーバーレイの.dataセクションに配置されている
- デストラクタの実体がオーバーレイ上に配置されていない

### Note 27-14: (FX) 逆正接関数の不具合修正

(x, y)の傾きが限りなく1に近い場合において以下の逆正接関数が誤った値を返すという不具合があり、これを修正しました。

- FX_Atan2
- FX_Atan2Idx

具体的には、以下の条件を満たす(x, y)が対象となります。
((x != y) && (FX_Div(y, x) == FX32_ONE))

### Note 27-15: (GX) Sub_Double3D サンプルデモの修正

$NitroSDK/build/demos/gx/UnitTours/Sub_Double3D サンプルデモに以下の修正を行いました。
2画面3Dと負荷の高い処理を併用したときに、まれに上画面のものが下画面に（もしくは、下画面のものが上画面に）一瞬回り込んでしまうという不具合があり、これを修正しました。

### Note 27-16: (GX) ディスプレイリスト操作関数内でのASSERT不具合修正

ディスプレイリストを操作する関数の内部から呼び出される G3C_UpdateGXDLInfo 関数および G3B_UpdateGXDLInfo 関数で、バッファのサイズとちょうど同じサイズのディスプレイリストを作成する場合に ASSERT の判定にかかってしまう不具合がありました。
この不具合は修正されました。

### Note 27-17: (MATH) MATH_QSort 関数の不具合修正

MATH_QSort 関数でのソートの際に、場合によって対象配列へのオーバーアクセスが発生する不具合が存在しました。
この不具合は修正されました。

### Note 27-18: (MATH) SHA-1 関数の高速化

SHA-1 関数の実装を差し替えました。
コードサイズはほぼ変わらず、以前の実装の倍程度の速度が出ています。
インターフェイスの変更はありません。

### Note 27-19: (MATH) 高速フーリエ変換関数の追加

高速フーリエ変換を行う関数を追加しました。
また、その動作確認デモを $NitroSDK/build/demos/math/fft-1, fft-2 として追加しました。

### Note 27-20: (MB) multiboot-wfs サンプルの追加

DSダウンロードプレイで配信した子機がワイヤレス経由でファイルシステムを使用するサンプルを $NitroSDK/build/demos/mb/multiboot-wfs に追加しました。

### Note 27-21: (MB) デバッグ用の拡張メモリ領域の解放

MB プロトコルにてブートした子機は、メインメモリを強制的に 4M 設定として拡張メモリを使用できないように制限を設けていましたが、これを廃止し、IS-NITRO-EMULATOR 等の 8M メインメモリを持つハードウェアでは拡張領域を使用することも可能となるように修正しました。

### Note 27-22: (MB) ユーザ定義拡張パラメータの追加

MBGameRegistry 構造体に userParam メンバを追加しました。
このバッファに最大32バイトまでの自由なデータを設定して MB_RegisterFile 関数を使用すると、DSダウンロードプレイ子機はそのデータを起動後に参照することができます。

### Note 27-23: (MI) MI_CompressHuffman 関数および ntrcomo.exe のハフマン圧縮不具合修正

MI_CompressHuffman 関数及び ntrcomp.exe の不具合で、単一の値で埋められたデータが正常に圧縮されない場合がありました。
この不具合は修正されました。

### Note 27-24: (OS) OS_Sleep 関数の内部動作修正

OS_Sleep 関数を呼び出して待機しているスレッドに対して OS_WakeupThreadDirect 関数を呼び出した場合にその後のアラーム処理に異常が生じるという不具合があり、これを修正しました。

### Note 27-25: (OS) OS_TryLockMutex 関数不具合の修正

OS_TryLockMutex 関数で mutex のロックを行なった際の OS 内部で保持している mutex のリスト操作を誤っていました。
そのため、OS_UnlockMutex 関数で例外が発生することがあったり、mutex をロックしたままスレッドを終了させた際に不具合が発生したりしていました。これを修正しました。
なお、OS_TryLockMutex 関数ではなく、OS_LockMutex 関数は正常動作しており、これらの不具合はありません。

### Note 27-26: (OS) OS_YieldThread 関数の追加

カレントスレッドと同優先度で実行可能状態になっているスレッドに対して実行機会を与えながらスレッドスケジューリングを行なう OS_YieldThread 関数を追加しました。

### Note 27-27: (OS) 起動時初期化処理の内部修正

プログラム起動時の autoload および各セグメント初期化時にキャッシュのクリーン/無効化を確実に行うよう内部処理を修正しました。

### Note 27-28: (OS) 中国版起動画面処理の拡張

中国語対応アプリケーションの起動画面表示処理自体を SDK_WEAK_SYMBOL で修飾し、OS_ShowAttentionChina 関数として公開し、外部定義によるこの実装の差し替えを可能にしました。
それらとあわせて、起動時にのみ使用する画像のデータを静的リンクせずにファイルシステムからロードする方法を示すサンプルとして $NitroSDK/build/demos/os/forChina-fsを追加しました。

### Note 27-29: (OS) データキャッシュのフラッシュ不具合の修正

Note 24-10、Note 25-16で扱われた不具合の原因判明にともない、DC_FlushRange 関数および DC_FlushAll 関数の内部実装を CPU の flush 命令で実現するように変更しました。
具体的には、「ライトバッファがフルの状態で flush 命令を実行するとクリーンなキャッシュラインが無効化されない」という症状を回避するために flush 命令の直前と割り込みハンドラからの復帰時にライトバッファエンプティ待ち命令を挿入しました。
関数仕様に変更はありません。

### Note 27-30: (OS) 複数の OSMutex をロックする際の不具合修正

OSMutex 内部で保持している mutex のリスト処理に不具合がありました。
具体的には、1つのスレッドが、同時に複数の OSMutex に対して OS_LockMutex 関数や OS_TryLockMutex 関数でロックをかける際に不具合が発生します。
これを修正しました。
なお、1つのスレッドが同時に最大1つの OSMutex しかロックしない場合には不具合は発生しません。

### Note 27-31: (OS) ヘッダファイルに関するリファレンス追加

NITRO-SDK のヘッダファイルのうち主要なものや特殊な機能を持つものについて、説明を関数リファレンスの OS カテゴリ内に追加しました。
以下のファイルに関して解説しています。

- nitro.h
- nitro_win32.h
- nitro/sinit.h
- nitro/code32.h、nitro/code16.h、nitro/codereset.h
- nitro/dtcm_begin.h、nitro/dtcm_end.h
- nitro/itcm_begin.h、nitro/itcm_end.h
- nitro/parent_begin.h、nitro/parent_end.h
- nitro/version_begin.h、nitro/version_end.h
- nitro/wram_begin.h、nitro/wram_end.h
- nitro/version.h

### Note 27-32: (RTC) 日付・時刻と総経過秒の相互変換関数の追加

RTCDate, RTCTime 型の日付・時刻データと2000年1月1日からの総経過秒との相互変換関数を RTC カテゴリに追加しました。同様に、RTCDate 型と総経過日数との交互変換関数を追加しました。
動作確認用のデモは $NitroSDK/build/demos/rtc/convert-1 です。

### Note 27-33: (RTC) 日付・時刻を変更する API への制限追加

デバッグ用途を目的として、RTC の日付・時刻を変更する API を用意しておりましたが、デバッグ用途以外での誤った使用を避けるために、NITRO_FINALROM を指定した場合には RTC への書き込み要求が必ず失敗するように制限を設けました。
動作が変更される API は以下の通りです。

- RTC_SetDateTimeAsync
- RTC_SetDateTime
- RTC_SetTimeAsync
- RTC_SetTime
- RTC_SetDateAsync
- RTC_SetDate

### Note 27-34: (WBT) Wbt-fs サンプルデモの修正

$NitroSDK/build/demos/wbt/wbt-fs のサンプルデモに以下の修正を行いました。
・FS_LoadTable 関数に使用するテーブルメモリを接続と切断の繰り返しごとに解放せず確保し続けてメモリリークが発生していましたので、これを修正しました。

### Note 27-35: (WBT) WBT サンプルデモの修正

$NitroSDK/build/demos/wireless_shared/wc サンプルモジュールおよび $NitroSDK/build/demos/wbt/wbt-1 サンプルデモに以下の修正を行いました。
「連続 MP 通信中の無線親機において、新たに子機が接続されると無条件に送信バッファを上書きしてしまい、タイミングによっては送信バッファにデータを書き込んでいる最中に無線ハードウェアに送られ、WBT パケットの不整合が発生していた。」うという不具合があり、これを修正しました。
修正内容は、$NitroSDK/build/demos/wbt/wbt-1/src/main.c 内で WBT 親機に現在接続中の子機情報を持たせることにより、
１、１台目の子機なら連続 MP 通信をはじめる。
２、２台目以降の子機なら何もしない。(連続 MP 通信中なのでなにもしなくていい)
３、子機がいなくなると連続 MP 通信をやめる。
という処理を追加しました。
また、上記処理で子機が切断されたという情報が必要になったため、$NitroSDK/build/demos/wireless_shared/wc/wc.c 内で子機が切断されたときにサンプル側のコールバックを呼ぶように修正しました。

### Note 27-36: (WM) Key Sharing 関数の仕様変更と廃止予定の明記

WM の使用メモリサイズを減らすために、ほとんど使われていない WM_StartKeySharing, WM_EndKeySharing, WM_GetKeySet の各関数の仕様を変更し、Key Sharing 用の固定バッファを WM 初期化時に確保しないようにしました。
また、Key Sharing 機能は今後廃止予定ですので、代わりに WM_StartDataSharing, WM_EndDataSharing, WM_StepDataSharing の各関数を使用していただきたいという旨をドキュメントに追記しました。

### Note 27-37: (WM) WM_StartScanEx 関数の内部動作の変更

WM_StartScanEx 関数にて SSID をフィルター指定した場合でも、見つかった親機情報内の SSID が指定した SSID と異なる無効なデータとなる場合があることが分かりました。
この問題への対策として、WM ライブラリ内でフィルター指定した SSID をみつかった親機情報内の SSID に必要に応じて上書きする処理を追加しました。
なお、この現象はインフラストラクチャモードで通信する親機が SSID を隠蔽している場合にのみ発生します。

### Note 27-38: (WM) WMTestTool.srl の更新

NitroSDK/bin/ARM9-TS/Rom/WMTestTool.srl にあるワイヤレス通信のテスト用ツールを更新しました。
これまでは Scan 時にアクセスポイントを発見すると "WLAN AP" と表示していましたが、代わりに SSID を表示するように変更しています。
この変更は、Scan Test モード、ScanEx Test モードの双方に施されています。

### Note 27-39: (WM) 子機が接続していない場合での MP 通信の抑止

これまでは、ワイヤレス通信の親機が WM_StartMP 関数を呼び出すと、子機が1台も接続していない場合でも MP フレームを送信していましたが、これを送信しないように変更しました。
port の送受信コールバックの挙動は基本的には変わりません。

### Note 27-40: (WM) 子機切断通知の不具合修正

MP 通信で子機が NULL 応答のみを返し続けてタイムアウトした場合に親機の WMStartParentCallback コールバックへ複数回の WM_STATECODE_DISCONNECTED 通知が発生することがあり、これを修正しました。
この問題はおもに、IS-NITRO-DEBUGGER で起動させた子機を MP 通信中のまま長時間一時停止させた場合に発生します。

### Note 27-41: (WM) フレームあたりの MP 通信回数制限の追加

これまで、連続通信モードや通信の失敗が続いた後などでは、送れるだけ送りつづけるという動作をしていましたが、空データしか送受信しないような状況で、MP 回数が急に増大し子機側の受信処理が追いつかずに不具合を引き起こすことがありました。
その対策として、1ピクチャフレーム中に親機が送信する MP 通信の再送なども含めた回数に6回という上限を設定しました。
通常の通信をしていれば、この制限にかかることはありません。

### SDK 2.2 PRでの既知の問題点

ありません。

## ■ NITRO-SDK Version 2.1 正式版

(2005/05/09)

### Note 26-01: (CARD) カードアクセス用DMAチャンネルの正当性判定追加

Note 21-33にてMIライブラリ内でDMAチャンネルの正当性判定が追加されましたが、 CARDライブラリおよびFSライブラリではチャンネルが指定される箇所と実際に使用される箇所が離れていてこの制限に気付きにくかったため、 これらのライブラリでもDMAチャンネルを要求する関数の冒頭に正当性判定を追加しました。
また、この点についての注意も関数リファレンスに追記しました。

### Note 26-02: (DevEnv) 浮動小数点ライブラリ指定オプションの追加

浮動小数点ライブラリを指定するビルドスイッチCW_LIBFPを用意し、Makefile 側で再定義可能なように変更しました。
また、デフォルトで指定されるライブラリを従来の FP_fullI_v5t_LE.a から FP_fastI_v5t_LE.a へ変更しました。

### Note 26-03: (FS) FINALROMバージョンのオーバーレイ関数の内部修正

FINALROMバージョンのオーバーレイ関数が不必要なデバッグ用関数を呼び出してリンク時のコードサイズを増加させていましたので、これを修正しました。

### Note 26-04: (MB) サンプルデモの追加

DSダウンロードプレイ親機の省電力モード設定を切り替える MB_SetPowerSaveMode 関数を使用したサンプルデモとして multiboot-PowerSave を追加しました。

### Note 26-05: (OS) 拡張言語コードの追加

言語コードを新規に追加するための仕組みを導入し、拡張言語コードとして中国語を追加しました。
中国語対応アプリケーションを作成するためのガイドラインについては、現在準備中ですのでお待ちください。

### Note 26-06: (SND) インストのリリース無効化機能の追加

SNDInstData構造体のreleaseフィールドにSND_BANK_DISABLE_RELEASE(=255)を指定した場合、 そのインストはノート長の指定を無視して波形データ終端まで再生するよう機能を追加しました。

### Note 26-07: (WBT) サンプルデモの修正

$NitroSDK/build/demos/wireless_shared/wfs サンプルモジュールおよび
$NitroSDK/build/demos/wbt/wbt-fs サンプルデモに以下の修正を行いました。

- WFS_End 関数が割り込みハンドラから呼び出されることによってプログラムが停止してしまう不具合があり、これを修正しました。
  また、WFS サンプルモジュールのヘッダファイルにも、割り込みハンドラから呼び出せない旨の記述を追加しました。
- すでに WM ライブラリが終了した状態で WFS_End 関数を呼び出したときに内部でポートコールバックの解放に失敗してエラー停止する仕様でしたが、 この部分を単に無視するよう変更しました。
- WFS サンプルモジュールがスレッドシステムを必須とするため、ビルド時に SDK_NO_THREAD が定義された場合にはメッセージを出力してコンパイルエラーで停止するようチェックコードを追加しました。

### Note 26-08: (WM) サンプルデモの修正

WC サンプルモジュールの WcInit 関数を複数回呼び出しうるにもかかわらず WcFinish 関数を呼び出していないサンプルについて、 この２つの関数が正しく対応して呼び出されるよう修正しました。
以下のサンプルデモが修正されています。

- $NitroSDK/build/demos/wbt/wbt-fs
- $NitroSDK/build/demos/wvr/switchover

### SDK 2.1 正式版での既知の問題点

ありません。

## ■ NITRO-SDK Version 2.1 RC

(2005/04/21)

### Note 25-01: (CARD) CARD_Init関数で作成されるスレッドに関する記述の追加

CARD_Init関数のリファレンスにおいて、内部で生成される非同期処理用スレッドに関する記述がありませんでしたので、この説明を追加しました。

### Note 25-02: (CTRDG) カートリッジデバイス抜け検出関数の追加

カートリッジデバイスの抜け検出に使用する、CTRDG_IsAgbCartridgePulledOut関数およびCTRDG_IsOptionCartridgePulledOut関数を追加しました。
NITRO-SDK2.0RCの更新(Note18-20)では、リファレンスの説明のみを追加しており、対応する関数の実装がありませんでした。

### Note 25-03: (CTRDG) カートリッジバスのロックと抜け検出処理に関するリファレンスの説明追加

カートリッジバスをロックしたままの状態では ARM7 による自動抜け検出が行われないため CTRDG_IsExisting関数を定期的に呼び出す必要があることを、リファレンスの各関数に明記しました。

### Note 25-04: (CTRDG) カートリッジ状態に関するリファレンスの記述修正

NITRO-SDK 2.0 正式版で公開されたNote 23-01のリファレンス記述追加に関して、 メーカーコードおよびゲームコードの取得が初期化時のみ行われるという内容が誤っていましたので、この記述を修正しました。

### Note 25-05: (DevEnv) メモリマップの変更(DTCMのアドレス変更)

メモリマップの見直しを行い、デフォルトでARM9に割り当てるMainRAM領域の大きさを増やしました。
具体的には、これまで0x27C0000からの領域に配置していたDTCMを、0x27E0000 からとしました。 あわせて、ARM9に割り当てられるMainRAM領域は 0x2000000〜0x23BFFFF から 0x2000000〜0x23DFFFF となります。(128KByte 増加したことになります。) また、ARM7に割り当てられるMainRAM 領域は 0x27E0000〜0x27FEFFF となります。
また、メインメモリのサイズを4Mとした場合にデフォルトのプロテクションリージョン設定では 0x23E0000〜0x23FFFFF までの ARM7側プログラム配置領域がARM9からは読み書き可能であったので、プロテクションユニット2 の位置を変更して領域を保護するように修正しました。
メインメモリのサイズを8Mとした場合のメインメモリ上の拡張アリーナの開始アドレスを 0x2400000 から 0x23E0000 に変更し、サイズを128Kバイト拡張しました。

### Note 25-06: (FS) 割り込みに関する正当性判定の強化

FSライブラリの関数のうち割り込みハンドラ内から呼び出すことのできないものについて、関数内に正当性判定コードを追加しました。

### Note 25-07: (GX) G3_FrustumW関数の修正

G3_FrustumW関数において、結果を格納する行列の要素 _23 の値が間違っているという不具合があり、これを修正しました。

### Note 25-08: (MATH) クイックソート関数の追加

再帰を使用しないクイックソート関数を MATH_QSort としてMATHカテゴリ以下に追加しました。

### Note 25-09: (MATH) checksum, CRC の計算関数の追加

データの checksum や CRC を求める関数とそのリファレンス、デモを追加しました。

### Note 25-10: (MIC) mic-2サンプルデモの修正

demos/spi/mic-2 サンプルについて以下の修正を行いました。

- サンプリングデータの参照時にキャッシュの無効化処理がありませんでしたので、これを行うように修正しました。

### Note 25-11: (MB) MB_Init関数のTGIDを自動生成するオプションの追加

MB_Init関数へ引数として与えるTGIDについて、新規に定義された定数MB_TGID_AUTOを指定することによってこれを内部で自動生成させるオプションを追加しました。 これに伴い tgid 引数の型が u16 から u32 へ拡張されましたが、このオプション以外の仕様はすべて従来と同様です。

### Note 25-12: (MB) 各種ワイヤレス駆動パラメータ設定関数の追加

MBライブラリの内部で駆動しているWMライブラリへ各種パラメータを外部から明示的に指定するため、以下の関数を追加しました。

- MB_SetLifeTime関数
- MB_SetPowerSaveMode関数

### Note 25-13: (MB) MBP サンプルデモの修正

$NitroSDK/build/demos/wireless_shared/mbp 以下のサンプルソースコードに対し、以下の修正を行いました。

- 接続されていない子機AIDに対して MBP_GetChildMacAddress 関数あるいは MBP_GetChildInfo 関数を呼び出した場合に NULL を返さないという不具合があり、これを修正しました。

### Note 25-14: (OS) ランチャースレッドのスタックチェック処理修正

OS_InitThread関数で初期化されるランチャースレッドのスタックアンダーフロー検出用コードの挿入位置が、 本来のスタックメモリ下端より64バイト下方にあるという不具合があり、これを修正しました。

### Note 25-15: (OS) OS_Sleep関数の内部動作修正

OS_Sleep関数の内部実装において、アラーム設定からスレッド待機までの期間がスレッドセーフでありませんでしたので、これを修正しました。

### Note 25-16: (OS) キャッシュフラッシュ関数の内部動作の修正

Note 24-10で行った内部実装の変更にともないDC_FlushAll関数の動作がスレッドセーフでなくなっていましたので、これを修正しました。
また、領域を指定する形式のキャッシュ操作関数が領域サイズに比例した処理時間を要する旨を関数リファレンスに明記しました。

### Note 25-17: (OS) サンプルデモの修正

OSライブラリのいくつかのサンプルデモにてチックシステムを使用しつつ割り込みを禁止していましたので、 これについてOS_EnableIrq関数を正しく呼び出すように修正しました。

### Note 25-18: (OS) 書式文字列関数のリファレンス訂正

以下の書式文字列関数のリファレンスにて、最終ROM版(FINALROM)ライブラリで出力動作を行なわないという誤った説明がありましたが、この記述を削除しました。

- OS_SPrintf関数
- OS_VSPrintf関数
- OS_SNPrintf関数
- OS_VSNPrintf関数

### Note 25-19: (OS) 拡張言語コードの暫定対応

拡張言語コードへ暫定的に対応しました。 一部のツールに変更が加えられていますが、現状のアプリケーションには影響はありません。 次回リリースには正式対応となる予定です。

### Note 25-20: (SND) サウンドライブラリ配布の一元化

サウンドライブラリについて、従来 NITRO-SDK にはライブラリファイルのみを収録し、 NITRO-System にはライブラリファイルとドキュメントおよびサンプルを収録していましたが、 本バージョンからこれらの全てをNITRO-SDK に収録しました。
$NitroSDK/build/libraries/snd ディレクトリ以下にサウンドライブラリのソースファイルを公開し、
$NitroSDK/build/demos/snd ディレクトリ以下にサウンドライブラリのサンプルデモを追加しました。
あわせて、サウンドライブラリの関数リファレンスも追加しました。

### Note 25-21: (SND) SND_PrepareSeq関数およびSND_StartPreparedSeq関数の追加

SND_StartSeq関数呼び出し直後にシーケンスのパラメータを変更した場合、シーケンス開始とパラメータ反映が同一フレームで処理されない可能性があり、 この様な場合に対応する関数としてSND_PrepareSeq関数とSND_StartPreparedSeq関数を追加しました。
SND_PrepareSeq関数とSND_StartPreparedSeq関数の間で行ったパラメータ変更は、シーケンス開始と同時に処理されることが保証されます。

### Note 25-22: (WM) 内部動作の変更

ワイヤレスライブラリ内にて、親機が子機の異常を検知した場合の切断処理を強化しました。 また、WM_Disconnect関数を用いて親機が子機を切断しようとして失敗した場合に規定回数切断処理をリトライするように内部動作を変更しました。

### Note 25-23: (WM) TGIDを自動生成する関数の追加

RTC の時刻設定をもとにして TGID を自動生成する WM_GetNextTgid 関数を追加しました。

### SDK 2.1 RCでの既知の問題点

- Note 25-18の記述のとおり、現バージョンでは拡張言語コードへの対応が暫定のものとなっています。
- thumbビルド版のichneumonコンポーネントを使用するとプログラムが動作しないことが確認されており、現在対応中です。

## ■ NITRO-SDK Version 2.1 PR

(2005/04/07)

### Note 24-01: (CARD) CARDRomHeader 構造体の追加

ROM 内登録データの情報を表す構造体として CARDRomHeader 構造体を CARD ライブラリに追加しました。

### Note 24-02: (CARD) CARD_IdentifyBackup 関数の内部チェック追加

CARD_IdentifyBackup 関数の内部で1バイトのテスト読み出しを行う処理を追加しました。このテスト読み出しの結果値は CARD_GetResultCode 関数で取得することができます。
これに伴って返り値の型が BOOL へ変更され、呼び出しの際には CARD_LockBackup 関数によるアクセスバスのロックが必要になりました。

### Note 24-03: (CARD) ROMの種類を明示的に指定するサンプルデモの追加

ワンタイムPROMビルドオプションのサポート(Note 24-04 で後述)に伴い、マスクROMおよびワンタイムPROMを指定するサンプルとしてcard/card-1tromデモ、card/card-mromデモを追加しました。

### Note 24-04: (DevEnv) ワンタイムPROMビルドオプションのサポート

プログラムに採用するROMの種類として、従来のマスクROM以外にワンタイムPROMを指定するためのビルドオプションがサポートされました。 makerom.exeツールのセクションパラメータにRomSpeedTypeが追加され、MROM、1TROM、UNDEFINEDのいずれかを指定できるようになりました。
また、NITRO-SDKのmake環境用においては、NITRO_ROMSPEEDビルドスイッチが追加され、ビルド時にRomSpeedTypeを直接指定可能になりました。 （特に指定しなければUNDEFINEDが設定されます）
詳細については、Note 24-03 のサンプルデモを参照して下さい。

### Note 24-05: (DevEnv) SDKバージョンのフォーマット変更

version.hヘッダーファイルで定義されているSDKのバージョン情報について、常に0であったSDK_VERSION_PATCH定数の定義が廃止されました。
これに関連して、プログラムの常駐コードに含まれる4バイトのバージョン情報値フォーマットも変更され、
SDK_VERSION_PATCHフィールドの4ビットが廃止されSDK_VERSION_MINORフィールドが8ビットに拡張されました。
下位ビット方向に拡張されています。
この修正に対応して showversion ツールが変更されています。
SDK のバージョン情報を読み出すツールなどを制作されている方は、ご注意ください。

### Note 24-06: (GX) G3_GetDLSize 関数の不具合修正

G3_GetDLSize 関数の不具合で実際のディスプレイリストサイズよりも4バイト分大きな値を返す場合があり、この不具合を修正しました。

### Note 24-07: (MATH) メッセージダイジェスト値の計算関数の追加

標準的なメッセージダイジェストのアルゴリズムである MD5 と SHA-1 を使用したメッセージダイジェスト値の計算関数を MATH カテゴリ以下に追加しました。 また、鍵付ハッシングのアルゴリズムである HMAC-MD5 と HMAC-SHA-1 の計算関数も同時に追加しています。

### Note 24-08: (MB) MB_GetGameEntryBitmap 関数の追加

配信中のゲーム情報に対してエントリーしている子機群のAIDビットマップを取得するMB_GetGameEntryBitmap関数を追加しました。

### Note 24-09: (OS) OS_ResetSystem 関数のカードロック内部処理修正

あるスレッドがカードバスをロックした状態で動作している時に、それよりも優先度の低いスレッドがOS_ResetSystem関数を呼び出すと、 リセット内部処理がデッドロックする不具合がありましたので、これを修正しました。

### Note 24-10: (OS) キャッシュフラッシュ関数の内部実装変更

キャッシュラインの管理状態が valid かつ dirty の際に CPU の flush 命令がごくまれに動作しない場合があることが確認されましたので、 SDK でこれらの機能を提供している DC_FlushRange 関数および DC_FlushAll 関数の内部実装を、 CPU の store 命令と invalidate 命令の組み合わせで実現するように変更しました。
関数仕様に変更はありません。

### Note 24-11: (OS) サンプルデモの修正

demos/os/favorite-color サンプルについて以下の修正を行いました。

- ポリゴンの描画処理についてensata環境で正しく動作しないという不具合があり、これを修正しました。

### Note 24-12: (RTC) 日付書き込み関数の不具合修正

日付のみを書き換えるRTC_SetDate関数およびRTC_SetDateAsync関数が正常に動作せず日付が書き換わらないという不具合があり、これを修正しました。

### Note 24-13: (Snd) サウンドドライバ情報取得関数追加

サウンドドライバの情報を取得するための関数が追加されました。追加された関数は以下の通りです。

- SND_ReadDriverInfo 関数
- SND_ReadChannelInfo 関数
- SND_ReadPlayerInfo 関数
- SND_ReadTrackInfo 関数

### Note 24-14: (Snd) SND_FlushCommand 関数のフラグ SND_COMMAND_IMMEDIATE 追加

SND_FlushCommand 関数の引数フラグに、SND_COMMAND_IMMEDIATE を追加で指定できるようになりました。
SND_COMMAND_IMMEDIATE を指定すると、発行したコマンドが、次のサウンドフレームを待たずに処理されるようになります。

### Note 24-15: (Snd) SNDInstType に SND_INST_NULL 追加

SND_ReadInstData 関数などで使用する SNDInstData 構造体の type メンバが取りうる値に、SND_INST_NULL が追加されました。
なお、SND_INST_NULL が設定されているインストデータは、発音されません。

### Note 24-16: (WM) 「ワイヤレス通信ライブラリ解説」の更新

「ワイヤレス通信ライブラリ解説」(AboutWirelessManager.pdf) に内部状態の CLASS1 ステートに関する記述を加筆しました。

### Note 24-17: (WM) 切断タイミングによる不具合の修正

NITRO-SDK 2.0 RC5 での修正により、WM_StartMP 関数を呼び出す前に子機が接続・切断した場合に親機の ARM7 が不正な処理を行う、 という不具合を NITRO-SDK 2.0 で修正しましたが、不十分でしたので、これを正しく修正しました。

### Note 24-18: (WM) WM_StartScanEx関数の不具合修正

WM_StartScanEx関数で指定されたコールバック関数に渡される引数のAPIIDが、WM_StartScan関数の場合のAPIIDと同一だったため、 両者の判別ができないという問題がありました。（結果として2つのAPIを使い分ける事ができませんでした）
この不具合を修正しました。

### Note 24-19: (WM) 切断処理に関する不具合の修正

NITRO-SDK 2.0 正式版から発生している不具合として、切断時に切断する相手が通信不能な状態になっていると、 切断に失敗して無線ライブラリの内部状態が不整合を起こすという問題があり、これに関係して、 通信中にデバッガでブレークした際に通信相手に正常にタイムアウトによる切断の通知が行われないという不具合がありましたが、 これらの不具合を修正しました。

### Note 24-20: (WM) DS ワイヤレスプレイで WEP Key を使用するデモの追加

DS ワイヤレスプレイにおいては、接続時の通信だけは WEP Key で暗号化することが可能となっています。
これを行うデモを wm/wep-1 として追加しました。

### SDK 2.1 PRでの既知の問題点

ありません。

## ■ NITRO-SDK Version 2.0 正式版

(2005/03/11)

### Note 23-01: (CTRDG) カートリッジ状態に関するリファレンスへの記述追加

CTRDG_GetAgbMakerCode 関数および CTRDG_GetAgbGameCode 関数で返される値は CTRDG_Init 関数の呼び出し時に取得されたものであるという点を各関数リファレンスに明記しました。
関連して、開発機材などでカートリッジを使用するにあたってはCTRDG_Init 関数の呼び出しより前にカートリッジ電源をONにしておく必要があるという点についても補足しました。

### Note 23-02: (DevEnv) ソースコードの書式統一

ライブラリおよびサンプルデモのソースコード全体で、インデントや改行に関する構文上の書式を統一しました。

### Note 23-03: (DevEnv) ビルド済みDSプログラムのリファレンス追加

$NitroSDK/bin 以下に収録されている各種DSプログラムのリファレンスを $NitroSDK/man/ja_JP/romfiles 以下に [ビルド済みDSプログラム] のカテゴリとして追加しました。

### Note 23-04: (DevEnv) 関数リファレンスでの引数範囲の明記

関数リファレンスにおいて、引数に与えることのできる値の範囲が不明瞭なものについて適宜記述を追加しました。

### Note 23-05: (DevEnv) 弱いシンボルの宣言用マクロ SDK_WEAK_SYMBOL を定義

弱いシンボル(weak symbol)を宣言するための修飾子としてマクロ SDK_WEAK_SYMBOL を定義しました。CodeWarrior を使用する場合は
#define SDK_WEAK_SYMBOL __declspec(weak)
と定義されています。

### Note 23-06: (FS) 圧縮オーバーレイのロード時の不具合の修正

RC5 での修正により、NITRO_COMPRESS を指定してビルドしたアプリケーションでオーバーレイをロードする関数を呼び出した際に 内部判定のミスで正しく処理が完了しないという不具合があり、これを修正しました。

### Note 23-07: (MI) データ圧縮時のアラインメント調整オプションの追加

ntrcompでデータを圧縮する際に、出力ファイルサイズが4の倍数になるよう末尾を 0 で調整するオプション '-A4' が追加されました。

### Note 23-08: (PRC) 関数内部での正当性判定の修正

PRC_GetRecognizedEntriesEx_Superfine 関数において一部の SDK_ASSERT の正当性判定条件が厳しすぎましたので、 これを適正な条件に修正しました。

### Note 23-09: (PRC) 関数の返り値の型の変更

以下の関数群の返り値の型を void から BOOL に変更し、成功・失敗を返すように変更しました。

- PRC_InitPrototypeDB* 関数
- PRC_InitInputPattern* 関数
- PRC_ResampleStrokes_* 関数

### Note 23-10: (WM) 切断タイミングによる不具合の修正

RC5 での修正により、WM_StartMP 関数を呼び出す前に子機が接続・切断した場合に親機の ARM7 が不正な処理を行う、 という不具合が発生していましたが、これを修正しました。 なお、WM_StartParent 関数が成功してから直ちに WM_StartMP 関数を呼んでいるアプリケーションでは、この問題はまず発生しません。

### Note 23-11: (WM) WM_StartMPEx 関数の minPollBmpMode を使用した場合の不具合修正

RC5 での変更で、WM_StartMPEx 関数の minPollBmpMode を TRUE に設定した場合に 正常に送信が出来ないという不具合が発生していましたが、これを修正しました。

### Note 23-12: (WM) 通信内容が消えてしまう不具合の修正

電波状態によって、ごく稀に通信内容が消えてしまう不具合がありましたが、これを修正しました。

### Note 23-13: (WM) port 通信用送信キューの段数の変更

従来は port 通信用の送信キューを 64 段用意していましたが、使用状況から考えて過剰な量と判断し、 ワイヤレス通信ライブラリの使用メモリを削減するために 32 段へと変更しました。
なお、Data Sharing 1 組につき、送信キューは高々 2 段しか使用しません。

### Note 23-14: (WM) WMPortSendCallback 構造体の変更

WM_SetMPData* 関数のコールバックに渡される構造体を変更しました。
従来は destBitmap に指定されていたものの、接続が切れている AID に関しては restBitmap フィールドの対応するビットの値が不定でしたが、 これを必ず 0 になるように変更しました。
これに伴い、送信できた相手の AID のビットマップを格納する sentBitmap フィールドを新設しました。 未接続または切断されたために送信しなかった相手がいるかを確認するには、 destBitmap フィールドと sentBitmap フィールドを比較するようにしてください。

### Note 23-15: (WM) 状態チェックの修正と強化

ARM7 のワイヤレス通信ドライバでの状態チェックを強化しました。
これにより、以下の関数のコールバックに WM_ERRCODE_ILLEGAL_STATE のエラーが返りうるようになりました。

- WM_MeasureChannel 関数
- WM_StartParent 関数
- WM_StartScan 関数
- WM_StartConnect 関数
- WM_EndMP 関数
- WM_EndParent 関数

また、WM_SetWEPKeyEx 関数内部でのの wepkeyid の範囲チェックを修正しました。

### Note 23-16: (WM) WM_EndKeySharing 関数の返り値修正

WM_EndKeySharing 関数が返り値として常にエラーを返していましたが、これを修正しました。

### Note 23-17: (WM) WH サンプルデモの修正

$NitroSDK/build/demos/wireless_shared/wh 以下のサンプルソースコードに対し、以下の修正を行いました。

- ガイドラインに準拠し、起動時ごとにTGIDの初期値がばらつくよう処理を追加しました。
- 受信ビーコンに対するMBフラグ有無の判定を追加しました。
- 親機ビーコンのユーザーゲーム情報を設定する WH_SetUserGameInfo 関数を追加しました。

### SDK 2.0 正式版での既知の問題点

ありません。

## ■ NITRO-SDK Version 2.0 RC5

(2005/02/25)

### Note 22-01: (ARM7) コンポーネントの追加と廃止

VRAM上に無線通信機能の実行コードを配置する特殊コンポーネントとして ichneumon が新規に追加されました。 詳細については同時に追加されましたドキュメント AboutComponents.pdf を参照して下さい。 また、NITRO-SDK 2.0 RC4 までに提供しておりました idle、ferret コンポーネントについては今後のサポートを廃止します。

### Note 22-02: (CHT) サンプルデモの修正

ピクトチャットサーチ機能を用いる例として提供しておりますサンプルにて、このサンプルが用いる
"無線制御部共通モジュールであるWC内のピクトチャットサーチ機能を有効/無効にする関数"の名称の綴り間違いを修正しました。

### Note 22-03: (DevEnv) 厳格な警告オプションへ対応するソースコード修正

ライブラリおよび各種サンプルデモにおいて、一部の厳格な警告オプションへも対応できるようにコードを修正しました。
サイズが等しく符号の有無が異なる整数型同士での変換を暗黙に行っていた個所などについて改善がなされています。

### Note 22-04: (FS) overlay-staticinitサンプルデモの追加

C/C++言語のソース内で static initializer を明示的に追加するサンプルとして、overlay-staticinit サンプルデモを追加しました。

### Note 22-05: (FS) アーカイブのサスペンド状態に関する内部異常の修正

アーカイブが一度アンロードされ再びロードされる際に内部状態が部分的にサスペンド状態へ変更されてしまい、
連続発行して保留された非同期コマンドが処理されないという不具合があり、この問題を修正しました。

### Note 22-06: (FS) FS_LoadOverlayImage 関数の内部エラー判定修正

FS_LoadOverlayImage 関数および FS_LoadOverlayImageAsync 関数の内部処理において、 指定したオーバーレイに対応するファイルが正しく開けた場合にはその後の FS_ReadFile 関数の結果を反映せず常にTRUE を返すという動作でしたが、これを反映するよう修正しました。

### Note 22-07: (GX) GX_GetOBJVRamModeBmp 関数の返り値の型訂正

GX_GetOBJVRamModeBmp関数の返り値がGXOBJVRamModeChar型でしたが、これをGXOBJVRamModeBmp型に訂正しました。

### Note 22-08: (GX) GXBg23ControlAffine 構造体の無効なメンバの削除

GXBg23ControlAffine 構造体に無効なメンバ colorMode が含まれている不具合がありました。 アフィンBGでは256色固定でありこのメンバは無効なため、GXBg23ControlAffine 構造体 から colorMode の定義を削除しました。

### Note 22-09: (GX) G2_GetBG3Control* 関数, G2S_GetBG3Control* 関数の不具合修正

G2_GetBG3Control* 関数, G2S_GetBG3Control* 関数を使用した際に不正なアドレスへのアクセスが発生する不具合があり、この不具合を修正しました。

### Note 22-10: (GX) VRAM割り当てを試行する関数群の追加

新設されたWVRライブラリ(詳細はNote 22-40)及び ichneumon コンポーネント(詳細はNote 22-01)により、 VRAM上でARM7側無線ライブラリを駆動する機能が提供されましたが、 無線ライブラリが駆動している際にそのVRAMバンクを別用途に使用することはできません。 これまでに提供しております GX_SetBankFor* 関数群はWVRライブラリによってロックされているVRAMバンクの割り当て直しを行うと OS_Panic 関数を呼び出して停止するように修正されました。また、別途VRAMバンク割り当てを試行する GX_TrySetBankFor* 関数群が新規追加されました。
なお、この追加に関連して、GX_Init 関数の呼び出しより前に OS_Init 関数が呼び出されていることが必要となりましたので、この点に注意してください。

### Note 22-11: (MATH) code32.h による MATH_CountLeadingZeros 関数の inline への切り替えの不具合修正

MATH_CountLeadingZeros 関数は ARM コード出力時には ARM プロセッサのclz 命令を使った inline 関数に、また、 THUMB コード出力時には clz と同等の動作をする関数に置き換わりますが、 NITRO_CODEGEN=THUMB でデフォルトのコードを THUMB コードにした状態で #include <nitro/code32.h> による出力コードの切り替えを行なっても、MATH_CountLeadingZeros 関数は inline 関数に切り替わりませんでした。
この不具合を修正しました。

### Note 22-12: (MB) DSダウンロードプレイ親機のビーコンへユーザデータを設定するインターフェイスの追加

DSダウンロードプレイ親機の配信するビーコン中にユーザアプリがデータを設定する為のインターフェイスとして、以下の関数を追加しました。
MB_FakeInit 関数を使用する擬似マルチブート子機は、このインタフェースを通して接続前の親機からユーザ固有の付随情報を受信することが出来ます。
このデータの有無は、IPLのDSダウンロード子機の動作には一切影響を与えません。

- MB_SetSendVolatCallback 関数
- MB_SetUserVolatData 関数
- MB_GetUserVolatData 関数

### Note 22-13: (MI) 圧縮関数の追加

DS アプリケーション上でデータを実行時に圧縮するための、以下の関数を追加しました。

- MI_CompressRL 関数
- MI_CompressLZ 関数
- MI_CompressHuffman 関数

### Note 22-14: (MI) AGBカートリッジ用のROMアクセスサイクル設定関数の追加

AGBカートリッジ用のROMアクセスサイクル設定関数 MI_SetAgbCartridgeFastestRomCycle 関数を追加しました。
これは DS での 8-4アクセスの設定を行なう関数で、AGB での 3-1 ウェイトに相当します。

### Note 22-15: (MI) 起動時の多重DMAの不具合への対処

「Note 21-33: (MI) 多重DMAの不具合への対処」に示したように DMA0 を使用した後はダミーの空 DMA 転送を行なっていますが、 DMA0 を使う初回のDMA転送に対処するために、OS_Init 関数の時点でもダミーの空DMA転送を行なうよう処理を追加しました。

### Note 22-16: (MIC) 自動サンプリングエンジンの最適化

マイクの自動サンプリングについて、ARM7内で行われる処理を最適化しました。
このことにより、mic-1サンプルデモでサンプリングレートを32kHzにした場合にフリーズするという不具合が修正されました。

### Note 22-17: (OS) 割り込み概要ページへのリンク追加

リファレンスの、OSの概要ページに「割り込み概要」ページへのリンクを追加しました。
割り込み概要ページ自体は NITRO-SDK2.0 RC4 の時点で追加されていましたが、そのページへのリンクがありませんでした。

### Note 22-18: (OS) スレッドのスケジューリング制御関数の追加

OS ライブラリに、スレッドのリスケジューリングを一時停止および再開を制御する関数 OS_DisableScheduler 関数と OS_EnableScheduler 関数を追加しました。

### Note 22-19: (OS) キャッシュのロックダウン関数の不具合修正

キャッシュが破棄されないようにロックする DC_LockdownRange 関数, IC_LockdownRange 関数に、 一部ロックされない領域が残る可能性があるという不具合があり、この不具合を修正しました。

### Note 22-20: (OS) ロックダウンされたキャッシュの解放関数を追加

キャッシュのロックダウンされたブロックを解放し、再びキャッシュの置き換えを発生可能にする為、以下の関数を追加しました。

- DC_UnlockdownAll 関数
- DC_Unlockdown 関数
- IC_UnlockdownAll 関数
- IC_Unlockdown 関数

### Note 22-21: (OS) OS_ResetSystem 関数でのリセット時キャッシュ不具合の修正

OS_ResetSystem 関数内の、DC_FlushAll 関数を呼び出している個所の後で DC_WaitWriteBufferEmpty 関数を呼ぶように処理を追加しました。
これは、リセット以前に残っていたキャッシュが、OS_ResetSystem　関数で読み込んだプログラムデータを後から上書きしてしまうという可能性があったためです。

### Note 22-22: (OS) OS_GetITCMAddress 関数の追加

命令TCMのベースアドレスを取得するOS_GetITCMAddress 関数を追加しました。この関数の返り値は常に定数 0x01FF8000 を返します。

### Note 22-23: (PM) LCDオフ状態からスリープモードに移行したあとの復帰処理の変更

LCDオフ状態からスリープモードに移行し、その後スリープモードから抜けた時にグラフィックモードの状態復帰処理に不具合があり、 画面が表示されない場合がありました。これを、LCDオフの状態に戻るようにしました。
アクティブモードからスリープモードに遷移した場合の復帰には影響はありません。

### Note 22-24: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドライブラリが2005年02月22日版となりました。

### Note 22-25: (WM) Sequential 通信におけるパケット複製の不具合修正

MP 通信の 8 〜 15 番 port を使用して行う Sequential 通信において、特定の状況でパケットが複製されてしまう不具合があり、これを修正しました。

- 1. Sequential 通信を使用している
- 2. port 番号が等しい複数のパケットがパックされて 1 回のMP通信で送信される
- 3. 上記 2. の通信にて、行きは成功したが帰りが失敗した

上記すべてを満たす場合に、次の再送で同一のパケットを新規パケットとして受信してしまいます。
DataSharing においては、停止や同期ずれなどの形で顕在化します。
なお、複数のパケットが1つのペイロードにパックされないとこの問題は発生しませんので、double mode を使用していない場合もしくは WM_SetParentParam 関数で設定した最大送信サイズが DataSharing のパケットを同時に1つしか送れないサイズであった場合には、 この問題が発生することはありません。

### Note 22-26: (WM) minPollBmpMode 時の Sequential 通信における制限事項の明記

WM_StartMPEx 関数のリファレンスに制限事項の記載を追加しました。
この関数で minPollBmpMode 引数を TRUE にした状態で Sequential 通信を行う場合は、使用中の全ての Sequential 通信の port において、 60 フレーム以上データを受け取らない子機が存在しないよう、定期的に全子機に対して keep alive データを送信するなどの対応を行ってください。

### Note 22-27: (WM) WM_PortSendCallback 構造体 restBitmap メンバに関する不具合修正

WM_SetMPDataToPort* 関数が送信に失敗した場合に発生する WM_ERRCODE_SEND_FAILED の通知コールバックにおいて、 引数に与えられる restBitmap メンバに正しい値が入っていない不具合があり、これを修正しました。

### Note 22-28: (WM) WM_Reset 関数に関する不具合修正

無線通信中の親機が子機と接続している状態でWM_Reset関数を呼び出すと、呼び出した状況によっては長い時間(通常 4 秒、 WM_SetLifeTime 関数によって改変可能)処理が完了しない場合があるという不具合があり、これを修正しました。

### Note 22-29: (WM) WM_IsBssidEqual 関数, WM_CopyBssid 関数の動作修正と16bit版の追加

WM_IsBssidEqual 関数および WM_CopyBssid 関数の引数が暗黙的に16bit境界整合されたアドレスを要求し、 そのため奇数のアドレスに対して正しく動作しないという不具合があり、これを修正しました。
また、従来と同等の機能を持つ WM_IsBssidEqual16 関数および WM_CopyBssid16 関数を新たに追加しました。

### Note 22-30: (WM) WM非同期関数のコールバックと途中通知の順番についての注意書きの追加

WM_StartParent 関数および WM_StartConnect 関数について、 非同期処理が正常に完了したことを示すコールバックより先に接続完了後に起こるイベントの通知がコールバックされることがあり得る、 という点について注意書きをリファレンスマニュアルに追記しました。

### Note 22-31: (WM) 再送時に完了コールバックが来なくなる不具合の修正

特定のパターンでデータを送信しようとした場合に再送が発生すると、送信すべきデータが消失し、 送信完了コールバックも返ってこなくなる不具合があり、これを修正しました。
この問題は、ブロードキャスト通信と特定の子機相手の通信を同時に行っている場合に発生することがあります。

### Note 22-32: (WM) WH サンプルデモの不具合修正

$NitroSDK/build/demos/wireless_shared/wh 以下のサンプルソースコードに対し、以下の修正を行いました。

- WH_SetReceiver 関数内でのWM_SetPortCallback 関数呼び出しで返り値の比較に WM_ERRCODE_SUCCESS を使用するよう修正しました。

### Note 22-33: (WM) WFS サンプルデモの不具合修正

$NitroSDK/build/demos/wireless_shared/wfs 以下のサンプルソースコードに対し、以下の修正を行いました。

- WFS_InitParent 関数および WFS_InitChild 関数において、初期化処理完了より前に内部状態が更新されることによって MP通信コールバック時に不正動作するという不具合あり、これを修正しました。
  なお、この問題は WM ステートの READY 以降かつ PARENT/CHILD 以前の状態で WFS の初期化を行っている場合には発生しません。
- 子機からの異なる内容のReadFile要求が複数発生する場合に、タイミングによっては親機が任意の子機への応答を行わなくなることがあり、これを修正しました。

### Note 22-34: (WM) 新規関数の追加

より詳細な設定の元に処理を行う以下のAPIが追加されました。

- WM_StartScanEx 関数
- WM_StartConnectEx 関数
- WM_SetWEPKeyEx 関数

なお、WM_StartConnectEx 関数の追加にともない従来の WM_StartConnect 関数はインライン化されました。
以前のバージョンの NITRO-SDK でビルドされつつその内部で WM_StartConnect 関数を呼び出しているオブジェクトファイルまたはライブラリファイルは、 プログラムへのリンク時に関数未定義のエラーとなりますので再ビルドする必要がある点に注意してください。

### Note 22-35: (WM) MP通信開始時の内部動作の改善

WM_StartMP(Ex)関数によってMP通信を開始した際、この関数のコールバックが呼ばれる前にMP通信の途中通知がコールバックされる場合がありました。 これを修正し、WM_StartMP(Ex)関数のコールバックが発生する前にはMP関連の途中通知が一切行われないよう内部動作を変更しました。 この変更により、子機が接続・切断を繰り返した際に、まれにARM7の動作が停止するという不具合が修正されました。 また、WM_StartMP(Ex)関数を呼び出してコールバックが呼び出される前の状態の時に、子機が親機から切断されると、 その後ライブラリが正常に動作しなくなる可能性が発見されました。この問題を修正しました。

### Note 22-36: (WM) 親機開始時の内部動作の不具合修正

無線通信の親機になる際、正常に親機になったにも関わらずビーコンが送信されない現象がまれに発生するという不具合があり、この問題を修正しました。

### Note 22-37: (WM) WM_SetMPData* 関数のコールバックに関する変更

従来は、通信終了時に送信キューに溜まっていた送信データに関しては対応する WM_SetMPData* 関数にコールバックを返していませんでしたが、 必ずコールバックが返るように変更しました。これにより、WM の全ての非同期 API はコールバックを最低一度は返すようになりました。

### Note 22-38: (WM) 接続許容台数の上限付近での新規接続時の不具合修正

無線親機が接続許容台数に近い子機と接続している状態で新たに複数の子機に接続された際に許容台数を越える子機と接続してしまい、 その後のライブラリの動作に不具合が生じる可能性がある、という問題が確認されました。この問題を修正しました。

### Note 22-39: (WM) 解説ドキュメントの正式公開

ワイヤレス通信ライブラリの解説ドキュメントが、正式版として docs/TechnicalNotes/AboutWirelessManager.pdf に公開されました。

### Note 22-40: (WVR) 無線ドライバ駆動制御ライブラリの追加

ichneumon コンポーネント(詳細はNote 22-01)の追加に伴い、 このコンポーネント使用時にVRAM上への無線関連実行コードの配置及び起動・停止及び実行コードの退避を制御するライブラリとして、 WVRライブラリが新規に追加されました。

### SDK 2.0 RC5 での既知の問題点

ありません。

## ■ NITRO-SDK Version 2.0 RC4

(2005/01/14)

### Note 21-01: (CHT) ピクトチャット関連ライブラリの追加

ピクトチャットに関連したAPI群を扱うライブラリとして、CHTライブラリを新設しました。CHTライブラリには以下の関数が含まれます。

- CHT_IsPictochatParent
- CHT_GetPictochatRoomNumber
- CHT_GetPictochatClientNum

なお、2004年1月13日現在、DSプログラムガイドラインには、ピクトチャット関連ライブラリの使用についての記述が含まれていません。本ライブラリの使用を検討される場合、まずは弊社業務技術部までご連絡下さい。

### Note 21-02: (MATH) MATH カテゴリの新設

数学関数用のカテゴリとして MATH が新設されました。 min, max といったユーティリティ関数のほかに、ARM9 で高速に整数範囲での log2(x) を求める MATH_ILog2 などが含まれます。

### Note 21-03: (MATH) 乱数用関数の追加

線形合同法による乱数ライブラリとして、以下の関数が追加されました。

- MATH_InitRand16
- MATH_InitRand32
- MATH_Rand16
- MATH_Rand32

またデモとして、$NitroSDK/build/demos/math/rand_lc が追加されています。

### Note 21-04: (MB) 擬似 DS ダウンロードプレイ子機の不具合修正

擬似 DS ダウンロードプレイ子機ライブラリ MB_FakeChild において、リトライ可能な MP 通信エラーが発生した際に、FATAL なエラーとして通信を切断してしまう不具合がありました。 この不具合は修正されました。

### Note 21-05: (MB) MBライブラリ終了時の内部スレッド不具合の修正

MB_ReadSegment 関数の呼び出しで内部スレッドを使用するように設定された場合、 MB_End 関数によるライブラリ終了時に内部スレッドの状態管理が正しく行われず、 再初期化後の動作が異常になるという不具合があり、この問題を修正しました。

### Note 21-06: (MB) MBライブラリ終了時の内部動作修正

MB_End 関数またはMB_EndToIdle関数でMBライブラリを終了させる際、終了処理中に発生する MB 内部イベントとそのタイミングによっては MB ライブラリ終了後に不正な動作をしてしまう場合があり、 この問題を修正しました。

### Note 21-07: (MB) エントリー子機に対し随時データの先行配信するデモを追加

マルチブートデモで使用している以下のソースの中に MBP_USING_PREVIOUS_DOWNLOAD スイッチを追加しました。

- $NitroSDK/build/demos/wirelessShared/mbp

このスイッチがONの場合には、エントリーした子機に対して随時先行してデータのダウンロードを開始します。 このスイッチがONの場合のシーケンスでは、子機の接続タイミングによっては、 ダウンロードの待ち時間を少なく抑えられる可能性があります。

### Note 21-08: (WM) 無線ライブラリへの機能追加

無線通信における使用許可チャンネルの有無を確認する関数、WM_IsExistAllowedChannel を追加しました。 この関数は WM ライブラリの内部状態に依存せずに、許可チャンネルの有無のみを判定します。

### Note 21-09: (WM) WM非同期関数群へのより厳密な排他制御の追加

WM非同期関数群は通常は非同期処理中に他の関数を呼び出すことは基本的に動作が保証されませんが、 WM_SetMPData( ToPort(Ex) ) 関数のみは連続した呼び出しによる送信データの予約が可能な仕様となっています。 この際、10回を越える連続呼び出しを行うと実際に送信されるデータが壊れる可能性がありました。 この為、より厳密な排他処理を行うように修正しました。 修正の結果、データが壊れるような送信要求を行った場合に WM_SetMPData( ToPort(Ex) ) 関数にはWM_ERRCODE_FIFO_ERROR が明示的に返されるように仕様が変更されました。

### Note 21-10: (WM) MP 通信のパワーマネージメント設定の修正

MP 通信において、ごく稀なタイミングで、子機のパワーセーブの時間が通常より長くなることがありましたが、 これを修正しました。

### Note 21-11: (WM) WFSサンプルの改善

無線を使用してFSを実現するサンプルデモにおいて、 内部で設定した受信コールバック関数がWFS_Endを呼び出した際にクリアされず、 意図しないタイミングで内部コールバック関数が呼び出されてしまう問題がありました。 この問題点を修正しました。

### Note 21-12: (WM) 親機の使用するチャンネルを決定するデモの修正

無線デモ中で親機がチャンネルを決定する際に、使用チャンネルをより分散させるため、 電波使用率が同じチャンネルが複数あった場合に、乱数を使用してチャンネルを決定するように修正されました。 この処理は以下のデモに反映されています。

- $NitroSDK/build/demos/mb/mbm
- $NitroSDK/build/demos/wireless_shared/wh

### Note 21-13: (FS)ファイルシステムドキュメントの更新

ファイルシステムライブラリについて解説したドキュメント AboutFileSystem.rtf の内容が全面的に更新され、 AboutFileSystem.pdf として追加されました。

### Note 21-14: (GX) 描画用レジスタのリード関数を追加

描画用レジスタをリードするGet関数が追加されました。追加された関数は以下の通りです。

- GX*_GetVisibleWnd
- GX*_GetVisiblePlane
- GX*_GetOBJVRamModeChar
- GX*_GetOBJVRamModeBmp
- GX*_GetMasterBrightness
- GX*_GetDispCnt
- G2*_GetWndOutsidePlane
- G2*_GetWndOBJInsidePlane
- G2*_GetWnd1InsidePlane
- G2*_GetWnd0InsidePlane
- G2*_GetOBJAffine
- G2*_GetBG0Control
- G2*_GetBG1Control
- G2*_GetBG2ExtMode
- G2*_GetBG2Control*
- G2*_GetBG3Control*

### Note 21-15: (GX) サブ2Dエンジン用ビットマップOBJのVRAM拡張フラグの定義を削除

サブ2Dエンジンには存在しないビットマップOBJのVRAM拡張フラグが define 値として定義されているという不具合があり、 以下の定義が削除されました。

- REG_GXS_DB_DISPCNT_EXOBJ_BM_MASK
- REG_GXS_DB_DISPCNT_EXOBJ_BM_SHIFT

またGXS_SetOBJVRamModeBmp関数にて、このフラグを使用するような引数を ASSERT でチェックするよう修正されました。

### Note 21-16: (GX) データサイズによる転送方法の判別

GX でのデータ転送において、データサイズが小さい場合には DMA を使用せず CPU でコピーするよう修正されました。 32bit コピーでは48バイト以下、16bit コピーでは 28バイト以下の同期処理での転送は常に CPU で処理されます。

### Note 21-17: (GX) GX_SetBankForBGEx使用時のASSERTの不具合修正

GX_SetBankForBGEx 関数を使用して VRAM のバンク設定を行なった場合、 DEBUG ビルド時不正なアドレスにデータをロードした際にも ASSERT による警告が出ないという不具合がありました。 この不具合は修正されました。

### Note 21-18: (GX) GX_ResetCapture関数を追加

GX_SetCapture 関数で設定したキャプチャイネーブルフラグは通常キャプチャ完了後に自動的にリセットされますが、 それとは別に即リセットできる解除関数としてGX_ResetCapture関数が追加されました。 ただしキャプチャ途中に途中中断することはできませんので注意してください。

### Note 21-19: (CARD,CTRDG) 強制停止処理の改良

DS カード及びカートリッジの活線挿抜を検知した際に行われる強制停止処理において、無線通信中であった場合に電波送信が完全に停止しない場合がありました。 また、LED　の点灯状態が不定となる場合がありました。これらの問題を修正しました。

### Note 21-20: (CARD) CARD_ReadRomID関数の廃止

ユーザアプリケーションから使用する用途が無いため、CARD_ReadRomID 関数は廃止されました。

### Note 21-21: (CARD) NITRO-CARDアクセス許可状態の設定関数の追加

ワイヤレスダウンロードで起動した子機プログラムなどが不用意に NITRO-CARD へアクセスすることを防止するため、 アクセス許可状態の取得・設定関数を追加しました。 NITRO-CARDから起動していないアプリケーションが NITRO-CARD へアクセスする場合には、プログラミングガイドラインでの規定に従って判定したのちに CARD_Enable 関数を呼び出す必要があります。

### Note 21-22: (TP) TP_GetLatestRawPointInAuto 関数の動作を修正

TP_GetLatestRawPointInAuto 関数において、 過去１フレームの間にサンプリングされたすべての値がタッチ ON かつ INVALID であった場合にタッチ OFF として扱われていましたが、 この場合にも validity の値を設定してタッチ ON として返されるよう 修正されました。

### Note 21-23: (TP) タッチパネルが LCD から受けるノイズへの対策を強化

特定のタイミングでタッチパネルのサンプリングをおこなった場合に、ハードウェアによっては LCD からのノイズの影響を強く受け る組み合わせがあったため、サンプリング時のノイズ対策の強化をおこないました。

### Note 21-24: (MIC) 自動サンプリング中にサンプリングレートを調整するAPIの追加

自動サンプリング実行中に、サンプリングを停止することなく動的にサンプリングレートを変更する以下の API を追加しました。

- MIC_AdjustAutoSampling
- MIC_AdjustAutoSamplingAsync

また、サンプルデモ mic-1 を一部修正し、このAPIも使用するサンプルとしました。

### Note 21-25: (OS) アプリケーション向けの割り込みチェックフラグの追加(再掲)

「Note 6-35: (OS) アプリケーション向けの割り込みチェックフラグの追加」 (NITRO-SDK Version 1.2 PR1) で追加した、割り込み用チェックフラグ OS_IE_USER_FLAG0, OS_IE_USER_FLAG1 が ARM7 でのみ有効になっていました。 これを ARM9 でも有効となるようにしました。

### Note 21-26: (OS) OS_DestroyThread() 関数の追加

スレッドを指定して終了させる OS_DestroyThread() を追加しました。 (この関数は元々内部関数として用意されていました。)

他のスレッドを予告なく終了させるという少々危険な関数なので使用する際は十分注意してください。

### Note 21-27: (OS) OSデモ interrupt-key-1 の廃止と WaitIrq-2 の変更

以前(NitroSDK2.0PR4 のリリース時)、「Note 13-18: (PAD) PAD_SetIrq(), PAD_ClearIrq() の廃止」にあるように キー割り込みの使用が禁止されました。 そこで、OSデモの中の interrupt-key-1 (キー割り込みデモ) を廃止しました。 さらに、キー割り込みを使用していた WaitIrq-2 をタイマ割り込みを使うように変更しました。

### Note 21-28: (OS) OS_EnableMainExArena(), OS_DisableMainExArena() の追加

これまで拡張メインメモリアリーナを使用するためには、OS ライブラリを NITRO_MEMSIZE=8M の指定で make する必要が ありましたが、OS_Init() (OS_Init() を使用していない場合は OS_InitArena()) の前に OS_EnableMainExArena() や OS_DisableMainExArena() を指定することで拡張メインメモリアリーナを使用する／しないの宣言をすることが出来るようになりました。 ただしメインメモリを 4MB しか搭載していない環境(実機を含む)で動作させた場合は常に拡張メインメモリアリーナは使用できません。

### Note 21-29: (OS) OS_DisableWriteBufferForProtectionRegion() の修正

OS_DisableWriteBufferForProtectionRegion() 関数に間違いがあり、 OS_EnableWriteBufferForProtectionRegion() 関数と同様に機能する関数となっていました。これを修正しました。

### Note 21-30: (OS) ヒープ関数の追加と変更

ヒープに関する以下の関数を追加しました。

- OS_GetAllocatedSize
- OS_GetTotalFreeSize
- OS_GetMaxFreeSize
- OS_ClearHeap
- OS_FreeAllToHeap

また、OS_CheckHeap() の型を long から s32 にしました。

### Note 21-31: (MI) 圧縮データのストリーミング展開

圧縮データのストリーミング展開がサポートされました。この機能を使用すると、カードから圧縮データを読みながらより少ないバッファで LZ 圧縮、ランレングス圧縮、ハフマン圧縮されたデータの展開を行なうことが可能となります。 実際にデータのストリーミング展開をおこなうサンプルとして以下のデモが追加されました。

- $(NITROSDK_ROOT)/demos/mi/UnComp_Stream_BmpBG

### Note 21-32: (MI) MI_SendGXCommandAsync*() の不具合修正

MI_SendGXCommandAsyncFast() と MI_SendGXCommandAsync() で、すでに指定のDMAを使用していたときに終了待ちを行なう個所で、 volatile 指定が適切でなく終了をうまく待てていませんでした。これを修正しました。

### Note 21-33: (MI) 多重DMAの不具合への対処

多重DMA時のハードウェアの不具合対処として、DMA0 を使用したときのソースアドレスに制限を設けました。 具体的には、DMA0 のソースアドレスに 0xmmnnnnnn (mm=0x04,08〜ff　nnnnnnは任意) は指定できないようにしました。転送終了時のソースアドレスもこの制限が適用されます。

また、DMA0 を使用した後はダミーの空 DMA 転送を行なうようにしました。

なお、DMA1 〜 DMA3 には制限はありません。

### Note 21-34: (PXI) PXI 初期化処理の変更

PXIのコントロールレジスタのクリアと PXI 割り込み設定の順序を、 「割り込み設定→レジスタクリア」 から、「レジスタクリア→割り込み設定」 となるように変更しました。

これは、以前の順序だと、割り込みを設定したときに PXIの FIFOレジスタにデータた残ったままだとその時点で割り込みが発生して しまうためです。

### Note 21-35: (DevEnv) makerom にクローンブート用のサイズチェックオプション追加

クローンブート機能を使用するアプリケーションにおいて、 attachsign ツールによって認証コードを追加するための領域がROM イメージ上に確保できるかどうかを、ROM イメージ生成時点で判定する機能を makerom に追加しました。

この機能は makerom の起動オプションとして -A を追加することで有効になります。 Makefile を使用している場合は以下のように MAKEROM_FLAGS にオプション -A を設定すると良いでしょう。

> MAKEROM_FLAGS = -A

### Note 21-36: (DevEnv) ドキュメント形式の統一

これまで $NitroSDK/docs/TecnicalNotes 以下のドキュメントは doc や rtf など 様々な形式で置かれていましたが、これを pdf 変換した pdf形式ドキュメントに統一しました。

### Note 21-37: (DEMO) tips/MyBuildMessage デモの追加

make -s 時のコンパイルおよびリンクメッセージを変更するデモを $NitroSDK/build/demos/tips/MyBuildMessages に用意しました。

### Note 21-38: (TOOL) emuchildの出力ファイルを省サイズ化

クローンブート使用時にバイナリへの署名の前準備を行なう emuchild.exe は常にフルサイズのファイルを出力していましたが、 出力ファイルサイズを小さくする為、ARM9,7のstatic領域以降のデータを除外するように変更されました。 これまで通りのフルサイズのバイナリを出力するためには追加された -f オプションを使用してください。

### Note 21-39: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドライブラリが2004年12月27日版となりました。

### SDK 2.0 RC4 での既知の問題点

ありません。

## ■ NITRO-SDK Version 2.0 RC3

(2004/11/29)

### Note 20-01: (MB)擬似DSダウンロードプレイ子機機能の追加

DSカードから起動したアプリケーションがDSダウンロードプレイの 親機に対して、擬似的にDSダウンロードプレイ子機としてエントリーを行なう為の機能が追加されました。 この機能を利用すると、ワイヤレス対戦において DS ダウンロード子機とマルチカード子機を共存させることが 可能になります。

また、デモプログラムとして、 multiboo-Model の親機サンプルに対してエントリーをおこなう fake_child デモが以下のフォルダに追加されました。

> $NitroSDK/build/demos/mb/fake_child

### Note 20-02: (MB) MB_GetParentSystemBufSize( ) 関数の不具合修正

NITRO-SDK2.0RC2にて、MB_GetParentSystemBufSize( ) 関数が返す バッファサイズが実際の値よりも WM_SYSTEM_BUF_SIZE バイトだけ小さい値になってしまうという不具合があり、修正しました。 なお、同義のバッファサイズとして nitro/mb.h で定義されている MB_SYSTEM_BUF_SIZE はこの不具合の影響を受けません。

### Note 20-03: (MB) MB_ReadSegment( ) 関数の機能拡張

MB_ReadSegment( ) 関数に引数として与えるバッファ長について、 MB_GetSegmentLength( ) 関数の返り値を下回るサイズでも 指定可能なように機能を拡張しました。 この最低サイズは MB_SEGMENT_BUFFER_MIN として定義されます。 この拡張機能を使用した場合の詳細については、　MB_ReadSegment( ) 関数のリファレンスを参照下さい。

### Note 20-04: (MB) MB_StartParentEx( ) / MB_EndEx( ) 関数の名称変更

他カテゴリとの統一のため、現行の MB_StartParentEx( ) 関数および MB_EndEx( ) 関数の名称をそれぞれ MB_StartParentFromIdle( ), MB_EndToIdle( ) へと変更し、古い名称は廃止されました。

### Note 20-05: (MB) MB_DisconnectChild( ) の追加

DSダウンロードプレイデータの配信時に、WM_Disconnect( ) を使用して親機側から子機を切断した場合に、MBライブラリの内部状態に不整合が発生する不具合がありました。 MB通信中にも安全に子機を切断することのできる, MB_DisconnectChild( ) 関数を追加しました。

### Note 20-06: (MB) 親機受信バッファサイズ変更の廃止

DSダウンロードプレイの親機で、受信バッファサイズの設定を変更した 場合に以下の不具合が発見されました。

- MBUserInfoの子機ニックネームが正しく受信できない。
- １台の親機で複数のファイルを配信している場合に２つ目以降に登録したファイルが正常にダウンロードできない。

このため仕様を変更し、MB 親機での受信バッファサイズは変更不可としました。 これにともない、以下の関数における受信バッファサイズを設定する引数を廃止しました。

- MB_SetParentCommSize( )
- MB_SetParentCommParam( )

### Note 20-07: (MB) クローンブートサンプルの追加

クローンブートのプログラム作成手順を例示するサンプル cloneboot が追加されました。

### Note 20-08: (MB) multiboot-Model 親機への再接続時のリトライ不具合の修正

multiboot-Modelデモで子機がブートした後に親機に再接続する際、一度でも親機への接続に失敗するとリトライができないという不具合がありました。

この不具合は以下のように修正されました。

- wireless-shared/wh/wh.c で、親機への接続が失敗した場合に WH_SYSSTATE_CONNECT_FAIL 状態に正しく遷移するように修正しました。
- 接続に失敗した場合にリトライ接続前に必ず WM_Reset( ) によって状態をリセットするように修正しました。

本デモを参考にアプリケーションを作成されておられる場合は、上記の修正点をご確認ください。

### Note 20-09: (MB) DSダウンロードプレイに関するドキュメントを追加

$NitroSDK/docs/TecnicalNotes/AboutMultiBoot.doc に DS ダウンロードプレイの手順や DS ダウンロード親機との再接続、 クローンブート等に関するドキュメントが追加されました。

### Note 20-10: (WM) ARM7 側無線ライブラリの修正

Release 版、Debug 版の mongoose コンポーネントにおいてドライバを動作させる のに必要とされる量のワークエリアを確保できない場合がありました。また、全てのバージョンで mongoose のワークエリアを再利用する際の処理に問題があり、特定の順番で API を呼び出して接続・切断を繰り返した場合にワークエリアが 足りなくなり、接続処理が正常に動作しなくなる可能性がありました。これらの問題を修正しました。

### Note 20-11: (WM) MP 通信のライフタイムの導入

通信中の子機の ARM7 が halt 状態に遷移するなどしてフリーズした場合、 子機の無線ハードウェアが自動的に Null 応答を返しつづけるため、親機アプリケーションからは、異常の発生を検出できませんでした。これに対処するため、子機が Null 応答を一定時間返しつづけた場合には、その接続を切断するように内部処理を変更しました。

また、通信中の親機の ARM7 が halt 状態に遷移するなどしてフリーズした場合も同様に、親機の無線ハードウェアが自動的にビーコンを送信し続けるため、子機アプリケーションからは異常を検出することができませんでした。そこで、親機からMPフレームを一定時間受信できない場合に自動的に切断 するように変更しました。親子共に切断までのデフォルト値は 4 秒となっています。

また、これに伴い WM_SetLifeTime( ) に mpLifeTime 引数が追加になりました。

なお、通常は Null 応答や MPフレーム送信のスキップ は一時的に ARM7 の負荷が高くなった場合に発生するものであり、連続して発生するものではありません。

### Note 20-12: (WM) 「ワイヤレス通信チュートリアル」の追加

WMライブラリを使用した無線通信プログラムサンプル dataShare-Model を例に取った、無線通信プログラムを作成する為のチュートリアルとなるドキュメント、「ワイヤレス通信チュートリアル」を追加公開しました。

### Note 20-13: (FS) FS_LoadOverlayImageAsync( ) 関数の追加

オーバーレイを非同期にロードする関数として FS_LoadOverlayImageAsync( ) 関数を追加しました。

### Note 20-14: (FS) FS_RegisterOverlayToDebugger( ) 関数の廃止

非同期にロードしたオーバーレイをデバッガへ登録するための関数FS_RegisterOverlayToDebugger( ) の機能は FS_StartOverlay( ) に統合されました。 このため、ユーザプログラムからの FS_RegisterOverlayToDebugger( ) の明示的な呼び出しは不要となりました。 互換性のため、この API は何もしない空の関数として残っています。

### Note 20-15: (GX) GX_GetVCountEqVal( ) 関数の追加、および他の VCOUNT 一致割り込み関連 API の名称変更

VCOUNT 一致割り込みの現在の設定を取得するための API GX_GetVCountEqVal( ) を 用意しました。また、関連する API の GX_SetVCounterEqVal( ), GX_IsVCounterEq( ) は、それぞれ GX_SetVCountEqVal( ), GX_IsVCountEq( ) に名称を変更しました。ただし、以前の API 名称もマクロによる別名定義により使用可能となっています。

### Note 20-16: (GX) GX_SetBankForBGEx( ) 関数の追加

BG用のVRAMバンク設定でVRAM-AとVRAM-Eなど連続したアドレスを確保できない組み合わせを使用するための関数として、 GX_SetBankForBGEx() を追加しました。 この関数を使用することによって、0x6000000-0x6017FFFには VRAM-EFG が割り当てられ 0x6020000-0x607FFFF には VRAM-ABCD のうち最大３つのバンクが割り当てられます。

また、この関数を使用したデモとして、 demo/gx/UnitTours/2D_CharBg_BankEx が追加されました。

### Note 20-17: (CARD) カード抜け後処理関数 CARD_TerminateForPulledOut() の変更

カード抜けを検出した後にデフォルトで呼ばれる CARD_TerminateForPulledOut( ) を 必ず OS_Terminate( ) で停止するという処理から、蓋が開いていればこれまで通りの停止で、 蓋が閉まっていれば強制的に電源をオフにするようにしました。

### Note 20-18: (MI) 差分フィルタの復元関数を追加

ntrcompを使用して差分フィルタをかけられたデータをランタイムで復元する以下の関数が追加されました。

- MI_UnfilterDiff8( )
- MI_UnfilterDiff16( )

また、MI_GetCompressionType( ) 関数で得られるデータタイプに MI_COMPRESSION_DIFFが追加されました。

### Note 20-19: (MI) 起動時専用のメモリクリア処理関数の追加

CPUによるメモリクリア関数は crt0.c で定義し、他のライブラリ(OS, MI) はそれを利用していましたが、マルチブート子機となったDSがデータ受信キャンセルした場合、この領域が破壊されることがありました。 そこで、crt0 で使用するメモリクリア関数と他ライブラリのメモリ クリア関数を互いに独立させるようにしました。

### Note 20-20: (OS) VAlarm についての不具合修正

VAlarmに複数のアラームを設定すると、設定したVカウントや遅延許可ライン数、割り込みの発生するタイミングなどによってアラームが発動する順番が正しく制御されない場合があるという不具合がありました。この不具合に起因して、無線通信中にタッチパネルの自動サンプリングが正常に行われない可能性があるという問題がありました。 この不具合を修正しました。

### Note 20-21: (OS) デバッグ関数の weak シンボル化

以下の デバッグに関係した OS 関数を weak シンボルとしました。 ユーザが同名の関数を定義した場合、そちらが優先されます。

- OS_PutChar( )
- OS_SPrintf( )
- OS_VSPrintf( )
- OS_SNPrintf( )
- OS_VSNPrintf( )
- OS_VPrintf( )
- OS_TVPrintf( )
- OS_Printf( )
- OS_TPrintf( )
- OS_Terminate( )
- OS_Halt( )

また、OS_Panic( ), OS_Warning( ), OS_TPanic( ), OS_TWarning( ) の実体である OSi_Panic(), OSi_Warning(), OSi_TPanic( ), OSi_TWarning( ) も weak シンボルとしました。

### Note 20-22: (SND) SND_InvalidateWaveData( ) で関係ない発音が止まる不具合を修正

SND_InvalidateWaveData( ) 関数で、関係のない発音も止められてしまうことがある不具合がありました。この不具合により、サラウンドモード中にメモリ上のサウンドデータを破棄すると、以後サラウンドモードを停止させるまで 発音が行われなくなることがありました。 この不具合は修正されました。

### Note 20-23: (MIC) MIC_GetLastSamplingAddress( ) が正確なアドレスを返さない不具合の修正

MIC_GetLastSamplingAddress( ) に以下の不具合がありました。

- 16 ビットサンプリングにおいて、返値が 2 バイトずれる
- MIC_StartAutoSampling( ) の直後に呼び出すと不定値が返るときがある

これらの不具合は修正され、MIC_GetLastSamplingAddress( ) 関数は「最後にサンプリングしたデータを格納したメモリ位置を返すが、一度もサンプリングしていない場合はNULLを返す」という仕様に変更されました。

### Note 20-24: (PRC) 識別子名の変更

図形認識 API のうち、regularize という綴りを持った識別子は 全て normalize と変更されました。

> PRCInputPatternParam
> PRCPrototypeDBParam
> PRCPrototypeList

の各構造体のメンバ変数に変更があります。 また、$NitroSDK/tools/bin/pdic2c.pl の出力する C プログラムの定数値も PDIC_NORMALIZE_SIZE に変更されました。

### Note 20-25: (WM) WM_SetMPDataToPort*( ) の引数チェックの強化

WM_StartMP*( ) の引数 sendBuf と WM_SetMPDataToPort*( ) の引数 sendData とに 誤って同一のバッファを割り当ててしまわないよう、 この二つのバッファが同一だった場合はエラーとなるように変更しました。

### SDK 2.0 RC3 での既知の問題点

「Note 20-15: (GX) GX_SetBankForBGEx( ) 関数の追加」の、 GX_SetBankForBGEx( ) 関数を使用すると、現状では DEBUG ビルド時のリージョンチェックが行なわれず、 不正なアドレスに書き込んだ場合にもASSERTに引っかかりません。この不具合は次以降のリリースで修正されます。

## ■ NITRO-SDK Version 2.0 RC2

(2004/11/04)

### Note 19-01: (WM) WM_GetAllowedChannel() でのエラー発生時の返値の変更

WM_GetAllowedChannel() においてエラーが発生したとき(WM_Init() が先に呼ばれていない)の返値を 0 から 0x8000 に変更しました。

これは許可されているチャネルがなかった場合(返値が 0x0000)とエラー発生とを区別するためです。

### Note 19-02: (WM) WM_End ライブラリ終了関数の内部仕様を一部変更

WM_End( ) 関数において、ユーザーコールバックが呼び出された後にメモリの解放などライブラリの強制終了処理を行う仕様でしたが、コールバックが呼び出された時点で全ての終了処理が完了している状態になるよう仕様を変更しました。

この変更は WM_End( ) 関数に対するコールバック内で、次の WM_Initialize( ) 関数を呼び出したいとのご要望に対応したものです。

### Note 19-03: (WM) WMDisconnectCallback 構造体の新設

WM_Disconnect( ) 関数、及び WM_DisconnectChildren( ) 関数に対するコールバックに渡される構造体を新規に追加しました。WMCallback 構造体に切断を要求した機器の AID ビットマップ及び結果として切断された機器の AID ビットマップを示すメンバを追加した構造体です。

新設された WMDisconnectCallback 構造体の先頭のメンバー変数は、これまでの WMCallback 構造体と互換性を保っているので、WMCallback 構造体として取り扱っても問題はありません。

### Note 19-04: (WM) WM_Reset( ) 関数の初期化動作の修正

WM_Reset( ) 関数を、MP 通信接続確立後に呼び出すと MP 通信用の自動処理がリセットされずに残るという不具合がありました。

この不具合を修正し、自動処理部分も確実にリセットされるようにしました。これにより処理の負荷が下がる可能性があります。

### Note 19-05: (WM) データシェアリング終了時の処理の修正

WM_EndDataSharing( ) 関数とWM_EndMP( ) 関数の間に MP 通信が発生した場合に不正な処理が起こる可能性がありましたが、これを修正しました。

なお、WM_EndDataSharing( ) 関数とWM_StartDataSharing( ) 関数をこの順に連続して呼び出すと不具合が起こることがありますので、ご注意ください。

### Note 19-06: (WM) データシェアリングにおけるデータサイズ上限変更

RC1 以前のライブラリのデータシェアリングにおいて、共有サイズ×共有台数の上限は 252 バイトでしたが、これを 508 バイトに拡張しました。それにともない WMDataSharingInfo の構造体サイズが 1K バイト増えています。以前の状態に戻したい場合は wm.h の WM_DS_DATA_SIZE_252 を #define してください。

### Note 19-07: (MB) MBUserInfo の nameLength が無効となる不具合を修正

MB_Init() の引数の MBUserInfo を設定する際に、ユーザ名の終端がNUL文字で判定され長さを示す nameLength を変更しても子機画面に反映されないという不具合がありました。

この不具合は修正されました。

### Note 19-08: (MB) MB_StartParentEx( ) 関数, MB_EndEx( ) 関数の追加

従来の MB_StartParent( ) 関数、MB_End( ) 関数と対応して、無線ライブラリが IDLE 状態であっても呼び出すことの可能な MB_StartParentEx( ) 関数、および無線ライブラリを IDLE 状態にして終了する MB_EndEx( ) 関数を追加しました。開始前・終了後の無線ライブラリの状態以外の点では、どちらも同じように使用することが出来ます。

### Note 19-09: (MB) MB_UnregisterFile( ) 関数のリファレンスに注意事項を追加

マルチブート親機側が MB ライブラリを起動中に MB_RegisterFile( ) 関数と MB_UnregisterFile( ) 関数を交互に呼び出して登録プログラムを動的に変更すると、変更前後の登録プログラムの GGID が一致している場合にIPL 側でその変更を検出できないという制約がありました。

その問題を回避するための注意事項を MB_UnregisterFile( ) 関数のリファレンスに追加しました。

### Note 19-10: (MB) チャンネル電波使用率を検出するデモを追加

マルチブート使用時にMBの前処理として電波使用率を調査するデモが $NitroSDK/build/demos/mb/mbm として追加されました。デモ中のMBM_MeasureChannel( ) は、最適なチャンネルを取得した後無線のパワーを OFF にするため、コールバック取得後に通常通り MB_Init( ) からマルチブート処理を開始してください。

### Note 19-11: (MB) multiboot デモにおける tgid 値の設定手法の変更

multiboot サンプルデモの親機動作において、無線の接続セッションの管理を行なうための tgid の設定値を電源 ON 毎になるべく異なった値になるように修正しました。tgid の値として RTC から取得できる現在時刻の分と秒の値を利用しています。

### Note 19-12: (MB) MB_End ライブラリ終了関数の仕様を一部変更

MB_End( ) 関数において、ユーザーコールバックが呼び出された後にメモリの解放などのライブラリの終了処理を行っていましたが、コールバックが呼び出された時点で全ての終了処理が完了している状態になるよう修正しました。

これは Note 19-05 と同様の修正で、MB_End( ) のユーザコールバック内で MB の再初期化を行なう場合に対応したもので、ドキュメントとの実動作とが一致していないという不具合の修正となります。

### Note 19-13: (WBT) wbt-fs サンプルデモの通信切断時エラー処理の修正

wbt-fs サンプルデモで子機側のファイルアクセス中に親機との通信が切断された場合、その時点以降に呼ばれたファイル操作が完了しない場合があるという不具合があり、これを修正しました。

### Note 19-14: (WBT) wbt-fs サンプルデモの修正

wbt-fs サンプルデモ内部の受信データのキャッシュ操作において、Flush すべき部分に対して Invalidate していた個所がありました。

この問題を修正しました。

### Note 19-15: (WBT) WBTライブラリの修正

WBTライブラリについて、以下の問題が修正されました。

- 相手局でブロックが登録されていない状態のときに WBT_GetBlockInfo( ) 関数を呼び出した場合、コールバックで返される WBTBlockInfo 構造体が不定値になるという問題がありました。これを、「全てのメンバが0クリアされたデータ」を返すよう修正しました。
- WBT_GetBlockInfo( ) 関数の優先度が WBT_GetBlock( ) 関数の優先度より高いため、場合により処理が進捗しないことがあるという問題がありました。これを、WBT_GetBlockInfo( ) 関数の優先度を下げるよう修正しました。

### Note 19-16: (FS) FS_RegisterOverlayToDebugger( ) 関数の追加

オーバーレイモジュールを FS_LoadOverlay( ) などの上位関数を使用せずに、ファイルリードなどの下位関数の組み合わせでオーバーレイモジュールをロードする際に、デバッガへオーバーレイのロードを通知するための関数 FS_RegisterOverlayToDebugger( ) をFSライブラリへ追加しました。

FS_GetOverlayFileID( ), FS_ReadFile( ) および FS_StartOverlay( ) の組み合わせでオーバーレイをロードする場合、この関数を FS_StartOverlay( ) の前に呼び出すことによってデバッガ上で追跡することが出来ます。

この使用方法を示すコードを、$NitroSDK/build/demos/fs/overlay に追加しました。

### Note 19-17: (OS) Vカウントよるアラーム処理の変更

Vカウントによるアラーム(VAlarm)の処理ルーチンを変更しました。これまでは割り込みによるループ最初の VAlarm は指定のVカウントちょうどでなければハンドラの呼び出しは起こらず、これを用いている無線などのライブラリで処理の遅延が発生していました。

ここで「割り込みによるループ最初のVAlarm」とは、文字通りVカウント割り込みによって呼び出されるVAlarmハンドラであり、内部ではこれが呼ばれた後に(割り込みによらず)登録されている他のアラームの呼び出しカウントを調べ、必要ならばハンドラを呼び出す、という処理を行なっています。

今回の変更では、割り込みによって呼び出されるVAlarmハンドラが、指定のVカウントをある程度過ぎていても呼び出されるように、呼び出し遅れ許容Vカウント範囲(delay)を指定できるようになりました。(間に合わなかったものは次のフレームにまわされます。)

そのために Vアラームの設定関数 OS_SetVAlarm() では delay の引数が増えました。

従来、

> OS_SetVAlarm( alarm, vcount, handler, arg );

と呼び出していたものは、

> OS_SetVAlarm( alarm, vcount, delay, handler, arg );

となります。詳細は OS_SetVAlarm() のリファレンスマニュアルを参照してください。

また、周期Vアラームでは、これまでも delay 指定がありましたが、やはり割り込みで掛かるVAlarm では delay が利いていませんでしたので正確に delay の遅れまではアラームが発生するようにしました。

OS_SetVAlarm() の引数が一つ増えましたが、delay を指定しない従来の呼び出しを行ないたい場合は、引数は同じで OS_SetVAlarm() の代わりに OS_SetOneTimeVAlarm() を呼び出して下さい。これは delay に 10を指定したのと同様の関数となります。(従来も内部では、delay=10として扱っていました。)

delay の最大値は OS_VALARM_DELAY_MAX となります。これを指定する場合、どんなに遅れても指定のVアラームハンドラが呼び出されます。

### Note 19-18: (OS) オーナー情報「お気に入りの色」取得関数の追加

以下の色情報定義と関数を追加し、リファレンスを追加しました。

- OS_GetFavoriteColor()
- OS_GetFavoriteColorTable()
- OS_FAVORITE_COLOR_ 列挙定数群
- OS_FAVORITE_COLOR_VALUE_ 色値定数群

### Note 19-19: (OS) 関数コスト計測プロファイラの修正

関数コスト計測プロファイラの OS_CalcThreadStatistics( ) で行うコスト計算で、カレントスレッド以外のスレッドを対象にした場合に不具合がありました。コスト計算の結果を統計バッファに反映させた後、コストバッファをクリアするのですが、対象スレッドではなくカレントスレッドのバッファをクリアしていました。これを修正しました。

### Note 19-20: (OS) OS_SetTick() の修正

チック値の設定関数(OS_SetTick( ) )に不具合があり、他の割り込み要求フラグを落としてしまうことがありました。これを修正しました。

なお、アラームシステムを使用している場合はその動作に影響を及ぼす場合があるため、アプリケーションで OS_SetTick( ) することに対しては十分な注意を払う必要があります。

### Note 19-21: (OS) OS_ResetSystem() の修正

リセット関数 OS_ResetSystem( ) はハードウェアの初期化を伴わないため、これを呼び出す前にハードウェアの機能を明示的に停止させる、または停止していることを確認する必要がありますが、安全性を高めるため、幾つかのハードウェア機能についての停止処理を関数内部に追加しました。

- カードバスがロックされているときはロックの終了を待つようにしました。(ARM9のみ)
- DMAを全て停止するようにしました。
- ARM9にリセットを通達するために使用するPXI関連の割り込み以外の割り込み要因をマスクするようにしました。
- ARM7からリセットの通達を受けるために使用するPXI関連の割り込み以外の割り込み要因をマスクするようにしました。

また、リセット処理の一部がメインメモリ上で行なわれていたため、この部分を破壊される場合にリセット処理が正常に行なわれない不具合があったことも修正しました。

### Note 19-22: (OS) DTCM へのデータセクション転送処理の修正

DTCM へデータセクションを設置し autoload でロードしていた場合に正常な処理が行なわれませんでした。これを修正しました。

### Note 19-23: (CARD) CARD_GetRomHeader 関数の追加

ワイヤレスダウンロードによって起動されたプログラムが実際に挿入されているNITRO-CARDのROM内登録情報を取得することの出来る関数 CARD_GetRomHeader を追加しました。

### Note 19-24: (CARD) CARD アクセス時の自動起動 DMA チェック処理修正

CARDライブラリおよびその上位ライブラリ関数においてCARD-ROMへのアクセス時に他の自動起動DMAとの重複実行を判定する処理が抜けていたため、この判定処理を追加しました。

### Note 19-25: (ARM7) ferret へのカードとカートリッジ抜き検出機能の追加

ARM7 のコンポーネントとして ferret を使用した場合、カードとカートリッジの抜き検出を行なうことが出来ませんでしたが、この機能を追加し ferret 使用時で検出が出来るようになりました。

この検出機能は TS 版のライブラリでのみ有効です。

### Note 19-26: (PM) スリープ復帰時のLCD状態の修正

NITRO-SDK 2.0 RC1 の修正「Note 18-16: (PM) スリープ時の残像を避ける修正」を行なうことで次のような不具合が発生していました。残像を避けるために行なった修正により、PM_GoSleepMode( ) でスリープに入り復帰するとGXライブラリの内部状態がスリープ前と異なってしまい、LCD が正しく復帰しない場合がある、というものです。これを修正し、スリープ後に正常に LCD が復帰するようにしました。

### Note 19-27: (MI) DMA 時のアドレスチェック処理の修正

DEBUG 用 MI ライブラリにおいて DMA の際の転送アドレスが ITCM や DTCM に含まれているかどうかを ASSERT チェックしています。この ITCM の開始アドレスが 0x00000000 となっていました。これを正規の値の 0x01FF8000 に変更しました。

### Note 19-28: (MI) MI_DmaFill*( ) の修正

DMAを用いてメモリを同じ値でフィルする、MI_DmaFill*( ) が関数実行途中で割り込みが発生すると、そのタイミングによっては正常に値の転送が行なえなくなっていました。これを修正し、MI_DmaFill*( ) を割り込みセーフ関数としました。

### Note 19-29: (GX) G3X_IsLineBufferOverflow( ), G3X_ResetLineBufferOverflow( ) の改名

レンダリングエンジンのラインバッファのアンダーフロー(ラインズオーバー) フラグ関連の関数

> G3X_IsLineBufferOverflow()、G3X_ResetLineBufferOverflow()

を

> G3X_IsLineBufferUnderflow()、G3X_ResetLineBufferUnderflow()

に改名しました。

### Note 19-30: (GX) レジスタの定義誤りの修正

$NitroSDK/include/nitro/hw/ARM9内で定義されている以下の定数宣言に誤りがありました。

- REG_EDGE_COLOR_2_OFFSET
- REG_EDGE_COLOR_3_OFFSET
- REG_G3_TEXCOORD_INTEGER_SHIFT
- REG_REG_G3X_VTXRAM_COUNT_VTXCNT_SIZE
- REG_G3X_VTXRAM_COUNT_VTXCNT_MASK

これらの不具合は修正されました。

### Note 19-31: (GX) G3X_InitTableのテーブルクリア不具合の修正

G3X_initTable関数内のテーブルを0クリアする際に、トゥーンテーブルの終わり16バイトがクリアされない不具合がありました。

この不具合は修正されました。

### Note 19-32: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドライブラリが NITRO-SYSTEM 2004年10月12日版のものとなりました。この変更は 2.0RC1plus3 以降のパッチにも追加されいます。

### Note 19-33: (CTRDG) CTRDG_IsNumberID()、CTRDG_IsBitID() のリファレンス追加

カートリッジへ指定の周辺機器が搭載されているかを調べるための関数、CTRDG_IsNumberID()、CTRDG_IsBitID( ) のリファレンスマニュアルが追加されました。

### Note 19-34: (DevEnv) IPL GUI 版 mb_child, 無線接続チェック用ツール WMTestTool の収録

製品版 IPL を模した mb_child プログラムを $NitroSDK/bin/ARM9-TS/Rom 以下へ収録しました。以前のものは mb_child_simple.srl と名称変更されています。

また同ディレクトリに無線テスト用のツールである WMTestTool.srl を収録しました。以下のテストモードが使用できます。詳細なマニュアルは現在準備中です。

- aging test - MacAddressの取得に使えます。
- Scan test - GGIDの確認に使えます。
- ScanEx test - GGIDの確認に使えます。(普通のScanとの性能比較も)
- MeasureChannel test - MeasureChannel に使えます。
- Noise mode - ノイズを発生し通信をしにくくします。

### SDK 2.0 RC2 での既知の問題点

ありません。

## ■ NITRO-SDK Version 2.0 RC1

(2004/10/07)

### Note 18-01: (WM) WM ライブラリの変更

※2.0RC1における WM ライブラリの変更により、2.0FC までのプログラムはそのままではコンパイルに通らなくなっています。 主に修正するべき点についてはこちらをご参照ください。

1) TESTモード操作関数　WM_StartTestMode( ), WM_StopTestMode( ) を削除しました。

2) WM_GetAllowedChannel( ) は同期関数であるにも関わらず WM_PowerOn( ) を行った後の IDLE ステートでないと有効な値を返さないという仕様でしたが、 ライブラリ使用者の混乱を招く恐れがありましたので、WM_Init( )関数によって初期化した後であればいつでも有効な値を返すように修正しました。

3) 無線で通信を行いながらサウンドライブラリを使用してある程度高音程の音を鳴らすと、ノイズが乗るという不具合がありましたが、この不具合は大きく改善されました。

4) NintendoDS 以外の無線通信機器などの影響等により無線通信プロトコルに復旧不能な致命的なエラーが発生した場合、電波が届かなくなった場合などと同様に接続が自動的に切断される仕様となりました。アプリケーションは、通常の切断とまったく同じ通知を受け取りますので、対応コードを新たに書く必要はありません。

5) NintendoDS 本体ごとに無線通信時に必要な固有の設定値が内部的に保存されていますが、この設定値が何らかの理由で破壊されると正常に通信ができなくなります。このため、無線用の設定値が壊れた状態で無線通信を試みた場合は自動的にプログラムが停止するようになりました。

6) ゲームグループ ID について、u16[2] 型の定義と u32 型の定義が混在しており混乱を招いていた為、これをu32 型に統一しました。APIとしてインターフェースの変更が行われたものは以下の通りです。

- WMParentParam 構造体
- WM_SetGameInfo( ) 関数
- MB_Init( ) 関数

また、この変更に伴い無線通信を行うサンプルデモをそれぞれ修正しました。

7) WM_StartMPEx( ) に引数 ignoreFatalError が追加されました。通常使用の場合は FALSE を与えるようにしてください。

8) WMParentParam で指定できる親子それぞれの最大送信可能バイト数の最大値が 508 バイトから 512 バイトに増えました。 ただし、MP通信の所要時間の 5600 μ秒の制限は変わっていませんので、 この制限内で送信バイト数を設定してください。 なお、MBライブラリのMB_COMM_PARENT_SEND_MAXの値はそのままとなっています。

9) WM_StartMPEx の minPollBmpMode が TRUE の状態で親子の距離を離していった場合、 WM_GetLinkLevel の返り値が最高レベルの 3 のままで切断されてしまう不具合がありましたが、 これを修正しました。 同時に、WM_GetLinkLevel で取れる電波受信強度の振る舞いが変更されました。 値が変動する頻度が緩やかになっています。

10) MACアドレスについて、u16[3] 型の定義と u8[6] 型の定義が混在しており混乱を招いていた為、 これを u8[6] 型に統一しました。APIとしてインターフェースの変更が行われたものは以下の通りです。

- WM_SetDCFData関数
- WMStartParentCallback構造体
- WMStartScanCallback構造体
- WMPortRecvCallback構造体
- WMScanParam構造体

また、この変更に伴い無線通信を行うサンプルデモをそれぞれ修正しました。

11) プログラミングガイドラインで規定されている MP 通信所要時間を上回る設定値を使用していた 全ての無線サンプルデモについて、正しく範囲内の値を使用するよう修正しました。

### Note 18-02: (MB) mb_child.srl プログラムが最大文字数処理で停止する問題の修正

mb_child.srl において親機のユーザ名が 10 文字になっている場合正常に動かないという問題がありましたが、 修正されました。

### Note 18-03: (MB) multiboot-Model デモのダウンロードシーケンス変更

IPL のダウンロード時の表示シーケンス確定に従い、 これまでデモでは親機はデータ転送後にブート準備が整うのを待っていましたが、 データ転送前に子機が揃うのを待ち一斉にデータ転送を開始するように変更しました。

### Note 18-04: (MB) mb_child.srl プログラムの表示文字を英語へ変更

マルチブートに使用する子機用プログラムの mb_child.srl は画面表示に日本語を使用していましたが、 これを英語表示へ改めました。

### Note 18-05: (WBT) WBT_CancelCurrentCommand 関数の追加

WBTにおいて、 WBT_GetBlock 関数で処理中のファイル受信操作をキャンセルするための WBT_CancelCurrentCommand 関数が追加されました。

### Note 18-06: (DEMO) WMデモ ball の警告対処

ballデモで「Failed sound alarm OS_SendMessage」という警告が出ていましたが、対処して出ないようにしました。

この警告は、ARM7のサウンド処理が正常に行われていないことを示しています。 44kHzの音を３オクターブ以上高い音で１６音同時に再生するような状況下でも、 CPU処理に高い負荷がかかるために、この警告が出る場合があります。 CPU処理に大きな負荷を与えるサウンド再生を行わないように注意してください。

### Note 18-07: (DEMO) multiboot デモのユーザ名処理の変更

mb/multiboot デモの処理で親機が使用するユーザ名を NintendoDS本体のオーナー情報から取得するよう変更しました。

ただし、 `TS_VERSION < 200` かつ `NVRAM_FORMAT < 100` の TS や TEG など OS_GetOwnerInfo() 関数が使用できない古い環境では従来どおり固定値を使用しています。

### Note 18-08: (DevEnv) NITRO-SDK のバージョンの表示ツールの収録

ROM ファイルに組み込まれている NITRO-SDK のバージョンを表示するツール showversion を収録しました。 NITRO-SDK 2.0FC 以降でのみ有効です。 詳しい制限事項は リファレンスマニュアルをご覧ください。

### Note 18-09: (DevEnv) バナー表示ツールの最終版の収録

バナー表示ツールの最終版を収録しました。以前のものと比べ、使用可能フォントなどに違いがあります。

### Note 18-10: (DevEnv) lsf ファイルの常駐領域名称の記述とモジュール圧縮処理のリンク

アプリケーション独自の lsf ファイルを使用している場合、 常駐モジュールのセグメント名と srl/nef ターゲット名が異なる設定であった場合に、 NITRO_COMPRESS 有効時のモジュール圧縮処理でエラーが発生していました。

lcf テンプレートファイルを修正し、 lsf ファイルの記述より中間ファイルcomponent.files を出力し、 compstatic でそのファイルを参照することで、 lsf ファイルの常駐領域名称の記述とモジュール圧縮処理がリンクされるように修正しました。

### Note 18-11: (OS) メインメモリ用プロテクションリージョン設定の変更

これまで、 起動時にメインメモリ用のプロテクションリージョンのサイズを常に4MBにしておき、 OS_InitArenaEx() を呼んだとき(OS_Init() 内で呼ばれます) SDK_8M が定義されていて8MBのメモリが搭載されていたときにのみ プロテクションリージョン設定を8MBとしていました。

しかし拡張メモリ領域に autoload でモジュールを転送しようとすると、 その転送は OS_InitArenaEx() より前に行われるため、 例外発生により出来ませんでした。

そこでメインメモリ用プロテクションリージョンのサイズについてのルールを次のように変更しました。

- 起動時にはメインメモリ用のロテクションリージョンのサイズを8MBにします。
- OS_InitArenaEx() を呼んだときに、SDK_4M が定義されているか、 搭載メモリ量が4MBの時にはリージョンのサイズを4MBに変更します。

この変更によって拡張メモリ領域への転送も可能となります。

### Note 18-12: (OS) リセット時のサウンド停止処理

OS_ResetSystem() の呼び出し時に、ARM7でサウンドの再生を停止する処理を行うようにしました。

### Note 18-13: (OS) OS_CreateThread() の修正

OS_CreateThread() で行っている、スレッド初期化について以下ものを追加しました。

- profilerメンバの初期化。プロファイル機能を用いる際に参照されます。
- joinQueueメンバの初期化。OS_ExitThread()、OS_JoinThread()、OS_DestroyThread() を使用する際に参照されます。

### Note 18-14: (OS) 関数トレースプロファイラの修正

プロファイル機能の一つ、 関数トレースの __PROFILE_EXIT で行っているバッファアンダーフローチェックに誤りがありました。 これを修正しました。 また、アンダーフローを検出した時のレジスタが正しく表示されていませんでしたがこちらも修正しました。

### Note 18-15: (PM) LCD 切り替え関数 PM_SetLCDPower() の修正

PM_SetLCDPower() で LCD 状態を切り替えたとき、 強制的に LED が点灯状態になっていましたが、 LED の状態を変化させないように修正しました。

### Note 18-16: (PM) スリープ時の残像を避ける修正

スリープ時、スリープ前の画面が残像として残ることがありましたが、 スリープするときに画面出力を切ってから1フレーム待つようにして残像が出るのを避けるようにしました。

### Note 18-17: (PM) スリープ時の IRQ マスク復帰処理の修正

スリープ処理を行った後、ARM7 側の IRQ マスクの復帰処理に誤りがありました。 スリープからの復帰要因によっては必要な IRQ 要因を有効にした後、 スリープから復帰してもその要因が有効になったままになっていました。具体的にはスリープ後のカード抜きチェックをカード割り込みによって行なう際に検出できなくなっていました。この不具合の修正を行いました。

### Note 18-18: (PM) スリープ時のコールバック呼び出し処理の追加

以下のようなスリープ時のコールバック呼び出し API を追加しました。 スリープモードに移行する前と、 スリープモードから復帰した後のそれぞれに対して登録することが出来ます。 またコールバックは複数のものを登録することが可能です。

- PM_AppendPreSleepCallback( )
- PM_PrependPreSleepCallback( )
- PM_AppendPostSleepCallback( )
- PM_PrependPostSleepCallback( )

### Note 18-19: (CARD) 複数回のカード初期化呼び出し処理の修正

CARD_Init( ) を２度読んだときに、Fifo Callback overridden 警告が出ていました。( FS_Init( ) は CARD_Init( ) を呼び出していますので CARD_Init( ) と FS_Init( ) を呼んだときも同様。) この警告を出ないように修正しました。

### Note 18-20: (CTRDG) カートリッジ関数の追加

以下のカートリッジ関数を正式公開とし、リファレンスを追加しました。

- CTRDG_IsAgbCartridgePulledOut.html
- CTRDG_IsOptionCartridgePulledOut.html
- CTRDG_GetAgbMakerCode.html
- CTRDG_GetAgbGameCode.html

### Note 18-21: (RTC) RTC アラーム監視方式の変更

これまで RTC アラームが発生した場合の割り込みと IS-NITRO-EMULATOR ハードウェアの競合問題により正常に RTC アラーム割り込みが発生しないという問題がありました。 この問題への対策として ARM7 にて RTC アラームの状態を定期的に監視するポーリングを行う暫定対策を施していましたが、IS-NITRO-DEBUGGER ソフトウェア Ver. 1.11 にてハードウェアの競合問題への対策が施されたことを受けて、ポーリング方式を廃止し割り込みをハンドリングする方式へ変更しました。

### Note 18-22: (RTC) 日付と曜日の整合性に関する修正

RTC_GetDate( ) 等の関数により取得できる日付構造体において、年月日に対する曜日の整合性が取れていない状態になる可能性がありました。この問題を修正しました。

### Note 18-23: (GX) クリアデプスイメージ単体でのクリアイメージの使用を追加

クリアカラーイメージスロットにVRAMを割り当てることなく、クリアデプスイメージのみを使用するために以下の設定を追加しました。

- GX_CLEARDEPTH_A
- GX_CLEARDEPTH_B
- GX_CLEARDEPTH_C
- GX_CLEARDEPTH_D

この時、クリアイメージはすべて 0x0000 でクリアされ α 値も 0 に設定されます。また、この設定の時にはテクスチャイメージスロット 2 は使用不能となりますので、このスロットに VRAM が割り振られないようにしてください。

また、これを使用したデモが demos/gx/ClearDepthOnly に追加されています。

### SDK 2.0 RC1 での既知の問題点

ありません。

## ■ NITRO-SDK Version 2.0 FC

(2004/09/30)

### Note 17-01: (WBT) 無線ブロック転送ライブラリの正式公開

テスト公開されていた無線ブロック転送ライブラリ(WBT)が正式公開となりました。 リファレンス及びサンプル `wbt-1`, `wbt-fs` が用意されています。

### Note 17-02: (WM/TP) 無線処理によってタッチパネルのオートサンプリングが停止する不具合の修正

タッチパネルのオートサンプリング処理が、無線処理起動時に停止してしまうという不具合がありました。 これを修正しました。

### Note 17-03: (WM) WMライブラリの変更

1) データシェアリング関数の排他制御が行われていない不具合を修正しました。

2) タッチパネルのオートサンプリングを有効にした状態で無線通信を開始すると オートサンプリングが止まってしまう不具合がありました。これを修正しました。

3) 異なるスレッドで同時に無線の非同期 API を呼び出した場合に、 処理結果が不正になる不具合がありましたが、修正しました。

4) データシェアリングの送受信関係の排他制御に問題があり、 ごくまれにデータシェアリングが停止する不具合がありました。 これを修正しました。

5) データシェアリング中に送受信の回復不能なエラーが発生した場合、`WM_StepDataSharing` が `WM_ERRCODE_FAILED` を返しつづけるように仕様を変更しました。

6) `WM_StartScan` を行った際に子機が親機を誤認識する可能性が発見されたので対処しました。
具体的には、「`GameInfo` 情報の付加されていないビーコンを取得した際に、 直前の `WM_StartScan` によって取得した `GameInfo` がそのまま残っており、`gameInfoLength` を評価せずに直接 `GameInfo` を参照すると間違った親機情報が得られてしまうという」という現象となります。
この問題への対処として、`WM_StartScan` にて親機が発見された際に `GameInfo` の付加されていないビーコンであった場合は `GameInfo` を 0 クリアする対策を施しました。また、サンプルデモにおいて `GameInfo` が直前のスキャンの残留ではなく実際に評価に価することを確認するよう修正しました。

### Note 17-04: (DEMO) `multiboot-Model` デモの修正

`multiboot-Model` のデモにおいて、子機が親機に再接続する場合に親機のチャンネルが不意に変わるために接続できない事がありました。

IS-NITRO-EMULATOR ハードウェアの有線接続ではチャンネルに関係なくすべてのチャンネルに接続ができてしまうため、 実際に無線を使った時のみこの問題が発生します。

この不具合を修正しました。

### Note 17-05: (DevEnv) `makebanner` ツールの修正

2.0PR6 から追加されたバナーファイル生成を行なう `makebanner`ツールに、バナースペックファイルの 1 行目の記述が無視されてしまうという問題がありました。バナースペックファイルの 1 行目がコメント行でない場合、問題が発生します。これを修正しました。

またバナースペックファイルの文字コードが正しくない場合、 エラーを出さずに空ファイルを出力してしまう点を修正し、 リファレンスの文字コードについての記述を "BOM 付きの UTF-16LE" に変更しました。

### Note 17-06: (DevEnv) `LIBSYSCALL` 処理の修正、および `libsyscall.a` の格納位置の変更

最終 ROM への組み込み用の `libsyscall.a` を `make` 変数 `LIBSYSCALL` で指定しているにもかかわらず、リンカのリンクオーダーの仕様によりデフォルトの `libsyscall.a` がリンクされたままになっていました。

`LIBSYSCALL` の指定において、リンクオーダー仕様への依存を回避するため、デフォルトの `libsyscall.a` の格納位置を他の SDK ライブラリのものと分離しました。これにより `LIBSYSCALL` で指定した `libsyscall.a` がリンクオーダー仕様に依らずに優先的にリンクされるようになります。

デフォルトの `libsyscall.a` は本バージョンから以下に格納されています。`libsyscall.a` は Debug/Release/Rom 版共通です。

> `$NitroSDK/lib/ARM9-TS/etc/libsyscall.a`

CodeWarrior IDE をお使いの方は、プロジェクトファイルでの `libsyscall.a` の格納位置の指定を適時修正する必要があります。

### Note 17-07: (DevEnv) `NITRO_COMPRESS` におけるオーバーレイの圧縮処理修正

`compstatic` ツールにおいてオーバーレイの圧縮処理を行なう場合に問題が発生し、 正常な圧縮データを生成しない場合がありました。この不具合を修正しました。

### Note 17-08: (DevEnv) バナーファイルのフォントセットの変更

バナーファイルのフォントセットを最新のものに差し替えました。 いくつかの文字が削減されていますので、ご注意ください。

またバナーファイルについての詳細は IPL バナーに関するガイドライン文書をご参照ください。

### Note 17-09: (DevEnv) ROM スペックファイルにおけるバナーファイルの位置制限と対策

ROM 内に格納されるバナーファイルの先頭が 512 バイトアラインメントされていない場合、 正常な動作が行なわれないことが分かりました。 スペックファイルで `AlignAll` コマンドにより 512 バイト未満の値を設定していた場合、 これによる問題が発生する場合があります。

これを回避するために `Segment All` の動作を `AlignAll` での設定値によらず バナーファイルが 512 バイトアラインメントされるように変更しました。

`AlignAll` コマンドを使用されていない場合は `BannerFile` コマンドの前に `Align 512` などを挿入していただく必要がありますのでご注意ください。

### Note 17-10: (GX)レジスタの定義不具合の修正

以下のハードウェアレジスタマップに関する定義値に誤りがありました。SDK中ではこれらの値は使用されていませんので、 これによりSDKの動作に直接の影響はありません。

> `REG_GX_VRAMCNT_C_MST_SIZE
> REG_GX_VRAMCNT_C_MST_MASK`
> `REG_GX_VRAMCNT_D_MST_SIZE
> REG_GX_VRAMCNT_D_MST_MASK
> REG_GX_VRAMCNT_E_MST_SIZE
> REG_GX_VRAMCNT_E_MST_MASK`

この不具合は修正されました。

### Note 17-11: (MI) `MI_SendGXCommandAsyncFast` の修正

`MI_SendGXCommandAsyncFast()` で起動したDMAのコールバックの中から別の `MI_SendGXCommandAsyncFast()` を起動できるようにしました。

### Note 17-12: (MI) `MI_SendGXCommand()` の修正

`MI_SendGXCommand()` が自動起動 DMA を使用していたため、他の自動起動DMAと衝突する可能性がありました。 そこで `MI_SendGXCommand()` は即時 DMA のループにして自動起動を排除しました。これまでの`MI_SendGXCommand()` は `MI_SendGXCommandFast()` と改名して残してありますが、 自動起動 DMA を含むので使用には十分注意して下さい。

### Note 17-13: (FS) `FS_GetPathName()` 呼び出し時の不具合修正

`FS_GetPathName()` 関数を呼び出した場合に、内部処理のミスで `SDK_ASSERT` により停止する可能性があるという不具合が確認されました

この問題を修正しました。

### Note 17-14: (OS) `OS_Init()` で呼ばれる初期化関数の追加

ARM9側では、`OS_Init()` から `CARD_Init()` を呼ぶようにしました。

### Note 17-15: (CARD) カード抜き検出処理の変更

カード抜き検出処理を修正しました。 またこれまではスリープ中のカード抜きなど正確に動作しない個所がありました。

カード抜き検出方法について、これまでは ARM9で `CARD_IREQ` 割り込みをチェックしていましたが、新しい方式では ARM7 でポーリングするようになりました。通常は `CARD_IREQ` 割り込みの発生を調べていますが、ROM ヘッダ情報を参照してそのカードが `CARD_IREQ` 割り込みを使用する場合には カード ID の読み込みによって行います。 そして抜きを検出したら、ARM7 から ARM9 に通達します。

### Note 17-16: (TP) validity 条件の変更

ペンリリース時の座標飛びの対策として、`INVALID` となる条件が変更され、以前よりも厳しく判定されるようになりました。 `INVALID` フラグが立つケースが多少増える可能性があります。

### SDK 2.0 FC での既知の問題点

- `make` 時に `NITRO_COMPRESS` を指定している場合、`.nef` ファイルと常駐モジュールのバイナリである`.sbin` ファイルのベース名 (ファイル名から拡張子を除いた部分) が異なっている場合にエラーが発生します。
- `mb_child.srl` において親機のユーザ名が 10文字になっている場合、正常に動きません。

### SDK 2.0 FC での追加情報

#### カートリッジを使用する際の追加情報

カートリッジの IREQ 割り込みでスリープから復帰する場合、カートリッジが抜けた時だけでなく、 IREQ割り込みを何かの用途に使用しているカートリッジデバイスからの割り込みで復帰する可能性があります。

従って、スリープ状態からカートリッジが抜けたことで復帰したい場合は、カートリッジスロットにささっているカートリッジがアプリケーション側で想定しているものであることが 確認できている場合のみ行ってください。 そうでなければ、スリープ復帰のトリガに `PM_TRIGGER_CARTRIDGE` を指定しないで下さい。

## ■ NITRO-SDK Version 2.0 PR7

(2004/09/21)

### Note 16-01: (WM) WMライブラリの変更

1) マルチブート親機で 複数親機が同時に存在する場合に特定の親機が他の親機より見つかりにくくなる場合があるという現象がありましたが、 修正しました。
2) 無線ライブラリとサウンドライブラリの競合問題で、 無線ライブラリの通信中にサウンドライブラリを使用して負荷の高い処理を行うと通信に異常を来たすという不具合がありました。 無線ライブラリの処理をサウンドより優先させることで対処しました。
3) WMライブラリにおいて WM_Initialize 関数に渡すバッファへのライトがキャッシュ上でライトバックされずにダーティ状態で残っている場合に WMライブラリの動作に支障を来たすという不具合がありましたが、修正しました。
4) PR6 までには WM_StartMPEx の minPollBmpMode が TRUE の設定で親機が一定の時間、 特定の子機にしか通信しなかった場合に残りの子機がタイムアウトによる切断を起こしてしまう不具合がありました。 特に 8 番以上の port による Sequential 通信を利用していた場合、 一部の子機を強制切断すると、再送によって上記状態が容易に発生します。 この不具合への対処として、minPollBmpMode が TRUE の場合にのみ、 60 フレームに 1 回の間隔で、 MP 通信時に親子共に送信可能バイト数を 0 バイトに設定した Keep Alive フレームを送信するように変更しました。
5) WM_GetMPReceiveBufferSize および WM_MP_SIZE_PARENT_RECEIVE_BUFFER の計算式の誤りで、 必要なサイズより少ない値を返すことがあった不具合を修正しました。
6) リファレンスに「無線通信時間計算シート」を追加しました。 親子の最大送信サイズから、MP通信の所要時間を計算することができます
7) port受信コールバックに対するWM_STATECODE_CONNECTED, DISCONNECTEDの通知において、 aidには常に接続相手のAIDが入るようになりました。自分のAIDはmyAidに代入されます。
8) 無線に関する簡易ドキュメントを docs/TechnicalNotes/WirelessManager.doc に追加しました。ドラフト版の公開となります。

### Note 16-02: (FS)圧縮されたオーバーレイのロード時の不具合修正

NITRO_COMPRESS を指定してビルドしたプログラムでオーバーレイをロードする際に、 BSS 領域全体がクリアされず初期値 0 の変数が正しく初期化されないことがあるという不具合が確認され、この問題を修正しました。

### Note 16-03: (CTRDG) カートリッジ抜き検出APIの作成

ゲーム中にカートリッジを抜いたことを検出してコールバックが呼び出される仕組みを作成しました。 OS_Init() から呼び出される CTRDG_Init() で カートリッジライブラリの初期化を行えば有効になります。 デフォルトでは何もしません。

### Note 16-04: (CARD) カード抜き検出APIの作成

ゲーム中にカードを抜いたことを検出してコールバックが呼び出される仕組みを作成しました。 CARD_Init() でカードライブラリの初期化を行えば有効になり、 デフォルトでは両プロセッサをhalt状態にして停止します。

### Note 16-05: (GX) G3Cでのディスプレイリスト生成時の不具合修正

G3Cでパックされたディスプレイリストを生成する際に、 ジオメトリFIFOのハードウェア不具合への対策処理で不定なデータが書き込まれてしまう場合がありました。 この不具合は修正されました。

### Note 16-06: (OS) RTC 割り込みの処理

これまで IS-NITRO-DEBUGGER との競合問題により ARM7 でのポーリング処理によってエミュレートしていた RTC 割り込みの処理を FinalRom 版ライブラリにおいてのみ変更し、 NITRO ハードウェアの RTC 割り込みを使用するようになりました。
Debug 版、Release 版では従来と同じようにポーリングによって RTC 割り込みをエミュレートしています。

### Note 16-07: (MIC) 自動サンプリング開始関数のI/F変更

MIC_StartAutoSampling、MIC_StartAutoSamplingAsync関数において、パラメータに構造体を直接指定するI/Fでしたが、スタックの無 駄を省くため構造体へのポインタを指定するI/Fに変更しました。

### Note 16-08: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドラインブラリが2004年9月16日版となりました。

### Note 16-09: (DevEnv) バナーファイルのテストビューア生成ツールの収録

バナーファイルのテストビューア生成ツール addbanner を収録しました。 このツールは、バナー情報を NITRO の画面上で表示するための ROM ファイルを生成します。

### Note 16-10: (DEMO) 最終 ROM 作成のデモの追加

最終 ROM 作成を行なうデモを追加しました。 このデモは最終 ROM 内へ収録する必要のあるファイルを組みこむ処理の例を示しています。
このデモで示している情報は SDK リリース時点でのものです。 リリース以降に最終 ROM 提出に関するルールが変更になっている可能性もあるため、 最新の情報については弊社サポート WEB ページなどでご確認ください。

### SDK 2.0 PR7 での既知の問題点

attachsign ツールのリファレンスが揃っていません。

## ■ NITRO-SDK Version 2.0 PR6

(2004/09/13)

### Note 15-01: (OS) 本体情報を取得する関数の追加

ニンテンドー DS 本体内に保存されているオーナー情報などを取得する関数を追加しました。エンドユーザーが本体の IPL プログラムによって編集したオーナー情報を取得することができます。

また、本体の無線ハードウェアの MAC アドレスを取得する関数も追加されています。MAC アドレスはハードウェア毎に異なる値が設定されており、無線機能を使用しないアプリケーションであっても利用することが可能です。

新規に追加された関数は以下の 3 つです。

- `OS_GetOwnerInfo()`
- `OS_GetOwnerRtcOffset()`
- `OS_GetMacAddress()`

### Note 15-02: (OS) ソフトリセットの実装

ソフトリセットを実装し、エントリポイントからプログラムを再実行することが出来るようになりました。リセット時に任意の u32 値を与えて、再実行のモジュールにそれを渡すことも可能です。本関数はハードウェアの初期化を行ないません。このため自動起動 DMA のような処理は本関数を呼び出す前に終了させておく必要があります。

ただし起動時に読み込まれたROMデータのうち、先頭 16KB はリセット時に再ロードしませんので、その部分が破壊されている場合は再実行することができません。その判定はライブラリでは行いませんのでアプリケーション側で破壊しないように注意する必要があります。

マルチブートで子機として起動した場合、`OS_ResetSystem()` による再起動はできません。SDK では安全のために `OS_ResetSystem()` 内部で `OS_Panic()` を呼び出し、停止(メッセージ出力[FINALROM 版以外]後、永久ループ)します。この振る舞いに問題がある場合は、`MB_IsMultiBootChild()` でマルチブート子機かどうかを判定し、場合分けをしてください。

### Note 15-03: (OS) メモリ割り当てシステムを破棄する `OS_ClearAlloc()` の追加

`OS_InitAlloc()` でアリーナ上にメモリ割り当てシステムを構築した後、それを破棄するための関数 `OS_ClearAlloc()` を追加しました。`OS_ClearAlloc()` を呼んだ後は同じアリーナ上に新たにメモリ割り当てシステムを構築することができます。

### Note 15-04: (OS) アラームセット時のエラー表示の変更

アラーム、Vカウントアラームで使用されているアラーム構造体を用いて新たなアラームをセットしようとしたときに、ビルド方法に関係なく `OS_Panic()` で停止するようにしました。これまではDEBUG ビルドのみ停止して、その他の場合は永久ループに入っていました。

### Note 15-05: (MI) DMAレジスタに関する定義の追加

DMAレジスタのビット定義などを `$NitroSDK/include/nitro/mi/dma.h` に追加しました。これまでこれらの定義はライブラリ構築用のツリー内のヘッダファイルで定義されていましたが、アプリケーション側からも使用できるようにとのご要望により収録位置の変更となりました。

### Note 15-06: (WM) 無線コントロールライブラリの修正、機能追加

1. ライブラリ初期化時、及び終了時の処理を細分化し、きめ細かく制御するための関数群を追加しました。追加された関数は以下の通りです。
   初期化時

   > `WM_Init`
   >   ライブラリが必要とするワークバッファを初期化する同期関数。
   > `WM_Enable`
   >   無線ハードウェアを使用許可状態にする。同時にLEDの点滅が開始される。
   > `WM_PowerOn`
   >   無線ハードウェアを起動し、必要な初期化を行う。

   終了時

   > `WM_PowerOff`
   >   無線ハードウェアをシャットダウンする。
   > `WM_Disable`
   >   無線ハードウェアを使用禁止状態にする。同時にLEDの点滅は停止される。
   > `WM_Finish`
   >   ライブラリを終了し、ワークバッファを解放する同期関数。

   バッテリの消耗を抑えるため、実際の無線通信が始まる直前まで無線ハードウェアの起動(`WM_PowerOn`)を行なわないように、また無線通信の必要がないときはなるべく無線ハードウェアをシャットダウン(`WM_PowerOff`)するように心がけてください。

2. 無線ライブラリとサウンドライブラリが使用する DMA が ARM7 において競合することにより、サウンドを動作させながらでは無線で通信できないという不具合がありました。サウンドに若干の制限が残るものの、無線通信できないという問題点は解消されました。これは Note 15-16: (WM/SND) 無線とサウンド同時使用時の不具合対処 においても説明されています。

3. 電波状態が悪い場合に、送信できていないにもかかわらず `WM_SetMPDataToPort()` のコールバックに成功値が返ることがあるというバグを修正しました。これにより、まれにデータシェアリングが停止するという問題が解決しています。

4. pollBitmap (Poll マップ) が自分宛でない場合の処理に問題があり、pollBitmap によって通信相手の子機を切り替えている場合に不具合が生じていました。この不具合は修正されました。

5. 親機として通信を開始する際、一回の MP 通信で送信可能なデータ量の限界を超える値を指定すると WM_INVALID_PARAMETER エラーが返されるように制限を加えました。また、プログラミングガイドラインに記載されている転送データ量の推奨値を超える値を指定すると警告がデバッグ出力される機能を追加しました。

6. 子機側アプリケーションにおいて、従来は `WM_StartMP()` へのコールバックの引数である state 値に `WM_STATECODE_MP_IND` が設定された場合に `errcode` として `WM_ERRCODE_SUCCESS` しか渡されることはありませんでしたが、NITRO-SDK 2.0PR6 からは MP の pollBitmap に自分が含まれていなかった場合に `WM_ERRCODE_INVALID_POLLBITMAP` が渡されるようになりました。
   この状況は MP 通信において子機を 2 台以上接続した場合にはしばしば発生しますので、回復不能なエラーとして扱ってはいけません。

7. 子機側アプリケーションにおいて、従来は `WM_StartMP()` へのコールバックの引数である state 値に `WM_STATECODE_MPACK_IND` が設定された場合に `errcode` として `WM_ERRCODE_SUCCESS`, `WM_ERRCODE_TIMEOUT`, `WM_ERRCODE_FAILED` が渡されていました。これを以下のように変更しました。

   - 対応する MP フレームにおいて pollBitmap に自分が含まれていなかった場合に `WM_ERRCODE_INVALID_POLLBITMAP` が返るように変更されました。これは MP 通信において子機を 2 台以上接続した場合にはしばしば発生しますので、回復不能なエラーとして扱ってはいけません。
   - MPACK の pollBitmap に自分が含まれていた場合 (すなわち親機が自分の返信を受け取れなかった場合) に `WM_ERRCODE_FAILED` を返していました。これは `WM_ERRCODE_SEND_FAILED` に変更されました。

8. `WM_SetMPData()` および `WM_SetMPDataToPort()` のコールバックへ渡される errcode として `WM_ERRCODE_SUCCESS`, `WM_ERRCODE_TIMEOUT`, `WM_ERRCODE_FAILED` が設定されていましたが、`WM_ERRCODE_TIMEOUT` と `WM_ERRCODE_FAILED` は `WM_ERRCODE_SEND_FAILED` に統一されました。
   また、その際の `WMPortSendCallback.destBitmap` には、送信が失敗しリトライを試みなければならない子機の aid の bitmap が収められるようになりました。（送信中に切断された子機は destBitmap には含まれません）

9. 親機側で毎MP通信の終了時に `WM_StartMP()` のコールバックの state 値として `WM_STATECODE_MPEND_IND` が設定されたときにおけるコールバック呼び出しの手順が変更になりました。従来は、

   1. 送信完了コールバック (`WM_SetMPDataToPort()` の callback)
   2. `WM_STATECODE_MPEND_IND` (`WM_StartMP()` の callback)
   3. port 受信コールバック (`WM_SetPortCallback()` で登録した各 callback)
   という順番で callback が呼ばれていましたが、これを
   1. port 受信コールバック (`WM_SetPortCallback()` で登録した各 callback)
   2. 送信完了コールバック (`WM_SetMPDataToPort()` の callback)
   3. `WM_STATECODE_MPEND_IND` (`WM_StartMP()` の callback)
   という順番に変更しました。これは、`WM_SetMPDataToPort()` のコールバックで次の `WM_SetMPDataToPort()` を行なうという標準的な設計でプログラムを書いていた場合に、最新の受信データを反映したデータを直ちに送信することを可能とするためです。

10. `WM_SetMPDataToPortEx()` 関数を新設しました。送信完了コールバックの引数にユーザ定義のデータを追加できます。

11. `WMParentParam` 中の子機の最大送信サイズ (`childMaxSize`) の処理において 2 bytes 分指定値より少ないサイズが設定されていた不具合が修正されました。 `parentMaxSize, childMaxSize` はそれぞれ送信したいユーザデータの最大サイズを指定するパラメータであり、無線ライブラリ内部の制御データのサイズを考慮する必要はありません。

12. NITRO-SDK 2.0PR5 では、キーシェアリングを行う場合に、最大送信バイト数にキーシェアリングが使用分の値を明示的に加えておく必要がありましたが、`WMParentParam.KS_Flag` に TRUE を設定しておくことで自動的にキーシェアリングの使用分だけ最大送信バイト数が拡張されるようになりました。

13. `WM_SIZE_MP_PARENT_SEND_BUFFER, WM_SIZE_MP_PARENT_RECEIVE_BUFFER, WM_SIZE_MP_CHILD_SEND_BUFFER, WM_SIZE_MP_CHILD_RECEIVE_BUFFER` の各関数マクロに `ksFlag` という引数が追加されました。
    キーシェアリングを行う場合のバッファサイズを算出する場合は `ksFlag` に `TRUE` を、さもなくば `FALSE` を指定してください。

14. WM_Reset を呼び出した場合に正しく子機接続情報がリセットされない不具合を修正しました。

15. 動的に MP 通信の頻度を変更する WM_SetMPFrequency を新設しました。

### Note 15-07: (WM) 無線強度のアイコンの収録

無線強度を表現するためのアイコンを以下に収録しました。これらの使用についての規定は、無線通信関連のガイドラインを ご覧ください。

> `$NitroSDK/data/wl_icons`

### Note 15-08: (WBT) ブロック転送ライブラリのテスト公開

無線ライブラリ(WM)の MP 通信を使用して親子間でブロック転送プロトコルを実現するライブラリ WBT をテスト公開しました。

現在、テスト公開のため以下の問題があります。

- WBT デモの DEBUG 版は正常に動作しません。
- WBT ライブラリについては、2.0PR6 公開時点においてリファレンスが収録されておりません。

### Note 15-09: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドラインブラリが2004年9月2日版となりました。

### Note 15-10: (DevEnv) 圧縮された常駐モジュールへの対応

IPL でロードされる常駐モジュールを圧縮するための機構を追加しました。これにより ROM 容量および起動時の初期ロードサイズを節約できるようになりました。

SDK の make システムでは、マクロ変数 NITRO_COMPRESS に何らかの値が設定されている場合この機能が自動的に有効になります。展開時間とのトレードオフをご考慮の上お使いください。

SDK で圧縮が有効になると、以下のような処理が行なわれます。

1. `compstatic` コマンドによって、常駐モジュール実行バイナリの先頭部を除いた領域の圧縮処理を行なう。
2. 得られた圧縮モジュールファイルを通常のモジュールファイルと同様に `makerom` コマンド で ROM 内部に格納する。
3. 圧縮されたモジュールは実行後 `crt0.c` 内部で展開される。

常駐モジュールと同様に Overlay モジュールの圧縮も行なうことが可能です。Overlay モジュールの展開処理については、関連 API 内部に統合されているため、こうした API 経由でアクセスを行なう場合は、特に気にする必要はありません。

この処理の実装のため、以下のツール関連ファイルが NITRO-SDK 2.0PR5 のものから変更されています。独自の rsf ファイルおよび lcf.template ファイルをお使いの場合はこれらのファイルへの修正が必要です。

> `$NitroSDK/include/nitro/specfiles/ROM-TS.rsf
> $NitroSDK/include/nitro/specfiles/ARM9-TS.lcf.template`

この圧縮展開処理はマルチブートの子機へ渡される ROM ファイル内の実行モジュールに対しても適用することができます。

### Note 15-11: (DevEnv) make run による nitload の起動

make コマンドのターゲットに run を指定することで IS-NITRO-DEBUGGER パッケージに収録されているサンプルプログラムの nitload を起動し、srl ファイルのエミュレーションを開始するよう変更しました。

### Note 15-12: (DevEnv) 各ハードウェアバージョンに対応する ferret コンポーネントの提供

IS-NITRO-EMULATOR などの各 TS 版のハードウェアバージョンに対応した ferret (無線機能なしの ARM7 コンポーネント)を収録しました。ただし通常は mongoose (無線機能ありの ARM7 コンポーネント) を使用することで問題はないため、TEG 環境のソースを無変更でコンパイルするなどの場合などを除き、TS 環境でferret を使用する必要はありません。

### Note 15-13: (OS) OS_CheckHeap() の修正

OS_CheckHeap() 内でヒープのチェックを行ってチェックにひっかかった時に、割り込み禁止状態で関数を抜けていましたが、これを修正しました。

### Note 15-14: (MI) ntrcomp.exe のランレングス圧縮時の不具合修正

tools/bin/ntrcompでランレングス圧縮ルーチンに不具合があり、ファイルの終端で非圧縮データブロックサイズが129〜130バイトある場合に終端129〜130バイトが正常に展開できない事がありました。

この不具合は更新されました。

### Note 15-15: (MI) DMA 処理の修正

自動起動 DMA が複数立ち上がらないようにチェックする処理で起動しているものと起動していないものを逆に取り違えていました。これを修正しチェックを正しく行うようにしました。

### Note 15-16: (WM/SND) 無線とサウンド同時使用時の不具合対処

NITRO-SDK 2.0PR5 において、無線とサウンドを同時に使用したときに無線が正常に動作しなくなる不具合がありました。これは修正されました。

ただし DMA ハードウェアの仕様からサンプリングレート 44kHz の波形データを 3 オクターブ高い音程で鳴らすといったようなデータ転送負荷が非常に大きな再生を行なうと音が途切れる可能性があります。ご注意ください。

### Note 15-17: (MB) MB_GetSegmentLength 関数の返り値に関する不具合の修正

`MB_GetSegmentLength()`関数の返り値が、実際に必要とされるサイズより小さな値になるという問題が確認されました。 　この不具合は修正されました。

### Note 15-18: (MB) Multiboot サンプルの Debug 版における動作不具合の修正

NITRO-SDK 2.0PR5 の MB デモ Multiboot サンプルの Debug 版において、起動時に GX のエラーで停止してしまうという不具合がありました。また、同じく Debug 版において、ダウンロード処理中の割り込みハンドラ内でスタック不足により異常動作してしまうという不具合がありました。 　これらの不具合は修正されました。

### Note 15-19: (CARD) バックアップアクセス関数の初回呼び出し時の問題の修正

CARD のバックアップアクセス関数を呼び出した時に、初回のみ関数が失敗することがあるという問題が確認されました。 　この不具合は修正されました。

### Note 15-20: (PRC) CharacterRecognition-1 デモのスタック溢れの修正

NITRO-SDK 2.0PR5 の CharacterRecognition-1 デモが、スタック溢れにより正常に動作していませんでした。 　これを修正しました。

### Note 15-21: (OS) OS_TPrintf(簡易版 printf) の追加

OS_VSNPrintf を使用することで、スタックの消費サイズを節約したコンソール出力関数の OS_TPrintf などを追加しました。この OS_TPrintf では使用できるフォーマット書式から浮動小数値などを除外することによって、コード使用量およびスタック使用量を節約しています。

使用できるフォーマット書式は OS_VSNPrintf に依存しています。詳しくは OS_VSNPrintf のマニュアルをご覧ください。

### SDK 2.0 PR6 での既知の問題点

compstatic, attachsign ツールのリファレンスが揃っていません。

## ■ NITRO-SDK Version 2.0 PR5

(2004/08/30)

### Note 14-01: (WM) [重要] 無線コントロールライブラリの修正、機能追加

#### 1) 親機がブロードキャストするデータ構造の変更

システム予約領域からユーザー名、ゲーム名情報が削除され、デベロッパー領域が64バイトから最大112バイトに拡張されました。ユーザー名、ゲーム名については必要に応じてデベロッパー領域に格納して頂く仕様となりました。

#### 2) 子機が親機に接続する際に24バイトの子機情報を親機に通知する機能の追加

24 バイトの子機情報の内容についてはデベロッパーに解放されていますので、アプリケーション独自の子機情報を親機に通知することができます。 これにともない、WM_StartConnect 関数、及び WMStartParentCallback 構造体についてインターフェースの変更が行われました。

#### 3) MP 通信をより詳細に制御する機能の追加

SDK-PR4 までは 1フレーム(1ピクチャーフレームの意)に 1 回のMP通信を行うか、フレームを無視した連続転送を行うか、の 2 つのモードのみが選択できる状態でしたが、1 フレームに複数回の MP 通信を行う機能が追加されました。

これにともない、WM_StartMP 関数 にインターフェースの変更が行われました。また、より詳細な設定を行う WM_StartMPEx 関数 が新設されました。

#### 4) 通信中に親機がブロードキャストするデータを変更する機能の拡張

通信中にエントリー受付、マルチブート受付などの親機属性を変更する機能が追加されました。

これにともない、WM_SetGameInfo 関数 にインターフェースの変更が行われました。

#### 5) 以下の単機能APIの追加

> WM_DisconnectChildren
>   親機が接続済みの複数の子機をまとめて切断します。
> WM_GetMPSendBufferSize
>   MP通信において必要な送信バッファのサイズを計算します。
> WM_GetMPReceiveBufferSize
>   MP通信において必要な受信バッファのサイズを計算します。
> WM_GetAllowedChannel
>   通信時に使用を許可されたチャンネルを取得します。
> WM_SetEntry
>   親機が子機の接続を受け付けるか拒否するかを切り替えます。
> WM_GetLinkLevel
>   通信相手とのリンク強度を取得します。
> WM_ConvGgid*
>   ゲームグループIDを変換します。

#### 6) サンプルデモの修正

WMライブラリの仕様変更に伴い、それぞれのサンプルデモに修正が行われました。SDK-PR4では動作を保証していませんでしたサンプル"ball"についても正常に動作するよう修正されました。

#### 7) WM_Disconnect関数の不具合の修正

WM_Disconnect関数に子機から呼び出した場合に正しく親機から切断できないという不具合がありました。

この不具合は修正されました。

### Note 14-02: (MI) [重要] 自動起動するDMAに関するハードウェア制限への対処

DMA のうち、自動起動する DMA (即時処理するDMA以外で、Vブランク起動 DMA、Hブランク起動 DMA、表示同期 DMA、ワーク RAM 表示 DMA、メモリカードデータ DMA、カートリッジ DMA、ジオメトリコマンド FIFO DMA があります) に関するハードウェアの制限に対処または警告するための処理を追加しました。

上記の自動起動 DMA は同時に複数のものを起動することを出来ませんので起動時にチェックして、複数起動しようとすると OS_Panic() で停止します。ただし、H ブランク起動 DMA と V ブランク起動 DMA の併用は許可されています。

また、ジオメトリコマンドFIFO DMA については以下の修正を行っています。

1. 同期版である MI_SendGXCommand() は ITCMに移されました。
2. 非同期版 MI_SendGXCommandAsync() を他の自動起動 DMA と併用可能にするために、ジオメトリコマンドの自動起動 DMA を使用しないように修正しました。即時 DMA を割り込みによりソフトウェアで制御することで非同期転送を実現しています。
3. 自動起動 DMA を使用する SDK2.0PR4 以前の非同期版 MI_SendGXCommandAsync() は MI_SendGXCommandAsyncFast() と名称変更し収録されています。

### Note 14-03: (DevEnv) [重要] ハードウェアのバージョンに対応したコンポーネント・ライブラリの収録

TS ハードウェアの各バージョンに対応した mongoose コンポーネントおよび libspi.a ライブラリを収録しました。SDK の make システムにおいて、これらのコンポーネント・ライブラリを切り替えるためには 環境変数 NITRO_TS_VERSION に TS ボードのバージョン番号を設定します。NITRO_TS_VERSION が設定されていない場合は NITRO_TS_VERSION=100(IS-NITRO-EMULATOR ハードウェア Ver.D) が選択されます。

IS-NITRO-EMULATOR ハードウェアの Ver.E に対応するアプリケーションを作成する場合には NITRO_TS_VERSION=200 と設定する必要があります。

対応するコンポネントおよびライブラリは以下にあります。

TS のバージョン番号 | 対応する mongoose/libspi.a のファイル名 (ARM, Release 版の例)
--- | ---
0 | $NitroSDK/component/mongoose/ARM7-TS/Release/mongoose_sub_TS0.* $NitroSDK/lib/ARM9-TS/Release/libspi_TS0.a
100 | $NitroSDK/component/mongoose/ARM7-TS/Release/mongoose_sub_TS100.* $NitroSDK/lib/ARM9-TS/Release/libspi_TS100.a
200 | $NitroSDK/component/mongoose/ARM7-TS/Release/mongoose_sub_TS200.* $NitroSDK/lib/ARM9-TS/Release/libspi_TS200.a

### Note 14-04: (DevEnv) mongoose の TEG 環境でのサポート停止

コードサイズの増加により、無線機能対応コンポーネント mongoose の TEG 環境対応版の作成が困難になりつつあるため、このサポートを停止いたします。

### Note 14-05: (DevEnv) makerom の Reject 指定の初期値に `"."`(ドット) で始まるファイルを追加

makerom を修正し、`"."`(ドット)で開始するファイル名およびディレクトリ名 (ワイルドカード表現で `".?*"`) を Reject の初期設定値に追加しました。これによりバージョン管理システム Subversion の制御ディレクトリである `".svn"` ディレクトリ内のファイルが ROM ファイルに含まれることが抑止されます。

以前の makerom のように `"."` で開始するファイルを ROM ファイルシステム内に追加したい場合は、以下のように rsf ファイルの RomSpec セクションの先頭で Reject を再設定する必要があります。

> `Reject CVS vssver.scc`

既に `"."` で開始するファイル名などを使用されている方は特にご注意ください。

### Note 14-06: (DevEnv) SDK をビルドする CodeWarrior のバージョンを 0.6.1 に変更

本パッケージ内に収録されている SDK バイナリをビルドする CodeWarrior のバージョンを 0.6.1 に変更しました。

### Note 14-07: (DevEnv) .itcm/.dtcm セクションのコードが ITCM/DTCM へ配置されない問題の修正

ARM9-TS.lcf.template ファイルにおける .itcm/.dtcm セクションの配置方法が makelcf における想定外のものだったため .itcm/.dtcm セクションに定義されているコードが ITCM/DTCM の autoload セクション内に配置されない場合がありました。

makelcf を修正し、セクションを限定していない Object/Library 記述があったときに、その記述によって配置されるセクションをコンパイラが利用する基本セクション(.text,.rodata,.data,.sdata,...等) に限定するように修正し、.itcm/.dtcm などの NITRO-SDK で新たに定義したセクションを含めないようにしました。

### Note 14-08: (GX) モザイクサイズ設定での不具合の修正

モザイクサイズを設定する際に、G2*_SetBGMosaicSize()でOBJのモザイクをクリア、G2*_SetOBJMosaicSize()でBGのモザイクをクリアしてしまう不具合がありました。

この不具合は修正されました。

### Note 14-09: (GX) gx.h の GX_InitEx() などの定義における不具合の修正

$NitroSDK/include/nitro/gx.h 内で GX_InitEx(), GX_GetDefaultDMA() が inline 宣言されていない不具合がありました。

この不具合は修正されました。

### Note 14-10: (CARD) FLASH デバイスのサポート

CARDモジュールが、EEPROM デバイスに加えて FLASH デバイスへも対応しました。サブ基板とフラッシュカードにより、実機上およびデバッガ上で使用可能です。

### Note 14-11: (CARD) 割り込み禁止状態での CARD_Init() 呼び出し時の問題の修正

割り込みが禁止されている状態でCARD_Init()を呼び出した場合に 関数から制御が戻らないという不具合がありました。

この不具合は修正されました。

### Note 14-12: (CARD) CARD_IdentifyBackup() 呼び出し時の問題の修正

CARD_IdentifyBackup()を呼び出してその処理が完了した時に、最後に実行したCARD非同期関数で指定されたコールバック関数が再度呼び出されてしまうという不具合がありました。

この不具合は修正されました。

### Note 14-13: (MI) メインメモリ表示起動 DMA などにおけるメインメモリへのアクセス優先権

メインメモリ表示起動 DMA および H ブランク DMA モードにおいて DMA 転送を行なう場合、メインメモリへのアクセス権を「ARM9 優先」にする必要があります。これは、ARM7 側からのメインメモリへのアクセスにより DMA の自動起動タイミングの遅延が発生し、画面が崩れる可能性があるためです。アクセス権の優先の指定は MI_SetMainMemoryPriority で行ないます。

これらの DMA を使用している gx/UnitTours/2D_BmpBg_MainRam および gx/UnitTours/Window_HDMA でアクセス権の切り替え処理を行なうように修正しました。また関連リファレンスマニュアルに上記情報を追記しました。

### Note 14-14: (OS) Tick 値取得関数の修正

コンパイルの最適化レベルが一定以上の際にTick値を取得しようとすると Tick 値で使用しているタイマ割り込みがあるタイミングで掛かった場合に正確な値が取得出来ませんでした。

この不具合は修正されました。

### Note 14-15: (OS) VBlank 割り込み時における割り込みチェックフラグの自動設定処理を停止

NITRO-SDK 2.0PR4 において VBlank 割り込み時に割り込みチェックフラグ (IrqCheckFlag) を自動的に ON にするように修正した部分を ARM9 側ライブラリでは取りやめ、従来どおりに戻しました。

OS 内部で IrqCheckFlag をオンにするという操作について、IrqCheckFlag は複数回オンにしても問題ないため、アプリケーション側の VBlank コールバック毎に IrqCheckFlag のオン処理を行なっておられる場合には問題はありません。しかし、秒間 30 フレームのタイミングで状態の更新を行なうために VBlank 処理内で 2 フレームに一度だけ IrqCheckFlag をオンにするという操作を行なうアプリケーションにおいて誤動作の原因となっていました。

この修正は 2.0PR4 の IrqCheckFlag パッチと同等のものです。

### Note 14-16: (OS) TS 環境における DTCM の位置変更

Note:10-02 で変更アナウンスがあった通り、DTCMのアドレスが変更になっていますが一部変更していない個所がありました。

それを修正しました。今回の変更で DTCMはどのような環境であってもデフォルトで 0x27c0000 からとなります。

### Note 14-17: (OS) OS_Init() 内部からの PM_Init() の呼び出し

ARM9側の OS_Init() 内で PM_Init() を呼ぶようにしました。

### Note 14-18: (OS) OS_GetConsoleType() による正確な動作環境判定

IS-NITRO-DEBUGGER を使用している際に、カートリッジスロットの電源をオンにしていると OS_GetConsoleType() で得られる動作環境として、IS-NITRO-EMULATOR である、と誤った結果を返していました。

正確に IS-NITRO-DEBUGGERであることを判定できるように修正しました。

### Note 14-19: (TP) タッチパネル接触判定時の誤認識

タッチパネルの接触判定において、接触状態から離した状態になる際に離れかけた中途半端な状態で測定した座標値が正常な計測値となる場合があるというハードウェアの問題が発見されました。

この問題に対して座標値計測後一定時間待ってから再度接触判定を行うというソフト対策を施しました。

### Note 14-20: (PM) スリープからの復帰要因に RTC アラームをサポート

スリープ状態からの復帰要因に RTC アラームが使えるようになりました。

### Note 14-21: (RTC) RTC の 24 時制固定による運用

これまで時間表記フォーマットは 12/24 時制を選択できる機能を提供していましたが、ブートメニューにおいて 24 時制を採用していることによるトラブルを避けるために 24 時制に固定する仕様へと変更されました。

時間表記を選択するAPIは使用できなくなり、午前・午後を示す情報はAPIから削除され、仕様変更にともないサンプルデモ rtc-1 も24時制表記固定の形へ変更されました。

### Note 14-22: (DEMO) アプリケーション起動時に A ボタンが押されている場合の対処

NITRO のブートメニューにおける操作の都合上、ゲームアプリケーション起動時に A ボタンが押されたままになっている可能性が高くなっています。A ボタンを押すことで何らかのアクションが起こるアプリケーションではこの点に注意する必要があります。

いくつかのデモのボタントリガ (そのフレームにおいて新たに押下されたボタン) の判定においてボタン状態の初期値に 0 (=何も押されていない) を使用していたのを修正し、初期値を現在の押下状態から設定するようにしました。

### Note 14-23: (Doc) ntrcomp などの補助ツールのリファレンスマニュアルの追加

ntrcomp ツールおよび ppmconv* ツール群(ppmconv/ppmconv8/ppmconvbg) のリファレンスマニュアルを追加しました。

### SDK 2.0 PR5 での既知の問題点

以下のサンプルが正常に動作しないことが確認されています。

- characterRecognition-1
- multiboot(Debug版のみ)

## ■ NITRO-SDK Version 2.0 PR4

(2004/08/11)

### Note 13-01: (WM) 無線コントロールライブラリの修正、機能追加

1) ポート制御機能が追加されました。この機能により、MPプロトコル上で複数の上位プロトコルのデータ通信を 並列に行うことが可能となります。

2) データシェアリング機能が追加されました。複数の NITRO の間でデータシェアリングを行うサンプルを以下に用意しました。

> `$NitroSDK/build/demos/wm/dataShare-1`

また、キーシェアリング機能は、このデータシェアリング機能を内部的に利用することで実現するように実装方式が変更されました。これまでデモとして提供していました "ball" サンプルの動作は未検証であり、正常に動作しない可能性があります。

3) 内部制御用構造体の構造が大きく更新されました。これに伴い、WM ライブラリが必要とするバッファのサイズが拡張されました。

4) マルチポール通信中はMPパケットの転送完了のつどコールバックが発生するように変更されました。

5) 以下の単機能APIが追加されました。

> `WM_SetLifeTime()`
> `WM_MeasureChannel()`
> `WM_InitWirelessCounter()`
> `WM_GetWirelessCounter()`

なお、プロック転送機能や、より機能拡張した上位レベルライブラリについては現在作成中です。

### Note 13-02: (MB) マルチブートライブラリの追加

NITRO-SDK にマルチブートライブラリ(MB ライブラリ)が追加されました。これはカードの挿入されていない NITRO へゲームプログラムを送信するいわゆるマルチブート機能を提供するAPIです。このライブラリは内部でワイヤレスマネージャライブラリ(WM ライブラリ)を使用します。

マルチブートを実行するためのプログラム mb_child.srl (2.0PR5 において mb_child.bin より改称) を下記のディレクトリに収録しました。これはカードの挿入されていない製品版の子機と同じ動作をするプログラムです。IPL でマルチブート機能がサポートされるまでは、これを使って動作テストをしてください。

> `$NitroSDK/bin/ARM9-TS/Release/mb_child.srl`

同時に追加されたマルチブート機能のデモサンプルは、下記のディレクトリに収録されています。

> `$NitroSDK/build/demos/mb/multiboot`

### Note 13-03: (PM) PMライブラリの追加

NITRO-SDK に PM ライブラリが追加されました。

これはパワー制御 IC をコントロールするための API で、このライブラリを利用することで LCD や バックライト電源を制御したり、バッテリー残量を調べたりすることなどが出来るようになります。

### Note 13-04: (MIC/TP) マイクのサンプリングとタッチパネルとの並行動作

マイクの自動サンプリング時に、タッチパネルの単発サンプリングを受け付けられるように修正しました。マイクの自動サンプリング時にタッチパネルのリクエストを受けると、次のマイクのサンプリングが終わるタイミングでタッチパネルのデータ読み取り処理が行なわれます。

もし次のマイクのサンプリング時刻までにタッチパネルのサンプリングが終了していなかった場合は、マイクのデータ落ちが発生したとみなして、直前のマイクのサンプリング値と同じ値でデータ落ち部分を補間します。

この機能に関するデモを下記のディレクトリに収録しました。

> `$NitroSDK/build/demos/spi/spiMonkey2`

### Note 13-05: (MIC) IS-NITRO-DEBUGGER でのマイクサポートおよび前処理の追加

量産品の電源制御関連IC(PMIC) が実装されたハードウェアにおいて、マイクの出力値を正しく取得する為に PMIC 内のアンプを動作させるための前準備が必要となりました。このためにPMIC のアンプのゲイン値などのパラメータを操作する処理を mic-1, mic-2, spiMonkey デモに追加しました。

またこの前準備において PMIC のバージョンの違いを吸収するためにマクロ値 SDK_TS_VERSION を導入しました。またこの値を動的に切り替えるための環境変数 NITRO_TS_VERSION を用意しました。ビルド時に定義された NITRO_TS_VERSION の値が SDK_TS_VERSION に渡されます。

SDK_TS_VERSION および NITRO_TS_VERSION は以下のような値をとります。

SDK_TS_VERSION | 機器の説明
--- | ---
0 | TS ブレッドボードから IS-NITRO-EMULATORハードウェア Ver.C
100 | IS-NITRO-EMULATORハードウェア Ver.D (PR4 でのデフォルト)
200 | 次のバージョンの PMIC が搭載された機器

IS-NITRO-EMULATORハードウェア Ver.D の PMIC では、LCD のバックライトが点灯しているとマイクデバイスに大きなノイズが載ってしまいます。このハードウェアの問題は修正される予定ですが、それまでは mic-1 デモマイクを使用するときは LCD を OFF にしてご利用ください。

### Note 13-06: (MIC) mic2wav ツールの修正

mic2wav が出力ファイルをテキストファイルとしてオープンしておりデータを正しく変換できていませんでした。これを修正しました。

### Note 13-07: (GX) LCDパワー制御関数の変更

LCDのパワー制御用関数が PM_SetLCDPower へ変更されました。これに伴い、以下の関数・列挙型の定義を削除しました。

- 関数
  GX_PowerLCD(), GX_PowerLCDTop(), GX_PowerLCDBot()
- 列挙型 GXPower の定義値
  GX_POWER_LCD, GX_POWER_LCDTOP, GX_POWER_LCDBOT

### Note 13-08: (GX) G3*_MultTransMtx33の追加

ジオメトリエンジンの実行時間短縮のため、G3*_MultMtx33 と G3*_Translate を一つの行列にパックして乗算する関数 G3*_MultTransMtx33 を追加しました。

### Note 13-09: (GX) GXの使用するDMA番号を設定する関数の追加

GXが使用するDMA番号を設定・取得するための関数として、GX_InitEx(), GX_SetDefaultDMA(), GX_GetDefaultDMA()を追加しました。DMA番号にGX_DMA_NOT_USEを指定することで、DMAを使用しないように設定することもできます。

### Note 13-10: (GX) GX_PowerGeometry()／GX_Power3D()の不具合修正

GX_PowerGeometry(), GX_Power3D()において、ジオメトリエンジンの電源がOFFにならない不具合がありました。この不具合は修正されました。

### Note 13-11: (GX) GX_SetGraphicsMode() のレジスタへの書き込み制限変更

表示モードに限らず常にBGモード、BG0 2D/3D選択フラグをレジスタへ反映するように変更しました。この値はグラフィックス表示モード以外の場合にも、表示キャプチャを使用する際に参照されます。

### Note 13-12: (CARD) NITRO-CARDアクセスAPIの正式公開

NITRO-CARD上のデバイスにアクセスするための関数群を公開しました。サブ基板とフラッシュカードにより、実機上で使用可能です。

### Note 13-13: (FS) FS_ReadDir関数で得られるファイルIDがずれる不具合の修正

FS_ReadDir関数でディレクトリエントリを列挙する際に、ファイルエントリ同士の間にディレクトリエントリが存在すると得られるファイルIDが実際のものとずれるという不具合がありました。この不具合を修正しました。

### Note 13-14: (DevEnv) makelcf/makerom の変数展開時における不具合と変数定義ファイルサポート

makelcf/makerom において、-D オプションで指定できる変数に1000文字を超えるような長い文字列を設定し、テンプレートファイル内でこれを展開すると、エラーを出力して停止する場合がありました。これを修正しました。

またコマンドラインを使った変数の受け渡し処理は、各コマンドライン処理系で設定されたコマンドラインの最大長の制限を受けることになります。これを防ぐために変数定義を外部ファイル経由で指定できるようにしました。これにより [変数名=値] の記述からなるファイルを -M オプションにより makelcf/makerom に与えることで コマンドラインのコマンド長の制限を気にせずに変数の定義を行なうことが出来ます。

### Note 13-15: (DevEnv) autoload モジュールの情報をオーバーレイネームファイルへ出力

autoload されたコードをデバッガで追跡するための追加情報をオーバーレイネームファイルに出力するように修正しました。具体的には $NitroSDK/include/nitro/specfiles 以下の *.lcf.template ファイルのオーバーレイネームファイルの定義部分に変更が加えられています。

この追加情報を利用することで autoload モジュールのデバッグが可能となります。各デバッガシステムのこの機能の対応予定については各デバッガのリリースノートやサポートサイトなどでご確認ください。

### Note 13-16: (DevEnv) mingw 環境での C++ ライブラリのリネームに失敗していた点の修正

mingw 環境において C++ ライブラリを CXX にリネームする処理が失敗するという問題がありました。これを修正しました。

### Note 13-17: (OS) Vブランクカウンタの設置

V ブランクカウンタを設置し、値を取得する関数 OS_GetVBlankCount() を用意しました。

### Note 13-18: (PAD) PAD_SetIrq(), PAD_ClearIrq() の廃止

ハードウェアの制限によってキー割り込みが使用できなくなりましたので PAD_SetIrq() と PAD_ClearIrq() を廃止しました。 ただしスリープモードからの復帰においてはキー割り込みを使用しても構いません。その場合は PM_GoSleepMode() で条件を指定します。

### Note 13-19: (MI) 同期DMA後の DMAビジーウェイトの追加

同期DMAで、DMA の後に DMA ビジーの間待つという処理を入れました。

TCM 上にこれらの同期 DMA API が置かれている場合、DMA を起動しても ARM9 はその終了を待たずに API から返っていました。これを修正し転送位置に関係なく同期DMAでは確実に終了を待つという仕様に修正しました。DMA の明示的な終了待ち処理を行なう必要がない場合は、非同期 DMA API をお使いください。

変更された命令は以下のものです。

- MI_DmaCopy16/32
- MI_DmaFill16/32
- MI_DmaSend16/32
- MI_DmaClear16/32
- MI_VBlankDmaCopy16/32

### Note 13-20: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドライブラリを 2004年8月10日版にしました。

### Note 13-21: (Demo) GX デモ 3D_BoxTest の修正

GXデモ3D_BoxTestで、PolygonAttrのFARクリップフラグ、及び1ドットポリゴン表示フラグに1をセットせずにBoxTestを実行していたため、ハードの仕様上、正常な結果が得られない場合がありました。BoxTestの直前にこれらのフラグをセットするように修正しました。

### Note 13-22: (Demo) GX デモ LinesOver の修正

デモ LinesOver で、ジオメトリエンジンがまだビジー中に G3X_GetPolygonListRamCount(), G3X_GetVtxListRamCount() がコールされ、描画途中の値を取得していましたので直前にジオメトリエンジンの処理終了待ち処理を追加しました。

また、レンダリングが終わる前に G3X_GetRenderedLineCount(), G3X_IsLineBufferOverflow()がコールされていましたので、VBlank の後に移動しました。

### Note 13-23: (Demo) SPI デモ spiMonkey の出力画面の修正

SPI デモ spiMonkey の出力画面をタッチパネル側画面になるように修正しました。

### Note 13-24: (DevEnv) char 型の符号設定の変更

従来 NITROSDK_LANG の値で signed/unsigned を切り替えていた char 型ですが(jp の時 unsigned)、これを signed に統一しました。この変更は NITRO-SDK 2.0PR1 から導入されています。

### SDK 2.0 PR4 での既知の問題点

- PM_GoSleepMode() のスリープモードからの復帰要因として RTC アラーム、カートリッジ、カードの割り込みにはまだ対応していません。
- 無線コントロールライブラリについては、より機能拡張した上位レベルライブラリを作成中です。
- マルチブート動作において複数のダウンロード対象がある場合の動作に不具合があります。これは現在調査中です。
- マイクのサンプリングと無線通信の同時使用については充分な検証が行なわれていません。
- IS-NITRO-DEBUGGER で「カートリッジスロットの電源を ON にする」を有効にすると OS_GetConsoleType() が誤まった結果(IS-CGB-EMULATOR)を返します。

## ■ NITRO-SDK Version 2.0 PR3plus

(2004/07/29)

### Note 12-01: (DOC) WM ライブラリリファレンスマニュアルの加筆、修正

リファレンスマニュアルにおいて WM ライブラリに関する部分を加筆、修正しました。

### SDK 2.0 PR3plus での既知の問題点

SDK 2.0 PR3plus のライブラリ本体およびライブラリヘッダファイルは SDK 2.0 PR3 から変更ありません。

- WM ライブラリの幾つかの変数型が SDK 標準の命名規則に則っていません。(例：WMindCallback) これは SDK 2.0 PR2 から継続している問題点で、将来、互換性を保ちながら修正される予定となっています。
- IS-NITRO-EMULATORハードウェア（Ver.D以降を含む）上ではマイクAPIが正常に動作しません。 現在原因を調査中です。

## ■ NITRO-SDK Version 2.0 PR3

(2004/07/27)

### Note 11-01: (OS) システム共有領域の定義ミスの修正

メモリマップの定義において、システム共有領域の定義マクロとシステム領域構造体の定義が一致していませんでした。これは NITRO-SDK 2.0PR2 における修正によって混入した不具合です。

この不具合を修正しました。

### Note 11-02: (DevEnv) 構造体のパディング警告設定の修正

NITRO-SDK のライブラリヘッダファイル内で、構造体のパディング警告のスイッチを OFF に切り替えた後、元に戻していませんでした。このため、これまではパディング警告スイッチが OFF になったままになっていました。これは意図したものではありません。

これを修正しました。これによって NITRO-SDK を使用しておられる、プログラムのコンパイル時に今まで発生していなかったパディング警告が出現する可能性があります。これを抑制するためには、以下のような方法があります。

#### (1) コンパイルオプションによる抑制

コンパイル時にパディング警告の抑制に関するコンパイラオプションを追加するという方法です。

IDE をお使いの方はパネルから設定できます。make システムをお使いの方は以下の make 変数 CCFLAGS_WARNING に警告関連オプションを設定してください。以下はパディング警告を抑制し、その他の警告を表示するための指定をコマンドラインから与える場合の例です。無論 CCFLAGS_WARNING の設定を Makefile 内に記述することでも同様の効果があります。

> make CCFLAGS_WARNING='-w all,nopadding'

#### (2) pragma によるソース内での指定

警告箇所の前後に pragma 指定を行なうことでパディング警告を抑制するという方法です。具体的には以下のようになります。

>     // パディング警告の抑制
>     #pragma  warn_padding off
>     struct padded
>     {
>         u16     leng;
>         // ここに 2 bytes のパディングが挿入される
>         s32     data[4];
>     };
>     // パディング警告状態の復帰
>     #pragma  warn_padding reset

ソースファイル全域に対して、パディングの警告を抑制したい場合は、#pragma warn_padding off をソースの先頭に記述することになります。

### SDK 2.0 PR3 での既知の問題点

今回のリリースは緊急リリースのため、SDK 2.0 PR2 と同様の問題が残っています。

## ■ NITRO-SDK Version 2.0 PR2

(2004/07/26)

### Note 10-01: (WM)無線コントロールライブラリの追加

無線デバイスをドライブするための下位レベルライブラリとして、WM (Wireless Manager)を公開しました。

> $NitroSDK/build/demos/wm

以下に単機能サンプルを用意しました。 現状ではターゲットがTSの場合のみ動作します。 ターゲットがTEGの場合、及びensataでの動作は保証しません。

なお、ワイヤレスマルチブートやブロック転送等、今回未サポートの通信機能や、より機能拡張した上位レベルライブラリについては現在作成中です。

### Note 10-02: (DevEnv) メモリマップの変更(DTCMのアドレス変更) (TSのみ)

(この項はTS環境にのみ該当します。TEG環境の場合はメモリマップの変更はありません。)
メモリマップの見直しを行い、デフォルトでARM9に割り当てるMainRAM領域の大きさを増やしました。

具体的には、これまで0x2380000からの領域に配置していたDTCMを、0x27C0000 からとしました。あわせて、ARM9に割り当てられる MainRAM領域は 0x2000000〜0x237FFFF から 0x2000000〜0x23BFFFF となります。(256KByte 増加したことになります。) また、ARM7に割り当てられるMainRAM 領域は 0x37C0000〜0x37FEFFF となります。

### Note 10-03: (DevEnv) DTCMの違いを吸収するパラメータの追加

No. 10-02 で TS 環境のみ、DTCMの配置アドレスが変更になっていることが書かれていますが、TEG と TS における DTCM の配置アドレスの違いを lsf ファイルに通知するために、makelcf の起動時パラメータ ADDRESS_DTCM を追加しました。これは、NITRO_PLATFORM が TEG である場合には 0x02380000 が、TS である場合には 0x027c0000 (8MB メインメモリ対応のため +0x400000 されています) が設定されます。TEG と TS で lsf ファイルを共用したい場合にはこの変数を利用してください。

(例)

> Autoload DTCM
> {
> Address $(ADDRESS_DTCM)
> Object * (.dtcm)
> }

### Note 10-04: (DevEnv) C++ 例外テーブルのリンクでエラー発生していたことの対処

C++ の例外を使用したコードを作成したときに例外テーブルのラベルが定義されていなかったことによるリンクエラーが発生していました。これを修正しました。

### Note 10-05: (SVC) SVCライブラリ更新とリファレンスの追加

システムコール SVCライブラリが更新され、以下の関数が追加されました。また、追加されたものについてリファレンスマニュアルを更新しました。
今回追加された関数
`SVC_Div()
SVC_DivRem()
SVC_GetCrc16()
SVC_Halt()
SVC_IsMmemExpanded()
SVC_Sleep()
SVC_Sqrt()
SVC_UncompressHuffman.html()
SVC_UncompressLZ.html()
SVC_UncompressRL.html()
SVC_UnpackBits.html()`

### Note 10-06: (OS) ロック関数の整備(1) ロックIDの型統一

OSのロック関連の関数で用いるロックID(u16)が、関数の引数でu16 としてだけでなく、u32として宣言されている個所があったのでu16に統一しました。但しロックIDまたはエラーを返すという関数の返り値がs32であるのはこれまでの通りです。
引数のlockID の型がu32 から u16 に変わったもの
`OS_LockByWord(), OS_LockCartridge(), OS_LockCard()
OS_UnlockByWord(), OS_UnlockCartridge(), OS_UnlockCard()
OS_TryLockByWord(), OS_TryLockCartridge(), OS_TryeUnLockCard()`
返り値が s32 から u16 に変わったもの
`OS_ReadOwnerOfLockWord()`
返り値が s32 であることの注意をマニュアルに入れたもの
`OS_GetLockID()`

### Note 10-07: (OS) ロック関数の整備(2) アンロック関数の名称変更

OS のロック関連の関数のうち、以下のアンロック関数について、関数名の 'UnLock' 部分を 'Unlock' と変更しました。
`OS_UnLockByWord(), OS_UnLockCartridge(), OS_UnLockCard()`

### Note 10-08: (MI) MI_GetCartridgeRomCycle* 関数の名称の変更 (再掲)

(この変更は Note 9-23 にある通り、2.0PR1に入る予定でしたが、手違いにより今回の変更となりました)
MI_GetCartridgeRomCycle* 関数の名称を整理して1stと2ndで統一しました。あわせて、列挙型名 MICartridgeRomCycle1, MICartridgeRomCycle2 を MICartridgeRomCycle1st,MICartridgeRomCycle2nd に変更しました。

### SDK 2.0 PR2 での既知の問題点

(次回以降のリリースで修正される予定です)

- CARDライブラリについては、TS環境のみ使用可能です。現バージョンではTEG、ensata、実機での動作は保証されません。
- 無線コントロールライブラリについては、より機能拡張した上位レベルライブラリを作成中です。

## ■ NITRO-SDK Version 2.0 PR1

(2004/07/20)

### Note 9-01: (DevEnv) TS 版のライブラリサポートとデフォルトターゲット変更

(注意：このNote Note. 9-01 内の赤字部分については 2004/07/26 に追記されたものです。)

IS-NITRO-DEBUGGER 及び NintendoDS ソフトウェア開発用ボード NITRO-TS に対応し、デフォルトのターゲットを TEG から TS へ変更しました。(以降、特に断りがない限り、IS-NITRO-DEBUGGER と NITRO-TS は同一の物を指します)

環境変数または `make` コマンドのマクロ変数の `NITRO_PLATFORM` を定義しない、あるいはこの変数に `"TS"` という値を設定することで、TS 用のモジュールを作成します。以下は一例です。

> % make NITRO_PLATFORM=TS

通常、`make` を実行したディレクトリ下の `bin, lib, obj` サブディレクトリ以下に `ARM9-TS` または `ARM9-TS.thumb` というディレクトリを作成し、その内部に TS 用の各モジュールが生成されます。

また、従来の TEG ターゲット版のコンパイルを行うには

> % make NITRO_PLATFORM=TEG

と明示的に指定する必要があります。
なお、TEGターゲットのサポートは今後も(少なくとも2004年中は)継続して行う予定です。

### Note 9-02: (DevEnv) ROM バイナリファイルの拡張子の変更

ROM イメージの製造フォーマット仕様と一致するように makerom を修正しました。また製造検査工程との整合性を取る為 ROM バイナリファイルの拡張子を .bin から .srl と変更しました。

ただし `Makefile` の記述における ROM イメージのターゲット変数名は `TARGET_BIN` のままになっています。

### Note 9-03: (DevEnv) オーバーレイ手法の変更

オーバーレイ関連のリンク手法が変更になりました。

- Link スペックファイル(LSF) の記述方法が変更されました。従来の LSF ファイルではそのまま使用できない場合が多いので独自の LSF ファイルを作成し使用されている方はそれらの修正が必要です。(詳しくは makelcf のリファレンスをご覧ください。)
- リンカへオーバーレイグループ情報を渡すため、レスポンスファイルを makelcf で生成するようになりました。

### Note 9-04: (DevEnv) LCFファイル記述の変更

LCFファイルでファイル指定に "*" を使用しないように変更しました。
LCFファイル中ではすべてのライブラリを列挙していますが、ライブラリ名に "+" 記号が使用できない制限のため、メトロワークス社のc++ランタイムライブラリを MSL_C++_NITRO_Ai_LE_strb.a → MSL_CXX_NITRO_Ai_LE_strb.a と 名前を変更してコピーし、そちらを参照するようにしています。

### Note 9-05: (DevEnv) makeルールの変更

複数のサブディレクトリでソースファイルをそれぞれコンパイルし、親ディレクトリで、それらをリンクするという処理のサンプルデモを次のディレクトリ以下に用意しました。

> $NitroSDK/build/demos/tips/MultiLink

### Note 9-06: (DevEnv) nef,srl ファイルの生成規則の修正

`nef`, `bin` ファイルの依存ファイルを `LDEPENDS_NEF`, `LDEPENDS_BIN` への指定によって追加できるようになりました。

### Note 9-07: (DevEnv) コンパイルスイッチ NITRO_CODEGEN_ALL の追加

コンパイルスイッチ NITRO_CODEGEN_ALL を追加しました。これは ARM/THUMB 版の両方のライブラリを生成するためのもので

> % make NITRO_CODEGEN=ARM
> % make NITRO_CODEGEN=THUMB

という2回のコンパイルを行うことを意味します。(コンパイルは NITRO_CODEGEN で指定された方から順に行ないます)

### Note 9-08: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドラインブラリが2004年6月22日版となりました。

### Note 9-09: (FS) FS_RegisterArchiveName関数の不具合修正

FS_RegisterArchiveName関数の内部処理の問題により登録したアーカイブを解放する際に状態不整合が起こるという不具合がありましたが、修正されました。

### Note 9-10: (FS) async デモのスレッド内デバッグ表示の不具合の修正

async デモにおいて、スレッド内でデバッグ出力を行っている最中に割り込みが発生してスレッドが切り替わることにより誤った文字列が出力される場合がありました。この不具合を修正しました。

### Note 9-11: (FS) FS_WaitAsync 関数が未完了で制御を返す不具合の修正

FS の非同期関数を FS_WaitAsync 関数で待機しているスレッドに対してOS_WakeupThreadDirect() 関数を呼び出した場合に、実際は処理が完了していないのに関数から戻ってくるという不具合がありましたが、修正されました。

### Note 9-12: (GX) GX_SetBankForTex(), GX_LoadTexEx(), GX_LoadTex() の修正

非連続VRAMバンクを扱う関数でデータ転送に不具合があり、正確に転送できていませんでしたが、修正されました。

### Note 9-13: (GX) GXデモ中のクリアカラーα値のデフォルト変更

GXデモのDEMOLib の中で、クリアカラーのα値のデフォルト値をこれまでの 0 から 31 に変更しました。

### Note 9-14: (FX) FX_AtanIdx(), FX_Atan2Idx() の追加

u16 型の範囲で逆正接を返す関数 FX_AtanIdx(), FX_Atan2Idx() を追加しました。これまではラジアン単位で逆正接を返す FX_Atan(), FX_Atan2() のみが存在していました。

### Note 9-15: (FX) ジオメトリエンジンへ値を送らない行列計算APIの追加

データをジオメトリエンジンへ設定せず値の計算のみをするAPIとして以下の関数を追加しました。
MTX_FrustumW(), MTX_PerspectiveW(), MTX_OrthoW(), MTX_LookAt()
これらの関数からは、G3_FrustumW(), G3_PerspectiveW(), G3_OrthoW(), G3_LookAt()で設定されるものと同じ行列が得られます。

### Note 9-16: (OS) NITRO_MEMSIZE=8M 時のアリーナ設定の修正

make 時に NITRO_MEMSIZE=8M の指定をつけてコンパイルしたものをメインメモリ8MB搭載の開発機材で実行した場合に、拡張メインメモリアリーナをきちんと設定するようにしました。これまではプロテクションリージョンの設定が適切ではなくアプリケーション側で設定する必要がありました。

### Note 9-17: (OS) alloc, free などメモリ割り当て関連関数のスレッドセーフ化

OS_Alloc*(), OS_Free*() 等のメモリ操作関数でクリティカルセクションを割り込み禁止とし、スレッドセーフにしました。

### Note 9-18: (OS) OS_JoinThread(), OS_IsThreadTerminated() の作成

スレッドを結合し指定のスレッドの終了を待つ OS_JoinThread()、スレッドの終了を調べる OS_IsThreadTerminated() を作成しました。

### Note 9-19: (OS) DMAのアドレスチェックASSERTの修正

デバッグビルドでは DMA時に TCMアドレスに重なっているかどうかをASSERTでチェックしていますが、境界条件に誤りがありました。これを修正しました。

### Note 9-20: (OS) OS_SetProtectionRegion() の動作変更

OS_SetProtectionRegion() で、プロテクションリージョンの設定を行うとともにリージョンの有効化を行うようにしました。これまでは有効化はしていませんでした。

### Note 9-21: (OS) 関数コスト計測プロファイラの変更

プロファイラ内部で扱う時刻情報をu16からu32にしてより長い時間を要する関数の計測が可能になりました。また、集計の所要時間計算に誤りがありましたが修正されました。

### Note 9-22: (MI) 圧縮データの圧縮タイプ・展開後サイズ取得関数の追加

メモリ上の圧縮データから、圧縮タイプと展開後のサイズを取得する関数を作成しました。圧縮タイプの取得はMI_GetCompressionType() 、展開後のサイズの取得は MI_GetUncompressedSize() となります。

### Note 9-23: (MI) MI_GetCartridgeRomCycle* 関数の名称の変更

MI_GetCartridgeRomCycle* 関数の名称を整理して1stと2ndで統一しました。あわせて、列挙型名 MICartridgeRomCycle1, MICartridgeRomCycle2 を MICartridgeRomCycle1st,MICartridgeRomCycle2nd に変更しました。

### Note 9-24: (MI) MI_CpuCopyFast() のASSERTの修正

MI_CpuCopyFast() のデバッグビルド時のASSERTで転送サイズが32バイトの倍数であることが必要条件となっていました。これを4バイトの倍数に修正しました。

### Note 9-25: (MI) DMA パラメータ設定と停止処理の変更

DMAのパラメータ設定処理 (内部関数 MIi_DmaParams*() )と停止処理 MI_StopDma()を割り込み禁止状態で行うようにしました。

### Note 9-26: (CP) 除算器の除数セット方法の変更

除算器に 32bit の除数をセットする際、除算器の除数レジスタの上位 32bit に 0 を入れるようにしました。これは除数 32bit の除算モードであっても、除数レジスタ 64bit 全てが 0 のときのみコントロールレジスタの 0 割りエラーフラグが立つためです。

### Note 9-27: (MIC) サンプリング種別の拡張

マイクによるサンプリングを行う関数において指定可能なサンプリング種別が拡張され、 符号付きデータ形式での出力を指定することが可能となりました。

### Note 9-28: (PRC) 図形認識API の追加(テスト公開)

タッチパネルによる描画データ等の図形認識を行う PRC ライブラリをテスト公開しました。
$NitroSDK/build/demos/prc
以下にデモを用意しました。
詳しくはドキュメント
$NitroSDK/docs/TechnicalNotes/PatternRecognition.doc
を参照してください。

### Note 9-29: (TP)タッチパネルの取得データ精度の変更

タッチパネルデバイスからの取得値精度を12bitから9bit に変更しました。ARM7側で下位3bitをマスクしています。これは将来の互換のためです。

### SDK 2.0 PR1 での既知の問題点

(次回以降のリリースで修正される予定です)

- 無線ライブラリについては作成中です。
- CARDライブラリについては作成中です。
- ARM9でシステムスタック領域をDTCM全域にしている場合、DTCMアリーナ領域はないということになるのですが、この時にDTCMアリーナに関係する関数を呼ぶとDEBUGビルドされたライブラリではASSERTで停止します。(システムスタック領域の大きさをLSFファイルで指定している場合は正常動作しますので、必要な場合、そのようにして回避してください。また、DEBUGビルドでない場合はASSERTで停止しないだけで、正常な値が返りません)　これが原因で、OSデモのarena-1 はDEBUGビルドでは ASSERTで停止します。

## ■ NITRO-SDK Version 1.2

(2004/6/16)

### Note 8-01: (CP) IRQハンドラ内でのCPコンテキスト切り替え処理の追加

IRQハンドラ内でスレッドが切り替わるときに、除算器、平方根演算器の コンテキストを保存していませんでした。これを修正してコンテキストが 適切に切り替わるようにしました。

### Note 8-02: (FX) 定数定義の修正と追加

FX_F32_TO_FX32()で負の数の場合の丸め処理が誤っていたのを修正し、FX32_CONST()をFX_F32_TO_FX32()の別名としました。 また、FX16_CONST(), FX64_CONST(), FX64C_CONST()をマクロとして追加しました。

### Note 8-03: (OS) アイドルスレッド処理の修正

$NitroSDK/build/libraries/os/common/src/os_thread.c の中で、idleスレッドの実行関数である OSi_IdleThreadProc() のループ部分にテストコードが混入していたのを修正しました。

### Note 8-04: (SPI) spiMonkeyデモの修正

spiMonkeyデモをDebug版でビルドすると、動作はするが画面更新速度が 非常に遅いという不具合がありました。これを修正しました。

### Note 8-05: (DevEnv) makerom/makelcf 変数値読み込みバグの修正

makerom/makelcf で変数値の取り扱いにバグがあり、正常に動作しない場合がありました。これを修正しました。

### SDK 1.2 での既知の問題点

(次回以降のリリースで修正される予定です)

- ファイルシステムのうち、アーカイブシステム部分については試用版となっています。

## ■ NITRO-SDK Version 1.2 RC1

(2004/6/10)

### Note 7-01: (GX) メイン LCD とサブ LCD 出力先切り替えの設定フラグの変更

パワーコントロールレジスタの "LCD出力先切り換えフラグ" の設定フラグの GX_DISP_SELECT_*** を最終実機と一致するように定義値を入れ替え (0,1 の論理反転)ました。

同様の修正は、ensata でも行なわれています。1.2 または 1.2RC1 以降の SDK で作成したアプリケーションを ensata 上で実行される場合は、ensata がこの修正に対応したバージョンであるかどうかご確認ください。

### Note 7-02: (MIC) マイクAPIの追加

マイクデバイスを操作する為のAPI、及びこれを使用したデモを追加しました。 また、MICライブラリとタッチパネルやサウンドのライブラリを同時に使用するサンプルとして、 "spiMonkey"デモを追加しました。

### Note 7-03: (TP) 最大サンプリングレートの変更

オートサンプリングで指定できる最大サンプリング回数を4回/フレームに変更しました。 これは将来的なハードウェアのコストダウンの際に、これ以上のサンプリング回数を保証 できないことが予測されているためです。

### Note 7-04: (TP) タッチパネルコマンド送信直後に割り込みが発生した場合の不具合修正

ARM7へタッチパネル制御コマンドを送信した直後に割り込みがかかった場合に、 ARM7からの応答待ちから復帰できないことがある不具合があり、これを修正しました。

### Note 7-05: (TP) オートサンプリングインターフェイスの変更

TP_RequestAutoSamplingStart()において、 バッファのサイズを指定できるよう引数を追加しました。 これによって、サンプリング回数よりも大きなサイズのバッファを指定できるようになり、 新規データによる上書きの対策が可能となりました。

### Note 7-06: (TP) TP_SetCallback()の引数の型変更

TP_SetCallback()の引数が関数ポインタの更にポインタとなっていたため、 関数ポインタを直接引数として渡せるように変更しました。

### Note 7-07: (FS) async デモの全読み込み完了サイズ表示の不具合の修正

async デモにおいて、全スレッドでの読み込み完了サイズの合計を total **** byte と表示する部分において、 サイズ加算の処理に不具合があり正確に表示されていませんでした。 これを修正しました。

### Note 7-08: (FS) オーバーレイのデータキャッシュが更新されない不具合の修正

オーバーレイモジュールを操作する各関数において、 データキャッシュの更新処理が正しく行われないという不具合を修正しました。

### Note 7-09: (FS) FS_SetDefaultDMA()関数の不具合の修正

NITRO-CARDを使用する環境での実行時にFS_SetDefaultDMA()でDMA設定を変更すると、 ファイル読み込みが異常動作することがあるという不具合がありました。これを修正しました。

### Note 7-10: (OS) IRQハンドラの仕様変更

IRQハンドラの先頭で IE と IF の論理積が 0 のときに何もせずに抜けるようにしました。 これはIEの設定中に割り込みが掛かった時に永久ループに陥ることがあった不具合の修正となります。

### Note 7-11: (OS) デフォルトの最大スレッド数の変更

スレッドシステムで作成できる最大スレッド数を8から16に変更しました。

### Note 7-12: (OS) OS_GetNumberOfThread() の作成

現在作成されているスレッド数を取得する関数 OS_GetNumberOfThread() を作成しました。

### Note 7-13: (OS) アリーナ設定の変更

これまで、ARM7用のアリーナの範囲を設定する際に固定の値を用いていましたが、 共用WRAMとARM7専用WRAMにARM7プログラムを格納した後の空き領域を考慮し、 それに対してARM7用共用WRAM アリーナと ARM7専用WRAMアリーナを設定するように変更しました。

また、これに伴い、OS_InitArena() でアリーナ設定をする際に lcf ファイルから定義される値を受け取る都合上、 上の２つのアリーナはARM7で、 残りのアリーナをARM9で設定するようにしました。

### Note 7-14: (OS) プロテクションリージョン関数の変更

以前のバージョンまでの OS_SetProtectionRegion() を OS_SetProtectionReginParam() に改名し、より直感的にアドレスやサイズを設定できる関数を用意してそちらを OS_SetProtectionRegion() にしました。

OS_GetProtectionRegion() はその機能別に、OS_GetProtectionRegionParam() と OS_GetProtectionRegionAddress() と OS_GetProtectionRegionSize() とに分割しました。

### Note 7-15: (OS) Profile 機能のOSライブラリからの分割

OSライブラリのうちProfile機能を分割して独立したライブラリとしました。 これによって、Profile機能を利用するときにOSライブラリを再コンパイルする必要がなくなりました。

関数コールトレースを有効にする場合は

> `NITRO_PROFILE_TYPE=CALLTRACE`

を指定し、 関数コスト計測を有効にする場合は

> `NITRO_PROFILE_TYPE=FUNCTIONCOST`

を指定することで必要なライブラリがリンクされます。

### Note 7-16: (OS) 関数コールトレース表示の修正

関数コールトレースで、4レベル以上のインデント表示に不具合があり、修正されました。

### Note 7-17: (OS) OS_GetConsoleType() の作成

現在の動作環境を取得する関数 OS_GetConsoleType() を作成しました。 取得出来る値には、ROMデータの読み出しデバイスやメインメモリサイズについての情報も含みます。

### Note 7-18: (OS) OS_Printf()等デバッグ用関数のFINALROMビルドでの扱い変更

FINALROM ビルドでの OS_Printf() 等の表示関数の扱いを変更しました。 これまでは OS_Printf() を呼び出して何もせず戻る関数となっていましたが、 呼び出し自体もしなくなりました。 また、OS_Panic() では表示なしで停止するようになりました。

### Note 7-19: (OS) TCM関数名の変更

他の関数名仕様とあわせるために以下のTCM関数名を変更しました。 左が変更前、右が変更後です。

>     OS_SetParamITCM() → OS_SetITCMParam()
>     OS_SetParamDTCM() → OS_SetDTCMParam()
>     OS_GetParamITCM() → OS_GetITCMParam()
>     OS_GetParamDTCM() → OS_GetDTCMParam()

### Note 7-20: (OS) OS デモ構成の変更

profile 関連の機能を別ライブラリに分離したことで、OSライブラリをコンパイル しなおさなくてよくなったことに伴い、これまでOSデモのMakefileに含めて いなかった callTrace-1 callTrace-2 exceptionDisplay-3 functionCost-1 functionCost-2 functionCost-3 のコンパイルを含めるようにしました。

### Note 7-21: (GX) GXデモの修正

デモAntiAlias で、ClearColorが設定されて いなかったために背景色とブレンドされずアンチエイリアスが かかっていませんでした。これを修正しました。

デモ2D_Oam_5 と Sub_Oam_5 で、データキャッシュの Flush をしてなかったためにFINALROMビルドで正常動作していませんでした。 これを修正しました。

### Note 7-22: (GX) Ensataバージョンアップによるデモの制限解除

Ensataのバージョンアップにより、Ensataでの動作時のみおこなっていた AntiAlias, PosVecTest, CurrentMtxの動作制限を解除しました。

### Note 7-23: (GX) 拡張パレット用VRAM設定名称の変更

GXVRamBGExtPltt, GXVRamOBJExtPltt, GXVRamSubBGExtPltt, GXVRamSubOBJExtPltt で定義されている拡張パレット用のVRAM設定名称をスロット番号を含む表記へ統一しました。 過去の名称はマニュアルには記載されませんが別名として残されます。

### Note 7-24: (GX) GX_Initの複数呼び出しの対策

GX_Init() を複数回呼び出すと、内部でstaticに持っているVアラーム構造体を その都度初期化に行ってそこで停止していました。 これを、GX_Init() を複数回呼び出してもVアラーム構造体の初期化は一度しか行われないようにしました。

### Note 7-25: (GX) GX_GetObj_* の作成

以下の関数をインライン関数として用意しました。

>     G2_GetOBJCharName()
>     G2_GetOBJColorMode()
>     G2_GetOBJEffect()
>     G2_GetOBJColorParam()
>     G2_GetOBJMode()
>     G2_GetOBJPosition()
>     G2_GetOBJPriority()
>     G2_GetOBJShape()

### Note 7-26: (FX) FX32_CONST()マクロの作成

fx32 形式の定数を定義する FX_CONST() マクロを作成しました。

### Note 7-27: (MI) MI_UncompressRL8() の修正

ランレングス圧縮データを8bit単位で展開する関数 MI_UncompressRL8() に不具合があり、正確に展開出来ませんでした。これを修正しました。

### Note 7-28: (DevEnv) makerom, makelcf の解説の追加

リファレンスマニュアルに「ツール」の項目を追加し、makerom makelcf に 関する説明を追加しました。

### Note 7-29: (DevEnv) 本体 NVRAM に保持されるデータの書き換えツール

ブートメニューによって設定される各種情報を書き換えるための簡易ツールを 収録しました。タッチパネルのキャリブレーション設定ツールとしてお使いください。

> `$NitroSDK/bin/ARM9-TEG/Release/BootMenu.srl`

が実行ファイルです(2.0PR5 において BootMenu.bin より改称)。これを TEG で実行することで、簡易メニューが起動します。タッチパネル以外の設定項目については最終品と異なる可能性があるため、現状では参考資料であるとお考えください。

### Note 7-30: (DevEnv) コンパイル時-gオプションの扱いの変更

SDK で提供している CodeWarrior の make によるビルド環境において FINALROM バージョンのビルド時にも "-g" オプションをつけて コンパイル、リンクを行なうように変更しました。

CodeWarrior では -g オプションで NEF ファイルへデバッグ情報が 追加されるだけで、ROMイメージのバイナリに違いはありません。

また逆に -g オプションを外してコンパイル、リンクを行なうための スイッチとして NITRO_NO_OPT_G を用意しました。

> `make NITRO_NO_OPT_G=1`

とすれば -g オプションを外したビルドが行なわれます。

### Note 7-31: (DevEnv) makerom で誤まったエラーメッセージが出力される不具合の修正

makerom 実行時、環境によっては、実際にはエラーは発生していないにも 関わらず "Error: Wrong format list file" というエラーメッセージが出力され、makerom の実行が停止してしまうバグがありました。 これを修正しました。

### SDK 1.2 RC1 での既知の問題点

(次回以降のリリースで修正される予定です)

- ファイルシステムのうち、アーカイブシステム部分については試用版となっています。
- SPI デモの spiMonkey を Debug コンパイルしたものは正常に動作しません。

## ■ NITRO-SDK Version 1.2 PR1

(2004/5/24)

### Note 6-01: (DevEnv) CodeWarrior NITRO V0.5 への対応

CodeWarrior NITRO V0.5 に対応しました。ライブラリファイル名の変更および LCF ファイルの変更に対応しています。

### Note 6-02: (DevEnv) ROM バイナリ作成ツールを elftobin から makerom へ変更

ROM バイナリ作成ツールを elftobin から makerom に変更しました。 これによりファイルシステムおよびオーバーレイがサポートされます。

### Note 6-03: (DevEnv) lcf の ALIGN(32) 追加

オーバーレイにおけるキャッシュラインに関連する問題回避のためオーバーレイセグメントの先頭と最後尾で 32 バイトアラインメントを保つように lcf 関連ファイルを修正しました。

### Note 6-04: (DevEnv) 実行バイナリ生成規則の依存ファイルの追加手段のサポート

.nef と .bin の生成規則の依存ファイルに $(LDEPENDS_NEF) と $(LDEPENDS_BIN) を それぞれ追加しました。具体的には以下のようになります。

    $NitroSDK/build/buildtools/modulerule.cctype.CW:

      $(BINDIR)/%.nef: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF)

    $NitroSDK/build/buildtools/modulerule:

      $(BINDIR)/%.bin: $(BINDIR)/%.nef $(MAKEROM_ARM7) $(ROM_SPEC) $(LDEPENDS_BIN)

### Note 6-05: (DevEnv) CodeWarrior以外のコンパイラからのヘッダインクルードへの対応

Windows 上において NITRO 関連ツール等を作成する際に CodeWarrior以外のCコンパイラからNitroSDKのヘッダファイルをインクルードしたい場合があります。しかしながら Visual C++ などの処理系においては、可変引数のマクロがサポートされていないなどの理由で nitro.h のインクルードがエラーとなります。 これに対処したいというご要望から $NitroSDK/include/nitro_win32.h を用意しました。

nitro_win32.h の内部で、以下の２つのdefine値を定義することで、gx.h, memorymap.h, type.h などのヘッダファイルのインクルードが可能となっています。

     #define SDK_FROM_TOOL
     #define SDK_HAS_NO_LONG_LONG_INT_

ただし、`SDK_HAS_NO_LONG_LONG_INT_` の `#define` については「64ビット整数を`long long int`から、`__int64`に置き換える」という指定なので、gcc等 `long long int` という定義が有効な環境ではこの定義は必要ありません。

### Note 6-06: (DevEnv) IDE デモサンプルの配布終了

CodeWarrior を使用するための IDE デモサンプルプログラムの配布を打ち切ることにしました。 既に CodeWarrior for NITRO において NITRO 用ステーショナリファイルが用意されているため IDE サンプルはその役目を終えたと考えたからです。

### Note 6-07: (ARM7) 統合コンポーネントferretの追加

様々なデバイスを処理する統合コンポーネントferret を追加しました。特に指定しない場合、このコンポーネントがデフォルトで結合されます。

コンポーネントのパスは $NitroSDK/components/ferret/ARM7-TEG/(ターゲット) 以下になります。( Thumb コンポーネントの場合は ARM7-TEG の部分が ARM7-TEG.thumb となります。)

### Note 6-08: (FS) ファイルシステム、オーバーレイのサポート

makerom によって生成したアプリケーション内で ROM ファイルシステムを使用するためのライブラリを追加しました。ディレクトリの列挙/検索、ファイルの同期/非同期リード、オーバーレイなどが可能になります。

FS ライブラリでは、NITRO の標準のソフト供給媒体である NITRO-CARD へリードアクセスする処理がサポートされています。FS ライブラリは TEG ボードのデバイス接続状況に応じて、ファイルシステムとして、カートリッジのイメージを使用するか NITRO-CARD のイメージを使用するかどうかを内部で切り替えます。

これに伴い SVC_ReadCard() が廃止されています。

### Note 6-09: (TP) タッチパネル関数のサポート

タッチパネル制御関連 API がサポートされました。

ARM7 側と ARM9 側との処理分担の変更にともない、今まで別パッケージで配布していた TP ライブラリと API が変更されていますので、ご注意ください。また、この変更により、タッチパネルのキャリブレーションパラメータが変更になっているため、もう一度タッチパネルのキャリブレーション処理を行なってください。

新しいタッチパッドのキャリブレーションバイナリは、$NitroSDK/bin/ARM9-TEG/Release/BootMenu.srl (2.0PR5 において BootMenu.bin より改称) となります。バイナリ起動後、画面のメニューから TOUCH PANEL を選び、キャリブレーション処理を行なってください。

### Note 6-10: (CP) 除算器、平方根演算器の割り込み、マルチスレッドへの対応

除算器および平方根演算器を割り込み処理のコールバック内で安全に使用できるように、 除算器、平方根演算器の現在の状態を保存、復帰するための API (CP_SaveContext, CP_RestoreContext) を用意しました。

また除算器および平方根演算器がマルチスレッドに対応になりました。

### Note 6-11: (GX) MtxFx22 用の API 作成

2x2 行列の MtxFx22 型変数を操作するための API が用意されました。

            MTX_Identity22()
            MTX_Concat22()
            MTX_Inverse22()
            MTX_Transpose22()
            MTX_Rot22()
            MTX_Scale22()

### Note 6-12: (GX) TEG ボードにおけるコマンド FIFO の動作不良の対策

TEG ボードにおけるコマンド FIFO 溢れ処理のハードの不具合により GX_LoadMtx44 などの処理が正常に行なわれないことがありました。これを、ライブラリ側で対策しました。このハードの不具合は製品版では修正されます。

### Note 6-13: (GX) GX_SetBankForARM7() への GX_VRAM_ARM7_128_C の追加

GX_SetBankForARM7() がサポートする引数として GX_VRAM_ARM7_128_C が追加されました。

### Note 6-14: (GX) BG拡張パレットへの GX_VRAM_BGEXTPLTT_01_F の指定時の不具合の修正

API GX_SetBankForBGExtPltt において引数に GX_VRAM_BGEXTPLTT_01_F を設定したときに 正しく設定されていない不具合を修正しました。

### Note 6-15: (GX) ジオメトリエンジンの Swapbuffer 処理と同期を取るための手法のデモを追加

3D エンジンの演算が処理落ちしたかどうかを判定するためにポリゴンカウンタを使用する 手法のデモが以下に追加されました。

`$NitroSDK/build/demos/tips/SwapCrossOver`

3D 画面演算の処理落ちのために 2D 画面とずれが生じるような場合には、 このポリゴンカウンタを使用した同期取りの手法も検討してください。

### Note 6-16: (GX) scaleW を調整できる透視変換行列関連 API 作成

scaleW の値を任意に設定できる以下のような透視変換関連 API を作成しました。

`G3_FrustumW(), G3_PerspectiveW(), G3_OrthoW()`

またジオメトリエンジンへ送らずに行列作成のみを行なう、 MTX_Frustum(), MTX_Perspective(), MTX_Ortho() も別途用意しました。

### Note 6-17: (GX) GX_Init 関数によるコマンド FIFO リセット処理の変更

コマンド FIFO リセット処理の実装を変更しました。内部処理として NOP を 128 個送った後 G3_End() を発行しています。

### Note 6-18: (GX) フォグモードの制御の不具合の修正

G3X_SetFog において fogMode を 1 から 0 に戻せない不具合がありました。これを修正しました。

### Note 6-19: (OS)スレッドシステムの扱いの変更

将来接続される様々なデバイスの制御を考慮し、スレッドシステムの初期化をデフォルトで行なうように変更しました。OS_Init() で OS_InitThread() を呼んでいます。

スレッドシステムを使用しないライブラリを作成する場合は、NITRO_NO_THREADを 定義してコンパイルしてください。

### Note 6-20: (OS) OS_SPrintf() の追加

浮動小数点値など一部の出力対応を省くことにより、標準関数 sprintf() よりも コードサイズ面で軽量な書式文字列関数 OS_SPrintf() とその系列を追加しました。 これは、主に ARM7 プロセッサ側での文字列処理に使用されています。

### Note 6-21: (OS) TEG ボードメモリバイトアクセス対策

TEG 版でのプログラム作成の利便性を考慮し、メモリバイトアクセス対策の MI_ReadByte()、MI_WriteByte() が用意されました。これらは、製品版ライブラリにおいては単純なバイトアクセス命令に変換されます。

### Note 6-22: (OS) OS_WaitIrq()、OS_WaitAnyIrq()、OS_WaitInterrupt() の作成

指定の IRQ を待つ関数 OS_WaitIrq() と OS_WaitAnyIrq()、OS_WaitInterrupt() を作成しました。OS_WaitIrq()とOS_WaitAnyIrq() はIRQを待つ間、他のスレッドに処理を譲ります。

OS_WaitInterrupt() はOS_Halt() にて待機しますのでスレッドの移動はありません。 これはこれまでのSVC_WaitIntr() と同じ動作を行うという位置付けで用意されています。

### Note 6-23: (OS) ATTRIBUTE_ALIGN(x) の作成

変数定義の際に、配置のアラインメントを指定する ATTRIBUTE_ALIGN() マクロを作成しました。このマクロ名は NINTENDO GAMECUBE SDK の定義に合わせたものとなっています。

### Note 6-24: (OS) IDLEスレッドスタックの拡張

Thread システム起動時に作成される最低優先度のアイドルスレッドのスタックサイズを、 SVC用にARM9で128バイト、ARM7で64バイトとしました。

### Note 6-25: (OS) OS_GetLockID(), OS_ReleaseLockID() の作成

OS の SpinLock で使用されるロックIDを管理する機構として OS_GetLockID(), OS_ReleaseLockID() を作成しました。

### Note 6-26: (OS) OS_SetSwitchThreadCallback() の作成

スレッド切り替え時のコールバック機能を追加しました。コールバックの登録は OS_SetSwitchThreadCallback() で行います。

### Note 6-27: (OS) OS_ExitThread() 時の Mutex 開放

OS_ExitThread() でスレッドを終了するときに、そのスレッドがロックしている Mutexを開放するようにしました。

### Note 6-28: (OS) ARM7 コンポーネントのループ処理の変更

ARM7 コンポーネントのメインループ処理を OS_Halt() ループにしました。

### Note 6-29: (OS) OS_SetProtectionRegion7(), OS_SetProtectionRegion7 の修正

OS_SetProtectionRegion7(), OS_SetProtectionRegion7 が、 リージョン 6 に対する操作になっていたのをリージョン 7 への操作に修正しました。

### Note 6-30: (OS) システムクロックの定義

各プロセッサの CPU クロック値 HW_CPU_CLOCK_ARM7,HW_CPU_CLOCK_ARM9 および 現在のコンパイルターゲットプロセッサの CPU クロック値 HW_CPU_CLOCK を定義しました。

### Note 6-31: (OS) OS_Panic() の停止動作変更

OS_Panic() の停止動作を OS_Halt ではなく、OS_Terminate() としました。

### Note 6-32: (OS) OSのデモ構成の変更

OSのデモ構成を変更しました。これにより waitIrq-1, waitIrq-2 が追加されました。

またMakefile に入れないデモとして callTrace-1 callTrace-2 exceptionDisplay-3 functionCost-1 functionCost-2 functionCost-3 を用意しました。Makefile に含めていないのは、OSライブラリを特定のオプションでコンパイルする必要があるためです。

### Note 6-33: (OS) IRQハンドラの変更

ハードの仕様上、割り込みの許可や禁止と実際のIRQの発生のタイミングの問題で IRQが発生したときにIME=0である場合がありましたが、この時何もせずに抜けるようにしました。

### Note 6-34: (OS) 関数コールトレース、関数コスト計測機構の作成

CodeWarriorのprofile機能を利用した関数コールトレースと、関数コスト計測の機構を追加しました。

NITRO-SDK における profile 機能のサポートについての解説は

> `$NitroSDK/docs/TechnicalNotes/MechanismOfProfiler.doc`

をご覧ください。

### Note 6-35: (OS) アプリケーション向けの割り込みチェックフラグの追加

SDKの割り込み要因と同様にアプリケーションで自由に使用できるチェックフラグ OS_IE_USER_FLAG0, OS_IE_USER_FLAG1 を用意しました。

### Note 6-36: (SND) サウンドライブラリの更新

NITRO-SDK で配布するサウンドラインブラリが2004年4月12日版となりました。

### SDK 1.2 PR1 での既知の問題点

(次回以降のリリースで修正される予定です)

- ファイルシステムのうち、アーカイブシステム部分については試用版となっています。
- SDK 1.2 PR1 は CodeWarrior-0.5 以降の使用が前提となっています。このため以前のバージョンでは正常に動作しない可能性があります。
- makerom/makelcf のドキュメントが用意されていません。
- FINALROM 版のバイナリは 2004/03/30 版の ensata 上で動作しません。

## ■ NITRO-SDK Ver 1.0

(2004/4/5)

### Note 5-01: CodeWarrior NITRO V0.4 への対応

CodeWarrior NITRO V0.4 に対応しました。これにより CodeWarrior のバージョンに対応してコンパイラ起動時のオプション -avoid_strb ⇔ -avoid_byte が切り替わります。

コンパイラのバージョン情報は $NitroSDK/build/buildtools 以下の verinfo.cw.cc と verinfo.cw.ld に保存されます。これらのファイルは CodeWarrior を 0.3 → 0.4 にアップグレードしたときにも自動的に更新されますが、0.4 → 0.3 へダウングレードさせた場合には更新されず不具合が起こります。CodeWarrior のダウングレード時には $NitroSDK/build/buildtools/verinfo.cw.* ファイルを手動で消していただくか、もしくはコマンドラインから make clean-verinfo と入力していただく必要があります。

### Note 5-02: GX_HBlankOBJProc() / GXS_HBlankOBJProc() の修正

GX_HBlankOBJProc() および GXS_HBlankOBJProc() においてパラメータ proc の値と実際の動作が逆になっていました。

この不具合は修正されました。

### Note 5-03: G2_SetOBJAttr() / G2S_SetOBJAttr() の修正

G2_SetOBJAttr() および G2S_SetOBJAttr() において GX_OAM_MODE_BITMAPOBJ モードに対して GX_OAM_EFFECT_AFFINEを使った時に rsParam パラメータの指定が OAM に反映されませんでした。

この不具合は修正されました。

### Note 5-04: GX_DisableBankFor*() の修正

GX_DisableBankFor*() において内部動作に誤りがあり、正しく動作していませんでした。

この不具合は修正されました。

### Note 5-05: NitroPostLinker.bat の修正

NitroPostLinker.bat ファイルが、環境変数 CWFOLDER_IRIS を参照していました。

環境変数 CWFOLDER_NITRO を参照するように修正されました。

### Note 5-06: fs/file-1 デモのリンク不具合の修正

fs/file-1 デモにおいてリンク手順に不具合があり、NitroStartUp() を追加しても NitroStartUp() がリンクされませんでした。

これは修正されました。

### Note 5-07: makerom (β版)の修正

現在、ツール評価版として付属している makerom ツールにおいて ARM9 の常駐モジュールのサイズが小さい場合エラーが発生していました。

これは修正されました。

### Note 5-08: makelcf (β版) 用 lcf テンプレートの修正

現在、ツール評価版として付属している makelcf ツールにおける lcf テンプレートファイルにおいてモジュールサイズの計算の一部に誤りがありました。

これは修正されました。

### NITRO-SDK Ver 1.0 の既知の問題点

- 新しく追加されたデモについての解説がオンラインマニュアルに一部追加されていません。
- ROM ファイルシステム関数、オーバーレイはさらに持ち越しとなります。

## ■ NITRO-SDK Ver 1.0 RC1

(2004/3/30)

### Note 4-01: G3_Frustum() の不具合修正

$NitroSDK/build/libraty/gx/src/g3_util.c 内に不備があり、G3_Frustum() の行列が正しく設定出来ませんでした。
この不具合は修正されました。

### Note 4-02: GX_LoadTex() での転送エラー修正

VRAM_A に テクスチャイメージのスロット０を確保してGX_LoadTex()でイメージを転送するとエラーが出て止まってしまう不具合を修正しました。

### Note 4-03: GX_RegionCheck_OBJ() の修正

OBJにVRAM_Bを割り当てた状態で Textureロードなどを実行した場合、ASSERTで停止していました。
この不具合は修正されました。

### Note 4-04: G3X_GetCommandFifoStatus() の修正

G3X_GetCommandFifoStatus() からの返り値が正確ではありませんでした。
この不具合は修正されました。

### Note 4-05: DTCM の位置変更のサポート

DTCMの位置を変更出来るようになりました。
$NitroSDK/include/nitro/hw/common/mmap_global.h のHW_DTCM の値を変更することで可能です。
ただし、変更後にライブラリを full make する必要があります。

### Note 4-06: codereset.h の修正

$NitroSDK/include/nitro/codereset.h に不備があり、常に thumb に切り替わるようになっていました。
この不具合は修正されました。

### Note 4-07: 例外ベクタ設定不具合

デバッガが例外ベクタを使用している時に、NITRO-SDK での設定との共存のために例外ベクタをフックする処理が間違っており、正確な動作が出来ませんでした。
この不具合は修正されました。

### Note 4-08: 周期アラームのハンドル内自己キャンセル追加

これまでは周期アラームのハンドル内で、そのアラーム自身をキャンセルすることが出来ませんでしたが、可能になりました。

### Note 4-09: OS_IsThreadAvailable() の追加

スレッドシステムが初期化され、使用可能な状態かどうかを調べる関数 OS_IsThreadAvailable() が追加されました。

### Note 4-10: 定数やアドレス代入アセンブラ表記の統一

定数やアドレスを代入するアセンブラ表記において、ldconst や lda を止め、ldr を用いた表記へ統一しました。
(変更前)　　　　　　　　　　　　　　　(変更後)
ldconst r0, #CONSTANT → ldr r0, =CONSTANT
lda r0, Address 　　　　　　→ ldr r0, =Address

### Note 4-11: G2_SetBG3ControlDCBmp() 不具合の修正

$NitroSDK/include/nitro/gx/gx_bgcnt.h の assert 判定に誤りがありました。
この不具合は修正されました。

### Note 4-12: 固定小数定義の追加

0.5を表す小数定義を $NitroSDK/include/nitro/fx/fx_const.h に追加しました。fx16型、fx32型、fx64型それぞれの固定小数が、FX16_HALF 、FX32_HALF 、 FX64_HALF として定義されます。

### Note 4-13: マクロ FX_MUL32x64C とインライン関数 FX_Mul32x64c の丸め処理の統一

FX_MUL32x64C と FX_Mul32x64c の丸め処理を統一しました。

### NITRO-SDK Ver 1.0 RC1 の既知の問題点

- ROM ファイルシステム関数、オーバーレイはさらに持ち越しとなります。

## ■ NITRO-SDK Ver 1.0 PR2

(2004/3/17)

### Note 3-01: PXI ライブラリの追加

ARM9-ARM7間の通信を行う PXIライブラリを追加しました。

### Note 3-02: グラフィックサンプルの追加

以下のグラフィックスサンプルが追加されました。

2D_CharBg_256_16 | アフィン拡張・256色×16拡張パレットキャラクタＢＧを表示
2D_CharBg_256BMP | アフィン拡張・256色ビットマップＢＧを表示
2D_CharBg_Direct | アフィン拡張・ダイレクトカラービットマップＢＧを表示
2D_Oam_256_16 | アフィン拡張・256色×16拡張パレットＯＢＪを表示
2D_Oam_Bmp1D | １次元マッピング・ビットマップＯＢＪの表示
2D_Oam_Char1D | １次元マッピング・キャラクタＯＢＪの表示
2D_Oam_Direct | ２次元マッピング・ビットマップＯＢＪの表示
2D_Oam_OBJWindow | ＯＢＪウィンドウの表示
2D_Oam_Translucent | 半透明ＯＢＪの表示
3D_BoxTest | ボックステストを行う
3D_PolAttr_1Dot | G3_PolygonAttr() の GX_POLYGON_ATTR_MISC_DISP_1DOT 設定
3D_PolAttr_DpthTest | G3_PolygonAttr() の GX_POLYGON_ATTR_MISC_DEPTHTEST_DECAL 設定
3D_PolAttr_DpthUpdate | G3_PolygonAttr() の GX_POLYGON_ATTR_MISC_XLU_DEPTH_UPDATE 設定
3D_PolAttr_FARClip | G3_PolygonAttr() の GX_POLYGON_ATTR_MISC_FAR_CLIPPING 設定
3D_Pol_Vertex_Source | G3_TexImageParam() の GX_TEXGEN_VERTEX 設定
3D_Shadow_Pol | シャドウポリゴンを使用して影を表示
AntiAlias | アンチエイリアシングを見る
Capture | キャプチャーを利用したモーションブラー効果
ClearColor | クリアカラーを設定
ClearImage | クリアイメージを設定
CurrentMtx | カレントのクリップ座標行列、方向ベクトル座標行列を出力
FlipRepeat | テクスチャのフリップ・リピートを変更
LinesOver | ポリゴンのラインオーバー表示
Master_Bright | マスター輝度の調整
PosVecTest | G3_VectorTest(), G3_PositionTest()の結果を出力
RamOverFlow | ポリゴンリストRAM・頂点RAMをオーバーフロー
VCount | Ｖカウンタ取得および変更
ViewPort | ビューポートの設定変更
Window | Ｈブランク期間中の操作によるウィンドウ変形
Window_HDMA | ＨブランクＤＭＡを使ってのウィンドウ変形
DEMOLib | 共通処理

### Note 3-03: MIのファイル展開APIに対応する圧縮ツールの追加

データ圧縮ツール ntrcomp を追加しました。
場所は $NitroSDK/build/tools/ntrcomp/ です。

### Note 3-04: NITRO-SDK と AGBSDK 両環境の共存についてのドキュメント追加

NITRO-SDK と AGBSDK の両方をインストールして共存させる方法についてのドキュメントを $NitroSDK/docs/HowToJoinAGBDevEnv.txt に追加しました。

### Note 3-05: OBJ と BG のバンク EFG の設定

VRAMのバンク組み合わせの設定に, 80_EF, 80_EGのエントリを追加しました。
VRAMをEF, EGの組み合わせでBGまたはOBJに配置できるようしました。

また、SDKにてサポートされていない組み合わせでVRAMを配置したいという要求に対応するため、SDKのソース改編によるエントリの追加方法をドキュメンとしてまとめ$NitroSDK\docs\SDKHowTo/HowToMakeMyVRamBankType.txtに追加しました。

### Note 3-06: G3X_InitMtxStack() の問題の修正

行列スタックの初期化の際、元の PROJECTION 行列のスタックレベルが0の場合に、スタックアンダーフローを起こしていました。
この不具合は修正されました。

### Note 3-07: man のジオメトリコマンドサイクルの一覧のリンク追加

ジオメトリコマンドサイクルの一覧に、マニュアル左ウィンドウの3Dジオメトリ(G3*)から移れるようにリンクを張りました。

### Note 3-08: OS_Sleep() の作成

指定の時間だけスレッドを休止させる関数 OS_Sleep() を追加しました。

### Note 3-09: スレッド切り替えに関する不具合修正

IRQハンドラ内でスレッドを切り替える際に、スレッドリストの参照個所を間違い、本来起動すべきでないスレッドを起動することがありました。
この不具合は修正されました。

### Note 3-10: OS_ReadMessage() の作成

メッセージキューの最初のメッセージを参照してコピーするだけの関数 OS_ReadMessage() を作成しました。OS_ReadMessage() は、OS_ReceiveMessage() と違い、メッセージを送ろうとしてブロックされているスレッドを復帰させることはありません。また、メッセージキューの内容を変えることもありません。

### Note 3-11: IRQチェックフラグセットに関する修正

IRQ割り込みのチェックフラグのセットで、タイマー割り込みの場合に誤ったビットにアクセスしてセットしていました。
この不具合は修正されました。

### Note 3-12: 複数のVカウントアラームに関する修正

Vカウントアラームに、起動時間の近い複数の周期関数を登録した場合に最初の関数しか起動されない不具合を修正しました。
またこの修正に伴い、Vカウントアラーム周期関数の起動時間に遅延許容カウントを指定できるようになりました。

### Note 3-13: チックの不具合修正

チックシステムに不具合があり、ある桁以上にカウントアップしないように なっていました。
この不具合は修正され、64ビットフルに値を取れるようにしました。

### Note 3-14: 時間とチックの変換マクロ追加

秒、ミリ秒、マイクロ秒で指定された時間と、OS_Sleep() や OS_SetAlarm() で使用されるシステムクロックを元にしたチックカウント値との変換マクロを追加しました。
以下がそのマクロです。

OS_MicroSecondsToTicks( usec )
OS_MilliSecondsToTicks( msec )
OS_SecondsToTicks( sec )
OS_TicksToMicroSeconds( tick )
OS_TicksToMilliSeconds( tick )
OS_TicksToSeconds( tick )

### Note 3-15: タイマー割り込みコールバックからの復帰時の不具合修正

OS_SetIrqFunction() でタイマー割り込みコールバックを設定し、タイマー割り込みを開始し、コールバックが呼び出されると、そこでタイマー割り込みを再設定してもコールバックから戻るときにクリアしていました。
この不具合は修正されました。

### Note 3-16: OS_DisableInterrupts() 等における FIQの扱いの変更

OS_DisableInterrupts() で、IRQ、FIQの両方を停止していましたが、 デバッガとの兼ね合いのために IRQ のみを停止するように変更しました。
但し ADバスのロック／アンロック、コンテキストスイッチ部分は IRQ と FIQ の両方を停止させています。

### Note 3-17: デバッガの例外ハンドラ呼び出しに関する仕様変更

ユーザの例外ハンドラを呼ぶ前に、あればデバッガの例外ハンドラを呼ぶように仕様を変更しました。

### Note 3-18: ARM7 のレジスタ名の変更

reg_DISP_DISPSTAT、reg_DISP_VCOUNT レジスタは所属カテゴリをGX に移し、reg_GX_DISPSTAT、reg_GX_VCOUNTに改名しました。
reg_OS_POWCNT は所属カテゴリをSND に移し、reg_SND_POWCNT に改名しました。

### Note 3-19: レジスタ表の修正

ARM9、ARM7 のレジスタ表 $NitroSDK/build/buildsetup/ioreg/io_reg_list*、$NitroSDK/build/buildsetup/ioreg_sp/io_reg_list* が加筆修正され、ほぼ現仕様の全てを網羅したものになりました。これまでに無かった部分の追加分は主に EXI、PXI カテゴリです。

### Note 3-20: マニュアルの修正

リファレンスマニュアルの誤記をいくつか修正しています。 その中の一つ、MI_SetWRAMBank() という表記は MI_SetWramBank() が正しいものです。 修正に伴い、MI_SetWramBank() のマニュアルの html ファイルを MI_SetWRAMBank.html から MI_SetWramBank.html に変更していますのでご注意下さい。

### Note 3-21: IRQテーブルの修正

OS内部のことになりますが、IRQハンドラのテーブルに誤りがありました。IEレジスタの各ビットに割り当てられている割り込み要因は、すべてのビットが順番にならんでいるわけでなく未使用の個所もあります。それを考慮せずテーブルを作成していたので、未使用の個所以降の割り込みがテーブルを参照する際にずれた個所をアクセスしていました。これを修正しました。
なお、未使用の個所もテーブルの一要因に割り当てたため、ARM9で2つ、ARM7で3つの配列要素が増えて使用メモリが微増しました。

### NITRO-SDK Ver 1.0 PR2 の既知の問題点

- ROM ファイルシステム関数、オーバーレイはさらに持ち越しとなります。

## ■ NITRO-SDK Ver 1.0 PR1

(2004/2/27)

### Note 2-01: NITRO-SDK への改称

irisSDK を NITRO ハードウェアに対応させました。同時に SDK 名称を NITRO-SDK と改めました。
この改称により NITRO-SDK には irisSDK から以下のような変更が行なわれております。ご注意ください。

1. `iris.h` の `nitro.h` への変更。
2. ディレクトリ `include/iris` の `include/nitro` への変更。
3. メイン関数 `IrisMain` が `NitroMain` に変更。
4. 環境変数 `IRISSDK_ROOT` の`NITROSDK_ROOT` への変更。
5. コンパイルスイッチ `IRIS_DEBUG` のように `IRIS_`で始まるスイッチの `NITRO_DEBUG` などへの変更。
6. ドキュメント類で使用されている IRIS という語句を NITRO へ変更。
7. IDE における NITRO 用の PostLinker として $NitroSDK/tools/elftobin/NitroPostLinker.bat を用意。

### Note 2-02: ソースのプロセッサ別の分類

ライブラリのソースファイル、ヘッダファイルの一部をプロセッサ別に分類し、それそれ ARM9/ARM7/common というサブディレクトリに格納しました。

このため今まで OS などのヘッダファイルのインクルード時に iris.h や os.h を通さず直接 #include <iris/os/alloc.h> と指定されていた方は #include <nitro/os/common/alloc.h> という修正が必要となります。

### Note 2-03: サブ LCD 対応 API およびデモの追加

サブ LCD 対応の API (GXS 関数群) を用意しました。 またその API を使用したデモプログラムも追加されています。 $NitroSDK/build/demos/gx/UnitTours 以下の Sub_ で始まるディレクトリをご参照 ください。

### Note 2-04: ELF ファイルの拡張子の変更

ELF ファイルの拡張子を .nef に変更しました。 NITRO 開発関連ツールも .nef への対応が予定されています。

### Note 2-05: サンプルコードのディレクトリの移動および自動テスト用コードの追加

サンプルコードが収録されているディレクトリを $NitroSDK/build/tests から $NitroSDK/build/demos に変更しました。

また SDK ライブラリのテスト処理のため、いくつかのファイルで自動テスト制御用のコードが埋め込まれました。具体的には#ifdef SDK_AUTOTEST 〜 #endif で囲まれた部分です。これは弊社内部で使用する部分ですので、サンプルコードをコピーしてご使用される場合は、削除していただいて結構です。

### Note 2-06: SDK の Thumb コードコンパイル

Thumb コード版のライブラリが生成ができるようになりました。 make コマンド起動時の変数または環境変数の NITRO_CODEGEN で切り替えます。

コマンド例

THUMB 版コードの生成 |  | `make NITRO_CODEGEN=THUMB`
ARM 版コードの生成 |  | `make NITRO_CODEGEN=ARM`

NITRO_CODEGEN を省略すると現在 ARM コード版のライブラリを生成します。

### Note 2-07: 関数単位で ARM コード/ Thumb コード生成の切替手段の提供

関数毎に ARM コード/ Thumb コードの生成を切り替え、また初期設定に戻すためのインクルードファイルを用意しました。

ARM コード生成を指示 |  | `$NitroSDK/include/nitro/code32.h`
Thumb コード生成を指示 |  | `$NitroSDK/include/nitro/code16.h`
初期指定に戻す |  | `$NitroSDK/include/nitro/codereset.h`

(例)
関数 void A(void) を Thumb コードで生成するように指定する場合

    #include <nitro/code16.h>
    void A(void)
    {
          ....
    }
    #include <nitro/code32.h>

CodeWarrior においては pragma で出力コードを直接変更できますが、コンパイラ毎の違いなどを本ファイルでなるべく吸収する方針としておりますので、これらのご使用をお勧めいたします。

### Note 2-08: SDK ライブラリでの C++ サポート

C++ でのコード作成をサポートするために以下を追加および修正しました。

- NitroMain() を呼び出す前に NitroStartUp() 関数とスタティックコンストラクタを呼び出す処理を追加
- C++ での使用に不具合のあったヘッダファイルの修正
- C++ サンプルコードの収録 ($Nitro/build/demos/os/cplusplus-1)

アプリケーション側で NitroStartUp() 関数を用意されていた場合、SDK は NitroStartUp() 関数をスタティックコンストラクタ処理前に呼び出します。 この NitroStartUp() 内でメモリ管理機構の初期化処理を行なうことにより、スタティックコンストラクタ処理内で new() 関数を使用することができます。

### Note 2-09: X,Y ボタンのサポート

PAD_Read() 関数において X, Y ボタンの読み取りをサポートしました。

ハードウェアの仕様上、X, Y ボタン入力による割り込み発生(PAD_SetIrq() 参照)がサポートされていないことにご注意ください。

### Note 2-10: make 関連ファイルに関する修正

make 関連ファイル($NitroSDK/build/buildtools の commondefs, modulerules など) を修正しました。

これにより以下が実装、修正されました。

- ソースファイルの依存情報ファイルの出力とその参照処理の実装
- make -f オプション使用時にうまく動作しなかった点の修正
- 大量のソースファイルを SRCS に指定したときに make が起動しない点の修正

### Note 2-11: マクロの複文表記の修正

マクロ定義で、複文 (中カッコで複数の文が囲まれているだけのもの) の記述をなくしました。

### Note 2-12: ヘッダファイル内のインラインアセンブラ関数を C ソースへ移動

ARM/Thumb コード出力の切り替えにおいて不都合となるため ヘッダファイル内でのインラインアセンブラ関数 (static inline asm による) を C ソース内に移動させました。

### Note 2-13: マクロ CODEGEN_PROC を NITRO_PROC へ名称変更

ARM9/ARM7 用の出力コードの切り替えに使用する、Makefile 内のマクロ変数 CODEGEN_PROC を NITRO_PROC へ名称変更いたしました。

### Note 2-14: elftobin での結合用 ARM7 バイナリの変更

バイナリファイル作成時にデフォルトで ARM9 用実行ファイルと結合する ARM7 用実行ファイルを新規に作成しました。これには、X,Y ボタンの読み取り処理が含まれます。ファイル本体は $NitroSDK/build/components/idle/ARM7 以下に収録されています。

以前の SDK に含まれる ARM7 用実行ファイルと本リリースの SDK によって作成された ARM9 実行ファイルとを結合すると PAD_Read() 関数が正常に動作しません。ARM7 の実行ファイルを Makefile で明示的に指定しておられる方はこの点にご注意ください。

### Note 2-15: IRQ スタックサイズ設定機構の追加

IRQスタックのサイズをLCFファイルに記述することで設定出来るようにしました。

### Note 2-16: 例外発生時のコンテキスト表示機構の追加

例外発生時(IRQ例外、FIQ例外、SWI例外を除く)に、例外発生時点のコンテキストを表示する機能を追加しました。また、ユーザのコールバックルーチンも呼ばせることが出来ます。

### Note 2-17: MI_Dma*Async() での NULL コールバック設定時の不具合修正

コールバックとして NULL が指定された場合、コールバックをセットせず進むよう にしました。バスのアクセス競合によるストールが発生しない場合、DMA コマンドを 送信後、ウェイトせずに関数から戻ります。

### Note 2-18: TCM 領域にかかる DMA の警告の追加

ITCM 及び DTCMを含む領域を DMA の転送先及び転送元に指定したときに、 DEBUG ライブラリでは警告を出すようにしました。

### Note 2-19: 起動時のメモリクリア処理の追加

crt0.c 内で、DTCM をクリアするようにしました。 これによって、スタック領域がクリアされるようになりました。 また、BG/OBJパレット、OAMもクリアするようにしました。

### Note 2-20: キャッシュ関連の関数の引数のアドレス丸め

DC_StoreRange(), DC_FlushRange(), DC_TouchRange(), IC_InvalidateRange() で、 開始アドレスの下位方向への32バイト境界丸めが実装されていませんでした。 これを実装しました。

### Note 2-21: OS_CreateThread() の引数追加、スレッド優先制御の自由度向上

スレッド機構に関して以下の変更を加えました。

- OS_CreateThread() に引数が追加され、実行開始関数に引数を渡すことができるようになりました。
- スレッドの優先度が 0 〜 31 で指定できるようになりました。これに伴い、OS_InitThread() を呼び出した直後のスレッドの優先度を 16 に変更しました。
- スレッド優先度を取得、変更する API (OS_SetThreadPriority(),OS_GetThreadPriority()) を実装しました。

### Note 2-22: スレッドのスタック溢れのチェック機構のサポート

スレッドにおけるスタック溢れをチェックする関数 OS_CheckStack() を用意しま した。

### Note 2-23: アラームおよび 64bit 計時カウンタの実装

16 bit タイマーを 2 つ使用することで、64 bit 値をもつ時刻カウンタと、 指定時刻にコールバック関数を呼び出すアラーム機構を実装しました。 これはタイマー割り込みを多重化させることで、ハードウェアのタイマーの数より も多いコールバック関数を登録できます。 これらの機能はオプションとなっており、使用する使用しないを選択することができ ます。

### Note 2-24: V カウントアラームの実装

V カウント割り込みを多重化し複数のコールバック関数を登録できるようになり ました。詳しくは OS の V カウント関連関数のリファレンスマニュアルをご覧く ださい。

### Note 2-25: MI_DmaSend*() , MI_CpuSend*() の追加

MI_DmaSend*, MI_CpuSend* API が追加されました。

### Note 2-26: OS_StartTimer*() のアサート判定の修正

DEBUG 版ライブラリにおいて OS_StartTimer32() の id に OS_TIMER32_23 また OS_StartTimer48() における id にOS_TIMER48_123 を設定するとアサートが発生して いたのを修正しました。

### Note 2-27: CPU メモリ関数の追加

メモリインターフェイスに MI_CpuClear() 等の DMA ではなく CPU によるメモリ操作関数を用意し、 UTL ライブラリを廃止しました。

### Note 2-28: TEG ボードの VBLANK 中のメインバスへのアクセスに伴うハードバグ対策

TEG ボードにおいて、VBLANK 期間の初期にメインプロセッサのバスへ特定パターンのデータが出力されたときにポリゴンの表示が乱れるというハードウェアバグがあります。 この対策をライブラリ内で行ないました。

実際の対処コードは GX_Init() に埋め込まれています。対策の詳細は、$NitroSDK/build/libraries/gx/src/gx.c の #ifdef SDK_TEG_WA_VBLANK 〜 #endif で囲まれた部分を参照してください。

またこの対処コードは V カウントアラームを使用していますので、この処理を有効にしておきたい場合は V カウントアラームを停止しないでください。

### Note 2-29: Light パラメータの調整

Light 処理を行なうデモにおいて、ライトカラーなどのパラメータの総和が かなり大きく、適切な値ではありませんでした。このため、ポリゴン面が少しでも ライトの方向を向いただけで、ライトの強さが MAX値になっていました。 これを調整しました。

また DEMOLib においてスペキュラライトに関するパラメータテーブルの定義を見直し、コサインの n 乗を近似するようにしました。gx/UnitTours/3D_Shininess デモでパラメータテーブルの違いによる変化を見ることができます。

### Note 2-30: 動的 DL 作成関数群のオーバーフローチェックの実装

動的 DL 作成関数 G3* に DL バッファオーバーフローチェックが追加されました。 これは DEBUG 版のライブラリをリンクした場合のみ有効になります。

### Note 2-31: G3_Ortho() のバグ修正

G3_Ortho() の実装誤りが修正されました。

### Note 2-32: G3_EndMakeDL() が正しいサイズを返さないバグの修正

G3_EndMakeDL() が正しいサイズを返さないバグがありました。 これを修正しました。

### Note 2-33: G2_SetBG*Control256x16Pltt() の引数の追加

G2_SetBG*Control256x16Pltt() にキャラクタベースブロックを指定するための引数を追加しました。

### Note 2-34: G3CS_LoadTexMtxEnv(), G3CS_LoadTexMtxTexCoord() の不具合修正

G3CS_LoadTexMtxEnv(), G3CS_LoadTexMtxTexCoord() で生成されるディスプレイリストに問題がありました。これを修正しました。

### Note 2-35: 追加された半透明テクスチャの API サポート

A3I5 テクスチャを API に対応させました。このテクスチャが実際に表示できるかどうかはエミュレータの仕様をご確認ください。

### Note 2-36: VecFx16 型と関連 API のサポート

Fx16 を要素とする 3D のベクトル型 VecFx16 をサポートし、それを取扱う算術関数 VEC_Fx16* シリーズを用意しました。

### Note 2-37: DEMO ライブラリのヘッダファイルに C のリンケージ指定追加

$NitroSDK/build/demos/gx/UnitTours/DEMOLib のヘッダファイルに C のリンケージ指定である extern "C" { の記述を追加しました。

この DEMO ライブラリは UnitTours の実装を簡単にするということを主眼において作成されています。このため仕様の変更についてご要望に副えない場合があります。非常に申し訳ございませんが、この DEMOLib をアプリケーションでご使用になられる場合は、その点ご了承ください。

### SDK 1.0 での既知の問題点

- ROM ファイルシステム関数、オーバーレイの実装が持ち越しになりました。

## ■2004年1月20日 irisSDK snapshot patch1

(2004/2/4)

### Note 1-01: 3D 関連の test コードの実行速度が遅いことの修正

メインループ内における

`SVC_WaitVBlankIntr();
G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W);`

上記の API の出現位置が逆になっており、必要のない V-BLANK 待ちが発生していました。入れ替えると問題は解消されます。

問題が発生する 3D グラフィクスの test コードは、修正されました。

### Note 1-02: VEC Mag のオーバーフロー対策

VEC_Magに大きなベクトルを入れたときに内部計算でオーバーフローが発生し、結果がおかしくなります。

上記バグは、修正されました。

### Note 1-03: MTX_Concat43() の修正

fx_mtx43.c において行列 b の平行移動要素が無視されてしまいます。

上記バグは、修正されました。

### Note 1-04: G2_SetBGxControl() 系の関数の定義修正

G2ライブラリの G2_SetBGxControl() 系の関数内での設定が正しくありません。

上記バグは、修正されました。

### Note 1-05: MTX_Inverse43() の平行移動計算の修正

MTX_Inverse43() において、得られた逆行列の平行移動成分に誤りがありました。

上記バグは、修正されました。

### Note 1-06: GX_SetOBJVRamModeBmp() の定義修正

GX_SetOBJVRamModeBmp() の定義誤りがありました。

修正されました。

### Note 1-07: バイトアクセス対策版ライブラリへの対応

IDE サンプルプロジェクトファイルでバイトアクセス対策版ライブラリへの対応ができていませんでした。これと同じくコマンドライン環境で使用していたライブラリもバイトアクセス版へ完全に移行させました。

IDE のサンプルプロジェクトファイルを修正版と差し替えました。

### Note 1-08: G2_SetBG3Priority() の定義修正

G2_SetBG3Priority の定義誤りがありました。

上記バグは、修正されました。

### Note 1-09: マクロ GX_FX16PAIR の定義修正

g3.h のマクロ GX_FX16PAIR で符号拡張の取り扱いに問題がありました。このマクロは SDK の他の個所では使用されていなかったのでSDK自体には影響がありません。

上記バグは、修正されました。

### Note 1-10: パッケージ収録のライブラリファイルの IS_IRIS_EMULATOR 対応

パッケージにはビルド済みのライブラリファイルが収録されていますが、そのライブラリの libos.a をそのまま使うと OS_Printf で IS-IRIS-EMULATOR への出力を行いませんでした。IS-IRIS-EMULATOR インストール済みの環境でライブラリを再ビルドされるとこの問題は解消します。

パッチに修正されたライブラリファイルを収録しました。

### Note 1-11: ARM7 版の libstubsisd.a ファイルの追加収録

ARM7 側のプログラムをリンクする時、環境変数“IS_IRIS_DIR”が定義されていない場合は、libstubsisd.a をリンクしようとしますが、このファイルが無いためエラーとなります。

ARM7 版 libstubsisd.a ファイルとそのソースファイルを追加収録しました。

### Note 1-12: システム予約領域のサイズの定義修正

システム予約領域のサイズが、新しい BOOT ROM では変更(32bytes->64bytes)になっていることに対応していませんでした。

上記バグは、修正されました。 これに伴いシステムモードのスタック領域の大きさも 32bytes 小さくなっています。

### Note 1-13: GX サンプルプログラムにおける G3_LightVector() 設定のコマンド位置の修正

G3_LightVector コマンドは発行直後に方向ベクトル行列による座標変換を行うので、G3_LightVector() は、カメラ行列の設定後に処理されなければなりません。

G3_LightVectorを使う全てのサンプルが修正されました。

### Note 1-14: MI_DmaCopy16Async でコールバックが呼ばれない不具合の修正

MI_DmaCopy16ASync() は内部でDMA終了割り込みを発生させておらずコールバックが呼ばれませんでした。

上記バグは、修正されました。

### snapshot 20040120+Path1 の既知の問題点

(次回以降のリリースで修正される予定です)

1. Light 処理を行なう test コードにおいて、ライトカラーなどのパラメータが適切な値でない。このため、ポリゴン面が少しでもライトの方向を向いただけで、ライトの強さが MAX 値になる。
2. G2_SetBG*Control256x16Pltt() においてキャラクタベースブロックの指定する方法がない。
3. DEBUG 版ライブラリにおいて OS_StartTimer32 の id に OS_TIMER32_23 また OS_StartTimer48() において id に OS_TIMER48_123 を設定するとアサートが発生する。

NINTENDO Technical Support Center