SDK/build/buildtools/modulerulesdarch.exeWPAD_ERR_INVALID in the err member of the WPADStatus structureKPADSetSamplingCallback and KPADSetConnectCallback functionsGXSetVerifyLevel Warning #90checkdiskDVDIsDiskIdentified functionntcompress.exesndconv.exe was being ignoredAXGetAdpcmData function to match dspadpcm.exeax.hCXiInitUncompContext**Front functionsOSExec* functionsGXSetFogWPADSetConnectCallback is not cleared internally by the KPADInit functionOSSleep-type functionsWPADIsRegisteredBLC functionMEM_HEAP_OPT_THREAD_SAFE option to the extended heap created in the DEMOInit function. strapimagedemo to strapcntdemo and combined it with demos/cntdemo.datatitledemo with cntdemo.WPADInfo structure's lowBat member variable.KPADSetConnectCallback function and prohibited use of the WPADSetConnectCallback function.CNT_RESULT_UNKNOWN to the manual.RSOLinkFar and RSOLinkJump functionsRSOGetFixedSize functionNANDSimpleSafeCancel function reference manualmakeWad from creating WAD files containing large numbers of content filesperf-geo demoKBDInit functionPSMTXInverse and PSMTXInvXpose functionsPSMTXInverse and PSMTXInvXpose functionsPSMTX44MultVecArray and PSMTXROMultVecArray functions and removed unsupported functionsKPADReadEx function-e optionsetcountrycode now supports settings for Korea and China ndrun_prechecker for programs that use the HID libraryDEMOPrintf functionDEMOReInit functionDVDResume after call to DVDPauseENC_ERR_NOT_LOADEDFNTSetAlternateChar function for changing the alternate characterGXSetCoPlanar and GXSetDrawDoneGXLoadNrmMtxIndx3x3KBD_UC_IS_CTRL_KEYKPADInitEx functionKPADShutdown functionKPADSetObjInterval functionKPADRead function's return valuesOSReturnToMenuOSSleepTicks and OSCancelThread functions executed simultaneouslyPADIsBarrel functionSCCheckPCShoppingRestriction functionWPADGetSyncType functionWPADDisconnect functionWPAD_ERR_BUSY for the err member of the WPADStatus structureWPADSetDpdSensitivity functionfull_modesetncountrycode to setcountrycodeSDK/build/buildtools/modulerulesAs given in Note 402, setncountrycode has been integrated with setcountrycode. However, modulerules specifications still required it to call setncountrycode. This has been changed to setcountrycode.
There was a problem where the origin of an extension controller's stick would drift if there was a momentary disconnection immediately after the Nunchuk or Classic Controller was recognized. This problem has been corrected.
Because the timing during which this problem could occur was quite short, the possibility of this problem occurring during normal use was quite low.
The automatic fatal error message has been replaced with the message used in Wii Message List version 1.11.
A problem has been corrected where an invalid PIN was being set when Parental Controls were configured on the DEVKIT system menu.
Update the DEVKIT system menu after applying this patch and before running applications. For instructions about updating the version, see the Installation Procedure section of the SDK's readme.
A list of Wii bitmap fonts for Chinese and Korean has been added to the Revolution Function Reference Manual.
For details, see the Introduction in the FNT section of the Revolution Function Reference Manual.
Notes regarding calculation results when using the paired single versions of the following functions have been added.- MTXConcat
- MTXConcatArray
The error code ENC_ERR_NOT_LOADED has been eliminated, as explained in Note 441. However, some mentions of it still remained in the manual. This has been corrected.
When they have not been specified when creating a WAD file using makeWad, the default values used for the game code and company code used to be "0000" and the decimal number "2," respectively.
This company code represented a numeric value outside the range of ASCII. Because message send/receive fails with these defaults, the default game code and company code have been changed to "RABA" and "ZZ," respectively.
Information on how to handle NAND_RESULT_MAXBLOCKS, NAND_RESULT_MAXFILES, NAND_RESULT_ALLOC_FAILED, and NAND_RESULT_BUSY given in the Result Code Handling and Result Code List sections of the Introduction has been updated. The descriptions of NAND_RESULT_MAXBLOCKS and NAND_RESULT_MAXFILE have been deleted from the Processing Sequence section.
darch.exeThe executable file for the archive creation tool darch used to be ***D.exe to indicate a debug version, but it has been changed to darch.exe to match other tools.
There was a problem where Nunchuk button information was being cleared when an ACK was received for a command sent to the Wii Remote. This problem was mistakenly caused when the revision in Note 406 was carried out.
This problem has been corrected.
WPAD_ERR_INVALID in the err member of the WPADStatus structureThere was a problem with the process used to pass WPAD_ERR_INVALID in the err member when internally processing data received from the Wii Remote. This problem occurred only when the WPADRead function was used. It did not occur when auto sampling was used.
This problem has been corrected.
There was a problem where an exception would result if an attempt was made to connect a Wii Balance Board while a Wii Remote was connected to 4P and the WBC library was linked. This problem existed beginning from SDK 3.2.
This problem has been corrected.
Formerly, warning messages were displayed, for debug versions only, when executing a process that takes time inside a callback registered with the WPAD Library. These messages are now hidden. (These messages were implemented when the library was first developed. Currently, they may be ignored without problem as long as there are not problems with application behavior.)
The manual has been revised as follows.
- The WPADStatus structure's description of its err member differed from the description given in the Introduction section of the WPAD and KPAD libraries. The information on the WPADStatus page was old, so it was revised.
- A description of the interval during which calling the WPADGetGameTitleUtf16 function is prohibited has been added.
The following items have been revised and added to.
- Changed the notation "Troubleshooting Mode" to "Wii Balance Board Operations Check."
- Changed "maximum load value that can be handled in a game" in section 2.3 to "maximum weight displayed on-screen during a game." Added a description of maximum load check points
- Added a supplemental description to section 3.3 regarding processing and error message display when loading calibration data fails. Added mention of handling it when the WBCSetupCalibration function is FALSE.
- Added reference information (inspection criteria used at time of shipment) regarding Wii Balance Board zero point drift to section 4.3.
- Added the new section 4.4 Fluctuations during Measurements.
- Revised function names because they included unintentional hyperlink information.
- Changed the year given in the copyright to 2008-2009.
- Added a note on the use of the WBCRead function to section 3.5.
- Changed the method of determining whether a person is on the Wii Balance Board in the procedure given in Chapter 5.
- Changed the heading in Table 1, section 2.3 to read "Maximum Weight." Corrected the references to Guideline items.
For details, see the revision history of this document.
The SCGetWwwRestriction function has been added for checking whether use of the Internet Channel is restricted under Parental Controls.
The following items have been revised and added to.
- Revised the description of adjusting the horizontal position of the System Settings menu in section 7.1.2.
- Deleted the description of the light gun.
For details, see the revision history of this document.
Added the function LCIsEnable for getting whether the locked cache of the Broadway processor has been enabled or disabled as set by the LCEnable or LCDisable function.
There was a problem where the fatal error screen (and only this screen) was displayed in interlaced mode with 4:3 aspect ratio, even if screen settings for the console had been set to EU RGB60 progressive mode for European version software.
This problem has been corrected.
- To the Revolution Function Reference Manual description of their return values, added the fact that the OSDisableInterrupts and OSEnableInterrupts function return values indicate the status before these functions are called.
- Added information about LCF files and the arena location to Restrictions on DOL Files and Boot-Related Terminology in the Revolution Function Reference Manual.
- Added information to OSGetCurrentThread's function reference about precautions when the OSGetCurrentThread function is called inside an exception handler or callback function.
The OSReportViewer tool for viewing results output to Wii console NAND memory and copying those results to an SD has been added to libraries that allow Wii console NAND memory to be specified as the output destination for OSReport.
For details, see the full list in OSLog Overview in the OS Reference Manual.
Information about size restrictions on DOL files and NAND applications has been added.
For details, see Restrictions on DOL Files and Boot-Related Terminology in the OS Reference Manual full list and the NADK Manual's Introduction.
Weight measurements by the Wii Balance Board are carried out based on data for the most recent 2 seconds, but it was taking about 10 seconds for accurate weights to be measured. Because the average value over the most recent 2 seconds was being constantly calculated, it took more time than required for the weight to stabilize.
Specifications have been changed so that an accurate weight can be measured in about 2 seconds by changing the calculation start function (KPADResetWbcTgcWeight function) when making weight measurements.
Note that the members of the KPADInsideStatus and KPADEXStatus structures were also changed when this change was made.
KPADSetSamplingCallback and KPADSetConnectCallback functionsThe return values of these functions have been changed to return a pointer to the callback function set up in advance.
There was a problem where calibration of the Wii Balance Board would be reset during connection processing performed when a Wii Remote was connected while a Wii Balance Board was connected. This problem has been corrected.
GXSetVerifyLevel Warning #90Specifications have been changed so that a warning is not issued when GX_DF_NONE is specified. This was done because there were cases where a warning related to a lighting normal vector (GXSetVerifyLevel Warning #90) was being generated even though GX_DF_NONE, which disables normal vector calculations, had been specified using GXSetChanCtrl.
Made the following revisions to the Revolution Graphics Library (GX) Programming Manual.
- Corrected the title of Figure D-2 from "Texture File Formats" to "Texture Tile Formats."
Changes included beginning from SDK 3.2 patch, that have not been listed in the release notes up to this point, are given below.
- Added a note about handling vertices that have a position coordinate index and array index.
- Added information on functions that flush the "lazy state."
Errors related to Scissor in the reference manuals for the following functions have been corrected.
- GXSetScissor
- GXSetScissorBoxOffset
Errors related to Viewport in the reference manuals for the following functions have been corrected.
- GXSetViewport
- GXSetViewportv
- GXSetViewportJitter
- GXGetViewport
The following functions for getting the various states have been added.
- GXGetColorUpdate
- GXGetAlphaUpdate
- GXGetPixelFmt
- GXGetDither
These functions correspond to the following functions for setting these states.
- GXSetColorUpdate
- GXSetAlphaUpdate
- GXSetPixelFmt
- GXSetDither
The Optical Disc Drive Library Programming Manual has been revised as follows.
- Some contents have been transferred from the Optical Disc Drive Guidelines and re-edited.
- Updated the total capacity value for optical discs to represent the total capacity that can be used by developers.
- Added information about checking the disc upon restart by an application.
For details on other corrections and edits, see the document's revision history.
checkdiskThe demo checkdisk has been added to the DVD sample demos.
For details, see the Revolution Function Reference Manual.
DVDIsDiskIdentified functionThe DVDIsDiskIdentified function has been added..
Use of this function allows you to get whether the disc has been identified when the DVD command is BUSY.
For details, see the Revolution Function Reference Manual.
ntcompress.exeThe end of data was being padded with some undetermined value when converting data using ntrompress.exe with the -A option specified, so sometimes even when identical data was converted the resulting binaries would not match.
This problem has been corrected.
A description of the work variable (work buffer) was left out of the reference for the CXUncompressLH and CXUncompressLRC functions. Also, an error in the description of the work buffer in a comment found in the source code file CXUncompression.c has been corrected.
sndconv.exe was being ignoredIf there was no output format specified in the script file when using the sndconv.exe tool in the Sound Pipeline (SP) library, specifications called for the format specified by argument to be used as the default output format. However, in reality, the argument specification was being ignored, and ADPCM format was being used every time.
This problem has been corrected.
AXGetAdpcmData function to match dspadpcm.exeA problem was corrected where the value of the num_samples and num_adpcm_nibbles members of the DSPADPCM structure output by the AXGetAdpcmData function differed when conversion was made to DSP-ADPCM using dspadpcm.exe.
This problem has been corrected.
ax.hThere was an error in the comment related to the gain member of the AXPBADPCM structure found in the AX library header file ax.h.
This problem has been corrected.
A description of thread-safe operations of AX library functions has been added to the function references and the AX library manual.
The AX library calls the AIRegisterDMACallback function inside the initialization function (for example, AXInit) to set the AI DMA interrupt callback for the AX library. At this time, any callback previously set by the AX library initialization function is overwritten by the AX callback.
This note was added to the AX and AI function references.
The AXDecodeAdpcmData function has been added for using the Wii CPU to decompress back to 16-bit PCM the data converted on the Wii from 16-bit PCM to DSP-ADPCM using the AXGetAdpcmData function.
For details on use, see the Revolution Function Reference Manual.
Made a minor version update to console firmware 53.16.17 and 55.18.25. These were previously 53.15.17 and 55.15.24.
Update system firmware after applying this patch and before running applications. Since SDK 3.1, firmware has been available in two versions, standard and extended, and you can select either to use for each title. For details, refer to the Cautions section of the SDK readme. For instructions on updating the version, refer to the Installation Procedure section of the SDK readme.
CXiInitUncompContext**Front functions Changed the prefix of the following five functions from CXi to CX because of a discrepancy with the function reference.
There are still macros that provide aliases to the old function names, but these may be deleted in future versions.
- CXiInitUncompContextRLFront
- CXiInitUncompContextLZFront
- CXiInitUncompContextHuffmanFront
- CXiInitUncompContextLHFront
- CXiInitUncompContextLRCFront
Replaced the Revolution Transition Guide because an old version had been mistakenly released.
Revised a description of the order in which KBD functions are called.
Added the HID reference manual.
Added a feature that will return the following error messages and quit the OS when it is started without the SDK's required firmware installed on the Wii console.
- Message displayed onscreen (with a blue background)
ERROR #002
An error has occurred.
Press the Eject Button, remove the
Game Disc, and turn off the power to
the console.
Please read the Wii Operations Manual
for further instructions.
- Debugging message output to the console
OS ERROR:This firmware is an improper version for this SDK. Please use a correct Firmware.
OSExec* functionsPreviously, OSExec* functions would internally output an assert message and halt execution when passed a nonexistent file. This behavior did not follow specifications, so the functions have been changed to only output a warning message, without halting execution.
The following problems related to save data operations when working with backup save data on the Wii Menu have been corrected.
- The size of banner.bin was always 61,600 bytes when writing save data back to Wii system memory.
- A failure would result when attempting to write save data back to Wii console NAND memory by overwriting the save data of a non-disc application.
There was a problem where the firmware installer (the installer rvm'ed by executing the makeUpdateDisc command on swupdate*.gcm) could not be started from the Disc Channel of the Wii Menu.
This problem has been corrected.
Revised the displayed guide to operations for the following GX sample demos.
G2D-test
DL_tex
DL-tf-mtx
ind-tile-test
tg-shadow2
Revised Figures 4-1 and 4-2 in Chapter 4 of the Compressed Texture Format Programming Manual (CMPR_Texture.pdf).
Made the following revisions to the GX Programming Manual.
- Added a note about handling vertices that have a position coordinate index and array index
- Added information on functions that flush the "lazy state"
For details on other corrections and edits, see the document's revision history.
- Added information to Note 1 of the GXSetTexCopyDst reference about reasons for using formats such as R8 and RA8
- Added information related to specification changes to the GXGetCPUFifo function beginning from SDK 3.1 patch 3 to the GXGetCPUFifo pages in the Revolution Function Reference Manual
- Added information to the GXSetTexCoordGen2 reference about the method of calculating 2D texture coordinates when using GX_TG_MTX3x4
- Added information to the GXSetVtxDesc pages of the Revolution Function Reference Manual about known hardware bugs of the Wii graphics processor
GXSetFogThere was a possibility that GP registers would be unexpectedly corrupted and the GP would freeze if GX_FOG_ORTHO_*** was specified for GXSetFog. There was no problem if GX_FOG_PERSP_*** was specified.
This problem has been corrected.
A typo in the Hio2If Programming Manual was corrected. For details, see the revision history.
There was a problem where the buffer passed to the KBDInit function was not being initialized appropriately. Changes were made so that the buffer is correctly initialized inside KBDInit.
Use of the WPADSetConnectCallback function is prohibited, but only while using the KPAD library. Therefore, call the WPADSetConnectCallback function as usual when using only the WPAD library.
Although the function reference stated that circular clamp is used as default, the cross clamp was actually being used as default. Revisions have been made so that the circle clamp is now used as default as stated in the function reference.
WPADSetConnectCallback is not cleared internally by the KPADInit functionThe application was clearing the registered callback function before ever calling the KPADInit function because the WPADSetConnectCallback function was being called inside the KPADInit function library. Revisions were made so that already-registered callback functions are not cleared inside the KPADInit function.
In addition, because the application does not clear the registered callback function even if the KPADShutdown function is called, the callback function is no longer cleared when the KPAD library starts or stops.
Typos, incorrect tags, and inconsistent use of terminology have been corrected throughout the Revolution Function Reference Manual. The format of A-to-Z order on the top page has also been revised.
The fact that the GameName specified by the DDF file at time of ELF file execution is not reflected in "title-id (Low)", and that it is necessary to directly specify GameName using setinitialcode, has been added to the description of "title-id (Low)" given under Introduction - Directory Structure.
There was a rare problem where gamma correction settings were sometimes not being initialized correctly at time of reset. This problem has been corrected.
OSSleep-type functionsThere was a problem, occurring while a thread is stopped by thread-internal execution of one of the functions listed below, where processing would hang within the library when the stopped thread was cancelled by another thread using the OSCancelThread function. This problem has been corrected.
OSSleepTicks
OSSleepSeconds
OSSleepMilliseconds
OSSleepMicroseconds
OSSleepNanoseconds
Upon the correction of this problem, the tag "-1" (0xFFFFFFFF) , one of the tags handled by the OSSetAlarmTag and OSCancelAlarms functions, has been newly reserved as an OS tag. Be aware of this.
- "Suspended" has been added to the active thread states described in the function reference manual for OSCheckActiveThreads.html.
- The state transition diagram for threads described in RVL_SDK/man/en_us/os/Thread/intro.html has been updated.
Made the following revisions to the OS Programming Manual.
- Section 9.3: Revised so that the OSInit function is not called by Code 9-1
- Section 9.6: "Suspended" has been added as an active thread state
- Section 9.7: The precautionary message for threads and callbacks has been changed
Added information about a problem where the origin is not reset correctly under specific conditions entailed in the specifications.
This problem that has existed from the beginning, but was not documented until now.
A problem has been corrected where the work memory for processing Wii Balance Board registration data was not being configured by the initialization process of the handling_weight demo.
WPADIsRegisteredBLC functionA problem has been corrected where, when Japanese-version WiiFit save data was present on the Wii Console, the WPADIsRegisteredBLC function, used to confirm whether the Wii Balance Board is registered when an application is restarted, returned TRUE even if all registered information was deleted by holding down the SYNC button on the Wii Console for 10 seconds.
The WBC Programming Manual has been added under the directory ./docs/en_US/Programmer's_Guide/.
Revised the description of information to be noted for Wii Balance Board-compatible applications intended for Japan.
Because a work memory is required for synchronizing Wii Balance Board registration information with the Japanese version of WiiFit during initialization when using Wii Balance Board-compatible applications intended for Japan, changes have been made to make absolutely certain whether or not work memory has been configured and, if not configured, to issue a warning and stop execution.
Although in some demos the WPADRead function was called only when the return value of the WPADProbe function was WPAD_ERR_NONE, these demos were revised because the WPADRead function can be called at all times except when the WPADProbe function returns WPAD_ERR_NO_CONTROLLER.
The warning message displayed to debug output when the WPADSetConnectCallback or WPADSetSamplingCallback function was called while using the KPAD library has been changed.
The WPAD library processes pointers by internally reading out the pointer-calibration values maintained for each Wii Remote. Due to a problem with this process, with some Wii Remotes the pointer would jump when moved.
This problem was included in the update from SDK 3.1 patch 4 to SDK 3.2, so it has been corrected.
Changed the path stored in the archive file created by darchD.exe. It will no longer specify a path that depends on the environment when the archive file was created.
MEM_HEAP_OPT_THREAD_SAFE option to the extended heap created in the DEMOInit function. The MEM_HEAP_OPT_THREAD_SAFE option can now be specified for the extended heap created in the DEMOInit function.
By setting DemoUseMEM_HEAP_OPT_THREAD_SAFE equal to TRUE before calling the DEMOInit function, the MEMCreateExpHeapEx function is called internally with the MEM_HEAP_OPT_THREAD_SAFE argument. If the option is not specified, the MEMCreateExpHeap function is called in the same way as it was before.
strapimagedemo to strapcntdemo and combined it with demos/cntdemo.Renamed to strapimagedemo NADK sample demo to strapcntdemo and combined it with demos/cntdemo.
Also changed the demo's behavior to follow the guideline for displaying the Strap Usage screen to some extent.
datatitledemo with cntdemo.Combined datatitledemo with cntdemo.
Also revised the description of the datatitledemo because it did not match the behavior of the most recent version.
Added a note to man/en_US/nadk/shared/StrapImage.html in the Revolution Function Reference Manual in relation to the use of the image content file for the Strap Usage screen when the screen aspect ratio is set to 16:9.
Added a description to the Revolution Function Reference Manual concerning the character sets included in the Wii bitmap fonts. Also added an explanation for modifying the Wii bitmap fonts.
For details, see the Introduction in the FNT section of the Revolution Function Reference Manual.
- Fixed errors in the performance notation in GX.pdf, and updated old content.
- Revised the formula for calculating GX_TG_SRTG cycles in man/en_US/gx/Performance/VertexPerformance.html.
Made the following revisions to the Revolution Graphics Library (GX) programming manual.
- Removed a chapter comparing the GX library and OpenGL.
- Added XF stall information.
Other error corrections and revisions were made. For details, refer to each document's Revision History.
Added information on Wii Menu settings for the following functions.
KPADSetPosPlayMode
KPADSetHoriParam
KPADSetHoriPlayMode
KPADSetDistParam
KPADSetDistPlayMode
KPADSetAccParam
KPADSetAccPlayMode
KPADSetBtnRepeat
Added a supplementary description of normalized coordinates for the following functions.
KPADGetProjecttionPos
Added DOL file restrictions and boot-related terminology, which are required to create a Wii disc application, to the OS section of the Revolution Function Reference Manual. For details, refer to Restrictions on DOL Files and Boot-Related Terminology, which is located in the OS section of the Revolution Function Reference Manual under Overview.
Reformed the OS Programming Manual to be applicable to the Wii console.
Updated the Revolution Texture Palette Library (TPL) manual (Graphics_Programmer's_Guide/TPL.pdf).
In accordance with updates, changed the "TPL file" and "TPL data" notations used by TPL items in the Revolution Function Reference Manual to "texture palette". Also added Texture Conversion (TexConv) to the Tool and Command Function List in the Revolution Function Reference Manual.
WPADInfo structure's lowBat member variable.Added information to Description in the following files, to the effect that the variable voltage for the brightness of the Wii Remote's Player Indicators exhibits hysteresis, although the lowBat member of the WPADInfo structure indicates if the Player Indicators have grown dim when the remaining battery charge decreases.
- WPADInfo
- WPADGetInfo
- WPADGetInfoAsync
Updated the extended firmware to version 55.15.24.
Update system firmware after applying this patch and before running applications. Since SDK 3.1, the firmware has become available in two versions -- standard and extended -- and you can select either to use for each title. For details, refer to the Cautions section of the SDK readme. For instructions on updating the version, refer to the Installation Procedure section of the SDK readme.
The standard firmware has been left unchanged at version 53.15.17.
Added an Nmenu WAD file to the package. By installing this as a channel on a development console, you can omit procedures for starting a disc from the Wii Menu.
KPADSetConnectCallback function and prohibited use of the WPADSetConnectCallback function.The KPAD library has been updated to process connection notification events internally. As a result, applications can no longer call the WPADSetConnectCallback function. Instead, the KPADSetConnectCallback function has been added. The callback established by this function will be called each time a connection notification event occurs, as before.
Give NULL as an argument to this function to delete callbacks that have been set up using the KPADSetConnectCallback function. When the KPADShutdown function is called, callbacks that have been set will be configured with the WPADSetConnectCallback function in the KPAD library. Consequently, callbacks will be invoked when connection notification events occur, even if the KPAD library has been shut down.
This item was first added in version 3.2 PR of the SDK.
CNT_RESULT_UNKNOWN to the manual.Although applications were supposed to support the CNT result code CNT_RESULT_UNKNOWN until now, it was not specifically explained how to do so. This has now been added to the manual.
For more details, refer to the Result Code List and Processing for NAND Applications in the NADK Introduction.
Fixed some lists in the SDK 3.2 RC function reference; they were missing functions that had been added.
Revised descriptions of the buffer size units handled by the library. Added an explanation for the character encoding handled by ENCConvertString[Src]To[Dst].
The standard firmware 53.15.17 and the extended firmware 55.15.23 have been released.
These are both identical to the intermediate versions 241.8.2 and 243.8.3 released with SDK 3.2 PR2.
Update system firmware after applying this patch and before running applications. Since SDK 3.1, the firmware has become available in two versions -- standard and extended -- and you can select either to use for each title. For details, refer to the Cautions section of the SDK readme. For instructions on updating the version, refer to the Installation Procedure section of the SDK readme.
Up until now, the Online Manual Verification Tool could not be started unless the Wii Menu had been installed once. The firmware version has been revised so that now the tool can be used from the SDK alone.
The Online Manual Verification Tool is now version 1.1. It includes the following revisions:
- When the Online Manual Verification Tool was started without being passed the arguments, the system would hang when the A Button was pressed to return to the application. That problem has been corrected.
Added the tools setinitialcode and setcompanycode for setting the game code and company code in force when executing a disc application.
Up until now, when elf and rpf files were executed, the default game code "0000" and company code 0x0002 would be used. With these new tools, you can freely set these codes.
Note: When the master data (rvm) is created, the GameName and Company values of the disc ID are used for the game code and company code. Any values you set with these tools will be ignored.
Chinese and Korean versions of applications each must use specialized Wii bitmap fonts. These fonts have now been added.
- For disc applications: /dvddata/fonts_chn
/dvddata/fonts_kor
- Shared content files for NAND applications: /dvddata/archives/WiiBitmapFontsCHN.arc
/dvddata/archives/WiiBitmapFontsKOR.arc
The Chinese and Korean versions of the Wii bitmap fonts contain a bug: The index of their default alternate character is not set correctly. To use alternate characters with these fonts, you will need to explicitly specify them.
You can now use the SCGetSimpleAddressRegionIdHi function to obtain the wide-area region ID.
For details, see the Function Reference manual.
You can now use the SCGetOwnerNickName function to get the console nickname information.
For details, see the Function Reference manual.
Added functions to tile and untile the texture sheets included in the font data.
FNTGetTileBufferSize
FNTUntileTexture
FNTTileTexture
For details, see the reference for each function.
Revisions and additions were mainly made to the following sections:
- 5.2 Procedure for Switching Video Modes in NTSC
- 6.5.1 Switching Video Modes in PAL
- 7.5.2 Automatic Switching of the Video Mode
- 7.1.2 Frame Buffer Size, TV Screen Size, and Position Configuration
- 7.1.4 Scaling
- 7.8 Aspect Ratios and Configuration Values
For details, see the revision history of this document.
RSOLinkFar and RSOLinkJump functionsAdded internal check code to the RSOLinkFar and RSOLinkJump functions to enable relative jumps from the caller's address to the relay code address.
Up until now, there were two kids of header files: rso.h and RSOLink.h. These have been integrated into the single header file rso.h.
With this revision, this item is now the same as that included in the 2007/01/10 version of the RSO package.
RSOGetFixedSize functionThe second argument of the RSOGetFixedSize function has been changed to type RSOFixedLevel. (Before, it was type int.)
With this revision, this item is now the same as that included in the 2007/01/10 version of the RSO package.
NANDSimpleSafeCancel function reference manualCorrected the conditions under which NANDSimpleSafeCancel[Async] must be called. Added support for times when NANDSimpleSafeCancel[Async] has returned an error.
When the following functions were executed in DEBUG build, a bug would cause the process to halt on an illegal ASSERT.
MEMGetSizeForMBlockExpHeap
MEMGetGroupIDForMBlockExpHeap
MEMGetAllocDirForMBlockExpHeap
This problem has been resolved.
Added an explanation to DVDCheckDiskAsync about the value returned immediately after a disc is inserted.
There was a bug that caused DVD fatal errors to occur when a disc was repeatedly ejected and inserted during disc reading on the RVT-R READER and the Wii console.
This problem has been resolved.
Corrected broken links and variant notation.
The system firmware has been upgraded, with the standard firmware now 241.8.2 and the extended firmware now 243.8.3.
Update system firmware after applying this patch and before running applications. Since SDK 3.1, the firmware has become available in two versions -- standard and extended -- and you can select either to use for each title. For details, refer to the Cautions section of the SDK readme. For instructions on updating the version, refer to the Installation Procedure section of the SDK readme.
Note that the firmware versions 241.8.2 and 243.8.3 are intermediate versions. They are not final versions (versions included in retail products). The final versions will be appropriately versioned and released when SDK 3.2 is officially released.
The DEVKIT System Menu sometimes failed to set the size of simulated MEM2 memory. That problem has been corrected.
makeWad from creating WAD files containing large numbers of content filesThere was a bug that caused an error to occur and prevented WAD files from being created if a large number of content files was specified with makeWad's -l option.
This problem has been resolved.
Up until now, the various mastering tools like makemaster and rdpack were distributed in a package separately from the Revolution SDK. Those tools have now been integrated into the Revolution SDK.
Until now, data titles that were created without using the -E option were set by default to allow use by all other titles. To prevent the creation of data titles with unintended access restrictions, makeWad has been revised so it now returns an error when a data title is created without any access restrictions.
When you create a data title, either set some value for allowing access or specify the exact other applications that will have access.
Added functions for encoding 16bit monaural PCM data (big endian) to the DSP-ADPCM format, which the Wii's audio DSP can handle.
The following functions have been added to enable customization of volume tables for the compressor:
AXMakeCompressorTable
AXSetCompressorTable
For details, see the reference for each function.
perf-geo demoIn step with the specification change to the GXGetCPUFifo function, the perf-geo demo has been changed so that the GXFlush function is called immediately before the GXGetCPUFifo function.
KBDInit functionThe USBKBD library has been replaced as the KBD low-level library by the more general-purpose USB_HID library.
The KBDInit function has been altered to support this change.
PSMTXInverse and PSMTXInvXpose functionsWhen a matrix with extremely small elements was given as input, a bug would cause the elements in the resulting inverse matrix to include nonnumerics (NaN), even when the return value was 1.
This problem has been corrected.
However, due to the internal changes, the PSMTXInverse and PSMTXInvXpose functions now sometimes have slightly different computation results compared to their past versions. Specifically, the value of the computation result will sometimes be slightly different when the result is valid to 8 digits or more.
PSMTXInverse and PSMTXInvXpose functionsBy optimizing the processing of the PSMTXInverse and PSMTXInvXpose functions, their performance has been enhanced.
PSMTX44MultVecArray and PSMTXROMultVecArray functions and removed unsupported functionsThe implementations of the PSMTX44MultVecArray and PSMTXROMultVecArray functions both had parts that did not conform with Broadway EABI protocol. These functions were revised to be in compliance.
In addition, functions that were not officially supported were deleted from the source.
The OS has been changed so code execution in the MEM2 region is now prohibited by default. To support this change, the demo programs LinkFar, LinkJump and LinkMem2 have been revised.
The SCGetLanguage function now supports simplified Chinese, traditional Chinese, and Korean, so this has been added to the manual.
The THP sample programs (THPSimple and THPPlayer) now support monaural output of audio. Changes and additions were made to the following functions:
THPAudioDecode
THPSimpleSetSoundMode
THPSimpleGetSoundMode
THPPlayerSetSoundMode
THPPlayerGetSoundMode
For details, see the reference for each function.
Mentions of MPAL have been deleted from the Function Reference Manual and the Video Interface Programming Manual.
Added an explanation about prohibited processes for the Wii Remote and Classic Controller's +Control Pad.
KPADReadEx functionWith the KPADRead function, when the function returns zero, there is no way to know why. The newly added KPADReadEx function has the ability to get the reason.
The new KPADReadEx function, like the KPADRead function, can sometimes destroy the contents of the sampling buffer passed to it as an argument, but when and only when KPAD_READ_ERR_NO_DATA is returned, the contents at the start of the sampling buffer have been preserved.
The information regarding KPADReadEx and KPADRead in the Function Reference Manual has been updated.
The NAND application development kit (NADK) for developing VC and WiiWare channel applications used to be delivered in a different package from the Revolution SDK. Both packages have now been consolidated into Revolution SDK.
Until now, data titles that were created without using the -E option were set by default to allow use by all other titles. To prevent the creation of data titles with unintended access restrictions, makeWad has been revised so it now returns an error when a data title is created without any access restrictions.
When you create a data title, either set some value for allowing access or specify the exact other applications that will have access.
The system firmware has been upgraded, with the standard firmware now 241.8.1 and the extended firmware now 243.8.2.
Update system firmware after applying this patch and before running applications. Since SDK 3.1 the firmware has become available in two versions -- standard and extended -- and you can select either to use for each title. For details, refer to the Cautions section of the SDK readme. For instructions on updating the version, refer to the Installation Procedure section of the SDK readme.
Note that the firmware versions 241.8.1 and 243.8.2 are intermediate versions. They are not final versions (versions included in retail products). The final versions will be appropriately versioned and released when SDK 3.2 is officially released.
The following features have been added:
- Country information can now be set when the region is US or EU.
- In the Parental Controls, you can now set "Restrict online user-to-user communication and the exchange of user generated content?".
Until now, the game version could only be specified in makeWad as a decimal number using the -I option. Additional ways have been added, including hexadecimal specification and the use of the [ x.x ] format to define major and minor versions.
When textures up through Icon7 were configured using the data title banner creation tool WiiSaveBanner, the icons would be corrupt on the Data Management screen of the Wii Menu.
This was due to a bug in makeWad, and it has been corrected.
-e optionPublished the -e option, which specifies a bit mask to permit a data title to be accessed from multiple applications
For details, see the makeWad manual.
Nmenu has been revised so it can now import data titles. Nmenu also now supports the deletion of individual titles and the deletion of individual content units. Note, however, that to delete individual content units, you must use the extended firmware.
See the manual to read cautions regarding the use of ECDK for development.
The DEVKIT system menu now supports settings for Korea and China.
setcountrycode now supports settings for Korea and China Country identifier codes can now be set for Korea and China by setcountrycode.
NADK2.2 patch1 revised Nmenu so that "Incomplete" would be displayed for a title if some of its information was missing: for example, if the title had been deleted from Wii Menu. However, there was a bug, and under certain conditions an application that should display as "Incomplete" would instead display normally. If the user attempted to start that title, the screen would fade to black and then stall there.
This problem has been corrected.
ndrun_prechecker for programs that use the HID libraryThe extended firmware must be used for all titles that might possibly be connected via the Wii USB port to a USB keyboard or other device.
As an internal process, the check is conducted on all titles that link to the HID library.
Subsequent to the application of this revision, "WARNNING" will display whenever an application starts up that uses the standard version of the firmware and links to the HID library.
The manual for the DEVKIT system menu was revised to make it easier to read.
The following tools with publicized source code now can be built by Visual Studio 2005:
/build/libraries/gd
/build/demos/gddemo
/build/demos/hio2demo
/build/tools/darch
/build/tools/dls1wt
/build/tools/dspadpcm
/build/tools/sample
/build/tools/sndconv
/build/tools/soundfile
/build/tools/TexConv
/build/tools/THPConv
/build/tools/thputilities
Note that the free version, Visual Studio 2005 Express Edition, cannot be used to build the dual demo and the multi demo in /build/demos/hio2demo because they both utilize MFC. For these demos, you should use the purchased version, which allows the use of MFC.
The CARD library, which supports access to GameCube Memory Cards, has been deleted.
Added a table to the function reference for CNTInitHandleTitle showing the return values for different error states.
Added support for data title disc emulation. A compile switch can be used to switch operations, similar to accessing the content files of a NAND application.
The archive creation (DARCH) API has been published.
The DARCH API collects a number of files together when the application runs, putting them together in a single archive file and creating an archive file image.
DEMOPrintf functionA character-count assert process has been added to the DEMOPrintf function. The assert process executes when more than 256 characters are entered to the function.
DEMOReInit functionIn line with the specification change to the GXGetCPUFifo function, the DEMOReInit function has been revised to call GXFlush immediately before its internal call to GXGetCPUFifo.
DVDResume after call to DVDPauseIf DVDPause was called when there were no requests in the queue, the drive would enter the DVD_STATE_END state, and even a call to DVDResume did not work to resume reading of the DVD. This problem has been corrected.
Added support for the DVD automatic Fatal error message when the language setting is Korean or Chinese. However, since the Wii ROM font does not contain the characters for Korean and Chinese, the message is output in English.
The automatic Fatal error message shown when the country code is USA and the language is set to English was different from the message specified in the Wii Message List. This problem has been corrected.
Fixed the following bugs, which occurred when certain special encoding was specified in the ENC library.
(1) State operations did not work correctly
- Subject to bug: ENCConvertToInternalEncoding()
ENCConvertFromInternalEncoding()
- Conditions:
UTF-16, UTF-16LE or UTF-7 specified as the character encoding of the conversion source.
(2) The BOM determination process was skipped
- Subject to bug:
ENCConvertToInternalEncoding()
ENCConvertFromInternalEncoding()
ENCConvertString*()
- Conditions:
UTF-16, UTF-16BE, UTF-16LE, UTF-8 or UTF-32 specified as the character encoding for the conversion source, length of the source character string not specified.
ENC_ERR_NOT_LOADEDIt was determined that there was not sufficient support in the Revolution SDK Extension's NWC24 library for the ENC error code ENC_ERR_NOT_LOADED when the conversion table was stripped.
To prevent this same kind of problem from arising in other modules that use the ENC library, the error code ENC_ERR_NOT_LOADED has been abolished, and another error code is now returned when the conversion table is stripped.
Read the manual to see which values are returned by the various functions.
Character encoding conversion functions have been added for the Korean and Chinese languages. The following character codes can now be utilized:
Korean: UHC (windows-949)
Chinese: GB2312-80
This addition of more character codes increases the size of the conversion tables which get linked by default, so strip the conversion tables of character codes that will not be used in your program.
FNTSetAlternateChar function for changing the alternate characterWhen a certain character is not included in a given font set, an alternate character is used in its place. The FNTSetAlternateChar function has been added as a way of specifying and changing the designated alternate character.
GXSetCoPlanar and GXSetDrawDoneSome of the countermeasures for the XF stall bug were not included in GXSetCoPlanar and GXSetDrawDone.
That has been corrected.
GXLoadNrmMtxIndx3x3When a debug build was made of GXLoadNrmMtxIndx3x3, there was a bug that caused an exception to occur if the normal matrix was in the highest location in memory.
This problem has been corrected.
Errors were corrected in the GXLoadNrmMtxIndx3x3 function reference.
man/en_US/gx/Cpu2Efb/GXPokeARGB.html: GXPokeAlphaRead was added to the See Also section.
man/en_US/gx/Cpu2Efb/GXPeekARGB.html: GXPokeAlphaRead was added to the See Also section.
gx/list.html: Rewrote the function description so it is easier to understand.
Added a note about the functions that can be placed inside the display list in gx/GXState.html.
GXSetTevColorS10: Corrected the "Constant Color register" to "Primary Color register".
In the description for the GXSetVtxDesc function, corrected GX_VA_POSMTXIDX to GX_VA_PNMTXIDX.
In the description for the GXBegin function, corrected the maximum number of vertices to 65535 (not 65536).
Added an explanation of the max_lod argument to the GXGetTexBufferSize function.
The mention of "Generation source: GX_TG_POS" in the description of the tg-spheremap sample was corrected to read "Generation source: GX_TG_NRM".
References using the old function name (GXSetTevStages) in the description were corrected to the new function name (GXSetNumTevStages).
In line with the specification changes to the GXGetCPUFifo function, the following references have been updated:
- GXGetCPUFifo: Added a link to functions that internally call GXFlush.
- GXAbortFrame, GXSetDrawSync, GxSetDrawDone, GXDrawDone, GXBeginDisplayList, GXEndDisplayList, GXReadClksPerVtx, GXRedirectWriteGatherPipe: Added mention of the internal call to GXFlush.
gx/Culling/GXSetCoPlanar.html: Rewritten for easier understanding.
Revisions were made to the Hio2If programming manual (docs/en_US/Programmer's_Guide/Hio2If.pdf). For details, see the Revision History in the document.
KBD_UC_IS_CTRL_KEYNo arguments were listed for KBD_UC_IS_CTRL_KEY, defined in kbd.h.
This has been corrected.
KPADInitEx functionAdded this function to enable the ring buffer used in the KPAD library's internal processing to be passed from the application.
When an extension controller was unplugged from a Wii Remote while the Remote was getting information from it, sometimes some of the data would be corrupted. The WPAD library checks the consistency of the extension controller's data, but because of the specifications, sometimes it cannot determine that data has been corrupted when the data is only partially destroyed.
The KPAD library can now check for partial data corruption based on data context, so this data can be correctly processed as corrupt.
When the play in the pointing target coordinates is set to a large value and the pointer is moved, it will jump if WPAD_ERR_BUSY is passed to the err member of the WPADStatus structure in the data obtained from the WPAD library.
The WPAD library no longer passes WPAD_ERR_BUSY to the err member of the WPADStatus structure, so this problem has been resolved.
KPADShutdown functionThe KPADShutdown function has been added as the KPAD library shutdown function so you can switch between using the WPAD library and the KPAD library depending on the scene.
After shutting down the KPAD library this way, call the KPADInit function to use the library again.
KPADSetObjInterval functionThe KPADSetObjInterval function sets the interval between the sensors in the sensor bar. This function was prepared for applications that were being developed while the sensor bar was still under development. Since the sensor bar has now been developed, there is no longer any need by applications to call this function. Accordingly, it has been eliminated.
KPADRead can now obtain data from the Wii Balance Board. The function can obtain the following values:
-- The value for body weight, as converted from the values of the sensors in each of the four corners of the board.
-- The average value for body weight during the previous 2 seconds from each of the four corners.
-- The average body weight on the Wii Balance Board (the summed value of the averages of the four corners) , corrected for temperature and gravity.
-- Error codes.
Updated the sample demos to match the API changes to the KPADInit function. The kpadsample demo now supports special extension controllers. Added the weight demo, which obtains data from the Wii Balance Board.
Added explanations to the Introduction regarding the values returned by the WPADProbe function and the error codes of the err member of the WPADStatus structure.
Mentioned that when the KPADEnableDPD/KPADDisableDPD functions are called to turn the Wii Remote pointer ON/OFF, the auto-disconnect timer is reset.
Added the parameters set by the Wii Menu using the KPADSetPosParam function.
KPADRead function's return valuesWhen the KPADRead function does not have valid data, it now returns the following error codes that distinguish the causes:
- KPAD_READ_ERR_SETUP for when the WPAD library is not finished initializing yet
- KPAD_READ_ERR_LOCKED for when KPADRead is being called by another thread
- KPAD_READ_ERR_NO_CONTROLLER for when no Wii Remote is connected
- KPAD_READ_ERR_NO_DATA for when there is no received data because of radio interference
When data alignment is specified and memory has been secured in the extended heap, the default behavior has been changed so that any memory vacancies generated from alignment are no longer re-registered as free areas.
This change was made because the re-registration of vacancies as free regions in memory can lead to fragmentation depending on the way memory is secured and possibly severely lower performance when securing and releasing memory.
By using the newly added function MEMUseMarginOfAlignmentForExpHeap, you can revert the extended heap's behavior back to its previous default.
If the extended heap was configured for thread-safety and then used in a debug build, sometimes the ASSERT did not function properly because the process for evaluating the ASSERT was not thread-safe.
This was corrected by executing the ASSERT evaluation inside a critical section.
For the convenience of developers, the MIDI adapter library has been added to the group of libraries that are linked by default during the program build.
MIDI adapters and this library are primarily designed to support the developers who work with sound. This library must not be included in the final retail product.
If the program is not using any of this library's functions, it will be removed from the group of linked libraries at compile time.
Added explanations for title-id(Hi) and title-id(Low) and for the functions that update the Wii console NAND memory's FAT.
Deleted NAND_RESULT_EXISTS from among the error codes returned by NANDMove[Async]. Also added an explanation of the processing that occurs when the directory to which a file/directory is being moved already contains a file/directory of the same name.
Added an explanation of the result code passed to the callback function.
The OS has been changed so code execution in the MEM2 region is now prohibited by default. The following functions have been added to permit code execution in MEM2 if the need arises:
OSEnableCodeExecOnMEM2Lo8MB()
OSEnableCodeExecOnMEM2Lo16MB()
In addition, these other functions have been added to prohibit code execution in specific regions of MEM1:
OSDisableCodeExecOnMEM1Hi8MB()
OSDisableCodeExecOnMEM1Hi16MB()
For more details, see the function reference manual.
Added the CRC calculation functions OSCalcCRC16 / OSCalcCRC32. These functions have the same features as the NETCalcCRC16 / NETCalcCRC32 functions provided by RevoEX.
OSReturnToMenuOn some Wii consoles, when a gamma value was changed in an application, the value continued to be reflected on the console even after the system returned to the Wii Menu. This problem has been corrected.
OSSleepTicks and OSCancelThread functions executed simultaneouslyWhen the OSSleepTicks function and the OSCancelThread function were executed at the same time, under some circumstances an assert would occur, and the program would stop.
This problem has been corrected.
- OSSetSaveRegion: Added size-restriction information and information on valid functions
- OSGetSaveRegion: Added information on valid functions
- OSGetSavedRegion: Added information on valid functions
PADIsBarrel functionThe PADIsBarrel function has been privatized. Its declarations have been deleted from headers, and text regarding it has been deleted from the Function Manual.
SCCheckPCShoppingRestriction functionThis function can be used to obtain the setting configured in the Parental Controls for the item "Restrict the use of Wii Points on the Wii Shop Channel?".
For details, see the document /man/en_US/sc/SCCheckPCShoppingRestriction.html.
If the Wii Remote is waved around with an extension controller attached, sometimes the console recognizes this as momentary unplugging of the extension. If the Control Stick of the Nunchuk or the Classic Controller is not in the neutral position when this happens, the origin setting will subsequently be off-center. The specification has been changed so that now the origin setting will not be reset if the same extension controller is recognized as detaching then reattaching within 300ms.
Corrected a mistake in the range of the stick clamp.
WPADGetSyncType functionIt was determined that when a Wii Remote is connected, the WPADGetSyncType function returned WPAD_ERR_NONE slightly more quickly than the WPADProbe function. That has been corrected so both functions now return WPAD_ERR_NONE at the same time.
The WPADResetAutoSleepTimeCount function has been added for resetting the Wii Remote's automatic disconnect timer.
The functions WPADSaveConfig, WPADEnableMotor, and WPADSetSpeakerVolume have been republished. Previously, they were privatized and could only be called from the Home Menu, but now they have been made public again so they can be used for tool development and debugging. Headers and function references have been updated.
WPADDisconnect functionThere was an issue with the WPADDisconnect function, which disconnects the specified channel's Wii Remote and clears data concerning the disconnected Wii Remote. Calling the WPADDisconnect function for a channel with no Wii Remote connected would also clear the data concerning the Wii Remote last connected to that channel.
WPADDisconnect function for a channel with no connected Wii Remote will not clear the data for the Wii Remote previously connected to that channel.
Certain applications for the Wii have specialized controllers. The device type of these special controllers is normally WPAD_DEV_FUTURE, but they can now also be correctly recognized by linking separate, dedicated libraries.
WPAD_ERR_BUSY for the err member of the WPADStatus structureWhen a command is sent for the Wii Remote, the Wii Remote sends an ACK corresponding to the command instead of sending data. This ACK contains only the Wii Remote's button information. Previously, when WPADRead was called upon receipt of the ACK, WPAD_ERR_BUSY would be passed to the err member of the WPADStatus structure.
Now, when an ACK is received the non-button information retains its most recent values and WPAD_ERR_BUSY is not passed to the err member.
WPADSetDpdSensitivity functionThe WPADSetDpdSensitivity function, which adjusts the sensitivity of the DPD, has been privatized to adjust sensitivity inside the Wii Menu.
full_modeThe WPADSetDpdSensitivity function has been privatized, so the sample demo full_mode that uses this function has been deleted.
Revised the explanation in the Introduction and WPADDisconnect pages of how Wii Remote Controller ports are assigned.
Added text to the references for the WPADSetGameTitleUtf16 function and the WPADWriteGameData function. This text notes that the game title specified by the WPADSetGameTitleUtf16 function is updated when data is written to the Wii Remote memory.
setncountrycode to setcountrycodeMerged setncountrycode that was included in the NADK package to setcountrycode.
As a result, when the country code is configured using setcountrycode, the NAND application's country code will now be configured at the same time.
This bug prevented the specified value from being applied, and caused 0x80000001 to always be returned.
This problem has been corrected.
When RESET is pressed, the normal state will be restored from the screen burn-in reduction state.
This revision is included in the SDK since the 2007/05/09 release of the SDK, Version 3.0.
A mod chip detection feature has been included in the library since Version 3.0 of the SDK. When a mod chip is detected, the following error message will be displayed on the screen:
Error #001
Unauthorized device has been detected.
If customers inquire about this error, direct them to remove the mod chip from the Wii console.
The WPADSaveConfig, WPADEnableMotor, and WPADSetSpeakerVolume functions were designed so that they could only be called from the HOME Menu, but the HOME Menu library has been removed from public availability, so these functions have also been retracted, and their declarations have been deleted from the header files. In addition, related descriptions have been deleted from the function reference manual.
The following information was updated about the return value of the WPADProbe function and the err member of the WPADStatus structure:
Revised inappropriate error codes that were being returned.
If the type of access to a file is not yet known, the value that is returned was changed from NAND_RESULT_FATAL_ERROR to NAND_RESULT_INVALID.
When GXGetCPUFifo was called, programs would freeze in certain conditions, but this has been corrected.
The check process has been revised.
All titles that use Revolution SDK Extensions and Revolution DWC must use the extended firmware (former name: "firmware for titles with network support").
After the application of this revision, a warning will be shown if an attempt is made to start an application that uses Revolution SDK Extensions or Revolution DWC with the standard firmware (former name: "firmware for titles without network support").
In order to support literal strings, the type of the second argument to the OSInitStopwatch function was changed from char* to const char*.
The registered callback function will now be deleted by specifying NULL to the arguments of the OSSetResetCallback and OSSetPowerCallback functions.
Also, if the OSSetResetCallback or OSSetPowerCallback functions are used when a callback function is not registered, these functions used to return the address of an internal function, but they have been changed so that they will return NULL in such cases.
The reset operation was disabled while running OSExec[l/v].
If ndrun_prechecker was run while the target .ddf file (such as the sample.ddf file corresponding to sample.elf) did not exist, there was a bug that would display a log to the shell showing shell script syntax errors yet the precheck process itself was successful even though the error log was displayed in the shell.
This problem has been corrected.
Released firmware for network-enabled titles.
Update system firmware after applying this patch and before running applications. From now on, select from two types of firmware for each title: firmware for titles with network support, and firmware for titles without network support. For details, refer to the Cautions section of the SDK readme. For instructions on updating the version, refer to the Installation Procedure section of the SDK readme.
The DEVKIT system menu now supports the latest version of firmware.
Expanded the size limitation from the prior 7 MB to 9 MB on programs that are loaded by default.
Added a note to the Function Reference Manual page for each Revolution SDK function that can put the current thread to sleep. Interaction between a thread's sleeping status and callback functions is explained in the Interrupts and Callback Functions page (OS > Overview > Interrupts and Callback Functions).
For certain conditions there was a problem that caused boot cache determination to fail when exiting the application.
This problem has been corrected.
There was a bug that caused OSFatal to behave incorrectly for applications created using NADK.
This problem has been corrected.
There was a bug wherein input from the DK Bongos could not make the system recover from the active screen burn-in reduction state.
This problem has been corrected.
Support has been added for multiple invocations of the following library initialization functions: MIXInit(), SEQInit(), and SYNInit(). Starting on the second invocation, these functions will exit without any processing if called multiple times.
Added the AXARTRemoveArticulator function.
This function is used when removing an arbitrary articulator from an articulator list.
Added explanations to AX_Applications.jp.pdf and made function reference additions for the expansion functions (Exp).
Added the following document related to the Dolby Pro Logic II license.
/docs/ja_JP/License/Dolby/DPL2_for_Wii_J.pdf
Please check the content.
Added a new function, SCCheckPCPassword, to check if the string specified as an argument matches the password set in the Wii Menu's Parental Controls.
For details, refer to the function reference manual.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the version, see the "Installation Procedure" section of the SDK's readme.
Update system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the version, see the Installation Procedure section of the SDK's readme.
Added development console initialization to the DEVKIT system menu.
For details, see "NDEV System Menu", under "Development Console Settings" in the "Tools" section of the manual.
Added a new function, SCCheckPCMessageRestriction, for checking whether the following Parental Controls setting in the Wii Menu is allowed: "Online user-to-user communication and the exchange of user generated content".
For more details, consult the man page for each function.
A bug was found that, when 8-bit Huffman compression was performed on data, would cause compression results to become invalid if a value was encoded to 18 bits or greater and the code started with a 1.
This may occur for data of several megabytes or more that is unbalanced in a specific pattern.
This problem has been corrected.
There was a problem where THPConv(D).exe would output an error and stop if a monaural sound file was used when creating THP data.
This problem has been corrected.
The RSO package has been included in the SDK; previously, it had been released separately.
The RSO module included in this SDK is the same as the RSO package released on 2006/12/19 (RVL_RSO_SDK_061219.zip), apart from revisions in the manual to some of the demos' explanations.
Update system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the version, see the Installation Procedure section of the SDK's readme.
The DEVKIT system menu now supports the latest version of firmware.
Added the Function Reference Manual in Japanese.
Added a new play mode for when the play radius has been set for the values of the pointer's coordinates, horizontal parameters, distance, and motion sensors.
With the previous method, even within the play range, the values would gradually start to move as they approached the boundary of the play radius, resulting in smooth changes in values. In contrast, this new method distinguishes sharply between whether or not the values are changed based on the boundary of the play radius, and does not change the values at all within the play range.
With the previous method, making the play radius too large would lead to behavior making it appear that the tracking had been made weaker. If you want to avoid this, you should probably consider using the new method.
In addition, the operation of switching between play modes has been added to the kpadsample sample demo, so you can check the differences in behavior between each method.
Among the sample demos, there were demos that were not being used directly due to the added guidelines, so they were deleted. Also, a demo was added that combined several demos.
The demos that were added and deleted are shown below.
Deleted:
- accept
- check
- config
- distance
- handling
- pointing
- sampling
- shutdown
- simple
- sync-callback
Added:
- wpadsample
There was a bug wherein if WPAD_SYNC_EVT_BUSY was returned to a callback that was set by a function like WPADSetSyncDeviceCallback, an exception would occur if the WPADStartSyncDevice function was called within that callback.
This bug was corrected by deleting WPAD_SYNC_EVT_BUSY.
There was a bug wherein if RESET was pressed immediately after pressing SYNCHRO at the particular timing, the reset process would complete, but the Bluetooth module would go out of control upon restarting, and the system would fail to start.
This problem has been corrected.
Partially changed the format of the top-level page of the Function Reference.
Updated the contents of the automatic fatal error messages.
Added a function to reset the internal counter for screen burn-in reduction.
Caution must be taken when using this function. For details, refer to the function reference for VIResetDimmingCount.
When MEMResizeForMBlockExpHeap() was used in thread-safe mode, there was a bug that caused it to exit without releasing the lock on the mutex if the required size could not be allocated from the available memory.
This problem has been corrected.
There was a bug that caused "Early Reflection" not to work in AXFXReverbHi and AXFXReverbHiDpl2.
This problem has been corrected.
There had been cases when the following errors would occur when AXQuit() was called, depending on the timing.
DSPAssertTask():Specified task not in active task list!in "dsp.c" on line 620.
This was occurring because while an audio DSP task being ended within AXQuit(), an AI interrupt occurred, and execution of the next DSP task was being requested.
This problem has been corrected.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the versionRefer, see the Installation Procedure section of the SDK's readme file.
Corrected errors in the manuals of the DVDReadAsyncPrio, DVDSeekAsyncPrio, and DVDCheckDiskAsync functions. These functions always return TRUE.
Made a number of corrections. For details, see the function reference manual.
When input data from the Wii Remote was obtained directly from the ring buffer (KPAD1 style) instead of being obtained with the KPADRead function, the input data could not be obtained when the device type was WPAD_DEV_FUTURE.
This problem was corrected.
If the Wii console was shut down when it was registering the Wii Remote, certain timings would cause an exception to occur.
This situation has been corrected by not performing the shutdown until the system enters a state in which the registration process can be stopped safely, even if the system is shut down during the registration process.
Update system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the version, see the Installation Procedure section of the SDK's readme.
Made a number of corrections. For details, see the function reference manual.
A bug existed that would cause simple registration information to be recorded at shutdown time, when WiiConnect24 was set to run while the console was in standby status.
As a result, Wii Remotes that were registered using One Time Mode were able to connect even after the system was shut down and restarted.
This problem has been corrected.
It was found that [this issue] does occur rarely, when trying to connect an already-registered Wii Remote to multiple consoles at the same time if the registration operation is started from the Wii console side.
This bug has been corrected such that it will not occur even in this type of situation.
A setting was added to allocate XFB in MEM2.
This setting can be enabled by stating that DemoUseMEM2XFB=TRUE before calling the DEMOInit() function.
Update system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the version, see the Installation Procedure section of the SDK's readme.
There were occasions when the ntcompress program had crashed when illegal data was attempted to be extracted.
This has been corrected so that an error will be displayed, and the program will exit normally.
There was a bug that caused the system not to recover from screen burn-in reduction state even after keyboard input.
This problem has been corrected.
Additions and revisions were made to several functions. For details, see the Function Reference Manual.
To a bug that halted the controller data transfer, made the following fix: changed the WPADGetInfo(Async) function's internal processing for the case when no external extension controllers were inserted into the Wii Remote.
Due to this change, the WPADProbe function will be returning WPAD_ERR_BUSY for some time after the WPADGetInfo(Async) function is called. However, there is no risk of losing data because they will be received correctly from the controller even during this period.
*This revision is the same as the revision that was reported in SDK Version 2.4 Patch 6.
There was a bug that caused the Wii Remote to stop transferring the controller data if the WPADGetInfo(Async) function was used when removing an extension controller that returns WPAD_DEV_FUTURE as the device type from the Wii Remote.
This problem has been corrected.
*This revision is the same as the revision that was reported in SDK Version 2.4 Patch 6.
The WPADProbe function had been used to check the validity of data from within the sampling callback that is called when data is received. The status that is obtained by this function is irrelevant to the validity of the data, so there were cases when valid data was being wrongfully discarded.
This problem has been corrected.
*This revision is the same as the revision that was reported in SDK Version 2.4 Patch 6.
When the side of Nunchuk that contains the C and Z Buttons is [facing] away from the ground and the Nunchuk's Control Stick is perpendicular with the ground, the motion sensor will recognize [the Nunchuk] as being in a horizontal state. If correction is performed, [the Nunchuk] will also be recognized as being in a horizontal state when the side that contains the C and Z Buttons is [facing] toward the ground.
The following functions were added for correction.
- KPADSetReviseMode()
- KPADReviseAcc()
- KPADGetReviseAngle()
If the source data size is not 4-byte aligned during Huffman compression, there were cases in which the final 1-3 bytes were not extracted correctly when extracted with the CXReadUncompHuffman function. This has been corrected so that will be extracted correctly.
Corrected the CXReadUncompRL, CXReadUncompLZ, and CXReadUncomHuffman functions so that they will return negative error codes when an attempt is made to extract data that cannot be extracted (invalid compressed data).
Added an a format that extends the length size of LZ77 compression during compression. LZ77 compression can be done in the extended format by either specifying -lex as an option to ntcompress or by using the CXCompressLZEx function.
Note that while the expansion function is the same as that for normal LZ77 compression, extraction is not possible using the LZ77 expansion functions included in previous SDKs.
The CXInitUncompContextRLFront, CXInitUncompContextLZFront, and CXInitUncompContextHuffmanFront functions were added as interfaces for specifying the data size to expand during streaming decompression.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the versionRefer, see the Installation Procedure section of the SDK's readme file.
Functions were added for carrying out processing while heeding buffer overruns. They are the following five:
CXSecureUncompressAny()
CXSecureUncompressRL()
CXSecureUncompressLZ()
CXSecureUncompressHuffman()
CXSecureUnfilterDiff()
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
For instructions about updating the versionRefer, see the Installation Procedure section of the SDK's readme.
Upgraded the DEVKIT system menu to version 1.13.
To the DEVKIT system menu, added the support for version 31 of the firmware.
Previously, for the parameters used in pointing and speed calculations performed within the library, only the functions for setting the parameter values existed. We have added the functions for getting the values.
In addition, we added the corresponding function references.
After the WPADInit function was called internally, the KPADInit function had to wait for the WPAD library to complete initialization. This was changed such that KPADInit no longer has to wait.
As before, KPAD library functions can be called after the KPADInit function.
When the communications module of the Wii Remote was unstable, these tools got released for use in bug analysis. Because the communications module of the Wii Remote has since stabilized, it is unnecessary to release these tools any longer.
This involves the sharing of the same registration information by the Wii console and Wii Remote. In the past, when the Wii console was reset, the pairing information for the simple-paired Wii Remotes was cleared on the Wii console side. We have changed the specifications to not clear the registration information until the Wii console is shut down.
There is no compatibility with previous specifications. Thus, simple-paired Wii Remotes cannot be connected when you run applications built with pre-SDK2.4 versions of SDK. Re-running applications built with SDK 3.0 or later will allow simple-paired Wii Remotes to connect.
However, if simple pairing is performed again while an application built with a pre-SDK2.4 version is running, the registration information on the Wii Remote side will be overwritten. Consequently, such Wii Remotes cannot connect even if an application built with SDK 3.0 or a later version is run.
In the past, functions WPADAttachDummyExtension and WPADDetachDummyExtension were not included in the release versions of the library. To explain, these are the debug functions, and the release versions cannot be built using the same source code that is used in the debug versions.
For convenience, these functions were included in the release versions of the library. This will enable you to build the release versions with the same source code. The functions were disabled in the release versions.
Even if the DPD captures the same object from the same location, the coordinate values returned by each module will shift. If the values are captured from the same location as the objects located at the four corners of the range that can be captured by DPD, these values will be written in the Wii Remote at the time of manufacture.
The WPAD library now uses these values to correct to the maximal possible extent the DPD coordinates received from the Wii Remote, and then to pass the coordinates to the application.
Added the NANDGetTmpDirUsage[Async] function.
This function can be used to get the number of FS blocks and inodes consumed by /tmp.
Added the NANDGetHomeDirUsage[Async] function.
This function can be used to get the number of FS blocks and inodes consumed by the home directory.
Previously, functions of type NANDSafe were prepared for updating file content atomically. However, their defect lay in having no means to recover from errors.
Functions of type NandSimpleSafe were added to take the place of the NANDSafe functions.
We changed the procedure for handling the NAND_RESULT_BUSY and NAND_RESULT_ALLOC_FAILED errors.
For details, refer to the Processing Sequence page of the NAND Function Reference Manual.
Among the sample demos for the PAD library, the simple demo's release was stopped for the following reasons:
- The described code does not comply with the guidelines.
- The content of the demo is sufficiently covered by the basic demo.
Added the keyboard library.
Added a library for using USB keyboards.
There were several broken links in the Function Reference Manual.
This problem has been corrected.
Released the OSGetAppType function, which had only been used internally.
This function is used for getting the game type. For further details, see the OSGetAppType page of the Function Reference.
Added a library for using MIDI adapters.
MIDI adapters and this library are primarily designed to support the developers who work with sound. Consequently, you may not include this library in a finished product.
The controller data status used to be determined from the values of both the WPADProbe function and the err member of the WPADStatus structure. However, because only the value of err expresses the status of the controller data, a correction has been made such that the value of WPADProbe is not referenced.
To a bug that halted the controller data transfer, made the following fix: changed the WPADGetInfo(Async) function's internal processing for the case when no external extension controllers were inserted into the Wii Remote.
Due to this change, the WPADProbe function will be returning WPAD_ERR_BUSY for some time after the WPADGetInfo(Async) function is called. However, there is no risk of losing data because they will be received correctly from the controller even during this period.
If a device that returned WPAD_DEV_FUTURE as the extension controller device type was removed from the Wii Remote, a bug would halt the controller data transfer from the Wii Remote when the WPADGetInfo(Async) function was used.
This problem has been corrected.
Because WPADAttachDummyExtension and WPADDetachDummyExtension are debug functions, they have not been included in the release versions of the library. Consequently, the same source code could not be used to build the release and the debug versions.
For convenience, these functions have been disabled and in this form added to the release versions of the library, allowing you to build the release versions with the same source code.
Fixed the following bug: If a Wii Remote extension controller, such as the Nunchuk, was removed the instant it was inserted, often the input data of the Wii Remote could no longer be received.
This bug was introduced with the corrections for SDK 2.4 patch 4. For this reason, it is not present in the earlier SDKs.
This problem has been corrected.
Added a note about handling of BUSY-related error codes to the "Processing Sequence" page.
This sample demo displays an arrow on the screen indicating the direction in which the Wii Remote was swung, and the algorithm for detecting the direction of the swing is included in the source of the sample demo.
Corrected errors in the manuals of the KPADEnableStickCrossClamp and KPADDisableStickCrossClamp functions. These functions have no arguments.
The KPADEnableAimingMode function was changed so that it is called from within the KPADInit function so that correction processing for the Sensor Bar placement is enabled by default.
Revised the sample demo along with this.
When a number lower than KPAD_MAX_READ_BUFS, 1 for example, is specified as the maximum number of stored data items passed to the KPADRead function, there were cases in which the actual repeat interval was longer than the button repeat time interval specified with the KPADSetBtnRepeat function.
This problem has been corrected.
The following content was added to the "Introduction" page.
- Neither type of pairing can be performed while the pairing information is being deleted by holding the SYNCHRO
- Resetting the analog sticks on the Nunchuk and Classic Controller cannot be performed with a combination of buttons on the Wii Remote and the Classic Controller
- Stop the speaker during periods when it is not in use
Added a feature that initializes the Wii Remote memory to the wpad_mem_util.elf tool for error-checking the Wii Remote memory.
The Bluetooth wireless module that the system is equipped with checks the signal status every 10 seconds. If the console was reset while this task was being performed, there was a bug that prevented the module from sending or receiving signals. To recover from this issue, it was necessary to remove the console's AC adapter from the outlet.
This problem has been corrected.
When using a mutex within the deallocator function registered in the WPAD library and a FATAL error in DVD or other libraries occurred, there was a bug that halted on ASSERT when memory was released during handling of the FATAL error by the WPAD library.
This problem has been corrected.
Within the library, there is a control queue for controlling the Wii Remote and a recognition queue for recognizing external extension controllers. Calling the WPADGetInfoAsync function will register a command in the control queue. Because there was a problem in the prioritization of the recognition queue and the control queue, there were times when commands in the recognition queue could not be processed if the control queue was constantly full with commands.
This problem has been corrected.
When connections were disconnected with the WPADDisconnect function, the Player Indicators were on for slightly less than 1 second after disconnection.
This has been corrected so that the Player Indicators will go off immediately after disconnection.
For the communication between the console and Wii Remotes, there is a disconnection feature after signals from the other side have been cut off for a fixed period of time due to signal interference. Until now, this time had been set to 2 seconds, but in preparation for the speeding up of application loads, it was changed to 1 second.
For application debugging purpose, the WPADAttachDummyExtension debug function, which operates the library in almost the same way as if the external extension controller had been inserted (inserts a dummy device), and the WPADDetachDummyExtension debug function, which restores the device type to the Wii Remote, were added.
However, please note that these functions can only be used with debug versions of the library, and will only operate correctly when nothing has been inserted into the Wii Remote.
In the accept, wpad_axdemo, wpad_seqdemo, and wpad_spdemo sample demos, the speaker was always running as long as the Wii Remote was connected. However, these demos have been revised to match the guidelines so that the speaker is stopped when not in use. In addition, in the memory sample demo, memory could not be read from or written to when the device type was set to values such as WPAD_DEV_FUTURE. The demo was changed so that this is now possible.
A problem was fixed wherein the content of the automatic fatal error message was different than the content specified in the message list of the programming guidelines.
The contact information for the end-user licensing agreement with Roland Corporation was not listed. The contact information is listed in the following file.
docs/en_US/License/Roland/Roland_contact_info.txt
Released OSGetAppGamename, which had been an internal function. This function is a function for getting game names. For details, see the OSGetAppGamename page of the function reference.
The OS library was corrected for debugging of relocatable modules (REL).
Noise was occurring because during streaming playback of ADPCM data with the sample program axstream.c, the loop context of the ADPCM data was not being updated correctly when the playback position looped from the end of the streaming buffer to the start.
This problem has been corrected.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications. Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate21_2_2". If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory and execute 'ODEM -r -l swupdate21_2_2_xx.gcm'. (For xx, enter either "jp", "us", or "eu".) The update will start automatically about 10 seconds after firmware starts. Once the update is complete, the message "SWUpdate Successful" appears on the screen, and the NDEV firmware is updated to Firmware 21.2.2 DEVKIT BOOT PROGRAM v1.11. If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Added Verify System Firmware and System Information to the DEVKIT system menu. For details, see "DEVKIT System Menu" in the "Tools" section of the manual.
The following features of the DEVKIT system menu were corrected:
- Changed so that the log is always output to the screen
- Revised the content displayed on the screen
When specifying the size of the conversion destination buffer and converting from the internal character encoding to ISO-2022-JP, the post-conversion size was not being returned correctly. This problem has been corrected.
Added a feature to strip any unnecessary Japanese conversion tables.
Added a description of a sample demo as well as a demo that uses alternate characters.
Deleted unnecessary code from the demo.
Added a description to the function reference that the effect of the OSInitFastCast function is limited to threads that have called this function.
A library for using Wii bitmap fonts, the FNT library has been added.
For details, see the function reference for the FNT library.
There was a problem where an error would occur when HIO2Open would execute if HIO2Init is called again after already having been called.
This problem has been corrected.
The type of return value for the host side (Win32) function HIO2EnumDevices was given as Boolean when actually it is s32.
The function reference has been revised.
Unlike the GameCube, with the Wii, audio data is output at a set playback frequency (of 48,000 Hz or 32,000 Hz). It is no longer necessary when creating THP data to perform sampling for the purpose of fine tuning (48,000 Hz -> 48,043 Hz/32,000 Hz -> 32,028 Hz) of the playback frequency as when using the GameCube.,
THPConv(D).exe has been revised so that sampling is not performed when conventionally executed without the -on option. In addition, the -on option has been deleted. However, to maintain compatibility, THPConv(D).exe will not stop on an option error even if the -on option is used with the new version of THPConv(D).exe. Furthermore, since there have been no changes to the THP data file format, the THP data version remains 1.1.
Notes related to the playback frequency of audio data when creating THP data have been revised to match Wii specifications.
Unlike the GameCube, with the Wii, audio data is output at a set playback frequency (of 48,000 Hz or 32,000 Hz).
There was a problem when playing data having a size less than the streaming buffer size (STREAMBUFFER_BYTES) using axstream.c, the software streaming demo of the AX library, where noise would be emitted after playback of data ended and execution would stop on an assert from the DVD library.
This problem has been fixed.
Descriptions in the "AX Application" manual (AX_Applications.jp.pdf) have been updated to match Revolution SDK specifications.
Sometimes input from the Wii Remote could not be obtained when connected to the Wii console if an undefined extension controller (a controller other than the Nunchuk or Classic Controller) had been plugged into the it while it was disconnected.
Since data from the remote stops when an extension controller is plugged in, if a command requesting the transfer of data in extended controller data format was issued by the application despite the fact that specifications called for the transfer of commands that request the transfer of data in the immediately previous data format within the library, sometimes the application issued command would be sent first.
This problem has been corrected.
Although the range of values that can be assumed by clLStickX, clLStickY, clRStickX, and clRStickY of WPADCLStatus was given in the man pages as -128 through 127, the actual allowable range of values is -512 through 511. This error has been corrected.
A problem was corrected where the device and library would not close correctly when there was a Fatal error in the drive when automatic Fatal messages were enabled.
The following measures have been taken regarding Release Note #266 "(AX): Accounted for delay in response to AI/DSP interrupts when calculating the estimated load on the DSP."
In the case of applications that aggressively use callbacks in response to timers and interrupts, audio frame processing may be delayed because it cannot be started immediately after an AI or DSP interrupt.
Because this delay was not accounted for in older versions of AX, the estimated DSP load was not calculated correctly in some cases. This problem was fixed. As a result of this revision, however, the number of AX voices has been reduced by about six voices on average.
However, with the above revision, we found that background music and sound effects would be cut off as a result of AX performing drop processing on all voices if an interrupt delay larger than expected occurred.
The method of estimating the DSP load was therefore revised again.
- The amount of interrupt delay was fixed (200 microseconds in release builds and 400 microseconds in debug builds)
- Even delays longer than the above set time occur, they will not cause voices to be dropped
- When delays longer than the above set time occur, they might cause noise.
Even so, attention must be paid to interrupt delays that are longer than expected. As written in Chapter 7, “Critical Sections” of the Revolution SDK document OS.jp.pdf, applications must keep the period during which interrupts are disabled as short as possible.
Particular attention must be paid when using OSReport() in debugging.
OSReport() takes time to complete. There is therefore a possibility that unstable application behavior may result if OSReport() is called while interrupts, such as those in the interrupt handler, are being disabled. OSReport() must be called while interrupts are enabled.
The amount of interrupt delay associated with this revision is based on the information described above.
There were the following problems when a non-zero value was specified for the delta of the mixing parameter (axpb.mix).
- Once the volume was set to a value of 0x8000 or more, the volume would not update to a value lower than 0x8000 even if a negative value was specified for the delta.
- Once the volume was set to a value of 0x7fff or less, the volume would not update to a value of 0x8000 or more even if a positive value was specified for the delta.
This problem has been fixed.
Frequent read access of Wii console NAND memory is prohibited because a characteristic of NAND flash devices is that persistent, repeated read access of a given memory region may result in corruption of data surrounding that region. A note warning of this matter has been added to the introduction page of the NAND function reference manual.
The function wpad_mem_util has been added to tools.
Used to manipulate the system header region of Wii Remote memory, wpad_mem_util[D].elf is a utility tool designed to return WPAD_ERR_NOPERM or WPAD_ERR_BROKEN when the WPADReadGameData function is called.
Use this utility when debugging applications that use Wii Remote memory.
When the OSFatal function was called from a callback function, the device and library close process did not run correctly. This problem was fixed.
Although there was a problem where the following debug message would be displayed when a reset/shutdown function was called, this has been corrected so that the message is no longer displayed.
CallbackAsyncIpc:ret = 0
Applications developed under a Revolution SDK 2.4 environment automatically perform WiiConnect24-related communication processes if WiiConnect24 is enabled according to Wii console settings.
Although this automatic process has been enabled regardless of whether the application supports WiiConnect24, the default setting for applications that do not support WiiConnect24 has been changed to stopped status.
Furthermore, the function NWC24ResumeScheduler for starting this automatic processing and NWC24SuspendScheduler, for stopping it, have been added.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate17_2_0".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory and execute 'ODEM -r -l swupdate17_2_0_xx.gcm.' (For xx, enter either "jp", "us", or "eu".) The update will start automatically about 10 seconds after firmware starts. Once the update is complete, the message "SWUpdate Successful" appears on the screen, and the NDEV firmware is updated to Firmware 17.2.0 DEVKIT BOOT PROGRAM v1.10.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
The following bugs were corrected in the DEVKIT System Menu save-data operations:
- Could not get the application type from the settings file.
- With some operations, the process would hang when copying data.
When the mixer being used by MIXInitSpecifyMem() was initialized, if the memory region specified by the argument for the mixer was not initialized to zero the application would stop.
This problem has been resolved.
Mixer control for the Wii Remote speaker has been implemented. This reduces the DSP burden when the Wii Remote speaker is being used.
It is now possible to apply conventional LPF filters or the new Biquad filters to the Wii Remote speaker audio data immediately before down-sampling from 32kHz to 6kHz.
For details, read the AX man page.
Eliminated HPF, which had been implemented as a tentative measure, and in its place added Biquad filters. For details, read the AX man page.
For applications that make active use of callbacks for timers and various interrupts, this can delay the start of the audio frame process so it does not start immediately after the AI interrupt (or the DSP interrupt).
Since the AX did not take this delay into consideration previously, there were cases where the DSP load was not correctly estimated.
This problem has been resolved. However, the fix reduces the average number of AX voices by about six voices.
It is no longer necessary to specify the zero-buffer in the AX voice parameter block when AX is playing audio data only once ('one-shot') without looping. However, to retain compatibility of the functions, zeroBuffer remains an argument in the SEQ/SP/SYN libraries. When using any of these libraries, specify NULL for the zeroBuffer argument.
This function sends general-purpose commands to an external extension controller, which is connected to the Wii Remote, for its unique processes.
The function is designed for external extension controllers that might be developed in the future. The Nunchuk and Classic Controller do nothing if they receive commands from this function.
Note 163 mentions a restriction that at least two seconds need to pass after stopping the WPAD library before the WPADInit function can be called. But because the boot process takes more than two seconds on the Wii console, application developers need not worry about this rule.
For Wii Remotes that had already been paired, any button could be pressed for reconnection during the Wii console Simple Pairing process. However, on the Home Menu, the Reconnect screen instructs players to reconnect by pressing the 1 + 2 Buttons. To avoid user confusion, it is no longer possible to reconnect in any way other than instructed.
As for Normal Pairing, the process is the same as before, allowing the reconnection of paired Wii Remotes during Normal Pairing.
When auto-sampling was used to get data from the external extension controller and the Wii Remote, WPAD_ERR_BUSY would be set in the 'err' member of the sampling buffer's status structure. After getting more data and cycling around the buffer, the next time the structure was updated the data for the external extension controller would be all zeros.
This problem has been corrected.
When the shutdown and reset processes were executed while WPADGetStatus() was returning WPAD_STATE_ENABLED the pairing information would be deleted.
This problem has been corrected.
When MEM2 was allocated for the work area passed to the CARDMount[Async] function, sometimes even normal memory cards would not end normally and CARD_RESULT_IOERROR would be returned.
This problem has been corrected.
It was incorrectly stated that the save-data banner file should be created first. The opposite is correct: the save-data banner file should be created LAST. This correction has also be made to the 'banner' sample demo.
The NAND_RESULT_INVALID result code is now returned when NAND functions are called in an incorrect fashion for the opening and closing of files (for example, attempting to close a file twice, or attempting to use NANDSafeClose[Async] to close a file that has been opened with NANDOpen[Async], and vice versa).
Files/directories that do not give Read authority to the Owner cannot be created. In the same way, permission operations that remove the owner's right to read existing files/directories have also been prohibited. These new restrictions have been written into the pertinent function reference manuals.
The information will also be placed in the next release of the Guidelines.
The previous version of the Function Reference Manual said that it was permitted to use the NANDGetAvailableArea[Async] function as a substitute for NANDCheck[Async]. That permission has been retracted.
The previous version of the Function Reference Manual stated that the NANDSetStatus[Async]() could not execute if the file size was not zero. That statement is wrong. In actual fact, there are no restrictions on file size. The manual has been corrected.
The -x option has been added to the ntcompress tool for uncompression of a compressed file on the PC.
For details, read the Tools -> ntcompress section in the Function Reference Manual.
The -A option of the ntcompress tool, which specifies the alignment for the data size, has been extended so it can now be used to specify an alignment of 8, 16, or 32 bytes.
For details, read the Tools -> ntcompress section in the Function Reference Manual.
NEC kanji characters and the private area were assigned to 8-bit code when converting to ISO-2022-JP. The NEC kanji characters are now assigned to the equivalent characters as 7-bit code, and the private area has been revised to return ENC_ERR_NO_MAP_RULE.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
The update program is executed by starting a Bourne-again shell (bash) and entering "fwupdate15_1_1".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory and run ODEM -r -l swupdate15_1_1.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 15.1.1 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate13010".
If the environment has been customized or if the above-described procedure does not work, go to the directory RVL_SDK/RVL/bin/tools, and run ODEM -r -l swupdate13010.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is completed, "SWUpdate Successful." will appear on the screen, indicating that the NDEV firmware has been updated to Firmware 13.0.10 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate1309".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate1309.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 13.0.9 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate1308".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate1308.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 13.0.8 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Update the system firmware (formerly NDEV firmware) after applying this patch and before running applications.
The update program is run by starting a Bourne-again shell (bash) and entering "fwupdate1307".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate1307.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 13.0.7 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
When converting from the internal character encoding to the Japanese character encoding, part of the private memory area was not properly converted. This problem has been corrected.
When a little-endian BOM was attached to the conversion source Unicode character string, the correct read/write size was not returned. This problem has been corrected.
The size of the table used by the ENC library has been reduced.
Update the NDEV firmware after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate1206".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate1206.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 12.0.6 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Inter-conversion between Windows-1252 and UTF-16BE is now supported.
For details on the supported character encodings, see the ENC Function Introduction.
(Information left out from the SDK Version 2.3 Release Notes)
Starting with SDK Version 2.3 (firmware Version 12.0.2), most synchronous NAND functions can return NAND_RESULT_ALLOC_FAILED. When a synchronous NAND function is called while the request queue is full (from calling asynchronous NAND functions multiple times in a short period of time, for example), the above result code may be returned.
View the NAND_RESULT_ALLOC_FAILED returned by NAND synchronous function as a type of busy state. If this code is returned, wait for the request queue to be free before running the function again (as when an asynchronous function returns NAND_RESULT_BUSY). In the near future, the NAND_RESULT_ALLOC_FAILED result code will be rolled into NAND_RESULT_BUSY.
This information is not currently found in the function reference manual. The manual will be revised in the next release.
Update the NDEV firmware after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate1205".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate1205.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 12.0.5 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
The problem with inconsistent pairing format between the Wii console and the Wii Remote has been corrected.
This bug was seen when a simple pairing was performed in the following way:
1. Perform normal pairing between a Wii Remote and a Wii console (A).
2. Perform normal pairing between the Wii Remote and another Wii console (B).
3. Perform simple pairing between the Wii Remote and the first Wii console (A).
The method by which a new controller is paired when the maximum number of devices are already paired has been revised.
Implementing this new method has corrected the problem, so a new controller can be connected in place of the device that was connected at first.
When converting from internal character encoding to ISO-8859-1, the conversion is now handled as ISO-8859-1. It was previously handled as Windows-1252.
When converting from ISO-8859-1 to internal encoding, the conversion is handled as Windows-1252, as before.
Update the NDEV firmware after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate1203".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate1203.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 12.0.3 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
The SDK version information is now stored in the sdkver.h header file, instead of the revolution.h header file. To maintain compatibility with the previous version, sdkver.h is included inside revolution.h.
A private function used only in the system menu has been added to the SC library.
When the acceleration tracking parameter was set to a value other than 1.0, the x-axis acceleration tracking process in the Nunchuk did not run correctly. This bug does not affect the KPADOld library.
This problem has been corrected.
A function has been added for determining the character encoding convertible from the internal encoding, based on the selected conversion candidate.
Functions using conversion contexts have been added. With this change, an encoding determination from encoding name string expression, a carriage return code automatic conversion, and an alternate character automatic conversion are now supported.
Inter-conversion between the following character encodings and UTF-16BE are now supported: US-ASCII, ISO-8859-2, ISO-8859-3, ISO-8859-7, ISO-8859-10, ISO-8859-15
Conversion from the following character encodings to UTF-16BE (single direction) is now supported: UTF-7, UTF-16, UTF-16LE, Windows-1250, Windows-1253, Macintosh, x-mac-ce, x-mac-greek, IBM850, IBM852
For details on the supported character encodings, see the ENC Function Introduction.
The name of the fwupdate script has been updated to fwupdate1202.
In addition, the line feed code of the script was set to CR+LF and has been changed to LF.
The firmware build date output when running the fwupdate1202 script (when running swupdate1202.gcm called inside fwupdate1202) has been corrected to 10/25/2006.
This function had been removed in the SDK Version 2.3, but has been reinstated with this patch. Caution must be taken when using this function. See the VIEnableDimming function reference for details.
With the addition of this function, the wait time until screen burn-in protection is activated can now be changed. (This function has been added for SDK Version 2.3.))
This function has been eliminated. In addition, the videmo/src/dimming.c demo content and manual pages have been revised to reflect this change.
Fixed the broken links in the Audio, PAD, VI, and WPAD library manuals.
Update the NDEV firmware after applying this patch and before running applications.
The update program is run by opening a Bourne-again shell (bash) and entering "fwupdate".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 12.0.2 and DEVKIT BOOT PROGRAM v1.09.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Changed the NDEV system menu save-data operation so that configuration files are created when copying data to the SD Card. The file/directory permission and application types are stored in this file. See "Tool -> NDEV System Menu -> Save Data Operation" in the manual for details.
The following bugs have been found in the DEVKIT system menu save data:
- The file size is rounded up to a multiple of 32, and the end bits are filled with indeterminate values. - When a file of exactly 16 KB is copied, the size is set to 0.
This problem has been corrected.
DEVKIT System Menu now supports the Wii Remote. For details, see "DEVKIT System Menu" in the "Tools" section of the manual.
When formatting a memory card with cardedit[D].elf with the console language set to Japanese, the memory card was formatted with the opposite format, that is, in SJIS when ANSI was selected, or in ANSI when SJIS was selected.
This problem has been corrected.
The internal implementation of the KPAD library has been greatly revised. The earlier version of the KPAD library has been renamed to KPADOld library and will be eliminated in the near future. Use the new KPAD library from now on.
The new library has the following characteristics:
- It cannot be used together with the KPADOld library.
- It uses the sampling callback of the WPAD library. If the application does not use any sampling callbacks, almost no change in the source code is necessary in transition from the KPADOld library.
- Changed reset timing of the internal work by KPADReset
- The DPD and Motion Sensor values are less likely to fluctuate when swapping extension controllers
- A cross clamp has been added to the Nunchuk and Classic Controller Control stick clamp processing methods.
See the Introduction to the Function Reference Manual for details.
The buffer index was incremented before the sampling buffer data scan only when using the Classic Controller, resulting in occasional memory corruption.
This problem has been corrected.
The KPAD library version from before Revolution SDK Version 2.3 has been renamed to KPADOld library.
The following functions specific to the WPAD library are no longer disclosed, and have been removed from the header file (/include/revolution/sc.h):
SCGetWpadMotorMode()
SCGetWpadSensorBarPosition()
SCGetWpadSpeakerVolume()
SCSetWpadMotorMode()
SCSetWpadSensorBarPosition()
SCSetWpadSpeakerVolume()
See "No Longer Disclosed Functions" in the Function Reference Manual for details.
If you have already submitted the Master ROM for an application, resubmission is not necessary.
Changing the setting items for the console setting sound/video mode from the application is now prohibited.
The following functions are no longer disclosed and have been removed from the header file (/include/revolution/sc.h):
SCSetSoundMode()
SCSetProgressiveMode()
SCSetEuRgb60Mode()
See "No Longer Disclosed Functions" in the Function Reference Manual for details.
If you have already submitted the Master ROM for an application, resubmission is not necessary. If the removal of these function calls from the application is too difficult from scheduling point of view, please contact Nintendo.
This function retrieves the mode in which the pointer for the Wii Remote operates.
Calling WPADShutdown and WPADReconnect while the function is already running causes future processes to run in an interrupt-prohibited state.
Because the shutdown/reset functions call these functions internally, calling these functions before the internal call causes this problem.
Changes have already been made to call these functions internally at shutdown/reset operations, so these functions have now been eliminated. The function will be left so that no code changes are necessary, but calls to these functions will no longer do anything.
When RESET or the Power Button was pressed during pairing or pairing information removal, the state of the communication module occasionally became unstable.
The reset/shutdown process has been changed to wait for pairing or removal of the pairing information to complete.
When WPAD_SPEAKER_OFF was sent using the WPADControlSpeaker function, a completion notification callback was called twice.
This problem has been corrected.
A WPAD_SPEAKER_RESET command has been added to the WPADControlSpeaker function. When this command is sent, the audio data stored in the speaker buffer is cleared.
The origin of the L Stick on the Classic Controller became misaligned when the Classic Controller was attached and the data format was set to WPAD_FMT_CLASSIC.
This problem has been corrected.
A bug was found in the library regarding how the received data was interpreted. When a Nunchuk or a Classic Controller was attached and the Pointer used, and the Pointer recognized four objects, the x-coordinate of the fourth object was being masked by a 0-256 value. In addition, the x-coordinate was set to 3327 when the fourth object was not recognized.
When using the KPAD library, the pointed location sometimes shifted when inserting/removing an extension controller.
This problem has been corrected.
When a game disc could not be read or the disc was different from the current game after the OSRestart function or the OSExecl or OSExecv function was called, a hot reset was performed. This behavior has been changed to return execution to the system menu (the same as OSRetrunToMenu).
Added support for hot-swapping in the basic and the cont demo.
The programming manual of the operation system library has been updated.
The previous banner sample demo did not load any image data with meaning, but this has been updated so that *.tpl files in /dvddata/nanddemo/ can be used. In addition, a manual page for the banner sample demo has been created.
The NANDGetAvailableArea[Async] function obtains the number of available file system blocks and inodes for the application. It essentially provides the same function as NANDCheck[Async].
The following functions have been added to support the Wii Remote speaker:
void AXARTInitArtFader (AXART_FADER *articulator);
void AXARTInitArtRmt (AXART_RMT *articulator);
void AXARTInitArtRmtFader (AXART_RMT_FADER *articulator);
void AXARTInitArtRmtAuxVolume(AXART_RMT_AUX_VOLUME *articulator);
For details, see the manual pages for each function.
As a result of the change with AX_MAX_VOICES, the size of the voice control data, which was defined as static in the library, has increased. To mitigate this issue, a mixer initialization function has been added so that the voice control data memory area can be specified by the user.
#define MIXGetMemorySize(num) ((sizeof(MIXChannel) + sizeof(MIXRmtChannel)) * num)
void MIXInitSpecifyMem(void* mem);
For details, see the manual pages for each function.
As a result of the change with AX_MAX_VOICES, the size of the voice control data, which was defined as static in the library, has increased. To mitigate this issue, a synthesizer initialization function has been added so that the voice control data memory area can be specified by the user.
#define SYNGetMemorySize(num) (sizeof(SYNVOICE) * num)
void SYNInitSpecifyMem(void* mem);
For details, see the manual pages for each function.
The following functions have been added for the master volume that is multiplied at DSP to AI output:
u16 AXGetMasterVolume(void);
void AXSetMasterVolume(u16 volume);
For details, see the manual pages for each function.
In certain DSP-ADPCM data that was compressed using dsptool(D), the section that should have been silent was not.
This problem has been corrected. A new dsptool(D).dll has been added for conversion to DSP-ADPCM.
The AX voice control data can now be placed in MEM2, which causes problems (such as generation of noise) due to the difference in the access speed of MEM2 and MEM1. The following debug function has been added to correct this problem:
typedef void (*AXExceedCallback)(u32 cycles);
void AXRegisterExceedCallback(AXExceedCallback callback);
For details, see the manual pages for the function.
As a result of the change with AX_MAX_VOICES, the size of the voice control data, which was defined as static in the library, has increased. To mitigate this issue, an AX initialization function has been added so that the maximum voice count and the voice control data memory area are user-specifiable.
#define AXGetMemorySize(num) ((sizeof(AXPB) + sizeof(AXPBITDBUFFER) + sizeof(AXVPB)) * num)
void AXInitSpecifyMem (u32 num, void* mem);
void AXInitExSpecifyMem(u32 num, void* mem, u32 outputBufferMode);
u32 AXGetMaxVoices (void);
For details, see the manual pages for each function.
To increase the number of simultaneously playable sounds, the voice update function, which was incompletely implemented, has been eliminated.
Therefore, the following functions have been eliminated: void AXSetVoiceUpdateIncrement(AXVPB *p);
void AXSetVoiceUpdateWrite (AXVPB *p, u16 param, u16 data);
In addition, a voice update member has been removed from the parameter block.
The definition of AX_MAX_VOICES in the /include/revolution/ax.h header file has been changed from 64 to 96.
As a result of reviewing the audio DSP code and the DSP cycle estimation value, the number of simultaneously playable sounds in the AX library has been doubled.
Controller information obtained from the KPAD library was occasionally invalid due to an inability to synchronize the controller information referenced by read_kpad_acc, read_kpad_dpd, and read_kpad_stick with its error status.
This problem has been corrected.
This revision is the same as the revision included in the RVL_SDK-2_2-patch_kpad-061007 package.
Revisions and additions mainly relate to the following topics:
- Made comprehensive revisions to "5.2 Procedure for Switching to Progressive Display with NTSC"
- Made comprehensive revisions to "6.5.1 Switching between PAL/EU RGB60/Progressive Modes"
- Added "7.5.2 Automatic Switching of the Video Mode"
- Comprehensively revised "7.10 Reducing Screen Burn-in"
- Comprehensively revised "7.8 16:9 Screen Ratio"
- Changed the safe frame for 16:9 ratio displays to 87%
For details, see the revision history of this document.
Although Wii Remote speaker volume ranges from 0 to 127, it was possible to pass a value greater than 127 to the WPADSetSpeakerVolume function.
This problem has been corrected so that any values greater than 127 are converted to a value of 127.
Processing based on a periodic alarm did not process correctly due to an illegal base-time value that wsf used for the periodic alarm in the library.
This problem has been corrected.
There was a problem where the callback would not return when DVDCheckDiskAsync was executed after DVDCancel[Async] or DVDCancelAll[Async] was called while the drive status was DVD_STATE_NO_DISK or DVD_STATE_RETRY. This problem has been corrected.
There was a problem where subsequent insertion of a disc would not be recognized and the status DVD_STATE_NO_DISK would result if DVDCancel[Async] or DVDCancelAll[Async] were called while the drive status was DVD_STATE_NO_DISK. This problem has been corrected.
The provisional version of the Roland end-user license agreement and associated Japanese translation reference included with the SDK have been updated to their official versions. Although there are no significant changes to terms or conditions that affect programs, be sure to check the agreement.
Update the NDEV firmware after applying this patch and before running applications.
Run the update program by starting a Bourne-again shell (bash) and entering "fwupdate924".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory and execute ODEM -r -l swupdate924.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 9.2.4 and DEVKIT BOOT PROGRAM v1.08.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Occasionally the screen burn-in protection feature did not run after five minutes without controller input.
This problem has been corrected.
When AX_PB_STATE_STOP was specified repeatedly for the same voice in AXSetVoiceState(), after the second STOP, a noise was generated every time STOP was specified.
This problem has been corrected.
Added a tool for obtaining the firmware version of the controller communications module on the Wii console. Use this tool when a bug is suspected to be associated with the Wii Remote.
The description of this tool is added to the function reference page.
In simple pairing, the close callback was not being called if four Wii Remotes were connected immediately before the device search.
This problem has been corrected.
If the wireless communication stack was searching for a device at the time it received a connection request from a the Wii Remote and it found that Wii Remote, the search close event was not generated. At this point, the pairing operation and the Wii Remote information could not all be cleared.
This problem has been corrected.
With multiple Wii Remotes connected, if the Wii system attempted to send a Rumble Feature command to another Wii Remote, that Rumble feature command was not sent.
This problem has been corrected.
If a Wii Remote was reconnected while an external extension controller was plugged in, the status after reconnection occasionally stayed BUSY.
This problem has been corrected.
The Wii Remote occasionally could not connect to the Wii console for approximately 40 seconds after removing and reinserting the batteries.
This problem has been corrected.
If WPADStartFastSyncDevice or WPADStartFastSimpleSync was called immediately after disconnecting a Wii Remote, that disconnected Wii Remote was reconnected.
This problem has been corrected.
Pairing was not being correctly processed under the following conditions:
- If the Wii console recognized the Wii Remote as normal-paired, whereas the Wii Remote recognized the Wii console as simple-paired, pressing SYNCHRO on the Wii console and the Wii Remote for normal pairing caused the Wii Remote to still recognize the Wii console as simple-paired. This has been corrected so that the Wii Remote recognizes the Wii console as normal-paired.
- When both the Wii console and Wii Remote recognized each other as normal-paired, pressing SYNCHRO on the Wii console and both the 1 Button and the 2 Button on the Wii Remote caused each to recognize the other as normal-paired. This has been corrected so that normal pairing requires pressing SYNCHRO on the Wii Remote to succeed.
- When the Wii console recognized the Wii Remote as normal-paired, and the Wii Remote recognized the Wii console as simple-paired, pressing SYNCHRO on the Wii console and both the 1 Button and the 2 Button on the Wii Remote caused both to maintain the previous pairing state. This has been corrected so that normal pairing requires pressing SYNCHRO on the Wii Remote to succeed.
- When the Wii console recognized the Wii Remote as simple-paired, pressing SYNCHRO on the Wii Remote during the simple pairing operation of the Wii console caused the Wii console to recognize the Wii Remote as simple-paired. This has been corrected so that simple pairing requires pressing both the 1 Button and the 2 Button on the Wii Remote to succeed.
Audio cutoff occurred occasionally when the signal deteriorated while playing sound through four Wii Remote speakers.
This fix reduces the frequency of the audio cutoff.
A memory leak was discovered in the wireless communication stack library of the Wii Remote. This occurred during the pairing process (both simple and normal) between the Wii console and the Wii Remote.
This problem has been corrected.
In the past, WPADShutdown was called inside the OSShutdownSystem function, and this was not running properly at times. This problem has been corrected.
In addition, the change has been made in certain functions, such as other reset/shutdown functions, so that the WPADReconnect function is now called internally. The following functions currently have the WPADShutdown or the WPADReconnect function called internally:
Function calling WPADShutdown: OSShutdownSystem
Functions calling WPADReconnect: OSReboot, OSRestart, OSReturnToMenu, OSExecl, OSExecv
WPADShutdown or WPADReconnect may be called inside these functions without any problems.
The Nintendo GameCube Memory Card could not be mounted correctly.
This problem has been corrected.
When a DVD request was issued from multiple threads, it caused the application to freeze in certain situations.
This problem has been corrected.
When storing game data to the Wii Remote, the timestamp set by the library did not match the time on the calendar.
This problem has been corrected.
In addition, the time display of the sample demo memory.c has been corrected.
When a Wii Remote was connected, inserting and removing the external extension controller after calling the KPADReset function resulted in corruption of subsequent controller data.
This problem has been corrected.
Update the NDEV firmware after applying this patch and before running applications.
The update program is run by starting a Bourne-again shell (bash) and entering "fwupdate923".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate923.gcm. The update will start automatically about 10 seconds after firmware starts. Once the update is complete, "SWUpdate Successful." will appear on the screen. The NDEV firmware is updated to Firmware 9.2.3 and DEVKIT BOOT PROGRAM v1.08.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
There was a bug that prevented the origin for the analog stick and analog trigger from being reset even when the A, B, +, or - Button was pressed for three seconds on the classic controller.
This problem has been corrected.
The registration operation could not start again after all the registration information was deleted by pressing the SYNCHRO on the console for 10 or more seconds during registration or simple registration.
This has been fixed so that all information cannot be deleted during the registration operation.
The WPAD library can be started with the WPADInit function and terminated with the WPADReconnect function or the WPADShutdown function. However, wait at least two seconds when restarting the library after terminating it to stabilize the communication stack status.
Operation was unstable when the WPADSetAcceptConnection function was called while the library was being initialized or while it was being terminated. This function has been changed so that it returns either success or failure, according to the internal status when it was called.
Although the game title could be set in the Wii Remote memory control file information, the character code for the game title was converted to only UTF-16. Therefore, the functions to set the game title have been changed as follows:
- Deleted:WPADSetGameTitleWPADSetGameTitleWCharWPADGetGameTitle
- Added:WPADSetGameTitleUtf16WPADGetGameTitleUtf16
Remote control registration information for console A was lost in the following situation:
1. Remote control information was registered in console A.
2. Console A was reset (including shutdown).
3. Remote control information was registered in console B.
4. Remote control information was registered again in console A.
This problem has been corrected.
Controller data could no longer be obtained from a remote when that remote was connected after the KPADInit function was called, but before the KPADReset function was called.
This problem has been corrected.
Noise could temporarily be seen on the TV screen when switching applications. This problem has been corrected.
Added the following functions to the AX library:
u16 AXGetAuxAReturnVolume (void);
u16 AXGetAuxBReturnVolume (void);
u16 AXGetAuxCReturnVolume (void);
Obtains the current return volume for each Aux bus.
void AXSetAuxAReturnVolume (u16 volume);
void AXSetAuxBReturnVolume (u16 volume);
void AXSetAuxCReturnVolume (u16 volume);
Sets the return volume for each Aux bus.
The volume value is u16, as in other AX volume values.
0x0000 = 0.0
0x8000 = 1.0
0xffff = (about) 2.0
When the effect data processed with the CPU (using the AXFX library) is mixed in the main bus with the DSP, the return volume is multiplied by the effect data. By using the return volume appropriately, for example, when the processing transitions from the game to the Home Menu, switching the effects can occur smoothly. However, if a value is set in the return value that is much different from the current value (for example, 0x8000 -> 0x0000), noise may be generated. Change the return volume gradually in appropriately timed steps within the application.
The following bugs occurred in the AX library volume envelope:
- When a negative value was set in the delta value when the current volume was in the 0x8000 state, noise was introduced when volume attenuation began.
- Even when a positive value was set in the delta value when the current volume was in the 0x8000 state, the volume attenuated.
- When the volume was 0x8000 or more, the data became the opposite phase.
These problems have been corrected.
Update the NDEV firmware after applying this patch and before running applications.
The update program is run by starting a Bourne-again shell (bash) and entering "fwupdate922".
If the environment is customized or if things do not go smoothly using the method described above, go to the RVL_SDK/RVL/bin/tools directory, and run ODEM -r -l swupdate922.gcm. The update begins automatically about 10 seconds after the firmware starts. Once the update is complete, "SWUpdate Successful," appears on the screen. The NDEV firmware is updated to Firmware 9.2.2 and DEVKIT BOOT PROGRAM v1.07.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
When running OSShutdownSystem, noise was seen on the TV screen. This problem has been corrected.
Applications froze when specified conditions overlapped while running in a NO DISK state. This problem has been corrected.
Update the NDEV firmware after applying this patch and before running applications.
The update program is executed by starting the bash shell and entering "fwupdate921".
If the environment is customized or if things do not go smoothly using the method described above, change to the RVL_SDK/RVL/bin/tools directory and execute ODEM -r -l swupdate921.gcm. The update begins automatically about 10 seconds after the firmware starts. Once the update is complete, "SWUpdate Successful." appears on the screen. The NDEV firmware is updated to Firmware 9.2.1 and DEVKIT BOOT PROGRAM v1.07.
If any versions are already higher than this, the update will fail after displaying "Import: *** ...failed", but you can continue without any problems.
Slow insertion of the Nunchuk plug or Classic Controller plug occasionally caused an origin misalignment.
When WPADWriteGameData or the WPADReadGameData function was called again inside the callback passed as the function argument, the callback passed to the second function was not called. This problem has been corrected.
The error codes returned by WPADReadGameData have been changed.
- If the file information is broken:
(old) WPAD_ERR_INVALID -> (new) WPAD_ERR_BROKEN
- If a data from another game is stored:
(old) WPAD_ERR_TRANSFER -> (new) WPAD_ERR_NOPERM
Applications froze while running or recovering from the screen burn-in protection feature when there were a large number of system requests in the background.
This bug has been fixed in SDK Version 2.2 Patch 1.
The following bugs have been fixed:
- The Wii Remote was disconnected when the time was changed in the system settings.
- All connections were severed when two or more Wii Remotes were connected at the same time when three Wii Remotes were already connected.
- The internal memories of multiple Wii Remotes could not be accessed simultaneously.
- An error callback was not made when the Wii Remote was disconnected while the Wii console was accessing internal memory.
- Data was corrupted when the pointer full-mode was used from multiple Wii Remotes.
- When the WPADGetInfo function completed, the correct value was not applied to the info member until the next frame.
- Turning the Rumble feature on while playing back sound from the speaker broke up the sound.
In addition, the following problems in the device driver have been corrected due to changes:
- OS reset sometimes failed when using the WPAD library.
- Connection occasionally failed and prevented future communication when four Wii Remotes were connected at once.
- Connection or registration occasionally failed.
- Operational instability when the Wii Remote battery became depleted while establishing a connection.
- Abnormal speaker output when multiple Wii controller speakers were used simultaneously.
(This can now be avoided with the WPADCanSendStreamData function.)
The Wii Remote will now be disconnected as abnormal if it stays in the WPAD_ERR_BUSY state more than 10 seconds after a command is sent to that Wii Remote.
Previously, setting the Rumble feature to OFF, using the WPADEnableMotor function, in mid-rumble did not stop rumble. This has been changed to stop the current rumble.
If the WPAD library is not shut down when the OSShutdownSystem function is called or when a fatal error occurs, the WPADShutdown function is called internally.
The correspondence between the Wii Remote and the controller number are now deleted when the connection is severed using the WPADDisconnect function. (Previously, this information was retained.)
Previously, WLAN needed to be implemented in a way that avoided signal interference by using WPADSetDisableChannel. Now, interference is avoided automatically through the SDK. Therefore, the WPADSetDisableChannel function has been modified to do nothing internally.
WPADCanSendStreamData
Function that checks whether to call the WPADSendStreamData function.
WPADStartFastSyncDevice
WPADStartFastSimpleSync
Functions that change the Wii Remote transfer type to best-effort during registration speed up registration.
Because WPADDisconnect can now delete the number of controllers, this function has now been eliminated.
When an attachment was hot-swapped quickly, the KPAD transitioned to a state in which controller data was not received. This problem has been corrected.
A result code not defined in the header file was occasionally returned. This occurred when appropriate permissions (both read and write) were not set in the parent directory of the file where the NANDSafe series function was implemented. This bug is now fixed.
The banner file format has been established, and the following NAND function that handles banners has been added: The banner files must always be created directly in the home directory.NANDInitBanner()
NANDGetIconSpeed()
NANDSetIconSpeed()
To start an application, the appropriate firmware must be installed on the development system. If this check fails, a prompt is displayed, and startup is terminated. Please install the appropriate firmware at this time. All applications prior to SDK Version 2.2 will fail this check.
Even if the check fails, the application can be forcibly started by pressing START/PAUSE on the GameCube Controller.
The drive motor stop feature will no longer be supported in the near future. (Time of support is yet to be determined.)
Therefore, the DVD library drive state during the controller input standby status, DVD_STATE_NO_INPUT, does not appear in this SDK.
The automatic FATAL messages displayed in earlier SDKs were provisional. This SDK now uses the official messages.
This can be verified by running dvdfatal in the DVD sample demo.
Screen burn-in protection settings have been added to the system menu screen settings. For details, see "Screen Settings" under "NDEV System Menu" in the "Tools" section of the manual.
The firmware/system menu automatic update mentioned in Note 93 of the release notes has been temporarily removed. When this automatic update function was enabled, the .rpf and .rvm files that were created included software that functioned as an encryption device. This meant that exporting the .rpf and .rvm file outside of Japan required an export authorization from the Ministry of Economy, Trade, and Industry. This sometimes resulted in inconvenience during development, so this functionality has been temporarily removed. The .rpf and .rvm files created in conjunction with this SDK or with later SDKs are not subject to export regulation.
A Wii Sensor Bar sensitivity setting has been added to the system menu wireless controller settings. For details, see "Tool -> NDEV System Menu -> Wireless Controller Settings" in the manual.
The drive motor stop feature will no longer be supported in the near future. (Time of support is yet to be determined.)
Therefore, the support function for this feature (VIGetDVDStopMotorCount) has been temporarily removed.
The screen was not returning to its original state when the console was reset with screen burn-in protection running. This problem has been corrected.
When the system entered IDLE mode or performed a hardware reset while connected with an S-video, component, or D-terminal cable, noise was displayed on the TV screen.
This problem has been corrected.
Certain sound effects that played back without a problem on the TV speaker were not played back correctly on Wii Remote speakers.
This problem has been corrected.
Calling the AXQuit function during a debug session (on the CodeWarrior IDE with "Enable Serial I/O" set to on) caused the DSP library to output an error and stop the program.
This problem has been corrected.
Changed the specification of the NDEV system menu save-data operation. For details, see "Tool -> NDEV System Menu -> Save Data Operation" in the manual.
Added a drive protection setting to the system menu NDEV settings. For details, see "Tool -> NDEV System Menu -> NDEV Settings" in the manual.
The following functions have been added for improving the usability of pointing with the Wii Remote:
KPADEnableAimingMode()
KPADDisableAimingMode()
KPADGetProjectionPos()
The function supporting the Classic Controller, KPADGetWPADCLRingBuffer(), has been added. (This was missing from the previous version of the release notes).
The library has been modified to ignore unknown attachments and operate the Wii Remote in standalone mode.
The following functions that enable and disable the Wii Remote Pointer have been added. Disabling the Pointer reduces the power consumption of the Wii Remote.
void KPADEnableDPD(s32 chan);
void KPADDisableDPD(s32 chan);
The sample demo program kpadsample has been expanded. Added support for the Classic Controller, Pointer control, and other features.
The following AUX callback acquisition functions have been added to temporarily switch and return in such places as the Home Menu:
void AXGetAuxACallback(AXAuxCallback *callback, void **context);
void AXGetAuxBCallback(AXAuxCallback *callback, void **context);
void AXGetAuxCCallback(AXAuxCallback *callback, void **context);
WENC_FLAG_LAST has been deleted from the available values for the flag argument of WENCGetEncodeData().
The content of NANDReadDir[Async] Function Reference Manual has been found to be insufficient. When allocating a buffer, its size should be rounded up to a multiple of 32 bytes. Due to an issue with the cache, the memory surrounding the buffer area may be destroyed.
The write size was previously restricted to multiples of 32 bytes in the NANDWrite[Async] function, but this restriction has been removed.
A sample demo program showing the usage of NANDCheck() has been added.
The RESET callback registered in OSSetResetCallback() was called both when RESET was being pressed and when it was released. This has been changed so that the callback is called only when RESET is pressed.
When calling SCFlush*(), the update process may be executing at unexpected times, depending on the active libraries and interrupts. To ensure that your own system setting is applied, call SCCheckStatus() after changing settings, and verify that the return value is SC_STATUS_OK.
When calling SCFlush*() after doing this, the changes will be applied, even if the update process was not launched by you.
The callback function passed as an argument to SCFlushAsync() was not called if there was an existing background process or an error had occurred before the call. This problem has been corrected.
In addition, the specification has been changed so that, if a background process is running, SC_STATUS_BUSY is passed to the callback function argument (result).
SCFlush() hung when it was called after SCFlushAsync() while a background process was running.
SCFlush() has been changed to wait for the completion of the background process.
SCInit() is now called automatically at system startup.
SCCheckStatus(), which is used to verify completion of initialization, is also called automatically. Therefore, SC library initialization is no longer necessary. The initialization process already implemented in the library may be left as it is and will not cause any problems.
When an object output by makeo.exe was linked to .plf, the reference to the object was not appropriately resolved.
This problem has been corrected.
A tool for setting the disc country code, 'setcountrycode', has been added. When creating master data, it was necessary to set the country code using setcountrycode and to execute ndrun once. In the GDEV software, the country code was specified by editing the DDF file. Since this is not supported in the NDEV software, use setcountrycode.
Even when the setting was not correctly configured, setsmem2size finished normally. An error message is now displayed when the configuration fails.
When the controller receives no input for a set period of time, the DVD library pauses the drive motor and waits for controller input.
When this error is detected, the application should display an error message and prompt the user for controller input. See the message list for the appropriate message content.
The system language setting was not reflected in the automatic fatal message. This has been fixed.
This can be verified by running dvdfatal in the DVD sample demo.
WPAD_DEV_FUTURE and WPAD_DEV_NOT_SUPPORTED have been added to the device type.
The battery level threshold value has been changed and WPAD_BATTERY_LEVEL_CRITICAL, an indicator prompting the user to change the battery, has been added.
- When WPADStartSimpleSync() is called for the WPADSetSimpleSyncCallback( callback, a BUSY event is returned if it is in the middle of an operation.
- When WPADStartSyncDevice() is called for the WPADSetSyncDeviceCallback( callback, a BUSY event is returned if it is in the middle of an operation.
The origin can now be reset by pressing the A Button, B Button, + Button, and - Button simultaneously for three seconds on the Wii Remote.
The last Wii Remote ID connection is now stored for each controller port. The Wii Remote will be reassigned to the same port at the next connection.
The Rumble feature enable/disable setting and the speaker volume are no longer stored per controller. They are now stored as common values on the Wii console.
The following problems have been corrected:
- The controller froze in a busy state after the connection had been established.
- During the pairing process, the indicator continuously blinked and the pairing did not complete.
- The pairing process occasionally did not start, even when SYNCHRO was pressed.
- The work memory was not de-allocated at WPADShutdown().
- Repeated connection/disconnection of the Wii Remote caused a crash at ASSERT.
- During loading of internal memory, interrupts were blocked for over 100 us.
- Plugging in the external extension controller slowly caused a busy state, and eventually disconnection.
- WPADSetSimpleSyncCallback() was cleared after the simple pairing process was closed.
- The application froze if the Power Button was pressed for more than 1 second on a Wii Remote that had been paired, but not connected.
- When WPADRead() was called after the Wii controller was disconnected, the last controller data from the disconnected controller was returned.
- The data in the WPADSetAutoSamplingBuf() registered buffer was not cleared after a controller was disconnected.
- The controller was not disconnected, even if there was no input to the controller for the period specified in WPADAutoSleepTime.
- The default value of the Rumble enable/disable setting and the speaker volume could not be acquired correctly.
- The indicator continued to blink after a connection had been established.
- When pairing was performed during TV audio playback, noise was generated in the audio.
Pointer sensitivity setting
- WPADGetDpdSensitivity()
- WPADSetDpdSensitivity()
Indicates whether the Wii console accepts the connection to the Wii Remote.
- WPADGetAcceptConnection()
- WPADSetAcceptConnection()
Shutdown function with automatic reconnection of the Wii Remote.
- WPADReconnect()
Clears the controller port and the Wii Remote allocation table.
- WPADClearPortMapTable()
Acquires the number of simple-paired Wii Remotes.
- WPADGetTemporaryDevNum()
Acquires the pairing type of the Wii Remote.
- WPADGetSyncType()
The following functions have been added:
PADClamp2
PADClampCircle2
PADClampTrigger
Clamps with play (tolerance) near the axes, clamps with no play, and circular clamps have been added. The maximum clamp values have been changed for the existing clamp functions (PADClamp and PADClampCircle). Therefore, a wider analog stick and analog trigger input value range is now accepted.
Support functions for screen burn-in protection and stopping the drive motor have been added. These functions run automatically if the controller input state stays constant for more than a set period of time. These functions are enabled by default.
Starting with this patch, auto-update of the firmware/system menu is supported. Applications created after the implementation of this patch will update the firmware and the system menu automatically when they run. The NDEV firmware update program version 9.0.0 (2006/08/22 version) needs to be run first.
Wireless controller settings and save-data operations have been added to the system menu. For details, see "NDEV System Menu" in the "Tools" section of the manual.
When using WPAD in the program, always call WPADShutdown before the reset/shutdown function to close the WPAD process.
The OSExec function has been re-released.
The OSSwitchFiberEx() function, which is an expanded version of OSSwitchFiber(), has been added. It is capable of passing an argument to functions using the new stack.
The system now accesses Wii NAND console memory periodically. Although details are yet to be finalized, the frequency of system access to Wii NAND console memory has been determined and is implemented starting with this patch. Verify the impact this has on your applications. There will be a single file write operation per minute, and a single file open/close operation every five minutes. The FAT will also be updated during the close operation. In addition, a single file descriptor will always be consumed. When Wii NAND console memory is accessed by the application at the time that the system accesses that memory, the close operation will take longer than usual. Detect the close process with function returns or callbacks, instead of using the elapsed time from the start of the process.
NANDInit() will now be called automatically at system startup.
The bug that occurred when the full path name was exactly 32 bytes was fixed in SDK 2.1. (This was missing from the previous version of the release notes.)
Added the NANDCheck[Async] function. When creating a new file or directory in a directory other than /tmp, call this function first. This function determines whether the file system has enough resources for the creation of the new file or directory.
The following items have been added to the Function Reference Manual:
-NANDSafeClose[Async] may return NAND_RESULT_OPENFD.
-NANDCreate[Async] and NANDCreateDir[Async] may return NAND_RESULT_NOEXISTS.
Chinese (simplified), Chinese (traditional), and Korean have been added as the reserved values for the SCGetLanguage() function return values. However, the Revolution SDK does not support these languages at this time.
See the Function Reference Manual and the sample demo scdemo for details.
Previous descriptions of the debug outputs for several GD demos have been added or corrected.
Previous descriptions of the debug outputs for several GX demos have been added or corrected.
A WENC library has been added in SDK Version 2.1. WENC is a library used for Wii Remote speaker encoding.
The CX library supports the compression/decompression function. It is based on the compression/decompression library used for the Nintendo DS system. The CX library source code has been released. (This was missing from the previous version of the release notes.)
The ENC library has been added to the SDK Version 2.1. ENC is a library used for character code conversion.
The WPAD library in SDK Version 2.1 supports simple pairing.
Although the Wii Remote included with NDEV Version 2.1 (white) supports this feature, the Wii Remote included with NDEV Version 2.0 (black) does not.
The following sample functions have been added:
- WPADGetWorkMemorySize()
Gets the total work memory capacity obtained when the library is initialized.
- WPADGetRadioSensitivity()
Gets the radio sensitivity of the Wii Remote.
- WPADIsSpeakerEnabled()
- WPADControlSpeaker()
- WPADGetSpeakerVolume()
- WPADSetSpeakerVolume()
- WPADSendStreamData()
Control the Wii Remote speaker. The sample introduces a method to output sound from the Wii Remote encoded by the AX library.
WPADIsMotorEnabled()WPADEnableMotor()
- WPADSetAutoSleepTime()
Sets the time until the Wii Remote is automatically disconnected when there is no input from the Wii Remote.
- WPADGetSensorBarPosition()
Gets Sensor Bar placement information.
- WPADStartSimpleSync()
- WPADStopSimpleSync()
- WPADSetSimpleSyncCallback()
Controls simple pairing.
- WPADSaveConfig()
Saves the Rumble feature enable state and speaker volume settings to the Wii console.
- WPADClampTrigger()
- WPADClampAcc()
- WPADGetCLTriggerThreshold()
Clamps the analog input.
- WPADReadGameData()
- WPADWriteGameData()
Access the Wii Remote memory.
- WPADSetGameTitle()
- WPADSetGameTitleWChar()
- WPADGetGameTitle()
- WPADGetGameDataTimeStamp()
Access the game data saved in the Wii Remote memory.
The status was stuck on BUSY when an external extension controller was plugged in and unplugged quickly and repeatedly during communication.
This problem has been corrected.
Simple pairing is now possible with SDK Version 2.1. Although the number of normal-paired units was 16, this has now been changed to 10 normal-paired units and six simple-paired units.
In addition, Wii consoles that have had 11 or more paired Wii Remotes can only use up to 10 Wii Remotes when operating with the SDK Version 2.1 WPAD Library. We recommend deleting all previous pairing information, since operation in this state was not anticipated.
Added Full mode to the Wii Remote Pointer. In Full mode, you can get not only the object coordinates and size, but also the object range, pixel count, and radius.
- Released source code
The clamp functions supplied with the WPAD library have been disclosed.
- Changed the clamp algorithm:
Changed the maximum value that can be clamped to be in line with the analog stick hardware. Also added clamps with no play, circular clamps, and clamps with play near the axes.
In addition, added cubical clamps and spherical clamps to the motion sensor clamps.
There was a discrepancy between the timing of the update cycle for the library controller status and the actual cycle for receiving the data. This problem has been corrected by adjusting the library update cycle.
An exception was generated when WPADControlMotor() was called from within a callback function that was called by the WPAD library.
This problem has been corrected.
When memory was obtained with 32-byte alignment from the extended heap, excess free blocks were registered. Therefore, the performance was significantly affected when many small memory areas were obtained with 32-byte alignment. Improvements were made to reduce the drop in performance in these cases.
AX now supports output to the Wii Remote speaker. This allows sound to be played from the Wii Remote speaker in the same way that sound is normally played through other channels.
For example, when pan was to the left and the right channel processing had been cut with mixerCtrl while producing sound, the right channel de-pop parameter was not updated. As a result, minor noise occurred in the right channel when the voice stopped.
This problem has been corrected.
The following functions have been added. The OSAlarm structure can be assigned arguments.
void OSSetAlarmUserData( OSAlarm* alarm, void* data );
void *OSGetAlarmUserData( const OSAlarm* alarm );
Added support for the Classic Controller.
Added the acc_vertical member variable to the KPADStatus structure.
Added the KPADSetSensorHeight() function.
Bugs in the KPADSetFSStickClamp() function were fixed.
The clamp process is now applied to the acceleration value.
Applied the const modifier to arguments of some functions.
When building a layered heap with MEMFindParentHeap(), the parent heap was not correctly obtained. This problem has been corrected.
The NAND_RESULT_INIT_FAILED error code was removed. The NAND_RESULT_AUTHENTICATION error code was added.
The process time was reduced. The process to create the /tmp/sys directory has been moved to the new NANDSafeOpen[Async]() function. The number of error types that can be returned has been reduced.
Added NANDGetType[Async](). This function distinguishes between files and folders.
Added NANDSafeOpen/Close[Async](). This is a function group that guarantees that file updates are atomic.
Added NANDGetHomeDir(). This function gets the path of the home directory. (This is the directory prepared by the system to store the save data of the application.)
Due to a firmware problem, the debug message: "CAUTION! Unexpected error code [-116] was found." was occasionally output. The error code NAND_RESULT_UNKNOWN was also returned. This problem has been corrected.
The reset and shutdown functions were updated or created in line with the Wii console system specifications.
The following functions were added:
OSRebootSystem() - Reboots the entire system.
OSRestart() - Restarts the application.
OSReturnToMenu() - Returns to the system menu.
OSShutdownSystem() - Shuts down the system.
OSSetPowerCallback() - Registers the Power Button callback.
In addition, the existing reset function, OSResetSystem(), has been deprecated. The specifications for other functions have also changed. For more details, see the Function Reference Manual.
Added OSSleepTicks(). This function pauses the execution of the current thread, and returns to the executable state after a specified amount of time. In addition, the following macros have also been prepared to specify different units of time:
OSSleepSeconds()
OSSleepMilliseconds()
OSSleepMicroseconds()
OSSleepNanoseconds()
The following functions have been added to reference or change the Wii Remote setup items. However, these functions are reserved for another library to be provided in the future. For the time being, do not call these functions directly from the application.
- SCGetWpadMotorMode
- SCGetWpadSensorBarPosition
- SCGetWpadSpeakerVolume
- SCSetWpadMotorMode
- SCSetWpadSensorBarPosition
- SCSetWpadSpeakerVolume
Deleted the SCEmuSetAspectRatio and SCEmuSetLanguage emulation functions. The functions remain for backward compatibility. However, they now do nothing and always return FALSE.
Use the NDEV system menu to modify the aspect ratio or language settings.
The internal process for the SC library to access the Wii NAND console memory has changed. The items changed with a previous version are not inherited, and all setup items are initialized.
The commercial version of the Wii console and future development environments will not be able to reference or change setup items, even if an older version of the SC library is used. Therefore, do not use older versions of the SC library.
When a device was opened with HIO2Open, the load on the host (PC) CPU became extremely heavy. This problem has been corrected. Therefore, the transfer speed during continuous transfers drops slightly (from several percent up to 10%).
The contents of the demo or debug execution method described in Chapter 3, "Running a Simple Demo," in the Revolution Build System Guide was not compatible with the Revolution shell (RVL_NDEV.bat). The section was revised to cover use of the Revolution shell.
The default setting for the trap filter was enabled. The default has now been changed to disabled.
To disable the trap filter feature in SDK Version 2.0, the feature had to first be enabled before it could be disabled.
This problem has been corrected.
The 50 Hz progressive display is no longer supported. To use progressive display, use 60 Hz. For details, see the VIConfigure manual.
The elf and map files used to build sample demos were included in SDK Version 1.0. In SDK Version 2.0, elf and map files excluding the following have been deleted:
/RVL/bin/demos/gxdemo/smp-onetri.elf /RVL/bin/demos/thpdemo/THPSimple.elfUse these elf files to check NDEV operations.
This version of the SDK runs on NDEV Version 2.0 only. NDEV Version 1.x is not supported.
The build target has been changed to RVL.
Although the SDK still includes the RVL0 target inherited from SDK Version 1.0, the use of RVL0 is not recommended. Be sure to use RVL.
The Revolution audio library can use Aux A through Aux C in stereo/surround mode. It can also use Aux A and Aux B in DPL2 mode. However, an error was returned for Aux B (but not for Aux C) when calling MIX library functions (such as MIXSetAuxA() and others) to control controllers Aux A through Aux C in DPL2 mode.
This problem has been corrected.
The KPAD library kpad[D].a, supported by UI Tool Version 3, was renamed kpadEmu[D].a. In addition, the module name of the corresponding demo program was changed from kpaddemo to kpadEmudemo.
kpad[D].a and kpaddemo, found in the SDK Version 2.0, are supported in UI Tool Version 4.
A Wii Remote equivalent to the product version is now available. This allows development under a more realistic environment. Changes are as follows:
The following are included in NDEV Version 2.0:
The following are included in the SDK Version 2.0:
This section describes simple setup procedures.
For details, see RVL-ControllerHardwareOverview.pdf and RVL-ControllerSetup.pdf.
Check whether the included Wii Remotes are wired or wireless versions. Set the BT Mode switch on the rear panel of the NDEV accordingly. Set the switch to the right if they are wired or to the left if they are wireless. In addition, be sure to connect them to the connectors on the left side of the NDEV if they are wired. It makes no difference which of the four connectors are used. Note: Because a coaxial cable is used for wired remotes, Bluetooth technology is used for both types.
The Sensor Bar connector is located above the AV connector on the rear panel of the NDEV. Connect the Sensor Bar to this connector. We recommend that you place the Sensor Bar directly above or below the television screen.
The included Wii Remotes have not been paired with the NDEV. To use the Wii Remotes, you must pair them, whether they are wired or wireless.
For a Wii Remote and Wii console to use wireless communication, they must be paired first so that communication does not occur with other pieces of hardware that are within wireless range. The Wii console can start pairing in the middle of an application. To pair Wii Remotes, press SYNCHRO on the front panel of the Wii console. When SYNCHRO is pressed, the Wii console searches for a Wii Remote waiting to be paired. The duration of the search varies as given below depending on the number of Wii Remotes currently attempting communication.
| 0 or 1 | : | 5 seconds |
| 2 | : | 10 seconds |
| 3 | : | 20 seconds |
In addition, the search ends when the number of communicating Wii Remotes and the number of discovered Wii Remotes reaches 4.
While the Wii console is searching, be sure to press SYNCHRO inside the battery cover of the Wii Remote. The Wii Remote enters normal pairing wait status when SYNCHRO is pressed. The Player LED of the Wii Remote flashes during pairing. After a short time, pairing will finish and only one of the four Player LEDs will be lit.
Normal pairing with the fourth Wii Remote takes a relatively long time. In addition, sometimes pairing with another Wii Remote is suddenly lost. This is due to a problem with the driver. The problem should be resolved in the next release. We recommend using three or fewer remotes until the next release.
Nunchuks support hot connections. However, in rare cases, Wii Remotes suddenly become unresponsive when a Nunchuk is hot-swapped. This problem should be resolved in the next release. We recommend connecting and disconnecting Nunchuks while the Wii Remotes are not paired.
A Wii Remote will disconnect when the battery is depleted or the Power Button is held down for one second. Pairing can be reestablished by pressing any of the buttons on the Wii Remote. However, reconnection takes about one minute if attempted immediately after disconnection. This problem will be resolved in the future. Until then, wait a few seconds after disconnecting before reconnecting.
The speaker feature cannot be used with the current release. Plans call for this to be included in the next release.
This demo works only with Wii Remotes. Do not use Nunchuks.
The module name of the demo program wpadEmu[D].a in the UI Version 3 library has been changed from "wpaddemo" to "wpadEmudemo."
The members in the WPADFSStatus structure that are also included in the WPADStatus structure now have the same offset from the start of the structure as they do in WPADStatus. Structures that include the same members as WPADStatus, including the new WPADCLStatus, will have the same offset, as well.
A system menu was added to the boot program.
Holding down the Z Button on a GameCube controller while running any application opens the system menu. Various console settings can be selected from the system menu. For details, see "Tool -> NDEV System Menu" in the manual.
If RVL_NDEV.bat is run after updating the NDEV disk emulator, the development environment is reset. However, this processing could not be performed correctly when using the old RVL_NDEV.bat.
This problem has been corrected. Edit these batch files in the future.
A problem was corrected with the hardware sampling rate converter included in the AI library.
In addition, conversion from 32 kHz to 48 kHz performed by Broadway inside the AI library has been temporarily deleted.
A problem with the memory interface of the audio subsystem was corrected.
In addition, code for working around the problem that was provisionally implemented in the tool dls1wt has been deleted. The supplied wave tables have also changed. The following workaround is no longer needed:
Significant changes have been made to the AX effect library (AXFX). Although the new effect library inherits all of the old functions, the following changes have been made:
mix parameter, the sources themselves are omitted.tempDisableFX parameter has been eliminated. Note: Although this parameter must not be used under normal circumstances, it was used in the following demos: axart3ddemo, axfilter, dpl2reverb, and seqdemo.preDelay has been eliminated. (Memory is now allocated in conjunction with preDelay.)mix parameter, the sources themselves are omitted. (This is due to the fact that, except for Aux buses, sound sources are already mixed.)crosstalk can now be used just as with past versions.tempDisableFX parameter has been eliminated. Note: Although this parameter must not be used under normal circumstances, it was used in the following demos: axart3ddemo, axfilter, dpl2reverb, and seqdemo.preDelay has been eliminated. (Memory is now allocated in conjunction with preDelay.)mix parameter, the sources themselves are omitted. (This is due to the fact that, except for Aux buses, sound sources are already mixed.)tempDisableFX parameter has been eliminated. Note: Although this parameter must not be used under normal circumstances, it was used in the following demos: axart3ddemo, axfilter, dpl2reverb, and seqdemo.preDelay has been eliminated. (Memory is now allocated in conjunction with preDelay.)AXFXChorusSettings. (This is to standardize similar specifications with other effecters.)baseDelay than previously possible can now be used. baseDelay.baseDelay and variation values. The following functions were also added to the new effect library:
Note: Optimization has not yet been applied to the new effect library. As a result, it requires about twice the CPU performance, compared to conventional effects.
Plans call for an optimized version to be included in future releases.
The synchronous function DVDCheckDisk was changed to an asynchronous function in line with changes to the device driver. The previous version of the DVDCheckDisk function was deleted. Be sure to use DVDCheckDiskAsync when getting disc ID information.
The DVD library now provides a feature that allows error messages to be displayed when FATAL errors occur. This feature is now enabled by default.
To use your own FATAL messages, call DVDSetAutoFatalMessaging(FALSE) at the start of your application.
The SC library references and changes console settings, such as the language and progressive scan mode settings. Only referencing is possible for the following settings.
At the present time, specifications for console settings are not firmly established. Be aware that all settings may be initialized in a future version.
PAL development is now possible.
Launch the NDEV system menu, and set Video Mode to PAL. After setting Video Mode to PAL, the output below will appear on the console when an application is run. This indicates that the system has successfully switched to PAL mode.
--- NDEV BOOT PROGRAM v1.0 (DEVELOPMENT MODE: PAL) ---
The following demo performs a simple PAL display:
=====================================================
RVL_SDK/bin/demos/videmo/viewer_PAL_INT[D].elf
=====================================================
For details on the NDEV system menu, see "NDEV System Menu" in "Tools" in the Revolution Function Reference Manual.
The following video cables can be used during PAL development:
- Stereo AV cables (same for NTSC, PAL, and MPAL)
- Component cables
- D-Terminal cables (not sold in Europe)
- RGB cables
=========================================================== Note: D-Terminal cables or component cables are required when using progressive scan mode. The television must also support progressive scan mode. Note: S-Video cables cannot be used.
Progressive scan mode is now possible for PAL, EURGB60, and MPAL television systems. See the demo /build/demos/videmo/src/moving.progressive.c.
A function for checking the timing of the vertical sync interrupt has been added. This function can be used for testing when switching from interlaced to progressive scan.
See the demo /build/demos/videmo/src/smp-onetri_Progressive.c.
A problem was found with OSExec, so it has temporarily been removed from this release. Plans call for future support in a future release.
A function for emulating the memory size of MEM2 was added.
This can be reflected in the application's MEM2 Arena by running setsmem2size before loading an application. For details, see "setsmem2size" under "Tools" in the Function Reference Manual.
Although the RVL target was added to the SDK Version 2.0, a separate Apploader must be used for the RVL and RVL0 targets. If the Apploader and application target differ, the application terminates with an error inside OSInit. Be sure to use the correct Apploader.
The Apploader can easily be changed by editing the DDF file.
[Input]
LDRFileName="$(REVOLUTION_SDK_ROOT)\RVL\boot\apploader.img"
[Input]
LDRFileName="$(REVOLUTION_SDK_ROOT)\RVL0\boot\apploader.img"
The default values for the constants OS_CORE_CLOCK and OS_BUS_CLOCK located in /include/revolution/os.h were changed.
In the past, these constants used the same default values as for GameCube.
Note: Operations may vary with Windows tools independently created by developers or when the pre-processor macro WIN32 has been defined and this header included. Therefore, be sure to re-build these applications.
A hardware bug prevented rendering from being performed properly. This occurred when, out of all the TEV operations that can be specified using GXSetTevColorOp and GXSetTevAlphaOp, GX_TEV_COMP_GR16_GT or GX_TEV_COMP_BGR24_GT are specified for the op argument.
This problem was corrected in NDEV Version 2.0.
If the FIFO read pointer is not idle when GXGetCPUFifo() or GXGetGPFifo() are running in the debug version of the GX library, execution stops completely with an ASSERT message if the GX Warning Level is set to GX_WARN_SEVERE or higher. However, since there is no problem with actual operations, specifications have been changed so that only a warning message is displayed when the GX Warning Level is set to GX_WARN_MEDIUM or higher.
In addition, although it is possible that the same sort of ASSERT stop may occur when running GXBeginDisplayList(), this change was made because the problem was simply due to problems with the library.
The NAND library is used to access the hierarchical file system configured in Wii NAND console memory.
Added an "Introduction" page and a description of callback functions to the HIO2 function reference page.
Unlike the GameCube, there is no ARAM built into the Revolution platform. The header files that contained code for ARAM-related functions (/include/revolution/ar.h and /include/revolution/arq.h) have therefore been deleted.
The ARC library is a utility for accessing multiple files located on disk as a unit. This library is made up of the archive file creation tool (darch) used on the PC and libraries for accessing archive files (arc.a and arcD.a) on the Revolution platform. The ARC library source code has been released.
The LFO curve was not smooth due to an error in the update formula for each LFO frame. This problem has been corrected.
The update amount for each LFO frame did not support the frame length (3 ms) of the new AX library. As a result, pitch/volume modulation was faster than set because the frame length (5 ms) of the old AX library was still supported. This problem has been corrected.
HIO2ReadAsync function calls in the HIO2 library on the host side did not return on rare occasions.
In addition, performance has been improved when calling HIO2ReadAsync and HIO2WriteAsync in succession.
During periods where origin information is being reset for the GameCube Controller, the err member of PADStatus (which can be obtained from the PADRead function) is set to PAD_ERR_NO_CONTROLLER.
Specifications have changed under the debug version of the GX library so that any attempt to place a GX FIFO in the MEM2 region (an area where a GX FIFO normally must not be placed) using the GXSetGPFifo() function is stopped by an ASSERT check.
Previously, applications built using the SDK Version 1.0 could run only in an environment with 128 MB of external main memory for development tools. This has been corrected so that they can run in an environment with 64 MB of external main memory.
The speed at which the MEM1/MEM2 arena is cleared inside the OSInit() function has been increased.
Memory beyond address 0x8070 0000 is now reserved for use by the system when an application is launched. Although this restriction may be eased in the future, for the time being, any attempt to run an application located in memory beyond 0x8070 0000 sets off an error in the Apploader.
A problem with a link on the top page of the Function Reference Manual has been corrected. Clicking "Standard controller high-level library (KPAD)" > "Function list" in the frame on the left side caused a list of WPAD functions to be displayed.
The description of hio2 sample demos was changed so that hio2demo PC-side programs are started from bash, called from RVL_NDEV.bat.
The rate of communication of the HIO2 library and the OSReport function was slower than in the original specifications. This problem has been corrected.
HIO2_STATUS_RX was not set, even when sending mail was disabled by the HIO2ReadStatus function (RVL side). This problem has been corrected.
You must rebuild in each separate environment to debug pre-built sample demos included in the Revolution SDK.
Be sure that all NDEV DIP switches listed in the Revolution Development Environment Quick Start Guide are turned on. The description of this precaution was changed.
The MEM library source code has been released.
Previously, the upper limit on the alignment specification for memory blocks using MEMAllocFromExpHeapEx() or MEMAllocFromFrmHeapEx() was 128 bytes. This restriction has been eliminated.
It was not possible to free unused memory normally from the heap using the MEMAdjustExpHeap() function when there was only one free region.
An incorrect macro constant was used for the value of 1 g output by the acceleration sensor on the Nunchuk. There was thus a risk that acceleration sensor values calculated by the KPAD library might be in error. This problem has been corrected.
Revolution SDK Version 1.0 is the first SDK to support Revolution development.
Nintendo Technical Support Center
CONFIDENTIAL