HIO2ReadAsync function calls on the host side do not return on rare occasions.OSInit().OSReport functionHIO2ReadStatus (RVL side)The WPAD Library in SDK2.1 supports simple pairing.
Be aware that the Wii Remote included with NDEV2.1 (white) supports this feature, but the Wii Remote included with NDEV2.0 (black) does not support this feature.
The following sample APIs were added.
- WPADGetWorkMemorySize()
Gets the total work memory capacity secured when the library is initialized.
- WPADGetRadioSensitivity()
Gets the radio sensitivity of the Wii Remote.
- WPADIsSpeakerEnabled()
- WPADControlSpeaker()
- WPADGetSpeakerVolume()
- WPADSetSpeakerVolume()
- WPADSendStreamData()
Allows use of the Wii Remote speaker features. The sample introduces a method to output sound encoded with the AX Library from the Wii Remote.
WPADIsMotorEnabled()WPADEnableMotor()
- WPADSetAutoSleepTime()
Sets the time until the Wii Remote is automatically disconnected when there is no input from the Wii Remote.
- WPADGetSensorBarPosition()
Gets the sensor bar setup position.
- WPADStartSimpleSync()
- WPADStopSimpleSync()
- WPADSetSimpleSyncCallback()
Allows the simple registration feature to be used.
- WPADSaveConfig()
Saves the disabled/enabled status of the rumble feature and speaker volume on the Wii console.
- WPADClampTrigger()
- WPADClampAcc()
- WPADGetCLTriggerThreshold()
Clamps analog input.
- WPADReadGameData()
- WPADWriteGameData()
Functions to access the Wii Remote internal memory.
- WPADSetGameTitle()
- WPADSetGameTitleWChar()
- WPADGetGameTitle()
- WPADGetGameDataTimeStamp()
Functions to access the game data saved on the Wii Remote internal memory.
A bug caused the status to be locked on BUSY when hot plug in/removal of the External Extension Controller was done quickly and repeatedly during communication.
This problem has been corrected.
Simple pairing is now possible from SDK2.1. Accordingly, the number of normal paired units was 16, but this has changed to 10 normal paired units and 6 simple paired units.
In addition, be aware that Wii consoles that have had 11 or more paired Wii Remotes can only use up to 10 Wii Remotes when operating on the SDK 2.1 WPAD Library. We recommend deleting all pairing information once because 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.
- Disclosing of source code
The clamp functions supplied with the WPAD library have been disclosed.
- Changed clamp algorithm
Changed the maximum value that can be clamped to be in line with the analog stick hardware. In addition, added clamps with no play and circular clamps along with clamps with play near the axes.
Furthermore, added cubical clamps and spherical clamps to the motion sensor clamps.
A problem existed with a discrepancy between the timing of the update cycle for the library controller status and the cycle for receiving the actual data. This problem was fixed by adjusting the library update cycle.
A problem caused an exception to be 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 secured 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 secured in 32-byte alignment. Made improvements to reduce the drop in performance in these cases.
Made AX support output of the Wii Remote (Wii standard controller) speaker, referred to as the controller speaker. This allows sound to be played from the controller speaker in the same way that sound is normally played.
For example, when pan is to the left and the right channel processing has been cut with mixerCtrl when producing sound, the right channel de-pop parameter would not be updated, and as a result, minor noise would occur in the right channel when the voice stopped.
This problem has been corrected.
The following APIs have been added; the OSAlarm structure can be assigned arguments.
void OSSetAlarmUserData( OSAlarm* alarm, void* data );
void *OSGetAlarmUserData( const OSAlarm* alarm );
Made to support the Classic Controller.
Added the acc_vertical member variable to the KPADStatus structure.
The KPADSetSensorHeight() function was newly constructed.
Bugs were fixed for the KPADSetFSStickClamp() function.
The clamp process is now applied to the acceleration value.
Applied the const modifier to arguments of some APIs.
There was a problem with the MEMFindParentHeap() function. When building a layered heap, the parent heap could not be correctly obtained. This problem was corrected.
The NAND_RESULT_INIT_FAILED error code was discarded. The NAND_RESULT_AUTHENTICATION error code was added.
The process time was reduced. The process to create the /tmp/sys directory has been migrated to the newly created NANDSafeOpen[Async](). The error types that can be returned have been reduced.
Added NANDGetType[Async](). This function can discriminate between files and folders.
Added NANDSafeOpen/Close[Async](). API group to guarantee the atomicity of file updates.
Added NANDGetHomeDir(). API to get the path of the home directory (directory prepared by the system to store the save data of the application program).
Due to an error in the firmware, during Read/Write, there were cases when the debug message "CAUTION! Unexpected error code [-116] was found." was output to the console and NAND_RESULT_UNKNOWN was returned as the result code. This problem has been corrected.
The reset/shutdown APIs were updated and newly created in line with the Wii console system specifications.
The following functions were added.
OSRebootSystem() - Reboot the entire system
OSRestart() - Restart the application
OSReturnToMenu() - Return to the system menu
OSShutdownSystem() - Shut down the system
OSSetPowerCallback() - Register the power button callback
Along with these changes, the existing reset function, OSResetSystem(), is no longer functioning. In addition, some specifications for some other functions have also changed. For more details, refer to the function reference.
Added OSSleepTicks() to pause execution of the current thread and then return to an executable state after a specified amount of time passes. 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 function are reserved for another library to be provided in future. Do not call this directly from the application at present.
- SCGetWpadMotorMode
- SCGetWpadSensorBarPosition
- SCGetWpadSpeakerVolume
- SCSetWpadMotorMode
- SCSetWpadSensorBarPosition
- SCSetWpadSpeakerVolume
Deleted the SCEmuSetAspectRatio and SCEmuSetLanguage functions that were provided as emulate functions. The functions remain for backward-compatibility purposes, but they do nothing and 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 console internal flash 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. Do not use older versions of the SC library.
When a device was opened with HIO2Open, there was a problem with the load on the Host (PC) CPU becoming extremely large. This problem was fixed. Because of this revision, the transfer speed during continuous transfers drops slightly (several to 10%).
The contents of the demo or debug execution method described in "3. Running a Simple Demo"in Revolution Build System Guide was not compatible for the case when the Revolution shell (RVL_NDEV.bat) was used. Revised to be in line with using the Revolution shell.
Until now, the default setting for the trap filter was enabled. The setting has been changed, and now the default is disabled.
To disable the trap file feature with SDK 2.0, the feature had to first be enabled then it could be disabled.
This problem has been corrected this time.
The 50 Hz progressive display is no longer supported. To use progressive display, use 60 Hz. For details, see the VIConfigure manual.
elf and map files used to build sample demos were included in SDK 1.0. Under SDK 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 is for execution on NDEV Ver. 2.0 only. NDEV Ver. 1.X is not supported.
The build target has been changed to RVL.
Although the SDK includes RVL0 targets inherited due to the transition from SDK 1.0, the use of RVL0 is not recommended. Please be sure to use RVL.
The Revolution audio library can use Aux A through Aux C in stereo/surround mode, and Aux A and Aux B in DPL2 mode. However, there was a problem where an error was returned for Aux B, but no error was returned for Aux C, when calling MIX library functions (such as MIXSetAuxA() and others) for controlling each controller 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 SDK 2.0 are supported by UI Tool Version 4.
A Wii Remote equivalent to the product version is now available. This should allow development under a more realistic environment. Changes are as follows:
The following are included in NDEV V2.0.
The following are included in SDK V2.0.
This section describes simple setup procedures.
For details, see RVL-ControllerHardwareOverview.jp.pdf and RVL-ControllerSetup.jp.pdf.
Check whether the included Wii Remotes are wired or wireless versions and set the BT Mode switch on the rear panel of the NDEV accordingly. Set the switch to the right if they are wired, and 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 either on top of or below the television.
The included Wii Remotes have not been registered with the NDEV. To use the remotes, it is necessary to register them whether they are wired or wireless.
For a Wii Remote and Wii Console to communicate wirelessly, they must be registered ahead of time so communications do not arise with other pieces of hardware within the wireless range. The Wii Console can start registration in the middle of program execution. To register remotes, press the SYNCHRO button on the front panel of the Wii Console. When the SYNCHRO button is pressed, the Wii Console searches for a Wii Remote waiting to be registered. 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 four.
While the Wii Console is searching, be sure to press the SYNCHRO button inside the battery cover of the Wii Remote. The Wii Remote will enter registration wait status when the SYNCHRO button is pressed. The Player Indicator of the Wii Remote will flash during registration. After a short time, registration will finish and only one of the four Player Indicators will light.
Connecting with the fourth Wii Remote takes a relatively long time. In addition, sometimes connection with another Wii Remote will be 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.
Nunchaku Controllers support hot connections. However, in rare cases, Wii Remotes will suddenly become unresponsive when a Nunchuk Controller is hot swapped. This problem should be resolved in the next release. We recommend connecting and disconnecting Nunchaku Controllers while the Wii Remotes are disconnected.
A Wii Remote will disconnect when its battery runs out or its power button is held down for one second. Re-connection can be established by pressing any of the buttons on the Wii Remote. However, reconnection takes about one minute if attempted immediately after disconnection. Although this problem will be resolved in the future, be sure to wait a few seconds after disconnection until then.
The speaker feature cannot be used under the current release. Plans call for this to be included in the next release.
This demo works only with Wii Remotes. Do not use Nunchuk Controllers.
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 which are also included in the WPADStatus structure have been arranged to have the same offset from the start of the structure as they do inside WPADStatus. Structures that include the same members as WPADStatus, including the newly added WPADCLStatus, will be made to have the same offset in the future as well.
A system menu was added to the boot program.
Holding down the Z trigger on a GameCube controller during the execution of any program opens the System Menu. Various console settings can be made from the System Menu. For details, see the manual "Tool -> NDEV System Menu."
If RVL_NDEV.bat is executed after updating the NDEV disk emulator, the development environment will be reset. However, this processing cannot be performed correctly when using the old RVL_NDEV.bat.
This problem has been corrected by current changes. Edit these batch files in the future.
A problem was corrected with the hardware sampling rate converter included in the AI library.
Along with this change, conversion from 32KHz to 48KHz performed by Broadway inside the AI library has been provisionally deleted.
A problem was corrected with the memory interface of the audio sub-system.
Along with this change, code for working around the problem that was provisionally implemented in the tool dls1wt has been deleted. Supplied wave tables have also changed. The following workaround is also no longer needed.
Significant changes have been made to the AX effect library (AXFX). Although the new effect library inherits all of the old APIs, the following changes have been applied.
The following functions were also added to the new effect library.
Note: Optimization is not yet been applied to the new effect library. As a result, it requires about twice the CPU performance as compared to conventional effects.
As with the manuals, 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 DVDCheckDisk Async when getting disc ID information.
The DVD library now provides a feature that allows error messages to be displayed when FATAL errors occur. Revised so that this feature (which was disabled by default under the Dolphin SDK) is enabled by default.
To use your own FATAL messages, be sure to 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 an upcoming version upgrade.
PAL development is now possible.
Launch the NDEV system menu and set the "Video Mode" setting to "PAL." After setting PAL, the following display will be made to console output when a program is executed. This indicates 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" included under "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
===========================================================
* D terminal cables or component cables are required when using progressive scan mode. The television must also support progressive scan mode. * S terminal cables cannot be used.
Progressive scan mode is now possible for PAL, EURGB60, and MPAL television systems. For method of use, see /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.
For method of use, see /build/demos/videmo/src/moving.progressive.c.
A problem was found with OSExec, so it has temporarily been removed from this release. Plans call for future support in the next patch or 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 under SDK 2.0, a separate Apploader must be used for RVL and RVL0 targets. If the Apploader and application target differ, the application will terminate on 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 revised.
In the past, these constants used the same default values as for the 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. As such, be sure to re-build these applications just in case.
A hardware bug was found where rendering was not performed properly 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 argument op.
This problem was corrected under NDEV Ver. 2.0.
If the FIFO read pointer is idle when GXGetCPUFifo() or GXGetGPFifo() are executing 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 were 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 there is a possibility that the same sort of ASSERT stop may occur when executing GXBeginDisplayList(), this revision 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 NAND flash memory built into the Revolution.
Added an "Introduction" page and a description of callback functions to the HIO2 function reference .
Unlike the GameCube, there is no ARAM built into the Revolution. The header files that contained code for ARAM-related APIs (/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. The ARC library source code has been released.
There was a problem where 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 (3ms) of the new AX library, so there was a problem where pitch/volume modulation was faster than set due to the fact the frame length (5ms) of the old AX library was still supported. This problem has been corrected.
HIO2ReadAsync function calls on the host side do not return on rare occasions.A problem was corrected where the HIO2ReadAsync function calls in the HIO2 library on the host side would not return on rare occasions.
Also, performance has been improved when calling HIO2ReadAsync and HIO2WriteAsync in succession.
During periods where origin information is being reset for the Nintendo GameCube Controller, the err member of PADStatus (which can be obtained from the PADRead function) holds the value PAD_ERR_NO_CONTROLLER.
Specifications have changed under the debug version GX library so that any attempt to place a GX FIFO in the MEM2 region (an area where a GX Fifo usually must not be placed) using the GXSetGPFifo() function is stopped by an ASSERT check.
Previously, programs built using SDK 1.0 were only able to run in an environment with 128MB of external main memory for development tools. This has been corrected so that they can run in an environment with 64MB of external main memory.
OSInit().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 execute a program located in memory beyond 0x8070 0000 will terminate in an error inside the Apploader.
A problem with a link on the top page of the function reference has been corrected. Clicking "Standard controller high-level library (KPAD)" > "Function list" on the frame on the left side was causing a list of WPAD functions to be displayed.
The description of hio2 sample demos was revised so that hio2demo PC-side programs are started from bash, called from RVL_NDEV.bat.
OSReport functionA problem was corrected where the rate of communication of the HIO2 library and the OSReport function was slower than in the original specifications.
HIO2ReadStatus (RVL side)There was a problem where HIO2_STATUS_RX was not set even when sending mail was disabled by the HIO2ReadStatus function (RVL side). This problem was corrected.
A note was added that it is necessary to rebuild under each separate environment in order to debug prebuilt sample demos included in the Revolution SDK.
Be sure that all NDEV dip switches listed in the Revolution Development Environment Quick Start Guide are set to ON. The description of this precaution was revised.
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.
A problem was corrected where it was impossible 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 1G output by the acceleration sensor on the nunchaku controller. This meant there was a risk that acceleration sensor values calculated by the KPAD library were in error. This problem has been corrected.
Revolution SDK 1.0 is the first SDK to support Revolution development.
Nintendo Technical Support Center
RVL-06-0018-001-C
CONFIDENTIAL