NITRO-SDK Revision History


NITRO-SDK 3.1 Release version (05/02/2006)
Note 38-01: (CARD) Made revision regarding DMA transfer from ROM
Note38-02: (CTRDG) Added AGB backup access functions
Note 38-03: (CTRDG) Added the functions CTRDG_SetPhiClock and CTRDG_GetPhiClock
Note 38-04: (FS) Internally revised the ROM archive
Note 38-05: (FX) Changed the FX_Mul function
Note 38-06: (FX) Revised the VEC_Normalize function
Note 38-07: (GX) Added a description to the reference for G2_SetBlendAlpha
Note 38-08: (MATH) Revised the MATHCompareFunc reference
Note 38-09: (MI) Corrected the compression problem with the MI_CompressLZ function
Note 38-10: (OS) Revised the OS_GetConsleType function.
Note 38-11: (OS) Revised the sample demo exceptionDisplay-2
Note 38-12: (PRC) Added figure dictionary data for demo
Known issues in SDK 3.1 release version
NITRO-SDK 3.1 RC (04/11/2006)
Note 37-01: (CARD) Made 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 reference to MTX_Copy* function.
Note 37-05: (GX) Added G3OP_DUMMY_COMMAND
Note 37-06: (GX) Revised the geometry command cycle list
Note 37-07: (MI) Added endian-aware memory access functions
Note 37-08: (OS) Revised OS_CheckHeap
Note 37-09: (OS) Revised arena overview
Note 37-10: (OS) 8-byte alignment support for the stack
Note 37-11: (PM) Revised the PM_ForceToPowerOff and PM_ForceToPowerOffAsync functions
Note 37-12: (SND) Added the SND_SetTrackMuteEx function
Note 37-13: (TOOL) Revised reference regarding attachsign
Note 37-14: (TOOL) Corrected a problem where PPM files could not be loaded using the ppmconv tool
Note 37-15: (VIB) Revised the pulse_vib sample demo
Note 37-16: (WM) Revised 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 SDK 3.1 RC
NITRO-SDK 3.1 PR (03/14/2006)
Note 36-01: (ARM7) Improved automatic pull-out detection of components
Note 36-02: (CARD) Internal revisions 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 references in G2_GetBG2ScrPtr and G2_GetBG3ScrPtr functions
Note 36-07: (MB) Added MB_FAKESCAN_PARENT_BEACON notification
Note 36-08: (MB) Changed 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 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: (STD) Added VIB library
Note 36-16: (WBT) Revised the WFS sample module
Note 36-17: (WBT) Revised function reference
Note 36-18: (WBT) Added function reference overview
Note 36-19: (WM) Changed specifications regarding NULL response of children during MP communications
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) Revised description of macros
Known issues in SDK 3.1 PR
NITRO-SDK 3.0 Release version (01/16/2006)
Note 35-01: (CARD) Added an overview of function references
Note 35-02: (DevEnv) Added a reference manual 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) Added figure dictionary data for demo
Note 35-08: (WM) Corrected the display of the debug string in the sample demo
Note 35-09: (WM) Revised internal communications parameters
Known issues in SDK 3.0 release version
NITRO-SDK 3.0 RC3 (12/26/2005)
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) Revised the CARD_CheckPulledOut function reference
Note 34-05: (OS) Revised the OS_CreateThread function
Note 34-06: (WBT) Revised wbt-1 sample demos
Note 34-07: (WBT) Corrected a problem with the user callback
Note 34-08: (WM) Corrected a problem with MP communications 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 (12/05/2005)
Note 33-01: (CARD) Corrected problem with backup function
Note 33-02: (CTRDG) Added access permission function for AGB cartridges
Note 33-03: (DevEnv) Added macro for comparing SDK versions
Note 33-04: (DevEnv) Added SDK_INLINE, SDK_DECL_INLINE
Note 33-05: (DevEnv) Corrected makebanner tool
Note 33-06: (DevEnv) Updated ntexconv
Note 33-07: (DevEnv) Added the packnlf tool
Note 33-08: (MB) Revised MBP sample module
Note 33-09: (MB) Added MB_FAKE_WORK_SIZE definition
Note 33-10: (MB) Corrected problem regarding 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 VBlank 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) Revised the start location of extended main RAM arena
Note 33-18: (WBT) Revised the WFS sample module
Note 33-19: (WBT) Revised the WFS-related sample demo
Note 33-20: (WM) 2D_Updated the CharBg_3 and Sub_CharBg_3 sample demos
Note 33-21: (WM) Added a timing configuration function for MP communications
Note 33-22: (WM) Added a send size configuration function for MP communications
Note 33-23: (WM) Added a spacing control function for MP communications
Note 33-24: (WM) Updated the dataShare-Model sample demo
Note 33-25: (WM) Revised the display of the dataShare-Model sample demo
Note 33-26: (WM) Added a setting value for 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 an option for disabling the pre-check of the send/receive buffer size
Note 33-29: (WM) Added a note regarding the wireless communication event counter
Known problems with SDK 3.0 RC2
NITRO-SDK 3.0 RC (11/07/2005)
Note 32-01: (CARD) Revised internal processing of EEPROM device operations
Note 32-02: CARD) Added removal detection after ROM access
Note 32-03: (CARD) Made compatible with new backup devices.
Note24-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 compile 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 VBlank wait function
Note 32-19: (OS) Changed the argument const 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 real-time and check value conversion macro
Note 32-23: (OS) Updated the Chinese version’s startup screen
Note 32-24: (OS) Corrected thread cue operations including threads about to terminate
Note 32-25: (PRC) Corrected the sample tool “pdic2c.pl”
Note 32-26: (RTC) Changed the method for getting RTC day of the week information
Note 32-27: (SND) Corrected a problem where the SND_CalcDecibel function would not return a suitable value when the argument 0 had been entered
Note 32-28: (STD) Added STD library
Note 32-29: (WBT) Corrected a problem with GetBlock request notifications
Note 32-30: (WBT) Revised the WFS sample module
Note 32-31: (WM) Updated the WM test tool
Note 32-32: (WM) Corrected the WM_SetLifeTime function’s reference description
Note 32-33: (WM) improved mongoose components
Note 32-34: (WM) Added information to be notified 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 for when the local player disconnects
Note 32-39: (WM) Re-corrected internal operations for connecting and disconnecting
Known issues in SDK 3.0 RC
¦NITRO-SDK 3.0 PR4 (09/08/2005)
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) Revised makelcf
Note 31-07: (DevEnv) Added loadrun, nitrorun tool commands
Note 31-08: (ENV) Added libenv*.a environment resource library
Note 31-09: (CARD) Revised 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) Revised FX_FX64C_TO_F32 macro
Note 31-12: (CARD) Fixed bug in FX_InvSqrt function (Released in NITRO-SDK 2.2 official release)
Note 31-13: (CARD) 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 reference 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 OSThread-related functions
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 disconnect detection process for 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) Revised 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 (08/10/2005)
Note 30-01: (CARD) Added CARD_CheckPulledOut function reference (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) Revised sample demos (Released in NITRO-SDK 2.2 official release)
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 disconnect (Released in NITRO-SDK 2.2 official release)
Known problems with SDK 3.0 PR3
¦NITRO-SDK 3.0 PR2 (08/04/2005)
Note 29-01: (DevEnv) Revised ISD_NITRO_DEBUGGER path (Released in NITRO-SDK 2.2 official release)
Note29-02: (MB) Revised the Sub double3D sample demos again (Released in NITRO-SDK 2.2 official release)
Note 29-03: (GX) Added const modifier to arguments of function that gets display list state (Released in NITRO-SDK 2.2 official release)
Note24-04: (OS) Added 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 official release)
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. (NITRO-SDK 2.2 RC ????)
Known problems with SDK 3.0 PR2
NITRO-SDK 3.0 PR (07/22/2005)
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 official release)
Note28-04: (GX) Corrected GX demos
Note28-05: (MATH) Increased speed for MD5 function (Released in NITRO-SDK 2.2 official release)
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 SDK 3.0 PR

The NITRO-SDK 3.0 andNITRO-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 (07/15/2005)
Note 27-01: (CARD) Added the CARD_CheckPulledOut function.
Note 27-02: (CARD) Made 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 times where the cygdrive prefix of CYGWIN is not /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 functions FS_CreateFileFromMemory and FS_CreateFileFromRom.
Note 27-11: (FS) Added the FS_End function.
Note 27-12: (FS) Corrected problem with the FS_WaitAsync function.
Note 27-13: (FS) Corrected problem during overlay unloading.
Note 27-14: (FX) Corrected problem with the arc tangent 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 of data cache.
Note 27-30: (OS) Corrected problem when multiple OSMutex are locked.
Note 27-31: (OS) Added header file-related references.
Note 27-32: (RTC) Added functions to convert back and forth between date/time and total passage of seconds.
Note 27-33: (RTC) Added restrictions to APIs 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 abolition 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) Deterred MP communications 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 communications per frame.
Known issues in SDK 2.2 PR
Previous Revision Histories

NITRO-SDK Version 3.1 Release

(2006/05/02)


Note 38-01: (CARD) Made revisions regarding DMA transfer from ROM

A problem was corrected where variables adjacent to the transfer destination buffer used for DMA transfer from the ROM were being affected by cache operations if the buffer cache line was not aligned at 32-byte boundaries.


Note38-02: (CTRDG) Added AGB backup access functions

Added a series of APIs to the CTRDG library for accessing the backup device installed in the AGB cartridge.


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

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 funcitonality in past version releases, but this was changed to CTRDG_ when categories were reviewed.

Even in terms of internal operation, the CTRDG_SetPhiClock function has been changed to set the clocks of both the ARM7 and ARM9.
Until now, it's only been possible to change the setting of the ARM9, but the clock output pattern would change when moving the cartridge access privilege 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 revised the ROM archive

A problem was corrected where 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 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 is displayed by SDK_WARNING if digits overflow.
Additions were also made to the function reference.


Note 38-06: (FX) Revised the VEC_Normalize function

There was a problem where correct results could not be obtained when the value given to this function was greater than a set value, so it was changed so that a message would be displayed by the SDK_WARNING macro when the value was above this set amount.
Additions were also made to the function reference.


Note 38-07: (GX) Added a description to the reference for G2_SetBlendAlpha

Added a note to the reference for the G2_SetBlendAlpha function that a backdrop cannot be specified for a the first target screen.


Note 38-08: (MATH) Revised the MATHCompareFunc reference

This function is used when sorting using the MATH_QSort function. A note was added to the reference for MATHCompareFunc that 0 must be returned when two elements being compared are equal.


Note 38-09: (MI) Corrected the compression problem with the MI_CompressLZ function

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


Note 38-10: (OS) Revised the OS_GetConsleType function.

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


Note 38-11: (OS) Revised the sample demo exceptionDisplay-2

There was a problem where the required function would be dead stripped due to using CW2.0 in the $NitroSDK/build/demos/os/exceptionDisplay-2 sample demo. This has been corrected so that dead stripping is explicitely not performed.


Note 38-12: (PRC) Added figure dictionary data for demo

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


Known issues in SDK 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 compatible with new backup devices.

Made the Card Library compatible with the 8MB Flash Backup Device and added CARD_BACKUP_TYPE_FLASH_8MBITS to the CARDBackupType enumerated type.
In relation, the reference and sample demos were updated.


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 due to the fact a .bss section had not been specified in the .itcm/.dtcm/.wram section until now.

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


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

Corrected the problem where, depending on the version of the sed command, a NITRO-SDK build error would sometimes occur.


Note 37-04: (FX) Added reference to MTX_Copy* function.

Added the descriptions of the MTX_Copy* function to the FX category in the function reference.
The following function references were added.


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) Revised the geometry command cycle list

We confirmed that the number of command cycles corresponding to each source increases when an environment map is used.
Information was added to the geometry command cycle list in the function reference.


Note 37-07: (MI) Added endian-aware memory access functions

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


Note 37-08: (OS) Revised OS_CheckHeap

There was a problem where an error would be returned if the heap handle specification was OS_CURRENT_HEAP_HANDLE.
This has been fixed.


Note 37-09: (OS) Revised arena overview

Corrected a mistake in the graphic about arena management and memory allocation in the OS arena overview in the function reference. Also added descriptive text.


Note 37-10: (OS) 8-byte alignment support for the stack

Adjusted stack processing so that the stack pointer is always aligned at 8 byte boundaries during function calls.


Note 37-11: (PM) Revised 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 processing to apply to a sound played while a sequence track is muted.


Note 37-13: (TOOL) Revised reference regarding attachsign

Changed the description in the reference for the attachsign tool about getting the authentication code.


Note 37-14: (TOOL) Corrected a problem where PPM files could not be loaded using the ppmconv tool

When an attempt was made to convert ppm files created with photoshop (via a NetPBMformats plugin), the message "Cannot convert file "xxxx.ppm" appeared 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 bug was fixed.
Several ppm files which could not be converted can now be converted.
This fix has no impact on the ppm files that could be converted correctly.


Note 37-15: (VIB) Revised the pulse_vib sample demo

The SVC_WaitVBlankIntr function 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, so this function was changed to OS-WaitVBlankIntr.
Furthermore, specifications have 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) Revised the dataShare-Model sample demo

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


Note 37-17: (WM) Added the wireless-all sample demo

The sample demo $NitroSDK/build/demos/wm/wireless-all shows the comprehensive use of WM library functions.


Note 37-18: (WM) Corrected sample demos

Added the following revisions to the WM sample demo.


Known issues in SDK 3.1 RC

- Added a series of APIs to the CTRDG library for accessing the backup device installed in the AGB cartridge.
However, operations are 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 pull-out detection of components

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


Note 36-02: (CARD) Internal revisions 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 for each instance. From now on, the callback can only be called once due to calling the CARD_CheckPulledOut function or due to 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 that processing will be forcibly stopped when outputting a debug string using OS_Printf or other function unless using IS-NITRO-DEBUGGER ver1.65, which is compatible with this function.


Note 36-04: (CTRDG) Added the CTRDG_CheckPulledOut function.

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


Note 36-05: (GX) Corrected 2D_CharBg_Direct sample demos

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


Note 36-06: (GX) Edited references in G2_GetBG2ScrPtr and G2_GetBG3ScrPtr functions

A mistake was corrected in the description for when a bitmap BG in a G2_GetBG2ScrPtr and G2_GetGB3ScrPtr function reference.


Note 36-07: (MB) Added MB_FAKESCAN_PARENT_BEACON notification

MB_FAKESCAN_PARENT_BEACON was added to events notified to the MBFakeScanCallbackFunc callback. This notification is issued each time an MB parent beacon is received.

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


Note 36-08: (MB) Changed the operation of MB_ReadMultiBootParentBssDesc

A problem was corrected where the magicNumber and ver members of gameinfo, which should usually be specified inside the MB_ReadMultiBootParentBssDesc function, remained uninitialized.


Note 36-09: (MB) Corrected a problem with the number of retries when reconnecting to a clone boot sample parent

A problem was corrected where revisions described in Note 20-08: were not applied to the clone boot sample and retry was impossible if even one attempt at connection to the parent failed when reconnecting to a parent after child boot.


Note 36-10: (MB) Updated documentation

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


Note 36-11: (MIC) Described restrictions during automatic sampling

A note was added to the reference manual that there is a restriction which does not allow extended main memory to be specified as a buffer for storing sampling results when performing auto-sampling for the mic. No change has been made to library operations.


Note 36-12: (PM) Corrected 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 the power of the DS unit, the DS main unit will occasionally restart if main power was turned off during LCD OFF status.
The specifications of the PM_ForceToPowerOff and PM_ForceToPowerOffAsync functions have therefore been changed so that power is turned OFF after 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 files were stored depended on the order entries appear under the PC file system. This resulted in a phenomenon where the order files were stored would change for different PCs regardless of the fact the same application was being built. This problem was fixed so that files are now sorted by name and then stored when using makerom.


Note 36-15: (STD) Added VIB library

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


Note 36-16: (WBT) Revised 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) Revised function reference

A problem was corrected where the fact that the following commands can be directly issued from one child to another was described incorrectly in the function reference.


Note 36-18: (WBT) Added function reference overview

The item "Overview" was added to teh WBT library function reference.


Note 36-19: (WM) Changed specifications regarding NULL response of children during MP communications

Although specifications were changed so that a Null response would not be returned by children in the middle of MP communications as described in Note 30-06, this would occasionally result in unstable operations depending on the environment, so the change described in Note 30-06 has been canceled the previous specification has been restored.
In addition, instead of allowing Null responses from children, specifications have been changed to that the child is seen to have failed to communicate if the parent receives a Null response.
Since the WM_SetMPInterval function has been added, excess load problems on the child side should not result even if changes are made to allow the return of Null responses.


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 a value of 0x0001 when used as a DS beacon. In addition, the ver field has been established using one byte from of reserved memory.
Under the current version, the ver field is always 0, but in the future this will increase as the format of the WMGameInfo structure changes. Note, however, that in order 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 have been added in order to determine whether or not the scan result beacon is that of a DS wireless play parent. Internally, a determination is made whether or not 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

A problem was corrected where communications would be discontinued after a set time interval and the MP lifetime would run out when the MP communications option minPollBmpMode was enabled.

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


Note 36-23: (WM) Updated documentation

The following WM library-related document has been updated.
$NitroSDK/docs/technicalNotes/AboutWirelessManager.pdf


Note 36-24: (Misc) Revised description of macros

Corrected the descriptions of macros where () were not attached to arguments.
This change has no effect as long as arguments where operations change depending on the presence of parentheses are not being used.
The following macros have been revised.

Corresponding function references have also be revised along with this change.


Known issues in SDK 3.1 PR

None.


NITRO-SDK Version 3.0 Release

(2006/01/16)


Note 35-01: (CARD) Added an overview of function references

Added an "overview" items to the function references in the CARD library.


Note 35-02: (DevEnv) Added a reference manual for the packnlf tool

Added a reference manual for the packnlf tool.


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 memory would be over-accessed.

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

These problems have been corrected.


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

A problem was corrected where an endless 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 only appears in NITRO-SDK 3.0 RC3.


Note 35-06: (OS) Edited the Chinese version startup screen

A problem was corrected where changes described in Note 32-23 resulted in the display of garbage characters on the startup screen.


Note 35-07: (PRC) Added figure dictionary data for demo

The stroke order for 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 display of the debug string in the sample demo

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


Note 35-09: (WM) Revised internal communications parameters

There was a problem making it easy for MP communications to fail depending on the environment, so improvements were made by adding revisions to communications internal parameters.


Known issues in SDK 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

Fixed the problem that caused transfer rates to be adversely affected where WM_ERRCODE_SEND_FAILED was issued frequently on the parent device in bad communication environments during implementation of block transfer in the MB library.


Note 34-04: (OS) Revised the CARD_CheckPulledOut function reference

Because ARM946E-S, which is a CPU on Nintendo DS, has the specification that does nothing, such description has been added in the reference for the DC_TouchRange function that uses this feature.


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

There was a bug where, depending upon the initial value of the thread structure initialized with OS_CreateThread, an access exception error would occur when the thread was executed. That bug has been fixed.


Note 34-06: (WBT) Revised 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 error has been corrected.


Note 34-07: (WBT) Corrected a problem with the user callback

The values of the result member of the arguments in the user callbacks which notify of each command completion were indeterminate. This problem has been corrected.


Note 34-08: (WM) Corrected a problem with MP communications parameters

The configurations for each of the MP communication parameters added in 3.0 RC2 were not operating normally. This problem has been corrected.


Note 34-09: (WM) Made changes to the method of setting the WH-related parameters

All of the SDK demos which use WH directly referenced $NitroSDK/build/demos/wireless_shared/wh/wh_config.h 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. Processes were added within the WM library 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 function

Corrected a problem that might cause a return of CARD_RESULT_TIMEOUT even if the backup write succeeds when a backup write with a small size specification executes during wireless communication.


Note 33-02: (CTRDG) Added access permission function for AGB cartridges

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


Note 33-03: (DevEnv) Added macro for comparing SDK versions

Added the macro SDK_VERSION_NUMBER 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, SDK_DECL_INLINE

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

However, the code size can be reduced by changing these macros from static inline to inline only when using the environment with the compiler version in which the the inline function materialization problem has been fixed and using the functions that have been changed from inline to static inline to avoid this problem.

Since the result of changing these macros is essentially not guaranteed, base the decision on the application.


Note 33-05: (DevEnv) Corrected makebanner tool

A problem was corrected where character strings could not be included in a banner file if the start of the game title or descriptive text in question happened to matched a specifiable parameter described in the bsf file used by the makebanner tool.


Note 33-06: (DevEnv) Updated ntexconv

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


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

The tool paknlf has been added to collect all file specifications referenced by a .nlf file as absolute paths and output them as a ZIP file.

Although this tool was included under NITRO-SDK 3.0 RC, mention of its addition was left out of the changelog.


Note 33-08: (MB) Revised MBP sample module

We made the following correction 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 in order to call the MB_FakeInit function has been defined as MB_FAKE_WORK_SIZE. This value is defined as a constant equal in value to the size of data retrieved by the conventional MB-FakeGetWorkSize function.


Note 33-10: (MB) Corrected problem regarding the parent beacon flag

A problem was corrected where it was possible for applications sharing the same GGID under wireless play and download play to fail to detect the situation due to the fact that the WM_ATTR_FLAG_MB flag remained disabled, and only the WM_ATTR_FLAG_ENTRY flag was enabled, for the first beacon sent by an MB parent device.


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

Rather than requiring a work buffer of about 9KB, the function M_CompressLZFast has been added to perform LZ compression at rates several times faster than MI_CompressLZ, which has been available.


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.
Conventional specifications are used if this switch is not specified.

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


Note 33-13: (OS) Changed the definition of the VBlank wait function

Specifications are such that SVC_WaitVBlankIntr does not release resources to low-priority threads. Since this would cause problems depending on how the function was used, specifications have been changed so that a call to SVC_WaitVBlankIntr is automatically replaced by a call to OS_WaitVBlankIntr. Note, however, that this replacement is made using defines inside a header file and that the desired result is achieved after the first rebuild.
The result of this change is actually a slight increase in overhead until V-blank interrupt wait operations are entered. 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 as the problem with threads remains unresolved if you do this.

or Note 32-18: Although it was reported in Note 32-18:(OS) Improved V-blank wait function that the SVC_WaitVBlankIntr function could now be overwritten by another definition using weak symbols, specifications have been returned to original status because the need for weak symbols has been eliminated under this revision.


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) Revised 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.
0x23e0000 is used so as to match the information on the OS overview page.


Note 33-18: (WBT) Revised 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) Revised the WFS-related sample demo

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


Note 33-20: (WM) 2D_Updated the 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 communications

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 make this setting. Due to restrictions on the implementation these values must be set in the range 220 to 260 or 0 to 190.
The ARM7 operates actively during communication processing and frequently stalls 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 send size configuration function for MP communications

Up until now, the size of transmissions sent using MP communications have been fixed at values given by the parentMaxSize and childMaxSize fields of the WMParentParam structure as set by the parent using the WM_SetParentParameter function before communications start. The parent send size and child send size can be set using the functions WM_SetMPParentSize and WM_SetMPChildSize.
The send size of the parent and child are initialized to the values set for parentMaxSize and childMaxSize in the WMParentParam structure when the WM_StartParent function is executed by the parent. Smaller values than these can be set using the WM_SetMPParentSize and WM_SetMPChildSize functions, but the default initial values cannot be exceeded. Even though setting the parent send size on the child side is meaningless, the setting used 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 because the smaller the amount of data, the shorter the radio signal output. Still, the child side always sent out a radio signal of the number of bytes designated with childMaxSize, so by reconfiguring the necessary size, the transmission time can be reduced and communications can be stabilized. Note that under the current implementation, if an amount of data larger than the send size modified using these functions has already been prepared for sending by the WM_SetMPDataToPort function, that data will not be sent and will just continue to collect on the send queue.


Note 33-23: (WM) Added a spacing control function for MP communications

The function WM-SetMPInterval has been added to allow setting the time interval between one MP communication and the next during MP communications in continuous communication mode 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 children. Although throughput can be increased by adjusting this value, throughput may also be worsened due to dropped data if the MP communication interval for the parent is shorter than the time it takes children to process the received data. Note that bandwidth availability will also be adversely affacted if useless resends are attempted under these conditions.


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) Revised the display of the dataShare-Model sample demo

A problem was corrected where the text output screen displayed at startup of the sample demo $NitroSDK/build/demos/wm/dataShare-Model would sometimes break.


Note 33-26: (WM) Added a setting value for the maximum number of MP communications per frame.

Although the maximum number of MP communications per frame (including resends) was fixed at six in the past, specifications have been changed so that 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 internally 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, correction is applied to the receive signal strength level that can be retrieved by WM_GetLinkLevel; however, this correction has been performed differently for the parent than for the children and the receive signal strength level for parent and children can differ greatly even under the same conditions.
To solve this problem, the standard to detect failed transmission of a parent were loosened so that the behavior of the reception strength level of the parent and child were more similar.


Note 33-28: (WM) Added an option for disabling the pre-check of the send/receive buffer size

A special option has been added for ignoring various validity checks (pre-check of the send/receive size setting value, send/receive buffer size, and communication time limit of 5600 microseconds) previously carried out internally by the WM_StartMP function. Be sure to 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 flexibly adjusted according to changing conditions such as the number of connected children. Note, however, that you must be careful in the application not to exceed the communication time limits and the send/receive buffer size. If a setting is made such that the send buffer size is insufficient and an attempt is made by the parent to start MP communications, the situation will be detected at time of execution and the communication will be cut-off due to a timeout on the MP lifetime that will occur if the condition continues.


Note 33-29: (WM) Added a note regarding the wireless communication event counter

Unexpected behavior was reported where several even counters would be cleared when accessing buffers located in a particular address space in wireless hardware.
Due to this problem, the count accumulating in an event counter being managed in software would sometimes be less than the actual number of events that had occured.
Note that there is a possibility that some event counts retrieved by WM_GetWirelessCounter may not represent the correct value.
Information has also been added to the reference manual about the event counters that may be adversely effected.


Known problems with SDK 3.0 RC2

None.


NITRO-SDK Version 3.0 RC

(2005/11/07)


Note 32-01: (CARD) Revised internal processing of EEPROM device operations

When an EEPROM device is 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 a process to detect whether the card has been removed every time the read process completed with the CARD_ReadRom function or the CARD_ReadRomAsync function.
This way, the application will no longer refer to invalid data before it receives a notification of the remove-detection callback.


Note 32-03: (CARD) Made compatible with new backup devices.

Made the Card Library support the 4MB Flash Backup Device and added CARD_BACKUP_TYPE_FLASH_2MBITS to the CARDBackupType enumerated type.
In relation, the reference and sample demos were updated.


Note24-04: (DevEnv) Corrected the #pragma define_section parameters

The #pragma define_section parameters were separated by commas like this:
“#pragma define_section DTCM ".dtcm",".dtcm",abs32,RWX.”
This made for an incorrect description, so they were changed to be separated by spaces like this:
“#pragma define_section DTCM ".dtcm" abs32 RWX.”

Please correct any other mistaken 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, and 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 causing a problem where the THUMB version ichneumon components did not operate correctly.
This 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 SDK package build to 1.2SP1.
Also made it so 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 compile target

Added an explanation of the compile target to the function information in the function reference.


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 features and added a new ENV_AppendResourceSet function. Until now, it has been delivering ENVResource as an argument to the ENV_Init function, but now several ENVResources can be registered.


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

There was a bug where the condition parameters of the ASSERT being used by G3BS_LoadMtx43 were wrong. This has been corrected.


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, and there was a possibility that some values would not line up 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 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 being corrected, they calculate properly.

However, since the stack area specification is defined with a positive value in the previous mongoose and ichneumon, there is no difference in operation whether it is of before or after the correction.
Since mongoose and ichneumon of SDK attachments are used in usual game applications, they are not influenced by this change.


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

Added the OS_GetTotalOccupiedSize function that gets the memory size used in the heap.
The OS_GetTotalAllocSize function which existed until now had totaled the size of the data area of the memory block currently used, but the OS_GetTotalOccupiedSize function added this time is also adds 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 transposed to the uninfluential code, but the dead strip of the argument was not performed. This was corrected, and now none of this function is performed, but the dead strip of the argument is made.


Note 32-17: (OS) Added SDK_COMPILER_ASSERT

Conditions are inspected when compiling, and the SDK_COMPILER_ASSERT macro was added to make a compile error if conditions are not met.


Note 32-18: (OS) Improved the VBlank wait function

When waiting for a VBlank interrupt using the SVC_WaitVBlankIntr system call, the thread called for this function does not stop, and there is a problem that resources are not opened in threads that are of lower priority than itself while waiting for the interruption. The cause is an internal correction in the system call, so the OS_WaitVBlankIntr function was prepared as an alternative that stops the tread while waiting for a VBlank interruption. Also, the SVC_WaitVBlankIntr function which calls the system call was made into a weak symbol, and was corrected so that it could be overwritten by another definition.


Note 32-19: (OS) Changed the argument const of the cache function

Within the function that takes the memory pointer of a cache operation function starting with DC or IC as an argument, use const for internal operations that don't change the content.
The functions that were changed are below:


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 over-written. For this reason, the stack check was not operating correctly; this has been corrected.


Note 32-21: (OS) Support for the argument data buffer switch

In the ROM image, there is a feature with which 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 in run time. See the OS_SetArgumentBuffer function and the OS_GetArgumentBuffer function.
Moreover, in order to create data in the argument data buffer, the OS_ConvertToArguments function changed from a character string was prepared.


Note 32-22: (OS) Corrected the real-time and check value conversion macro

The Macro that changes the real time and tick values in functions such as OS_SecondsToTicks and OS_TicksToSeconds was corrected.
Until this correction, since it was calculating in 32-bit accuracy with a symbol internally, when a slighlty larger argument was specified, overflow occurred and the correct value was not returned.

The correction contents are as follows.

-For Macros used so far, internal operation has been changed to 64 bit.
-When you explicitly want to use 32 bit internal operation, the following functions have been prepared:


Note 32-23: (OS) Updated the Chinese version’s startup screen

The Chinese version startup screen displayed with OS_InitChina was updated.


Note 32-24: (OS) Corrected thread cue operations including threads about to terminate

When a certain thread registered with the thread cue was completed with functions such as OS_DestroyThread or OS_KillThread , the information in the thread was removed from thread cue. This includes when that certain thread ends another thread while waiting for it to end in the OS_JoinThread function.
Until now, deleted thread information remained in the thread cue, so when the OS_WakeupThread function was used to make all threads in the cue executable, the deleted threads were also included. This caused a bug in the thread list status. This was corrected this time.


Note 32-25: (PRC) Corrected the sample tool “pdic2c.pl”

The pdic2c.pl sample tool used together 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 RTC, it will now return the day of the week calculated from the date. Until now, the value stored in RTC was returned as-is, but after passing the latest date that can be displayed by RTC - 12/31/2099 23:59 - the day of the week information was wrong until the RTC was re-set.


Note 32-27: (SND) Corrected a problem where the SND_CalcDecibel function would not return a suitable value when the argument 0 had been entered

With the function SND_CalcDecibel (or SND_CalcDecibelSquare), -723 has been returned when the argument is set at 0, but this was corrected to return -32768.
Until now, when using the volume modulation, sound could still be heard even if the player volume had been set to 0.
This problem was fixed.


Note 32-28: (STD) Added STD library

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

The functions in the () such as STD_StrCpy are defined as others names for the functions on the left such as STD_CopyString.


Note 32-29: (WBT) Corrected a problem with GetBlock request notifications

Originally, there was a problem that the system callback notification WBT_CMD_REQ_GET_BLOCK_DONE, which whould only be generated when a partner's WBT_GetBlock function finishes, was being generated by the WBT_GetBlockInfoi as well. This was fixed so it won't be generated. Applications that do not use this notification have no problems.


Note 32-30: (WBT) Revised 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 WM_SetLifeTime function’s reference description

There was a mistake in the description in the WM_SetLifeTime function reference. This was corrected. The description said that the frame lifetime default value was "no lifetime," but the correct description is "beacon interval x 5."


Note 32-33: (WM) improved mongoose components

When mongoose is used as an ARM7 component, there is a problem that access to the ARM9 main memory during the asymmetric operation to transition the state of the WM library is prevented considerably. This problem has been solved by improving the mongoose component. Note that this problem was not necessarily solved, but improved.


Note 32-34: (WM) Added information to be notified to the port receive callback

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


Note 32-35: (WM) Added notification when the port receive callback initializes

WM_STATECODE_PORT_INIT was added to WMStateCode, and it was changed so that the port receive callback in this state code is called when WM_SetPortCallback is called. This is assuming the initialization operation using the connectedAidBitmap field or myAid field of WMPortRecvCallback is run. In order to maintain the connection notification consistency, keep in mind the call-back 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 to Note 32-38 might appear.


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

The test API in the WM library was expanded. These API are for testing and do not normally need to be used. Also, based on this expantion, WMlibrary operations do not change when these are used normally. However, the WMApiid listing type is extended by the addition of API., so keep 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 was continuing an MP connection, there was a bug that stopped the wireless communication feature after a child device called the WM_EndMP function at a specific time. This was corrected. This bug appears in SDK versions after 3.0. When wireless communications are ended, the finish callback for wireless-communications-related asymmetric functions will no longer be called. We know the bug happens when several child devices are connected using fake_child. Further, when communications are ended by an operation from the parent device, there is no influence from this bug.


Note 32-38: (WM) Added a disconnection notification for when the local player disconnects

Until now, when WM functions, such as a WM_DisconnectChildren function, were called clearly and communications were disconnected, the specification was that a disconnection notification was not generated. WM_STATECODE_DISCONNECTED_FROM_MYSELF was added to WMStateCode in the parent which change it to give a disconnection notification.
Due to this change, there is a chance that an incompatibility will arise.
State codes which may go into the state field of WMStartParentCallback, WMStartConnectCallback, and WMPortRecvCallback are increasing, so use caution when performing processes such as those to stop the execution of programs when a state code other than the known WM_STATECOD_* is received.
Also, even if DataSharing clearly disconnects the child from the parent using this notice, it won't stop.

The following functions were added with this correspondence.


Note 32-39: (WM) Re-corrected internal operations for connecting and disconnecting

The corrected items released in Note 31-24 and Note 30-07 did not fully correspond to the problem, so these were re-corrected.


Known issues in SDK 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 as a function for aborting the asynchronous process on the backup device.
Also added CARD_RESULT_CANCELED to the CARDResult enumerated values as a result 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 of 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 the 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 with "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, for now, the *.lcf.template files for the old version is included in $NitroSDK/include/nitro/specfiles/2.x.
Overwrite these 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) Revised makelcf

When an overlay was placed in DTCM, a bug occurred with the arena configuration of the main memory area. This was corrected.
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, nitrorun tool commands

loadrun is a command that downloads and runs binary data to the IS-NITRO-EMULATOR.
It can be terminated with an operation time or call of the OS_Exit function.

nitrorun is a script that calls the buryarg command, which embeds argument data in the binary, and the loadrun command at the same time.
This allows to execute a binary in a manner 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, there was a problem that the destructor for the global object array in the overlay would not start correctly when unloading the overlay. This 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) Revised 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 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, a MB_GetMultiBootDownloadParameter function was added to reference the user definition 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 exceeded 0x02400000.
This problem was 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 has been fixed.


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

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


Note 31-18: (OS) Organized const-type arguments in OSThread-related functions

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

These are the functions we revised.


Note 31-19: (OS) Added OS_GetOpt function.

Added OS_GetOpt functionthat makes obtaining strings that start with '-' as program execution options from argument data in binary files convenient (e.g., srl file that were embedded using the buryarg tool command).
For execution, the 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 was 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 to support special usage that limits SSID matching confirmations performed with the WM_StartScanEx function to certain lengths.
When these scanType 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 made for only the first eight bytes.
We modified it so that matching confirmation is taken 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, which uses a callback function to help analyze the cause of failure when a connection attempting to use WM_StartConnect[Ex] fails.
Specifically, we added the wlStatus member to the WMStartConnectCallback structure.
During normal usage, 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 there is no specification, 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 destroyed.
Previously, because the alarm was not destroyed, the unneeded alarm handler was sometimes called 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. It was changed to no response.
As a side effect, when a child machine is overloaded, the receive processing is skipped. This impairs communications 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 qualifier had not been added to the arguments so const has been added to them.


Note24-04: (OS) Added 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.

When transitioning from the LCD Off state to sleep mode and then returned, 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 function. This provides a notification containing information about the events occurring internally.
The contents of the notification are expressed with the WMIndCallback.reason callback argument. WM_INFOCODE_FATAL_ERROR, which is notified when ignoreFatalError of the WM_StartMPEx function is set to TRUE and a fatal error occurred, is defined as a reason value.


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 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 sample demo that uses 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 during 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.


Note28-04: (GX) Corrected 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 has been corrected.


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 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

A mechanism that allows you to pass argument data to the ROM file, and then obtains this data using the program.
You can use the $(NitroSDK)/tools/bin/buryarg tool to embed argument data and then use the data from a program by using the OS_GetArgc and OS_GetArgv functions. By using this feature, you can change the program's execution conditions without compiling.
We added a demo that uses this feature. It is 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, which terminate other threads. You can select one 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 16, but by rewriting the header definitions, 8 to 32 is possible.) This limit was 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 SDK 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 directly from ARM9 without waiting 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, but 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 compatible with new backup devices.

Added CARD_BACKUP_TYPE_EEPROM_512KBITS and CARD_BACKUP_TYPE_FRAM_256KBITS to the enum type CARDBackupType so the CARD library can support 512KB EEPROM and 256KB 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, sometimes incorrect values were returned. This problem has been corrected.


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, so you can use either one.


Note 27-05: (DevEnv) Provided support for times where the cygdrive prefix of CYGWIN is not /cygdrive.

When a build was performed from the CYGWIN command line, building process failed if the cygdrive prefix was not /cygdrive, the default setting . This has been corrected so that builds are possible when the cygdrive prefix has been changed.


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), the specification that subtracts the absolute value from the maximum possible specified size when a negative number was specified for the first parameter was not valid. This 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 but has been changed to 200. SDK_TS_VERSION = 200 appears in versions E and later for the IS-NITRO-EMULATOR hardware and 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, but you should be aware that this could affect applications that use this constant as a build switch for changing the 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 and 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, etc. and has owner information in an old save format. But 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 IDE, you need to manually select which library to link.
However, except in cases where the development environment used the TS breadboard, etc., there is really no meaning in selecting a library, and it is OK to use the library that gets 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 has called #include. If the previous search path is required, enter a specification as MACRO_FLAGS += -cwd proj inside Makefile.


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

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 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. The problem has been fixed. This applies to objects when all of the following circumstances occur simultaneously:


Note 27-14: (FX) Corrected problem with the arc tangent functions.

The arctangent functions below returned incorrect values when the (x,y) slope is extremely close to 1. This 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 visa-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, the ASSERT criterion 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, in some cases the target array would face over access. This problem has been corrected.


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

Replaced the implementations of the SHA-1 functions. The code size has hardly changed, but they can operate 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 the child in Single-Card Play using the file system via wireless communications.


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 4MB. The restriction has been removed, enabling use of expanded memory by IS-NITRO-EMULATOR and other hardware that have 8MB of main memory.


Note 27-22: (MB) Added user definition expanded parameters.

Added the userParam member to the MBGameRegistry structure. Set as much as 32 bytes of any kind of data in this buffer and 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 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, after that there would be problems with the alarm process. That has been fixed.


Note 27-25: (OS) Corrected problem with the OS_TryLockMutex function.

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


Note 27-26: (OS) Added the OS_YieldThread function.

Added the OS_YieldThread function, which performs thread rescheduling and 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 confirms the cache has been cleaned/invalidated at program startup time for autoload and at the time of 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 by 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 only used at startup from the file system without a static link.


Note 27-29: (OS) Corrected problems with flushing of data cache.

The cause of the bugs mentioned in Note 24-10 and Note 25-16 has been clarified. Along with this, the internal implementations of the functions DC_FlushRange and DC_FlushAll have been changed so that the CPU flush command is realized. 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 when the write buffer was full. The function specifications have not changed.


Note 27-30: (OS) Corrected problem when multiple OSMutex are locked.

There was a problem with the list process of mutex stored in OSMutex. Specifically, a problem arose when one 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 dose not occur when one thread only locks one OSMutex at a time.


Note 27-31: (OS) Added header file-related references.

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


Note 27-32: (RTC) Added functions to convert back and forth between date/time and total passage of 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 passed since January 1 of the year 2000. Also added functions that convert between type RTCDate data and the total number of days that have passed. The demo that can be used to confirm these operations is $NitroSDK/build/demos/rtc/convert-1.


Note 27-33: (RTC) Added restrictions to APIs for changing date and time.

APIs have been prepared 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 APIs 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, but instead would continue to be maintained, causing memory leaks. The problem has been fixed.


Note 27-35: (WBT) Corrected WBT sample demos

The following revisions 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, and 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, commence MP communications.
2) If it is the second or higher child, do nothing. (It is OK to do nothing, since continuous MP communications are taking place.)
3) If there is no child, end 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 revised 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 abolition 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 secured when WM is initialized. In addition, since the Key Sharing features are scheduled to be abolished 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, sometimes the SSID inside the discovered parent information 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 only happens 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. Up until now, when an access point was discovered during scanning, the message "WLAN AP" was displayed. That has been changed so that now the SSID is displayed. This was was implemented for both Scan Test mode and ScanEx Test mode.


Note 27-39: (WM) Deterred MP communications when child not connected.

Up until now, 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 communications timed out, the notification WM_STATECODE_DISCONNECTED would get posted multiple times to the parent's callback WMStartParentCallback. This has been fixed.
This problem mainly occurred 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 communications per frame.

Up until now, during continuous communications mode and after communications failed repeatedly, transmissions would just keep on happening. But in a situation where only empty data is being sent and received, the number of MP communications expands rapidly and the child's data-receiving process cannot keep up. This can trigger problems. To counter this problem, a restriction has been set that limits the number of MP communications that the parent can send in one frame to 6 (including resends). This restriction is not placed on normal communications.


Known issues in SDK 2.2 PR

None.


Nintendo Technical Support Center





























































CONFIDENTIAL