NITRO-SDK Revision History


-> TWL-SDK Revision History
NITRO-SDK 4.1 Release Version (2007/07/10)
Note 48-01: (CARD) Internally changed ROM transfer functions
Note 48-02: (DevEnv) AUTOLOAD support for C++ constructors and StaticInitializer
Note 48-03: (DevEnv) Revised the arena starting address when applying Autoload to extended memory
Known Issues in NITRO-SDK version 4.1 Release Version
NITRO-SDK 4.1 RC (2007/06/15)
Note 47-01: (CARD) Added a Function to Switch Cache Invalidation Processes
Note 47-02: (MI) Added the Allocator Structure
Note 47-03: (PM) Adjusted the LCD Off Period
Note 47-04: (TOOL) Corrected makerom.exe's Failed Operation with the -M Option
Note 47-05: (WFS) WFS Library Official Release
Note 47-06: (WM) Corrected a Bug in WM_IsExistAllowedChannel
Known Issues in NITRO-SDK Version 4.1 RC
NITRO-SDK 4.1 PR (2007/05/18)
Note 46-01: (CARD) Revised the CARD_UnlockBackup Function
Note 46-02: (CARD) Added a Function to Switch Cache Invalidation Processes
Note 46-03: (CARD) Corrected Problem Occurring when a Card was removed during Mic Sampling
Note 46-04: (CARD) Made Card Library Compatible with New Backup Devices
Note 46-05: (CTRDG) Added the CTRDG_GetPhiClock Function
Note 46-06: (DevEnv) Changed the Definition of MAKELCF_FORMAT Build Variable and Added a Description
Note 46-07: (FS) Revised the FS_LoadOverlay Function
Note 46-08: (GX) Changed the GX_SetVCount Function
Note 46-09: (GX) Corrected the Sub_Double3D Sample Demo
Note 46-10: (MB) Updated Debugging Program for DS Download Play Child Devices
Note 46-11: (MB) Added the MB_FakeSetCompareGGIDCallback Function
Note 46-12: (MI) Revised the MI_SetMainMemoryPriority Function Reference
Note 46-13: (MI) Added Device Access Utility Function
Note 46-14: (MIC) Added to MICAutoParam Structure Description in the NITRO-SDK Function Reference Manual
Note 46-15: (MIC) Corrected the mic-2 Sample Demo
Note 46-16: (MTX) Cleaned Up Matrix Functions
Note 46-17: (OS) Revised the OS_ResetSystem Function
Note 46-18: (STD) Added Formatted String Functions
Note 46-19: (TOOL) Corrected a Problem with Processing SearchSymbol Statements in makelcf's SPECFILE
Note 46-20: (TOOL) Added Official Support of 2Gbit ROM by makerom
Note 46-21: (WFS) WFS Library Test Release
Note 46-22: (WM) Added to the Description Regarding Conditions for Issuing WM_ERRCODE_OVER_MAX_ENTRY
Note 46-23: (WM) Changed the Effect of the Value set by the WM_StartMPEx Function to a Temporary One
Note 46-24: (WM) Changed the Option Processing of the WM_StartMPEx Function
Note 46-25: (WM) Corrected a Bug in MP Communications with the Wii
Note 46-26: (WM) Added the wmPadRead-child Demo
Known Issues in NITRO-SDK Version 4.1 PR
NITRO-SDK 4.0 Release Version (2007/02/15)
Note 45-01: (DevEnv) Unified the source code format
Note 45-02: (Misc) Updated Icon Data
Known Issues in NITRO-SDK version 4.0 Release Version
NITRO-SDK 4.0 RC (2007/01/22)
Note 44-01: (ENV) Changed the ENV Library
Note 44-02: (FX) Added the FX_AsinIdx and FX_AcosIdx Functions
Note 44-03: (GX) Added the GXBg23Control256x16Affine Structure
Note 44-04: (GX) Revised the GX_SetVCount Function Reference.
Note 44-05: (MB) Fixed an MB_End Function Bug
Note 44-06: (MB) Corrected the mb_child_simple.srl Program
Note 44-07: (OS) Fixed the IRQ Handler
Note 44-08: (OS) Added a Document Dealing with Creating Programs that Support Extended Languages
Note 44-09: (PM) Adjusted the LCD Off Period
Note 44-10: (TOOL) Added a description of the makebanner reference manual
Note 44-11: (TOOL) Changed the Default IRQ Stack Size of makelcf
Known Issues in NITRO-SDK Version 4.0 RC
NITRO-SDK 4.0 PR (2006/11/27)
Note 43-01: (CARD) Fixed a Bug that Caused Image Distortion when Removing a DS Card during DMA Transfer
Note 43-02: (CARD) Fixed a Bug in the Card Removal Detection Method
Note 43-03: (CP) Corrected divider.h
Note 43-04: (DevEnv) Changed the version of CodeWarrior used for the NITRO-SDK package build
Note 43-05: (DevEnv) enum Changed to Always be the Size of int
Note 43-06: (GX) Revised the G3*_Vtx10 Function Reference.
Note 43-07: (MB) Fixed an Issue with Closing the Cover and Removing the Card during Download
Note 43-08: (MB) Added the MB_FakeSetVerboseScanCallback Function
Note 43-09: (OS) Changed the OSOwnerInfo Structure and the OS_GetOwnerInfo Function
Note 43-10: (OS) Adjusted the V count of the OS_Init Function
Note 43-11: (OS) Added the OS_TPrintfEx, OS_TVPrintfEx, and OS_VSNPrintfEx Functions
Note 43-12: (OS) Added Korean Support for Extended Language Codes
Note 43-13: (PM) Fixed a Bug Preventing System Power Down if a Card was removed during Stream Playback
Note 43-14: (SND) Made the SND_FlushCommand Function Thread-safe
Note 43-15: (STD) Corrected the STD_CopyLString and STD_CopyLStringZeroFill Functions.
Note 43-16: (STD) Added Character Class Support for Scanf Functions
Note 43-17: (TOOL) Support for Changes to the Bash Specification
Note 43-18: (TOOL) Changed the Description on the makerom Reference Page
Note 43-19: (WM) Corrected Sample Demos
Known Issues in NITRO-SDK Version 4.0 PR
NITRO-SDK 3.2 Release Version (2006/08/28)
Note 42-01: (CARD) Corrected function reference page for CARD_GetRomHeader.
Note 42-02: (GX) Corrected AntiAlias Sample Demos
Note 42-03: (OS) Added Buffer Overflow Check for Function Cost Calculation
Note 42-04: (PM) Corrected Issues Associated with Card Removal during Wireless Communication
Note 42-05: (WM) Corrected Sample Demos
Known Issues in NITRO-SDK version 3.2 Release Version
NITRO-SDK 3.2 RC2 (2006/08/17)
Note 41-01: (CARD) Corrected the Console Not Powering Down with Card Removal during Wireless Communication
Note 41-02: (CP) Added Wait Processes Inside the CP RestoreContext Function
Note 41-03: (CP) Added a Note about the Use of Dividers inside Interrupts
Note 41-04: (CTRDG) Corrected a Problem Related to Hot-swapping Cartridges
Note 41-05: (OS) Added the OS_SleepThreadDirect Function
Note 41-06: (OS) Changed Internal Thread Switching
Note 41-07: (OS) Adjusted V Count at Time of Startup
Note 41-08: (PRC) Made Processing Related to Dividers Thread Safe
Note 41-09: (STD) Changed Specifications of Character Code Conversion Functions
Note 41-10: (WBT) Fixed the WBT_CMD_REQ_GET_BLOCK_DONE Notification Bug
Note 41-11: (WBT) Corrected Sample Demos
Note 41-12: (WM) Revised the WM_SetWEPKey/Ex Function
Note 41-13: (WM) Changed the Reset processing of wepMode
Note 41-14: (WM) Corrected a Problem Related to wepMode Settings
Note 41-15: (WM) Corrected Sample Demos
Known Problems with NITRO-SDK Version 3.2 RC2
NITRO-SDK 3.2 RC (2006/07/25)
Note 40-01: (CARD) Corrected the Issue with the Console Not Powering Down With Card Removal
Note 40-02: (DevEnv) Flaw in the ITCM/DTCM Size Check Using Template Files
Note 40-03: (MATH) Corrected the MATHCompareFunc function reference page
Note 40-04: (MATH) Changed the MATH_QSortStackSize Function
Note 40-05: (MB) Corrected multiboot-PowerSave Sample
Note 40-06: (MB) Changed the Runtime Defaults
Note 40-07: (STD) Changed the Character Code Conversion Functions
Note 40-08: (VIB) Changed the VIB Library
Note 40-09: (WM) Corrected Sample Demos
Note 40-10: (WM) Prohibited New Connections When Communication Ends
Known Issues in NITRO-SDK Version 3.2 RC
NITRO-SDK 3.2 PR (2006/07/07)
Note 39-01: (CARD) Corrected Card Pull-out Detection
Note 39-02: (CTRDG) Changed the AGB Backup Access NITRO-SDK Function Reference Manual Page
Note 39-03: (CTRDG) Revised Documents
Note 39-04: (DevEnv) Ended Support of Older CodeWarrior Versions in Shared Definition make System Files
Note 39-05: (MATH) Corrected the MATH_QSort Function
Note 39-06: (MI) Corrected a Problem With Out-of-bounds Access When Using LZ77 Compression
Note 39-07: (MI) Added 8-bit Versions of Endian Conversion Functions
Note 39-08: (OS) Corrected the OS_InitException Function
Note 39-09: (OS) Changed the Function Cost Calculation
Note 39-10: (PM) Corrected a Problem Preventing System Power Down After Card Removal While the LCD was turned off
Note 39-11: (PM) Revised the PM_GoSleepMode NITRO-SDK Function Reference Manual Page
Note 39-12: (PM) Corrected a Problem with the RTC Alarm Interrupt after Recovering From Sleep Mode
Note 39-13: (STD) Corrected the STD_CopyLString NITRO-SDK Function Reference Manual Page
Note 39-14: (STD) Changed the Specifications of STD_CopyLString and Added STD_CopyLStringZeroFill
Note 39-15: (STD) Added Conversion Functions Shift_JIS <-> Unicode
Note 39-16: (TOOL) Support for new overlay-related function with CodeWarrior 2.x.
Note 39-17: (TOOL) Changed the compstatic Tool Reference Page
Note 39-18: (TOOL) Support for New 1 Gbit/2 Gbit ROMs for makerom
Note 39-19: (TOOL) Added Checking for Valid Combinations of ROM Parameters
Note 39-20: (WM) Changed the WFS Sample Demo
Note 39-21: (WM) Changed the WM_EndDataSharing Function.
Note 39-22: (WM) Adjusted the Link Level Value When Communicating With the Wii Console
Note 39-23: (WM) Corrected Sample Demos
Note 39-24: (WM) Corrected a Problem with Initialization and Shutdown Functions
Note 39-25: (WM) Corrected a Problem with Port Callback Initialization inside the Initialization Function
Note 39-26: (WM) Corrected Illegal Operations during Disconnection
Known Issues in NITRO-SDK Version 3.2 PR
NITRO-SDK 3.1 Release Version (2006/05/02)
Note 38-01: (CARD) Made Changes Regarding DMA Transfer from ROM
Note38-02: (CTRDG) Added AGB Backup Access Functions
Note 38-03: (CTRDG) Added the CTRDG_SetPhiClock and CTRDG_GetPhiClock Functions
Note 38-04: (FS) Internally Changed the ROM Archive
Note 38-05: (FX) Changed the FX_Mul Function
Note 38-06: (FX) Changed the VEC_Normalize Function
Note 38-07: (GX) Added a Description to the NITRO-SDK Function Reference Manual Page for G2_SetBlendAlpha
Note 38-08: (MATH) Corrected the MATHCompareFunc function reference page
Note 38-09: (MI) Corrected the Compression Problem with the MI_CompressLZ Function
Note 38-10: (OS) Changed the OS_GetConsleType Function
Note 38-11: (OS) Corrected the exceptionDisplay-2 Sample Demo
Note 38-12: (PRC) Corrected Figure Dictionary Data for the Demo
Known Issues in NITRO-SDK version 3.1 Release Version
NITRO-SDK 3.1 RC (2006/04/11)
Note 37-01: (CARD) Made Card Library Compatible with New Backup Devices
Note 37-02: (DevEnv) Added .itcm.bss/.dtcm.bss/.wram.bss Section
Note 37-03: (DevEnv) Revised modulerules.cctype.CW
Note 37-04: (FX) Added MTX_Copy* Functions to the NITRO-SDK Function Reference Manual
Note 37-05: (GX) Added G3OP_DUMMY_COMMAND
Note 37-06: (GX) Changed the Geometry Command Cycle List
Note 37-07: (MI) Added Endian-aware Memory Access Functions
Note 37-08: (OS) Corrected OS_CheckHeap
Note 37-09: (OS) Changed Arena Overview
Note 37-10: (OS) Added 8-byte Alignment Support for the Stack
Note 37-11: (PM) Corrected the PM_ForceToPowerOff and PM_ForceToPowerOffAsync Functions
Note 37-12: (SND) Added the SND_SetTrackMuteEx Function
Note 37-13: (TOOL) Changed the NITRO-SDK Function Reference Manual Page for attachsign
Note 37-14: (TOOL) Corrected Problem With PPM Files Not Loading Using the ppmconv Tool
Note 37-15: (VIB) Changed the pulse_vib Sample Demo
Note 37-16: (WM) Corrected the dataShare-Model Sample Demo
Note 37-17: (WM) Added the wireless-all Sample Demo
Note 37-18: (WM) Corrected Sample Demos
Known Issues in NITRO-SDK Version 3.1 RC
NITRO-SDK 3.1 PR (2006/03/14)
Note 36-01: (ARM7) Improved Automatic Component Pull-out Detection
Note 36-02: (CARD) Internal Changes Made to the CARD_CheckPulledOut Function
Note 36-03: (CTRDG) Strengthened Access Restrictions to the AGB Cartridge Region
Note 36-04: (CTRDG) Added the CTRDG_CheckPulledOut Function
Note 36-05: (GX) Corrected 2D_CharBg_Direct Sample Demos
Note 36-06: (GX) Edited NITRO-SDK Function Reference Manual Description for G2_GetBG2ScrPtr and G2_GetBG3ScrPtr Functions
Note 36-07: (MB) Added MB_FAKESCAN_PARENT_BEACON Notification
Note 36-08: (MB) Corrected the Operation of MB_ReadMultiBootParentBssDesc
Note 36-09: (MB) Corrected a Problem With the Number Of Retries When Reconnecting To a Clone Boot Sample Parent
Note 36-10: (MB) Updated Documentation
Note 36-11: (MIC) Described Restrictions during Automatic Sampling
Note 36-12: (PM) Corrected the Problem Related to the PMAmpGain Enumeration Type
Note 36-13: (PM) Changed the PM_ForceToPowerOff and PM_ForceToPowerOffAsync Functions
Note 36-14: (TOOL) Fixed the Inclusion Order Within ROM When Specifying Files to makerom Using Wildcards
Note 36-15: (VIB) Added VIB Library
Note 36-16: (WBT) Corrected the WFS Sample Module
Note 36-17: (WBT) Corrected Function Reference
Note 36-18: (WBT) Added Overview to the NITRO-SDK Function Reference Manual
Note 36-19: (WM) Changed Specifications Regarding NULL Response from Children during MP Communication
Note 36-20: (WM) Changed WMGameInfo Structure Definitions
Note 36-21: (WM) Added the WM_IsValidGameBeacon and WM_IsValidGameInfo Functions
Note 36-22: (WM) Corrected a Problem With minPollBmpMode
Note 36-23: (WM) Updated Documentation
Note 36-24: (Misc) Corrected the Description of Macros
Known Issues in NITRO-SDK Version 3.1 PR
NITRO-SDK 3.0 Release Version (2006/01/16)
Note 35-01: (CARD) Added an Overview to the NITRO-SDK Function Reference Manual
Note 35-02: (DevEnv) Added a Function Reference Page for the packnlf Tool
Note 35-03: (DevEnv) Unified the source code format
Note 35-04: (MI) Corrected LZ Compression Problems with the MI_CompressLZFast Function and ntrcomp.exe
Note 35-05: (OS) Corrected problems in the OS_ResetSystem function
Note 35-06: (OS) Edited the Chinese Version Startup Screen
Note 35-07: (PRC) Corrected Figure Dictionary Data for the Demo
Note 35-08: (WM) Corrected the Debug String Display in the Sample Demo
Note 35-09: (WM) Changed Internal Communication Parameters
Known Issues in NITRO-SDK version 3.0 Release Version
NITRO-SDK 3.0 RC3 (2005/12/26)
Note 34-01: (MATH) Added Bit Operation Function
Note 34-02: (MB) Fixed a bug that occurred when designating memory conservation with the MB_ReadSegment function
Note 34-03: (MB) Improved MP Communication Effectiveness Under Adverse Conditions
Note 34-04: (OS) Changed the DC_TouchRange NITRO-SDK Function Reference Manual Page
Note 34-05: (OS) Corrected the OS_CreateThread function
Note 34-06: (WBT) Corrected wbt-1 Sample Demos
Note 34-07: (WBT) Corrected a Problem With the User Callbacks
Note 34-08: (WM) Corrected a Problem with MP Communication Parameters
Note 34-09: (WM) Made Changes to the Method of Setting the WH-Related Parameters
Note 34-10: (WM) Improved Internal Operations during Disconnect
Known problems with SDK 3.0 RC3
NITRO-SDK 3.0 RC2 (2005/12/05)
Note 33-01: (CARD) Corrected Problem with Backup Operation Function
Note 33-02: (CTRDG) Added Access Permission Functions for AGB Cartridges
Note 33-03: (DevEnv) Added a Macro For Comparing SDK Versions
Note 33-04: (DevEnv) Added SDK_INLINE and SDK_DECL_INLINE
Note 33-05: (DevEnv) Corrected the makebanner Tool
Note 33-06: (DevEnv) Updated ntexconv
Note 33-07: (DevEnv) Added the packnlf Tool
Note 33-08: (MB) Corrected the MBP Sample Module
Note 33-09: (MB) Added MB_FAKE_WORK_SIZE Definition
Note 33-10: (MB) Corrected Problem With the Parent Beacon Flag
Note 33-11: (MI) Added the MI_CompressLZFast Function
Note 33-12: (OS) Added an Automatic Build Switch for ARM7 Debug Output
Note 33-13: (OS) Changed the Definition of the V-Blank Wait Function
Note 33-14: (OS) Deleted OS_InitPrintServer and OS_PrintServer From the Sample Demo
Note 33-15: (OS) Deleted PXI_Init From the Sample Demo
Note 33-16: (OS) Changed SVC_WaitVBlankIntr in the Sample Demo
Note 33-17: (OS) Changed the Start Location of Extended Main RAM Arena
Note 33-18: (WBT) Corrected the WFS Sample Module
Note 33-19: (WBT) Changed the WFS-related Sample Demo
Note 33-20: (WM) Corrected the 2D_CharBg_3 and Sub_CharBg_3 Sample Demos
Note 33-21: (WM) Added a Timing Configuration Function for MP Communication
Note 33-22: (WM) Added a Function to Configure the Send Size for MP Communications
Note 33-23: (WM) Added a Spacing Control Function for MP Communication
Note 33-24: (WM) Updated the dataShare-Model Sample Demo
Note 33-25: (WM) Corrected the Display of the dataShare-Model Sample Demo
Note 33-26: (WM) Added a Way to Set the Maximum Number of MP Communications Per Frame
Note 33-27: (WM) Changed the Specification for the Receive Signal Strength Level
Note 33-28: (WM) Added Option For Disabling the Pre-check of the Send/Receive Buffer Size
Note 33-29: (WM) Added a Note Regarding the Wireless Communication Event Counters
Known Problems with NITRO-SDK Version 3.0 RC2
NITRO-SDK 3.0 RC (2005/11/07)
Note 32-01: (CARD) Changed Internal Processing Of EEPROM Device Operations
Note 32-02: (CARD) Added Removal Detection after ROM Access
Note 32-03: (CARD) Made Card Library Compatible with New Backup Devices
Note 32-04: (DevEnv) Corrected the #pragma define_section Parameters
Note 32-05: (DevEnv) Added a Resource Data Conversion Tool for the ENV Library
Note 32-06: (DevEnv) Corrected the NITRO-SDK Package Creation Script
Note 32-07: (DevEnv) Changed the Version of CodeWarrior Used For SDK Package Build
Note 32-08: (DevEnv) Added a Reference to the Compilation Target
Note 32-09: (ENV) Added a Reference to the ENV Library
Note 32-10: (ENV) Changed the ENV Library
Note 32-11: (GX) Corrected the G3BS_LoadMtx43 Function
Note 32-12: (GX) Further corrections to Sub_Double3D sample demo.
Note 32-13: (MATH) Corrected Problem with the MATH_Qsort Function
Note 32-14: (OS) Corrected the HI Address Calculations for the ARM7-Specific WRAM Arena
Note 32-15: (OS) Created the OS_GetTotalOccupiedSize Function
Note 32-16: (OS) Corrected the OS_PutString Function
Note 32-17: (OS) Added SDK_COMPILER_ASSERT
Note 32-18: (OS) Improved the V-Blank Wait Function
Note 32-19: (OS) Changed the const Argument of the Cache Function
Note 32-20: (OS) Corrected the Stack Overflow Check Function
Note 32-21: (OS) Support for the Argument Data Buffer Switch
Note 32-22: (OS) Corrected the Actual Time and the Check Value Conversion Macro
Note 32-23: (OS) Updated the Chinese Version’s Startup Screen
Note 32-24: (OS) Corrected Thread Queue Operations, Including Threads About To Terminate
Note 32-25: (PRC) Corrected the pdic2c.pl Sample Tool
Note 32-26: (RTC) Changed the Method for Getting RTC Day of the Week Information
Note 32-27: (SND) Corrected a Problem Where SND_CalcDecibel Would Not Return a Suitable Value When Argument 0 Was Entered
Note 32-28: (STD) Added STD Library
Note 32-29: (WBT) Corrected a Problem with GetBlock Request Notifications
Note 32-30: (WBT) Corrected the WFS Sample Module
Note 32-31: (WM) Updated the WM Test Tool
Note 32-32: (WM) Corrected the Description on the WM_SetLifeTime NITRO-SDK Function Reference Manual Page
Note 32-33: (WM) Improved Mongoose Components
Note 32-34: (WM) Added Information in the Notification to the Port Receive Callback
Note 32-35: (WM) Added Notification When the Port Receive Callback Initializes
Note 32-36: (WM) Added API for Tests
Note 32-37: (WM) Corrected a Problem Where the Wireless Connection Function Stops When a Child Device Calls the WM_EndMP Function
Note 32-38: (WM) Added a Disconnection Notification When the Local Player Disconnects
Note 32-39: (WM) Fixed Internal Operations Again For Connecting and Disconnecting
Known Issues in NITRO-SDK Version 3.0 RC
NITRO-SDK 3.0 PR4 (2005/09/08)
Note 31-01: (CARD) Added CARD_CancelBackupAsync Function
Note 31-02: (CARD) Fixed Internal Process in FRAM Device Operation (Released in NITRO-SDK 2.2 release version)
Note 31-03: (CARD) Added CARD_RESULT_NO_RESPONSE Error Code
Note 31-04: (DevEnv) Support for Overlay Groups in lsf Files
Note 31-05: (DevEnv) Fixed Bug in Certain Section Names Of makelcf
Note 31-06: (DevEnv) Corrected makelcf
Note 31-07: (DevEnv) Added Loadrun and Nitrorun Tool Commands
Note 31-08: (ENV) Added libenv*.a Environment Resource Library
Note 31-09: (FS) Changed FS_EndOverlay Function (Released in NITRO-SDK 2.2 official release)
Note 31-10: (FS) Revised Documents (Released in NITRO-SDK 2.2 official release)
Note 31-11: (FX) Corrected the FX_FX64C_TO_F32 Macro
Note 31-12: (FX) Fixed Bug in FX_InvSqrt Function (Released in NITRO-SDK 2.2 official release)
Note 31-13: (MB) Added MB_GetMultiBootDownloadParameter Function (Released in NITRO-SDK 2.2 official release)
Note 31-14: (NVRAM) Fixed Bug with Error Determination When Loading Data from NVRAM
Note 31-15: (OS) Added NITRO-SDK Function Reference Manual Pages for Debug Output Functions on ARM7 Side (Released in NITRO-SDK 2.2 official release)
Note 31-16: (OS) Fixed Bug in Upper Address of DTCM Arena
Note 31-17: (OS) Added NitroStaticInit Function Reference (Released in NITRO-SDK 2.2 official release)
Note 31-18: (OS) Organized const Type Arguments in Function Related to OSThread
Note 31-19: (OS) Added OS_GetOpt Function
Note 31-20: (SND) Optimized the Cache Invalidation Process (Released in NITRO-SDK 2.2 official release)
Note 31-21: (WM) Fixed Bug in Communication Disconnect Detection Process during MP Communication (Released in NITRO-SDK 2.2 official release)
Note 31-22: (WM) Added Scan Types That Are Performed By Specifying the Matching Length of SSID
Note 31-23: (WM) Corrected Scan SSID Matching Length in Infrastructure Mode
Note 31-24: (WM) Changed Internal Process for Child Connection (Released in NITRO-SDK 2.2 official release)
Note 31-25: (WM) Added Interface That Indicates More Detailed Information about Causes of Connection Failure Time
Known Problems with SDK 3.0 PR4
NITRO-SDK 3.0 PR3 (2005/08/10)
Note 30-01: (CARD) Added CARD_CheckPulledOut NITRO-SDK Function Reference Manual Page (Released in NITRO-SDK 2.2 official release)
Note 30-02: (CARD) Added Argument Restrictions for CARD_IdentifyBackup Function (Released in NITRO-SDK 2.2 official release)
Note 30-03: (MB) Changed Sample Demos (Released in NITRO-SDK 2.2 RC)
Note 30-04: (OS) Added the OS_SetThreadDestructorStack Function
Note 30-05: (OS) Alarm Cancel Process Used In OS_Sleep Function
Note 30-06: (WM) Changed Process during Overload on Child
Note 30-07: (WM) Changed Internal Operation for Disconnection (Released in NITRO-SDK 2.2 official release)
Known Problems with SDK 3.0 PR3
NITRO-SDK 3.0 PR2 (2005/08/04)
Note 29-01: (DevEnv) Changed ISD_NITRO_DEBUGGER Path (Released in NITRO-SDK 2.2 RC)
Note29-02: (GX) Changed the Sub Double3D Sample Demos Again (Released in NITRO-SDK 2.2 RC)
Note 29-03: (GX) Added Const Modifier to Arguments of Function That Gets Display List State (Released in NITRO-SDK 2.2 RC)
Note 29-04: (OS) Added the OS_GetLowEntropyData Function
Note 29-05: (PM) Fixed Restore Process after Transitioning to Sleep Mode from the LCD off State (Released in NITRO-SDK 2.2 RC)
Note 29-06: (WM) Added Notification to WM_SetIndCallback Function Callback
Note 29-07: (WM) Added WM_SetPowerSaveMode Function
Note 29-08: (WM) Fixed Bug at Time of Setting ignoreFatalError (Released in NITRO-SDK 2.2 RC)
Note 29-09: (WM) Changed Receive Process on Child
Note 29-10: (WVR) Corrected Bug in thumb Build Version of ichneumon Component (Released in NITRO-SDK 2.2 RC)
Known Problems with SDK 3.0 PR2
NITRO-SDK 3.0 PR (2005/07/22)
Note 28-01: (Cht) Added PictoCatch Demo
Note 28-02: (DevEnv) Support for nitro.h Precompiled Headers
Note28-03: (FS) Changed Overlay Function Operation (Released in NITRO-SDK 2.2 RC)
Note 28-04: (GX) Corrected GX Sample Demos
Note28-05: (MATH) Increased Speed for MD5 Function (Released in NITRO-SDK 2.2 RC)
Note28-06: (OS) Added Mechanism to Check for Stack Overflow in IRQ Stack
Note 28-07: (OS) Added Argument Support Using OS_GetArgc Function and OS_GetArgv Functions
Note 28-08: (OS) OS_KillThread and OS_KillThreadWithPriority Functions Added
Note 28-09: (OS) Implementation of Thread Destructors
Note 28-10: (OS) Added User Parameters to Thread Structure
Note 28-11: (OS) Removed Limit on Maximum Number of Threads
Known Issues in NITRO-SDK Version 3.0 PR

The NITRO-SDK 3.0 and NITRO-SDK 2.2 series are maintained as parallel versions branching from NITRO-SDK 2.2 PR.
However, all the changes in the 2.2 series are included in the 3.0 series.
For details on the 2.2 series, click here.

NITRO-SDK 2.2 PR (2005/07/15)
Note 27-01: (CARD) Added the CARD_CheckPulledOut Function
Note 27-02: (CARD) Made Card Library Compatible with New Backup Devices
Note 27-03: (CTRDG) Corrected Cache Operations When Getting Cartridge Information
Note 27-04: (DevEnv) Added the bin2obj Tool
Note 27-05: (DevEnv) Provided Support for a CYGWIN cygdrive Prefix Other Than /cygdrive
Note 27-06: (DevEnv) Corrected the LCF Template
Note 27-07: (DevEnv) Corrected Problem with the StackSize Specification for rsf
Note 27-08: (DevEnv) Changed the Default Value for TS_VERSION
Note 27-09: (DevEnv) Changed the #include Search Path
Note 27-10: (FS) Added the FS_CreateFileFromMemory and FS_CreateFileFromRom Functions
Note 27-11: (FS) Added the FS_End Function
Note 27-12: (FS) Corrected the Problem with the FS_WaitAsync Function
Note 27-13: (FS) Corrected Problem during Overlay Unloading
Note 27-14: (FX) Corrected Problem with the Arctangent Functions
Note 27-15: (GX) Corrected the Sub_Double3D Sample Demo
Note 27-16: (GX) Corrected Problem With ASSERT Inside Functions That Manipulate Display Lists
Note 27-17: (MATH) Corrected Problem with the MATH_Qsort Function
Note 27-18: (MATH) Accelerated the SHA-1 Functions
Note 27-19: (MATH) Added Fast Fourier Transform Functions
Note 27-20: (MB) Added multiboot-wfs Sample
Note 27-21: (MB) Released the Debug Use Expanded Memory Region
Note 27-22: (MB) Added User Definition Expanded Parameters
Note 27-23: (MI) Corrected Problems with the MI_CompressHuffman Function and Hufmann Compression by ntrcomo.exe
Note 27-24: (OS) Corrected Internal Operation of OS_Sleep Function
Note 27-25: (OS) Corrected Problem with the OS_TryLockMutex Function
Note 27-26: (OS) Added the OS_YieldThread Function
Note 27-27: (OS) Made Internal Corrections to Initialization Process at Startup Time
Note 27-28: (OS) Expanded the Startup Screen Process for Chinese Language Version
Note 27-29: (OS) Corrected Problems with Flushing the Data Cache
Note 27-30: (OS) Corrected Problem When Multiple OSMutexes Are Locked
Note 27-31: (OS) Added Information about Header Files To the NITRO-SDK Function Reference Manual
Note 27-32: (RTC) Added Functions to Convert Back And Forth between Date/Time and Total Elapsed Time in Seconds
Note 27-33: (RTC) Added Restrictions to Functions for Changing Date and Time
Note 27-34: (WBT) Corrected wbt-fs Sample Demo
Note 27-35: (WBT) Corrected WBT Sample Demos
Note 27-36: (WM) Clarified the Specification Changes and Planned Deletion of Key Sharing Functions
Note 27-37: (WM) Changed the Internal Operations of the WM_StartScanEx Function
Note 27-38: (WM) Updated WMTestTool.srl
Note 27-39: (WM) Deferred MP Communication When Child Not Connected
Note 27-40: (WM) Corrected Problem with Notification When Child Disconnects
Note 27-41: (WM) Added Restriction on Number of MP Communication Transmissions per Frame
Known Issues in NITRO-SDK Version 2.2 PR
NITRO-SDK 2.1 Release version (2005/05/09)
Note 26-01: (CARD) Added validity testing for card access DMA channels
Note 26-02: (DevEnv) Added floating point library specification option
Note 26-03: (FS) Internal corrections in FINALROM version overlay function
Note 26-04: (MB) Added sample demo.
Note 26-05: (OS) Added extended language codes
Note 26-06: (SND) Added instrument release invalidation function
Note 26-07: (WBT) Corrected sample demo.
Note 26-08: (WM) Corrected sample demo.
Known issues in SDK 2.1 release version

NITRO-SDK 2.1 RC (2005/04/21)
Note 25-01: (CARD) Added note about threads created with CARD Init
Note 25-02: (CTRDG) Added function to detect removal of cartridge device
Note 25-03: (CTRDG) Added reference description for cartridge bus lock and removal detection
Note 25-04: (CTRDG) Corrected reference about cartridge state
Note 25-05: (DevEnv) Changed memory map (Changed DTCM addresses)
Note 25-06: (FS) Improved validity checking for interrupts
Note 25-07: (GX) Corrected G3 FrustumW function
Note 25-08: (MATH) Added quicksort function
Note 25-09: (MATH) Added checksum, CRC calculation functions
Note 25-10: (MIC) Corrected mic-2 sample demo
Note 25-11: (MB) Added option to automatically generate TGID in MB Init
Note 25-12: (MB) Added functions to set wireless drive parameters
Note 25-13: (MB) Corrected MBP sample demo.
Note 25-14: (OS) Corrected stack check processing for launcher thread
Note 25-15: (OS) Corrected internal operation of OS_Sleep
Note 25-16: (OS) Corrected internal operation of cache flash function
Note 25-17: (OS) Corrected sample demo.
Note 25-18: (OS) Corrected references for format string functions
Note 25-19: (OS) Language codes temporary correspondence
Note 25-20: (SND) Unified distributions of sound library
Note 25-21: (SND) Added SND_PrepareSeq and SND_StartPreparedSeq functions
Note 25-22:(WM) Changed internal operation
Note 25-23: (WM) Added function to automatically generate TGID
Known issues in SDK 2.1 RC

NITRO-SDK 2.1 PR (2005/04/07)
Note 24-01: (CARD) CARDRomHeader structure added
Note 24-02: (CARD) Internal check added to CARD_IdentifyBackup
Note 24-03: (CARD) Added demo that explicitly specifies the ROM type
Note 24-04: (DevEnv) Support for one-time ROM build option
Note 24-05: (DevEnv) SDK version format changes
Note 24-07: (GX) Corrected G3_GetDLSize function bug
Note 24-07: (MATH) Added function to calculate message digest values
Note 24-08: (MB) Added MB_GetGameEntryBitmap function
Note 24-09: (OS) Corrected card lock internal processing in OS_ResetSystem
Note 24-10: (OS) Corrected internal implimentation of Cache Flash
Note 24-11: (OS) Corrected sample demo.
Note 24-12: (RTC) Fixed bug in date-writing function
Note 24-13: (Snd) Added function to get sound driver information
Note 24-14: (Snd) Added SND_COMMAND IMMEDIATE as a flag for SND_FlushCommand
Note 24-15: (Snd) Added SND_INST_NULL to SNDInstType
Note 24-16: (WM) Updated "Description of wireless communication library"
Note 24-17: (WM) Fixed bug related to disconnection timing
Note 24-18: (WM) Fixed bug in WM_StartScanEx
Note 24-19: (WM) Fixed bug related to disconnection processing
Note 24-20: (WM) Added demo that uses WEP Key with DS wireless play
Known issues in SDK 2.1 PR

NITRO-SDK 2.0 Release version (2005/03/11)
Note 23-01: (CTRDG) Added information to references for AGB Game Pak state functions
Note 23-02:(DevEnv) Standardized the source code forms
Note 23-03: (DevEnv) Added reference for compiled DS programs
Note 23-04: (DevEnv) Clarified argument ranges in the function reference
Note 23-05: (DevEnv) Defined the macro SDK_WEAK_SYMBOL for the declaration of weak symbols
Note 23-06: (FS) Fixed bug that occurred during loading of compressed overlay
Note 23-07: (MI) Added an alignment option for data compression
Note 23-08: (PRC) ASSERT statements in functions were modified
Note 23-09: (PRC) Return value types changed
Note 23-10: (WM) Fixed bug related to disconnection timing
Note 23-11: (WM) Fixed bug that occurred when minPollBmpMode was used in WM_StartMPEx
Note 23-12: (WM) Communications content is no longer erased
Note 23-13: (WM) Send queue for port communications was reduced
Note 23-14: (WM) Changed WMPortSendCallback structure
Note 23-15: (WM) Revisions and improvements to status check
Note 23-16: (WM) Revised return value for WM_EndKeySharing
Note 23-17: (WM) Corrected WH sample demo.
Known issues in SDK 2.0 release version

NITRO-SDK 2.0 RC5 (2005/02/25)
Note 22-01: (ARM7) Added and deleted components
Note 22-02: (CHT) Corrected sample demo.
Note 22-03: (DevEnv) Revised source code to support pedantic warning options
Note 22-04: (FS) Added overlay-staticinit demo
Note 22-05: (FS) Corrected internal malfunction of archive suspended state
Note 22-06: (FS) Corrected internal error detection in FS_LoadOverlayImage
Note 22-07: (GX) Correction of type returned by GX_GetOBJVRamModeBmp
Note 22-08: (GX) Deleted invalid member in GXBg23ControlAffine structure
Note 22-09: (GX) Fixed bug in G2_GetBG3Control* and G2S_GetBG3Control* functions
Note 22-10: (GX) Added function group that tries to allocate VRAM
Note 22-11: (MATH) Fixed problem with in-lining of MATH_CountLeadingZeros using code32.h
Note 22-12: (MB) Added interface for setting user data in the beacon of a DS download play parent.
Note 22-13:(MI) Added Compression Function
Note 22-14: (MI) Added function for setting the AGB Game Pak ROM access cycle
Note 22-15: (MI) Resolved problem with multiplex DMA during startup
Note 22-16: (MIC) Automatic sampling engine was optimized
Note 22-17: (OS) Link to Interrupt Overview page added
Note 22-18: (OS) Added functions to control thread scheduling
Note 22-19: (OS) Fixed problem with cache lockdown functions
Note 22-20: (OS) Added functions to release locked cache
Note 22-21: (OS) Fixed cache problem with OS_ResetSystem
Note 22-22: (OS) Added OS_GetITCMAddress function
Note 22-23:(PM) Changed the recovery process after transitioning from LCD OFF state to sleep mode.
Note 22-24: (SND) Changed distributions of sound library
Note 22-25: (WM) Fixed packet duplication problem during sequential communications
Note 22-26: (WM) Clarification of restrictions during sequential communication using minPollBmpMode
Note 22-27: (WM) Fixed problem with restBitmap member in WM_PortSendCallback structure
Note 22-28: (WM) Fixed problem with WM_Reset function
Note 22-29: (WM) Fixed operation of WM_IsBssidEqual and WM_CopyBssid and added 16-bit version
Note 22-30: (WM) Added warning about order of WM asynchronous function callbacks and intermediate acknowledgements
Note 22-31: (WM) Fixed problem with callback after resend
Note 22-32: (WM) Corrected WH sample demo bug.
Note 22-33: (WM) Corrected WFS sample demo bug.
Note 22-34:(WM) Added New Function
Note 22-35: (WM) Improved internal operation during start of MP communications
Note 22-36: (WM) Fixed problem with internal operation at parent startup
Note 22-37: (WM) Changed callback for WM_SetMPData* functions
Note 22-38: (WM) Corrected problem that occurred when parent near connection capacity connected with additional children
Note 22-39: (WM) Official release of description document
Note 22-40: (WVR) Wireless driver drive control library added
Known Issues in SDK 2.0 RC5

NITRO-SDK 2.0 RC4 (2005/01/14)
Note 21-01: (CHT) Added PictoChat-related libraries
Note 21-02: (MATH) Created MATH category
Note 21-03:(MATH) Added function for random numbers.
Note 21-04: (MB) Fixed the bug in the pseudo Single-Card Play child device
Note 21-05: (MB) Fixed the bug in internal thread when MB library ends
Note 21-06: (MB) Fixed internal operation when MB library ends
Note 21-07: (MB) Added a demo to pre-deliver as-needed data for entry child
Note 21-08: (WM) Added a function to wireless library
Note 21-09: (WM) Added stricter exclusive control to WM asynchronous function group
Note 21-10: (WM) Fixed power management setting of MP communication
Note 21-11: (WM) Improved WFS sample
Note 21-12: (WM) Fixed the demo that determines channel used by parent device
Note 21-13:(FS) Updated Feild System Document
Note 21-14: (GX) Added functions that read drawing register
Note 21-15: (GX) Eliminated the definition of VRAM expansion flag of bitmap OBJ for sub 2D engine
Note 21-16: (GX) Distinguished transfer method depending on data size
Note 21-17: (GX) Fixed ASSERT bug when using GX_SetBankForBGEx
Note 21-18: (GX) Added the GX_ResetCapture function
Note 21-19:(CARD,CTRDG) Improved Forced Stop Processing
Note 21-20: (CARD) Eliminated the CARD_ReadRomID function
Note 21-21: (CARD) Added a function for setting the NITRO-CARD access permission state
Note 21-22: (TP) Fixed the behavior of the TP_GetLatestRawPointInAuto function
Note 21-23: (TP) Improved the countermeasures for noise the touch panel receives from the LCD
Note 21-24: (MIC) Added an API for adjusting the sampling rate during auto-sampling
Note 21-25: (OS) Added an interrupt check flag for application (2nd notice)
Note 21-26: (OS) Added OS_DestroyThread function
Note 21-27: (OS) Eliminated OS demo interrupt-key-1, and modified WaitIrq-2
Note 21-28: (OS) Added OS_EnableMainExArena() and OS_DisableMainExArena()
Note 21-29: (OS) Fixed OS_DisableWriteBufferForProtectionRegion()
Note 21-30: (OS) Added and modified the heap function
Note 21-31: (MI) Added support for streaming expansion of compressed data
Note 21-32: (MI) Fixed the bug in MI_SendGXCommandAsync*()
Note 21-33: (MI) Resolved problem with multiplex DMA
Note 21-34: (PXI) Modified the PXI initialization process
Note 21-35: (DevEnv) Added a size check option for clone boot to makerom
Note 21-36: (DevEnv) Standardized the document format
Note 21-37: (DEMO) Added the tips/MyBuildMessage demo
Note 21-38: (TOOL) Reduced the size of the emuchild output file
Note 21-39: (SND) Changed distributions of sound library
Known Issues in SDK 2.0 RC4

NITRO-SDK 2.0 RC3 (2004/11/29)
Note 20-01: (MB) Added pseudo Single-Card Play child function
Note 20-02: (MB) Corrected the problem of the MB_GetParentSystemBufSize() function
Note 20-03: (MB) Expanded the features of the MB_ReadSegment() function
Note 20-04: (MB) Changed the names of the MB_StartParentEx() and MB_EndEx() functions
Note 20-05: (MB) Added the MB_DisconnectChild() function
Note 20-06: (MB) Eliminated the parent receive buffer size change
Note 20-07: (MB) Added clone boot sample.
Note 20-08: (MB) Corrected the problem of retries when reconnecting to the Multiboot-Model parent
Note 20-09: (MB) Added a document about the Single-Card Play procedure
Note 20-10: (WM) Corrected the ARM7 wireless library
Note 20-11: (WM) Introduced the MP communication life time
Note 20-12: (WM) Added the "Wireless Communication Tutorial"
Note 20-13: (FS) Added the FS_LoadOverlayImageAsync() function
Note 20-14: (FS) Eliminated the FS_RegisterOverlayToDebugger() function
Note 20-15: (GX) Added the GX_GetVCountEqVal() function and changed other VCOUNT match interrupt related API
Note 20-16: (GX) Added the GX_SetBankForBGEx() function
Note 20-17: (CARD) Changed the card removal post-processing function CARD_TerminateForPulledOut()
Note 20-18: (MI) Added the Difference Filter Restoration function
Note 20-19: (MI) Added the Memory Clear Process function only for startup
Note 20-20:(OS) Corrected problem with VAlarm
Note 20-21: (OS) Made debug functions to weak symbols
Note 20-22: (SND) Corrected the problem that stopped the SND_InvalidateWaveData() function from generating some sounds
Note 20-23: (MIC) Corrected the problem in which the MIC_GetLastSamplingAddress() function did not return the accurate address
Note 20-24:(PRC) Changed identifier name
Note 20-25: (WM) Enhanced the WM_SetMPDataToPort*() argument check
Known problems with SDK 2.0 RC3

NITRO-SDK 2.0 RC2 (2004/11/04)
Note 19-01: (WM) Changed the return value of WM_GetAllowedChannel() when an error occurs
Note 19-02: (WM) Changed part of the internal specifications of the WM_End library termination function
Note 19-03: (WM) Changed WMDisconnectCallback structure
Note 19-04: (WM) Corrected initialization of WM_Reset()
Note 19-05: (WM) Corrected processing at end of data sharing
Note 19-06: (WM) Changed upper limit of data size in data sharing
Note 19-07: (MB) Corrected invalid nameLength problem in MBUserInfo
Note 19-08: (MB) Added MB_StartParentEx () and MB_EndEx ()
Note 19-09: (MB) Added warning to MB_UnregisterFile() reference
Note 19-10: (MB) Added a demo that surveys the channel signal usage
Note 19-11: (MB) Implemented new method to set the tgid value in the multiboot demo
Note 19-12: (MB) Changed part of the internal specifications of the MB_End library termination function
Note 19-13: (WBT) Corrected error in wbt-fs sample demo that occurred during disconnect
Note 19-14: (WBT) Corrected wbt-fs sample demo
Note 19-15: (WBT) Corrected WBT library
Note 19-16: (FS) Added the FS_RegisterOverlayToDebugger() function
Note 19-17: (OS) Changed V-count alarm processing
Note 19-18: (OS) Added function to get owner information (favorite color)
Note 19-19: (OS) Fixed function cost profiler
Note 19-20: (OS) Corrected OS_SetTick ()
Note 19-21: (OS) Corrected OS_ResetSystem()
Note 19-22: (OS) Fixed data section transfer to DTCM
Note 19-23: (CARD) Added the CARD_GetRomHeader function
Note 19-24: (CARD) Added detection of automatically initiated DMA during Game Card access
Note 19-25: (ARM7) Added detection of Game Card/Game Pak removal to ferret
Note 19-26: (PM) Corrected LCD state during restore from sleep
Note 19-27: (MI) Corrected address checking during DMA
Note 19-28: (MI) Corrected MI_DmaFill*()
Note 19-29: (GX) Changed names of G3X_IsLineBufferOverflow() and G3X_ResetLineBufferOverflow()
Note 19-30: (GX) Corrected error in register definition
Note 19-31: (GX) Corrected clearing problem with G3X_InitTable table
Note 19-32: (SND) Changed distributions of sound library
Note 19-33: (CTRDG) Added references for CTRDG_IsNumberID() and CTRDG_IsBitID()
NOte 19-34: (DevEnv) Included IPL GUI version of mb_child and WMTestTool for checking wireless connections
Known problems with SDK 2.0 RC2

NITRO-SDK 2.0 RC1 (2004/10/07)
Note 18-01: (WM) Changes in WM library
Note 18-02: (WB) Corrected the problem that the mb_child.srl program had stopped processing the maximum number of characters
Note 18-03: (MB) Changed the download sequence of the multiboot-Model demo
Note 18-04: (MB) Changed the display characters of the mb_child.srl program to English
Note 18-05: (WBT) Added the WBT_CancelCurrentCommand function
NOte 18-06: (DEMO) Dealt with warning in WM demo bell
Note 18-07: (DEMO) Changed the user name process in the multiboot demo
Note 18-08: (DevEnv) Included the NITRO-SDK version display tool
Note 18-09: (DevEnv) Included the final version of the banner display tool
Note 18-10: (DevEnv) Linked the description of the resident area name of lsf file and the module compression process
Note 18-11: (OS) Changed the protection region setting for main memory
Note 18-12: (OS) Sound stopping process when reset
Note 18-13: (OS) Corrected OS_CreateThread()
Note 18-14: (OS) Corrected Function Trace Profiler
Note 18-15: (PM) Corrected the LCD switching function PM_SetLCDPower()
Note 18-16: (PM) Corrected to avoid residual image when entering sleep
Note 18-17: (PM) Corrected the IRQ mask return process during sleep
Note 18-18: (PM) Added callback call process for sleep
Note 18-19: (CARD) Corrected the processing of multiple card initialization calls
Note 18-20: (CTRDG) Added cartridge functions
Note 18-21: (RTC) Changed the method for monitoring RTC alarm
Note 18-22: (RTC) Corrected the problem with consistency of date and day of the week
Note 18-23: (GX) Added use of clear image for clear depth image by itself
Known problems with SDK 2.0 RC1

NITRO-SDK 2.0 FC (2004/09/30)
Note 17-01: (WBT) Official release of the wireless block transfer library
Note 17-02: (WM/TP) Corrected the problem that the wireless processes stopped the auto sampling of the touch panel
Note 17-03: (WM) Changes in WM library
Note 17-04: (DEMO) Corrected multiboot-Model demo
Note 17-05: (DevEnv) Corrected makebanner tool
Note 17-06: (DevEnv) Corrected the LIBSYSCALL process and changed the storage location of libsyscall.a
Note 17-07: (DevEnv) Corrected the compression process of overlay with NITRO COMPRESS
Note 17-08: (DevEnv) Changed the font set in banner file
Note 17-09: (DevEnv) Restricting the location of the banner file in ROM spec file and counter measures.
Note 17-10: (GX) Corrected bug in register definition
Note 17-11: (MI) Corrected MI_SendGXCommandAsyncFast
Note 17-12: (MI) Corrected MI_SendGXCommand ()
Note 17-13: (FS) Corrected the problem of calling FS_GetPathName()
Note 17-14: (OS) Added initialization function to be called by OS_Init()
Note 17-15: (CARD) Changed the card removal detection process
Note 17-16: (TP) Changed the validity conditions
Known problems with SDK 2.0 FC
Additional information for SDK 2.0 FC

NITRO-SDK 2.0 PR7 (2004/09/21)
Note 16-01: (WM) Changes in the WM library
Note 16-02: (FS) Corrected problems with loading compressed overlays
Note 16-03: (CTRDG) Created an API for detecting the Game Pak being pulled out
Note 16-04: (CARD) Created an API for detecting the Card being pulled out
Note 16-05: (GX) Corrected the problem that occurs when creating the display list with G3C
Note 16-06: (OS) RTC interrupt process
Note 16-07: (MIC) Changed I/F of auto-sampling start function
Note 16-08: (SND) Updated the sound library
Note 16-09: (DevEnv) Included the tool for creating the test viewer of the banner file
Note 16-10: (DEMO) Added the final ROM creation demo
Known problems with SDK 2.0 PR7

NITRO-SDK 2.0 PR6 (2004/09/13)
Note 15-01: (OS) Added functions that obtain the system information
Note 15-02: (OS) Implementation of soft reset
Note 15-03: (OS) Added OS_ClearAlloc() that destroys the memory allocation system
Note 15-04: (OS) Changed the error display when the alarm is set
Note 15-05: (MI) Added definition regarding DMA registers
Note 15-06: (WM) Corrected the wireless control library and added features
Note 15-07: (WM) Included the wireless strength icon
Note 15-08: (WBT) Test release of the block transfer library
Note 15-09: (SND) Updated the sound library
Note 15-10: (DevEnv) Added support for the compressed resident module
Note 15-11: (DevEnv) Startup of nitload by make run
Note 15-12: (DevEnv) Provided ferret component that supports each hardware versions
Note 15-13: (OS) Corrected OS_CheckHeap()
Note 15-14: (MI) Corrected problems with runlength compression of ntrcomp.exe
Note 15-15: (MI) Corrected the DMA processing
Note 15-16: (WM/SND) Dealt with the problem with simultaneous use of the wireless and sound features
Note 15-17: (MB) Corrected the problem with the return value of the MB_GetSegmentLength function
Note 15-18: (MB) Corrected the malfunction of the Debug version of Multiboot sample
Note 15-19: (CARD) Corrected the problem of calling the backup access function for the first time
Note 15-20: (PRC) Corrected the stack overflow of the CharacterRecognition-1 demo
Note 15-21: (OS) Added OS_TPrintf (a simplified version of printf)
Known problems with SDK 2.0 PR6

NITRO-SDK 2.0 PR5 (2004/08/30)
Note 14-01: (WM) Important Corrected the wireless control library and added features
Note 14-02: (MI) Important Dealt with hardware restrictions related to the automatic DMA
Note 14-03: (DevEnv) Important Included the component and library that support the hardware version
Note 14-04: (DevEnv) Ended support for mongoose in the TEG environment
Note 14-05: (DevEnv) Added files that begin with a dot (.) to the initial values used when specifying Reject in makerom
Note 14-06: (DevEnv) Changed to CodeWarrior version 0.6.1 to build the SDK
Note 14-07: (DevEnv) Corrected the problem that code in the .itcm/.dtcm sections was not placed in ITCM/DTCM
Note 14-08: (GX) Corrected problems with the mosaic size setting
Note 14-09: (GX) Corrected problems with the definitions, such as GX_InitEx() in gx.h
Note 14-10: (CARD) Support for FLASH device
Note 14-11: (CARD) Corrected the problem with calling CARD_Init() with interrupts prohibited
Note 14-12: (CARD) Corrected the problem with calling CARD_IdentifyBackup()
Note 14-13: (MI) Changed how main memory access rights are switched to avoid a DMA startup delay
Note 14-14: (OS) Corrected the Tick value retrieval function
Note 14-15: (OS) Stopped the interrupt check flag automatic setting for V-Blank interrupt
Note 14-16: (OS) Changed the location of DTCM in the TS environment
Note 14-17: (OS) Calling PM_Init() inside OS_Init()
Note 14-18: (OS) Determining the proper operating environment using OS_GetConsoleType()
Note 14-19: (TP) Error when determining whether the touch panel is touched
Note 14-20: (PM) Added the RTC alarm as a trigger to awaken from sleep
Note 14-21: (RTC) Operating the RTC in a fixed 24 hour notation
Note 14-22: (DEMO) Corrected the problem with pressing the A button during application startup
Note 14-23: (Doc) Added reference manuals for auxiliary tools such as ntrcomp
Known Problems in SDK 2.0 PR5

NITRO-SDK 2.0 PR4 (2004/08/11)
Note 13-01: (WM) Corrected and added functions to the wireless control library
Note 13-02: (MB) Added the DS Download Play (multiboot) library
Note 13-03: (PM) Added the PM library
Note 13-04: (MIC/TP) Added parallel operation of microphone sampling and the touch panel
Note 13-05: (MIC) Added microphone support and preprocessing with IS-NITRO-DEBUGGER
Note 13-06: (MIC) Corrected the mic2wav tool
Note 13-07: (GX) Changed the LCD power management function
Note 13-08: (GX) Added G3*_MultTransMtx33()
Note 13-09: (GX) Added functions to set the DMA number used by GX
Note 13-10: (GX) Corrected problems with GX_PowerGeometry(), GX_Power3D()
Note 13-11: (GX) Changed the write restriction to the register of GX_SetGraphicsMode()
Note 13-12: (CARD) Released the official NITRO-CARD access API
Note 13-13: (FS) Corrected the problem in which the file ID obtained by FS_ReadDir did not match
Note 13-14: (DevEnd) Corrected the problem when expanding makelcf/makerom variables; added support for the variable definition files
Note 13-15: (DevEnd) Output the autoload module information to the overlay name file
Note 13-16: (DevEnv) Corrected the problem with failing to rename the C++ library in the migw environment
Note 13-17: (OS) Set up the V Blank counter
Note 13-18: (PAD) Eliminated PAD_SetIrq() and PAD_ClearIrq()
Note 13-19: (MI) Added DMA busy wait after synchronous DMA
Note 13-20: (SND) Updated the sound libraries
Note 13-21: (Demo) Corrected GX demo 3D_BoxTest
Note 13-22: (Demo) Corrected GX demo LinesOver
Note 13-23: (Demo) Corrected the output screen of the SPI demo spiMonkey
Note 13-24: (DevEnv) Changed the sign setting of the char types
Known Problems in SDK 2.0 PR4

NITRO-SDK 2.0 PR3plus (2004/07/29)
Note 12-01: (DOC) Added and revised the WM Library Reference Manual
Known Problems in SDK 2.0 PR3 plus

NITRO-SDK 2.0 PR3 (2004/07/27)
Note 11-01: (OS) Corrected a definition error in the system shared region
Note 11-02: (DevEnv) Corrected the setting for the structure's padding warning
Known Problems in SDK 2.0 PR3

NITRO-SDK 2.0 PR2 (2004/07/26)
Note 10-01: (WM) Added the wireless control library
Note 10-02: (DevEnv) Changed the memory map (changed the DTCM address) (only with TS)
Note 10-03: (DevEnv) Added a parameter that absorbs the difference of DTCM
Note 10-04: (DevEnv) Corrected the link error in the C++ exception table
Note 10-05: (SVC) Updated the SVS library and reference manual
Note 10-06: (OS) Improved the lock functions (1): standardized the lock ID type
Note 10-07: (OS) Improved the lock functions (2): changed the name of the unlock function
Note 10-08: (MI) Changed the name of the MI_GetCartridgeRomCycle* function (posted again)
Known Problems in SDK 2.0 PR2

NITRO-SDK 2.0 PR1 (2004/07/20)
Note 9-01: (DevEnv) Changed the library support and default target for the TS version
Note 9-02: (DevEnv) Changed the file extension of the ROM binary files
Note 9-03: (DevEnv) Changed the overlay method
Note 9-04: (DevEnv) Changed the LCF file description
Note 9-05: (DevEnv) Changed the make rule
Note 9-06: (DevEnv) Corrected the generation rule of the nef and srl files
Note 9-07: (DevEnv) Added the compile switch NITRO_CODEGEN_ALL
Note 9-08: (SND) Updated the sound library
Note 9-09: (FS) Corrected an error in FS_RegisterArchiveName
Note 9-10: (FS) Corrected the improper display of a string while debugging in the async demo thread
Note 9-11: (FS) Corrected the problem of returning control prematurely while FS_WaitAsync is still running
Note 9-12: (GX) Corrected GX_SetBankForTex(), GX_LoadTexEx(), and GX_LoadTex()
Note 9-13: (GX) Changed the clear color alpha default from 0 to 31 in the GX demo
Note 9-14: (FX) Added FX_AtanIdx() and FX_Atan2Idx()
Note 9-15: (FX) Added a matrix calculation API that does not send the value to the geometry engine
Note 9-16: (OS) Corrected the arena setting when NITRO_MEMSIZE is set to 8M
Note 9-17: (OS) Improved thread-safety using functions related to memory allocation, such as alloc and free
Note 9-18: (OS) Added OS_JoinThread() and OS_IsThreadTerminated()
Note 9-19: (OS) Corrected the DMA address check ASSERT
Note 9-20: (OS) Changed the operation of OS_SetProtectionRegion()
Note 9-21: (OS) Changed the function cost measurement profiler
Note 9-22: (MI) Added functions to obtain the compression type and size of expanded data
Note 9-23: (MI) Changed the names of the MI_GetCartridgeRomCycle* functions
Note 9-24: (MI) Corrected ASSERT of MI_CpuCopyFast()
Note 9-25: (MI) Changed the DMA parameter setting and stop processes
Note 9-26: (CP) Changed how the Divider sets the divisor
Note 9-27: (MIC) Extended the sampling types
Note 9-28: (PRC) Added the pattern recognition API (test release)
Note 9-29: (TP) Changed the precision of the data obtained from the touch panel
Known Problems in SDK 2.0 PR1

NITRO-SDK 1.2 (2004/06/16)
Note 8-01: (CP) Added the CP context switching process to the IRQ handler
Note 8-02: (FX) Added and revised the constant definitions
Note 8-03: (OS) Corrected the idle thread process
Note 8-04: (SPI) Corrected the spiMonkey demonstration
Note 8-05: (DevEnv) Corrected the problem reading makerom/makelcf variable values
Known Problems in SDK 1.2

NITRO-SDK 1.2 RC1 (2004/06/10)
Note 7-01: (GX) Changed the Main LCD/Sub LCD output destination switch flag
Note 7-02: (MIC) Added the microphone API
Note 7-03: (TP) Changed the maximum sampling rate
Note 7-04: (TP) Corrected the problem of an interrupt being generated immediately after transmitting a touch panel command
Note 7-05: (TP) Changed the auto sampling interface
Note 7-06: (TP) Changed the TP_SetCallback() argument format
Note 7-07: (FS) Corrected a problem in the size display after loading all in the async demo
Note 7-08: (FS) Corrected a problem that prevented the overlay data cache from updating
Note 7-09: (FS) Corrected a problem in the FS_SetDefaultDMA() function
Note 7-10: (OS) Changed the IRQ handler specifications
Note 7-11: (OS) Changed the default for the maximum thread count
Note 7-12: (OS) Added OS_GetNumberOfThread()
Note 7-13: (OS) Changed the arena configuration
Note 7-14: (OS) Changed the protection region functions
Note 7-15: (OS) Removed the Profile features from the OS library
Note 7-16: (OS) Corrected the display of the call trace function
Note 7-17: (OS) Added OS_GetConsoleType()
Note 7-18: (OS) Changed how the debug functions, such as OS_Printf(), are handled in the FINALROM build
Note 7-19: (OS) Changed TCM function names
Note 7-20: (OS) Changed the OS demo structure
Note 7-21: (GX) Corrected the GX demo
Note 7-22: (GX) Eliminated restrictions on demos due to Ensata version upgrade
Note 7-23: (GX) Changed the extended palette VRAM configuration name
Note 7-24: (GX) Added support for multiple calls of GX_Init
Note 7-25: (GX) Added GX_GetObj_*
Note 7-26: (FX) Added the FX32_CONST() macro
Note 7-27: (MI) Corrected MI_UncompressRL8()
Note 7-28: (DevEnv) Added an explanation of makerom and makelcf
Note 7-29: (DevEnv) Added a tool to rewrite data maintained in the main unit NVRAM
Note 7-30: (DevEnv) Added the –g option during the build of the FINALROM version
Note 7-31: (DevEnv) Corrected a bug that output a faulty error message with makerom
Known Problems in SDK 1.2 RC1

NITRO-SDK 1.2 PR1 (2004/05/24)
Note 6-01: (DevEnv) Added support for CodeWarrior NITRO V0.5
Note 6-02: (DevEnv) Changed the ROM binary creation tool from elftobin to makerom
Note 6-03: (DevEnv) Added lcf ALIGN(32)
Note 6-04: (DevEnv) Added support for addition procedures for files dependent on execution binary generation rules
Note 6-05: (DevEnv) Added support for header include from compilers other than CodeWarrior
Note 6-06: (DevEnv) Terminated IDE demo sample distribution
Note 6-07: (ARM7) Added the ferret integrated component
Note 6-08: (FS) Added the file system and overlay
Note 6-09: (TP) Added touch panel functions
Note 6-10: (CP) Added Divider and Square Root Unit interrupts and multi-threads
Note 6-11: (GX) Added APIs for MtxFx22
Note 6-12: (GX) Improved poor operation of command FIFO in the TEG board
Note 6-13: (GX) Added GX_VRAM_ARM7_128_C to GX_SetBankForARM7()
Note 6-14: (GX) Corrected problem when specifying GX_VRAM_BGEXTPLTT_01_F to the BG extended palette
Note 6-15: (GX) Added a demo for procedure to synchronize to the Swapbuffer process on the geometry engine
Note 6-16: (GX) Added transparent conversion matrix APIs to adjust scaleW
Note 6-17: (GX) Changed the command FIFO reset process using the GX_Init function
Note 6-18: (GX) Corrected a bug in fog mode control
Note 6-19: (OS) Changed the thread system handling
Note 6-20: (OS) Added OS_SPrintf()
Note 6-21: (OS) Added TEG board memory byte access measures
Note 6-22: (OS) Added OS_WaitIrq(), OS_WaitAnyIrq(), and OS_WaitInterrupt()
Note 6-23: (OS) Added ATTRIBUTE_ALIGN(x)
Note 6-24: (OS) Extended the IDLE thread stack
Note 6-25: (OS) Added OS_GetLockID() and OS_ReleaseLockID()
Note 6-26: (OS) Added OS_SetSwitchThreadCallback()
Note 6-27: (OS) Released Mutex with OS_ExitThread()
Note 6-28: (OS) Changed the ARM7 component loop process
Note 6-29: (OS) Corrected OS_SetProtectionRegion7() and OS_SetProtectionRegion7
Note 6-30: (OS) Added the system clock definition
Note 6-31: (OS) Changed OS_Panic() termination operation
Note 6-32: (OS) Changed the OS demo structure
Note 6-33: (OS) Changed the IRQ handler
Note 6-34: (OS) Added the function call trace and function cost measurement mechanism
Note 6-35: (OS) Added interrupt check flags for operations
Note 6-36: (SND) Updated the sound library
Known Problems in SDK 1.2 PR1

NITRO-SDK 1.0 (2004/04/05)
Note 5-01: Support for CodeWarrior NITRO V0.4
Note 5-02: Revised GX_HBlankOBJProc() / GXS_HBlankOBJProc()
Note 5-03: Revised G2_SetOBJAttr() / G2S_SetOBJAttr()
Note 5-04: Revised GX_DisableBankFor*()
Note 5-05: Revised NitroPostLinker.bat
Note 5-06: fs/file-1. Fixed Demo Link Bug
Note 5-07: Revised makerom (ß version)
Note 5-08: Revised the lcf Template for makelcf (ß version)
Known Issues in NITRO-SDK Version 1.0

NITRO-SDK 1.0 (2004/03/30)
Note 4-01: Fix of G3_Frustum() bug
Note 4-02: Fix of transfer error with GX_LoadTex()
Note 4-03: Fix of GX_RegionCheck_Obj()
Note 4-04: Fix of GX3_GetCommandFifoStatus()
Note 4-05: Support for DTCM position change
Note 4-06: Fix of codereset.h
Note 4-07: Bug with exception vector set up
Note 4-08: Addition of self-cancel in periodic alarm handle
Note 4-09: Addition of OS_IsThreadAvailable()
Note 4-10: Standardization of constant and address sustitution assembler display
Note 4-11: Fix of G2_SetBG3ControlDCBump bug
Note 4-12: Addition of decimal point definition
Note 4-13: Standardization of macro FX_MUL32x64C and in-line function FX_Mul32x64c rounding up process
Known Issues in SDK 1.0

NITRO-SDK 1.0 PR2 (2004/03/17)
Note 3-01: Addition of PXI Library
Note 3-02: Addition of graphics samples
Note 3-03: Addition of compression tool for MI file opening API
Note 3-04: Addition of document about coexistence of NITRO-SDK and AGBSDK environments
Note 3-05: Setup of OBJ and BG bank EFG
Note 3-06: Fix of G3X_InitMtxStack problem
Note 3-07: Addition of link to man geometry command cycle list
Note 3-08: Creation of OS_Sleep()
Note 3-09: Fix of thread switch bug
Note 3-10: Creation of OS_ReadMessage()
Note 3-11: Fix of IRQ check fragment
Note 3-12: Fix of multiple V-count alarms
Note 3-13: Fix of tick bug
Note 3-14: Addition of time and tick conversion macro
Note 3-15: Fix of bug with recovery from timer interrupt callback
Note 3-16: Change to handling of FIQ in OS_DisableInterrupts(), etc.
Note 3-17: Change of specifications for debugger exception handler call
Note 3-18: Change to register name of ARM7
Note 3-19: Fix of register table
Note 3-20: Fix of manual
Note 3-21: Fix of IRQ Table
Known Issues with SDK 1.0 PR2

NITRO-SDK Ver 1.0 PR1 (2004/02/27)
Note 2-01: Name Change to NITRO-SDK
Note 2-02: Grouped Source According the Processors
Note 2-03: Added an API and Demos to Support Sub LCD
Note 2-04: Changed the ELF File Extension
Note 2-05: Moved the Sample Code Directory, and Added Code for Auto Test
Note 2-06: SDK Thumb Code Compile
Note 2-07: Provided a Means of Switching ARM code / Thumb Code Generation at Function Level
Note 2-08: Support for C++ in the SDK Library
Note 2-09: Support for X, Y Buttons
Note 2-10: Revisions Related to make Related Files
Note 2-11: Revised Compound Statement Expressions in Macros.
Note 2-12: Moved the Inline Assembler Functions That Were in Header Files to C source
Note 2-13: Name Change: Macro CODEGEN_PROC to NITRO_PROC
Note 2-14: Changed the ARM7 Binaries That Are Used for Linking in elftobin
Note 2-15: Added a Mechanism for Setting IRQ Stack Size
Note 2-16: Added a Mechanism to Display the Context at the Time That an Exception is Generated
Note 2-17: Fixed a Bug That Occurred When a NULL Callback Was Set in MI_Dma*Async()
Note 2-18: Added a Warning for DMA That Hits a TCM Region
Note 2-19: Added a Process to Clear Memory at Start Time
Note 2-20: Rounded Cache Related Function Argument Addresses
Note 2-21: Added OS_CreateThread() Argument, Made Thread Priority Control More Flexible
Note 2-22: Support for a Mechanism That Checks Thread Stack Leaks
Note 2-23: Implemented Alarms and a 64-bit Clock Counter
Note 2-24: Implemented a V-count Alarm
Note 2-25: Added MI_DmaSend*(), MI_CpuSend*()
Note 2-26: Revised OS_StartTimer*() Assert Determination
Note 2-27: Added CPU Memory Functions
Note 2-28: Measures for a TEG Board Hardware Bug Related to Main Bus Access During the V-blank Period
Note 2-29: Adjusted Light Parameters
Note 2-30: Implemented Overflow Check for the Dynamic DL Creation Function Group
Note 2-31: G3_Ortho() Bug Fix
Note 2-32: G3_EndMakeDL() Did Not Return the Proper Size. Fixed
Note 2-33: G2_Added an Argument to SetBG*Control256x16Pltt()
Note 2-34: Bug Fixes in G3CS_LoadTexMtxEnv(), G3CS_LoadTexMtxTexCoord()
Note 2-35: API Support for the New Translucent Texture
Note 2-36: Support for VecFx16 Type and Related API
Note 2-37: Added a C Linkage Specification to the DEMO Library Header Files
Known Issues in SDK 1.0

January 20, 2004 irisSDK snapshot patch1 (2004/02/04)
Note 1-01: 3D related test code execution was slow. Fixed
Note 1-02: VEC Mag overflow measures
Note 1-03: Fixed MTX_Concat43()
Note 1-04: Fixed definition of functions related to G2_SetBGxControl()
Note 1-05: Fixed horizontal translation calculations for MTX_Inverse43()
Note 1-06: Fixed definitions in GX_SetOBJVRamModeBmp()
Note 1-07: Support of library for byte access
Note 1-08: Fixed G2_SetBG3Priority() definitions
Note 1-09: Fixed definition of macro GX_FX16PAIR
Note 1-10: Support for IS_IRIS_EMULATOR in packaged library files
Note 1-11: Additional file for ARM7 version: libstubsisd.a
Note 1-12: Fixed definition of system reserved region sizw
Note 1-13: Fixed G3_LightVector() setting command position in the GX sample program
Note 1-14: Callback not called by MI_DmaCopy16Async(). Fixed
Known issues in snapshot 20040120+Path1

NITRO-SDK Version 4.1 Release Version

(2007/07/10)


Note 48-01: (CARD) Internally changed ROM transfer functions

Made slight revisions to the transfer processing within the CARD_ReadRom function. The operational specifications have not changed.


Note 48-02: (DevEnv) AUTOLOAD support for C++ constructors and StaticInitializer

Failures during linking used to occur if C++ constructors or static initializers were placed in the Autoload section. Consequently, the lcf template files were modified so that Autoload processing can be done for C++ constructors and static initializers.


Note 48-03: (DevEnv) Revised the arena starting address when applying Autoload to extended memory

The correct value was not being set when the OS_ARENA_MAINEX argument was provided to the OS_GetArenaLo function when performing autoloading to extended memory for debugging.

In order to correct this, a section called MAINEX was configured as a section dedicated to performing autoloads for the extended memory region, and revisions were made so that the objects to be transferred to extended memory can be enumerated in this section.
(For example,
Examples: lsf code when locating OBJS_MAINEX in extended memory:

Autoload MAINEX
{
Address 0x02400000
Object $(OBJS_MAINEX) (.text)
Object $(OBJS_MAINEX) (.data)
Object $(OBJS_MAINEX) (.bss)
}

No revisions have been made to the Overlay process as applied to extended memory.


Known Issues in NITRO-SDK version 4.1 Release Version

None.


NITRO-SDK Version 4.1 RC

(2007/06/15)


Note 47-01: (CARD) Added a Function to Switch Cache Invalidation Processes

Added a function that was originally meant to have been added in Note 46-02, but was not.


Note 47-02: (MI) Added the Allocator Structure

Released the MIAllocator structure and its operation functions as standard prototypes for allocating and releasing memory.


Note 47-03: (PM) Adjusted the LCD Off Period

Fixed the modifications made in Note 44-09 to be even more accurate.


Note 47-04: (TOOL) Corrected makerom.exe's Failed Operation with the -M Option

When specifying a variable definition list file with the -M option in makerom.exe, there was a problem with expanding the variable definitions described in that file to correct values. Specifically, a line feed code was always being added to the end of the expanded variable value.
This was fixed so that the line feed character is now removed.


Note 47-05: (WFS) WFS Library Official Release

A function reference has been prepared for the WFS library test release of Note 46-21, and the library officially released.


Note 47-06: (WM) Corrected a Bug in WM_IsExistAllowedChannel

There was a bug in which TRUE would always be returned regardless of the existence of the channel that should be used. This has been fixed so that the correct value is returned.


Known Issues in NITRO-SDK Version 4.1 RC

None.


NITRO-SDK Version 4.1 PR

(2007/05/18)


Note 46-01: (CARD) Revised the CARD_UnlockBackup Function

Made revisions so that the library is forced to wait internally if CARD_UnlockBackup is called while executing an asynchronous operation on the backup device. An explanation of this has been added to the NITRO-SDK Function Reference Manual.


Note 46-02: (CARD) Added a Function to Switch Cache Invalidation Processes

With respect to cache flush operations that accompany ROM access DMA transfers, it has until now been the case that a partial flush would always be performed, regardless of the transfer size; however, if the transfer size gets to be larger than a certain amount, it becomes more efficient to flush the entire cache. A function that can freely set the size threshold at which to switch between these cache flushing methods (partial and full) has therefore been added: CARD_SetCacheFlushThreshold.


Note 46-03: (CARD) Corrected Problem Occurring when a Card was removed during Mic Sampling

A bug existed that would occasionally cause the backlight to turn off and shutdowns to occur if a card was removed during mic sampling. This problem has been fixed.


Note 46-04: (CARD) Made Card Library Compatible with New Backup Devices

Made the Card Library compatible with the 16-megabit FLASH Backup Device and added CARD_BACKUP_TYPE_FLASH_16MBITS to the CARDBackupType enumerated type.

The NITRO-SDK Function Reference Manual and sample demos were updated accordingly.


Note 46-05: (CTRDG) Added the CTRDG_GetPhiClock Function

Added a function, CTRDG_GetPhiClock, that was supposed to be added in Note 38-03, but in actuality was not.


Note 46-06: (DevEnv) Changed the Definition of MAKELCF_FORMAT Build Variable and Added a Description

Changed the definition of the build variable MAKELCF_FORMAT such that if an original setting value exists in another file --- for example, the application Makefile --- it is given priority.

In addition, added an explanation on the build variables MAKELCF_FORMAT and MAKELCF_FLAGS to $NITROSDK/docs/SDKRules/Rule-Defines.html.


Note 46-07: (FS) Revised the FS_LoadOverlay Function

Added a single sample code example to the FS_LoadOverlay function reference.


Note 46-08: (GX) Changed the GX_SetVCount Function

Added an internal restriction to GX_SetVCount to prevent it from being used in a manner similar to those listed below, since there is a danger that such forms of usage could have a detrimental effect on the LCD.


Note 46-09: (GX) Corrected the Sub_Double3D Sample Demo

When double-screen 3D is used and separate fogs are set for each screen, there is a problem where the fog settings for the top and bottom screens become out-of-sync if a heavy processing loads exist. These fog settings and code for handling the problem has been added to $NitroSDK/build/demos/gx/UnitTours/Sub_Double3D.


Note 46-10: (MB) Updated Debugging Program for DS Download Play Child Devices

Updated $NitroSDK/bin/ARM9-TS/ROM/mb_child.srl so that execution controls have become possible when starting in a debugging environment.


Note 46-11: (MB) Added the MB_FakeSetCompareGGIDCallback Function

Added the MB_FakeSetCompareGGIDCallback function so when searching for multiple GGID's from a pseudo-multiboot child, the beacon determination method may be arbitrarily set as a callback.


Note 46-12: (MI) Revised the MI_SetMainMemoryPriority Function Reference

Added a cautionary note to the MI_SetMainMemoryPriority function reference.


Note 46-13: (MI) Added Device Access Utility Function

Created the MIDevice and MICache structures, and added functions to operate on them, to serve as utilities to control devices such as ROM.


Note 46-14: (MIC) Added to MICAutoParam Structure Description in the NITRO-SDK Function Reference Manual

A note about using buffer loops has been added to the MICAutoParam structure reference.


Note 46-15: (MIC) Corrected the mic-2 Sample Demo

Made revisions so that the sample demo now operates normally using the loadrun.exe tool. This was done because the description of the sampling.bat script, which saves the execution results of the mic-2 sample demo in WAV files, was old.


Note 46-16: (MTX) Cleaned Up Matrix Functions

Cleaned up the internal implementation of the following matrix functions, and moved the functions themselves from the GX library to the MTX library.
The function specifications have not changed.


Note 46-17: (OS) Revised the OS_ResetSystem Function

Fixed a bug in which the stack of the thread calling OS_ResetSystem would be destroyed during a reset if the stack existed in the region where the ROM was loaded.

Because the stack of the main thread is in DTCM, this bug would not occur if calling the OS_ResetSystem function from the main thread, (even) without changing the location of its stack.


Note 46-18: (STD) Added Formatted String Functions

The following formatted string output functions have been added:

These functions have the same specifications as the functions of the same name provided by the OS library.
The existing OS functions have been retained for compatibility reasons, but internally they have been changed to simply call the corresponding STD function.


Note 46-19: (TOOL) Corrected a Problem with Processing SearchSymbol Statements in makelcf's SPECFILE

A bug existed where the makelcf command would output an invalid LCF if multiple parameters were specified in SearchSymbol statements in makelcf's SPECFILE. Revised the makelcf command and the standard LCF template to support multiple parameters.


Note 46-20: (TOOL) Added Official Support of 2Gbit ROM by makerom

Temporary support for 2Gbit ROMs described in Note 39-18 has become official.


Note 46-21: (WFS) WFS Library Test Release

Released a test version of the WFS library that uses MP communications to offer file systems from parent to child devices.
This library is a repackaging of the sample module that has been included under $NitroSDK/build/demos/wireless_shared/wfs.

Currently, as this is a test release, the following known issues exist:


Note 46-22: (WM) Added to the Description Regarding Conditions for Issuing WM_ERRCODE_OVER_MAX_ENTRY

Added descriptions regarding conditions for issuing WM_ERRCODE_OVER_MAX_ENTRY to the following files:


Note 46-23: (WM) Changed the Effect of the Value set by the WM_StartMPEx Function to a Temporary One

Since the setting values, such as ignoreFatalErrorMode, specified by WM_StartMPEx would be maintained by WM_EndMP even if leaving MP mode, the previous settings would be used the next time that WM_StartMP was called.
As a result, the ignoreFatalErrorMode value, set internally by the MP library, would become TRUE when MP communications was started by a call to WM_StartMP while using MB_EndToIdle.
In order to keep this problem from occurring, WM_StartMP has been accordingly changed to not use the various MP setting values specified by arguments to WM_StartMPEx.
Instead, use WM_SetMPParameter to explicitly change the default setting values that are used when WM_StartMP is called.
Furthermore, these MP setting values are initialized when functions such as WM_Initialize and WM_Enable are called.


Note 46-24: (WM) Changed the Option Processing of the WM_StartMPEx Function

WM_StartMPEx has been changed to ignore the fixFreqMode specification when mpFreq is 0, indicating continuous transmission mode.


Note 46-25: (WM) Corrected a Bug in MP Communications with the Wii

Regardless of the signal environment, there were times when communications were cut off due to MP lifetime expiration when a Wii was the MP parent device. This has been corrected.


Note 46-26: (WM) Added the wmPadRead-child Demo

Added wmPadReach-child. This child device program is distributed by the mpdldemo/mpdlntr2rvl demo included in RevoEX, a development kit offering Wii network functionality.


Known Issues in NITRO-SDK Version 4.1 PR

None.


* NITRO-SDK Version 4.0 Release Version

(2007/02/15)


Note 45-01: (DevEnv) Unified the source code format

The code style has been unified regarding indents and carriage returns in the library and demos.


Note 45-02: (Misc) Updated Icon Data

The icons related to PictoChat and wireless in the $NitroSDK/data directory have been updated.


Known Issues in NITRO-SDK version 4.0 Release Version

None.


NITRO-SDK Version 4.0 RC

(2007/01/22)


Note 44-01: (ENV) Changed the ENV Library

The necessary casting was not being performed in ENV_STRING(X) and ENV_BINARY(X). This has been corrected.
There had also been unnecessary debug output inside the library functions, but this has been fixed.


Note 44-02: (FX) Added the FX_AsinIdx and FX_AcosIdx Functions

Added the FX_AsinIdx and FX_AcosIdx functions for finding the arcsine and arccosine.


Note 44-03: (GX) Added the GXBg23Control256x16Affine Structure

Added a new structure GXBg23Control256x16Affine, in which the unnecessary reserved area has been deleted from the GXBg23Control256x16Pltt structure.

Following this revision, the G2*_GetBG2Control256x16Affine and G2*_SetBG2Control256x16Affine functions were added to replace G2*_GetBG2Control256x16Pltt and G2*_SetBG2Control256x16Pltt.


Note 44-04: (GX) Revised the GX_SetVCount Function Reference.

Added a note to the GX_SetVCount function reference, and deleted the $NitroSDK/build/demos/gx/UnitTours/VCount demo.


Note 44-05: (MB) Fixed an MB_End Function Bug

After initializing the library with the MB_Init function, there was a bug that caused a forced halt inside the library if the MB_End function was called without calling functions such as MB_StartParent. This problem has been fixed.


Note 44-06: (MB) Corrected the mb_child_simple.srl Program

When using mb_child_simple.srl as the child program for DS Download Play, the program sometimes behaved differently from the actual system after a restart. This bug has been fixed.


Note 44-07: (OS) Fixed the IRQ Handler

When switching threads inside the IRQ handler, there was a bug where a register of a thread that newly entered the execution state would not return from the context where it had been saved. This problem has been fixed.


Note 44-08: (OS) Added a Document Dealing with Creating Programs that Support Extended Languages

Added a document that deals with creating programs that support extended languages in $NitroSDK/docs/TechnicalNotes/AboutExtendedLanguage.pdf.


Note 44-09: (PM) Adjusted the LCD Off Period

On rare occasions, the off period of the LCD became a value that is invalid according to the specifications (under 100 ms). This has been corrected.


Note 44-10: (TOOL) Added a description of the makebanner reference manual

Added explanations for applications developed for China and Korea to makebanner's reference manual.


Note 44-11: (TOOL) Changed the Default IRQ Stack Size of makelcf

The default IRQ stack size when the StackSize parameter is omitted in the makelcf tool was changed from the original 1024 bytes to 2048 bytes.


Known Issues in NITRO-SDK Version 4.0 RC

None.


NITRO-SDK Version 4.0 PR

(2006/11/27)


Note 43-01: (CARD) Fixed a Bug that Caused Image Distortion when Removing a DS Card during DMA Transfer

When the DS Card was removed during a DMA transfer, the image occasionally became distorted. This problem has been corrected.


Note 43-02: (CARD) Fixed a Bug in the Card Removal Detection Method

All card removal detection until now has been performed through a card interrupt. This has been changed so that card removal will be detected through either a card interrupt or the card ROM-ID based on the "prohibit removal detection through card interrupt" flag.

This issue had been observed only when the "prohibit removal detection through card interrupt" flag was explicitly set.


Note 43-03: (CP) Corrected divider.h

A compilation error was observed depending on the include order when $NitroSDK/include/nitro/cp/divider.h was included without using the precompile header. This problem has been corrected.


Note 43-04: (DevEnv) Changed the version of CodeWarrior used for the NITRO-SDK package build

The version of CodeWarrior used for building the NITRO-SDK package was changed to 2.0SP1.


Note 43-05: (DevEnv) enum Changed to Always be the Size of int

When compiled without checking the Enums Always Int item in the IDE language setting, the enum size may become different from the size of the int type, changing the structure size. Changes have been made so that enum will always be defined to be the size of int.


Note 43-06: (GX) Revised the G3*_Vtx10 Function Reference.

An error was corrected in the Description section of the G3*_Vtx10 NITRO-SDK Function Reference Manual page.


Note 43-07: (MB) Fixed an Issue with Closing the Cover and Removing the Card during Download

When the cover was closed and the card was removed while running a DS download play with MB_SEGMENT_BUFFER_MIN specified as the buffer size of the MB_ReadSegment function, the MB library was forcibly stopped. This problem has been corrected.


Note 43-08: (MB) Added the MB_FakeSetVerboseScanCallback Function

The MB_FakeSetVerboseScanCallback function has been added, allowing notification of all received live beacons when scanning for beacons from multiboot parents, using the MB_FakeStartScan function.
This function allows simultaneous acquisition of beacons from non-multiboot parents.


Note 43-09: (OS) Changed the OSOwnerInfo Structure and the OS_GetOwnerInfo Function

Changes have been made for members' nickName and comment of the OSOwnerInfo structure so that two bytes each will be allocated for termination code.
The OS_GetOwnerInfo function has also been changed so that a termination code is inserted.


Note 43-10: (OS) Adjusted the V count of the OS_Init Function

Added wait so that the V count value is always constant after running the OS_Init function.


Note 43-11: (OS) Added the OS_TPrintfEx, OS_TVPrintfEx, and OS_VSNPrintfEx Functions

Added the OS_VSNPrintfEx function, which is the OS_VSNPrintf function with the byte sequence output feature added, as well as the OS_TPrintfEx and the OS_TVPrintfEx functions that call it.


Note 43-12: (OS) Added Korean Support for Extended Language Codes

Korean has been added as an extended language code.
Also, $NitroSDK/build/demos/os/forKorea-1 has been added as a sample of creating a Korean application.


Note 43-13: (PM) Fixed a Bug Preventing System Power Down if a Card was removed during Stream Playback

The revision in Note 36-13 caused a bug that prevented the system from turning off when a card was removed while performing a stream playback, even if the cover was closed. This problem has been fixed.


Note 43-14: (SND) Made the SND_FlushCommand Function Thread-safe

Previously, the SND_FlushCommand function was not thread-safe. This problem has been fixed.


Note 43-15: (STD) Corrected the STD_CopyLString and STD_CopyLStringZeroFill Functions.

The STD_CopyLString function and the STD_CopyLStringZeroFill function were not returning the correct value. This problem has been corrected.


Note 43-16: (STD) Added Character Class Support for Scanf Functions

Added character class as a supported format for the string scan function group (such as STD_TSScanf).


Note 43-17: (TOOL) Support for Changes to the Bash Specification

The linefeed code of the bash script in $NitroSDK/tools/bin has been changed from CRLF to LF to match the change in the bash specification.


Note 43-18: (TOOL) Changed the Description on the makerom Reference Page

Added a description of the effective range of the configuration parameter for the Reject line.


Note 43-19: (WM) Corrected Sample Demos

The following changes have been made to the wh sample library in $NitroSDK/build/demos/wireless_shared.

In addition, in the $NitroSDK/build/demos/wm/wireless-all and $NitroSDK/build/demos/mb/multiboot-Model sample demos, if another download child attempted to connect to a multiboot parent right before a multiboot child started reconnecting to a parent, the second child was considered connected for a short time, even if the TGID was different. As a result, the proper child could be rejected. This bug has been fixed by allowing multiple reconnection attempts in such cases.


Known Issues in NITRO-SDK Version 4.0 PR

None.


* NITRO-SDK Version 3.2 Release Version

(2006/08/28)


Note 42-01: (CARD) Corrected function reference page for CARD_GetRomHeader.

Added a note that CARD_GetRomHeader can obtain the correct information only with the production DS.


Note 42-02: (GX) Corrected AntiAlias Sample Demos

The antialias ON/OFF display in the sample demo $NitroSDK/build/demos/gx/UnitTours/AntiAlias was incorrectly displayed in the initial state (and only in the initial state). This problem has been fixed.


Note 42-03: (OS) Added Buffer Overflow Check for Function Cost Calculation

Added the OS_CheckFunctionCostBuffer and OS_CheckStatisticsBuffer functions to check whether the buffer used for the function cost calculation is full.


Note 42-04: (PM) Corrected Issues Associated with Card Removal during Wireless Communication

The backlight occasionally turned off when a DS card was removed during wireless communications. This problem has been fixed.


Note 42-05: (WM) Corrected Sample Demos

The following changes have been made to the individual sample library $NitroSDK/build/demo/wireless_shared.


Known Issues in NITRO-SDK version 3.2 Release Version

None.


NITRO-SDK Version 3.2 RC2

(2006/08/17)


Note 41-01: (CARD) Corrected the Console Not Powering Down with Card Removal during Wireless Communication

The DS would not power down properly when a DS card was removed during wireless communications with the cover closed. This problem has been fixed.


Note 41-02: (CP) Added Wait Processes Inside the CP RestoreContext Function

When the status of a divider was restored using the CP_RestoreContext function inside an interrupt, the status of the divider was occasionally not completely restored at the completion of the interrupt.

To correct this issue, a wait was added in the CP_RestoreContext function.


Note 41-03: (CP) Added a Note about the Use of Dividers inside Interrupts

The precautions regarding the use of CP functions inside interrupts were included only on the NITRO-SDK Function Reference Manual pages for the CP_SetDiv function, the CP_SetSqrt function, and the CP_RestoreContext function. A caution and sample code were added to the CP overview page and the NITRO-SDK Function Reference Manual pages for the other CP functions.

Furthermore, a link to this precaution was added to all the NITRO-SDK Function Reference Manual pages of functions that use a divider internally.


Note 41-04: (CTRDG) Corrected a Problem Related to Hot-swapping Cartridges

If a soft reset was performed with a Game Pak inserted after first powering up without one, that Game Pak would actually be recognized. This occurred due to the fact that the Game Pak recognition was performed at the time of the soft reset in addition to the usual DS startup. This problem has been fixed.


Note 41-05: (OS) Added the OS_SleepThreadDirect Function

The function OS_SleepThreadDirect, capable of putting a specified thread directly into Sleep Mode, has been added.


Note 41-06: (OS) Changed Internal Thread Switching

Made changes so that the thread switching process of the OS_RescheduleThread function is executed with interrupts disabled.


Note 41-07: (OS) Adjusted V Count at Time of Startup

Added a wait process so that the default V-count value is constant at program startup.


Note 41-08: (PRC) Made Processing Related to Dividers Thread Safe

Some code in the PRC SuperFine algorithm was using the divider without having interrupts disabled. This problem has been fixed.


Note 41-09: (STD) Changed Specifications of Character Code Conversion Functions

Function specifications have been changed so that the number of source characters that have actually been converted can also be retrieved in the same manner as the number of characters actually stored after conversion.


Note 41-10: (WBT) Fixed the WBT_CMD_REQ_GET_BLOCK_DONE Notification Bug

The WBT_CMD_REQ_GET_BLOCK_DONE notification was not being issued at the time of completion. This occurred when using the WBT_CMD_PREPARE_SEND_DATA notification with a NULL buffer specified for the WBT_RegisterBlock function. This problem has been fixed.


Note 41-11: (WBT) Corrected Sample Demos

It was not possible to manage the connection status normally with the $NitroSDK/build/demos/wbt/wbt-1 sample demo when disconnection and connection was carried out repeatedly and the same mode was selected two or more times. This problem has been fixed.


Note 41-12: (WM) Revised the WM_SetWEPKey/Ex Function

The WM_SetWEPKey/Ex function would not function normally if NULL was specified for wepkey when the wepMode was WM_WEPMODE_NO. This problem has been fixed.


Note 41-13: (WM) Changed the Reset processing of wepMode

The wepMode would not reset in certain cases, such as when the status changed from parent to child. This problem has been fixed.


Note 41-14: (WM) Corrected a Problem Related to wepMode Settings

A bug was found where the wepMode of the parent attempting a connection was being set to the child side. This has been changed to reflect the value of WM_SetWEPKey/Ex function called from the child.


Note 41-15: (WM) Corrected Sample Demos

The following changes have been added to the wh sample library located in $NitroSDK/build/demo/wireless_shared.


Known Problems with NITRO-SDK Version 3.2 RC2

None.


NITRO-SDK Version 3.2 RC

(2006/07/25)


Note 40-01: (CARD) Corrected the Issue with the Console Not Powering Down With Card Removal

In certain instances, the console did not power down when the card was removed with the clamshell closed.
This problem has been corrected.


Note 40-02: (DevEnv) Flaw in the ITCM/DTCM Size Check Using Template Files

During the ITCM/DTCM allocated area overflow check using the lcf template file, the allocated area had been calculated as non-overlapped. This was still seen when an overlay area was configured in ITCM/DTCM and the area was actually overlapped through the use of overlays.
In certain cases, this resulted in errors when free space was still available.

Because the ITCM/DTCM size check process with added overlay is currently not implemented very well in the lcf template, the overlay area will not be part of the used area check.

For this reason, those who create applications must pay careful attention to the management of the size of the overlay region on ITCM/DTCM.
Specifically, attach a dummy variable at the end of the ITCM/DTCM region and check whether the variable address is out of bounds.


Note 40-03: (MATH) Corrected the MATHCompareFunc function reference page

In the NITRO-SDK Function Reference Manual documentation for MATHCompareFunc, the description given under "Return Values" was the opposite of what should have been written. This problem has been fixed.


Note 40-04: (MATH) Changed the MATH_QSortStackSize Function

Following the changes described in Note 39-05, the MATH_QSortStackSize function was changed to not return a value less than or equal to 0.


Note 40-05: (MB) Corrected multiboot-PowerSave Sample

In the $NitroSDK/build/demos/mb/multiboot-PowerSave sample, the MB_SetPowerSaveMode function was not actually being called. This problem has been fixed.


Note 40-06: (MB) Changed the Runtime Defaults

The default lifetime value used for wireless control within the MB library is now the same as that set for the WM library.


Note 40-07: (STD) Changed the Character Code Conversion Functions

The following modifications have been made to the character code conversion functions.


Note 40-08: (VIB) Changed the VIB Library

The following modifications have been made to the VIB library.


Note 40-09: (WM) Corrected Sample Demos

The WH_SetSsid function has been added to the WH sample module in $NitroSDK/build/demo/wireless_shared/wh.


Note 40-10: (WM) Prohibited New Connections When Communication Ends

When terminating a parent using the WM_EndParent and WM_Reset functions, a new child would sometimes connect immediately after the parent disconnected as part of termination processing. The specifications have changed so that the newly connected child is now automatically disconnected in such cases.
The WM_DISCONNECT_REASON_NO_ENTRY notification will be sent to the child as the reason for that disconnection.


Known Issues in NITRO-SDK Version 3.2 RC

None.


NITRO-SDK Version 3.2 PR

(2006/07/07)


Note 39-01: (CARD) Corrected Card Pull-out Detection

Automatic DS card removal detection did not work properly on the ARM7 processor side if a DS card was removed immediately after the program started. This problem has been fixed.


Note 39-02: (CTRDG) Changed the AGB Backup Access NITRO-SDK Function Reference Manual Page

Added a note to the documentation of AGB backup access in the NITRO-SDK Function Reference Manual stating that IS-NITRO-DEBUGGER Version 1.66 and earlier cannot properly access the AGB backup device.


Note 39-03: (CTRDG) Revised Documents

Numerous errors were corrected in the following document describing AGB cartridge backup access for the Nintendo DS.

$NitroSDK/docs/TechnicalNotes/AboutAGBBackupforDS.pdf


Note 39-04: (DevEnv) Ended Support of Older CodeWarrior Versions in Shared Definition make System Files

We ended support for the older versions of CodeWarrior, namely, version 1.0.2 and earlier, in the common definition file commondefs.cctype.CW used by the make system.
Consequently, the supported compiler is version 1.2 or later.


Note 39-05: (MATH) Corrected the MATH_QSort Function

The function would not execute normally if the number of pieces of data to be sorted was 0 or 1. This problem has been fixed.


Note 39-06: (MI) Corrected a Problem With Out-of-bounds Access When Using LZ77 Compression

When compressing data using the MI_CompressLZ or MI_CompressLZFast functions, the compression failed if the data after compression was larger than the data before compression. When this occurred, a 1byte out-of-bounds access was seen in the compression target buffer.
This problem has been corrected.


Note 39-07: (MI) Added 8-bit Versions of Endian Conversion Functions

8-bit versions of functions for Endian conversion have been added.
These have been created to standardize the look of the source code. They do not perform an actual conversion.


Note 39-08: (OS) Corrected the OS_InitException Function

Due to an error in the conditions set by the exception handler, there was a problem such that the user-specified exception handler could not be called when a program was executed by loadrun.
This has been fixed so that the correct conditions are used.


Note 39-09: (OS) Changed the Function Cost Calculation

During function cost calculation, an interrupt occasionally recorded a new cost calculation record during the _PROFILE_ENTRY and _PROFILE_EXIT function input/output record save operation. This prevented accurate cost calculations. The issue was circumvented by banning interrupts in the appropriate section of os_functioncost.c.


Note 39-10: (PM) Corrected a Problem Preventing System Power Down After Card Removal While the LCD was turned off

As a result of the changes described in "Note 36-13: (PM), Changes to the PM_ForceToPowerOffAsync function," the device would not power down when a card was removed while the LCD was turned off even if the device was closed because PM_ForceToPowerOffAsync could not be called while interrupts were disabled.
This problem has been fixed.


Note 39-11: (PM) Revised the PM_GoSleepMode NITRO-SDK Function Reference Manual Page

Parts of the description given for PM_GoSleepMode in the NITRO-SDK Function Reference Manual did not follow guidelines. This has been corrected.


Note 39-12: (PM) Corrected a Problem with the RTC Alarm Interrupt after Recovering From Sleep Mode

There have been cases where the RTC alarm interrupt stopped working after recovering from sleep mode if the RTC alarm was not included in the recovery parameter.
This problem has been corrected.


Note 39-13: (STD) Corrected the STD_CopyLString NITRO-SDK Function Reference Manual Page

An error in the documentation for STD_CopyLString in the Function Reference Manual has been corrected.


Note 39-14: (STD) Changed the Specifications of STD_CopyLString and Added STD_CopyLStringZeroFill

The STD_CopyLString function has been changed to operate in the same manner as the strlcpy function since it was implemented under a different specification from the standard strlcpy.
The function return value has been changed from a 'char' type pointer, which indicates the copy target pointer, to an 'int' type value, which returns the length of the source string.

Also, the old STD_CopyLString function, which was implemented differently from strlcpy, has been added as the function STD_CopyLStringZeroFill. The return value has been changed to a value of type int that indicates the string length of the copy source just as STD_CopyLString does.

The difference between these two functions lies in the fact that, if the copy size for STD_CopyLStringZeroFill is larger than the source string, the difference is padded with NULLs.


Note 39-15: (STD) Added Conversion Functions Shift_JIS <-> Unicode

Functions for performing conversion between Shift_JIS and Unicode strings have been added to the STD library.
We have also added the demo, $NitroSDK/build/demos/std/unicode-1, to show how to use these functions.


Note 39-16: (TOOL) Support for new overlay-related function with CodeWarrior 2.x.

Beginning with CodeWarrior 2.x, a symbol search target overlay group may be specified when linking.
The lsf file format was extended and the SearchSymbol command supported in order to support this feature.

The makelcf command and lcf template file were also modified in line with this change.
For details, see the makelcf manual.

With this change, CodeWarrior 2.0 is now officially supported.


Note 39-17: (TOOL) Changed the compstatic Tool Reference Page

A description of the -f option has been added to the documentation for the compstatic tool in the Function Reference Manual.


Note 39-18: (TOOL) Support for New 1 Gbit/2 Gbit ROMs for makerom

Part of the ROM format has been changed to support the new 1Gbit/2 Gbit ROMs. For a ROM image of 1Gbit or larger, a fixed size area of the top level became a system reserved area.
Beginning with NITRO-SDK 3.2 PR, the ROM format output that conforms to this new specification will be the default setting for makerom.

Add -V1 to the makerom options to output a ROM image in the old format that was used before NITRO-SDK 3.2 PR.


Note 39-19: (TOOL) Added Checking for Valid Combinations of ROM Parameters

We have made an addition to the rsf file, which specifies the operation of the makerom tool, to check whether the given RomSize and RomSpeedType combination can actually be made into a ROM.

If the RomSpeedType is MROM, the RomSize must be 512 Mbit or less.
If RomSpeedType is 1TROM, the RomSize must be 128 Mbit or more.


Note 39-20: (WM) Changed the WFS Sample Demo

Added the following modifications to the WM sample demo.


Note 39-21: (WM) Changed the WM_EndDataSharing Function.

The state check inside the WM_EndDataSharing function has been deleted in line with the change described in Note 39-23.


Note 39-22: (WM) Adjusted the Link Level Value When Communicating With the Wii Console

The link level value that can be retrieved using the WM_GetLinkLevel function has been adjusted for situations where a Wii console is the MP parent.


Note 39-23: (WM) Corrected Sample Demos

A process for calling the WM_EndDataSharing function has been added inside both the wc and wh Reset functions. This was done because the WM_EndDataSharing function was not called by either the wh or wc sample libraries located under $NitroSDK/build/demo/wireless_shared.


Note 39-24: (WM) Corrected a Problem with Initialization and Shutdown Functions

When a WM library function was called from a different thread or an interrupt handler during the execution of the WM_Init function, initialization was taken to be completed even if it was not. This created the risk of unexpected or illegal operations.
A similar state management problem was seen in the WM_Finish function as well.
These problems have been fixed.


Note 39-25: (WM) Corrected a Problem with Port Callback Initialization inside the Initialization Function

A problem with the port callback initialization in WM initialization function resulted in unnecessary warnings. This problem has been fixed.


Note 39-26: (WM) Corrected Illegal Operations during Disconnection

The internal state of WM would occasionally become invalid if repeated connections and disconnections were made frequently. This problem has been fixed.


Known Issues in NITRO-SDK Version 3.2 PR

None.


* NITRO-SDK Version 3.1 Release Version

(2006/05/02)


Note 38-01: (CARD) Made Changes Regarding DMA Transfer from ROM

Variables adjacent to the transfer destination buffer used for DMA transfer from ROM were being affected by cache operations if the buffer cache line was not aligned on a 32-byte boundary. This has been corrected.


Note38-02: (CTRDG) Added AGB Backup Access Functions

Added functions to the CTRDG library to access the backup device installed in the AGB cartridge.


Note 38-03: (CTRDG) Added the CTRDG_SetPhiClock and CTRDG_GetPhiClock Functions

The CTRDG_SetPhiClock and CTRDG_GetPhiClock functions have been created for setting and getting the clock value output from the PHI terminal of the cartridge.
MI_SetPhiClock and MI_GetPhiClock provided the same functionality in previous versions, but this was changed to CTRDG_ when categories were reviewed.

Even for internal operations, the CTRDG_SetPhiClock function was changed to set the clocks of both the ARM7 and the ARM9.
Previously, it changed only the setting of the ARM9. However, the clock output pattern would change when moving the cartridge access right to the ARM7.

The operation of the CTRDG_GetPhiClock function for getting the clock settings is the same as the MI-GetPhiClock function.


Note 38-04: (FS) Internally Changed the ROM Archive

Processing would not complete if the callback function set using CARD_SetPulledOutCallback returned FALSE and an attempt was made to access ROM files using a function like FS_OpenFile before the CARD_TerminateForPulledOut function could be called. This problem has been corrected.

This problem did not occur when loading a file table into memory using FS_LoadTable.


Note 38-05: (FX) Changed the FX_Mul Function

Changed FX_Mul so that a message was displayed by SDK_WARNING if digits overflow.
Additions were also made to the function reference page.


Note 38-06: (FX) Changed the VEC_Normalize Function

Correct results could not be obtained when the value passed to this function was greater than a particular value. It was changed so that a message is displayed by the SDK_WARNING macro when the value is greater than that particular value. This problem has been fixed.
Additions were also made to the NITRO-SDK Function Reference Manual page.


Note 38-07: (GX) Added a Description to the NITRO-SDK Function Reference Manual Page for G2_SetBlendAlpha

Added a note to the NITRO-SDK Function Reference Manual page for the G2_SetBlendAlpha function that a backdrop cannot be specified for the first target screen.


Note 38-08: (MATH) Corrected the MATHCompareFunc function reference page

This function is used when sorting using the MATH_QSort function. A note was added to the NITRO-SDK Function Reference Manual page for MATHCompareFunc stating that 0 must be returned if the two elements being compared are equal.


Note 38-09: (MI) Corrected the Compression Problem with the MI_CompressLZ Function

The problem where out-of-bounds access would occur during LZ compression that was revised in Note35-04 is not reflected in MI_CompressLZ, which is the low-speed version of the LZ compression function.
This problem has been corrected.


Note 38-10: (OS) Changed the OS_GetConsleType Function

A problem was corrected where OS_GetConsoleType might return a value that differs from that described on the function reference page.


Note 38-11: (OS) Corrected the exceptionDisplay-2 Sample Demo

When using CodeWarrior 2.0 in the $NitroSDK/build/demos/os/exceptionDisplay-2 sample demo, the required function would be dead stripped. This problem has been corrected to explicitly prevent the dead stripping.


Note 38-12: (PRC) Corrected Figure Dictionary Data for the Demo

The stroke order for the Japanese character "GE" in the demo figure dictionary data was incorrect. This problem has been corrected.


Known Issues in NITRO-SDK version 3.1 Release Version

- Provisional support for CodeWarrior 2.0. However, accompanying changes will have no effect on current applications.
We plan to officially support the extended language codes in the next release.


NITRO-SDK Version 3.1 RC

(2006/04/11)


Note 37-01: (CARD) Made Card Library Compatible with New Backup Devices

Made the Card Library compatible with the 8 MB Flash Backup Device. Added CARD_BACKUP_TYPE_FLASH_8MBITS to the CARDBackupType enumerated type.

The NITRO-SDK Function Reference Manual and sample demos were updated accordingly.


Note 37-02: (DevEnv) Added .itcm.bss/.dtcm.bss/.wram.bss Section

Data placed in a .bss section that did not include initial values was accidentally being placed in the .data section. This occurred because a .bss section had not been specified in the .itcm/.dtcm/.wram section.

Changed $NitroSDK/build/tools/makelcf and $NitroSDK/include/nitro/section.h. Changed the .template files found under $NitroSDK/include/nitro/specfiles and $NitroSDK/build/components/ichneumon. Added a .bss section to .itcm/.dtcm/.wram.


Note 37-03: (DevEnv) Revised modulerules.cctype.CW

A NITRO-SDK build error would sometimes occur depending on the version of the sed command that was run. This problem has been corrected.


Note 37-04: (FX) Added MTX_Copy* Functions to the NITRO-SDK Function Reference Manual

Added descriptions of the MTX_Copy* functions to the FX category of the NITRO-SDK Function Reference Manual.
The following were added to the NITRO-SDK Function Reference Manual:


Note 37-05: (GX) Added G3OP_DUMMY_COMMAND

Added 0xFF, an undefined geometry command, as the dummy command G3OP_DUMMY_COMMAND.


Note 37-06: (GX) Changed the Geometry Command Cycle List

It has been confirmed that the number of command cycles corresponding to each source increases when an environment map is used.
Information about this was added to the geometry command cycle list in the NITRO-SDK Function Reference Manual.


Note 37-07: (MI) Added Endian-aware Memory Access Functions

Added a group of functions for reading and writing memory with full awareness of little-endian and big-endian issues.


Note 37-08: (OS) Corrected OS_CheckHeap

An error would be returned if the heap handle specification was OS_CURRENT_HEAP_HANDLE.
This problem has been fixed.


Note 37-09: (OS) Changed Arena Overview

Corrected a mistake in the graphic about arena management and memory allocation in the OS arena overview in the NITRO-SDK Function Reference Manual. Also added descriptive text.


Note 37-10: (OS) Added 8-byte Alignment Support for the Stack

Adjusted stack processing so that the stack pointer is always aligned on an 8-byte boundary during a function call.


Note 37-11: (PM) Corrected the PM_ForceToPowerOff and PM_ForceToPowerOffAsync Functions

Corrected a problem with the specification changes given in Note 36-13.


Note 37-12: (SND) Added the SND_SetTrackMuteEx Function

Added the SND_SetTrackMuteEx function for selecting the processing to apply to a sound that is played while a sequence track is muted.


Note 37-13: (TOOL) Changed the NITRO-SDK Function Reference Manual Page for attachsign

Changed the description for getting the authentication code on the NITRO-SDK Function Reference Manual page for the attachsign tool.


Note 37-14: (TOOL) Corrected Problem With PPM Files Not Loading Using the ppmconv Tool

When an attempt was made to convert ppm files created with Photoshop (using a NetPBMformats plug-in), the message "Cannot convert file "xxxx.ppm" was displayed and conversion failed.
The problem was due to the fact that the processing implemented for analyzing file headers did not fully cover ppm specifications.

This problem has been fixed.
Several ppm files that could not be converted previously can now be converted.
This fix has no impact on the ppm files that could already be converted correctly.


Note 37-15: (VIB) Changed the pulse_vib Sample Demo

The SVC_WaitVBlankIntr function, which was deleted from the source code for all sample demos in the NITRO-SDK (as described in Note 36-15), was being used in the pulse_vib sample demo. Consequently, this function was changed to OS-WaitVBlankIntr.
Furthermore, the specifications were changed so that the sample does not stop even if parameters that violate restrictions on the Rumble Pak library are entered.


Note 37-16: (WM) Corrected the dataShare-Model Sample Demo

If the number of children specified by the user (WH_CHILD_MAX) was less than WM_NUM_MAX_CHILD, the WM_GetSharedDataAddress function would be called instead of WH__CHILD_MAX. This problem has been fixed.


Note 37-17: (WM) Added the wireless-all Sample Demo

Added the sample demo $NitroSDK/build/demos/wm/wireless-all to show the comprehensive use of WM library functions.


Note 37-18: (WM) Corrected Sample Demos

Added the following modifications to the WM sample demo.


Known Issues in NITRO-SDK Version 3.1 RC

- Added a series of functions to the CTRDG library for accessing the backup device installed in the AGB cartridge.
However, correction functioning is not guaranteed because verification of these newly added AGB backup access functions is not complete.
We plan to officially support the extended language codes in the next release.

- Provisional support for CodeWarrior 2.0. However, accompanying changes will have no effect on current applications.
We plan to officially support the extended language codes in the next release.


NITRO-SDK Version 3.1 PR

(2006/03/14)


Note 36-01: (ARM7) Improved Automatic Component Pull-out Detection

In the past, it was not possible to execute pull-out detection of another device when continuously locking one of the card or cartridge buses using the OS_Lock* function over an extended period of time. This has been changed in the current release so that pull-out detection can be performed.


Note 36-02: (CARD) Internal Changes Made to the CARD_CheckPulledOut Function

Specifications have been changed when the CARD_CheckPulledOut function is called multiple times so that a callback function is not called every time. The callback can now be called only once when calling the CARD_CheckPulledOut function or because of ARM7 pull-out detection.


Note 36-03: (CTRDG) Strengthened Access Restrictions to the AGB Cartridge Region

In order to avoid sudden write access to the AGB cartridge region, processing for changing the initial settings of the protection region have been added to the CTRDG_Init function. When writing to a cartridge, cartridge information must be checked and the CTRDG_Enable function must be called.

Note: Processing will be forcibly stopped when outputting a debug string using OS_Printf or another function unless you are using IS-NITRO-DEBUGGER version 1.65, which is compatible with this function.


Note 36-04: (CTRDG) Added the CTRDG_CheckPulledOut Function

The function CTRDG_CheckPulledOut has been added for quick cartridge pull-out detection from the ARM9.


Note 36-05: (GX) Corrected 2D_CharBg_Direct Sample Demos

Changes were made so that correct settings are made by the G2_SetBG3ControlDCBmp function before the GX_LoadBG3Bmp function when using the sample demo $NitroSDK/build/demos/gx/UnitTours/2D_CharBg_Direct.


Note 36-06: (GX) Edited NITRO-SDK Function Reference Manual Description for G2_GetBG2ScrPtr and G2_GetBG3ScrPtr Functions

There were incorrect descriptions of the bitmap BG in the NITRO-SDK Function Reference Manual information for the G2_GetBG2ScrPtr and G2_GetGB3ScrPtr functions. This problem has been fixed.


Note 36-07: (MB) Added MB_FAKESCAN_PARENT_BEACON Notification

MB_FAKESCAN_PARENT_BEACON was added to the events about which the MBFakeScanCallbackFunc callback receives notification. This notification is sent each time an MB parent beacon is received.

In line with this, processing for using the MB_GetUserVolatData function with the sample demos multiboot-Model and fake_child has been added.


Note 36-08: (MB) Corrected the Operation of MB_ReadMultiBootParentBssDesc

The magicNumber and ver members of gameinfo, which should usually be specified inside the MB_ReadMultiBootParentBssDesc function, remained uninitialized. This problem has been fixed.


Note 36-09: (MB) Corrected a Problem With the Number Of Retries When Reconnecting To a Clone Boot Sample Parent

The changes described in Note 20-08: were not applied to the clone boot sample. Further, retry was impossible if even one attempt at connection to the parent failed when reconnecting to a parent after a child's boot. This problem has been fixed.


Note 36-10: (MB) Updated Documentation

The following document about the MB library has been updated.
$NitroSDK/docs/technicalNotes/AboutMultiBoot.pdf


Note 36-11: (MIC) Described Restrictions during Automatic Sampling

A note was added to the NITRO-SDK Function Reference Manual explaining a restriction that does not allow specifying extended main memory as a buffer for storing sampling results when performing microphone auto-sampling. No change has been made to library operations.


Note 36-12: (PM) Corrected the Problem Related to the PMAmpGain Enumeration Type

The constant PM_AMPGAIN_DEFAULT used inside the PM_GAINAMP_DEFAULT macro was not actually defined. This has been corrected and PM_AMPGAIN_DEFAULT has been added to the PMAmpGain enumerator type.


Note 36-13: (PM) Changed the PM_ForceToPowerOff and PM_ForceToPowerOffAsync Functions

When an application attempts to turn off power to the DS unit, the DS main unit will occasionally restart if main power was turned off during the LCD OFF status.
The specifications of the PM_ForceToPowerOff and PM_ForceToPowerOffAsync functions have therefore been changed so that power is turned off after the LCDs are turned on.


Note 36-14: (TOOL) Fixed the Inclusion Order Within ROM When Specifying Files to makerom Using Wildcards

When using wildcards to specify files to be stored in ROM with makerom, the order in which the files were stored depended on the order that the entries appeared in the PC file system. Consequently, the order in which files were stored would change across different PCs regardless of the fact the same application was being built.
This problem was fixed so that files are now sorted by name before being stored when using makerom.


Note 36-15: (VIB) Added VIB Library

The VIB library has been added to control the Rumble Pak option cartridge for the Nintendo DS.


Note 36-16: (WBT) Corrected the WFS Sample Module

We fixed the following problems with the WFS sample module compiled in $NitroSDK/build/demos/wireless_shared/wfs.


Note 36-17: (WBT) Corrected Function Reference

The fact that the following commands can be directly issued from one child to another was described incorrectly in the NITRO-SDK Function Reference Manual. This problem has been fixed.


Note 36-18: (WBT) Added Overview to the NITRO-SDK Function Reference Manual

The item "Overview" was added to the WBT library NITRO-SDK Function Reference Manual page.


Note 36-19: (WM) Changed Specifications Regarding NULL Response from Children during MP Communication

Specifications were changed so that a Null response would not be returned from children in the middle of MP communication as described in Note 30-06. However, this would occasionally result in unstable operations depending on the environment. Consequently, the change described in Note 30-06 has been canceled and the previous specification has been restored.

In addition, instead of allowing Null responses from child devices, if a parent device receives a Null response from a child device, it assumes that the child device had a communication failure.
Since the WM_SetMPInterval function has been added, excess load problems on the child side should not result even if changes are made later on to allow Null responses to be returned.


Note 36-20: (WM) Changed WMGameInfo Structure Definitions

The definition of the WMGameInfo structure has been changed. The version field was eliminated and the name was changed to magicNumber. The magicNumber field is fixed at 0x0001 when used as a DS beacon. In addition, the ver field has been established using one byte from reserved memory.
In the current version, the ver field is always 0. In the future, this will increase as the format of the WMGameInfo structure changes. To ensure backward compatibility in the future, there must be no restriction on operations based on checking the ver field. Due to these changes, it is necessary to re-write programs that accessed WMGameInfo.version.
In addition, the name of the field gameNameCount_attribute has been changed to attribute. Although this field can be accessed using the old name, be sure to use the new field name from now on.

In addition, support of the compile switch WM_GAMEINFO_TYPE_OLD, which is never used, has ended due to this change.


Note 36-21: (WM) Added the WM_IsValidGameBeacon and WM_IsValidGameInfo Functions

WM_IsValidGameBeacon and WM_IsValidGameInfo functions were added to determine whether or not the scan result beacon is that of a DS wireless play parent. Internally, a determination is made whether WMGameInfo.magicNumber is correct. In addition, each WM demo has been changed to use this function.


Note 36-22: (WM) Corrected a Problem With minPollBmpMode

Communications would be discontinued after a set time interval and the MP lifetime would run out when the MP communications option minPollBmpMode was enabled. This problem has been fixed.

Only titles that perform special communications using minPollBmpMode are affected by this problem.


Note 36-23: (WM) Updated Documentation

This document about the WM library has been updated:
$NitroSDK/docs/technicalNotes/AboutWirelessManager.pdf


Note 36-24: (Misc) Corrected the Description of Macros

Corrected the descriptions of macros where () were not attached to arguments.
This change has no effect as long as the arguments being used do not change functionality based on the presence or absence of parentheses.
The following macros have been changed:

Corresponding NITRO-SDK Function Reference Manual pages have also been changed.


Known Issues in NITRO-SDK Version 3.1 PR

None.


* NITRO-SDK Version 3.0 Release Version

(2006/01/16)


Note 35-01: (CARD) Added an Overview to the NITRO-SDK Function Reference Manual

Added overviews to the NITRO-SDK Function Reference Manual pages in the CARD library.


Note 35-02: (DevEnv) Added a Function Reference Page for the packnlf Tool

Added a page for the packnlf tool to the NITRO-SDK Function Reference Manual.


Note 35-03: (DevEnv) Unified the source code format

The code style has been unified regarding indents and carriage returns in the library and demos.


Note 35-04: (MI) Corrected LZ Compression Problems with the MI_CompressLZFast Function and ntrcomp.exe

There was a possibility when using the MI_CompressLZFast function for LZ compression that there would be out-of-bound memory accesses.

The same problem was found in ntrcomp.exe after NITRO-SDK 3.0 RC2. There was also the possibility of unusual termination or a slight increase in the size of compressed data.

These problems have been fixed.


Note 35-05: (OS) Corrected problems in the OS_ResetSystem function

An infinite loop inside the library would result if the cartridge bus was locked when the OS_ResetSystem function was called because this function internally accesses cartridges. This problem has been fixed.
This problem appears only in NITRO-SDK 3.0 RC3.


Note 35-06: (OS) Edited the Chinese Version Startup Screen

Changes described in Note 32-23 resulted in the display of garbage characters on the startup screen. This problem has been fixed.


Note 35-07: (PRC) Corrected Figure Dictionary Data for the Demo

The stroke order of the Japanese character "KE" in the figure dictionary data for the demo was wrong, so "KE" in the figure dictionary demo was corrected.


Note 35-08: (WM) Corrected the Debug String Display in the Sample Demo

Changed the debug output of the wh, wfs, and wc sample libraries in $NitroSDK/build/demo/wireless_shared to display "0x" before hexadecimal numbers.


Note 35-09: (WM) Changed Internal Communication Parameters

MP communications could fail easily depending on the environment. Improvements were consequently made by making changes to the communications internal parameters.


Known Issues in NITRO-SDK version 3.0 Release Version

None.


NITRO-SDK Version 3.0 RC3

(2005/12/26)


Note 34-01: (MATH) Added Bit Operation Function

The following inline function groups which perform bit operations were added:


Note 34-02: (MB) Fixed a bug that occurred when designating memory conservation with the MB_ReadSegment function

When a small buffer size was designated with the MB_ReadSegment function and the distribution data was dynamically loaded from the archive, block transfer became unable to proceed. This problem has been fixed.


Note 34-03: (MB) Improved MP Communication Effectiveness Under Adverse Conditions

Transfer rates were adversely affected where WM_ERRCODE_SEND_FAILED was issued frequently on the parent device in bad communication environments during block transfers in the MB library. This problem has been fixed.


Note 34-04: (OS) Changed the DC_TouchRange NITRO-SDK Function Reference Manual Page

The ARM946E-S, a CPU on the Nintendo DS, does nothing when the pld instruction is executed. This information has been added to the NITRO-SDK Function Reference Manual page for the DC_TouchRange function, which executes that instruction.


Note 34-05: (OS) Corrected the OS_CreateThread function

Depending upon the initial value of the thread structure initialized with OS_CreateThread, an access exception error would be raised when the thread was executed. This problem has been fixed.


Note 34-06: (WBT) Corrected wbt-1 Sample Demos

A compilation error prevented a correct build when the macro switch NOT_USE_ALLOC in the sample source of the $NitroSDK/build/demos/wbt/wbt-1 sample demo was enabled. This problem has been fixed.


Note 34-07: (WBT) Corrected a Problem With the User Callbacks

The value of the result member of the arguments to the user callbacks that indicates command completion was not being set. This problem has been fixed.


Note 34-08: (WM) Corrected a Problem with MP Communication Parameters

The configuration of each of the MP communication parameters added in 3.0 RC2 was not functioning properly. This problem has been fixed.


Note 34-09: (WM) Made Changes to the Method of Setting the WH-Related Parameters

Previously, all of the SDK demos that used WH referenced $NitroSDK/build/demos/wireless_shared/wh/wh_config.h directly and had shared configurations. Now, each demo has its own individual configuration.
Because of this change, the location of wh_config.h has been changed to $NitroSDK/build/demos/wireless_shared/wh/default/.


Note 34-10: (WM) Improved Internal Operations during Disconnect

Internal operations are sometimes affected immediately after a disconnect. The WM library was modified to address this.


Known problems with SDK 3.0 RC3

None.


NITRO-SDK Version 3.0 RC2

(2005/12/05)


Note 33-01: (CARD) Corrected Problem with Backup Operation Function

CARD_RESULT_TIMEOUT can be returned even if the backup write succeeds if the backup write is small and it executes during wireless communication. This problem has been fixed.


Note 33-02: (CTRDG) Added Access Permission Functions for AGB Cartridges

Added the following group of functions for controlling access permissions to AGB cartridges.


Note 33-03: (DevEnv) Added a Macro For Comparing SDK Versions

Added the SDK_VERSION_NUMBER macro for converting the SDK version to a numeric value.
Also added the constant SDK_CURRENT_VERSION_NUMBER to represent the current SDK version.


Note 33-04: (DevEnv) Added SDK_INLINE and SDK_DECL_INLINE

Added SDK_INLINE and SDK_DCL_INLINE as macros for specifying inline functions.
This allows the format of inline specifications to be changed all at once.
The entire NITRO-SDK must be rebuilt if these macros are changed.

Code size can be reduced by changing these macros from static inline to inline. This applies only when using the environment with the compiler version in which the inline function problem was fixed and only when using functions that changed from inline to static inline.

Since changing these macros could produce uncertain results, base the decision to use them on the needs of the application.


Note 33-05: (DevEnv) Corrected the makebanner Tool

Strings could not be included in a banner file if the start of the game title or descriptive text happened to match a specified parameter described in the bsf file used by the makebanner tool. This problem has been fixed.


Note 33-06: (DevEnv) Updated ntexconv

$NitroSDK/tools/bin/ntexconv.exe has been updated to the version of netconv.exe inside the latest release of the TXLib package.
Although the functioning of the SDK does not change because ntexconv.exe is used only during the creation of icon images, the version of ntexconv.exe in the SDK can now be used even when creating textures.


Note 33-07: (DevEnv) Added the packnlf Tool

The paknlf tool has been added. This tool collects all file specifications referenced by a .nlf file as absolute paths and outputs them as a ZIP file.

Although this tool was included it NITRO-SDK 3.0 RC, it was not mentioned in the changelog.


Note 33-08: (MB) Corrected the MBP Sample Module

The following correction was made to the MBP sample module included in $NitroSDK/build/demos/wireless_shared/mbp:


Note 33-09: (MB) Added MB_FAKE_WORK_SIZE Definition

The buffer size required to call the MB_FakeInit function has been defined as MB_FAKE_WORK_SIZE. This value is defined as the size of the data retrieved by the conventional MB-FakeGetWorkSize function.


Note 33-10: (MB) Corrected Problem With the Parent Beacon Flag

Applications could fail to detect that they were sharing the same GGID when using wireless play and download play. This could happen because the WM_ATTR_FLAG_MB flag remained disabled while only the WM_ATTR_FLAG_ENTRY flag was enabled for the first beacon that was sent by an MB parent device.


Note 33-11: (MI) Added the MI_CompressLZFast Function

The function M_CompressLZFast, which requires a work buffer of about 9 kB, has been added to perform LZ compression at rates several times faster than MI_CompressLZ, the function that has been available for LZ compression.


Note 33-12: (OS) Added an Automatic Build Switch for ARM7 Debug Output

NITRO_ENABLE_ARM7_PRINT has been added as a build switch for setting the debugger to automatically call the OS_InitPrintServer and OS_PrintServer functions from inside the OS library.
Standard specifications are used if this switch is not specified.

This build switch is enabled only for the OS library. The OS library must be rebuilt if the setting is changed.


Note 33-13: (OS) Changed the Definition of the V-Blank Wait Function

SVC_WaitVBlankIntr does not release resources to low-priority threads. Since this would cause problems depending on how the function was used, a call to SVC_WaitVBlankIntr is now automatically replaced by a call to OS_WaitVBlankIntr. Note, however, that this replacement is made using defines inside a header file. The desired result is achieved only after the first rebuild.

The result of this change is actually a slight increase in overhead until V-blank interrupt wait operations are executed. Although there is almost no effect on application behavior, if you must use conventional system calls for some reason, you can disable this change by defining the environment variable NITRO_SVC_WAITVBLANK_COMPATIBLE. Be sure to verify your code thoroughly since the problem with threads remains unresolved if you do this.

or Note 32-18: Although it was reported in Note 32-18: that the SVC_WaitVBlankIntr function could be overwritten by another definition using weak symbols, the original functionality has been restored because the need for weak symbols has now been eliminated.


Note 33-14: (OS) Deleted OS_InitPrintServer and OS_PrintServer From the Sample Demo

Deleted OS_InitPrintServer and OS_PrintServer from all NITRO-SDK sample demo source code.


Note 33-15: (OS) Deleted PXI_Init From the Sample Demo

Deleted PXI_Init from all NITRO-SDK sample demo source code.
Demo operations are not affected by this change.


Note 33-16: (OS) Changed SVC_WaitVBlankIntr in the Sample Demo

The parts of all NITRO-SDK sample demo source code that used to call SVC_WwaitVBlankIntr have been changed to call OS_WaitVBlankIntr.
Demo operations are not affected by this change.


Note 33-17: (OS) Changed the Start Location of Extended Main RAM Arena

0x240000 is used for the lcf template definition even though the start address of the extended main memory arena given on the OS arena overview page is 0x23e0000. (If there is an overlay, an even higher address results.)
The definition 0x23e0000 is used so as to match the information on the OS overview page.


Note 33-18: (WBT) Corrected the WFS Sample Module

We fixed the following problems with the WFS sample module compiled in $NitroSDK/build/demos/wireless_shared/wfs.


Note 33-19: (WBT) Changed the WFS-related Sample Demo

Processing inside the sample demo below, which uses the WFS sample module, has been changed so that parent disconnections during a read by a child calling FS_ReadFile can be detected.


Note 33-20: (WM) Corrected the 2D_CharBg_3 and Sub_CharBg_3 Sample Demos

Corrected a problem in the $NitroSDK/build/demos/gx/UnitTours/{2D_CharBg_3,Sub_CharBg_3} sample demo where execution would stop due to an ASSERT if the object was shrunk too much.


Note 33-21: (WM) Added a Timing Configuration Function for MP Communication

Previously, the V alarm count was fixed at 260 for the parent and at 240 for children during frame synchronous communication mode when beginning to prepare the first MP communication of each frame. The WM_SetMPTiming function has been added to affect this setting. Due to restrictions on the implementation, these values must be set either in the range 220 to 260 or the range 0 to 190.
The ARM7 operates actively during communication processing and frequently blocks the ARM9 from accessing main memory. The average operational performance of the ARM9 can sometimes be improved by adjusting communication timing to help alleviate the situation. The conventional setting values are used as defaults unless other settings are explicitly made.


Note 33-22: (WM) Added a Function to Configure the Send Size for MP Communications

Until now, the size of transmissions sent using MP communication have been fixed at values given by the parentMaxSize and childMaxSize fields of the WMParentParam structure that the parent sets with the WM_SetParentParameter function before communication starts. The parent send size and child send size can be set using the functions WM_SetMPParentSize and WM_SetMPChildSize, respectively.
The send size of the parent and child are initialized to the values set for parentMaxSize and childMaxSize in the WMParentParam structure when the parent executes the WM_StartParent function. Smaller values than these can be set using the WM_SetMPParentSize and WM_SetMPChildSize functions. However, the default initial values cannot be exceeded. Setting the parent send size on the child side is meaningless. However, the setting for the child send size is used to overwrite the child send size setting on the parent side every time MP communications are carried out.
There is not much advantage in changing the setting for parent transmissions since the smaller the amount of data, the shorter the radio signal output. Still, the child side always sends out a radio signal with the number of bytes designated in childMaxSize. Thus, by reconfiguring the necessary size, the transmission time can be reduced and communications can be stabilized. Given the current implementation, if an amount of data larger than the send size (as modified using these functions) has already been configured by the WM_SetMPDataToPort function, that data will not be sent. Instead, it will just continue to collect in the send queue.


Note 33-23: (WM) Added a Spacing Control Function for MP Communication

The function WM-SetMPInterval has been added to allow setting the time interval between one MP communication and the next. This occurs during MP communications in continuous communication mode and beginning from the second transmission in frame synchronous mode. This can be specified independently for the parent and children in units of microseconds.
The default values are 1000 microseconds for the parent and 0 microseconds (no interval) for the children. Throughput can be increased by adjusting this value. However, throughput may also be worsened due to dropped data if the MP communication interval for the parent is shorter than the time it takes the children to process the received data. Generating unnecessary resends will also adversely affect the bandwidth efficiency.


Note 33-24: (WM) Updated the dataShare-Model Sample Demo

A feature for displaying information about the parent to be connected to has been added to the parent list window in the sample demo $NitroSDK/build/demos/wm/dataShare-Model.


Note 33-25: (WM) Corrected the Display of the dataShare-Model Sample Demo

The text output screen displayed at the startup of the sample demo $NitroSDK/build/demos/wm/dataShare-Model would sometimes break. This problem has been fixed.


Note 33-26: (WM) Added a Way to Set the Maximum Number of MP Communications Per Frame

Although the maximum number of MP communications per frame (including resends) used to be fixed at six, this can now be set to other values. Set WMMMPParam.maxFrequency using WM_SetMPParameter. The processing of the fixFreqMode argument by WM_StartMPEx has been changed so that maxFrequency is also set to the value of mpFreq.


Note 33-27: (WM) Changed the Specification for the Receive Signal Strength Level

If a send fails, a correction is applied to the receive signal strength level that can be retrieved by WM_GetLinkLevel. However, this correction is performed differently for the parent than for the children. The receive signal strength level for the parent and for the children can differ greatly even under the same conditions.
To solve this problem, the standard to detect failed transmission of a parent was relaxed. In this way, the reception strength level of the parent became closer to that of the child.


Note 33-28: (WM) Added Option For Disabling the Pre-check of the Send/Receive Buffer Size

A special option has been added to ignore various validity checks (pre-check of the send/receive size setting value, send/receive buffer size, and communication time limit of 5600 microseconds) that were done in the WM_StartMP function. Set WMMPParam.ignoreSizePrecheckMode to TRUE using the WM_SetMPParameter function before calling WM_StartMP.
Combining this feature with the WM_SetMPParentSize and WM_SetMPChildSize functions allows the send size to be adjusted according to changing conditions, such as the number of children that are connected. In the application, do not to exceed the communication time limits or the send/receive buffer size. If the send buffer size is insufficient and an attempt is made by the parent to start MP communications, this will be detected at execution time. If the condition continues, communication will be cut off because of the timeout on MP lifetime.


Note 33-29: (WM) Added a Note Regarding the Wireless Communication Event Counters

Unexpected behavior was reported where several event counters were cleared when accessing buffers located in a particular address space in wireless hardware.
Consequently, the event counters may have a value that is less than the actual event counts.
Some event counters retrieved by WM_GetWirelessCounter may not have the correct values.
Information has been added to the NITRO-SDK Function Reference Manual about this.


Known Problems with NITRO-SDK Version 3.0 RC2

None.


NITRO-SDK Version 3.0 RC

(2005/11/07)


Note 32-01: (CARD) Changed Internal Processing Of EEPROM Device Operations

When an EEPROM device was being used for backup, there was an occasional problem with abnormalities in the initial values of the hardware internal status at startup. A process was added to deal with this issue.


Note 32-02: (CARD) Added Removal Detection after ROM Access

Added detection of whether the card had been removed after every read performed by the CARD_ReadRom function or the CARD_ReadRomAsync function.
As a result, the application will no longer refer to invalid data before it receives a notification of the remove-detection callback.


Note 32-03: (CARD) Made Card Library Compatible with New Backup Devices

Modified the Card Library to support the 4 MB Flash Backup Device. Added CARD_BACKUP_TYPE_FLASH_2MBITS to the CARDBackupType enumerated type.

The NITRO-SDK Function Reference Manual and sample demos were updated accordingly.


Note 32-04: (DevEnv) Corrected the #pragma define_section Parameters

The #pragma define_section parameters were incorrectly written as being delimited by commas, namely:
“#pragma define_section DTCM ".dtcm",".dtcm",abs32,RWX.”
They were changed to be delimited by a space, namely:
“#pragma define_section DTCM ".dtcm" abs32 RWX.”


Correct any other erroneous descriptions like the one above in the same way.


Note 32-05: (DevEnv) Added a Resource Data Conversion Tool for the ENV Library

Added the xml2env tool to convert resource data for the ENV library written in XML format to the C source file format. Also added the init2env tool for converting resource data for the ENV library written in INIT format to the C source file format.


Note 32-06: (DevEnv) Corrected the NITRO-SDK Package Creation Script

In the NITRO SDK 3.0 PR - 3.0 PR4 packages, there was a flaw in the script used when creating packages that resulted in the THUMB version ichneumon components not operating correctly.
This problem has been fixed.


Note 32-07: (DevEnv) Changed the Version of CodeWarrior Used For SDK Package Build

(DevEnv) Changed the version of CodeWarrior used for the SDK package build to 1.2SP1.
Also made it so that the build numbers of the CodeWarrior compiler and linker used to build to $NitroSDK/include/nitro/version.h are recorded.


Note 32-08: (DevEnv) Added a Reference to the Compilation Target

Added an explanation of the compilation target to the function information in the NITRO-SDK Function Reference Manual.


Note 32-09: (ENV) Added a Reference to the ENV Library

Added a reference to the ENV library


Note 32-10: (ENV) Changed the ENV Library

Changed the ENV_Init function. Added the function ENV_AppendResourceSet. Previously, ENVResource was passed as an argument to the ENV_Init function. Now, several ENVResources can be registered.


Note 32-11: (GX) Corrected the G3BS_LoadMtx43 Function

The condition parameters of the ASSERT used by G3BS_LoadMtx43 were wrong. This problem has been fixed.


Note 32-12: (GX) Further corrections to Sub_Double3D sample demo.

The following correction was made to the $NitroSDK/build/demos/gx/UnitTours/Sub_Double3D sample demo:
The correction described in Note 29-02 was not complete and the same symptoms still appeared occasionally. The problem was corrected again and explanations were added as comments to the SwapBuffers command and the geometry engine.


Note 32-13: (MATH) Corrected Problem with the MATH_Qsort Function

There was a bug in the MATH_QSort function. It was possible that some values would not be sorted properly in either ascending or descending order after being sorted.
This problem has been corrected.


Note 32-14: (OS) Corrected the HI Address Calculations for the ARM7-Specific WRAM Arena

If the IRQ stack size on the ARM7 side was set to 0 or was negative, the domain was determined by the first position in WRAM. The cause was a mistake in the HI address calculations of the ARM7-specific WRAM arena.
It should have been based on the end of a program domain which occupies the first position of WRAM.
After the fix, the calculations were correct.

However, since the stack area specification was defined with a positive value in the previous mongoose and ichneumon, there functioning is the same whether before or after the correction.

Since the mongoose and ichneumon SDK attachments are used in typical game applications, they are not influenced by this change.


Note 32-15: (OS) Created the OS_GetTotalOccupiedSize Function

Added the OS_GetTotalOccupiedSize function, which gets the memory size used in the heap.
The existing OS_GetTotalAllocSize function totaled the size of the data area of the memory block being used. The OS_GetTotalOccupiedSize function, on the other hand, also adds in the size of the header portion of the memory block.


Note 32-16: (OS) Corrected the OS_PutString Function

When the FINALROM is built, the OS_PutString function was replaced with unreachable code, but the dead code stripping of the argument was not executed.
This problem has been corrected. Now, none of this function is executed and the dead code stripping of the argument is performed.


Note 32-17: (OS) Added SDK_COMPILER_ASSERT

Conditions are inspected when compiling. The SDK_COMPILER_ASSERT macro was added to generate a compilation error if those conditions are not met.


Note 32-18: (OS) Improved the V-Blank Wait Function

When waiting for a V-Blank interrupt using the SVC_WaitVBlankIntr system call, the thread called for this function does not stop. There is thus a problem that resources are not obtained by lower priority threads while waiting for the interrupt.
The cause is in the system call. The OS_WaitVBlankIntr function was created as an alternative that stops the thread while waiting for a V-Blank interrupt.
Also, the SVC_WaitVBlankIntr function which calls the system call was made into a weak symbol. It was also modified so that it could be overwritten by another definition.


Note 32-19: (OS) Changed the const Argument of the Cache Function

In functions that take as an argument a pointer to a cache operation function that starts with DC or IC, use const for internal operations that do not change the content.

The functions that were changed are:


Note 32-20: (OS) Corrected the Stack Overflow Check Function

In the check stack overflow functions OS_SstIrqStackWarningOffset and OS_SetThreadStackWarningOffest that set the check code in the middle of the stack, the overflow check code set at the bottom of the stack was being overwritten.
For this reason, the stack check was not operating correctly. This problem has been fixed.


Note 32-21: (OS) Support for the Argument Data Buffer Switch

In the ROM image, you can get argument data embedded with the tool command buryarg from the program using functions such as OS_GetArgv function and OS_GetOpt. This argument data buffer can now be changed at run time.
See the OS_SetArgumentBuffer function and the OS_GetArgumentBuffer function.

Also, we have made available the OS_ConvertToArguments function for converting a string to an argument data buffer.


Note 32-22: (OS) Corrected the Actual Time and the Check Value Conversion Macro

The macro that changes both actual time and tick values in functions such as OS_SecondsToTicks and OS_TicksToSeconds was corrected.
Calculations were being done with 32-bit accuracy. When too large argument was given, overflow occurred and the correct value was not returned.

The correction is as follows:

-Internal operations in existing macros have been changed to use 64 bits.

-If you explicitly want to use 32-bit internal operations, the following functions are available:

 


Note 32-23: (OS) Updated the Chinese Version’s Startup Screen

The Chinese version startup screen, which is displayed with OS_InitChina, has been updated.


Note 32-24: (OS) Corrected Thread Queue Operations, Including Threads About To Terminate

When a certain thread registered with the thread queue was terminated by functions such as OS_DestroyThread or OS_KillThread, the information about the thread was removed from the thread queue.
This information includes when that thread terminates another thread while waiting for that thread to end in the OS_JoinThread function.

Until now, deleted thread information remained in the thread queue. As a result, when the OS_WakeupThread function was executed to make all threads in the queue executable, the deleted threads were included also. This caused a bug in the thread list status.
This problem has been fixed.


Note 32-25: (PRC) Corrected the pdic2c.pl Sample Tool

The pdic2c.pl sample tool used with the PRC demo was in an old format. This has been corrected.
Also, an option has been added to output header files and source files to separate files.


Note 32-26: (RTC) Changed the Method for Getting RTC Day of the Week Information

When data including the day of the week is read from the RTC, the day of the week calculated from the date is now returned.
Previously, the value stored in the RTC was returned as is. However, after passing the last date that can be displayed by the RTC -- 12/31/2099 23:59 -- the day of the week information was wrong until the RTC was reset.


Note 32-27: (SND) Corrected a Problem Where SND_CalcDecibel Would Not Return a Suitable Value When Argument 0 Was Entered

With the function SND_CalcDecibel (or SND_CalcDecibelSquare), -723 was returned when the argument was set at 0. This was corrected to return -32768.

Up until this correction, when using the volume modulation, sound could still be heard even if the player volume had been set to 0.

This problem has been fixed.


Note 32-28: (STD) Added STD Library

Created an STD library to handle the string operation related to the API group.
The following functions are included in the STD library:

Note that the functions listed on the right inside brackets are alternate names for the functions listed to their left. For example, STD_StrCpy is an alternate name for STD_CopyString.


Note 32-29: (WBT) Corrected a Problem with GetBlock Request Notifications

The system callback notification WBT_CMD_REQ_GET_BLOCK_DONE, which should be generated only when a partner's WBT_GetBlock function finishes, was also being generated by WBT_GetBlockInfo. This problem has been fixed.

Applications that do not use this notification are unaffected.


Note 32-30: (WBT) Corrected the WFS Sample Module

We fixed the following problems with the WFS sample module compiled in $NitroSDK/build/demos/wireless_shared/wfs.


Note 32-31: (WM) Updated the WM Test Tool

Made the channel information on the same parent device change when WMTestToll.srl scans.


Note 32-32: (WM) Corrected the Description on the WM_SetLifeTime NITRO-SDK Function Reference Manual Page

There was a mistake in the description on the WM_SetLifeTime page in the NITRO-SDK Function Reference Manual. This problem has been fixed.
The description said that the frame lifetime default value was "no lifetime". However, the correct description is "beacon interval x 5."


Note 32-33: (WM) Improved Mongoose Components

When mongoose is used as an ARM7 component, access to the ARM9 main memory during the asymmetric operation of transitioning the state of the WM library is largely inhibited. This problem has been solved by improving the mongoose component.
Note that this problem was not necessarily solved, merely improved.


Note 32-34: (WM) Added Information in the Notification to the Port Receive Callback

Added the connectedAidBitmap field to WMPortRecvCallback. The AID bitmap during the current connection is stored there.


Note 32-35: (WM) Added Notification When the Port Receive Callback Initializes

WM_STATECODE_PORT_INIT was added to WMStateCode. It was changed so that the port receive callback in this state code is called when WM_SetPortCallback is called. This assumes that the initialization operation is run using the connectedAidBitmap field or the myAid field of WMPortRecvCallback.
In order to maintain connection notification consistency, keep in mind that the callback call by WM_STATECODE_PORT_INIT also happens during an interrupt prohibited state.

Due to this change, there is a possibility that a similar incompatibility with Note 32-38 might occur.


Note 32-36: (WM) Added API for Tests

The test API in the WM library has been expanded. This API is used for testing and is otherwise not normally used.
Despite this new API, WM library operations have not been altered when this library is used normally.
However, the WMApiid listing type has been extended by the addition of this API. Bear in mind that programs which depend on the row order of the listing may be affected.


Note 32-37: (WM) Corrected a Problem Where the Wireless Connection Function Stops When a Child Device Calls the WM_EndMP Function

When the parent device maintained an MP connection, the wireless communication feature was stopped after a child device called the WM_EndMP function at a specific time. This problem has been fixed.
This bug appears in the SDK after version 3.0.
When wireless communication has finished, the termination callback for asymmetric functions related to wireless communications will no longer be called.
We know the bug occurs when several child devices are connected using fake_child.
Further, when communication is terminated by an operation from the parent device, this bug is not an issue.


Note 32-38: (WM) Added a Disconnection Notification When the Local Player Disconnects

Previously, when WM functions (such as WM_DisconnectChildren) were called and communication was disconnected, a disconnection notification was not generated. WM_STATECODE_DISCONNECTED_FROM_MYSELF has now been added to WMStateCode in the parent to provide a disconnection notification.

Because of this change, there is a chance that an incompatibility may arise.
The state codes that can go into the state field of WMStartParentCallback, WMStartConnectCallback, and WMPortRecvCallback are increasing. Therefore, use caution when stopping the execution of programs when a state code other than one of the known WM_STATECOD_* state codes has been received.
Also, even if DataSharing explicitly disconnects the child from the parent using this notification, DataSharing will not stop.

The following functions were added as a result of this change:


Note 32-39: (WM) Fixed Internal Operations Again For Connecting and Disconnecting

The fixes described in Note 31-24 and Note 30-07 did not fully address the problems. As a result, these problems have been fixed again.


Known Issues in NITRO-SDK Version 3.0 RC


NITRO-SDK Version 3.0 PR4

(2005/09/08)


Note 31-01: (CARD) Added CARD_CancelBackupAsync Function

Added the CARD_CancelBackupAsync function for aborting the asynchronous process on the backup device.
As a result, added CARD_RESULT_CANCELED to the CARDResult enumerated values for processes that were aborted with this function.


Note 31-02: (CARD) Corrections to internal processing of FRAM device operations

When a FRAM device is being used for backup, there was an occasional problem with inconsistency of the hardware internal status. A process was added to deal with this issue.


Note 31-03: (CARD) Added CARD_RESULT_NO_RESPONSE Error Code

Added CARD_RESULT_NO_RESPONSE to the CARDResult enumerated values as a result value for backup manipulation functions.
This is an error value that was split off from CARD_RESULT_TIMEOUT. It is returned when contact with the card appears to be poor.


Note 31-04: (DevEnv) Support for Overlay Groups in lsf Files

Added support for overlay groups.
The linker assumes that overlays belonging to the same group are located in the same memory region.
By specifying mutually exclusive overlay modules as belonging to the same group, it is possible to use function calls between overlays to detect errors during linking.
To maintain compatibility, the group with the same name as the current section name is set if the overlay group specification is omitted.


Note 31-05: (DevEnv) Fixed Bug in Certain Section Names Of makelcf

In some cases, if the section description in an lsf file had sections named "<existing section name>" + "_bss," such as "main"and "main_bss," problems would occur.
In addition to "_bss," the same problem occurred with some text strings, such as "_DATA," "_BSS."
This is a lcf.template file problem.
We fixed the *.lcf.template files under $NitroSDK/include/nitro/specfiles.

As a result, you can no longer directly reference symbol information about overlays that existed in previous versions.
Because there may be problems with applications that directly reference symbols, the *.lcf.template files for the older version are for now included in $NitroSDK/include/nitro/specfiles/2.x.
Overwrite the files in $NitroSDK/include/nitro/specfiles as needed.
(When building with make, specify the LCFILE_TEMPLATE variable.)

The official way to obtain information about overlays is to reference the overlay table using the overlay ID as an index.


Note 31-06: (DevEnv) Corrected makelcf

When an overlay was placed in DTCM, a bug occurred with the arena configuration of the main memory area. This problem has been fixed.
We also fixed the ITCM arena configuration for use with a ITCM overlay.
We added support for overlays of the extended main memory region, which was not possible previously.


Note 31-07: (DevEnv) Added Loadrun and Nitrorun Tool Commands

The loadrun command that downloads and runs binary data to the IS-NITRO-EMULATOR.
It can be terminated with a timeout or a call to the OS_Exit function.

The nitrorun script calls the buryarg command, which embeds argument data in the binary and the loadrun command at the same time.
This allows execution of the binary in a manner that is similar to passing arguments from the command line.


Note 31-08: (ENV) Added libenv*.a Environment Resource Library

Added the ENV library, which retrieves a value corresponding to a resource from its resource name.
This is used to provide the program with operating environment parameters. Although the library must be recompiled, it is convenient for rewriting parameters and configuring an environment common to several programs.


Note 31-09: (FS) Corrections to the FS_EndOverlay function.

Due to the operation changes noted in Note 28-03, the destructor for the global object array in the overlay would not start correctly when unloading the overlay. This problem has been fixed.


Note 31-10: (FS) Corrections to document

Made numerous corrections to the following document explaining the FS library:


Note 31-11: (FX) Corrected the FX_FX64C_TO_F32 Macro

There was a bug in the FX_FX64C_TO_F32 macro, which converted from fx64c to f32 types. It did not return a precise value.
This problem has been fixed.


Note 31-12: (FX) Corrected problem with FX_InvSqrt function

When the argument passed to the FX_InvSqrt function was above a fixed value the calculation would be incorrect. This problem has been fixed.


Note 31-13: (MB) Added the MB_GetMultiBootDownloadParameter function

In conjunction with the features added in Note 27-22, the MB_GetMultiBootDownloadParameter function was added to reference the user-defined expanded parameters when downloading.


Note 31-14: (NVRAM) Fixed Bug with Error Determination When Loading Data from NVRAM

When reading data from NVRAM, the read failed when the target read buffer address was greater than 0x02400000.
This problem has been corrected.


Note 31-15: (OS) Added reference for debug output functions on ARM7 side.

Added references for the OS_InitPrintServer and OS_PrintServer functions, which are used for ARM 7 debug output. Also added that it is not necessary to use these functions in the application.


Note 31-16: (OS) Fixed Bug in Upper Address of DTCM Arena

There was a problem where the upper address of the DTCM arena is determined.
This was caused when a negative value was specified for the stack size in the rsf file.
This problem has been fixed.


Note 31-17: (OS) Added reference for NitroStaticInit function.

Added an explanation of the NitroStaticInit function to the NITRO-SDK Function Reference Manual, in line with the addition made in Note 27-31.


Note 31-18: (OS) Organized const Type Arguments in Function Related to OSThread

In functions related to OSThread, we determined and changed some "OSThread*" type arguments to be defined as "const OSThread*."

These are the functions that were changed:


Note 31-19: (OS) Added OS_GetOpt Function

Added the OS_GetOpt function, which makes it convenient to obtain strings that start with '-' as program execution options from argument data in binary files (for example, srl files that were embedded using the buryarg tool command).
Parameters should come after the options.
Added code that uses the OS_GetOpt function in the $NitroSDK/build/demos/os/argument-1 sample demo.


Note 31-20: (SND) Optimized the cache disabling process.

At the place where the DC_InvalidateRange function is called from the Sound library, the specified range was larger than necessary, so corrected this to be an appropriate size. This correction reduces the load of the sound process.


Note 31-21: (WM) Corrected problem in process that detects disconnection during MP communications.

During MP communications, if the communications partner disappears (e.g., the power gets cut), there is a timeout and notification is made of the disconnection. However, due to a bug in the timeout process, sometimes notification of the disconnection was not made. This problem has been corrected.


Note 31-22: (WM) Added Scan Types That Are Performed By Specifying the Matching Length of SSID

Added WM_SCANTYPE_ACTIVE_CUSTOM and WM_SCANTYPE_PASSIVE_CUSTOM to WMScanExParam.scanType. These support special usage that limits SSID matching confirmations performed with the WM_StartScanEx function to certain lengths.
When these scanTypes are used, SSID match confirmations will be made only up to the length specified with WMScanExParam.ssidMatchLength.
As a result, we changed the WMScanExParam structure.


Note 31-23: (WM) Corrected Scan SSID Matching Length in Infrastructure Mode

In infrastructure mode, by specifying SSIDs using WM_StartScanEx during scans, matching confirmation was performed for only the first eight bytes.
We modified it so that matching confirmation is performed for the length specified by WMScanExParam.ssidLength.


Note 31-24: (WM) Fixed internal process related to connecting to child.

In environments where communications status is extremely bad and the child repeatedly tries to connect to the parent, there was a bug that put parent into an abnormal internal state. That bug has been fixed.


Note 31-25: (WM) Added Interface That Indicates More Detailed Information about Causes of Connection Failure Time

We added a feature that notifies the status code of the communication partner. This partner uses a callback function to help analyze the cause of failure when a connection fails that is attempting to use WM_StartConnect[Ex].
Specifically, we added the wlStatus member to the WMStartConnectCallback structure.
Under normal circumstances there is no need to reference this from the application.


Known Problems with SDK 3.0 PR4


NITRO-SDK Version 3.0 PR3

(2005/08/10)


Note 30-01: (CARD) Corrected reference to CARD_CheckPulledOut function.

Added a statement to the CARD_CheckPulledOut function reference indicating that the CARD_LockRom function must be called and CARD-ROM bus needs to be locked before calling this function .


Note 30-02: (CARD) Argument restriction for CARD_IdentifyBackup function.

Added a restriction so that CARD_BACKUP_TYPE_NOT_USE cannot be specified as the device type passed to the CARD_IdentifyBackup function. This change was added in 3.0 PR, but it was left out of the changelog.


Note 30-03: (MB) Made corrections to the sample demo.

The following correction was made to the $NitroSDK/build/demos/mb/cloneboot sample:


Note 30-04: (OS) Added the OS_SetThreadDestructorStack Function

Added the OS_SetThreadDestructorStack function, which specifies the stack used when a thread destructor is executed. If another is not specified, the stack pointer does not change when its own thread is destroyed. When the thread is destroyed by other threads, the pointer changes to the stack's top address.


Note 30-05: (OS) Alarm Cancel Process Used In OS_Sleep Function

When a thread that was paused with the OS_Sleep function is destroyed by another thread, the alarm set for the OS_Sleep function is canceled. Previously, because the alarm was not canceled, the alarm handler was sometimes called needlessly or the alarm list was overwritten.


Note 30-06: (WM) Changed Process during Overload on Child

We changed the processing during overload on the child because of internal processing conditions. This is related to Note 29-08. Previously, when the child side ARM was overloaded and the transmit data settings were not on time, a null response was generated. This was changed to no response. As a side effect, when a child machine is overloaded, the receive processing is skipped. This impairs communication efficiency slightly but reduces the load.


Note 30-07: (WM) Changed internal operations during disconnection process.

As mentioned in Note 25-22, internal operation was changed to wait for the signal strength that can send the disconnection notification when disconnecting. But this has been changed to timeout after a set period of time. This corrects those cases where the process did not end when WMTestTool.srl was used to set the Noise Rate to 100%.


Known Problems with SDK 3.0 PR3

None.


NITRO-SDK Version 3.0 PR2

(2005/08/04)


Note 29-01: (DevEnv) Corrected path for ISD_NITRO_DEBUGGER.

Corrected the path location that ISD_NITRO_DEBUGGER indicates, which is defined in $NitroSDK/build/buildtools/commondefs.emtype.ISD.


Note29-02: (GX) Further corrections to Sub_Double3D sample demo.

The following correction was made to the $NitroSDK/build/demos/gx/UnitTours/Sub_Double3D sample demo:
The correction described in Note 27-15 was not complete and the same symptoms still appeared occasionally. The problem was corrected again.


Note 29-03: (GX) Added the qualifier 'const' to the arguments of the functions that get the status of the display list.

The contents of the pointer passed to the arguments of the following functions have not been rewritten. However, the const modifier has been added to them.


Note 29-04: (OS) Added the OS_GetLowEntropyData Function

We added the OS_GetLowEntropyData function, which generates and returns different data each time it is executed based on the system status.
We also added $NitroSDK/build/demos/os/entropy-1 as a demo.


Note 29-05: (PM) Corrected the return process after LCD has transitioned from OFF state to sleep mode.

After the transition from the LCD Off state to sleep mode and then back, a discrepancy arose between the actual state and the internal state of the GX library. This has been fixed. (Reference: Note 22-23:(PM) Changed the Recovery Process after Transitioning From LCD OFF State to Sleep Mode)


Note 29-06: (WM) Added Notification to WM_SetIndCallback Function Callback

Added WM_STATECODE_INFORMATION for notification of the callback of WM_SetIndCallback. This provides a notification containing information about the events occurring internally.
The contents of the notification are found in the WMIndCallback.reason callback argument. WM_INFOCODE_FATAL_ERROR is defined as a reason value. This value is used when ignoreFatalError in the WM_StartMPEx function is set to TRUE and a fatal error occurred.


Note 29-07: (WM) Added WM_SetPowerSaveMode Function

Added the WM_SetPowerSaveMode function, which switches to power save mode during infrastructure communication.


Note 29-08: (WM) Corrected problems with return process when ignoreFatalError has been set.

When the ignoreFatalError argument of the WM_StartMPEx function is set to TRUE, there should be no auto-disconnect even when a fatal error occurs with the child. However, due to a problem in this process, communications become unavailable after this point. This problem has been fixed.


Note 29-09: (WM) Changed Receive Process on Child

Previously, when a child received an MP frame not addressed to it, the WM_StartMP function would receive a notification that the "state" was WM_STATECODE_MP_IND and the errcode was WM_ERRCODE_INVALID_POLLBITMAP. This was changed so that no notification is sent at all.
The MP ACK frame's WM_STATECODE_MPACK_IND notification was changed in a similar way.
This change does not affect sending and receiving using ports.


Note 29-10: (WVR) Corrected problem with the thumb build version of the ichneumon component

It was confirmed that programs do not operate when the thumb build version of the ichneumon component is used. This has been corrected.


Known Problems with SDK 3.0 PR2

None.


NITRO-SDK Version 3.0 PR

(2005/07/22)


Note 28-01: (Cht) Added PictoCatch Demo

Added a sample demo that uses the Pictocatch process to $NitroSDK/build/demos/cht/catch-min.
This sample implements only the bare minimum functionality so that it has less code than the previous PictoCatch sample demos.


Note 28-02: (DevEnv) Support for nitro.h Precompiled Headers

We added support for precompiled headers for $NitroSDK/include/nitro.h.
The build system precompiles $NitroSDK/include/nitro.h before the build and reads the result while building the file.
This should result in a faster build.
If you want to stop the compilation temporarily, set a value for NITRO_NO_STD_PCHDR.


Note28-03: (FS) Changed the operations of the overlay functions.

When there was a global object in an overlay to be unloaded that required a destructor, the destructor was called automatically. The operation has been changed so that the destructor is not called.


Note 28-04: (GX) Corrected GX Sample Demos

In the $NitroSDK/build/demos/gx/UnitTours/2D_Oam_256_16 sample demo, a bug made the +Control Pad unusable in the FINALROM build.
This problem was fixed.


Note28-05: (MATH) Accelerated the MD5 functions

Replaced the implementations of the MD5 functions. The code sizes are about half of what they were before, and the functions operate approximately 20% faster compared to the previous implementation. The interface has not been changed. This change was added in 2.2 PR, but it was left out of the changelog.


Note28-06: (OS) Added Mechanism to Check for Stack Overflow in IRQ Stack

Added a mechanism to check for stack overflow in the IRQ mode stack, similar to that in the thread stack.
A check code is written at the top and bottom of the stack (or between, if necessary). By checking if these sections are rewritten, it helps to determine if the stack is filled up to those points.

Below are the functions that were added for this purpose:


Note 28-07: (OS) Added Argument Support Using OS_GetArgc Function and OS_GetArgv Functions

Added a mechanism that allows you to pass argument data to the ROM file and then obtain this data in the program.
You can use the $(NitroSDK)/tools/bin/buryarg tool to embed argument data. You can then use the data in a program by calling the OS_GetArgc and OS_GetArgv functions. By using this feature, you can change the program's execution conditions without recompiling.
We added a demo that uses this feature called $NitroSDK/build/demos/os/argument-1.

This feature is provided for debugging purposes and is invalid in FINALROM builds.


Note 28-08: (OS) OS_KillThread and OS_KillThreadWithPriority Functions Added

We added the OS_KillThread and OS_KillThreadWithPriority functions. These functions terminate other threads. You select which function to use based on whether you want to set the thread priority when terminating the thread.
The difference between OS_KillThread and OS_DestroyThread is whether the thread destructor of the terminated thread is called.

We added a demo that compares these two functions. It is called $NitroSDK/build/demos/os/thread-9.


Note 28-09: (OS) Implementation of Thread Destructors

We implemented thread destructors that call preset functions when a thread is terminated.
The destructors are set using the OS_SetThreadDestructor function.

Thread destructors are called under the following circumstances:

Thread destructors are not called under the following circumstances: We added a thread destructor demo. It is $NitroSDK/build/demos/os/thread-7.


Note 28-10: (OS) Added User Parameters to Thread Structure

We added a user parameter member to the OSThread thread structure.
The system does not reference or change this area.
This may be used for any purpose in each application.
The following functions are for setting and getting thread parameters:


Note 28-11: (OS) Removed Limit on Maximum Number of Threads

Previously, the maximum number of threads that could be used by the OS at the same time was 16. (Normally the maximum was 16. However, by rewriting the header definitions, it was possible to vary the maximum from 8 to 32.) This limit has been removed.
The thread-related APIs have not changed.

Reflecting this change, we have added two sample demos that create large numbers of threads: $NitroSDK/build/demos/os/thread-8 and $NitroSDK/build/demos/os/thread-10.


Known Issues in NITRO-SDK Version 3.0 PR

None.


NITRO-SDK Version 2.2 PR

(2005/07/15)


Note 27-01: (CARD) Added the CARD_CheckPulledOut Function

Added the CARD_CheckPulledOut function, which determines status directly from ARM9. In other words, it does not wait for the notification of the result of the card removal detection process that the ARM7 performs periodically.
This function is not needed for normal scenes where the Card is not being accessed. However, in scenes where you need to know without delay that the Card has been removed, you can use this function instead of CARD_IsPulledOut.


Note 27-02: (CARD) Made Card Library Compatible with New Backup Devices

Added CARD_BACKUP_TYPE_EEPROM_512KBITS and CARD_BACKUP_TYPE_FRAM_256KBITS to the enumerated type CARDBackupType so the CARD library can support 512 kB EEPROM and 256 kB FRAM as backup devices.


Note 27-03: (CTRDG) Corrected Cache Operations When Getting Cartridge Information

Corrected the cache operations involved in the reading of the cartridge information region during the execution of the CTRDG_Init function.
Up until now, when the cartridge information such as the maker and game code was obtained, incorrect values were sometimes returned. This problem has been fixed.


Note 27-04: (DevEnv) Added the bin2obj Tool

Added the bin2obj tool for converting binary files into object files.
This tool operates the same way as the BinToElf tool in the CodeWarrior for NINTENDO DS package. You can use either one.


Note 27-05: (DevEnv) Provided Support for a CYGWIN cygdrive Prefix Other Than /cygdrive

When a build was performed from the CYGWIN command line, the build would fail if the cygdrive prefix was not /cygdrive, the default setting.
Builds are now possible even if the cygdrive prefix has been changed to another value.


Note 27-06: (DevEnv) Corrected the LCF Template

In programs that used the LCF template in $NitroSDK/include/nitro/specfiles/ARM9-TS-cloneboot-C.lcf.template, the .sinit sections were not linked and the features of the static initializer could not be used. This problem has been fixed.


Note 27-07: (DevEnv) Corrected Problem with the StackSize Specification for rsf

With StackSize specified in rsf (linker spec file), subtracting the absolute value from the maximum possible specified size when a negative number was provided as the first parameter was not valid.
This problem has been fixed.


Note 27-08: (DevEnv) Changed the Default Value for TS_VERSION

Changed the default value of the SDK_TS_VERSION constant that indicates the PMIC version. The value was 100; it has been changed to 200.
SDK_TS_VERSION = 200 appears in versions E and later for the IS-NITRO-EMULATOR hardware. It corresponds to the PMIC version embedded in the Nintendo DS retail product.
This change does not alter the internal operations of the NITRO-SDK features. However, this could affect applications that use this constant as a build switch for changing behavior (such as sample demos that use the microphone) .
When NITRO_TS_VERSION is specified as the environment variable, SDK_TS_VERSION takes the specified value, not the default value.

NITRO-SDK has an OS and an SPI library prepared for every TS_VERSION.
This is relevant when the development environment uses the TS breadboard and so on, with the owner information in an old save format. However, when the save format is the same as that used for the retail DS system, the library is exactly the same.
When the make system is used, the library for linking is selected automatically based on the environment variable. But in a development environment using an IDE, you need to manually select which library to link.
Nonetheless, except in cases where the development environment used the TS breadboard, and so on, there is really no meaning to selecting a library. Consequently, it is all right to use the library that is linked by default.


Note 27-09: (DevEnv) Changed the #include Search Path

Changed the #include search path when building with Makefile to include the directory of the file that called #include.
If the previous search path is required, enter a directive such as
MACRO_FLAGS += -cwd proj
inside Makefile.


Note 27-10: (FS) Added the FS_CreateFileFromMemory and FS_CreateFileFromRom Functions

Added the FS_CreateFileFromMemory function and FS_CreateFileFromRom function to treat a specific memory region or Card as a temporary file to open it.
Also added the sample demo $NitroSDK/build/demos/fs/file-3 that demonstrates the operation of these functions.


Note 27-11: (FS) Added the FS_End Function

Added the FS_End function to return the state to what it was before the FS library was initialized.


Note 27-12: (FS) Corrected the Problem with the FS_WaitAsync Function

When the FS_WaitAsync function was called for a file handle and an asynchronous command was not yet processing in the archive, the archive processing would stop. This problem has been fixed.


Note 27-13: (FS) Corrected Problem during Overlay Unloading

When the FS_UnloadOverlay or FS_EndOverlay function unloaded an overlay, the destructor was not called correctly. This problem has been fixed.
This applies to objects when both of the following are true:


Note 27-14: (FX) Corrected Problem with the Arctangent Functions

The arctangent functions below returned incorrect values when the (x,y) slope was extremely close to 1. This problem has been fixed.

This applies to (x,y) when the following conditions are met:
((x != y) && (FX_Div(y, x) == FX32_ONE))


Note 27-15: (GX) Corrected the Sub_Double3D Sample Demo

The following correction was made to the $NitroSDK/build/demos/gx/UnitTours/Sub_Double3D sample demo:
When double screen 3D and a heavy load process were put together, the image on the upper screen would occasionally instantly wrap around to the bottom screen (or vice versa). This problem has been fixed.


Note 27-16: (GX) Corrected Problem With ASSERT Inside Functions That Manipulate Display Lists

When the G3C_UpdateGXDLInfo and G3B_UpdateGXDLInfo functions were called from inside functions that manipulate display lists, ASSERT would be applied when a display list was being created that was the same size as the buffer.
This problem has been corrected.


Note 27-17: (MATH) Corrected Problem with the MATH_Qsort Function

When sorting with the MATH_QSort function, the function would sometimes access the target array out of bounds.
This problem has been corrected.


Note 27-18: (MATH) Accelerated the SHA-1 Functions

Replaced the implementation of the SHA-1 functions.
The code size has hardly changed, but it runs approximately twice as fast as before.
The interface has not been changed.


Note 27-19: (MATH) Added Fast Fourier Transform Functions

Added functions that perform fast Fourier transforms.
Also added the demos $NitroSDK/build/demos/math/fft-1 and fft-2 to confirm the operation of these functions.


Note 27-20: (MB) Added multiboot-wfs Sample

Added $NitroSDK/build/demos/mb/multiboot-wfs as a sample of a child in Single-Card Play using the file system over wireless communication.


Note 27-21: (MB) Released the Debug Use Expanded Memory Region

For a child booted with the MB protocol, there was a restriction that prevented the use of expanded memory and forcibly set main memory to 4 MB. This restriction has been removed, thus enabling the use of expanded memory by IS-NITRO-EMULATOR and other hardware that has 8 MB of main memory.


Note 27-22: (MB) Added User Definition Expanded Parameters

Added the userParam member to the MBGameRegistry structure.
Store as much as 32 bytes of any kind of data in this buffer. Use the MB_RegisterFile function to allow a Single-Card Play child to reference this data after startup.


Note 27-23: (MI) Corrected Problems with the MI_CompressHuffman Function and Hufmann Compression by ntrcomo.exe

The MI_CompressHuffman function and ntrcomp.exe had a bug that sometimes caused abnormal compression of data that was filled with a single value.
This problem has been corrected.


Note 27-24: (OS) Corrected Internal Operation of OS_Sleep Function

If the OS_WakeupThreadDirect function was called for a thread that was in the wait state after a call to the OS_Sleep function, there would be problems with the alarms. This problem has been fixed.


Note 27-25: (OS) Corrected Problem with the OS_TryLockMutex Function

There were errors in the list operations on the mutex stored in the OS when the mutex was locked by the OS_TryLockMutex function.
As a result, sometimes the OS_UnlockMutex function would cause exceptions. Problems would also arise when a thread ended while the mutex was still locked. This has been fixed. Note that the OS_LockMutex function (which is different from the OS_TryLockMutex function just mentioned) works correctly and has no problems.


Note 27-26: (OS) Added the OS_YieldThread Function

Added the OS_YieldThread function. This function performs thread rescheduling. It also gives executable threads with the same priority level as the current thread an opportunity to execute.


Note 27-27: (OS) Made Internal Corrections to Initialization Process at Startup Time

Corrected the internal processes that confirm that the cache has been cleaned/invalidated at program startup for autoload and at the initialization of each segment.


Note 27-28: (OS) Expanded the Startup Screen Process for Chinese Language Version

The startup screen display process for Chinese language applications can be modified with SDK_WEAK_SYMBOL and made public with the OS_ShowAttentionChina function. Its implementation can be changed with external definitions.

In conjunction with this, added the sample $NitroSDK/build/demos/os/forChina-fs to show how to load the data for images that are used only at startup from the file system without a static link.


Note 27-29: (OS) Corrected Problems with Flushing the Data Cache

The cause of the bugs mentioned in Note 24-10 and Note 25-16 has been clarified. Along with this, the internal implementation of the functions DC_FlushRange and DC_FlushAll have been changed so that the CPU flush command works properly.
Specifically, a command to wait for the write buffer to be empty had been inserted immediately before the flush command and when returning from the interrupt handler. This was done in order to avoid the symptoms of the problem, which was that a clean cache line would be invalidated when the flush command was executed if the write buffer was full.
The function specifications have not changed.


Note 27-30: (OS) Corrected Problem When Multiple OSMutexes Are Locked

There was a problem with the list processing of mutexes stored in OSMutex.
Specifically, a problem arose when a thread used the OS_LockMutex or OS_TryLockMutex function to lock more than one OSMutex at the same time.
This has been fixed.
The problem does not occur if a thread locks only one OSMutex at a time.


Note 27-31: (OS) Added Information about Header Files To the NITRO-SDK Function Reference Manual

Added explanations about the main items and the special features of the NITRO-SDK header files in the OS category of the NITRO-SDK Function Reference Manual.
Explanations were added about the following files:


Note 27-32: (RTC) Added Functions to Convert Back And Forth between Date/Time and Total Elapsed Time in Seconds

Added functions to the RTC category that convert between type RTCDate and RTCTime date/time data and the total number of seconds that have elapsed since January 1, 2000. Also added functions that convert between type RTCDate data and the total number of days that have elapsed.
The demo that can be used to confirm these operations is $NitroSDK/build/demos/rtc/convert-1.


Note 27-33: (RTC) Added Restrictions to Functions for Changing Date and Time

Functions have been created for debugging purposes that can change the RTC's date and time. To avoid incorrect use of these APIs in non-debugging applications, a restriction has been introduced that causes any request to write to the RTC to fail if NITRO_FINALROM has been specified.
Following are the functions whose operations have been changed:


Note 27-34: (WBT) Corrected wbt-fs Sample Demo

The following correction was made to the sample demo $NitroSDK/build/demos/wbt/wbt-fs:

Table memory processed with the FS_LoadTable function would not be released with every connection and disconnection, thus causing memory leaks. This problem has been fixed.


Note 27-35: (WBT) Corrected WBT Sample Demos

The following changes were made to the $NitroSDK/build/demos/wireless_shared/wc sample module and the $NitroSDK/build/demos/wbt/wbt-1 demo:

During continuous MP communications, the wireless parent would unconditionally overwrite the Send buffer when a new child was connected. Depending on the timing, data would be sent to wireless hardware while data was being loaded to the Send buffer. This would result in WBT packet mismatches. This problem has been fixed.

To fix the problem, a process was added to $NitroSDK/build/demos/wbt/wbt-1/src/main.c that defines one of three actions for the WBT parent to take based on the information it has on the current child connection situation:
1) If it is the first child, begin MP communications.
2) If it is the second or later child, do nothing. (It is all right to do nothing, since continuous MP communications are taking place.)
3) If there is no child, terminate continuous MP communications.


Since the above process requires information about the disconnection of child units, $NitroSDK/build/demos/wireless_shared/wc/wc.c has been changed so that a callback is called on the sample side when a child is disconnected.


Note 27-36: (WM) Clarified the Specification Changes and Planned Deletion of Key Sharing Functions

In order to reduce the amount of memory used by WM, the specifications have been changed for these three functions that are almost never used: WM_StartKeySharing, WM_EndKeySharing and WM_GetKeySet. Along with this change, a fixed buffer for Key Sharing is now obtained when WM is initialized.
In addition, since the Key Sharing features are scheduled to be deleted at a later date, a section was added to the document asking that programmers instead use the functions WM_StartDataSharing, WM_EndDataSharing, and WM_StepDataSharing.


Note 27-37: (WM) Changed the Internal Operations of the WM_StartScanEx Function

It has been determined that when an SSID filter is specified by the WM_StartScanEx function, the SSID inside the discovered parent information sometimes has invalid data that differs from the specified SSID.
To deal with this problem, a process has been added inside the WM library that, when necessary, overwrites the filter-specified SSID with the SSID inside the discovered parent information.

Note that this happens only when the parent is using infrastructure mode communications and is hiding its SSID.


Note 27-38: (WM) Updated WMTestTool.srl

Updated the tool that is used for testing wireless communications: NitroSDK/bin/ARM9-TS/Rom/WMTestTool.srl.
Previously, when an access point was discovered during scanning, the message "WLAN AP" was displayed. This has been changed so that now the SSID is displayed.
This was implemented for both Scan Test mode and ScanEx Test mode.


Note 27-39: (WM) Deferred MP Communication When Child Not Connected

Previously, when the wireless communications parent called the WM_StartMP function, it would send an MP frame even if no child was connected. This has been changed so the parent does not do this.
The basic behavior of the port's send/receive callbacks has not changed.


Note 27-40: (WM) Corrected Problem with Notification When Child Disconnects

During MP communications, when the child responded with nothing but NULL and the communication timed out, the notification WM_STATECODE_DISCONNECTED would be posted multiple times to the parent's callback WMStartParentCallback. This problem has been fixed.

This problem occurred mainly when a child was started by IS-NITRO-DEBUGGER and was paused for a long time during MP communications.


Note 27-41: (WM) Added Restriction on Number of MP Communication Transmissions per Frame

Previously, during continuous communications mode and after communications failed repeatedly, transmissions would continue. However, in a situation where only empty data is being sent and received, the number of MP communication transmissions grows rapidly and the child's data-receiving process cannot keep up. This can trigger problems.
To mitigate this problem, a restriction has been set that limits the number of MP communication transmissions that the parent can send in a single frame to 6 (including resends).
This restriction is not placed on normal communications.


Known Issues in NITRO-SDK Version 2.2 PR

None.


NITRO-SDK Version 2.1 Release

(2005/05/09)

Note 26-01: (CARD) Added validity testing for card access DMA channels

We added DMA channel validity testing to the MI library in Note 21-33, but in the CARD and FS libraries, the code that specifies channels is separated from the code that uses channels and the restrictions were not readily apparent. Accordingly, we added validity testing to the top of functions that request DMA channels in these libraries. We added a warning about this to the function reference.

Note 26-02: (DevEnv) Added floating point library specification option

We added a build switch that defines the floating point library (CW_LIBFP) and the ability to redefine it in the makefile. Also, the default library was changed from FP_fullI_v5t_LE.a to FP_fastI_v5t_LE.a.

Note 26-03: (FS) Internal corrections in FINALROM version overlay function

The FINALROM version overlay function called unnecessary debugging functions and expanded the code size during link. This was fixed.

Note 26-04: (MB) Added sample demo

We added a sample demo called multiboot-PowerSave that uses the MB_SetPowerSaveMode function to toggle the power save mode in the Single-Card Play parent.

Note 26-05: (OS) Added extended language codes

We implemented a mechanism to add new language codes and added Chinese as an extended language code. We are currently drafting guidelines for the creation of applications that support Chinese.

Note 26-06: (SND) Added instrument release invalidation function

A feature was added so that the instrument will ignore the specified note length and continue to play to the end of the waveform data if SND_BANK_DISABLE_RELEASE (=255) is specified for the release field of the SNDInstData structure.

Note 26-07: (WBT) Corrected sample demo.

The following revisions were made to the $NitroSDK/build/demos/wireless_shared/wfs sample module and the $NitroSDK/build/demos/wbt/wbt-fs sample demo:

Note 26-08: (WM) Corrected sample demo.

With the samples that did not call the WcFinish function even though the WcInit function of the WC sample module could be called more than once, the correction was made so that these two functions are called properly. We revised the following demos so that the two functions are properly paired:

Known issues in SDK 2.1 release version

There were none.


NITRO-SDK Version 2.1 RC

(2005/04/21)

Note 25-01: (CARD) Added note about threads created with CARD Init

The reference for the CARD_Init function did not mention the threads for asynchronous processing that are generated internally. We added a description.

Note 25-02: (CTRDG) Added function to detect removal of cartridge device

We added the functions CTRDG_IsAgbCartridgePulledOut and CTRDG_IsOptionCartridgePulledOut, which are used to detect the removal of the cartridge device. In Note 18-20 for changes in NITRO-SDK 2.0 RC, descriptions were added to the reference but there were no implementations of the functions corresponding to the additions.

Note 25-03: (CTRDG) Added reference description for cartridge bus lock and removal detection

Clearly stated in each function reference that CTRDG_IsExisting function must be called periodically because the ARM7 will not automatically detect removal while the cartridge bus is locked.

Note 25-04: (CTRDG) Corrected reference about cartridge state

The additional text in the reference for Note 23-01, which was released in NITRO-SDK 2.0 official release, was incorrect in saying that the manufacturer's code and game code are only obtained during initialization. The text was corrected.

Note 25-05: (DevEnv) Changed memory map (Changed DTCM addresses)

We revised the memory map and expanded the MainRAM area that is allocated to ARM9 by default. Previously the area allocated to DTCM started at 0x27C0000, but it now starts at 0x27E0000. Also, the MainRAM area allocated to ARM9 was expanded from 0x2000000–0x23BFFFF to 0x2000000–0x23DFFFF. (This increases its size by 128 KB.) The MainRAM area allocated to ARM7 is now 0x27E0000–0x27FEFFF. When the main memory size was 4 MB, under the default protection region setting, the ARM7 program area from 0x23E0000–0x23FFFFF was enabled for reading and writing from the ARM9. We changed the position of protection unit 2 and the area is now protected. When the main memory size is 8 MB, the start address of the extended arena in main memory is now 0x23E0000 rather than 0x2400000. The size was expanded to 128 KB.

Note 25-06: (FS) Improved validity checking for interrupts

We added validity testing code to the FS library functions that cannot be called from inside interrupt handlers.

Note 25-07: (GX) Corrected G3 FrustumW function

In the function G3_FrustumW, the value of element _23 of the matrix that stores the result was wrong. This problem was fixed.

Note 25-08: (MATH) Added quicksort function

A non-recursive quicksort function was added under the MATH category as MATH_QSort.

Note 25-09: (MATH) Added checksum, CRC calculation functions

We added functions that perform data checksum and CRC calculations. We also added references and demos for these functions.

Note 25-10: (MIC) Corrected mic-2 sample demo

We made the following changes to the demos/os/favorite-color demo.

Note 25-11: (MB) Added option to automatically generate TGID in MB Init

Added an option to automatically generate TGID passed as an argument to the MB_Init function by specifying the newly defined constant MB_TGID_AUTO. As a result, the tgid argument was expanded from a u16 to a u32, but all other specifications are unchanged.

Note 25-12: (MB) Added functions to set wireless drive parameters

The following functions were added to allow the explicit external setting of parameters in the WM library that are used internally in the MB library.

Note 25-13: (MB) Corrected MBP sample demo.

We made the following correction to the source code of the samples in the $NitroSDK/build/demos/wireless_shared/mbp directory:

Note 25-14: (OS) Corrected stack check processing for launcher thread

The insertion position of the stack underflow detection code for launch threads initialized with OS_InitThread was 64 bytes lower than the bottom of the stack memory. This problem was fixed.

Note 25-15: (OS) Corrected internal operation of OS_Sleep

In the internal implementation of OS_Sleep function, the period from the setting of the alarm until thread-wait was not thread-safe. This problem was fixed.

Note 25-16: (OS) Corrected internal operation of cache flash function

As a result of internal implementation changes we made, which are described in Note 24-10, the operation of the DC_FlushAll function was no longer thread-safe. We corrected this. We also explained in the reference that the processing time of cache operation functions that use an area argument is proportional to the size of the area.

Note 25-17: (OS) Corrected sample demo.

In some of the sample demos in the OS library, interrupts were disabled while the tick system was used. This was fixed so that the OS_EnableIrq function is called properly.

Note 25-18: (OS) Corrected references for format string functions

The references for the following format string functions erroneously said that they do not perform output operations with the final ROM library:

Note 25-19: (OS) Language codes temporary correspondence

We added provisional support for extended language codes. We changed some of the tools, but there was no impact on the current applications. We plan to officially support the extended language codes in the next release.

Note 25-20: (SND) Unified distributions of sound library

Previously, NITRO-SDK contained only the sound library files while NITRO-System contained the sound library files, documentation, and demos. Starting with this release, everything will be included in NITRO-SDK. We have released the source files for the sound library in the $NitroSDK/build/libraries/snd directory and added sound library sample demos to the $NitroSDK/build/demos/snd directory. We also added function references for the sound library.

Note 25-21: (SND) Added SND_PrepareSeq and SND_StartPreparedSeq functions

If sequence parameters are changed immediately after calling SND_StartSeq function, there was a possibility that starting the sequence and updating parameters may not be processed in the same frame. To fix this, we added the functions SND_PrepareSeq and SND_StartPreparedSeq. Parameter changes made between SND_PrepareSeq and SND_StartPreparedSeq are guaranteed to be processed at the time the sequence starts.

Note 25-22:(WM) Changed internal operation

We improved the process to disconnect used by the wireless library when a parent detects a problem with a child. Also, we changed the library's internal operation so that if a parent fails to disconnect from a child by using WM_Disconnect function, it will attempt to disconnect a prescribed number of times.

Note 25-23: (WM) Added function to automatically generate TGID

We added the function WM_GetNextTgid, which automatically generates TGIDs based on the RTC time settings.

Known issues in SDK 2.1 RC


NITRO-SDK Version 2.1 PR

(2005/04/07)

Note 24-01: (CARD) CARDRomHeader structure added

Added the CARDRomHeader structure that represents the information in the ROM registration data to the CARD library.

Note 24-02: (CARD) Internal check added to CARD_IdentifyBackup

We added process that test-reads 1 byte in CARD_IdentifyBackup function. The result value of this test-read can be obtained by using CARD_GetResultCode function. In tandem with this change, the return value type was changed to BOOL. When calling the function, the access bus must be locked using CARD_LockBackup function.

Note 24-03: (CARD) Added demo that explicitly specifies the ROM type

In tandem with support for the one-time ROM build option (explained in Note 24-04), we have added demos that specify mask ROM and one-time ROM. They are card/card-mrom and card/card-1trom.

Note 24-04: (DevEnv) Support for one-time ROM build option

In addition to mask ROM, one-time ROM is now supported as a build option for program ROM. RomSpeedType was added to the section parameters in the makerom.exe tool so that MROM, 1TROM or UNDEFINED can be specified. Also, we added a NITRO_ROMSPEED build switch to the NITRO-SDK make environment so that RomSpeedType can be specified during building. If you don't specify anything, it is set to UNDEFINED. For details, see the demo in Note 24-03.

Note 24-05: (DevEnv) SDK version format changes

Deleted the definition of the SDK_VERSION_PATCH constant that was always 0 for the SDK version information defined in version.h header file. In tandem with this change, the 4-byte version information value format contained in the program's resident code was changed. Deleted 4 bits in the SDK_VERSION_PATCH field, and expanded the SDK_VERSION_MINOR field to 8 bits. It has been expanded in the lower bit direction. The showversion tool was changed to reflect these changes. Please note the changes if you develop tools or other applications that read the SDK version information.

Note 24-07: (GX) Corrected G3_GetDLSize function bug

The G3_GetDLSize function sometimes returned a value that was 4 bytes larger than the actual display list size. This problem was fixed.

Note 24-07: (MATH) Added function to calculate message digest values

We added to the MATH category a message digest value calculation function that uses the standard message digest algorithms MD5 and SHA-1. Also, we added calculation functions that use the HMAC-MD5 and HMAC-SHA-1 keyed-hashing algorithms.

Note 24-08: (MB) Added MB_GetGameEntryBitmap function

We added the MB_GetGameEntryBitmap function, which gets the AID bitmap of the entered children in the game information being distributed.

Note 24-09: (OS) Corrected card lock internal processing in OS_ResetSystem

When a thread that locked the card bus and a lower priority thread called OS_ResetSystem function were running, reset internal process became deadlocked. This problem was corrected.

Note 24-10: (OS) Corrected internal implimentation of Cache Flash

We confirmed that when the cache line management state is valid and dirty, in rare instances, the CPU flush instruction failed to operate. The internal implementation of DC_FlushRange and DC_FlushAll functions, which provide this functionality in the SDK was changed so that it is achieved by a combination of the CPU's store and invalidating instructions. The function specifications have not changed.

Note 24-11: (OS) Corrected sample demo.

Made the following changes to the demos/os/favorite-color sample.

Note 24-12: (RTC) Fixed bug in date-writing function

The functions RTC_SetDate and RTC_SetDateAsync, which change only the date, did not work correctly and did not change the date. This problem was fixed.

Note 24-13: (Snd) Added function to get sound driver information

We added functions that obtain sound driver data. The functions are shown below.

Note 24-14: (Snd) Added SND_COMMAND IMMEDIATE as a flag for SND_FlushCommand

SND_COMMAND_IMMEDIATE can be specified as an additional argument flag of the SND_FlushCommand function. When SND_COMMAND_IMMEDIATE is specified, issued commands will be processed without waiting for the next sound frame.

Note 24-15: (Snd) Added SND_INST_NULL to SNDInstType

SND_INST_NULL was added as a value that can be taken for the type member of the SNDInstData structure that is used by the SND_ReadInstData function. Instrument data set to SND_INST_NULL will not make any sound.

Note 24-16: (WM) Updated "Description of wireless communication library"

Added the description about CLASS1, which is an internal state for "Description of wireless communication library" (AboutWirelessManager.pdf).

Note 24-17: (WM) Fixed bug related to disconnection timing

As a result of revisions in NITRO-SDK 2.0 RC5, if a child connected and disconnected before WM_StartMP function was called, the parent's ARM7 performs an invalid process. Although this problem was fixed in NITRO-SDK 2.0, it was not completely fixed. This is now completely fixed.

Note 24-18: (WM) Fixed bug in WM_StartScanEx

There was a problem where the APIID in the argument passed to the callback function specified by WM_StartScanEx function could not be differentiated from APIID of the WM_StartScan function because these two were the same. (As a result, the two APIs could not be used properly.) This problem is fixed.

Note 24-19: (WM) Fixed bug related to disconnection processing

Some bugs were found in NITRO-SDK 2.0 official release. If the machine being disconnected was unable to communicate, the disconnection would fail and the internal state of the wireless library would become inconsistent. Related to this, when a break was executed from the debugger during communications, other communicating parties did not receive a message indicating normal disconnection due to a timeout. We fixed these bugs.

Note 24-20: (WM) Added demo that uses WEP Key with DS wireless play

With DS wireless play, WEP Key encryption can be used only when communicating over a connection. Added a demo that does this: wm/wep-1.

Known issues in SDK 2.1 PR

There were none.


NITRO-SDK Version 2.0 Release

(2005/03/11)

Note 23-01: (CTRDG) Added information to references for AGB Game Pak state functions

Clearly stated in the function references that the return value of CTRDG_GetAgbMakerCode and CTRDG_GetAgbGameCode functions is the value obtained when CTRDG_Init function is called. Also added that when using a Game Pak in development hardware, the Game Pak slot power must be set to ON before calling CTRDG_Init function.

Note 23-02:(DevEnv) Standardized the source code forms

The code style has been unified regarding indents and carriage returns in the library and demos.

Note 23-03: (DevEnv) Added reference for compiled DS programs

References for the DS programs included in $NitroSDK/bin are added to $NitroSDK/man_en_US/romfiles under the category [Built DS programs].

Note 23-04: (DevEnv) Clarified argument ranges in the function reference

Where necessary, the function reference now has descriptions of ranges of values that can be passed as arguments.

Note 23-05: (DevEnv) Defined the macro SDK_WEAK_SYMBOL for the declaration of weak symbols

The macro SDK_WEAK_SYMBOL is defined as a modifier for the declaration of weak symbols. In CodeWarrior, it is defined as: #define SDK_WEAK_SYMBOL __declspec(weak)

Note 23-06: (FS) Fixed bug that occurred during loading of compressed overlay

Due to the correction made in RC5, there was a problem where the process did not complete properly because of the internal determination error when the function that loads overlays was called in an application built by specifying NITRO_COMPRESS. This has been fixed.

Note 23-07: (MI) Added an alignment option for data compression

Added the option -A4 that adjusts the ending with 0s to make the output file size to be multiples of 4 when compressing data with ntrcomp.

Note 23-08: (PRC) ASSERT statements in functions were modified

In the function PRC_GetRecognizedEntriesEx_Superfine, the conditions to determine validity for SDK_ASSERT were too strict. These were modified to be appropriate.

Note 23-09: (PRC) Return value types changed

The return values of the following function groups were changed from void to BOOL, so that they indicate whether it succeeded or failed .

Note 23-10: (WM) Fixed bug related to disconnection timing

Due to the correction made in RC5, there was a problem where the parent's ARM7 performed invalid process if a child connected or disconnected before WM_StartMP function was called. This problem is fixed. This problem does not usually occur in applications that call WM_StartMP function immediately after WM_StartParent function succeeds.

Note 23-11: (WM) Fixed bug that occurred when minPollBmpMode was used in WM_StartMPEx

Due to changes made in RC5, there was a problem where send was not performed properly if minPollBmpMode in the WM_StartMPEx function was set to TRUE. This problem was fixed.

Note 23-12: (WM) Communications content is no longer erased

Under certain signal conditions, although this occurred rarely, communication content was erased. This problem was fixed.

Note 23-13: (WM) Send queue for port communications was reduced

Previously, the send queue for port communications had 64 levels. This was changed to 32 levels in order to reduce memory usage by the wireless communications library. For one pair of Data Sharing, the send queue is at most two levels.

Note 23-14: (WM) Changed WMPortSendCallback structure

The structure passed to the callback for WM_SetMPData* functions has been changed. Previously, destBitmap was specified, but for AID of the disconnected DS system, the bit value that corresponded to the restBitmap field was indeterminate. This has been changed so that it is always 0. In addition, a sentBitmap field that stores an AID bitmap of a partner capable of sending was newly added. To determine if any DS systems did not receive the transmission because they were not connected or disconnected, compare the destBitmap field with the sentBitmap field.

Note 23-15: (WM) Revisions and improvements to status check

The status check for the ARM7 wireless communications drivers have been improved. As a result, the callback for the following functions can return the WM_ERRCODE_ILLEGAL_STATE error.

Also, corrected range checking for wepkeyid in WM_SetWEPKeyEx function.

Note 23-16: (WM) Revised return value for WM_EndKeySharing

Previously, WM_EndKeySharing function always returned an error. This was fixed.

Note 23-17: (WM) Corrected WH sample demo.

We made the following revisions to the sample source code in $NitroSDK/build/demos/wireless_shared/wh:

Known issues in SDK 2.0 release version

There were none.


NITRO-SDK Version 2.0 RC5

(2005/02/25)

Note 22-01: (ARM7) Added and deleted components

A new component, ichneumon, arranges the execution codes for wireless functionality in VRAM. For details, see AboutComponents.pdf, which was also added. The idle and ferret components, which were provided with NITRO-SDK through 2.0 RC4, are no longer supported.

Note 22-02: (CHT) Corrected sample demo.

In the demo that demonstrates the use of the PictoChat functionality, there was a spelling error in the name of the function that enables/disables the PictoChat functionality in WC, which is the common wireless control module.

Note 22-03: (DevEnv) Revised source code to support pedantic warning options

We revised the source code in the library and demos so that some pedantic warning options are supported. We improved the section that converted integer types that are the same size, but do not both have a symbol.

Note 22-04: (FS) Added overlay-staticinit demo

Added a new sample demo overlay-staticinit, which demonstrates the explicit addition of a static initializer in the C/C++ source.

Note 22-05: (FS) Corrected internal malfunction of archive suspended state

Previously, when an archive was unloaded and then loaded, the internal state would partially change to suspended, and asynchronous commands that were issued repeatedly and held would not be executed. This bug was fixed.

Note 22-06: (FS) Corrected internal error detection in FS_LoadOverlayImage

If the file that corresponds to the specified overlay was opened successfully during the internal process of the FS_LoadOverlayImage and FS_LoadOverlayImageAsync function, TRUE was always returned without reflecting the result of the next FS_ReadFile function. This has been changed to reflect the result.

Note 22-07: (GX) Correction of type returned by GX_GetOBJVRamModeBmp

The return value of GX_GetOBJVRamModeBmp function was changed from a GXOBJVRamModeChar type to a GXOBJVRamModeBmp type.

Note 22-08: (GX) Deleted invalid member in GXBg23ControlAffine structure

The GXBg23ControlAffine structure contained the invalid member colorMode. Affine BG is fixed to 256 colors so this member is invalid. The colorMode definition was deleted from the GXBg23ControlAffine structure.

Note 22-09: (GX) Fixed bug in G2_GetBG3Control* and G2S_GetBG3Control* functions

When G2_GetBG3Control* and G2S_GetBG3Control* functions were called, access to incorrect addresses occurred. This problem was fixed.

Note 22-10: (GX) Added function group that tries to allocate VRAM

The newly added WVR library (for details, see Note 22-40) and the ichneumon component (for details, see Note 22-01) allow you to use the ARM7 wireless library in VRAM. While the wireless library is being used, the VRAM bank cannot be used for anything else. The previously available GX_SetBankFor* function group was changed so that if a VRAM bank that has been locked by the WVR library is reallocated, OS_Panic is called and the operation stops. Also, the GX_TrySetBankFor* function group, which tries to allocate VRAM banks separately was newly added. Note that with these new additions, OS_Init function needs be called before calling GX_Init function.

Note 22-11: (MATH) Fixed problem with in-lining of MATH_CountLeadingZeros using code32.h

The MATH_CountLeadingZeros function is replaced by an inline function using the ARM's clz instruction when outputting ARM code and a function equivalent to the clz instruction when outputting Thumb code. However, when the default code was set to Thumb code using NITRO_CODEGEN=THUMB and output code was switched using #include <nitro/code32.h>, the MATH_CountLeadingZeros function was not switched to an inline function. This bug was fixed.

Note 22-12: (MB) Added interface for setting user data in the beacon of a DS download play parent.

The following functions were added as interfaces that allow the user application to place data in the beacon transmitted by the DS download play parent. A fake multiboot child machine using MB_FakeInit can use this interface to receive specific accompanying information about the user from the parent before a connection is made. The presence or absence of this data will not affect the operation of a DS download child at IPL.

Note 22-13:(MI) Added Compression Function

The following new functions can compress data in a DS application at runtime:

Note 22-14: (MI) Added function for setting the AGB Game Pak ROM access cycle

The MI_SetAgbCartridgeFastestRomCycle function was added. This function sets the ROM access cycle for AGB Game Paks. It sets 8-4 access in the DS and is equivalent to 3-1 weight in the AGB.

Note 22-15: (MI) Resolved problem with multiplex DMA during startup

"Note 21-33: (MI) Dealt with multiple DMA bug," after using DMA0, a dummy empty DMA transfer is performed, but new processing performs a dummy empty DMA transfer also at OS_Init to handle the first DMA transfer that uses DMA0.

Note 22-16: (MIC) Automatic sampling engine was optimized

The ARM7 processing of the microphone's automatic sampling engine is now optimized for the ARM7. This change fixed the problem with freezing that occurred when a sampling rate of 32 KHz was used in the mic-1 demo.

Note 22-17: (OS) Link to Interrupt Overview page added

A link to the Interrupt Overview page was added to the OS Overview page. The Interrupt Overview page was added in NITRO-SDK2.0 RC4, but there was no link to it.

Note 22-18: (OS) Added functions to control thread scheduling

Functions that pause and restart thread rescheduling were added to the OS library. They are OS_DisableScheduler and OS_EnableScheduler.

Note 22-19: (OS) Fixed problem with cache lockdown functions

The functions DC_LockdownRange and IC_LockdownRange, which locked the cache to prevent its destruction, left some regions unlocked. This problem was fixed.

Note 22-20: (OS) Added functions to release locked cache

The following functions were added. They release locked blocks in the cache and make it possible to update the cache again.

Note 22-21: (OS) Fixed cache problem with OS_ResetSystem

Process was added so that the OS_ResetSystem function internally calls DC_WaitWriteBufferEmpty after calling DC_FlushAll. This is because the cache content remaining before reset could overwrite the program data loaded by OS_ResetSystem.

Note 22-22: (OS) Added OS_GetITCMAddress function

Added the function OS_GetITCMAddress, which obtains the base address of instruction TCM. The return value of this function is always the constant 0x01FF8000.

Note 22-23:(PM) Changed the recovery process after transitioning from LCD OFF state to sleep mode.

If sleep mode was entered from LCD Off mode, an error occurred with the graphics mode state, and the screen was not displayed in some cases, after the Nintendo DS was restored from Sleep mode. Now, the DS will return to LCD Off mode. This will have no effect on the restore process if the DS entered Sleep mode from Active mode.

Note 22-24: (SND) Changed distributions of sound library

The sound library distributed with NITRO-SDK is now the 2005/02/22 version.

Note 22-25: (WM) Fixed packet duplication problem during sequential communications

During sequential MP communications using ports 8 though 15, packets would be duplicated under certain conditions. This problem was fixed.

When all of the above conditions were met, an identical packet was received in the next transmission as a new packet. This bug would appear as freezing and synchronization problems during DataSharing. If multiple packets are not packed into one payload, this problem will not occur. Accordingly, the problem will not occur if double mode is not used or if the max transmission size set with WM_SetParentParam only allows one DataSharing packet to be sent at a time.

Note 22-26: (WM) Clarification of restrictions during sequential communication using minPollBmpMode

Added description of restrictions to reference for WM_StartMPEx function. If sequential communication is used when the minPollBmpMode argument is set to TRUE with this function, you should periodically send "keep alive" data to all the children over all the ports used for sequential communication so that children not receiving over 60 frames of data will still be considered alive.

Note 22-27: (WM) Fixed problem with restBitmap member in WM_PortSendCallback structure

When WM_SetMPDataToPort* transmits unsuccessfully, the WM_ERRCODE_SEND_FAILED acknowledgement callback is passed a restBitmap that contains invalid members. This problem was fixed.

Note 22-28: (WM) Fixed problem with WM_Reset function

If WM_Reset were called during wireless communication when the parent was connected to a child, in some cases, processing would not be completed for a long period (normally 4 seconds, but it can be changed using WM_SetLifeTime) depending on conditions. This problem was fixed.

Note 22-29: (WM) Fixed operation of WM_IsBssidEqual and WM_CopyBssid and added 16-bit version

WM_IsBssidEqual and WM_CopyBssid implicitly required arguments with addresses that were aligned to 16-bit boundaries, and thus they did not operate correctly with odd-numbered addresses. This bug was fixed. We also added the new functions WM_IsBssidEqual16 and WM_CopyBssid16, which have the same functionality as the old versions.

Note 22-30: (WM) Added warning about order of WM asynchronous function callbacks and intermediate acknowledgements

With WM_StartParent and WM_StartConnect, the event acknowledgement following a successful connection is sometimes called before the callback indicating successful completion of asynchronous processing. A warning to this effect was added to the reference manual.

Note 22-31: (WM) Fixed problem with callback after resend

When a resend occurred while data was being sent in a specific pattern, the data that was supposed to be sent would vanish and the callback indicating completion of transmission was not sent. This problem was fixed. This problem can occur when using broadcast communication and communication to certain children at the same time.

Note 22-32: (WM) Corrected WH sample demo bug.

We made the following revisions to the sample source code in $NitroSDK/build/demos/wireless_shared/wh:

Note 22-33: (WM) Corrected WFS sample demo bug.

We fixed the following problem with the demo source code in $NitroSDK/build/demos/wireless_shared/wfs.

Note 22-34:(WM) Added New Function

The following APIs were added to provide processing under more precise settings.

When we added WM_StartConnectEx, we in-lined the existing WM_StartConnect function. When building with previous versions of NITRO-SDK, object files and library files that internally call WM_StartConnect will generate a "function undefined" error during linkage with the program. You must rebuild these files.

Note 22-35: (WM) Improved internal operation during start of MP communications

When starting MP communications with WM_StartMP(Ex), in some cases, the midstream acknowledgement of MP communication was called before the callback of the function was called. This was fixed. We changed the internal operation so that MP-related midstream acknowledgements will not occur before the callback of WM_StartMP(Ex). This change caused the operation of the ARM7 to stop in some rare instances if a child connected and disconnected repeatedly. This problem was fixed. Also, we found that if a child disconnected from the parent when WM_StartMP(Ex) was called but before the callback was called, the library would malfunction in some cases. This problem was fixed.

Note 22-36: (WM) Fixed problem with internal operation at parent startup

In rare instances, a parent Nintendo DS using wireless communication would fail to send a beacon even after it successfully became a parent. This was fixed.

Note 22-37: (WM) Changed callback for WM_SetMPData* functions

Previously, the proper WM_SetMPData* function was not sent a callback regarding the transmit data left in the transmit queue at the end of communication. Now a callback is always returned. As a result of this change, all asynchronous APIs for WM now return at least one callback.

Note 22-38: (WM) Corrected problem that occurred when parent near connection capacity connected with additional children

We confirmed that problems with library operation could occur after a wireless parent nearing its connection capacity connected with additional children, causing it to exceed its connection capacity. This problem was fixed.

Note 22-39: (WM) Official release of description document

The description document for the wireless communication library was officially released as docs/TechnicalNotes/AboutWirelessManager.pdf.

Note 22-40: (WVR) Wireless driver drive control library added

With the addition of the ichneumon component (details are in Note 22-01), we also added the WVR library, which deploys the wireless executable code in VRAM, starts/stops it and removes it, when this component is in use.

Known Issues in SDK 2.0 RC5

There were none.


NITRO-SDK Version 2.0 RC4

(2005/01/14)

Note 21-01: (CHT) Added PictoChat-related libraries

Created a CHT library to handle the PictoChat-related API group. The following functions are included in the CHT library:

As of January 13, 2005, there is no description of how to use the PictoChat-related library in the DS Program Guidelines. If you are considering using this library, first contact NOA support.

Note 21-02: (MATH) Created MATH category

MATH was created as a category for mathematical functions. MATH_ILog2 is included, in addition to functions min and max. MATH_ILog2 calculates log2(x) in integer range at high speed on the ARM9.

Note 21-03:(MATH) Added function for random numbers.

The following functions have been added as random number libraries with the linear congruential method.

Also, $NitroSDK/build/demos/math/rand_lc was added as a demo.

Note 21-04: (MB) Fixed the bug in the pseudo Single-Card Play child device

In the pseudo Single-Card Play child device library MB_FakeChild, there was a bug that cut communication with a FATAL error when an MP communication error, which can be retried, occurred. This bug was fixed.

Note 21-05: (MB) Fixed the bug in internal thread when MB library ends

When set to use internal thread with MB_ReadSegment function call, the state management of internal threads did not occur correctly when ending library with the MB_End function, and operation after reinitialization was abnormal. This bug was fixed.

Note 21-06: (MB) Fixed internal operation when MB library ends

When terminating the MB library with the MB_End function or the MB_EndToIdle function, incorrect operation occurred after MB library termination due to its timing and to MB internal events that occur during the termination process. This bug was fixed.

Note 21-07: (MB) Added a demo to pre-deliver as-needed data for entry child

Added MBP_USING_PREVIOUS_DOWNLOAD switch in the following source used by the multiboot demo.

When this switch is ON, starts download of as-needed preceding data for entered child device. Using the sequence with this switch ON, it may be possible to keep to a minimum the download wait time, depending on the timing of child connection.

Note 21-08: (WM) Added a function to wireless library

Added the function WM_IsExistAllowedChannel for confirming the presence or absence of a usable channel for wireless communication. This function does not depend on the internal state of the WM library, and only determines the existence of a permitted channel.

Note 21-09: (WM) Added stricter exclusive control to WM asynchronous function group

For the WM asynchronous function group, operation is not guaranteed for calls of other functions during asynchronous processing. However, for the WM_SetMPData( ToPort(Ex) ) function only, it is possible to reserve send data by consecutive calls. In this case, the actual data to send may break if you consecutively call over ten times. For this reason, we fixed it so that it performs stricter exclusion processing. As a result of the fix, the method was changed so that WM_ERRCODE_FIFO_ERROR is explicitly returned by WM_SetMPData( ToPort(Ex) ) when performing a send requests where data is likely to break.

Note 21-10: (WM) Fixed power management setting of MP communication

In MP communication, the power save time of the child device was, on rare occasions, longer than normal. This bug was fixed.

Note 21-11: (WM) Improved WFS sample

In the sample demo with FS using wireless, the internally-set receive callback function was not cleared when WFS_End is called, and the internal callback function was called unintentionally. This bug was fixed.

Note 21-12: (WM) Fixed the demo that determines channel used by parent device

The demo was fixed so that it decides the channel using a random number when there are multiple channels using the same wave. This is in order to better distribute channels to use when the parent device decides the channel in the wireless demo. This process is reflected in the following demos:

Note 21-13:(FS) Updated Feild System Document

Fully updated the content of the document AboutFileSystem.rtf, which describes the file system library, and added it as AboutFileSystem.pdf.

Note 21-14: (GX) Added functions that read drawing register

Added Get functions that read drawing register. The functions are shown below.

Note 21-15: (GX) Eliminated the definition of VRAM expansion flag of bitmap OBJ for sub 2D engine

In the sub 2D engine, there was a bug where VRAM extension flag of a non-existent bitmap OBJ was defined as the define value. The following definitions were eliminated.

Also, the GXS_SetOBJVRamModeBmp function was fixed so that it checks, using ASSERT, arguments that use this flag.

Note 21-16: (GX) Distinguished transfer method depending on data size

Fixed so that, during data transfer with GX, data is copied by the CPU without using DMA when the data size is small. Transfer by synchronous process is normally processed on the CPU for transfers under 28 bytes for 16-bit copies, and under 48 bytes for 32-bit copies.

Note 21-17: (GX) Fixed ASSERT bug when using GX_SetBankForBGEx

When performing VRAM bank settings using the GX_SetBankForBGEx function, the warning by ASSERT did not appear even when loading data in an incorrect address during the DEBUG build. This bug was fixed.

Note 21-18: (GX) Added the GX_ResetCapture function

The capture enable flag set with the GX_SetCapture function is usually automatically reset after completion of capture. However, the GX_ResetCapture function was also added as a separate cancellation function that can reset. However, be aware that you cannot abort a capture that is already in progress.

Note 21-19:(CARD,CTRDG) Improved Forced Stop Processing

In the force stop process performed when hot swap of DS Game Card or Game Pak is detected, the wave send sometimes didn't stop completely during wireless communication. Also, it was sometimes unclear whether the LED was illuminated. These bugs have been fixed.

Note 21-20: (CARD) Eliminated the CARD_ReadRomID function

The CARD_ReadRomID function has been eliminated because there is no purpose in using it from a user application.

Note 21-21: (CARD) Added a function for setting the NITRO-CARD access permission state

Added a function for getting and setting the access permission state in order to prevent child device programs started with wireless download from carelessly accessing the NITRO-CARD. When applications not started from the NITRO-CARD access the NITRO-CARD, you must call the CARD_Enable function after deciding according to the rules in the Programming Guidelines.

Note 21-22: (TP) Fixed the behavior of the TP_GetLatestRawPointInAuto function

In the TP_GetLatestRawPointInAuto function, all values sampled in the interval of the previous one frame were treated as touch OFF when they were touch ON and INVALID. It was fixed so that in this situation also the validity value is set and returned as touch ON.

Note 21-23: (TP) Improved the countermeasures for noise the touch panel receives from the LCD

When performing touch panel sampling at a specific timing, there was a combination, depending on the hardware, where a lot of noise from the LCD was picked up. For this reason, we improved the countermeasures against noise during sampling.

Note 21-24: (MIC) Added an API for adjusting the sampling rate during auto-sampling

Added the following APIs that dynamically change the sampling rate without stopping sampling while auto-sampling is running.

Also, fixed part of the sample demo mic-1, and made the sample also use this API.

Note 21-25: (OS) Added an interrupt check flag for application (2nd notice)

The interrupt check flags OS_IE_USER_FLAG0 and OS_IE_USER_FLAG1 were only available on the ARM7. These flags were added in "Note 6-35: (OS) Added interrupt check flags for applications" (NITRO-SDK Version 1.2 PR1). These are now also available on the ARM9.

Note 21-26: (OS) Added OS_DestroyThread function

Added OS_DestroyThread(), which specifies and terminates a thread. (This function was originally prepared as an internal function.)

Be careful when using this function, as it is a little risky to terminate another thread without notice.

Note 21-27: (OS) Eliminated OS demo interrupt-key-1, and modified WaitIrq-2

"Note 13-18: (PAD) Eliminated PAD_SetIrq() and PAD_ClearIrq()" (NITRO SDK 2.0 PR4 release), use of key interrupts was prohibited. Therefore, interrupt-key-1 (key interrupt demo) in the OS demo has been eliminated. Furthermore, WaitIrq-2, which used key interrupts, was changed so that it uses timer interrupts.

Note 21-28: (OS) Added OS_EnableMainExArena() and OS_DisableMainExArena()

Up to now, in order to use extended main memory arena, it was necessary to make OS library with NITRO_MEMSIZE=8M specified. However, it is now possible to declare whether or not to use extended main memory arena by specifying OS_EnableMainExArena() and OS_DisableMainExArena() before OS_Init() (OS_InitArena() when not using OS_Init()). However, extended main memory arena can never be used when operating in an environment (including actual equipment) with only 4 MB of main memory installed.

Note 21-29: (OS) Fixed OS_DisableWriteBufferForProtectionRegion()

There were mistakes in the OS_DisableWriteBufferForProtectionRegion() function, and it behaved the same as the OS_EnableWriteBufferForProtectionRegion() function. This has been fixed.

Note 21-30: (OS) Added and modified the heap function

Added the following functions related to heaps.

Also, changed the type of OS_CheckHeap() from long to s32.

Note 21-31: (MI) Added support for streaming expansion of compressed data

Supported streaming expansion of compressed data. By using this function, it is possible to perform expansion with a smaller buffer while reading LZ-compressed data, Run Length compressed data, or Huffman-compressed data from a Game Card. The following demo has been added as a sample that actually performs streaming expansion of data:

Note 21-32: (MI) Fixed the bug in MI_SendGXCommandAsync*()

For MI_SendGXCommandAsyncFast() and MI_SendGXCommandAsync(), the volatile specification was not appropriate and caused the termination wait to work improperly when the specified DMA was already in use. This has been fixed.

Note 21-33: (MI) Resolved problem with multiplex DMA

Created restrictions on source address when using DMA0 to deal with the hardware bug when there are multiple DMAs. Specifically, made it impossible to specify 0xmmnnnnnn (mm = 0x04 and 08-ff, nnnnnn is arbitrary) in source address of DMA0. These restrictions also apply for source address when transfer ends.

Also, dummy empty DMA transfer is performed after using DMA0.

There are no restrictions on DMA1 through DMA3.

Note 21-34: (PXI) Modified the PXI initialization process

Changed order of PXI control register clear and PXI interrupt setting from "interrupt setting -> register clear" to "register clear -> interrupt setting".

This was done because with the previous order, data remained in the PXI FIFO register when setting an interrupt, and an interrupt occurred at that point.

Note 21-35: (DevEnv) Added a size check option for clone boot to makerom

In applications using the clone boot function, added functionality to makerom that determines at time of ROM image creation whether or not the region for adding authenticator with the attachsign tool can be allocated in/on the ROM image.

This function is enabled by adding -A as the start option of makerom. When using a makefile, it is best to set option -A for MAKEROM_FLAGS as follows:

MAKEROM_FLAGS = -A

Note 21-36: (DevEnv) Standardized the document format

Until now, the documents under $NitroSDK/docs/TecnicalNotes were in various formats such as doc and rtf. These have been converted and standardized to pdf format.

Note 21-37: (DEMO) Added the tips/MyBuildMessage demo

Provided demo in $NitroSDK/build/demos/tips/MyBuildMessages that changes link message and compile during/when make -s.

Note 21-38: (TOOL) Reduced the size of the emuchild output file

The emuchild.exe that prearranges signature to binary when using clone boot normally output full-sized files. However, to reduce the size of output files, it was changed so as to exclude data after the static region of the ARM9 and 7. Use the added -f option to output full-sized binary.

Note 21-39: (SND) Changed distributions of sound library

The sound library distributed with NITRO-SDK is now the 2004/12/27 version.

Known Issues in SDK 2.0 RC4

There were none.


NITRO-SDK Version 2.0 RC3

(2004/11/29)

Note 20-01: (MB) Added pseudo Single-Card Play child function

The function was added to allow a pseudo Single-Card Play child device to be entered into the Single-Card Play parent device in the application that is running from a DS card. By using this feature, it is possible to have both the Single-Card Play child device and the Multi-Card Play child device in the wireless play.

Also, as a demo program, the fake_child demo that makes an entry to the Multiboot-Model parent device was added to the following folder.

$NitroSDK/build/demos/mb/fake_child

Note 20-02: (MB) Corrected the problem of the MB_GetParentSystemBufSize() function

In NITRO-SDK 2.0 RC2, there was a problem that the buffer size that was returned by the MB_GetParentSystemBufSize() function was smaller than the actual value by WM_SYSTEM_BUF_SIZE bytes. This problem was solved. However, MB_SYSTEM_BUF_SIZE that is defined in nitro/mb.h for the same buffer size is not affected by this problem.

Note 20-03: (MB) Expanded the features of the MB_ReadSegment() function

Expanded the feature so that it is possible to specify a buffer length value that is smaller than the return value of the MB_GetSegmentLength() function which would be passed as an argument to the MB_ReadSegment() function. The smallest size is defined as MB_SEGMENT_BUFFER_MIN. For details on the instance where this extended function is used, see the reference for the MB_ReadSegment() function.

Note 20-04: (MB) Changed the names of the MB_StartParentEx() and MB_EndEx() functions

To integrate with other categories, the current MB_StartParentEx() and MB_EndEx() functions were changed to MB_StartParentFromIdle() and MB_EndToIdle(). The old names have been eliminated.

Note 20-05: (MB) Added the MB_DisconnectChild() function

There was a problem that caused inconsistency in the internal state of the MB library when a child was disconnected from a parent by using the WM_Disconnect() function while distributing Single-Card Play data. MB_DisconnectChild() function which allows for the safe disconnection of a child even during MP communication.

Note 20-06: (MB) Eliminated the parent receive buffer size change

The following problems were found when the receive buffer size setting was changed with the Single-Card Play parent.

For this reason, the specification was changed so that the receive buffer size of the MB parent cannot be changed. Because of this, the argument that sets the receive buffer size in the following functions was eliminated.

Note 20-07: (MB) Added clone boot sample.

Added a sample clone boot that illustrates the creation procedure of the clone boot program.

Note 20-08: (MB) Corrected the problem of retries when reconnecting to the Multiboot-Model parent

There was a problem that caused the retry to fail if the connection to the parent failed even once when reconnecting to a parent after a child booted in the multiboot-Model demo.

This problem was solved as shown below:

Check the points above if you create an application by using this demo as an example.

Note 20-09: (MB) Added a document about the Single-Card Play procedure

Added a document regarding the Single-Card Play procedure, reconnection with the Single-Card Play parent, and performing a clone boot in $NitroSDK/docs/TecnicalNotes/AboutMultiBoot.doc.

Note 20-10: (WM) Corrected the ARM7 wireless library

In the release and debug versions of the mongoose component, the work area that is required for operating the driver cannot be allocated in some cases. Also, there was a problem with the process of reusing the mongoose work area in all versions. When the APIs were called in a specific order and the connection and disconnection were repeated, the work area may run out and the connection process may not work properly. These bugs have been fixed.

Note 20-11: (WM) Introduced the MP communication life time

When the ARM7 on a child device freezes because of a change to the halt state while performing communication, the child device's wireless hardware automatically continues to return Null and the generated error cannot be detected by the application on the parent device. To deal with this issue, the internal process was changed to cut off the connection if a child device continues to return a Null value for a certain period of time.

When the ARM7 on a parent device freezes because of a change to the halt state, the parent device's wireless hardware automatically continues to keep sending a beacon and the generated error cannot be detected by the application on the child device. A change was made to automatically disconnect if the no MP frames are received from the parent device for a certain period of time. The default value is set to 4 seconds on both the parent and child devices.

In addition to this change, the mpLifeTime argument was added to WM_SetLifeTime().

Normally, the Null response or MP frame send skip occurs when the load on the ARM7 is temporarily increased. They do not occur continuously.

Note 20-12: (WM) Added the "Wireless Communication Tutorial"

Published the "Wireless Communication Tutorial" – a tutorial for creating the wireless communication program based on the wireless communication program sample dataShare-Model that uses the WM library.

Note 20-13: (FS) Added the FS_LoadOverlayImageAsync() function

Added the FS_LoadOverlayImageAsync() function that loads overlays asynchronously.

Note 20-14: (FS) Eliminated the FS_RegisterOverlayToDebugger() function

The feature of the FS_RegisterOverlayToDebugger() function that registers overlays that were loaded asynchronously to the debugger was integrated into FS_StartOverlay(). Because of this, it is not necessary to call the FS_RegisterOverlayToDebugger() function explicitly. To maintain compatibility, this API was left as an empty function.

Note 20-15: (GX) Added the GX_GetVCountEqVal() function and changed other VCOUNT match interrupt related API

The GX_GetVCountEqVal() API is provided to obtain the current setting of the VCOUNT match interrupt. Also, the name of the related APIs GX_SetVCounterEqVal() and GX_IsVCounterEq() were changed to GX_SetVCountEqVal() and GX_IsVCountEq(). The old API names can be used by defining a different name in the macro.

Note 20-16: (GX) Added the GX_SetBankForBGEx() function

The GX_SetBankForBGEx() function was added as a function to use the combination that cannot allocate consecutive addresses such as VRAM-A and VRAM-B for the VRAM bank setting for the BG. By using this function, VRAM-EFG is allocated to 0x6000000-0x6017FFF and the biggest one of the VRAM-ABCD is allocated to 0x6020000-0x607FFFF.

demo/gx/UnitTours/2D_CharBg_BankEx was added as a demo that uses this function.

Note 20-17: (CARD) Changed the card removal post-processing function CARD_TerminateForPulledOut()

Changed the process that prevents the CARD_TerminateForPulledOut() function (that is called by default after a card removal is detected) from stopping by using the OS_Terminate() function to stopping normally if the cover is open and to forcibly turn the power OFF if the cover is closed.

Note 20-18: (MI) Added the Difference Filter Restoration function

Added the following functions that restore the data that was filtered with ntrcomp by using runtime.

MI_COMPRESSION_DIFF was added to the data type that is obtained with the MI_GetCompressionType() function.

Note 20-19: (MI) Added the Memory Clear Process function only for startup

The function which CPU clears memory was defined in crt0.c, and other libraries (OS and MI) were using this function. When a Nintendo DS multiboot child device cancels out of the data receive process, there were instances in which this region was destroyed. The memory clear function that is used in crt0 and the memory clear function that is used by other libraries were separated.

Note 20-20:(OS) Corrected problem with VAlarm

If multiple alarms were set to VAlarm, there were some instances in which the order of the alarm was not controlled properly depending on the V count that was set, the number of lines allowed for the delay, or the timing in which the interrupt is generated. Because of this problem, the automatic sampling of the touch panel during the wireless communication was not performed properly in some cases. This bug was fixed.

Note 20-21: (OS) Made debug functions to weak symbols

The following OS functions for debugging were made to be the weak symbols. If the user defined the function with the same name, that function will have priority.

The entities of OS_Panic(), OS_Warning(), OS_TPanic(), and OS_TWarning(), which are OSi_Panic(), OSi_Warning(), OSi_TPanic(), and OSi_TWarning() respectively, were also made to be weak symbols.

Note 20-22: (SND) Corrected the problem that stopped the SND_InvalidateWaveData() function from generating some sounds

There was a problem in which the SND_InvalidateWaveData() function stopped the generation of other sounds that are not related. Because of this problem, if the sound data in the memory was deleted while in the surround mode, the sound was not generated until the surround mode was stopped. This bug was fixed.

Note 20-23: (MIC) Corrected the problem in which the MIC_GetLastSamplingAddress() function did not return the accurate address

The following are problems in the MIC_GetLastSamplingAddress() function.

These problems were corrected, and there was a specification change for the MIC_GetLastSamplingAddress() function to return the memory location that stores the last sampled data, or return a value of NULL if the data was not sampled even once.

Note 20-24:(PRC) Changed identifier name

Of the pattern recognition APIs, the identifier names that contained the word "regularize" were changed to "normalize."

Member variables of the structures PRCInputPatternParam
PRCPrototypeDBParam
PRCPrototypeList were changed.

The structure member variables of each of these have changes. Also, the constant value in the C program which is output by $NitroSDK/tools/bin/pdic2c.pl was changed to PDIC_NORMALIZE_SIZE.

Note 20-25: (WM) Enhanced the WM_SetMPDataToPort*() argument check

To prevent allocating the same buffer to the sendBuf argument of WM_StartMP*() and the sendData argument of WM_SetMPDataToPort*(), changes were made to generate an error if these two buffers are the same.

Known problems with SDK 2.0 RC3

This note pertains to the GX_SetBankForBGEx() function that is described in "Note 20-15: (GX)." The GX_GetVCountEqVal() function was added and the other VCOUNT match interrupt related API was changed with this version. The region check will not be performed for the DEBUG build. When the invalid address was written, it will not be stopped by ASSERT. These problems will be fixed in the next or later versions to be released.


NITRO-SDK Version 2.0 RC2

(2004/11/04)

Note 19-01: (WM) Changed the return value of WM_GetAllowedChannel() when an error occurs

In WM_GetAllowedChannel(), when an error occurs (WM_Init() was not called in advance), the return value, which was previously 0, is now 0x8000.

This allows you to distinguish between this error and the error that occurs when there is no available channel (return value of 0x0000).

Note 19-02: (WM) Changed part of the internal specifications of the WM_End library termination function

The WM_End() function used to perform the library force quit process and memory release after the user callback was called. But we changed the method so that all end processes are completed before the callback is called.

This change is in response to requests from people who want to call the next WM_Initialize() function in the callback for the WM_End() function.

Note 19-03: (WM) Changed WMDisconnectCallback structure

We added a new structure that is passed to the callback for WM_Disconnect() and WM_DisconnectChildren(). This structure is similar to the WMCallback structure, but has additional members, which contain an AID bitmap of the devices that requested the disconnect and an AID bitmap of the devices that were disconnected.

The member variables at the beginning of the newly created WMDisconnectCallback structure match those of previous WMCallback structure and the new structure can be treated as a WMCallback structure.

Note 19-04: (WM) Corrected initialization of WM_Reset()

When WM_Reset() was called after MP communication was established, the automatic processing for MP communication would not be reset.

We corrected this bug and now the automatic processing is always reset. This may reduce the processing burden.

Note 19-05: (WM) Corrected processing at end of data sharing

If MP communication occurred between WM_EndDataSharing() and WM_EndMP(), erroneous processing occurred in some cases. This bug was corrected.

Please note that if WM_EndDataSharing() is called immediately before calling WM_StartDataSharing(), a problem may occur.

Note 19-06: (WM) Changed upper limit of data size in data sharing

When using data sharing with libraries before RC1, the maximum shared data size multiplied by the number of shared machines was 252 bytes. We expanded this value to 508 bytes. As a result, the size of the WMDataSharingInfo structure has increased by 1K byte. To return to the previous state, change WM_DS_DATA_SIZE_508 in wm.h to #undef.

Note 19-07: (MB) Corrected invalid nameLength problem in MBUserInfo

When setting MBUserInfo, which is an argument of MB_Init(), the termination of the user name was indicated by a NULL, and even when the nameLength variable was changed, the change was not reflected on the child screen.

This bug was fixed.

Note 19-08: (MB) Added MB_StartParentEx() and MB_EndEx()

We added MB_StartParentEx(), which can be called even when the wireless library is in the idle state, and MB_EndEx(), which sets the wireless library to the idle state and then stops. They correspond to the standard MB_StartParent() and MB_End(). In other respects, they can be used in the same way as the standard functions.

Note 19-09: (MB) Added warning to MB_UnregisterFile() reference

If a multiboot parent running the MB library calls MB_RegisterFile() and MB_UnregisterFile() alternately to dynamically change a saved program, if the GGID of the program before the change matches the GGID of the program after the change, the change is not detected on the IPL side.

We have added a warning about this to the reference for MB_UnregisterFile().

Note 19-10: (MB) Added a demo that surveys the channel signal usage

We added a demo that surveys signal usage during MB preprocessing for multiboot. It is in $NitroSDK/build/demos/mb/mbm. Because MBM_MeasureChannel() will get the optimal channel and then turn off power to the wireless system, after obtaining the callback, you should begin multiboot processing from MB_Init() as usual.

Note 19-11: (MB) Implemented new method to set the tgid value in the multiboot demo

In the multiboot sample demo's parent operations, we changed the tgid setting value, which is used to manage wireless connection sessions, so that when possible, it changes each time the power is turned ON. The minute and second values from the current time obtained with RTC are used as tgid values.

Note 19-12: (MB) Changed part of the internal specifications of the MB_End library termination function

In the MB_End() function, library end processing such as memory release was performed after the user callback was called. Revised it so that all end processing is completed before the callback is called.

This revision is the same as Note 19-05, and is to deal with the situation where MB re-initialization is performed in the MB_End() user callback. This corrected a problem where the documentation and actual operation did not match.

Note 19-13: (WBT) Corrected error in wbt-fs sample demo that occurred during disconnect

When connection with parent failed during child's file access in the wbt-fs sample demo, file operations invoked thereafter would fail to complete. This problem was fixed.

Note 19-14: (WBT) Corrected wbt-fs sample demo

During caching of received data in the wbt-fs sample demo, some areas that should have been flushed were invalidated.

This problem was fixed.

Note 19-15: (WBT) Corrected WBT library

Two problems with the WBTlibrary were corrected.

Note 19-16: (FS) Added the FS_RegisterOverlayToDebugger() function

We added the function FS_RegisterOverlayToDebugger() to the FS library. This function is used to notify the debugger of an overlay load when you use a series of low-level functions (such as file read) to load an overlay module rather than using high-level functions, such as FS_LoadOverlay().

If you use FS_GetOverlayFileID(), FS_ReadFile() and FS_StartOverlay() in combination to load an overlay, call this function before calling FS_StartOverlay(), so that you will be able to trace the operation in the debugger.

We added a demo, $NitroSDK/build/demos/fs/overlay, which contains an example of the function's usage.

Note 19-17: (OS) Changed V-count alarm processing

We changed the routine for alarms resulting from the V-count (VAlarm). Previously, the "first VAlarm in the loop resulting from an interrupt" only calls a handler when the V-count was the precisely the specified value. This resulted in processing delays in the wireless library and other libraries that relied on this feature.

The "first VAlarm in the loop resulting from an interrupt," is, as its name suggests, a VAlarm handler called by a V-count interrupt. After this handler is called, the call count of other registered alarms is checked and handlers are called if necessary.

This processing was changed so that the VAlarm handler called by the interrupt is called even when the V-count exceeds the specified value. The amount that the V-count can exceed this value (the delay) can be set by the programmer. (If the call is not in time, it will be performed in the next frame.)

One argument (delay) was added to the VAlarm configuration function, OS_SetVAlarm(), for this purpose.

Previously, the function call was:

OS_SetVAlarm( alarm, vcount, handler, arg );

Now it is:

OS_SetVAlarm( alarm, vcount, delay, handler, arg );

For details see the reference for OS_SetVAlarm().

There has always been a way to specify a delay with a periodic VAlarm, but with an interrupt-triggered VAlarm, the delay did not work. Now you can specify the precise delay for the alarm.

OS_SetVAlarm() now has one more argument, but if you want to use the previous function call and not specify a delay, use the same arguments and call OS_SetOneTimeVAlarm() instead of OS_SetVAlarm(). This function will set the delay to 10. (Internally, the delay has always been treated as being 10.)

The maximum value for the delay is OS_VALARM_DELAY_MAX. If this value is specified, the specified VAlarm handler will be called no matter how much time elapses.

Note 19-18: (OS) Added function to get owner information (favorite color)

We added the following color information definitions and functions. We also added a reference.

Note 19-19: (OS) Fixed function cost profiler

An error occurred when cost calculations were performed with the function cost profiler OS_CalcThreadStatistics() and a thread other than the current thread was targeted. The cost buffer is cleared after the cost calculation results are stored in the statistics buffer. However, the current thread's buffer was cleared rather than the targeted thread's buffer. This has been fixed.

Note 19-20: (OS) Corrected OS_SetTick ()

There was a problem with the tick value setting function (OS_SetTick()). The other interrupt request flags were disabled. This has been fixed.

This function could affect the operation of alarm systems in use. Please be careful when using OS_SetTick() in an application.

Note 19-21: (OS) Corrected OS_ResetSystem()

The reset function, OS_ResetSystem(), does not initialize the hardware, so you must explicitly stop the hardware functions or confirm that they are stopped before calling this function. For safety reasons, we have added code to the function that stops several hardware functions.

This problem was also fixed.

Note 19-22: (OS) Fixed data section transfer to DTCM

There was a problem when an autoload was performed using a data section created in DTCM. This has been fixed.

Note 19-23: (CARD) Added the CARD_GetRomHeader function

The function CARD_GetRomHeader was added. This function allows the program initiated by wireless download to obtain ROM header information stored in the DS CARD that is currently inserted.

Note 19-24: (CARD) Added detection of automatically initiated DMA during Game Card access

The card library and upper-level library functions did not check for possible conflicts with other automatically initiated DMA during DS CARD access. Code that checks for this was added.

Note 19-25: (ARM7) Added detection of Game Card/Game Pak removal to ferret

When ferret was used as an ARM7 component there was no way to detect whether the Game Card or Game Pak was removed. We added this feature to ferret.

This detection feature is valid only the TS edition of the library.

Note 19-26: (PM) Corrected LCD state during restore from sleep

Correction of NITRO-SDK 2.0 RC1 "Note 18-16: (PM) Eliminating ghost images during sleep mode" caused the following problem. As a result of the fix of the ghost image problem, when the machine was woken up after being transitioned into sleep mode by PM_GoSleepMode(), the GX library's status changed from its pre-sleep status, and this caused the LCD to restore incorrectly in some cases. This was fixed and now the LCD will restore correctly after being in sleep mode.

Note 19-27: (MI) Corrected address checking during DMA

The debug MI library uses an ASSERT to check whether the transfer address for DMA is included in ITCM and DTCM. The ITCM start address was 0x00000000. This was changed to the regular value of 0x01FF8000.

Note 19-28: (MI) Corrected MI_DmaFill*()

The function MI_DmaFill*(), which uses DMA to fill memory with a uniform value, would sometimes transfer values incorrectly when an interrupt was generated during execution. This problem was corrected and MI_DmaFill*() is now an interrupt-safe function.

Note 19-29: (GX) Changed names of G3X_IsLineBufferOverflow() and G3X_ResetLineBufferOverflow()

Two function names were changed. They are functions relating to the underflow (lines over) flag of the rendering engine's line buffer.

G3X_IsLineBufferOverflow() and G3X_ResetLineBufferOverflow()

were changed to

G3X_IsLineBufferUnderflow() and G3X_ResetLineBufferUnderflow()

Note 19-30: (GX) Corrected error in register definition

The following constants in $NitroSDK/include/nitro/hw/ARM9 were declared incorrectly.

They were corrected.

Note 19-31: (GX) Corrected clearing problem with G3X_InitTable table

When the table in G3X_initTable was cleared to zero, the last 16 bytes in the toon table were not cleared.

This bug was fixed.

Note 19-32: (SND) Changed distributions of sound library

The sound library distributed with NITRO-SDK is now the NITRO-SYSTEM 2004/10/12 version. The update was also added to patches after 2.0RC1plus3.

Note 19-33: (CTRDG) Added references for CTRDG_IsNumberID() and CTRDG_IsBitID()

Added reference information for CTRDG_IsNumberID() and CTRDG_IsBitID(), which check if specified peripheral devices are installed in the Game Pak.

NOte 19-34: (DevEnv) Included IPL GUI version of mb_child and WMTestTool for checking wireless connections

Included mock-production version IPL mb_child program under $NitroSDK/bin/ARM9-TS/Rom. The name of the previous one was changed to mb_child_simple.srl.

Also, included in the same directory WMTestTool.srl, which is a tool for testing wireless. You can use the following test modes. We are currently preparing detailed manuals.

Known problems with SDK 2.0 RC2

There were none.


NITRO-SDK Version 2.0 RC1

(2004/10/07)

Note 18-01: (WM) Changes in WM library

Note: Due to the changes with WM library in version 2.0 RC1, programs with 2.0 FC or older versions cannot be compiled as is. Following are some major updates.

Deleted the test mode operation functions WM_StartTestMode() and WM_StopTestMode().

The specification of WM_GetAllowedChannel() was that even though it was a synchronous function, it did not return a valid value unless it was in IDLE state after executing WM_PowerOn(). However, this specification had a potential for confusing the library users, so the changes were made to return a valid value any time after it was initialized with the WM_Init() function.

Noise was added when using the sound library to play high pitched sounds during the wireless communication. This issue was improved significantly.

The specification was changed to disconnect the device when an unrecoverable and fatal error occurred with the wireless communication protocol due to the influence by other wireless communication devices other than Nintendo DS. The application receives the same notification as normal disconnection, so there is no need to write corresponding codes.

An unique setting value that is required for each Nintendo DS system during the wireless communication is kept internally in Nintendo DS. If this setting value is destroyed for some reason, the communication cannot be executed properly. Therefore, the program stops automatically if the wireless setting value is destroyed when there was an attempt for the wireless communication.

6) For game group ID, both u16[2] type definitions and u32 type definitions are used. It caused confusion, so they were standardized as u32 types. Interface changes in APIs were executed for the following.

Due to this change, sample demos that perform the wireless communication were updated.

The argument ignoreFatalError was added to WM_StartMPEx(). Normally, FALSE should be given.

The maximum value of the maximum numbers of bytes that can be sent by parent or child that is specified with WMParentParam increased from 508 bytes to 512 bytes. However, the 5600-microsecond limitation required for MP communication has not been changed, so the number of bytes must be set within the limits. The value of MB_COMM_PARENT_SEND_MAX in MB library is not changed.

As the distance between the parent and child increases while minPollBmpMode of WM_StartMPEx is set to TRUE, the communication was disconnected with the return value of WM_GetLinkLevel set to the maximum level of 3. This problem was solved. At the same time, the behavior of the radio receive strength that is taken by WM_GetLinkLevel was changed. The frequency of the value change became slow.

Both the u16[3] type definitions and u8[6] type definitions were used for MAC addresses, and it was causing confusions. This was standardized as u8[6] types. Interface changes in APIs were executed for the following.

Due to this change, sample demos that perform the wireless communication were updated.

For all of the wireless sample demos that use the setting value that exceeds the required time for MP communication as it is defined in the programming guidelines, made changes to use the value within the proper range.

Note 18-02: (WB) Corrected the problem that the mb_child.srl program had stopped processing the maximum number of characters

With mb_child.srl, when the user name of the parent was 10 characters, it did not work properly. This problem was corrected.

Note 18-03: (MB) Changed the download sequence of the multiboot-Model demo

Previously, according to the display sequence confirmation, when IPL was downloaded, this demo waited until the parent completed the boot preparation after the data transfer. It was changed to wait for all children before the data transfer.

Note 18-04: (MB) Changed the display characters of the mb_child.srl program to English

The program mb_child.srl, which is used by children for multiboot, used Japanese characters for display, but it was changed to display in English.

Note 18-05: (WBT) Added the WBT_CancelCurrentCommand function

Added the WBT_CancelCurrentCommand function that is used for canceling the file receiving operation that is being processed with the WBT_GetBlock function.

NOte 18-06: (DEMO) Dealt with warning in WM demo bell

The warning "Failed sound alarm OS_SendMessage" was output in the ball demo, but it was changed not to be output.

This warning indicates that the sound process on ARM7 is being executed properly. When playing 44kHz sounds on all of the 16 channels at 3 octaves higher, this warning may be output because the heavy load on CPU processes. Do not play the sound that can cause the heavy load on the CPU processes.

Note 18-07: (DEMO) Changed the user name process in the multiboot demo

Changes were made so that the user name used by the parent for the mb/multiboot demo process is obtained from the owner information in the Nintendo DS system.

However, the fixed value is used, as it was done previously in the old environment which the OS_GetOwnerInfo() function cannot use, such as TS and TEG of TS_VERSION < 200 and NVRAM_FORMAT < 100.

Note 18-08: (DevEnv) Included the NITRO-SDK version display tool

Included the tool showversion that displays the NITRO-SDK version that is embedded in ROM file. Valid only with NITRO-SDK 2.0 FC or later versions. For details on restrictions, see the reference manual.

Note 18-09: (DevEnv) Included the final version of the banner display tool

Included the final version of the banner display tool. Compared to the last version, fonts that can be used are changed.

Note 18-10: (DevEnv) Linked the description of the resident area name of lsf file and the module compression process

When the application-specific lsf file is being used, the segment name in the resident module and srl/nef target name are set differently, an error was generated during the module compression process when NITRO_COMPRESS is enabled.

By correcting the lcf template file to output the intermediate file component.files from the description of lsf file, and to use compstatic to reference that file, the description of the resident area name in lsf file and the module compression process are linked.

Note 18-11: (OS) Changed the protection region setting for main memory

Previously, the size of the protection region for main memory was always set to 4 MB at startup, and the protection region setting was set to 8 MB only if SDK 8M was defined when OS_InitArenaEx() was called (called in OS_Init()) and 8 MB memory was mounted.

However, if there was an attempt to use autoload to transfer the module to the extended memory region, that transfer occurred before OS_InitArenaEx(), and it was not possible to proceed because of exception that was generated.

Because of that, the rules regarding the protection region size for main memory have been changed.

This change allowed the transfer to the extended memory region.

Note 18-12: (OS) Sound stopping process when reset

Changes were made to stop the sound playback with ARM7 when OS_ResetSystem() is called.

Note 18-13: (OS) Corrected OS_CreateThread()

These were added to the thread initialization executed by OS_CreateThread().

Note 18-14: (OS) Corrected Function Trace Profiler

There was an error with the buffer underflow check that is performed by one of the profile features, PROFILE_EXIT, which is a function trace. This has been fixed. Also, the register for detecting underflow was not displayed properly, and it was corrected.

Note 18-15: (PM) Corrected the LCD switching function PM_SetLCDPower()

When using PM_SetLCDPower() to switch the LCD status, LED was forcibly turned ON. However, it was changed so that the LED status does not change.

Note 18-16: (PM) Corrected to avoid residual image when entering sleep

When entering sleep, the image displayed before entering sleep sometimes stayed displayed. Changes were made to wait for one frame after the screen output was turned off to avoid residual images.

Note 18-17: (PM) Corrected the IRQ mask return process during sleep

There was an error with the IRQ mask return process on ARM7 after the sleep process. Depending on the cause for awakening from sleep, the cause was left as valid even when awakening from sleep after the necessary IRQ causes were enabled. To be more precise, the card removal check after sleep was not detected by card interrupts. This problem was solved.

Note 18-18: (PM) Added callback call process for sleep

Added APIs for calling callbacks for sleep. They can be registered for before changing into sleep mode and after awakening from sleep mode. In addition, multiple callbacks can be registered.

Note 18-19: (CARD) Corrected the processing of multiple card initialization calls

When CARD_Init() was called twice, the FIFO Callback overridden warning was given. (It calls FS_Init() and CARD_Init(), so it is the same when calling CARD_Init() and FS_Init().) It was corrected so that the warning is not given.

Note 18-20: (CTRDG) Added cartridge functions

The following cartridge functions are now the official release, and references were added.

Note 18-21: (RTC) Changed the method for monitoring RTC alarm

Previously, there was a problem that RTC alarm interrupt was not generated properly because of the conflict between the interrupt for generating RTC alarm and IS-NITRO-EMULATOR hardware. To deal with this problem, the temporary measure was taken to make ARM7 execute polling to monitor the RTC alarm status at fixed intervals. Since the hardware conflict issue was solved with IS-NITRO-DEBUGGER software version 1.11, the polling method was abolished and changed to the method that handles interrupts.

Note 18-22: (RTC) Corrected the problem with consistency of date and day of the week

There was a possibility of causing inconsistency between the date structure that can be obtained with functions such as RTC_GetDate(), and the day of the week in the calendar. This problem was fixed.

Note 18-23: (GX) Added use of clear image for clear depth image by itself

To use only the clear depth image without allocating VRAM to the clear color image slot, the following settings were added.

When using these settings, all of the clear images are cleared with 0x0000, and the alpha value is also set to 0. With this setting, the texture image slot 2 is disabled, so make sure that VRAM is not allocated to this slot.

A demo that uses these settings is added to demos/gx/ClearDepthOnly.

Known problems with SDK 2.0 RC1

There were none.


NITRO-SDK Version 2.0 FC

(2004/09/30)

Note 17-01: (WBT) Official release of the wireless block transfer library

The test release version of the wireless block transfer library (WBT) became the official release. There are references and samples wbt-1 and wbt-fs.

Note 17-02: (WM/TP) Corrected the problem that the wireless processes stopped the auto sampling of the touch panel

There was a problem that stopped the auto-sampling process of the touch panel when starting the wireless process. This has been fixed.

Note 17-03: (WM) Changes in WM library

Corrected the problem that the exclusive control of the data sharing function was not executed.

There was a problem that stopped auto-sampling when starting the wireless communication with the auto-sampling of the touch panel enabled. This has been fixed.

When calling wireless asynchronous APIs at different threads at the same time, the result of the process became invalid. This problem was solved.

There was a problem with the exclusive control of send/receive for data sharing, and in rare cases data sharing was stopped. This has been fixed.

The specification was changed so that when a recoverable error occurs during send/receive of the data sharing, WM_StepDataSharing keeps returning WM_ERRCODE_FAILED.

6) There was a possibility that the child was not recognizing the parent properly when WM_StartScan was executed. This was solved. To be more precise, when the beacon without the Gameinfo information is obtained, the GameInfo obtained by the precedingWM_StartScan is carried over, and by referencing GameInfo directly without evaluating gameInfoLength, the wrong parent information is obtained. To deal with this problem, changes were made so that when a parent was found with WM_StartScan and it was the beacon without GameInfo, GameInfo is zero-cleared. In additional, the sample demo was changed to actually check the evaluation.

Note 17-04: (DEMO) Corrected multiboot-Model demo

With the multiboot-Model demo, when a child reconnects to the parent, the channel of the parent changed unexpectedly and the connection could not be established.

When using a cable to connect IS-NITRO-EMULATOR hardware, all channels can be used for connections, and this problem occurs when using the actual wireless feature.

This bug was fixed.

Note 17-05: (DevEnv) Corrected makebanner tool

In the makebanner tool that was added in 2.0 PR 6 to generate banner files, there was a problem that caused the first line of the description in the banner spec file to be ignored. This problem occurred when the first line in the banner spec file was not a comment line. This has been fixed.

When the character code in the banner spec file was not correct, the empty file was output without generating errors. This problem was solved and changed the description regarding the character code of the reference to "UTF-16LE with BOM."

Note 17-06: (DevEnv) Corrected the LIBSYSCALL process and changed the storage location of libsyscall.a

Even though libsyscall.a that is embedded in the final ROM was specified with the make variable LIBSYSCALL, due to the link order of linkers and libsyscall.a was linked as in the default setting.

To avoid relying on the link order specification when specifying LIBSYSCALL, the storage location of the default libsyscall.a was separated from other SDK libraries. By doing so, libsyscall.a files that are specified with LIBSYSCALL is linked preferentially, not according to the link order specification.

The default libsyscall.a is now stored in the following location. libsyscall.a is common for Debug/Release/ROM versions.

$NitroSDK/lib/ARM9-TS/etc/libsyscall.a

The CodeWarrior IDE users must change the storage location of libsyscall.a in the project file as needed.

Note 17-07: (DevEnv) Corrected the compression process of overlay with NITRO_COMPRESS

When using the compstatic tool to perform the overlay compression process, a problem occurred and in some cases the proper compressed data was not generated. This bug was fixed.

Note 17-08: (DevEnv) Changed the font set in banner file

The font set used in banner file was replaced with an updated version. Note that some characters were deleted.

For details regarding banner files, see the guidelines documents regarding the IPL banners.

Note 17-09: (DevEnv) Restricting the location of the banner file in ROM spec file and counter measures.

If the beginning of the banner file stored in ROM was not 512-byte aligned, it does not operate properly. If the value that is smaller than 512 bytes was specified with the AlignAll command in the spec file, a problem may occur.

To avoid this problem, changes were made so that the operation of Segment All is 512-byte aligned without using the value set with AlignAll.

Note that when the AlignAll command is not being used, it is necessary to insert Align 512 before the BannerFile command.

Note 17-10: (GX) Corrected bug in register definition

There were some errors in the definition values regarding the hardware register map. These values are not used in SDK, and they will not affect the operation of SDK directly.

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

This bug was fixed.

Note 17-11: (MI) Corrected MI_SendGXCommandAsyncFast

Changes were made so that a separate MI_SendGXCommandAsyncFast() can be started from the DMA callback that was started by MI_SendGXCommandAsyncFast().

Note 17-12: (MI) Corrected MI_SendGXCommand()

MI_SendGXCommand() was using the automatic DMA, and there was a possibility of conflicting with another automatic DMA. Because of this, MI_SendGXCommand() was made to loop with immediate DMA and the automatic startup was eliminated. The former MI_SendGXCommand() was changed to MI_SendGXCommandFast(), but this includes automatic DMA and should be used with caution.

Note 17-13: (FS) Corrected the problem of calling FS_GetPathName()

When the FS_GetPathName() function is called, there is a possibility of stopping by SDK_ASSERT because of the errors in the internal process.

This problem was fixed.

Note 17-14: (OS) Added initialization function to be called by OS_Init()

A change was made on the ARM9 side to call CARD_Init() from OS_Init().

Note 17-15: (CARD) Changed the card removal detection process

Corrected the card removal detection process. Previously, some parts such as the card removal during sleep were not working properly.

Previously, to detect card removal, the CARD_IREQ interrupt was checked by ARM9, but the new method uses polling with ARM7. Normally it checks whether the CARD_IREQ interrupt is generated, but when the ROM header information is referenced and then that card uses the CARD_IREQ interrupt, it is done by loading the card ID. When the removal is detected, ARM7 notifies ARM9.

Note 17-16: (TP) Changed the validity conditions

As a countermeasure for the coordinate jumping which occurs when the pen is released, the conditions that becomes INVALID were changed, and the determination is based on the stricter rules. There may be a possibility of increasing the number of cases where the INVALID flags become on.

Known problems with SDK 2.0 FC

Additional information for SDK 2.0 FC

Additional information for using the Game Pak

To recover from sleep by the IREQ interrupts of the Game Pak, it may recover, not only by the removal of the Game Pak, but also by the interrupt from the Game Pak device whose IREQ interrupt is being used for other things.

Consequently, to make the system wake up from sleep by the removal of the Game Pak, proceed only when the Game Pak inserted in the slot is the one expected in the application. Otherwise, do not specify PM_TRIGGER_CARTRIDGE for the trigger for waking from sleep.


NITRO-SDK Version 2.0 PR7

(2004/09/21)

Note 16-01: (WM) Changes in the WM library

  1. For multiboot parents, there was a problem that a certain parent was more difficult to be found when there are multiple parents. This problem was corrected.

  2. Regarding the compatibility between the wireless library and sound library, a communication problem occurred when using the sound library for heavy load processing while the wireless library is communicating. This problem was solved by giving priority to the wireless library processes over sounds.

  3. With WM library, when the data that was going to be passed to the WM_Initialize function was left in cache in dirty state, it affected the operation of the WM library. This problem was solved.

  4. Up to the version PR6, if minPollBmpMode in WM_StartMPEx was set to TRUE with a parent and the parent communicated with only a certain child for a fixed period of time, other children were disconnected because of the timeout. Especially if the sequential communication was being used at ports with number 8 or higher and some children were forcibly disconnected, the above mentioned problem occurred easily. To solve this problem, change was made so that during the MP communication both the parent and children transmit Keep Alive frame with the number of sendable bytes set to 0, only if minPollBmpMode is set to TRUE.

  5. Corrected the problem that the value that was smaller than the necessary size was returned because of the calculation error in WM_GetMPReceiveBufferSize and WM_MP_SIZE_PARENT_RECEIVE_BUFFER.

  6. Added the "wireless communication time calculation sheet" to the reference. The time required for MP commutation is calculated from the maximum send size of the parent and child.

  7. For the notification of port receiving callback to WM_STATECODE_CONNECTED, DISCONNECTED, changes were made so that aid is always the AID of the connection targets. Its own AID is assigned to myAid.

  8. Added a simplified document regarding the wireless to docs/TechnicalNotes/WirelessManager.doc. A draft was released.

Note 16-02: (FS) Corrected problems with loading compressed overlays

When loading an overlay with the program that was built by specifying NITRO_COMPRESS, the entire BSS region was not cleared and the variable of the initial value 0 was not initialized properly. This problem was solved.

Note 16-03: (CTRDG) Created an API for detecting the Game Pak being pulled out

A system that calls the callback when the Game Pak was pulled out while playing the game. It becomes valid if the Game Pak library was initialized with CARD_Init(). With the default setting, it does not do anything.

Note 16-04: (CARD) Created an API for detecting the Card being pulled out

A system that calls the callback when the Card was pulled out while playing the game. With the default setting, both processors become the halt state and stop.

Note 16-05: (GX) Corrected the problem that occurs when creating the display list with G3C

When creating a display list that was packed with G3C, indeterminate data was written because of the processes that deal with the geometry FIFO hardware problems. This problem was solved.

Note 16-06: (OS) RTC interrupt process

Previously, the RTC interrupt process was emulated by polling at ARM7 because of the conflict problem with IS-NITRO-DEBUGGER. The change was made only with the FinalRom library, and now the RTC interrupt of the NITRO hardware is used.

With the Debug version and Release version, the RTC interrupt is emulated by polling, as it was done with previous versions.

Note 16-07: (MIC) Changed I/F of auto sampling start function

The MIC_StartAutoSampling and MIC_StartAutoSamplingAsync functions used I/F that specifies the structure directly at the parameter. To cut down on the stack usage, it was changed to the I/F that specifies a pointer to the structure.

Note 16-08: (SND) Updated the sound library

The sound library included with NITRO-SDK became the 2004/09/16 version.

Note 16-09: (DevEnv) Including the tool for creating the test viewer of the banner file

Included an addbanner tool for creating the test viewer of the banner file. This tool creates the ROM file that displays the banner information on NITRO screens.

Note 16-10: (DEMO) Added the final ROM creation demo

Added the demo that creates the final ROM. This demo shows an example of the process that incorporates files that are necessary to be included in the final ROM.

The information in this demo is as of the time of the SDK release. The rules regarding the submission of final ROM may change after the release, so check the latest information on the company's support web site.

Known problems with SDK 2.0 PR7

Reference for the attachsign tool is not complete.




NITRO-SDK Version 2.0 PR6

(2004/09/13)

Note 15-01: (OS) Added functions that obtain the system information

Added functions that obtain the owner information that is saved in the Nintendo DS system. It allows to obtain the owner information that the end user edited by using the IPL program in the system.

Also, the function that obtains the MAC address of the wireless hardware in the system was added. The MAC address is set to a different value for each hardware system, and it can be used with an application that does not use the wireless feature.

These are the three functions that were newly added.

Note 15-02: (OS) Implementation of soft reset

Implemented soft reset, and the program can be restarted from the entry point. It is possible to assign any u32 value at the reset time and pass it to the rerun module. This function does not initialize the hardware. Because of this, the processes such as automatic DMA must be terminated before calling this function.

However, the first 16 KB of the ROM data that was loaded at the startup is not reloaded at reset time, and the execution cannot be done if this part is destroyed. The library does not determine it, so it is necessary to make sure that it is not destroyed by the software.

When the system has been started as a child by multiboot, the system cannot be restarted with OS_ResetSystem(). To proceed safely, call OS_Panic() inside OS_ResetSystem() to stop. (after outputting a message, it becomes an infinite loop, except the FINALROM version). If there are any problems with the operation, determine if it is the multiboot child by using MB_IsMultiBootChild() and switch cases.

Note 15-03: (OS) Added OS_ClearAlloc() that destroys the memory allocation system

Added the OS_ClearAlloc() function that destroys the memory allocation system after it was build in arena with OS_InitAlloc(). After calling OS_ClearAlloc(), a new memory allocation system can be built in the same arena.

Note 15-04: (OS) Changed the error display when the alarm is set

When there is an attempt to set a new alarm by using the alarm structure that is being used with alarm and V-count alarm, it stops with OS_Panic() regardless of the build method. Previously it stopped only the DEBUG build and others entered infinite loop.

Note 15-05: (MI) Added definition regarding DMA registers

Added the bit definition of the DMA registers in $NitroSDK/include/nitro/mi/dma.h. Previously it was defined in the header file in the library construction tree, but the location has been changed to make it accessible from an application.

Note 15-06: (WM) Corrected the wireless control library and added features

  1. Divided the processes for initializing and stopping the library, and added function group to provide detailed control.

    Added functions are shown below.

    When Initializing
    WM_Init Synchronous function that initializes the work buffer required for the library.
    WM_Enable Changes the wireless hardware to be the usage permitted state. It also starts the LED to blink.
    WM_PowerOn Starts up the wireless hardware and executes initialization that is necessary.

    When Stopping
    WM_PowerOff Shuts down the wireless library.
    WM_Disable Changes the wireless hardware to be the usage prohibited state. It also stops the blinking of the LED.
    WM_Finish Synchronous function that stops the library and releases the work buffer.

    To reduce the battery power consumption, try not to start up the wireless hardware until immediately before the startup of the actual wireless communication (WM_PowerOn). Also, when the wireless communication is not needed (WM_PowerOff), shut down the wireless hardware.

  2. There was a problem with the wireless communication while the sound is being played because the wireless library DMA and the sound library DMA compete in ARM7. There are still some restrictions on the use of sounds, but the problem that the wireless communication was dissolved. This is also explained in "Note 15-16: (WM/SND) Dealt with the problem with simultaneous use of the wireless and sound features."

  3. Fixed the bug that caused the callback of WM_SetMPDataToPort() to return a success value even if the transmission was not complete due to the weak radio wave signals. This change solved the rare problem that stopped the data sharing.

  4. There was a problem with the process when pollBitmap (Poll map) was not being sent to itself, and it was causing a problem when the target child for the communication was switched by pollBitmap. This problem was solved.

  5. Added restriction for starting the communication as the parent so that the WM_INVALID_PARAMETER error is returned when a specified value is larger than the size of the data that can be transmitted with one MP communication. Added a feature to debug output the warning when the transfer data size is larger than the recommended value, as it is explained in the programming guide line.

  6. With the child's application, when the state value, which is the argument for the callback to WM_StartMP(), was set to WM_STATECODE_MP_IND, it only passed WM_ERRCODE_SUCCESS as errcode. With NITRO-SDK 2.0 PR6 and later versions, WM_ERRCODE_INVALID_POLLBITMAP is returned when itself was not included in pollBitmap of MP.

    This situation occurs frequently when there are more than two children in the MP communication, and it should not be treated as unrecoverable error.

  7. With the child's application, WM_ERRCODE_SUCCESS, WM_ERRCODE_TIMEOUT, and WM_ERRCODE_FAILED were passed as errcode when the state value, which is the argument for the callback to WM_StartMP(), was set to WM_STATECODE_MP_IND. It was corrected as shown below.

  8. Previously, WM_ERRCODE_SUCCESS, WM_ERRCODE_TIMEOUT, and WM_ERRCODE_FAILED were used as the errcode that was passed to the callback of WM_SetMPData() and WM_SetMPDataToPort(). However, WM_ERRCODE_TIMEOUT and WM_ERRCODE_FAILED were combined into WM_ERRCODE_SEND_FAILED. In doing so, WMPortSendCallback.destBitmap now includes the bitmap of aid for the child that needs to retry after the communication failure. (the child that was disconnected during the communication is not included in destBitmap.)

  9. Changed the procedure for calling the callback every time the MP communication ends at the parent when the state value in the callback of WM_StartMP() was set to WM_STATECODE_MPEND_IND. Previously, the order of callbacks was:

    1. Transmission complete callback (callback of WM_SetMPDataToPort())
    2. WM_STATECODE_MPEND_IND (callback of WM_StartMP())
    3. Port receiving callback (each callback registered with WM_SetPortCallback())

    However, the order was changed to:

    1. Port receiving callback (each callback registered with WM_SetPortCallback())
    2. Transmission complete callback (callback of WM_SetMPDataToPort())
    3. WM_STATECODE_MPEND_IND (callback of WM_StartMP())

    This change was made so that data that reflects the latest receive data is transmitted immediately when the standard structure such as executing the next WM_SetMPDataToPort() by the callback of WM_SetMPDataToPort() is used for the program.

  10. Added the WM_SetMPDataToPortEx() function. User defined data can be added to the argument of the transmission complete callback.

  11. The maximum send size of the child processed with WMParentParam was set to the size that was 2 bytes smaller than the specified value. This problem was solved. parentMaxSize and childMaxSize were the parameters that specify the maximum size of user data to be transmitted. There is no need to count the size of the control data in the wireless library.

  12. To use key sharing with NITRO-SDK 2.0 PR5, it was necessary to explicitly add the value that is used for key sharing to the maximum send bytes. It was changed so that the maximum send bytes were automatically expanded by the amount of data used for key sharing by setting TRUE with WMParentParam.KS_Flag.

  13. The argument ksFlag was added to each of the function macros of WM_SIZE_MP_PARENT_SEND_BUFFER, WM_SIZE_MP_PARENT_RECEIVE_BUFFER, WM_SIZE_MP_CHILD_SEND_BUFFER, and WM_SIZE_MP_CHILD_RECEIVE_BUFFER. To calculate the buffer size for key sharing, specify TRUE, if not FALSE, to ksFlag.

  14. Corrected the problem that the child connection information was not reset properly when WM_Reset was called.

  15. Added WM_SetMPFrequency that changes the frequency of MP communication dynamically.

Note 15-07: (WM) Included the wireless strength icon

Included the icon in the following location to indicate the strength of wireless communication. For more rules and regulations, see the guidelines for the wireless communication.

$NitroSDK/data/wl_icons

Note 15-08: (WBT) Test release of the block transfer library

Test released WBT, the library that enables the block transfer protocol between a parent and a child by using the MP communication of the wireless library (WM).

The following problems have been found in this test release.

Note 15-09: (SND) Updated the sound library

The sound library that is distributed with NITRO-SDK became the 2004/09/02 version.

Note 15-10: (DevEnv) Added support for the compressed resident module

Added feature for compressing the resident module that is loaded with IPL. Because of this, ROM capacity and the initial load size for the startup can be reduced.

In the make system of SDK, this feature is automatically enabled if a value is set to the macro variable NITRO_COMPRESS. Consider the tradeoffs in the extraction time before using this feature. When the compression is enabled in SDK, the following processes are executed.

  1. With compstatic command, executes the compression process of the region excluding the header part of the resident module execution binary.
  2. Stores the obtained compressed module file to ROM by the makerom command, in the same way as the normal module files.
  3. The compressed module is extracted in crt0.c after it was executed.

It is possible to compress the overlay module in the same way as the resident module. Extraction of the overlay module is integrated into the related APIs, so there is no need to be conscious about the processing when you access the module via API.

In order to implement this process, the following tool files have been changed from NITRO-SDK 2.0 PR5. When using an unique rsf file and lcf.template file, these files need to be changed.

This compression and extraction processes can be applied to the execution module in the ROM file that is passed to the multiboot child.

Note 15-11: (DevEnv) Startup of nitload by make run

Changes were made to startup nitload of the sample program that is included in the IS-NITRO-DEBUGGER package by specifying run for the make command target.

Note 15-12: (DevEnv) Provided ferret component that supports each hardware versions

Included ferret (ARM7 component without the wireless features) that supports each TS versions of the hardware such as IS-NITRO-EMULATOR. Normally, there should not be any problems with using mongoose (ARM7 component with the wireless feature), so there is no need to use ferret in the TS environment unless you need to compile the source for the TEG environment without any changes.

Note 15-13: (OS) Corrected OS_CheckHeap()

Previously, it was made to get out of the function with interrupts prohibited when the heap check was executed in OS_CheckHeap() and the check failed. This problem was corrected.

Note 15-14: (MI) Corrected problems with runlength compression of ntrcomp.exe

There was a problem with the runlength compression routine at tools/bin/ntrcomp, and the 129 to 130 bytes at the end of file were not extracted properly if the uncompressed data block size at the end of file was 129 to 130 bytes. This problem has been changed.

Note 15-15: (MI) Corrected the DMA processing

With the process that checks to make sure that multiple automatic DMAs are not started, the ones that are started and the ones that are not started were treated the opposite way. This was corrected so that the check is executed properly.

Note 15-16: (WM/SND) Dealt with the problem with simultaneous use of the wireless and sound features

With NITRO-SDK 2.0 PR5, there was a problem that the wireless feature did not work properly when the wireless and sound features were used at the same time. This problem was solved.

However, because of the DMA hardware specification, there is a possibility of interrupting the sound when the playback causes a large burden on the data transfer, such as playing the waveform data with the sampling rate of 44kHz at the pitch that is 3 octaves higher.

Note 15-17: (MB) Corrected the problem with the return value of the MB_GetSegmentLength function

A problem was found and the return value of the MB_GetSegmentLength function was smaller that the size that was actually required. This problem was solved.

Note 15-18: (MB) Corrected the malfunction of the Debug version of Multiboot sample

There was a problem with the Debug version of the MB demo Multiboot sample in NITRO-SDK 2.0 PR5, and the startup was stopped with GX error. Also with the Debug version, there was a problem that caused the improper operation in the interrupt hander during the downloading process due to the lack of stack area.

Note 15-19: (CARD) Corrected the problem of calling the backup access function for the first time

When the backup access function of CARD was called, the function failed only at the first time it was called. This problem was solved.

Note 15-20: (PRC) Corrected the stack overflow of CharacterRecognition-1 demo

CharacterRecognition-1 demo in NITRO-SDK 2.0 PR5 was not working properly due to the stack overflow. This problem was solved.

Note 15-21: (OS) Added OS_TPrintf (simplified version of printf)

Added console output functions such as OS_TPrintf that reduces the stack consumption size by using OS_VSNPrintf. With OS_TPrintf, the code usage and stack usage are reduced by removing floating points from the usable format.

Usable formats depend on OS_VSNPrintf. For details, see the OS_VSNPrintf manual.

Known problems with SDK 2.0 PR6

Reference for compstatic and attachsign tools is not complete.




NITRO-SDK Version 2.0 PR5

(2004/08/30)

Note 14-01: (WM) [Important] Corrected the wireless control library and added features

  1. Changed the data structure that the parent broadcasts
    The user name and game name were deleted from the system reserved region. The developer region was also expanded from 64 bytes to the maximum of 112 bytes. The user name and game name are stored in the developer region, when needed.


  2. Added a feature to notify the 24-byte child information when a child connects to the parent
    The contents of the 24-byte child information was opened to developers so that a child can notify the parent of the application-specific information. In addition, the WM_StartConnect() function and the interface of the WMStartParentCallback structure were changed.



  3. Added features to control the details of multi-port (MP) communication
    Until SDK-PR4, it was possible to execute one MP communication per frame (one picture frame) or continuous transfer regardless of the frames. The feature that executes multiple times of MP communication per frame is now available.
    Along with this change, the interface of the WM_StartMP function has changed. Also, added the WM_StartMPEx() function to allow detailed settings.


  4. Extended the feature that changes the data broadcast by the parent during the communication
    Added feature that changes the parent attribute, such as receiving entry and accepting multiboot, during the communication.
    Along with this change, the interface of the WM_SetGameInfo() function has changed.


  5. Added single-function APIs as shown below

  6. Corrected the sample demos
    Sample demos were changed due to the specification change to WM libraries. The sample "ball" was not guaranteed to work in SDK-PR4, but the sample works correctly in SDK-PR5.


  7. Corrected a problem with the WM_Disconnect() function
    A child was not disconnected properly when CODE>WM_Disconnect() was called by a child.
    This problem is fixed.

Note 14-02: (MI) [Important] Dealt with hardware restrictions related to the automatic DMA

Added processes to deal with hardware restrictions or generate warnings for the automatic DMAs that do not process immediately, listed below:

    V-blank startup
    H-blank startup
    Display synchronization
    Work RAM display
    Memory Card data
    Game Pak DMA
    Geometry Command FIFO

The automatic DMAs cannot be used together. When an attempt was made to start multiple DMAs, it was stopped with OS_Panic(). However, H-blank startup DMA and V-blank startup DMA can be used together.

Also, the following corrections were made to the Geometry Command FIFO DMA.

Note 14-03: (DevEnv) [Important] Included the component and library that support the hardware version

Included the mongoose component and libspi., a library that support each version of TS hardware. To switch the component and library in the make system of SDK, set the TS board version number for the environment variable NITRO_TS_VERSION. If the NITRO_TS_VERSION is not set, then NITRO_TS_VERSION=100 (IS-NITRO-EMULATOR hardware version D) is selected.

To create an application that supports IS-NITRO-EMULATOR hardware version E, it needs to be set as NITRO_TS_VERSION=200.

The supported components and libraries are shown below.

TS version number mongoose/libspi.a file names that correspond (e.g. for ARM and Release versions)
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) Ended support for mongoose in the TEG environment

Due to the increasing size of the source code, it is increasingly difficult to support the wireless component of mongoose in the TEG environment. Because of this, support for this feature has been terminated.

Note 14-05: Added files that begin with a dot "." to the initial values used when specifying Reject in makerom

Corrected makerom, and added file names and file directory names that start with a dot ".?*" to the initial values used for Reject (or with wildcard it is ".?*") By doing so, files in the .svn directory, which is the control directory of the version management system Subversion, are not added to the ROM file.

As in the previous version of makerom, in order to add the files that start with ".?*" to the ROM file system, Reject must be reset at the beginning of the RomSpec section in the rsf file.

    Reject CVS vssver.scc

If you were already using the file name that begins with ".", pay special attention.

Note 14-06: Changed to CodeWarrior version 0.6.1 to build the SDK

NITRO SDK PR5 uses version 0.6.1 of CodeWarrior for building the SDK binary file. CodeWarrior 0.6.1 is included in the SDK.

Note 14-07: (DevEnv) Corrected the problem that code in the .itcm/.dtcm sections was not placed in ITCM/DTCM

In the ARM9-TS.lcf.template file, the way the .itcm/.dtcm sections were placed was different from what was expected in makelcf, and the codes defined in the .itcm/.dtcm sections were not placed in the autoload section of ITCM/DTCM.

Makelcf was corrected, and in case an Object/Library description did not limit the section, the section placed by this description is now limited to the basic section used by the compiler (such as text, .rodata, .data, and .sdata). It does not include sections such as .itcm/.dtcm that were newly defined in theNITRO-SDK.

Note 14-08: (GX) Corrected problems with the mosaic size setting

When setting the mosaic size, there were problems with G2*_SetBGMosaicSize(), which clears the OBJ mosaic, and G2*_SetOBJMosaicSize(), which clears the BG mosaic.

These problems are fixed.

Note 14-09: (GX) Corrected problems with the definitions, such as GX_InitEx() in gx.h

In $NitroSDK/include/nitro/gx.h, GX_InitEx() and GX_GetDefaultDMA() were not declared as inline functions. This problem was corrected.

Note 14-10: (CARD) Support for FLASH device

The CARD module now supports FLASH device as well as EEPROM device. With sub board and flash card, this can be used on the retail product and the debugger.

Note 14-11: (CARD) Corrected the problem with calling CARD_Init() with interrupts prohibited

There was a problem when calling CARD_Init() with interrupts prohibited, the control was not returned from the function.

This problem is fixed.

Note 14-12: (CARD) Corrected the problem with calling CARD_IdentifyBackup()

After calling CARD_IdentifyBackup() and its process has completed, the callback function that was specified with the last executed CARD asynchronous function was called again.

This problem is fixed.

Note 14-13: (MI) Changed how main memory access rights are switched to avoid a DMA startup delay

When executing a DMA transfer using either the Main memory display startup DMA mode or the H-Blank DMA mode, the access right priority must be "ARM9." Otherwise, the display may not appear properly due to a delay in the DMA automatic startup when ARM7 tries to access the main memory. The access right priority is specified with MI_SetMainMemoryPriority().

Changes were made so that switching access rights is done with gx/UnitTours/2D_BmpBg_MainRam and gx/UnitTours/Window_HDMA, which use these DMAs. Also, the same information was added to the related reference manuals.

Note 14-14: (OS) Corrected the Tick value retrieval function

If the Tick value was obtained while the compiler optimization level was at or above a certain level, an correct value could not be obtained when the timer interrupt used with the Tick value was issued at a specfic time.

This problem is fixed.

Note 14-15: (OS) Stopped the interrupt check flag automatic setting for V-Blank interrupt

In NITRO-SDK 2.0 PR4, the interrupt check flag (IrqCheckFlag) was automatically set to ON during V-Blank. This change was cancelled in the ARM9 library, and it was returned to the previous setting.

Regarding the operation to turn IrqCheckFlag ON internally in the OS, IrqCheckFlag can be called multiple times without causing any problems, so there are no problems with IrqCheckFlag being turned on every time V-Blank is called in the application. However, it was the cause of the malfunction for the application that turns on IrqCheckFlag once every two frames during the V-Blank process in order to update the status at the timing of 30 frames per second.

This is equivalent of the IrqCheckFlag patch in version 2.0 PR4.

Note 14-16: (OS) Changed the location of DTCM in the TS environment

As announced in Note: 10-02, the DTCM addresses have changed, but there was one part that was not changed.

This part was fixed. As a result of this change, DTCM is always 0x27c0000, regardless of the environment.

Note 14-17: (OS) Calling PM_Init() inside OS_Init()

PM_Init() is now called from inside OS_Init() of ARM9.

Note 14-18: (OS) Determining the proper operating environment using OS_GetConsoleType()

When using IS-NITRO-DEBUGGER, if the Game Pak slot power was on, the result of the operating environment obtained by OS_GetConsoleType() was returned as IS-NITRO-EMULATOR, which was a wrong result.

This problem is fixed, so the function returns IS-NITRO-DEBUGGER, a correct result

Note 14-19: (TP) Error when determining whether the touch panel is touched

A hardware problem was found in determining whether the touch panel is being touched. If the coordinate value was measured when it was halfway between being touched and not being touched, sometimes it became a correct value.

Note 14-20: (PM) Added the RTC alarm as a trigger to awaken from sleep

Now the RTC alarm can serve as a trigger to awaken from sleep.

Note 14-21: (RTC) Operating the RTC in a fixed 24 hour notation

In previous versions, 12- or 24-hour time notation can be selected for the notation display format. Since the 24-hour notation is used in the boot menu, the time format has been fixed to 24-hour format to avoid problems.

The time display selection API can no longer be used, and the information indicating morning or afternoon has been deleted from the API. Also, the time notation display in the sample demo rtc-1 is fixed to 24-hour notation.

Note 14-22: Corrected the problem with pressing the A button during application startup

Because of the operation in the NITRO boot menu, the A button is more likely to be pressed when starting up of a game application. It requires some caution if the application causes some actions by pressing A button.

For determining some of the demo button triggers (buttons that were newly pressed in that frame), the initial value was set to 0 (not being pressed). However, this was changed so that the initial value is set with the current status of the button.

Note 14-23: (Doc) Added reference manuals for auxiliary tools such as ntrcomp

Added reference manuals for the ntrcomp tool and ppmconv* tools (ppmconv/ppmconv8/ppmconvbg ).



Known Problems in SDK 2.0 PR5

None.


NITRO-SDK Version 2.0 PR4

(2004/8/11)

Note 13-01: (WM) Corrected and added functions to the wireless control library

  1. The port control feature was added. This feature enables the data communication of multiple upper-level protocols by using the MP protocol.
  2. Data sharing feature was added. A sample that executes data sharing among multiple units of NITRO is available on:
       $NitroSDK/build/demos/wm/dataShare-1
    The implementation of the key sharing feature has been changed so that it was realized by using this data sharing feature internally. The operation of the "ball" sample, which was provided as demo, has not been checked, and it may not work properly.
  3. Made significant changes to the structure of the structure used for the internal control. Along this change, the buffer size that is required by the WM library was expanded.
  4. Changes were made so that during the MP communication the callback is generated every time the MP packet transfer is completed.
  5. The single-functionality APIs shown below were added:
       WM_SetLifeTime()
       WM_MeasureChannel()
       WM_InitWirelessCounter()
       WM_GetWirelessCounter()


    The block transfer feature and enhanced upper-level library are being developed.

Note 13-02: (MB) Added the DS Download Play (multiboot) library

The DS Download Play library was added to NITRO-SDK. This is the API that provides the DS Download Play function, which sends the game program to the NITRO that has no card. Internally, this library uses the wireless manager (WM) library.

The program for executing multiboot, mb_child.srl (changed from mb_child.bin in SDK 2.0 PR5), was included in the directory shown below. This program operates the same way as the retail version of a child that has no card. Use this for the operation tests until the multiboot feature is added to IPL.

    $NitroSDK/build/demos/mb/multiboot

Demo sample for the multiboot function that was added at the same time is included in the directory shown below.

    $NitroSDK/bin/ARM9-TS/Release/mb_child.srl

Note 13-03: (PM) Added the PM library

This is the API for controlling the power management IC. By using this library, it is now possible to manage the LCD and backlight power supply and to check the power remaining in the battery.


Note 13-04: (MIC/TP) Added parallel operation of microphone sampling and the touch panel

Changes were made so that the one time touch panel sampling can be processed during the microphone auto sampling. When the touch panel request was received during the microphone auto sampling, the touch panel data read process is executed the next time the microphone sampling ends.

If the touch panel sampling was not completed before the next microphone sampling time, it is assumed to that the microphone's data has dropped and the microphone sampling value will be interpolated by using the immediately preceding value.

A demo for this feature is included in the directory shown below:

    $NitroSDK/build/demos/spi/spiMonkey2

Note 13-05: (MIC) Added microphone support and preprocessing with IS-NITRO-DEBUGGER

With the hardware with the mass produced version of the power management IC (PMIC), the preprocessing is now required to operate the amp in the PMIC to obtain the correct microphone output value. For this, processes that operate parameters such as the PMIC amp gain value were added to the mic-1, mic-2, and spiMonkey demos.

Also with this preprocessing, a macro value SDK_TS_VERSION was introduced to be able to work with different versions of PMIC. The environment variable NITRO_TS_VERSION was added to change the macro value dynamically. The NITRO_TS_VERSION value defined when it was built is passed to SDK_TS_VERSION, which takes the values shown below.

SDK_TS_VERSION Description of the device
0 From TS breadboard to IS-NITRO-EMULATOR Version C.
100 IS-NITRO-EMULATOR Version D.
200 The device equipped with the next version of PMIC.

With the PMIC of the IS-NITRO-EMULATOR Hardware Version D, a significant amount of noise is added to the microphone device if the backlight of the LCD is lit. This hardware problem will be solved but, until then, turn off the LCD when you use the mic-1 demo microphone.


Note 13-06: (MIC) Corrected the mic2wav tool

The mic2wav opened the output file as a text file, and data was not converted properly. This problem is fixed.


Note 13-07: (GX) Changed the LCD power management function

The LCD power management function was changed to PM_SetLCDPower. Along with this change, the following functions and the definitions of the enumerator types were deleted.


Note 13-08: (GX) Added G3*_MultTransMtx33

To shorten the geometry engine execution time, added the G3*_MultTransMtx33 function, which multiplies by packing G3*_MultMtx33 and G3*_Translate as one matrix.


Note 13-09: (GX) Added functions to set the DMA number used by GX

Added GX_InitEx(), GX_SetDefaultDMA(), and GX_GetDefaultDMA() to use as a function to set and obtain the DMA number used by GX. By specifying GX_DMA_NOT_USE for the DMA number, it can be set not to use the DMA.


Note 13-10: (GX) Corrected problems with GX_PowerGeometry() and GX_Power3D()

With GX_PowerGeometry(), GX_Power3D(), the power for the geometry engine was not turned off. This problem was solved.


Note 13-11: (GX) Changed the write restriction to the register of GX_SetGraphicsMode()

Made changes so that the BG mode and BG0 2D/3D selection flag were reflected to the register even when it is not in display mode. This value is referenced for using display capturing when it is set other than graphics display mode.


Note 13-12: (CARD) Released the official NITRO-CARD access API

Released the function groups for accessing the devices that are on the NITRO-CARD. It can be used on the retail product by using the sub board and flash card.


Note 13-13: (FS) Corrected the problem in which the file ID obtained by FS_ReadDir did not match

When using the FS_ReadDir function to enumerate a directory entry, if a directory entry already exists in these files, the obtained file ID did not match the actual ID. This problem is fixed.

Note 13-14: (DevEnd) Corrected the problem when expanding the makelcf / makerom variables; added support for the variable definition files

With makelcf / makerom, in some cases when setting a string that exceeds 1000 characters for the variable that can be specified with the –D option, and then expanding it in the template file, an error occurred and stopped the process. This problem is fixed.

Also, the process of passing variables by using command lines will be restricted by the maximum length of the command line set with each command line process. To prevent this problem, the variable definition can be specified from the external file. Because of this, by giving the file with the description of [variable name = value] to makelcf / makerom with the –M option, the variable definition can be done without having to worry about the restriction on the command length of the command lines.


Note 13-15: (DevEnd) Output the autoload module information to the overlay name file

The correction was made so that the additional information used by the debugger for tracking the autoloaded codes is output to the overlay name file. To be more precise, the change was made in the definition part of the overlay name file for the *.lcf.template file in

    $NitroSDK/include/nitro/specfiles

By using this additional information, debugging of the autoload module is possible. For more information on the plans for this feature to be added to each debugger system, refer to the release note for each debugger or the support site.


Note 13-16: (DevEnv) Corrected the problem with failing to rename the C++ library in the migw environment

Renaming process of the C++ library to CXX failed in the mingw environment. This problem is fixed.


Note 13-17: (OS) Set up the V Blank counter

Set up the V blank counter and added the function OS_GetVBlankCount() to obtain the value.


Note 13-18: (PAD) Eliminated PAD_SetIrq() and PAD_ClearIrq()

Eliminated PAD_SetIrq() and PAD_ClearIrq() because the key interrupt could not be used due to the hardware restriction. However, the key interrupt can be used for returning from the sleep mode. In that case, specify the condition with PM_GoSleepMode().


Note 13-19: (MI) Added DMA busy wait after synchronous DMA

For synchronous DMA, the process was added after DMA to make it wait while the DMA is busy.

When these synchronous DMA APIs are placed on the TCM, ARM9 did not wait for the completion and is returned from API even with starting up the DMA. This was corrected so that it always waits for the completion with the synchronous DMA, regardless of the transfer location. If it is not necessary to explicitly execute the process to wait for the DMA completion, use the asynchronous DMA API.

The following instructions have been changed:

    MI_DmaCopy16/32
    MI_DmaFill16/32
    MI_DmaSend16/32
    MI_DmaClear16/32
    MI_VBlankDmaCopy16/32

Note 13-20: (SND) Updated the sound libraries

Changed the sound libraries distributed with NITRO-SDK to the 2004/08/10 version.


Note 13-21: (Demo) Corrected GX demo 3D_BoxTest

With the GX demo 3D_BoxTest, because the box text was executed without setting 1 for the PolygonAttr FAR clip flag and the 1-dot polygon display flag, the proper result may not have been obtained due to the hardware settings. This was corrected by setting a flag immediately before the Boxtest.


Note 13-22: (Demo) Corrected GX demo LinesOver

With the demo LinesOver, G3X_GetPolygonListRamCount() and G3X_GetVtxListRamCount() were called while the geometry engine was busy, and the value that was being rendered was obtained. The process was added immediately before it to wait for the process of the geometry engine to complete.

Also, before the rendering was complete, G3X_GetRenderedLineCount() and G3X_IsLineBufferOverflow() were called. They were moved to after the V-Blank.


Note 13-23: (Demo) Corrected the output screen of the SPI demo spiMonkey

Corrected the output screen of the SPI demo spiMonkey to be on the touch panel screen.


Note 13-24: (DevEnv) Changed the sign setting of the char types

In the past, the char types switched between signed and unsigned (unsigned for jp) by the value for the NITROSDK LANG, but it was standardized as signed. This change was introduced with NITRO-SDK 2.0 PR1.



Known Problems in SDK 2.0 PR4

(To be corrected in the next or a later release)




NITRO-SDK Version 2.0 PR3 plus

(2004/07/29)

Note 12-01: (DOC) Added and revised the WM Library Reference Manual

Added and revised the section regarding the WM Library in the Reference Manual.



Known Problems in SDK 2.0 PR3 plus

There is no change in the library itself and the library header file between SDK 2.0 PR3plus and SDK 2.0 PR3.




NITRO-SDK Version 2.0 PR3

(2004/07/27)

Note 11-01: (OS) Corrected a definition error in the system shared region

In the memory map definitions, defined macro in the system shared region did not match the definition of the system region structure. This error was made during the revision of the NITRO-SDK 2.0 PR2.

This problem is fixed.


Note 11-02: (DevEnv) Corrected the setting for the structure's padding warning

In the NITRO-SDK library header file, the padding warning switch for the structure was turned off, and was not turned back on. Because of this problem, the padding warning switch was left OFF. This was not intentional.

This problem is fixed. Until now the padding warning did not appear when you compiled the program. However, this change may bring up padding warnings that were not generated before. The following methods can prevent this problem.

  1. Suppress warnings via the compile options:

    This is a method that adds the compiler options to suppress padding warnings at the time of compilation

    For IDE users, it can be set in the panel. For make system users, set the warning option with the make variable, CCFLAGS_WARNING. The following is an example for specifying in the command line so that the padding warnings are suppressed in order to display other types of warnings. Of course, it has the same effect as adding a description regarding the CCFLAGS_WARNING setting in the Makefile.
    make CCFLAGS_WARNING='–w all,nopadding'
    
  2. Specifying pragma in the source file:

    This method suppresses the padding warning by specifying pragma before or after the warning. The details are shown below.
    // suppress the padding warning 
    #pragma  warn_padding off 
    struct padded 
    { 
        u16     leng; 
        // double-byte padding inserted here 
        s32     data[4]; 
    }; 
    // restore the padding warning
    #pragma  warn_padding reset 
    
    To suppress padding warnings in the entire source file, add #pragma warn_padding off at the beginning of the source.


Known Problems in SDK 2.0 PR3

This is an urgent release, so the remaining problems that existed in SDK 2.0 PR2 still exist in this version.




NITRO-SDK Version 2.0 PR2

(2004/07/26)

Note 10-01: (WM) Added the wireless control library

Released the WM (Wireless Manager) as the lower bit library to drive the wireless device.

    $NitroSDK/build/demos/wm

This directory contains a sample function. At this point, it operates when the target is set to TS. Success is not guaranteed when the target is set to TEG or when using it with ensata.

The communication functions that are not yet supported in this version, such as wireless DS Download Play (multiboot) and block transfer, and the enhanced version of the upper level library, are under development.


Note 10-02: (DevEnv) Changed the memory map (changed the DTCM address) (only with TS)

(This item applies only to the TS environment. With the TEG environment, there is no change in the memory map.)

Reviewed the memory map and expanded the MainRAM region that can be allocated to ARM9 by default.

More specifically, DTCM was placed in the region that starts at 0x2380000, but now starts at 0x27C0000. Along with this change, the MainRAM region that is allocated to ARM9 was changed from 0x2000000—0x237FFFF to 0x2000000—0x23BFFFF (increased by 256KB). The region that can be allocated to ARM7 was changed to 0x37C0000—0x37FEFFF.


Note 10-03: (DevEnv) Added a parameter that absorbs the difference of DTCM

As described in Note 10-02, the DTCM address was changed for the TS environment only. The makelcf's start-up parameter ADDRESS_DTCM was added to notify the lsf file of the different DTCM addresses used by TEG and TS. When NITRO_PLATFORM is set to TEG, it is 0x02380000. When NITRO_PLATFORM is set to TS, it is 0x027c0000 (in order to handle 8MB main memory, 0x400000 was added). Use this variable so that TEG and TS can share the lsf file.

For example:

  Autoload DTCM
  {
    Address $(ADDRESS_DTCM)
    Object * (.dtcm)
  }

Note 10-04: (DevEnv) Corrected the link error in the C++ exception table

A link error occurred because the label for the exception table was not defined when the code was created with C++ exceptions. This problem is fixed.


Note 10-05: (SVC) Updated the SVS library and reference manual

The system call SVS library was updated, and the functions shown below were added. Also updated the reference manual to include the new functions.

Newly added functions:

    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) Improved the lock functions (1): standardized the lock ID type

There were places where the Lock ID (u16) of the lock functions in the OS was declared as u16 and u32 in the argument. It was standardized to be u16. However, the return value for the function that returns the lock ID or error message was not changed and is still u32.

The lockID type of the argument changed from u32 to u16.

    OS_LockByWord()    OS_LockCartridge()    OS_LockCard()
    OS_UnlockByWord()  OS_UnlockCartridge()  OS_UnlockCard()
    OS_TryLockByWord() OS_TryLockCartridge() OS_TryeUnLockCard()

The return value changed from s32 to u16.

    OS_ReadOwnerOfLockWord()

In the manual, added a caution that the return value is s32.

    OS_GetLockID()

Note 10-07: (OS) Improved the lock functions (2): changed the name of the unlock function

Changed the notation of the following function names from UnLock to Unlock.

    OS_UnlockByWord()
    OS_UnlockCartridge()
    OS_UnlockCard()

Note 10-08: (MI) Changed the name of the MI_GetCartridgeRomCycle* function (posted again)

(As mentioned in Note 9-23, this change was intended for version 2.0 PR1. However, the change was made in this version by mistake.)

The names of the MI_GetCartridgeRomCycle* function was revised and standardized as 1st and 2nd. Along with this change, the enumeration types MICartridgeRomCycle1 and MICartridgeRomCycle2 were changed to MICartridgeRomCycle1st and MICartridgeRomCycle2nd.



Known Problems in SDK 2.0 PR2

(To be corrected in the next or a later release)




NITRO-SDK Version 2.0 PR1

(2004/07/20)

Note 9-01: (DevEnv) Changed the library support and default target for the TS version

Note: The bold paragraphs in Note 9-01 were added on 2004/07/26.

To support the IS-NITRO-DEBUGGER and Nintendo DS software developer's board NITRO-TS, the default target changed from TEG to TS. (From now on, IS-NITRO-DEBUGGER and NITRO-TS refer to the same thing, unless otherwise noted.)

The TS module is created by not defining NITRO_PLATFORM for the environment variable or the macro variable of the make command, or by setting the value to "TS". Here is an example.

    % make NITRO_PLATFORM=TS

Normally, the directory ARM9-TS or ARM9-TS.thumb is created in the subdirectories bin, lib or obj within the directory that executed make. Each module is generated in this directory.

Also, in order to compile with the existing TEG target version, you must explicitly specify

    % make NITRO_PLATFORM=TEG

Support for the TEG target version will continue until at least the end of 2004).


Note 9-02: (DevEnv) Changed the file extension of the ROM binary files

Corrected makerom so it matches the specification of the manufactured ROM image. To be consistent with the inspection process during production, the ROM binary file name extension was changed from .bin to .srl.

However, in the makefile description, the target variable name of the ROM image is left as TARGET_BIN.


Note 9-03: (DevEnv) Changed the overlay method

The link methods for overlays were changed.


Note 9-04: (DevEnv) Changed the LCF file description

An asterisk (*) is no longer used to specify a file with the LCF file.

In the LCF file, all libraries are enumerated, but the positive sign (+) cannot be used for the library name. Because of this restriction, the name of Metrowerks C++ Runtime Library is changed from MSL_C++_NITRO_Ai_LE_strb.a to MSL_CXX_NITRO_Ai_LE_strb.a to make a copy, and the copy is referenced.


Note 9-05: (DevEnv) Changed the make rule

In the sample demo in the following directory, the source files are compiled in multiple subdirectories, and are linked by the parent directory.

    $NitroSDK/build/demos/tips/MultiLink

Note 9-06: (DevEnv) Corrected the generation rule of the nef and srl files

Made it possible to add dependent files to the nef and bin files by specifying LDEPENDS_NEF and LDEPENDS_BIN.


Note 9-07: (DevEnv) Added the compile switch NITRO_CODEGEN_ALL

Added the compile switch NITRO_CODEGEN_ALL. Use this switch to create libraries for both ARM and THUMB versions.

    % make NITRO_CODEGEN=ARM
    % make NITRO_CODEGEN=THUMB

The switch results in the compilation executing twice. (The compilation is executed in the order specified with NITRO_CODEGEN.)


Note 9-08: (SND) Updated the sound library

The sound library distributed with the NITRO-SDK became the 2004/06/22 version.


Note 9-09: (FS) Corrected an error in FS_RegisterArchiveName()

Due to the internal processing of the FS_RegisterArchiveName() function, an inconsistency problem occurred when the registered archive was released. This problem is fixed.


Note 9-10: (FS) Corrected the improper display of a string while debugging in the async demo thread

Sometimes the wrong string was displayed when an interrupt occurred during debugging of the thread with the async demo. This problem is fixed.


Note 9-11: (FS) Corrected the problem of returning control prematurely while FS_WaitAsync is still running

If the OS_WakeupThreadDirect() function is called while a thread is set to wait for an FS asynchronous function (using the FS_WaitAsync function), control is returned even though the process is not complete. This problem is fixed.


Note 9-12: (GX) Corrected GX_SetBankForTex(), GX_LoadTexEx(), and GX_LoadTex()

The three functions that process the noncontiguous VRAM banks had problems with the data transfer, but they were fixed.


Note 9-13: (GX) Changed the clear color alpha default from 0 to 31 in the GX demo

In the DEMOLib of the GX demo, the default value of the clear color alpha value was changed from 0 to 31.


Note 9-14: (FX) Added FX_AtanIdx() and FX_Atan2Idx()

Added the FX_AtanIdx() and FX_Atan2Idx() functions, which return the arctangent within the range of the u16 type. Until now, only FX_Atan() and FX_Atan2(), which return the arctangent in units of radian, were available.


Note 9-15: (FX) Added a matrix calculation API that does not send the value to the geometry engine

Added the following functions as the API that performs only the calculation without setting the data to the geometry engine.

    MTX_FrustumW()
    MTX_PerspectiveW()
    MTX_OrthoW()
    MTX_LookAt()

With these functions, you can obtain the same matrix using G3_FrustumW(), G3_PerspectiveW(), G3_OrthoW(), G3_LookAt().


Note 9-16: (OS) Corrected the arena setting when NITRO_MEMSIZE is set to 8M

When a file that was compiled with NITRO_MEMSIZE set to 8M during make is executed on a development device with 8MB of main memory, the extended main memory arena is now set properly. Previously, the protection region was not set correctly and had to be set by the application.


Note 9-17: (OS) Improved thread safety using functions related to memory allocation, such as alloc and free

Improved thread safety by prohibiting interrupts in a critical section using memory allocation functions, such as OS_Alloc*() and OS_Free*().


Note 9-18: (OS) Added OS_JoinThread() and OS_IsThreadTerminated()

Added OS_JoinThread(), which combines threads and waits for the specified thread to be terminated, and OS_IsThreadTerminated(), which checks whether the thread has terminated.


Note 9-19: (OS) Corrected the DMA address check ASSERT

The debug build uses ASSERT to check if it overlaps the TCM address, but there was an error with the boundary condition. This problem was fixed.


Note 9-20: (OS) Changed the operation of OS_SetProtectionRegion()

OS_SetProtectionRegion() was changed to set and enable the protection region. Before, it was not enabled.


Note 9-21: (OS) Changed the function cost measurement profiler

Changed the clock information in the profiler from u16 to u32 to enable the measurement of functions that require more time. Also fixed an error in the calculation of the required compilation time.


Note 9-22: (MI) Added functions to obtain the compression type and size of expanded data

Created functions to obtain the compression type and the size of the expanded data in memory. MI_GetCompressionType() obtains the compression type, and MI_GetUncompressedSize() obtains the size of the expanded data.


Note 9-23: (MI) Changed the names of the MI_GetCartridgeRomCycle* functions

Standardized the names of the MI_GetCartridgeRomCycle* functions as 1st and 2nd. In addition, the names of the enumeration types MICartridgeRomCycle1 and MICartridgeRomCycle2 were changed to MICartridgeRomCycle1st and MICartridgeRomCycle2nd.


Note 9-24: (MI) Corrected ASSERT of MI_CpuCopyFast()

At debug time, build with MI_CpuCopyFast(), ASSERT was required to be a multiple of 32 bytes. It was changed to a multiple of 4 bytes.


Note 9-25: (MI) Changed the DMA parameter setting and stop processes

Prohibited interrupts with the DMA parameter setting process (internal function MIi_DmaParams*()) and stop process (MI_StopDma()).


Note 9-26: (CP) Changed how the Divider sets the divisor

When a 32-bit divisor is set in the Divider, zeros are entered into the upper 32 bits of the Divider's divisor register. By doing so, even if using a division mode with a 32-bit divisor, the Divide-by-0 error flag is enabled only if all 64 bits of the divisor register are zeros.


Note 9-27: (MIC) Extended the sampling types

With the functions that perform sampling via microphones, the available sampling types were expanded, and you can now specify the output in signed data format.


Note 9-28: (PRC) Added the pattern recognition API (test release)

Test released the PRC library, which permits pattern recognition of data drawn on the touch panel.

    $NitroSDK/build/demos/prc

Here is the demo.

For more information, see:

    $NitroSDK/docs/TechnicalNotes/PatternRecognition.doc

Note 9-29: (TP) Changed the precision of the data obtained from the touch panel

The precision of the data obtained from the touch panel was changed from 12 bit to 9 bit. The lower 3 bits are masked on the ARM7. This change anticipates a compatibility issue that may occur in the future.



Known Problems in SDK 2.0 PR1

(To be corrected in the next or a later release)


NITRO-SDK Version 1.2

(2004/06/16)

Note 8-01: (CP) Added the CP context switching process to the IRQ handler

When threads were switched in the IRQ handler, the context of the Divider and Square Root Unit were not saved. This has been revised, and the context is appropriately switched.

Note 8-02: (FX) Added and revised the constant definitions

Corrected the faulty rounding process for negative numbers when using FX_F32_TO_FX32() and made FX32_CONST() an alias for FX_F32_TO_FX32(). Also added the FX16_CONST(), FX64_CONST(), and FX64C_CONST() macros.

Note 8-03: (OS) Corrected the idle thread process

Cleaned up the test code that was mixed in with the loop portion of OSi_IdleThreadProc(), the idle thread execution function located in

    $NitroSDK/build/libraries/os/common/src/os_thread.c

Note 8-04: (SPI) Corrected the spiMonkey demonstration

When the spiMonkey demo was built with the Debug version, the demo ran but the screen update rate was extremely slow. This problem is fixed.

Note 8-05: (DevEnv) Corrected the problem reading makerom/makelcf< variable values

A bug in handling variable values in makerom/makelcf could prevent normal operations. This bug is fixed.

Known Problems in SDK 1.2

(To be corrected in the next release)

  1. The archive system in the file system is a test version.

NITRO-SDK Version 1.2 RC1

(2004/6/10)

Note 7-01: (GX) Changed the Main LCD/Sub LCD output destination switch flag

The defined values for GX_DISP_SELECT_***, the power control register's "LCD output switching flag," were swapped to conform to the final production product (0 and 1 were reversed).

The same revision was performed on ensata. When executing applications created with SDK versions 1.2 or 1.2 RC1 or later on ensata, verify that the version of ensata being used supports this revision.

Note 7-02: (MIC) Added the microphone API

Added an API to operate a microphone device and demos that use the API. Also added the spiMonkey demo that uses the MIC, Touch Panel, and Sound libraries simultaneously.

Note 7-03: (TP) Changed the maximum sampling rate

Changed the maximum sampling rate that can be specified with auto sampling to 4 times/frame. It is expected that higher sampling rates cannot be guaranteed with the anticipated cost reduction in hardware.

Note 7-04: (TP) Corrected the problem of an interrupt being generated immediately after transmitting a touch panel command

When an interrupt was generated directly after transmitting a touch panel control command to ARM7, a bug prevented returning from waiting for a reply from ARM7. This problem is fixed.

Note 7-05: (TP) Changed the auto sampling interface

Added an argument in RequestAutoSamplingStart() to specify the buffer size. In doing so, a buffer size larger than the sampling rate can be specified and overwriting with new data can be supported.

Note 7-06: (TP) Changed the TP_SetCallback() argument format

Because TP_SetCallback() arguments were pointers to function pointers, it was changed so that function pointers could be passed directly as arguments.

Note 7-07: (FS) Corrected a problem in the size display after loading all in the async demo

The total size (when loading all threads in the async demo) is displayed as total **** byte. However, an error in the size calculation resulted in an incorrect number. This problem is fixed.

Note 7-08: (FS) Corrected a problem that prevented the overlay data cache from updating

Corrected the problem that prevented the data cache update process from being carried out for each of the functions that operate the overlay module.

Note 7-09: (FS) Corrected a problem in the FS_SetDefaultDMA() function

A problem caused a file to be loaded incorrectly if DMA settings were changed with FS_SetDefaultDMA() when executing in an environment that used a NITRO-CARD. This problem is fixed.

Note 7-10: (OS) Changed the IRQ handler specifications

When the logical product of IE and IF was 0 at the beginning of an IRQ handler, it would exit without doing anything. This was caused by an infinite loop when an interrupt was generated during IE configuration. This problem is fixed.

Note 7-11: (OS) Changed the default for the maximum thread count

Changed the maximum thread count that can be created with the thread system from 8 to 16.

Note 7-12: (OS) Added OS_GetNumberOfThread()

Added the OS_GetNumberOfThread() function to get the number of threads currently created.

Note 7-13: (OS) Changed the arena configuration

A fixed value had been used when configuring the arena range for ARM7. However, this has been changed to configure an arena for the ARM7 shared WRAM and an arena for the ARM7-dedicated WRAM to take into account the size of the free region after storing the ARM7 program in Shared WRAM and ARM7-dedicated WRAM.

In addition, the two arenas are configured with ARM7 and the remaining arenas are configured with ARM9 due to reception of defined values from the lcf file when configuring arenas with OS_InitArena().

Note 7-14: (OS) Changed the protection region functions

In a previous version, OS_SetProtectionRegion() was renamed OS_SetProtectionReginParam(), and a new function that more directly configured the address and size was named OS_SetProtectionRegion().

OS_GetProtectionRegion() was divided by function into OS_GetProtectionRegionParam(), OS_GetProtectionRegionAddress(), and OS_GetProtectionRegionSize().

Note 7-15: (OS) Removed the Profile features from the OS library

The Profile features were separated from the OS library and made into an independent library. In doing so, it is unnecessary to recompile the OS library when Profile features are used.

The necessary libraries can be linked by specifying

    NITRO_PROFILE_TYPE=CALLTRACE

when enabling the call trace function and by specifying

    NITRO_PROFILE_TYPE=FUNCTIONCOST

when enabling the cost measuring function.

Note 7-16: (OS) Corrected the display of the call trace function

Corrected the problem in the display of indents beyond four levels in the call trace function.

Note 7-17: (OS) Added OS_GetConsoleType()

Added the OS_GetConsoleType() function to obtain the current operating environment. The value that can be obtained also includes information on the ROM data read device and main memory size.

Note 7-18: (OS) Changed how debug functions, such as OS_Printf(), are handled in the FINALROM build

Changed the way display functions such as OS_Printf() are handled in the FINALROM build. Previously, OS_Printf() was called and became the return function without doing anything, but it is no longer called. In addition, OS_Panic() stops without displaying anything.

Note 7-19: (OS) Changed TCM function names

The following TCM function names have been changed to match the name specifications for other functions. The left is the function name before the change; the right is the new function name.

    OS_SetParamITCM() → OS_SetITCMParam()
    OS_SetParamDTCM() → OS_SetDTCMParam()
    OS_GetParamITCM() → OS_GetITCMParam()
    OS_GetParamDTCM() → OS_GetDTCMParam()

Note 7-20: (OS) Changed the OS demo structure

In addition to eliminating the need to recompile the OS library by dividing the profile related features into a separate library, compilation of callTrace-1, callTrace-2, exceptionDisplay-3, functionCost-1, functionCost-2, and functionCost-3 that had not been previously included in the OS demo Makefile are now included.

Note 7-21: (GX) Corrected the GX demo

In the AntiAlias demo, antialiasing was not applied because ClearColor was not set and blending did not occur with the background color. This problem is fixed.

In the 2D_Oam_5 and Sub_Oam_5 demos, problems in operation with the FINALROM build occurred because the data cache was not flushed. This problem is fixed.

Note 7-22: (GX) Eliminated restrictions on demos due to an Ensata upgrade

Due to an Ensata upgrade, the operating limitations on AntiAlias, PosVecTest, and CurrentMtx, which could only be used while Ensata was operating, were lifted.

Note 7-23: (GX) Changed the extended palette VRAM configuration name

Extended palette VRAM configuration names defined with

    GXVRamBGExtPltt
    GXVRamOBJExtPltt
    GXVRamSubBGExtPltt
    GXVRamSubOBJExtPltt

have been standardized to notation that includes the slot number. The previous names remain as aliases, although this is not mentioned in the manual.

Note 7-24: (GX) Added support for multiple calls of GX_Init

When GX_Init() was called multiple times, it would stop because the V-Alarm structure held in static internally would initialize each time. This has been changed so that the V-Alarm structure is initialized only once even if GX_Init is called multiple times.

Note 7-25: (GX) Added GX_GetObj

The following in-line functions have been prepared.

    G2_GetOBJCharName()
    G2_GetOBJColorMode()
    G2_GetOBJEffect()
    G2_GetOBJColorParam()
    G2_GetOBJMode()
    G2_GetOBJPosition()
    G2_GetOBJPriority()
    G2_GetOBJShape()

Note 7-26: (FX) Added the FX32_CONST() macro

Added the FX_CONST() macro to define fx32 format constants.

Note 7-27: (MI) Corrected MI_UncompressRL8()

There was a bug in the MI_UncompressRL8() function that extracted run-length compressed data in 8-bit units. The bug is fixed.

Note 7-28: (DevEnv) Added an explanation of makerom and makelcf

Added a Tool item to the reference manual that includes an explanation of makerom and makelcf.

Note 7-29: (DevEnv) Added a tool to rewrite data maintained in the main unit NVRAM

A simple tool was included to rewrite information configured with the Boot menu. Use it as a calibration configuration tool for the touch panel. The execution file is:

    $NitroSDK/bin/ARM9-TEG/Release/BootMenu.bin

Executing this on TEG causes the basic menu to start up. Because configuration items other than the touch panel may differ from the final product, think of them as reference material at this time.

Note 7-30: (DevEnv) Added the "–g" option during the build of the FINALROM version

Changed so that the "–g" option can be used to compile and link when building the FINALROM version in the build environment created with the SDK-supplied CodeWarrior make.

The "–g" option in CodeWarrior adds only debug information to the NEF file; the ROM image binary is the same.

In addition, the NITRO_NO_OPT_G switch is available to compile and link without the "–g" option.

Use the following to remove the "–g" option to build.

    make NITRO_NO_OPT_G=1

Note 7-31: (DevEnv) Corrected a bug that output faulty error message with makerom

A bug caused the error message, Wrong format list file to be displayed even when no error had occurred and also stopped the execution of makerom when makerom was executed in certain environments. This bug is fixed.

Known Problems in SDK 1.2 RC1

(To be corrected in the next or a future release)

  1. The archive portion of the file system is a trial version.
  2. The Debug-compiled version of SPI demo, spiMonkey, does not operate correctly.

NITRO-SDK Version 1.2 PR1

(2004/05/24)

Note 6-01: (DevEnv) Added support for CodeWarrior NITRO V0.5

Added support for CodeWarrior NITRO V0.5. Added support for the change in library file names and the change in LCF files.

Note 6-02: (DevEnv) Changed the ROM binary creation tool from elftobin to makerom

Changed the ROM binary creation tool from elftobin to makerom. This allows the file system and overlay to be supported.

Note 6-03: (DevEnv) Added lcf ALIGN(32)

The lcf-related files were correct sot that 32-byte alignment might be maintained for the beginning and end of the overlay segments to prevent problems related to the cache line for the overlay.

Note 6-04: (DevEnv) Added support for addition procedures for files dependent on execution binary generation rules

Added $(LDEPENDS_NEF) and $(LDEPENDS_BIN) to the files dependent on .nef and .bin generation rules, respectively. The specifics are shown below.

$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) Added support for header include from compilers other than CodeWarrior

There are cases when you want to include the NitroSDK header files when C-compiling with a program other than CodeWarrior when creating NITRO-related tools on Windows. But, the processing system for Visual C++ generated an error when nitro.h was included because variable argument macros are not supported. $NitroSDK/include/nitro_win32.h is available to cope with this situation.

By defining the two define values shown below in nitro_win32.h, it is possible to include header files such as gx.h, memorymap.h, and type.h.

    #define SDK_FROM_TOOL
    #define SDK_HAS_NO_LONG_LONG_INT_

However, the #define of SDK_HAS_NO_LONG_LONG_INT_ is specified as "to replace 64-bit integers from being long long int to _int64," so this definition is unnecessary in environments where the long long int definition, such as gcc, is enabled.

Note 6-06: (DevEnv) Terminated the IDE demo sample distribution

It was decided that the distribution of the IDE demo sample program for using CodeWarrior would be terminated. Since a NITRO stationary file is already available in CodeWarrior for NITRO, it was decided that the IDE sample was no longer necessary.

Note 6-07: (ARM7) Added the ferret integrated component

Added the ferret integrated component to process various devices. If not specified otherwise, this component connects by default.

The component path is located under

    NitroSDK/components/ferret/ARM7-TEG/(Target)

(For the Thumb component, the ARM7-TEG portion becomes ARM7-TEG.thumb.)

Note 6-08: (FS) Added the file system and overlay

Added a library to use the ROM file system in applications created with makerom. Directory list/search, synchronous/asynchronous file read, overlays, etc. are possible.

The FS library supports processes that read access the NITRO-CARD, the NITRO standard software supply medium. The FS library internally switches between using the Game Pak image or NITRO-CARD image as the file system according to the TEG board device connection.

In connection with this, SVC_ReadCard() was deleted.

Note 6-09: (TP) Added touch panel functions

The touch panel control related APIs are supported.

Be aware that the TP library and API that were distributed in a separate package have changed in connection with the process assignment change for ARM7 and ARM9. In addition, perform the touch panel calibration process again because of the change in the touch panel calibration parameters that occurred in connection with these changes.

The new touch panel calibration binary is NitroSDK/bin/ARM9-TEG/Release/BootMenu.bin. After starting the binary, select TOUCH PANEL from the screen menu and perform the calibration.

Note 6-10: (CP) Added Divider and Square Root Unit interrupts and multi-threads

To safely use the Divider and Square Root Unit interrupt processes in callbacks, APIs (CP_SaveContext and CP_RestoreContext) were prepared to store and return the current status of the Divider and Square Root Unit.

In addition, the Divider and Square Root Unit now support multi-threads.

Note 6-11: (GX) Added APIs for MtxFx22

APIs for operating the 2x2 matrix MtxFx22-type variable 2x2 are available.

    MTX_Identity22()
    MTX_Concat22()
    MTX_Inverse22()
    MTX_Transpose22()
    MTX_Rot22()
    MTX_Scale22()

Note 6-12: (GX) Improved poor operation of command FIFO in the TEG board

Due to a hardware bug in the command FIFO overflow processing on the TEG board, GX_LoadMtx44 and other functions did not process correctly. This was fixed in the library. This hardware bug will be corrected in the production model.

Note 6-13: (GX) Added GX_VRAM_ARM7_128_C to GX_SetBankForARM7()

GX_VRAM_ARM7_128_C was added as an argument supported by GX_SetBankForARM7().

Note 6-14: (GX) Corrected problem when specifying GX_VRAM_BGEXTPLTT_01_F to the BG extended palette

Corrected the problem that caused configuration to be incorrect when GX_VRAM_BGEXTPLTT_01_F was set in the API GX_SetBankForBGExtPltt.

Note 6-15: (GX) Added a demo for procedure to synchronize to the Swapbuffer process on the geometry engine

Added the demo below as a method using a polygon counter to determine whether the 3D engine calculation experienced process drop-out.

    $NitroSDK/build/demos/tips/SwapCrossOver

When a discrepancy exists with the 2D screen due to a process drop-out on the 3D screen calculation, consider using this method for synchronization that uses a polygon counter.

Note 6-16: (GX) Added transparent conversion matrix APIs to adjust scaleW

Created the following transparent conversion APIs to set scaleW to a desired value.

    G3_FrustumW()
    G3_PerspectiveW()
    G3_OrthoW()

In addition, MTX_Frustum(), MTX_Perspective(), and MTX_Ortho() are also separately available to create matrices without transmitting to the geometry engine.

Note 6-17: (GX) Changed the command FIFO reset process using the GX_Init function

The implementation of the command FIFO reset process was changed. G3_End() is issued after 128 NOP units are sent as an internal process.

Note 6-18: (GX) Corrected a bug in fog mode control

A bug in G3X_SetFog prevented fogMode from returning to 0 from 1. This is fixed.

Note 6-19: (OS) Changed the thread system handling

In consideration of the controlling the various systems that may be connected in the future, the initialization of the thread system was changed to occur by default. OS_InitThread() is called with OS_Init().

If creating a library that does not use the thread system, compile after defining NITRO_NO_THREAD.

Note 6-20: (OS) Added OS_SPrintf()

With a smaller code load than the standard springf() function, the OS_SPrintf() format string function and its system were added by partially eliminating output support, such as for floating point decimal values. This function is primarily used on ARM7 for string processing.

Note 6-21: (OS) Added TEG board memory byte access measures

MI_ReadByte() and MI_WriteByte() were prepared for memory byte access in consideration of the convenience of program creation on the TEG version. These will be converted to simple byte access instructions on the production version library.

Note 6-22: (OS) Added OS_WaitIrq(), OS_WaitAnyIrq(), and OS_WaitInterrupt()

Added the OS_WaitIrq() function that waits for a specified IRQ and the OS_WaitAnyIrq() and OS_WaitInterrupt() functions. OS_WaitIrq() and OS_WaitAnyIrq() give processing over to other threads while waiting for an IRQ.

OS_WaitInterrupt() uses OS_Halt() to wait, so thread movement does not occur. This has been prepared to operate the same as SVC_WaitIntr().

Note 6-23: (OS) Added ATTRIBUTE_ALIGN()

Added the ATTRIBUTE_ALIGN() macro to specify arrangement alignment when defining variables. The macro name follows the NINTENDO GAMECUBE SDK definitions.

Note 6-24: (OS) Extended the IDLE thread stack

The size of the low priority idle thread stack created when the Thread system is started is set to 128 bytes on ARM9 and 64 bytes on ARM7 for SVC.

Note 6-25: (OS) Added OS_GetLockID() and OS_ReleaseLockID()

Added OS_GetLockID() and OS_ReleaseLockID() as a structure to manage lock IDs used by OS.

Note 6-26: (OS) Added OS_SetSwitchThreadCallback()

Added a callback feature when switching threads. The callback is registered with OS_SetSwitchThreadCallback().

Note 6-27: (OS) Released Mutex with OS_ExitThread()

When a thread is ended with OS_ExitThread(), the Mutex locked by that thread is released.

Note 6-28: (OS) Changed the ARM7 component loop process

The main loop process for the ARM7 component is OS_Halt().

Note 6-29: (OS) Corrected OS_SetProtectionRegion7() and OS_SetProtectionRegion7

Corrected so that OS_SetProtectionRegion7() and OS_SetProtectionRegion7 operate on Region 7 rather than Region 6.

Note 6-30: (OS) Added the system clock definition

Defined the CPU clock values HW_CPU_CLOCK_ARM7 and HW_CPU_CLOCK_ARM9 for each processor and the CPU clock value HW_CPU_CLOCK for the current compiler target processor.

Note 6-31: (OS) Changed OS_Panic() termination operation

Changed the OS_Panic() terminate operation from OS_Halt to OS_Terminate().

Note 6-32: (OS) Changed the OS demo structure

Changed the OS demo structure. waitIrq-1 and waitIrq-2 were added due to this change.

In addition, callTrace-1, callTrace-2, exceptionDisplay-3, functionCost-1, functionCost-2, and functionCost-3 were prepared as demos that do not go in Makefile. These are not included in Makefile because they require that the OS library be compiled using a special option.

Note 6-33: (OS) Changed the IRQ handler

Due to hardware specifications, a timing problem with enabling/disabling interrupts and IRQ generation caused IME=0 when an IRQ was generated. When this occurs, it exits without doing anything.

Note 6-34: (OS) Added the function call trace and function cost measurement mechanism

Added a call trace the uses the profile feature of CodeWarrior and a mechanism to measure function costs.

See the following file for an explanation of support for the profile feature by NITRO-SDK.

    $NitroSDK/docs/TechnicalNotes/MechanismOfProfiler.doc

Note 6-35: (OS) Added interrupt check flags for operations

Prepared the OS_IE_USER_FLAG0 and OS_IE_USER_FLAG1 check flags, which can be freely used with applications similar to the SDK interrupt causes.

Note 6-36: (SND) Updated the sound library

The sound library distributed with the NITRO-SDK is version 2004.4.12.

Known Problems in SDK 1.2 PR1

(To be corrected in the next or a future release)

  1. The archive portion of the file system is a trial version.
  2. SDK 1.2 PR1 presupposes use of CodeWarrior-0.5. For this reason, it may not operate properly with prior versions.
  3. There is no documentation for makerom/makelcf.
  4. The FINALROM version binary does not operate on the 2004/03/30 version of ensata.

NITRO-SDK Ver 1.0

(2004/04/05)

Note 5-01: Support for CodeWarrior NITRO V0.4

We now support CodeWarrior NITRO V0.4. Therefore, the compiler start time options -avoid_strb and -avoid_byte have been replaced.

Compiler version information is stored in verinfo.cw.cc and verinfo.cw.ld, under $NitroSDK/build/buildtools. These files will be automatically updated when you upgrade from CodeWarrior 0.3 to 0.4. However, if you downgrade from 0.4 to 0.3, they will not be updated, which will cause problems. When you downgrade CodeWarrior you must either manually delete the $NitroSDK/build/buildtools/verinfo.cw.* files, or input make clean-verinfo from the command line.

Note 5-02: Revised GX_HBlankOBJProc() / GXS_HBlankOBJProc()

In GX_HBlankOBJProc() / GXS_HBlankOBJProc(), actual behavior was the opposite of the values in the proc parameter.

This has been fixed.

Note 5-03: Revised G2_SetOBJAttr() / G2S_SetOBJAttr()

In G2_SetOBJAttr() and G2S_SetOBJAttr(), when you were operating in GX_OAM_MODE_BITMAPOBJ mode and using GX_OAM_EFFECT_AFFINE, the rsParam parameter specifications were not reflected in OAM.

This has been fixed.

Note 5-04: Revised GX_DisableBankFor*()

In GX_DisableBankFor*(), internal behavior was incorrect, which caused it to behave improperly.

This has been fixed.

Note 5-05: Revised NitroPostLinker.bat

The NitroPostLinker.bat file referenced the environment variable CWFOLDER_IRIS.

We changed it to reference the environment variable CWFOLDER_NITRO.

Note 5-06: fs/file-1. Fixed Demo Link Bug

Due to a link procedure bug in the fs/file-1 demo, even if you added NitroStartUp(), NitroStartUp() would not be linked.

This has been fixed.

Note 5-07: Revised makerom (beta version)

In the makerom tool, which is currently included as a tool evaluation version, if the ARM9's resident module size was too small, an error was generated.

This has been fixed.

Note 5-08: Revised the lcf Template for makelcf (beta version)

In the lcf template file for the makelcf tool, which is currently included as a tool evaluation version, part of the module size calculation was incorrect.

This has been fixed.

NITRO-Known Issues in SDK Ver 1.0

  1. Some of the explanations of the newly added demos have not yet been added to the online manual.
  2. ROM file system function, overlays are still pending.

NITRO-SDK Ver 1.0 RC1

(2004/03/30)

Note 4-01: Fix of G3_Frustum() bug

There was a flaw in $NitroSDK/build/library/gx/src/g3_util.c and the G3_Frustum() matrix could not be properly set up.
This bug was fixed.

Note 4-02: Fix of transfer error with GX_LoadTex()

An error occurred and the program stopped when Slot 0 for the texture image in VRAM_A was set aside and the image was transferred with GX_LoadTex(). This bug was fixed.

Note 4-03: Fix of GX_RegionCheck_Obj()

The program stopped with ASSERT if a process such as a texture load was done when VRAM_B was allocated to the OBJ.
This bug was fixed.

Note 4-04: Fix of GX3_GetCommandFifoStatus()

The return value from G3X_GetCommandFifoStatus() was not accurate.
This bug was fixed.

Note 4-05: Support for DTCM position change

A change was made so the DTCM position could be changed. This is made possible by changing the HW_DTCM value in $NitroSDK/include/nitro/hw/common/mmap_global.h. However, a full make must be carried out for the library after the change.

Note 4-06: Fix of codereset.h

There was a flaw in $NitroSDK/include/nitro/codereset.h. It always switched to thumb.
This bug was fixed.

Note 4-07: Bug with exception vector set up

When the debugger was using the exception vector, the hook process for the vector was incorrect due to the coexistence of settings in the NITRO-SDK. Accurate operation was not possible.
This bug was fixed.

Note 4-08: Addition of self-cancel in periodic alarm handle

Until now, a self-cancel of an alarm in the periodic alarm handle was not possible. This is now possible.

Note 4-09: Addition of OS_IsThreadAvailable()

A function OS_IsThreadAvailable() was added to initialize the thread system and check if it can be used.

Note 4-10: Standardization of constant and address substitution assembler display

Stopped use of ldconst and lda to specify the assembler for substituting constants and addresses. It was standardized to ldr only.

(Before Change)                           (After Change)

ldconst r0, #CONSTANT -> ldr r0, =CONSTANT
lda r0,Address        -> ldr r0, =Address

Note 4-11: Fix of G2_SetBG3ControlDCBump() bug

There was a mistake in the assert determination for $Nitro_SDK/include/nitro/gx/gx_bgcnt.h.
This bug was fixed.

Note 4-12: Addition of fixed point definition

A fixed point definition to show 0.5 was added to $NitroSDK/include/nitro/fx/fx_const.h. The fixed points of fx16, fx32, and fx64 are defined as FX16_HALF, FX32_HALF, and FX64_HALF.

Note 4-13: Standardization of macro FX_MUL32x64C and in-line function FX_Mul32x64c rounding up process

Standardized the rounding up process for FX_MUL32x64C and FX_Mul32x64c.

Known Issues with NITRO-SDK Ver 1.0 RC1

The ROM file system function and overlay problems were carried over.


NITRO-SDK Ver 1.0 PR2

(2004/03/17)

Note 3-01: Addition of PXI Library

Added a PXI Library for carrying out communication between ARM9 and ARM7.

Note 3-02: Addition of graphics samples

The following graphics samples were added.

2D_CharBg_256_16

Affine extension/256 colors x 16 extension palette character BG display

2D_CharBg_256BMP

Affine extension/256 color bitmap BG display

2D_CharBg_Direct

Affine extension/direct color bitmap BG display

2D_Oam_256_16

Affine extension/256 colors x 16 extension palette OBJ display

2D_Oam_Bmp1D

One-dimensional mapping/bitmap OBJ display

2D_Oam_Char1D

One-dimensional mapping/character OBJ display

2D_Oam_Direct

Two-dimensional mapping/bitmap OBJ display

2D_Oam_OBJWindow

OBJ window display

2D_Oam_Translucent

Translucent OBJ display

3D_BoxTest

Carries out box test

3D_PolAttr_1Dot

GX_POLYGON_ATTR_MISC_DISP_1DOT setup for G3_PolygonAttr()

3D_PolAttr_DpthTest

GX_POLYGON_ATTR_MISC_DEPTHTEST_DECAL setup for G3_PolygonAttr()

3D_PolAttr_DpthUpdate

GX_POLYGON_ATTR_MISC_XLU_DEPTH_UPDATE setup for G3_PolygonAttr()

3D_PolAttr_FARClip

GX_POLYGON_ATTR_MISC_FAR_CLIPPING setup for G3_PolygonAttr()

3D_Pol_Vertex_Source

GX_TEXGEN_VERTEX setup for G3_TexImageParam()

3D_Shadow_Pol

Displays shadow using shadow polygon

AntiAlias

Views anti-aliasing

Capture

Motion Blur effect using capture

ClearColor

Sets up clear color

ClearImage

Sets up clear image

CurrentMtx

Outputs current clip coordinate matrix and direction vector coordinate matrix

FlipRepeat

Changes texture flip/repeat

LinesOver

Polygon line over display

Master_Bright

Master brightness adjustment

PosVecTest

Outputs G3_VectorTest() and G3_PositionTest() result

RamOverFlow

Overflows polygon list RAM/vertex RAM.

VCount

Obtaining and changing V-counter

ViewPort

View port setup change

Window

Window transformation with operation during H-Blank period.

Window_HDMA

Window transformation with H-Blank DMA.

DEMOLib

Common processing

Note 3-03: Addition of compression tool for MI file opening API

Added data compression tool ntrcomp. It is located in $NitroSDK/build/tools/ntrcomp/.

Note 3-04: Addition of document about coexistence of NITRO-SDK and AGBSDK environments

Added document about installing and using both NITRO-SDK and AGBSDK at same time to $NitroSDK/docs/HowToJoinAGBDevEnv.txt.

Note 3-05: Setup of OBJ and BG bank EFG

Added the entries 80_EF and 80_EG to the VRAM bank combination setup. Changed so VRAM can be aligned to BG or OBJ using EF and EG combination.

In addition, to handle requests for aligning VRAM with combinations not supported with the SDK, a document was compiled describing how to add entries by revising the SDK source. The document is located in $NitroSDK\docs\SDKHowTo/HowToMakeMyVRamBankType.txt.

Note 3-06: Fix of G3X_InitMtxStack() problem

If the original PROTECTION matrix stack level was 0 during initialization of the matrix stack, a stack underflow was caused.
This bug was fixed.

Note 3-07: Addition of link to man geometry command cycle list

A link was added to go from 3D geometry (G3*) in the left window of the manual to the geometry command cycle list.

Note 3-08: Creation of OS_Sleep()

Added the function OS_Sleep() to stop a thread for a specified time.

Note 3-09: Fix of thread switch bug

When the thread was switched in the IRQ handle, the location referenced in the thread list was incorrect and a thread was not run unintentionally.
This bug was fixed.

Note 3-10: Creation of OS_ReadMessage()

The function OS_ReadMessage() was created to reference the first message in the message queue and copy it only. OS_ReadMessage() is different from OS_ReceiveMessage(). It does not try to send a message and recover blocked threads. Also, it does not change the content of the message queue.

Note 3-11: Fix of IRQ check fragment

With the timer interrupt during the setting of the IRQ interrupt check flag, an incorrect bit was accessed and set.
This bug was fixed.

Note 3-12: Fix of multiple V-count alarms

When multiple periodic functions with similar startup times were input for the V-count alarm, a bug occurred in which only the first function was executed. This bug was fixed.
Along with this fix, a change was made so a delay allowed count could be specified for the run time of the periodic function for the V-count alarm.

Note 3-13: Fix of tick bug

A bug was found in the tick system. The system would only count up to a certain number of digits.
This bug was fixed so that 64-bit values could be handled.

Note 3-14: Addition of time and tick conversion macro

Conversion macros were added for time specified in seconds, milliseconds and microseconds; and the tick count value based on the system clock used in OS_Sleep() and OS_SetAlarm(). These macros are listed below.

OS_MicroSecondsToTicks( usec )
OS_MilliSecondsToTicks( msec )
OS_SecondsToTicks( sec )
OS_TicksToMicroSeconds( tick )
OS_TicksToMilliSeconds( tick )
OS_TicksToSeconds( tick )

Note 3-15: Fix of bug with recovery from timer interrupt callback

A timer interrupt callback was setup with OS_SetIrqFunction(), the timer interrupt was started, and the callback was called. Even if a timer interrupt was setup again at this point, the interrupt was cleared when it returned from the callback.
This bug was fixed.

Note 3-16: Change to handling of FIQ in OS_DisableInterrupts()

Both IRQ and FIQ were stopped with OS_DisableInterrupts(), but a change was made so only IRQ was stopped due to conditions related to the debugger.
The lock/unlock and context switch of the AD Bus stops both IRQ and FIQ.

Note 3-17: Change of specifications for debugger exception handler call

The specifications were changed so if a debugger exception handler is present it is called before calling the user exception handler.

Note 3-18: Change to register name of ARM7

The categories for the registers reg_DISP_DISPSTAT and reg_DISP_VCOUNT were transferred to GX and the names were changed to reg_GX_VCOUNT and reg_GX_DISPSTAT.
The reg_OS_POWCNT categories were transferred to SND. The name was changed to reg_SND_POWCNT.

Note 3-19: Fix of register table

Minor fixes were done to the ARM9 and ARM7 register tables, $NitroSDK/build/buildsetup/ioreg/io_reg_list*, $NitroSDK/build/buildsetup/ioreg_sp/io_reg_list*. Almost all of the current specifications were compiled together. The areas added that were not present before are mainly in the EXI and PXI categories.

Note 3-20: Fix of manual

Corrections were done to some errors in the reference manual. One of these was to change MI_SetWRAMBank() to MI_SetWramBank(). Also please note that in conjunction with this change, the html file for the MI_SetWramBank() manual was changed from MI_SetWRAMBank.html to MI_SetWramBank.html.

Note 3-21: Fix of IRQ Table

This problem was in the OS. There was a mistake in the IRQ handler table. The interrupt elements allocated to the bits in the IE register were not all in order and there were some not being used. This was not considered when the table was made so when interrupts after unused items referenced the table, they accessed the wrong areas. This problem was fixed.
Unused items were also allocated to elements in the table. There were two extra alignment elements in ARM9 and three extra in ARM7. There was a marginal increase in the memory used.

Known Issues in NITRO-SDK Ver 1.0 PR2

The ROM file system function and overlay problems will be carried over.


NITRO-SDK Ver 1.0 PR1

(2004/02/27)

Note 2-01: Name Change to NITRO-SDK

The irisSDK now supports NITRO hardware. At the same we changed the SDK name to NITRO-SDK.
Notice that following this name change, in the NITRO-SDK the following changes have been made from irisSDK.

  1. Changed iris.h to nitro.h.
  2. Changed the directory include/iris to include/nitro.
  3. Changed the main function IrisMain to NitroMain.
  4. Changed the environment variable IRISSDK_ROOT to NITROSDK_ROOT.
  5. Changed the switches that begin with IRIS, such as the compile switch IRIS_DEBUG to NITRO_DEBUG.
  6. Changed the word IRIS to NITRO in documentation.
  7. Prepared $NitroSDK/tools/elftobin/NitroPostLinker.bat as a Postlinker for NITRO in IDE.

Note 2-02: Grouped Source According the Processors.

We grouped some of the library source files and header files according to the processor, and stored them respectively in the ARM9/ARM7/common sub directories.

Anyone who until now has been directly specifying #include <iris/os/alloc.h> instead of iris.h, os.h when including header files for the OS, etc., must now specify #include <nitro/os/common/alloc.h>.

Note 2-03: Added an API and Demos to Support Sub LCD.

We prepared an API (GXS function group) to support the Sub LCD. We also added demo programs that use the API. Refer to directories that begin with Sub, under $NitroSDK/build/demos/gx/UnitTours.

Note 2-04: Changed the ELF File Extension

We changed the ELF file extension to .nef. We also plan to support .nef with NITRO development-related tools.

Note 2-05: Moved the Sample Code Directory, and Added Code for Auto Test.

We changed the directory that contains sample code from $NitroSDK/build/tests to $NitroSDK/build/demos.

We embedded code for auto test control in some files, for SDK library test processing. In particular, this code is enclosed in #ifdef SDK_AUTOTEST - #endif. This code is for our internal use. If you are going to copy sample code and use it, we do not mind if you remove the auto test code.

Note 2-06: SDK Thumb Code Compile

It is now possible to generate a thumb code version library. To switch, you can use the make command start time variables or the environment variable NITRO_CODEGEN.

Sample command

Generate THUMB version code

 

make NITRO_CODEGEN=THUMB

Generate ARM version code

 

make NITRO_CODEGEN=ARM

Currently, if you omit NITRO_CODEGEN, it will generate an ARM code version library.

Note 2-07: Provided a Means of Switching ARM code / Thumb Code Generation at Function Level.

We prepared include files that allow each function to switch ARM code / Thumb code generation, and to return to initial settings.

Instruct ARM code generation

 

$NitroSDK/include/nitro/code32.h

Instruct Thumb code generation

 

$NitroSDK/include/nitro/code16.h

Return to initial settings

 

$NitroSDK/include/nitro/codereset.h

(Example)
If you want the function void A(void) to generate using Thumb code:

#include <nitro/code16.h>
void A(void)
{
     ....
}
#include <nitro/code32.h>

In CodeWarrior, pragma can directly change the output code. However, our policy is to use these files to absorb, as much as possible, the differences in compilers. We recommend that you use them.

Note 2-08: Support for C++ in the SDK Library

We have made the following additions and revisions to support code creation with C++.

  1. Added a process to call the NitroStartUp() function and a static constructor before calling NitroMain().
  2. Revised header files that had problems when used with C++.
  3. C++ sample code collection ($Nitro/build/demos/os/cplusplus-1).

If the NitroStartUp() function has been prepared on the application side, the SDK will call the NitroStartUp() function before the static constructor process. If you initialize the memory management mechanism in NitroStartUp(), it will be possible to use the new() function in the static constructor process.

 

Note 2-09: Support for X, Y Buttons

We now support X, Y button read in the PAD_Read() function.

Notice that due to hardware specifications, interrupts generated by X, Y button input (see PAD_SetIrq()) are not supported.

Note 2-10: Revisions Related to make-Related Files

We revised make-related files (commondefs, modulerules, etc., in $NitroSDK/build/buildtools).

This implemented / revised the following.

  1. Implemented output of a source file dependence information file, and its reference process.
  2. Make did not function properly when using the make -f option. Fixed.
  3. Make did not function properly when you specified a large source file in SRCS. Fixed.

Note 2-11: Revised Compound Statement Expressions in Macros.

We eliminated compound statements (multiple statements within {}) with macros definitions.

Note 2-12: Moved the Inline Assembler Functions That Were in Header Files to C source.

Because it caused problems with ARM/Thumb code output switching, we moved the inline assembler functions (from static inline asm) from the header files to C source.

Note 2-13: Name Change: Macro CODEGEN_PROC to NITRO_PROC

Changed the name of the macro variable CODEGEN_PROC to NITRO_PROC. This macro variable is in Makefile, and is used to switch output code for ARM9/ARM7.

Note 2-14: Changed the ARM7 Binaries That Are Used for Linking in elftobin

We remade the executable files for ARM7 that are linked to the ARM9 executable files by default when you make binary files. They contain X, Y button read processes. The files are located under $NitroSDK/build/components/idle/ARM7.

If you link executable files for ARM7 from a previous SDK and ARM9 executable files created by this version of the SDK, the PAD_Read() function will not work properly. Take notice of this if you are explicitly specifying the ARM7 executable files with Makefile.

Note 2-15: Added a Mechanism for Setting IRQ Stack Size

We described IRQ stack size in the LCF file. This makes it possible to set it.

Note 2-16: Added a Mechanism to Display the Context at the Time That an Exception is Generated

We added a mechanism to display the context at the time that an exception is generated (excluding IRQ exceptions, FIQ exceptions, and SWI exceptions). You can also call a user callback routine.

Note 2-17: Fixed a Bug That Occurred When a NULL Callback Was Set in MI_Dma*Async().

When a NULL callback was specified, it proceeded without setting the callback. In the case that there is no stall due to bus access contention, after transmitting DMA commands, it returns from the function without waiting.

Note 2-18: Added a Warning for DMA That Hits a TCM Region

The DEBUG library will issue a warning when a region that includes ITCM or DTCM is specified as either a DMA transfer destination or source.

Note 2-19: Added a Process to Clear Memory at Start Time

We made it so that crt0.c will clear DTCM. This will clear the stack region. We also made it so that the BG/OBJ palettes, and OAM will be cleared.

Note 2-20: Rounded Cache Related Function Argument Addresses.

32-byte border rounding for the lower order of start addresses had not been implemented in DC_StoreRange(), DC_FlushRange(), DC_TouchRange(), IC_InvalidateRange(). We implemented it.

Note 2-21: Added OS_CreateThread() Argument, Made Thread Priority Control More Flexible.

Concerning the thread mechanism, we added the following:

  1. Added argument to OS_CreateThread(). You can now pass an argument to the execute startup function.
  2. You can now set thread priorities 0-31. In line with this, threads immediately after OS_InitThread() is called will now have a priority of 16.
  3. We implemented an API (OS_SetThreadPriority(), OS_GetThreadPriority()) to acquire and change thread priorities.

Note 2-22: Support for a Mechanism That Checks Thread Stack Leaks.

We prepared the OS_CheckStack() function to check for thread related stack leaks.

Note 2-23: Implemented Alarms and a 64-bit Clock Counter.

We used 2 16-bit timers to implement a 64-bit clock counter. We also implemented an alarm mechanism that calls callback functions at specified times. Because this multiplexes timer interrupts, it can register more callback functions than the number of hardware timers. These functions are options. You can choose whether or not to use them.

Note 2-24: Implemented a V-count Alarm

We multiplexed V count interrupts, so that you can register multiple callback functions. For details see the reference manual for OS V-count related functions.

Note 2-25: Added MI_DmaSend*() ,MI_CpuSend*()

We added MI_DmaSend*, MI_CpuSend* API.

Note 2-26: Revised OS_StartTimer*() Assert Determination

In the DEBUG version library, an assert was generated if you set OS_TIMER32_23 as the ID in OS_StartTimer32(), or if you set OS_TIMER48_123 as the ID in OS_StartTimer48(). We fixed this.

Note 2-27: Added CPU Memory Functions

In the memory interface we prepared memory manipulation functions such as MI_CpuClear() that use the CPU instead of DMA. We abolished the UTL library.

Note 2-28: Measures for a TEG Board Hardware Bug Related to Main Bus Access During the V-blank Period.

The TEG board has a hardware bug. If a certain pattern of data is output to the main processor bus at the beginning of the V-Blank period, polygon display will be corrupted. Countermeasures for this are performed in the library.

The actual code is embedded in GX_Init(). For details see the region enclosed by #ifdef SDK_TEG_WA_VBLANK - #endif in $NitroSDK/build/libraries/gx/src/gx.c.

This code uses V-count alarms. Therefore, if you want to use this process, do not turn off V-count alarms.

Note 2-29: Adjusted Light Parameters

In the demos that perform light processing, the total of the parameters such as light color was very largenot an appropriate value. Therefore when polygons even slightly faced light, the light value became MAX. We adjusted this.

We also revised parameter table definitions related to specular light in DEMOLib so that they approach cosinen. You can see the change caused by the difference in parameter tables in the gx/UnitTours/3D_Shininess demo.

Note 2-30: Implemented Overflow Check for the Dynamic DL Creation Function Group.

We added a DL buffer overflow check to the dynamic DL creation function group G3*. This is only enabled when the DEBUG version library is linked.

Note 2-31: G3_Ortho() Bug Fix

Fixed a G3_Ortho() implementation bug.

Note 2-32: G3_EndMakeDL() Did Not Return the Proper Size. Fixed.

G3_EndMakeDL() did not return the proper size. We fixed this bug.

Note 2-33: G2_Added an Argument to SetBG*Control256x16Pltt()

We added an argument to G2_SetBG*Control256x16Pltt() that specifies the character base block.

Note 2-34: Bug Fixes in G3CS_LoadTexMtxEnv(), G3CS_LoadTexMtxTexCoord()

There was a problem in the display list that was generated by G3CS_LoadTexMtxEnv(), G3CS_LoadTexMtxTexCoord(). We fixed this.

Note 2-35: API Support for the New Translucent Texture

An API now supports A3I5 textures. Confirm emulator specification to see whether this texture can actually be displayed.

Note 2-36: Support for VecFx16 Type and Related API

We support the 3D vector type VecFx16, which uses Fx16 elements. We prepared the VEC_Fx16* series to handle it.

Note 2-37: Added a C Linkage Specification to the DEMO Library Header Files.

We added the C linkage specification extern "C" to the $NitroSDK/build/demos/gx/UnitTours/DEMOLib header files.

The main purpose of this DEMO library is to simplify the implementation of UnitTours. Therefore, there may be times when we will not be able to respond to change requests concerning this specification. Please take this into consideration when using this DEMOLib in an application.

Known Issues with SDK 1.0

Decided to postpone ROM file system function and implementation of overlay.

January 20, 2004 irisSDK snapshot patch 1

(2004/02/04)

Note 1-01: 3D-related test code execution was slow. Fixed.

In the main loop

SVC_WaitVBlankIntr();
G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W);

The above, APIs appear in reversed order and an unnecessary V-blank wait is generated. Exchanging them fixes the problem.

The 3D graphics test code that caused the problem is fixed.

Note 1-02: VEC_Mag overflow measures.

When a large vector is placed in VEC_Mag, internal calculation generates overflow, and the result is strange.

This bug has been fixed.

Note 1-03: Fixed MTX_Concat43()

In fx_mtx43.c, the X axis transform element in matrix b is ignored.

This bug has been fixed.

Note 1-04: Note 1-05: Note 1-06: Note 1-07: Note 1-08: Fixed G2_SetBG3Priority() definitions

There were mistakes in G2_SetBG3Priority definitions.

This bug has been fixed.

Note 1-09: Note 1-10: Support for IS_IRIS_EMULATOR in packaged library files

Although built library files are bundled in the package, if you used libos.a in the library as-is, OS_Printf did not output to IS-IRIS-EMULATOR. When the library was rebuilt in an environment in which IS-IRIS-EMULATOR had been completely installed, the problem disappeared.

We bundled the corrected library files in a patch.

Note 1-11: Additional file for ARM7 version: libstubsisd.a

When linking the ARM7 side processors, if the environment variable "IS_IRIS_DIR" is not included, it attempts to link libstubsisd.a. However, because this file did not exist an error occurred.

Added ARM7 version libstubsisd.a and its source file.

Note 1-12: Fixed definition of system reserved region size

The system reserved region size changed (32bytes->64bytes) with the new BOOT ROM. This was not supported.

This bug is now fixed. In accord with this, the size of the system mode stack region has become smaller by 32 bytes.

Note 1-13: Note 1-14: Known Issues in Snapshot 20040120+Path1

(Plan to fix in the next release)

  1. In the test code that performs light processing, the values for parameters such as light color are not appropriate. Therefore, when polygon surfaces even slightly face the light, light strength becomes MAX.
  2. There is no method for specifying the character base block in G2_SetBG*Control256x16Pltt().
  3. In the DEBUG version library, assert is generated if you set OS_TIMER32_23, as the ID in OS_StartTimer32, or if you set OS_TIMER48_123 as the ID in OS_StartTimer48().

NINTENDO Technical Support Center