0% found this document useful (0 votes)
23 views

Wii Programming Guidelines, 2nd Edition

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views

Wii Programming Guidelines, 2nd Edition

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 108

Wii Programming Guidelines

Version: 1.14

2009/07/01

The content of this document is highly confidential


and should be handled accordingly.

 2006-2009 Nintendo RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Confidential
These coded instructions, statements, and computer programs contain proprietary information of Nintendo
and/or its licensed developers and are protected by national and international copyright laws. They may not
be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written
consent of Nintendo.

RVL-06-0132-001-V 2  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Table of Contents

1 Overview .....................................................................................................................................................13
1.1 Level of Importance ............................................................................................................................13
1.2 Wii Programming Guidelines Note......................................................................................................13
1.3 Do Not Use Wii Development and SDK Files on Other Platforms......................................................13
1.4 Items Warranting Special Mention ......................................................................................................13

2 All ................................................................................................................................................................14
2.1 Prohibition of Dependency on Device Specifications [Required]........................................................14
2.2 Memory and Register Initialization [Required] ....................................................................................14
2.3 Startup Time Restriction [Recommended] ..........................................................................................14
2.4 Startup Disc Error Handling [Required] [Deleted] ...............................................................................14
2.5 Compliance with Legal Rights Display [Required] ..............................................................................14
2.6 Using the Latest Packages [Recommended]......................................................................................15
2.7 Removal of Debug Information [Required] .........................................................................................15
2.8 Prohibition of Device Access Without the Use of a Library [Required] ...............................................15
2.9 Prohibition of Development Support Libraries in the Release Version [Required] .............................15
2.10 Guaranteeing Extended Operation of the Application [Required].......................................................15
2.11 Integrating Banners, Comments, and Icons [Information] [Deleted]...................................................15
2.12 Application of Wii System Settings [Required]....................................................................................16
2.13 Prohibition of Health and Safety Warning Display by Applications [Required] ...................................16
2.14 Display at Application Startup [Information] [Deleted].........................................................................16
2.15 [North American Version Only] Displaying the ESRB Online Rating Notice for Applications Using
Network Features [Required] ..............................................................................................................16
2.16 Program Distribution Method [Required] ............................................................................................17
2.17 Parental Controls [Information] ...........................................................................................................17
2.18 [North American, European, Australian, and Korean Versions] License Display of Licensee Titles
[Required]............................................................................................................................................17
2.19 Using Firmware of Specified Versions [Required] ..............................................................................18
2.20 Time Restriction When Screen Is in Static State [Required]...............................................................18
2.21 Terminology and Image Specifications ...............................................................................................19
2.21.1 Standardized Terminology [Required] .........................................................................................19
2.21.2 Restrictions on Images Used Instead of Names .........................................................................19
2.22 Using the Time from the Wii System Clock.........................................................................................20
2.22.1 Procedure When Time of Wii System Clock Differs Greatly from Real Time [Required] ............20
2.22.2 Prompting a User to Check the Current Time [Recommended]..................................................20

3 Wii Game Discs and Drive ..........................................................................................................................21

 2006-2009 Nintendo 3 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

3.1 Prohibition on Drive Specification Dependency [Required]................................................................ 21


3.2 Wii Game Disc Error Handling [Required].......................................................................................... 21
3.3 Prohibition of Sustained Continuous Non-Sequential Access [Required] .......................................... 21
3.4 [Multiple-Disc Games Only] Independent Startup of All Discs [Required] .......................................... 22
3.5 Normal Operation After the Disc Drive Motor Is Shut Off from a Period of Inactivity [Required]
[Deleted] ............................................................................................................................................. 22
3.6 Display for Disc Drive Motor Shut Off from a Period of Inactivity [Recommended] [Deleted]............ 22
3.7 Data Layout for Double-Layer Disc .................................................................................................... 22
3.7.1 Avoid Disc Access Spanning Layers [Required] ......................................................................... 22
3.7.2 Avoid Reading Data to Alternate Layers [Recommended] ......................................................... 22
3.8 Startup Disc Error Handling [Required] .............................................................................................. 23
3.9 Resetting and Shutting Down in Response to Fatal Errors [Required] .............................................. 23
3.10 Resetting and Shutting Down in Response to Disc Errors Other than Fatal Errors [Required] ......... 23
3.11 Message Display in Response to Fatal Errors [Required] ................................................................. 23
3.12 Prohibiting Disc Access Using the CNT Library in the Release Version [Required] .......................... 23

4 Sound ......................................................................................................................................................... 24
4.1 Applying Wii System Sound Settings [Required] ............................................................................... 24
4.2 Sound Setting on the Wii Console [Required] [Deleted] .................................................................... 24
4.3 Sound Output for Applications Supporting Multiple Sound Settings [Required] [Deleted] ................. 24
4.4 Do Not Modify the Audio Playback Frequency Within an Application [Required]............................... 24
4.5 Considerations for the User’s Sound Output Environment [Information] ........................................... 24

5 Photosensitivity........................................................................................................................................... 25
5.1 About Photosensitivity and These Guidelines [Information]............................................................... 25
5.2 Restrictions on Flashing Images and Lights [Recommended] ........................................................... 26
5.3 Restrictions on Flashing Saturated Red Colors [Recommended]...................................................... 27
5.4 Restrictions on Image Reversals [Recommended] ............................................................................ 27
5.5 Restrictions on Regular Patterns [Recommended] ............................................................................ 27
5.6 Screen Brightness Calculations [Information] .................................................................................... 28

6 Video........................................................................................................................................................... 31
6.1 Display Within the Safe Frame [Recommended] ............................................................................... 31
6.2 Video Settings [Information] [Deleted]................................................................................................ 31
6.3 Support for Progressive Display [Recommended] ............................................................................. 31
6.4 Settings and Display When Progressive Display Is Supported [Required] ........................................ 31
6.5 Procedure for Switching from Progressive Display to Interlaced Display [Recommended]............... 31
6.6 Addition of Interlaced/Progressive Switch Operation [Recommended] [Deleted] .............................. 32
6.7 Reset Operation During Progressive Output [Recommended] [Deleted]........................................... 32
6.8 Televisions That Support Progressive Output [Recommended]......................................................... 32

RVL-06-0132-001-V 4  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

6.9 PAL 50 Support [Required] .................................................................................................................32


6.10 Settings and Display for EURGB60 Supported Application [Required] ..............................................32
6.11 Switching from EURGB60 to PAL [Recommended] ...........................................................................32
6.12 Addition of PAL/EURGB60 Switch Operation [Recommended] [Deleted] ..........................................33
6.13 Reset Operation During EURGB60 Output [Recommended] [Deleted] .............................................33
6.14 Maintaining Appropriate Video Output [Required] [Deleted] ...............................................................33
6.15 Display Method for the 16:9 Aspect Ratio [Recommended] ...............................................................33
6.16 Settings and Display for Applications That Support the 16:9 Aspect Ratio Display [Required]..........33
6.17 Trap Filter [Recommended] ................................................................................................................34
6.18 Support for the 4:3 Aspect Ratio [Required] .......................................................................................34
6.19 Checking the On-Screen Display During Application Startup [Required] ...........................................34
6.20 Check Before Switching to Progressive Display [Required] ...............................................................34
6.21 Applying Screen Burn-In Reduction Setting [Required]......................................................................34
6.22 Changing Screen Burn-In Reduction Wait Time [Recommended] .....................................................35
6.22.1 Restrictions for Non-Activation of Screen Burn-in Reduction [Required] [Deleted] ....................35
6.23 Support for 16:9 Aspect Ratio [Recommended] .................................................................................35
6.24 Avoiding Screen Burn-In Caused by Static Display [Information].......................................................36
6.25 Standardizing Aspect Ratios [Required] .............................................................................................36
6.26 Interlaced Display When Supporting Double-Strike Mode [Required] ................................................36

7 Controllers...................................................................................................................................................37
7.1 All Controllers......................................................................................................................................37
7.1.1 Display When a Controller Other than the Wii Remote Is Necessary [Required] .......................37
7.1.2 Avoiding Game Design Forcing Extended Continuous Operation or Strenuous Activity
[Information].................................................................................................................................37
7.1.3 Explanatory Message for Wii Remote Strap Use [Required] ......................................................37
7.1.4 Handling +Control Pad Input [Required] .....................................................................................38
7.1.5 Operations on the Unused Buttons [Required] ...........................................................................38
7.1.6 Lower Limit Value of the Control Stick and Button Analog Input Value [Recommended] ...........38
7.1.7 Taking Differences Between Analog Values from Buttons and Control Sticks into Account
[Required] ....................................................................................................................................39
7.1.8 Support for Analog Input Values Defined for Control Sticks and Buttons [Required]..................39
7.1.9 Regarding Applications That Support the Rumble Feature [Required] .......................................39
7.1.10 Avoiding Continuous Operation of the Rumble Motor [Recommended] .....................................39
7.1.11 Stopping Rumble Motor When Controller Not in Use [Required] ................................................40
7.1.12 Rumble Motor Run/Stop Switch Frequency [Recommended].....................................................40
7.1.13 Hot Swapping Extension Controllers [Recommended] ...............................................................40
7.1.14 Frequency Band Usage When Using a Wireless LAN [Information]...........................................40
7.1.15 Do Not Use Origin Reset Command for Extension Controller Analog Input as Game Input
[Required] ....................................................................................................................................40

 2006-2009 Nintendo 5 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

7.1.16 Processing Hot Swapping of Unsupported Extension Controllers [Required]............................ 40


7.1.17 Handling HOME [Required] ........................................................................................................ 41
7.1.18 Handling of the Wii Remote Jacket [Required] ........................................................................... 41
7.2 Wii Remote ......................................................................................................................................... 44
7.2.1 Using the Relative Distance Between the Wii Remote and the Sensor Bar [Recommended] ... 44
7.2.2 Handling HOME [Required] [Deleted]......................................................................................... 44
7.2.3 Disabling Pointer for Applications Without Pointer Function [Required]..................................... 44
7.2.4 Disabling Pointer for Applications with Pointer Function [Recommended]................................. 44
7.2.5 Prohibition of Simultaneous Use of Wii Remote Memory and Wii Remote Speaker [Required] ...... 44
7.2.6 Restriction on Contents of Data Written to Wii Remote Memory [Required] .............................. 44
7.2.7 Wii Remote Data Error Checking [Required] .............................................................................. 45
7.2.8 Message Display When Writing to Wii Remote Memory [Required] .......................................... 45
7.2.9 Message Display When Loading Wii Remote Memory [Recommended]................................... 45
7.2.10 Handling WPAD_ERR_TRANSFER or WPAD_ERR_BUSY Errors When Writing to Wii
Remote Memory [Required]........................................................................................................ 45
7.2.11 Handling WPAD_ERR_TRANSFER or WPAD_ERR_BUSY Errors When Reading from Wii
Remote Memory [Required]........................................................................................................ 45
7.2.12 Data Compatibility for the Same Application Using Wii Remote Memory [Required]................. 46
7.2.13 Prohibition of Operations Dependent on Wii Remote Memory Access Speed [Required] ......... 46
7.2.14 Handling Data Corruption in Wii Remote Memory [Recommended] .......................................... 46
7.2.15 Displaying a Message when Overwriting Wii Remote Memory [Required] ................................ 46
7.2.16 Continuous Play on the Wii Remote Speaker [Recommended] ................................................. 46
7.2.17 Processing when No Output Occurs on the Wii Remote Speaker [Recommended].................. 46
7.2.18 Speaker Sound Quality Under Poor Signal Conditions [Recommended]................................... 47
7.2.19 Displaying a Message Notifying the User That Battery Charge Is Low [Recommended] .......... 47
7.2.20 Displaying a Message Notifying Users That Wii Remote Transmissions Have Terminated
[Recommended].......................................................................................................................... 47
7.2.21 Application of Pause Function at Termination of Wii Remote Communication [Information] ..... 47
7.2.22 Specification of Simple Pairing Procedure [Required] ................................................................ 48
7.2.23 Message Displayed During Simple Pairing [Required]............................................................... 48
7.2.24 Display Format for Simple Pairing [Required] [Deleted] ............................................................. 48
7.2.25 Use of Function WPADSetSpeakerVolume Prohibited [Required] ............................................. 48
7.2.26 Settings for Automatic Disconnection of Wii Remote Communications [Recommended].......... 48
7.2.27 Handling When a Wii Remote Is Connected to a Player Number Not Used by the Application
[Recommended].......................................................................................................................... 49
7.2.28 Handling Wii Remote Acceleration Noise [Required] ................................................................. 49
TM
7.3 Peripheral Devices That Connect to the Nintendo GameCube Controller Sockets........................ 49
7.3.1 Application Support for the Nintendo GameCube Controller [Information] [Deleted] ................. 49
7.3.2 Use of Origin Reset Command as Game Input Prohibited [Required] ....................................... 49
7.3.3 Support for Origin Reset Command [Required].......................................................................... 49
7.3.4 Hot Swapping Support for Peripheral Devices That Connect to the Nintendo GameCube
Controller Sockets [Required] ..................................................................................................... 50

RVL-06-0132-001-V 6  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

7.3.5 Frequency of Checks for Hot Swapping [Recommended] ..........................................................50


7.3.6 Nintendo GameCube WaveBird Wireless Controller Support [Information]................................50
7.3.7 Stopping Access to the Optical Disc Drive in Scenes Where the User Is Prompted to Insert
Devices into or Remove Devices from the Nintendo GameCube Controller Sockets [Required] .....50
7.3.8 Prohibiting Applications That Require the Nintendo GameCube Controller [Required]..............50
7.3.9 Joint Use of the Nintendo GameCube Controller and Wii-Specific Peripheral Devices
[Recommended] ..........................................................................................................................51
7.3.10 Restrictions on Peripheral Devices That Connect to the Nintendo GameCube Controller
Socket [Required] ........................................................................................................................51
7.3.11 Providing Rumble Feature Settings [Required]...........................................................................51
7.4 Wii Zapper...........................................................................................................................................51
7.4.1 Displaying the Wii Zapper Usage Screen [Required]..................................................................51

8 Wii Console NAND Memory .......................................................................................................................52


8.1 Restrictions on Wii Console NAND Memory [Required].....................................................................52
8.2 Limits on Frequent Rewrites [Required] .............................................................................................52
8.3 Error Handling [Required] ...................................................................................................................53
8.4 Write Operation Display [Required] ....................................................................................................53
8.5 Data Compatibility Within the Same Program [Required]...................................................................53
8.6 Applications Dependent on Wii Console NAND Memory Access Speed Prohibited [Required] ........53
8.7 Handling Reset While Writing [Required] ...........................................................................................53
8.8 Data Unit for Users [Required]............................................................................................................53
8.9 Checking the Number of Free inodes and Amount of Free Memory Using NANDCheck[Async]
[Required]............................................................................................................................................54
8.10 Timing for Checking the Number of Free Inodes and the Amount of Free Memory [Required] .........54
8.11 Notification When the Number of Inodes or the Amount of Free Memory Is Insufficient [Required] ..55
8.12 Do Not Change Created File Size [Required].....................................................................................55
8.13 Handling Corrupted Files [Required] ..................................................................................................55
8.14 Handling Corrupted Wii Console NAND Memory [Required] .............................................................55
8.15 Saving Data During the Shutdown Process [Recommended] ............................................................56
8.16 Prohibition of Creating Files or Directories Without Owner Read Permission [Required] ..................56
8.17 Prohibition of Frequent Read Access [Required]................................................................................56
8.18 Save Banner File Creation..................................................................................................................56
8.18.1 Timing of Creation [Required] .....................................................................................................57
8.18.2 Check the Save Banner File [Required]......................................................................................57
8.19 Precautions for Creating Save Data [Information] ..............................................................................58
8.20 Save Data Comments [Required] .......................................................................................................58
8.21 Save Data Location Specification [Required]......................................................................................59
8.22 Prohibition of Using Reserved Names [Required] ..............................................................................59
8.23 Precautions Regarding the nocopy Directory [Required] ...................................................................59

 2006-2009 Nintendo 7 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

8.24 Save Data Tampering Protection by the Wii Console [Information] ................................................... 59
8.25 Prohibition of Usage Restrictions on Save Data Due to Wii Console-Specific Information [Required]..... 59
8.26 Support for NAND_RESULT_MAXBLOCKS and NAND_RESULT_MAXFILES [Recommended]
[Deleted] ............................................................................................................................................. 59
8.27 [N. American Version Only] Considerations for Save Banners That Do Not Have Alpha Values
Applied [Required] [Deleted] .......................................................................................................................... 60
8.28 Handling NAND_RESULT_UNKNOWN [Required] ........................................................................... 60
8.29 Sharing Save Data Between Applications .......................................................................................... 60
8.29.1 Creating a Directory for Sharing [Required]................................................................................ 60
8.29.2 Prohibition of Changing the File Size or Number of Inodes for Save Data of Other Titles
[Required].................................................................................................................................... 60
8.29.3 Operations Independent of the Start Order of Titles That Share Save Data [Required]............. 61
8.29.4 Handling When the Shared Files Are Deleted [Required] .......................................................... 61
8.30 Restriction on Copy Protect Settings [Recommended] ...................................................................... 61

9 Nintendo GameCube Memory Card........................................................................................................... 62


9.1 Nintendo GameCube Memory Card Compatible Application [Information] [Deleted] ........................ 62
9.2 Use of Write Functions Prohibited [Required] [Deleted]..................................................................... 62
9.3 Programs Must Not Depend on the Access Speed of Nintendo GameCube Memory Cards
[Required] [Deleted]............................................................................................................................ 62
9.4 Support for High-Capacity Nintendo GameCube Memory Card [Required] [Deleted] ....................... 62
9.5 Errors Displayed when Memory Cards Cannot be Used [Required] [Deleted] .................................. 62
9.6 Compatible Slots [Recommended] [Deleted] ..................................................................................... 62
9.7 Memory Card Menu in Application [Required] [Deleted] .................................................................... 62
9.8 Limit on Accessible Memory Card Files [Required] [Deleted] ............................................................ 62

10 Reset and Shutdown ................................................................................................................................ 63


10.1 Wii Console RESET [Required].......................................................................................................... 63
10.2 Wii Power Button [Required] .............................................................................................................. 63
10.3 Resetting the Nintendo GameCube Controller Origin During Reset Operations [Required] ............. 63
10.4 Prohibiting Use of the OSRebootSystem Function [Required]........................................................... 64
10.5 Required Preparations Before Using the Reset/Shutdown Functions [Required] [Deleted] .............. 64
10.6 Restrictions on Operations for Resets [Required] .............................................................................. 64

11 HOME Menu ............................................................................................................................................. 65


11.1 Implementing the HOME Menu and Using the HBM Library [Required]............................................ 65
11.2 HOME Menu Display Triggers [Required] .......................................................................................... 65
11.3 Display Language for the HOME Menu [Required]............................................................................ 65
11.4 Aspect Ratio of the HOME Menu [Required]...................................................................................... 66
11.5 Using the HOME Menu from All Paired Wii Remotes [Recommended] [Deleted] ............................. 66
11.6 Support for HOME Menu by Classic Controllers [Required] .............................................................. 66

RVL-06-0132-001-V 8  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

11.7 Application Processing During HOME Menu Display [Recommended] .............................................66


11.8 Restrictions on Rumble Feature .........................................................................................................66
11.8.1 Restrictions Due to the Rumble Setting of the HOME Menu [Required] ....................................66
11.8.2 Prohibition of Changing the Rumble Setting of the HOME Menu [Required] .............................66
11.9 Speaker Initialization After Leaving the HOME Menu [Required] .......................................................67
11.10 Prohibition of Using the Wii Remote Speaker During HOME Menu Startup [Required] .................67
11.11 Display of the HOME Menu Disabled Icon [Recommended] ..........................................................67
11.12 Processing When Quitting the HOME Menu [Required].................................................................67
11.13 Sound Volume When Entering and Exiting the HOME Menu [Required] .......................................67
11.14 Displaying Error Messages for Errors That Occurred While in the HOME Menu [Information] ......68
11.15 Displaying Messages Suited to Save Data Confirmation [Required]..............................................68

12 Icons and Banners ....................................................................................................................................69


12.1 Icon Animation [Required]...................................................................................................................69
12.2 Use of Text Boxes for Icon Layout [Required] ....................................................................................69
12.3 Icon and Banner Data Size Restriction [Required] .............................................................................69
12.4 Title Display in the Banner [Required] ................................................................................................69
12.5 Banner Animation [Information] ..........................................................................................................69
12.6 Use of Text Boxes for Banner Layout [Required]................................................................................70
12.7 Display of Trademarked or Copyrighted Names in the Banner [Information] .....................................70
12.8 [N. American Version Only] Consideration for Non-Application of the Banner Alpha Value
[Required] [Deleted] ............................................................................................................................70
12.9 Banner Sound Setting [Required] .......................................................................................................70
12.10 Displaying the Title in the Banner Data Header [Required] ............................................................70
12.11 Channel Scripts ...............................................................................................................................71
12.11.1 Processing Time Restrictions [Required] ................................................................................71
12.11.2 Prohibition Against Heavy Processing After the System.beginRender Method Has Been
Called [Required] .....................................................................................................................71
12.11.3 Avoiding Rendering Gaps Due to Icon Layout Adjustment [Required]....................................71
12.11.4 Layout Specifications Before Channel Script Execution [Required]........................................72

13 Communications with Nintendo DS ..........................................................................................................73


13.1 General ...............................................................................................................................................73
13.1.1 Adherence to the Use of the Library [Required]..........................................................................73
13.1.2 ON and OFF State of MP Communications [Information] ...........................................................73
13.1.3 Downloading Programs [Required] .............................................................................................73
13.1.4 Using GGIDs [Required]..............................................................................................................73
13.1.5 Using TGIDs [Required] ..............................................................................................................73
13.1.6 Development Note for Regional Restrictions [Information] .........................................................74
13.2 MP Communications with the DS .......................................................................................................74
13.2.1 Message Display for Severed Connections [Required] ..............................................................74

 2006-2009 Nintendo 9 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

13.2.2 Single-Transmission Data Size for MP Communications [Recommended]................................ 74


13.2.3 Which GGID to Use [Required] [Deleted] ................................................................................... 75
13.2.4 Connection with Game Software of Other Companies’ Titles Is Prohibited [Required] .............. 75
13.2.5 Connection with Different Versions of the Same Software [Required] ....................................... 75
13.2.6 Processing When Attempting to Connect More than the Supported Number of DS Systems
[Required].................................................................................................................................... 75
13.2.7 Screen Burn-In Reduction Feature [Required] ........................................................................... 75
13.2.8 Dealing with Invalid or Corrupted Communications Data [Required] ......................................... 76
13.3 DS Download Play.............................................................................................................................. 76
13.3.1 Banner Icons [Information] [Deleted] .......................................................................................... 76
13.3.2 TGIDs Used by the MPDL Library [Required] [Deleted] ............................................................. 76
13.3.3 Accessing Cards During DS Download Play [Required] ............................................................ 76
13.3.4 Characters Displayed on the DS [Required]............................................................................... 76

14 USB Keyboards ........................................................................................................................................ 77


14.1 Operation Verification on Specified Models........................................................................................ 77
14.1.1 Support for Different Model Numbers According to Market and Language [Required] .............. 77
14.1.2 Operation of Unused Keys [Required] ........................................................................................ 77
14.1.3 LED Status Control [Required].................................................................................................... 77
14.1.4 Handling Different Types of Keyboards [Required]..................................................................... 77
14.2 Avoiding Game Design Forcing Extended Continuous Operation or Strenuous Activity [Information]..... 78
14.3 Prohibit Hot Swapping of the Keyboard [Required]............................................................................ 78
14.4 Processing During Startup When a Keyboard Is Required [Required] .............................................. 78
14.5 Operation When a Non-Supported USB Device Is Connected [Required] ........................................ 78

15 Wii Balance Board Accessory................................................................................................................... 79


15.1 Disconnecting the Wii Remote Controller [Information] ..................................................................... 79
15.2 Load Restrictions [Required] .............................................................................................................. 79
15.3 Operation Restrictions [Required] ...................................................................................................... 79
15.4 User Warnings [Recommended] ........................................................................................................ 80
15.5 Using Load to Determine Simple Stepping On/Off Board [Required] ................................................ 80
15.6 Preparations for Accurate Load Measurement [Required] ................................................................. 80
15.7 Specification of the Process and Time Required for Accurate Load Measurement [Required] ......... 80
15.8 Time Restrictions for Accurate Load Measurement [Required].......................................................... 81
15.9 Handling Insufficient Remaining Battery Power [Required] ............................................................... 81
15.10 Wii Balance Board Operation Confirmation [Required] .................................................................. 81
15.11 [Japan Only] Sharing HOME Registration Data [Required]............................................................ 81
15.12 [Japan Only] Compliance with the Weights and Measures Law [Required]................................... 81
15.12.1 Display Based on Guaranteed Accuracy ................................................................................ 81
15.12.2 Weight Display Restrictions .................................................................................................... 82

Appendix A Revision History of Previous Versions ........................................................................................ 83

RVL-06-0132-001-V 10  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Tables
Table 2-1 Rating Agencies by Market .........................................................................................................17
Table 7-1 Wii Remote Jacket Usage Table for General Applications..........................................................42
Table 7-2 Wii Remote Jacket Usage Table for Applications Using Attachments ........................................43
Table 8-1 Usage Limitations for Wii Console NAND Memory.....................................................................52
Table 8-2 Characters Usable in Save Data Comments (By Region) ..........................................................58
Table 11-1 Selectable Languages for Each Market ....................................................................................65
Table 15-1 Allowable Display Units .............................................................................................................82

 2006-2009 Nintendo 11 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision History
Revision Item(s)
Version Description
Date Affected

1.14 2009/07/01 (Japanese version only) Standardized the term “RevolutionSDK” to


All
“Revolution SDK,” with a space between the two words.

Restrictions on Images Used Instead of Names:


• Removed [Recommended] from the title of this section.
• Added text explaining that developers must comply with the new
subsections (listed below) when illustrating controllers.
• Clearly stated that Nintendo provides a Wii Materials Collection.
Added the following subsections.
• Section 2.21.2.1 Creating Illustrations That Users Can Recognize
[Required]
2.21.2 • Section 2.21.2.2 Displays That Are The Same Color As the Product
[Information]
• Section 2.21.2.3 Showing the Wii Remote and Strap In the User’s Hand
[Required]
• Section 2.21.2.4 Showing the Wii Remote and Wii Remote Jacket In the
User’s Hand [Required]
• Section 2.21.2.5 Cautions for Illustrations Without the Wii Remote Jacket
[Information]
• Section 2.21.2.6 Displaying the Nunchuk Cable [Required]

The revision history for previous versions was moved to Revision History of Previous Versions at the end of this
document.

RVL-06-0132-001-V 12  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

1 Overview
Wii Programming Guidelines provides programming cautions for the Wii console and peripherals.

1.1 Level of Importance


The following notations indicate the relative importance of the topics contained in this document.

• [Required] Items that must be completed.


• [Recommended] Items suggested for improving the quality or performance of your game.
• [Information] Additional items that provide information for game developers.

1.2 Wii Programming Guidelines Note


The Wii Programming Guidelines are established to reduce problems in the market. However,
following these guidelines does not guarantee that all problems will be avoided.

1.3 Do Not Use Wii Development and SDK Files on Other Platforms
Do not use the files included in the various Wii SDKs and development tools on other platforms.

1.4 Items Warranting Special Mention


Notations such as [North American Version Only], [North American, European, and Australian
Versions], and [Chinese and Korean Versions] are added to the beginning of headings for
guidelines specific to each of these regions.

There are no guidelines specific to Taiwan that differ from those for other regions.

 2006-2009 Nintendo 13 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

2 All
2.1 Prohibition of Dependency on Device Specifications [Required]
Avoid designing a program with a dependency on the device specifications of the Wii console or its
peripherals, as this may result in a program malfunction or crash.

There will be some specification variance between devices. Performance will also decrease as a
device ages or a disc becomes damaged.

Specifically, the devices referred to in these guidelines are the disc drive, disc, Wii Remote, Wii
console NAND memory, and SD Memory Card. See the corresponding chapters for details.

2.2 Memory and Register Initialization [Required]


The contents of memory are not guaranteed during application program startup. Do not assume a
specific initial memory value if memory has not yet been initialized by the application. Similarly, do not
use an uninitialized register assuming a specific initial value when using the assembler.

The arena is cleared to zero using OSInit.

2.3 Startup Time Restriction [Recommended]


Display the Strap Usage screen within 2 seconds of switching to the application.

If the startup time is excessively long, the user may mistake this for a system malfunction.

This does not include the 100 or so frames necessary for switching the display mode from either
progressive display to interlaced display, or from EURGB60 display to PAL display.

For more information about the Strap Usage screen, see section 7.1.3 Explanatory Message for Wii
Remote Strap Use [Required].

2.4 Startup Disc Error Handling [Required] [Deleted]


(Moved to Chapter 3 Wii Game Discs and Drive.)

2.5 Compliance with Legal Rights Display [Required]


A separate indication of legal rights is required for some of the library tools provided by Nintendo. Use
the specified display method when using a library tool or other item requiring a legal rights display.

Not displaying the legal rights information in the specified method may result in licensing issues.

Note that the legal rights display can be shown in various ways, such as during game startup, in the
user's manual, and on the packaging. For details, see the instructions for the individual library tools.

RVL-06-0132-001-V 14  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

2.6 Using the Latest Packages [Recommended]


Always try to use the latest versions of the Revolution SDK and its patches and related tools
distributed by Nintendo.

Revisions are made when problems arise.

2.7 Removal of Debug Information [Required]


When you are creating the master data, be sure to set the options so that debug information is not
included during compiling and linking.

Also, make sure to use the release versions and not the debug versions of the libraries that you link.
When using make, set NDEBUG=TRUE to disable the OS debug code.

If the debug information is left in the master data, it increases program size in addition to decreasing
execution speed. Leaving in debug code output may also result in lock-ups.

2.8 Prohibition of Device Access Without the Use of a Library


[Required]
Do not access individual devices directly without going through the appropriate library.

Problems regarding device compatibility and hardware restrictions were taken into account when the
various device libraries of the Revolution SDK were created. Unexpected problems could arise if you
directly access devices instead of going through the libraries.

2.9 Prohibition of Development Support Libraries in the Release


Version [Required]
Do not include development support libraries, such as the Host I/O and MIDI adapter libraries, in the
release version master data.

Including development support libraries may cause the Wii system to malfunction.

2.10 Guaranteeing Extended Operation of the Application [Required]


Make sure that no fatal bugs such as erroneous processes or lock-ups occur, even if the application
is run for a long time.

For example, if continually demonstrating the application overnight in stores, it is conceivable that it
will be used continuously for 24 hours or more.

Be careful to avoid lock-ups or other abnormalities due to counter overflows.

2.11 Integrating Banners, Comments, and Icons [Information] [Deleted]


See section 8.20 Save Data Comments [Required] and Chapter 12 Icons and Banners.

 2006-2009 Nintendo 15 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

2.12 Application of Wii System Settings [Required]


As applicable, to make it easier to share user-configured values between applications, apply the
various settings configured for the Wii console to the application program.

For details, see the following sections for items in the Wii System Settings.

• 4.1 Applying Wii System Sound Settings [Required]


• 6.4 Settings and Display When Progressive Display Is Supported [Required]
• 6.10 Settings and Display for EURGB60 Supported Application [Required]
• 6.16 Settings and Display for Applications That Support the 16:9 Aspect Ratio Display [Required]
• 6.21 Applying Screen Burn-In Reduction Setting [Required]
• 7.1.3 Explanatory Message for Wii Remote Strap Use [Required]
• 11.3 Display Language for the HOME Menu [Required]
• 11.4 Aspect Ratio of the HOME Menu [Required]
• 11.8 Restrictions on Rumble Feature
o 11.8.1 Restrictions Due to the Rumble Setting of the HOME Menu [Required]
o 11.8.2 Prohibition of Changing the Rumble Setting of the HOME Menu [Required]

2.13 Prohibition of Health and Safety Warning Display by Applications


[Required]
The Wii console displays a “Health and Safety Precautions" warning message at startup. Nintendo
considers this warning screen a blanket warning, so do not include a health and safety warning
screen on the application side. There is no problem with displaying a warning screen for the rating of
the game’s content.

2.14 Display at Application Startup [Information] [Deleted]


There is no need for the application to display any warning at startup other than the “Health and
Safety Precautions” warning message.

2.15 [North American Version Only] Displaying the ESRB Online Rating
Notice for Applications Using Network Features [Required]
If applications released in the U.S. market that are subject to ESRB rating have unrestricted
communication between users during a network connection and/or allow users to send and receive
elements (user-generated data and so on) not rated by ESRB, it will be noted as a requirement on the
"ESRB Rating Certificate" to display the ESRB Online Rating Notice. If the display of the notice is
required by ESRB, see the ESRB website (https://www.esrb.org/) to confirm the detailed ESRB
requirements (see ESRB ARC Manual) and display the notice.

RVL-06-0132-001-V 16  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

2.16 Program Distribution Method [Required]


Do not run programs other than the following.

• Programs included on Wii Game Discs produced by Nintendo


• Programs distributed by the program distribution system provided by Nintendo
Do not write or read in programs from the application using Wii Remote memory, an SD Card, a
network, a USB port, Bluetooth, or other kind of interface.

Also, even if data is simply being read using these interfaces, always perform buffer overflow checks
and use data signature, authentication, and encryption to ensure programs will not be executed with
buffer overflow due to data modification.

2.17 Parental Controls [Information]


Using Parental Controls, a parent or guardian can restrict the startup of Wii games that they consider
inappropriate for members of their household. The parent or guardian sets the restriction level based
on a game’s rating; to temporarily release the Parental Controls, they enter a PIN.

Before a master is submitted, each Wii system game must be rated by the appropriate rating agency
for each market in which the game is to be released. When creating master data for submission, be
sure to enter the rating using the Master Editor program.

Table 2-1 lists the rating agencies for each market.

Table 2-1 Rating Agencies by Market


Market Rating Agency
Japan CERO
North America ESRB
Europe PEGI, USK, BBFC (varies by country)
Australia AGCB

The Wii console restricts the startup of games according to the restriction level set by the parent or
guardian based on the rating stored in the game. Restricted games can be started only if the correct
PIN is entered when the user is prompted for it immediately before startup. Note that applications do
not need to perform any special processing for the restrictions based on their rating.

For details, see the Revolution Master Editor manual.

2.18 [North American, European, Australian, and Korean Versions]


License Display of Licensee Titles [Required]
Licensee titles must display the text "Licensed by” followed by the Nintendo logo included with these
guidelines for one or more seconds at the channel banner screen.

Developers and publishers should consult with Nintendo if other legal notices make displaying the
“Licensed by Nintendo” logo at the channel banner screen difficult.

 2006-2009 Nintendo 17 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Display the image included in the Licensed by Nintendo Screen Package for “Licensed by Nintendo.”
This image uses the Nintendo logo.

See the documentation included in the Licensed by Nintendo Screen Package for notes on displaying
“Licensed by Nintendo” onscreen.

See section 12.7 Display of Trademarked or Copyrighted Names in the Banner [Information] for more
information about displaying the text and logo in the banner.

The reason Nintendo provides an image to display “Licensed by Nintendo” is to ensure consistency
across all titles. This mechanism will help to counteract worldwide software piracy.

The reason the Nintendo logo is displayed in place of the word “Nintendo” is because it receives
stronger protection under the trademark laws of various countries. As a result, it is easier to exercise
rights against trademark infringement than when the word “Nintendo” alone is used. It is also possible
for Nintendo to swiftly and efficiently make claims against copied software. In other words, this is
instrumental in fighting software piracy. If copied or bootleg software includes the Nintendo logo, this
trademark infringement can be used as the basis of an infringement case brought against the
purveyors of said software. This allows Nintendo to protect its own brand and each licensee’s profits
from the damages associated with software piracy.

2.19 Using Firmware of Specified Versions [Required]


For applications developed with Revolution SDK 3.2 or later environments, use the extension
firmware (firmware for titles with support for network functionality) when using the USB HID library
(included with the Revolution SDK), Revolution SDK Extensions (REX), or Revolution DWC (DWC),
and use the "standard firmware" when they are not used.

To determine the specific firmware version to use, see the Revolution SDK README.

2.20 Time Restriction When Screen Is in Static State [Required]


Do not allow the screen to be in a static state for more than 10 seconds.

The reason for this restriction is that users may become uneasy if the screen remains in an
unchanged state for a long period, and may suspect that the Wii console is damaged.

For example, the screen will remain black for a long time if a large DOL file has been specified by the
OSExec* function, so be aware of the size of the DOL file.

Note that this restriction does not apply if the user can confirm that the screen or the audio will
change with controller operations.

Contact [email protected] if effects in the game require the screen to remain in a static state for
longer than 10 seconds, even if the user can confirm that the screen or the audio will change with
controller operations.

RVL-06-0132-001-V 18  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

2.21 Terminology and Image Specifications


2.21.1 Standardized Terminology [Required]
Adhere to the latest version of the Wii Terminology document for the approved terminology of the Wii
console, various parts of the Wii console, terms relating to operation, names of peripheral devices,
and all other names.

2.21.2 Restrictions on Images Used Instead of Names


For space and design reasons, you may want to use images instead of names, but try to use images
that are as close to actual shapes as possible. A little variation in color or design is acceptable if it will
not confuse users.

You must comply with the following sections when using controller illustrations.

Nintendo provides controller illustrations bundled as the Wii-Related Artwork Collection for Use
During Gameplay. (You may also create your own unique illustrations.)
2.21.2.1 Creating Illustrations That Users Can Recognize [Required]
Users must be able to recognize the illustrations you create.

There is no problem with creating your own unique illustrations to match the style of other illustrations
in your application, but you must not create any illustrations that could be misunderstood by the user.
2.21.2.2 Displays That Are The Same Color As the Product [Information]
Display the controller and the strap in colors that match the colors of the actual product.

If the product and the displayed colors are different, the user may mistakenly be led to believe that
color variations of the product are commercially available.

If you are using realistic illustrations that are very similar to the actual shapes of the hardware, such
as the images in the Wii Materials Collection, use colors that are also as close as possible to the
commercially available product.

However, it is acceptable to to change the color of part of the controller (for example, highlighting
buttons) in order to explain operations.
2.21.2.3 Showing the Wii Remote and Strap In the User’s Hand [Required]
If your illustration shows the Wii Remote controller being held in a user’s hand, you must always
display the strap properly attached to the user’s wrist.

The exception is applications in which the Wii Remote controller is always held horizontally. For these,
the strap does not need to be included in the illustration.
2.21.2.4 Showing the Wii Remote and Wii Remote Jacket In the User’s Hand [Required]
If your illustration shows the Wii Remote controller being held in a user’s hand, refer to 7.1.18.1 Wii
Remote Jacket Usage Table for General Applications to determine whether to display the Wii Remote
controller with its jacket on.

 2006-2009 Nintendo 19 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

In applications in which the Wii Remote controller is always held horizontally, the Wii Remote jacket
does not need to be included in the illustration.
2.21.2.5 Cautions for Illustrations Without the Wii Remote Jacket [Information]
Avoid mixing illustrations showing the Wii Remote controller with its jacket and without its jacket on
the same screen.

Users may misinterpret illustrations showing the Wii Remote controller without its jacket to mean that
the Wii Remote jacket is to be removed to play the game.
2.21.2.6 Displaying the Nunchuk Cable [Required]
Illustrations where the Nunchuck controller and Wii Remote controller are connected must show the
cable to make it possible to see that they are connected.

Note that showing the entire cable is unnecessary; you may omit the portion of the cable that is
distant from the Wii Remote controller and the Nunchuck controller.

2.22 Using the Time from the Wii System Clock


The Wii system clock time can vary greatly if the battery runs out or is changed. If the battery runs out,
the time from this clock is undefined.

Applications that use the time from the Wii system clock should support the items detailed in sections
2.22.1 and 2.22.2, below.

2.22.1 Procedure When Time of Wii System Clock Differs Greatly from Real Time
[Required]
Design your application in such a way that the game's progress is not hindered when the Wii system
clock time differs greatly from the actual time.

2.22.2 Prompting a User to Check the Current Time [Recommended]


In the following situations, display the Wii system clock time and prompt the user to confirm the actual
time:

• At the time of the first startup


• When the current time is significantly off from the previous startup
Users probably take little notice of a deviation in the time, but by prompting them to confirm the time,
you can get their attention when the Wii system clock time varies greatly, such as when the battery
suddenly dies.

RVL-06-0132-001-V 20  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

3 Wii Game Discs and Drive


3.1 Prohibition on Drive Specification Dependency [Required]
Ensure that programs do not run uncontrollably or freeze due to a dependency on drive access speed.

Drive access speed differs depending on the status of the disc and/or drive. Furthermore,
specifications regarding drive access speed, cache size, and cache operations may change in the
future.

Be sure to thoroughly debug programs so that they do not freeze even when drive access speed
suddenly drops, particularly in cases where data is used sequentially, as in movie scenes.

3.2 Wii Game Disc Error Handling [Required]


For Wii Game Disc error handling, be sure to comply with the Wii Optical Disc Drive Guidelines,
unless there is a special reason not to do so.

Having each application handle Wii Game Disc errors differently confuses users.

If there is a special reason to change error handling, contact [email protected] early in development.

3.3 Prohibition of Sustained Continuous Non-Sequential Access


[Required]
If there has been no user input for more than 5 minutes (or 10-15 minutes, based on the screen burn-
in reduction feature setting), continuous non-sequential disc access should end within 1 hour. Once
user input is received, resume normal operations.

Non-sequential access is defined as seeking to access data spaced more than 200 MB apart on the
disc. Non-sequential access resumed within five seconds for a long period of time can shorten the
lifespan of the disc drive. To avoid unnecessary aging of the disc drive while the user is not operating
the application, do not conduct this kind of non-sequential access for more than one continuous hour.

For example, when a movie is playing for a long time, position the files that will be accessed nearby
and, if non-sequential access will be carried out, limit the number of loops.

For information on the wait time set for the screen burn-in reduction feature, see the Wii Video
Interface Library (VI) manual and the Video Interface Library section of the Revolution Function
Reference Manual. If you are going to reconfigure the wait time for the screen burn-in reduction
feature, see section 6.22 Changing Screen Burn-In Reduction Wait Time [Recommended].

 2006-2009 Nintendo 21 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

3.4 [Multiple-Disc Games Only] Independent Startup of All Discs


[Required]
Even if startup of the application from a particular Wii Game Disc is not expected, always make sure
that some kind of program is executed when the disc is started independently, even if it is just a
warning message. For example, if the inserted Wii Game Disc is one of a set of two Wii Game Discs
and the inserted disc is one that cannot be played as a standalone disc, prepare a program that
displays a message similar to DISC_06 in the Wii Message List.

Not doing so may cause the user to think that there is malfunction in either the Wii console or the Wii
Game Disc when a Wii Game Disc is not designed for independent startup.

3.5 Normal Operation After the Disc Drive Motor Is Shut Off from a
Period of Inactivity [Required] [Deleted]
(Deleted because shutting off the disc drive motor does not affect the development environment
currently provided.)

3.6 Display for Disc Drive Motor Shut Off from a Period of Inactivity
[Recommended] [Deleted]
(Deleted because shutting off the disc drive motor does not affect the development environment
currently provided.)

3.7 Data Layout for Double-Layer Disc


Applications that support double-layer discs must support the items detailed in sections 3.7.1 and
3.7.2, below.

3.7.1 Avoid Disc Access Spanning Layers [Required]


Place a 16MB dummy file (a file that the application does not use) starting from address 0xE7000000.
The actual starting location of the second layer on the disc is 0x0E78A6C00, but for simplicity this has
been rounded up. By locating this 16MB dummy file here, you do not need to worry about the
possibility of the Read at the layer border having different conditions from the Read at another address.

The following is the specific sample code.


[LbaOrigin]
0xE7000000="border.dat",+

3.7.2 Avoid Reading Data to Alternate Layers [Recommended]


Avoid data layouts that require alternating reading between the first and second layer. To minimize
reading from different layers, extra steps might be necessary, such as placing the same data on both
layers. Switching between the first and second layer adds extra latency.

RVL-06-0132-001-V 22  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

3.8 Startup Disc Error Handling [Required]


Always include disc error handling routines (including error display) in programs read by the Wii Menu.

If there is no error handling routine (error display) in sections read by the Wii Menu, errors that occur
before error handling routines are read will not be processed.

For details on error handling, see the Wii Optical Disc Drive Guidelines.

3.9 Resetting and Shutting Down in Response to Fatal Errors


[Required]
Disable controller operations, RESET, and the Power Button while a fatal error message is being
displayed. Fatal errors indicate a state where it may not be safe to even reset the Wii console, so
continue to display the error message without resetting or shutting down.

For more information about fatal error messages, see section 3.11 Message Display in Response to
Fatal Errors [Required].

3.10 Resetting and Shutting Down in Response to Disc Errors Other


than Fatal Errors [Required]
For “No Disc,” “Wrong Disc,” or “Retry” errors, when a reset operation occurs, perform reset
processing and return to the Wii Menu. If the Power Button on either the Wii console or the Wii
Remote is pressed, perform shutdown of the system immediately.

For information about the optical disc drive library displaying fatal error messages automatically, see
Chapter 10 Reset and Shutdown.

3.11 Message Display in Response to Fatal Errors [Required]


If you call the DVDSetAutoFatalMessaging(FALSE) function at the start of the application to disable
the feature that automatically displays fatal error messages, display DISC_04 in the Wii Message List
in response to fatal errors.

As long as this feature is not disabled by calling the aforementioned function, the optical disc drive
library will display fatal error messages automatically. The automatically displayed message will reflect
DISC_04 from the latest version of the Wii Message List at the time the Revolution SDK being used
was released. Consequently, the message may be different from the latest Wii Message List depending
on which Revolution SDK version and language is being used, but this is not considered to be a
problem.

3.12 Prohibiting Disc Access Using the CNT Library in the Release
Version [Required]
Disc access using the CNT library is prohibited in the release version of a disc application because
the CNT library handles errors differently than the optical disc drive library.

 2006-2009 Nintendo 23 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

4 Sound
4.1 Applying Wii System Sound Settings [Required]
If there are no menus in the application where the user can select sound settings, apply monaural,
stereo, or surround sound from the Wii system sound settings during startup. Also, if there is a menu
in the application where the user can select sound settings, apply the sound setting of the Wii system
as an initial value during the initial startup of the application.

In either case, applications do not need to provide a sound mode for each of the sound settings that
can be selected on the Wii console (monaural, stereo, and surround). For example, applications that
do not support surround sound output may use stereo output when the Wii console is configured to
use surround sound.

Applications that do not support monaural sound may also use stereo output when the Wii console is
configured to use monaural sound. Game progress may be hindered by the user’s sound
environment, however. For details, see section 4.5 Considerations for the User’s Sound Output
Environment [Information].

4.2 Sound Setting on the Wii Console [Required] [Deleted]


(Deleted because it was restructured as section 4.1 Applying Wii System Sound Settings [Required].)

4.3 Sound Output for Applications Supporting Multiple Sound Settings


[Required] [Deleted]
(Deleted because it was restructured as section 4.1 Applying Wii System Sound Settings [Required].)

4.4 Do Not Modify the Audio Playback Frequency Within an Application


[Required]
Although the Wii audio system supports playback at a frequency of either 32 kHz or 48 kHz, once one
of these frequencies has been set for an application at startup, be sure not to change the frequency
setting again. The ability to change the playback frequency is limited due to hardware specifications.

4.5 Considerations for the User’s Sound Output Environment


[Information]
To avoid considerable disadvantages to the user, try hard to always keep the user’s sound output
environment in mind. For example, consider a case in which a user, who has a television that
supports only monaural sound, has configured the Wii console to use monaural sound and expects
monaural output. In this environment, some audio will be cut for applications that use stereo output,
as described above.

RVL-06-0132-001-V 24  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

5 Photosensitivity
5.1 About Photosensitivity and These Guidelines [Information]
These guidelines are intended to be used in the development of video games for the Wii platform.
Unlike films and television programs, which produce only one sequence of images each time they are
played, one video game can produce an infinite sequence of images. This is because video games
are interactive, so that each time a game is played, a different sequence of pictures and images will
be displayed, depending on the choices and inputs made by the game’s player or (in the case of
multiplayer games) players. In addition, the luminance of images displayed in three-dimensional
games are not simply those of the video game artist’s original image, but are the result of the game’s
programming processes, which render the image in a three-dimensional form in a three-dimensional
space, with variations of light, shadow, distance, orientation and player perspective. These variables
also are affected by choices made by the individual player.

Because of these infinite variations that are possible within a single game, it may be possible with
many games that certain player inputs will cause screen imagery that will exceed the suggested limits
described below. Developers should try to design games that comply with the limits when the games
are played with normal gaming strategies and inputs, with the recognition that it may still be possible
for player inputs to cause sequences of images that may exceed the suggested limits, particularly if
the gameplay is idiosyncratic or counterintuitive. It must also be remembered that compliance with
these guidelines or with any other guidelines that have been or will be developed may reduce the
incidence of photosensitive seizures, but they will not eliminate them or eliminate seizures that occur
during video gameplay from causes other than the visual content of the games.

These guidelines attempt to take what medical science has learned about the images that can trigger
photosensitive seizures in the universe of susceptible individuals and, in a few paragraphs, apply it to
the infinite variety of imagery produced by modern video game technology. Medical research in this
area is still developing, and the particular susceptibilities of photosensitive persons vary widely from
individual to individual. As the developers of other guidelines have recognized, it is impossible to craft
guidelines that will eliminate all risk of seizures, and the measures taken should be proportionate to
the risks involved and should not stifle developers’ creativity, imagination, or freedom of expression. It
may be possible that a game, even though complying with the guidelines, may produce a problematic
sequence. Alternatively, a sequence out of compliance with the guidelines may not be problematic in
its context. It is therefore recommended that all games, before final release, be reviewed by one or
more persons knowledgeable about photosensitivity who can check for potentially problematic
sequences. It is also recommended that such persons review decisions to deviate from the guidelines
when that may be desirable for the artistic or creative imperatives of a game.

 2006-2009 Nintendo 25 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

These guidelines use the following lighting technology terms.


• Luminance is a quantifiable measurement of the observed brightness of an object—in this case, of a
video screen.
• Nits is a shorthand name for candelas per square meter, the metric system’s measurement unit for
luminance. (A candela is a measure of the candle power or angular density of light from a source).
• A photometer is a device that measures the luminance of an object. A photometer with CIE
characteristics is calibrated to match the response to various color spectra of the average human
eye.
• The RGB value of a color in a video display is a three-number representation of the intensities of,
respectively, the red, green and blue elements of the display that combine to form the color. Each
value is a number from 0 to 255. Consequently, an RGB value of (0,0,0) is black; and RGB value of
(255,255,255) is white; and an RGB value of (255,0,0) is pure red.
A video with sample footage has been prepared to illustrate and supplement the guidelines. When a
portion of the guidelines is illustrated by the video, the guidelines include a reference to the relevant
section of the video. The video provides supplemental illustrations and is not an essential part of the
guidelines, which can be used without the video.

5.2 Restrictions on Flashing Images and Lights [Recommended]


Do not use a sequence of images that:
2
(a) flashes so that the change in luminance of the flash exceeds 20 nits (candelas/meter ), and

(b) occupies more than one quarter of the screen, and

(c) has more than three flashes occurring in any one second period.

The sample video contains examples of luminance changes of different magnitudes in sections 1 (1),
1 (2), and 1 (3).

A flash is a pair of opposing changes in luminance: that is, an increase in luminance followed by a
decrease or a decrease followed by an increase. If the luminance measurements of successive
flashes over time are plotted using x and y coordinates (x=time, y=luminance), the shape of the
resulting plot will appear in profile as alternating peaks (frames of localized maximum brightness) and
valleys (frames of localized minimum brightness). Flashes should be evaluated for the change in
luminance between adjacent peaks and valleys. In games for NTSC monitors, no more than three of
these peaks (or, alternatively, no more than three valleys) should occur in any 30 consecutive frames.
In games for PAL monitors, no more than three peaks (or, alternatively, no more than three valleys)
should occur in any 25 consecutive frames.

Screen luminance can be measured or calculated as described in section 5.6 Screen Brightness
Calculations [Information].

RVL-06-0132-001-V 26  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

5.3 Restrictions on Flashing Saturated Red Colors [Recommended]


Do not use a sequence of images in which:

(a) the images produce flashes (regardless of the change in luminance of the flashes), and

(b) one of the images contains saturated red, and

(c) the saturated red occupies more than one eighth of the screen, and

(d) more than three flashes occur in any one second period.

The sample video contains examples of red flashing in sections 2 (1), 2 (2), and 2 (3).

Saturated red is a color whose RGB value for red is greater than 85 percent of the sum of the color’s
RGB values.

5.4 Restrictions on Image Reversals [Recommended]


If the luminance of the elements of an image that occupies more than one quarter of the screen is
switched or interchanged (for example, switching between the negative and positive of an image or
black and white images in which the black turns white while the white turns black, as in the samples
below), the changes in luminance should not exceed 20 nits or occur at a rate faster than that allowed
for flashing in section 1.

The sample video contains examples of images with switching luminance in sections 3 (1) and 3 (2).

5.5 Restrictions on Regular Patterns [Recommended]


Do not use an image that:

(a) consists of striped patterns composed of parallel lines or dots or other regular elements with
distinct edges, such as the samples below, and

(b) has “high contrast” between the bright and dark elements of the pattern, as defined below, and

(c) occupies more than one quarter of the screen, and

(d) has more than five light–dark pairs of stripes in any orientation.

 2006-2009 Nintendo 27 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

An image has “high contrast” when:

(i) the luminance of the brighter element of the pattern is 30 nits or more, and its contrast is greater
than 40% (contrast is (L1-L2)/(L1+L2), where L1 is the luminance of the brighter element of the
pattern and L2 is the luminance of the darker), or

(ii) the luminance of the brighter element of the pattern is less than 30 nits and the difference in
luminance between the brighter and darker elements (L1-L2) is 17 nits or more.

The sample video contains examples of patterns in sections 4 (1), 4 (2), 4 (3), and 4 (4).

The stripes may be parallel or radial, curved or straight, black and white, or a combination of colors.
Avoid especially stripes that oscillate or flash and moving stripes that change direction. Do not switch
the luminance of the lighter and darker stripes (so that the dark become light and vice versa). Striped
patterns that flow smoothly across, into, or out of the screen in one direction may be used.
Checkerboard patterns and plaids are acceptable.

5.6 Screen Brightness Calculations [Information]


Three methods can be used to measure luminance for games displayed on a cathode ray tube (CRT)
TV screen.
1. First, screen luminance can be measured directly from a monitor with a hand-held spot photometer
with a CIE characteristic designed for making measurements from a television screen. For consis-
tency, the display brightness and contrast should first be set up using PLUGE (Rec. ITU-R BT.814)
with peak white corresponding to a screen illumination of 200 nits. This corresponds to the display
conditions of the “home viewing environment” described in Recommendation ITU-R BT.500.
2. Second, the luminance (monochrome) voltage can be used to determine the emitted light output of a
television display that matches the “home viewing environment” described in the preceding
paragraph. The following graph and table show the typical relationship between voltage and screen
luminance for such a display in the NTSC format.

RVL-06-0132-001-V 28  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Screen Light Output in Nits versus Luminance Voltage Voltage Light


(mV) (cd/m2)
200 0 0.00
25 0.13
50 0.58
180
75 1.41
100 2.65
Light Ouput (nits) (candelas per square meter)

160 125 4.33


150 6.46
175 9.07
140 200 12.17
225 15.76
250 19.88
120 275 24.51
300 29.69
325 35.40
100
350 41.67
375 48.50
400 55.90
80
425 63.88
450 72.44
60 475 81.59
500 91.33
525 101.68
40 550 112.64
575 124.21
600 136.40
20 625 149.22
650 162.67
675 176.75
0
700 191.47
0 100 200 300 400 500 600 700
714
714 200.00
Voltage (millivolts)

The relationship between voltage and luminance is determined by the following formula:

2.2
mV
L= × 200
714

In this formula, L is luminance in nits or candelas per square meter, and mV is luminance voltage
in millivolts.
3. Third, luma (Y), which the Wii console converts and outputs, can be calculated from the RGB values
(from 0 to 255 each) of the Wii software side, by using the following formula:
Y = 0.257 × R + 0.504 × G + 0.098 × B + 16
Y is a value between 16 and 235. When NTSC composite video or S-terminal video outputs white
100%, the analog output voltage is 714 mV (except the synchronized level). These relationships
result in the following formula for converting RGB into screen luminance in nits on an NTSC
display:

 2006-2009 Nintendo 29 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

0.838 × R + 1.643 × G + 0.319 × B


2 .2

L= × 200
714

Therefore, the luma, analog voltage, and luminance of each color is as follows, when a standard
color bar is displayed:
Display Color (R/G/B) Y (Digital Value) Analog Voltage (mV) Luminance (nits)

White (255/255/255) 235 714 200

Yellow (255/255/0) 210 633 153

Light Blue (0/255/255) 169 501 92

Green (0/255/0) 144 419 62

Purple (255/0/255) 106 295 29

Red (255/0/0) 81 214 14

Blue (0/0/255) 40 81 2

Black (0/0/0) 16 0 0

The preceding calculations assume that the programmer has selected a gamma ( ) of 1.0, as
recommended in the section “Gamma Correction” in the Revolution Graphics Library, contained in the
Revolution SDK. If a different gamma is selected, it must be accounted for in the formula:

1 1 1 2.2

R γ G γ B γ
213.714 × + 418.169 × + 81.498 ×
L= 255 255 255 × 200
714

RVL-06-0132-001-V 30  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

6 Video
6.1 Display Within the Safe Frame [Recommended]
Decide on the display position based on the importance of the information to be displayed.

The size of the safe frame in Wii depends on the specific TV set. However, in general, with a 4:3
aspect ratio, the safe frame width will be approximately 84.4 percent of the maximum valid horizontal
display width in the horizontal direction and approximately 80.8 percent of the maximum valid vertical
display height regardless of the display format. With a 16:9 aspect ratio, the safe frame horizontal
width and vertical height will both be approximately 87 percent of the maximum valid display frame.

For details on safe frames, see the Wii Video Interface Library (VI) manual.

6.2 Video Settings [Information] [Deleted]


(Deleted because this content overlapped with other paragraphs in Chapter 6 Video.)

6.3 Support for Progressive Display [Recommended]


We recommend adding application support for progressive display output.

However, this recommendation need not be followed when it is not feasible because field rendering is
used or for other reasons.

6.4 Settings and Display When Progressive Display Is Supported


[Required]
If the application supports progressive display, support the display format selected on the Wii
console’s TV Resolution setting screen to present either an interlaced display or progressive display.

6.5 Procedure for Switching from Progressive Display to Interlaced


Display [Recommended]
If the scan mode is progressive display when your application starts, but your application does not
support progressive display, use the following procedure to switch the screen to interlaced display.

[Black screen] [Switch from progressive to interlaced] [Black screen] [Wait for around 100
frames] [Strap Usage screen]

Only do this switch once. During the switch between interlaced and progressive display, the screen
will be distorted and require a few dozen frames before returning to normal.

For details on display switching, see “Recommendations for Progressive Display” in the Wii Video
Interface Library (VI) manual.

 2006-2009 Nintendo 31 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

To read about the Strap Usage screen, see section 7.1.3 Explanatory Message for Wii Remote Strap
Use [Required].

6.6 Addition of Interlaced/Progressive Switch Operation


[Recommended] [Deleted]
(Deleted because there is no operation switching display mode from interlaced to progressive.)

6.7 Reset Operation During Progressive Output [Recommended]


[Deleted]
(Deleted because the information duplicates the content in section 6.5 Procedure for Switching from
Progressive Display to Interlaced Display [Recommended].)

6.8 Televisions That Support Progressive Output [Recommended]


Avoid displaying important messages in small fonts, natural images, or per frame flash effect in non-
interlaced (double-strike mode) display.

Some televisions that support progressive output may perform scan line interpolation. You may not be
able to achieve the desired screen display on such a television.

6.9 PAL 50 Support [Required]


Always support PAL 50 in the European and Australian versions of the application.

6.10 Settings and Display for EURGB60 Supported Application


[Required]
If the application supports EURGB60, display in either PAL 50 or EURGB 60, based on the mode
configured on the Wii console.

6.11 Switching from EURGB60 to PAL [Recommended]


If the TV mode is EU RGB 60 when your application starts but your application does not support EU
RGB 60, use the following procedure to switch the screen to PAL.

[Black screen] [Switch from EU RGB 60 to PAL] [Black screen] [Wait for around 100 frames]
[Strap Usage screen]

Only do this switch once.

During the switch between PAL and the EURGB60 display, the screen will be distorted and require a
few dozen frames before returning to normal.

For details on display switching, see “EURGB60 Mode” in the Wii Video Interface Library (VI) manual.

RVL-06-0132-001-V 32  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

For details on the Strap usage screen, see section 7.1.3 Explanatory Message for Wii Remote Strap
Use [Required].

6.12 Addition of PAL/EURGB60 Switch Operation [Recommended]


[Deleted]
(Deleted because there is no operation switching from PAL to EU RGB 60.)

6.13 Reset Operation During EURGB60 Output [Recommended]


[Deleted]
(Deleted because the information duplicates the content in section 6.11 Switching from EURGB60 to
PAL [Recommended].)

6.14 Maintaining Appropriate Video Output [Required] [Deleted]


(Deleted because this is checked by the Video Interface library, so the application does not need to
support it.)

6.15 Display Method for the 16:9 Aspect Ratio [Recommended]


When supporting a 16:9 aspect ratio, we recommend implementing the anamorphic widescreen
technique.

The anamorphic widescreen technique horizontally compresses 16:9 aspect ratio video so that it
ends up with a 4:3 aspect ratio. The technique produces widescreen video with higher quality and
higher resolution than the letterbox method.

Anamorphic widescreen video can be restored to the original 16:9 video by having the television
stretch out the display uniformly in the horizontal direction. This type of television display mode is
generally referred to as “full,” and most widescreen televisions support display in full mode.

Moreover, Wii prompts users to set the television to full mode when the screen mode has been set to
16:9 in the Wii System Settings.

For details, see the Wii Video Interface Library (VI) manual.

6.16 Settings and Display for Applications That Support the 16:9 Aspect
Ratio Display [Required]
If an application supports the 16:9 aspect ratio, be sure that the display is done in either the 4:3 or the
16:9 aspect ratio, depending on the aspect ratio set for the Wii console.

Although it is acceptable for an application to have a separate aspect ratio setting, the Wii console
settings should be referenced when the application is first launched and reflected in those separate
settings.

 2006-2009 Nintendo 33 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Applications not supporting the 16:9 aspect ratio may ignore the Wii console setting.

6.17 Trap Filter [Recommended]


When there is a large contrast in brightness, such as with a white font on a black screen or a black
font on a white screen, and a small font size is used, enable the trap filter.

If the trap filter is disabled when displaying such an image on some CRT television sets with high
contrast, the effect of cross color may become pronounced and distort the outlines of characters.

6.18 Support for the 4:3 Aspect Ratio [Required]


Applications must always offer support for the 4:3 aspect ratio. Do not create applications on the
assumption that they will only be displayed in the 16:9 aspect ratio.

For details, see the Wii Video Interface Library (VI) manual.

If your application is based on the mode with 16:9 aspect ratio, rather than preparing a separate
screen with 4:3 aspect ratio you could instead create a letterboxed screen with bands at the top and
bottom, outside the rendering area, and use it as the 4:3 aspect ratio mode.

For more information on displaying static images, see section 6.24 Avoiding Screen Burn-In Caused
by Static Display [Information].

6.19 Checking the On-Screen Display During Application Startup


[Required]
Regardless of the display mode used for the Wii menu, you must verify that an application can be
displayed normally. Although applications are not required to support all display modes (progressive,
EURGB60, and 16:9), the Wii menu does include all display modes. For example, applications that do
not support progressive display must be displayed normally even if the Wii menu is being displayed in
progressive mode.

For more information, see the Wii Video Interface Library (VI) manual.

6.20 Check Before Switching to Progressive Display [Required]


Before switching to progressive display, get the scan mode in the Wii Menu using the VIGetScanMode
function and then switch to the appropriate display method based on that information.

See the “Progressive Display” chapter in the Wii Video Interface Library (VI) manual for more
information on how confirmation is actually done.

6.21 Applying Screen Burn-In Reduction Setting [Required]


When the screen burn-in reduction setting on the Wii console is ON, do not disable the screen burn-in
reduction feature with the application.

RVL-06-0132-001-V 34  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

In situations where the power to the Wii Remote Pointer will be turned off and on repeatedly, make
sure this does not have the effect of repeatedly resetting the screen burn-in reduction feature, since
this in effect renders the feature inoperative. (See section 7.2.4 Disabling Pointer for Applications with
Pointer Function [Recommended] to read about turning the power to the Pointer on and off.) If it is
necessary to disable the screen burn-in reduction feature due to application specifications regardless
of the console settings, first determine whether to disable the feature after meeting the following two
conditions and giving due consideration to whether there is a possibility of screen burn-in occurring.

• Prepare video appropriate for televisions of 4:3 and 16:9 aspect ratios.
By supporting televisions of both 4:3 and 16:9 aspect ratios, you can supply the appropriate video
output regardless of the user's television aspect ratio.

• The display of all pixels output from the Wii console changes.
Even if characters are moving, if the camera is fixed and there is a fixed display, such as TIME or
SCORE, then it cannot be said that the display for all the pixels changes. So, do not disable screen
burn-in reduction.

For details, see the Wii Video Interface Library (VI) manual and function reference.

6.22 Changing Screen Burn-In Reduction Wait Time [Recommended]


Unless required otherwise, do not change the wait time before the screen burn-in reduction from the
default of five minutes. In addition, if the value is to be changed, do not set a value longer than
required.

6.22.1 Restrictions for Non-Activation of Screen Burn-in Reduction [Required]


[Deleted]
(Deleted because it was restructured as sections 6.21 Applying Screen Burn-In Reduction Setting
[Required] and 6.22 Changing Screen Burn-In Reduction Wait Time [Recommended].)

6.23 Support for 16:9 Aspect Ratio [Recommended]


Support for the 16:9 aspect ratio is recommended.

This is because 16:9 widescreen televisions are expected to become predominant in the future.

For details, see the Wii Video Interface Library (VI) manual.

If your application is based on the mode with the 4:3 aspect ratio rather than preparing a separate
screen with the 16:9 aspect ratio, you could instead create a pillarboxed screen with bands on the
sides, outside of the rendering area, and use it as the 16:9 aspect ratio mode.

See section 6.24 Avoiding Screen Burn-In Caused by Static Display [Information] for more information
on displaying static images.

 2006-2009 Nintendo 35 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

6.24 Avoiding Screen Burn-In Caused by Static Display [Information]


Although the Wii console has a feature to decrease display brightness in order to reduce screen burn-
in, be aware that other factors (such as those listed below) may cause screen burn-in, depending on
the television’s display method.

• Only the area of the 4:3 aspect ratio is drawn for a 16:9 display, and the margins to the left and right
are filled in with static images.
• The margins above and below the drawing area, such as during playback of movies, are filled in
with static images.
• Text such as times and scores that do not change for long periods and are displayed continuously.
In general, when static images or non-moving text are displayed brightly (that is, displayed using
colors that are close to the primary colors), screen burn-in will be particularly noticeable for text, its
surrounding area, and boundary lines between static images and animated areas.

If it is necessary to generate a static display, such as in the examples listed above, you may want to
consider applying the following methods in order to avoid screen burn-in.

• Confine to 15 minutes situations wherein the same content is displayed continuously.


• Use a display that has low overall brightness.
• Change the brightness of the display.
• Display margins with the same approximate brightness as the drawing area.
• When changing screens, use the same color or pattern as the margin uses for the entire screen.

6.25 Standardizing Aspect Ratios [Required]


Within your application, standardize the aspect ratio that is used to display packages provided by
Nintendo, such as the Strap Usage screen and the HOME Menu.

For example, when an application only supports a 4:3 aspect ratio, including a 16:9 aspect ratio for
the HOME Menu would be prohibited.

If the aspect ratio only differs for packages provided by Nintendo, as in this example, the user must
either put up with the situation or manually make temporary changes to the screen settings whenever
the application switches the aspect ratio (because the television aspect ratio will not switch
automatically).

6.26 Interlaced Display When Supporting Double-Strike Mode [Required]


Allow interlaced display when double-strike mode is supported.

Otherwise, some televisions and projectors will not be able to display properly in double-strike mode.

RVL-06-0132-001-V 36  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

7 Controllers
7.1 All Controllers
7.1.1 Display When a Controller Other than the Wii Remote Is Necessary [Required]
When a controller other than the Wii Remote is required, the application should display a message
similar to message CONT_01 or CONT_02 in the Wii Message List at startup or before the controller
is to be used by the application.

The purpose of this requirement is to inform the user of the need for a controller other than the Wii
Remote for gameplay.

If more than one type of controller is required, this information should be displayed for each type.

However, it is optional to display a message for an extension controller that connects to the Wii
Remote only when it is confirming that this controller has been connected.

For more information on startup processing for applications that require a USB keyboard, see section
14.4 Processing During Startup When a Keyboard Is Required [Required].

7.1.2 Avoiding Game Design Forcing Extended Continuous Operation or Strenuous


Activity [Information]
To prevent the user from experiencing physical injuries such as RSI, avoid game designs that force
the following types of controller operations for extended periods of time.

• Strenuous actions, such as swinging around


• Repetitive motion in a single direction
• Keeping the controller frozen in a stationary position
In particular, make sure the game design does not require users to compete using strenuous actions
or to repeat strenuous actions for an extended period of time to progress in the game.

We recommend inserting an appropriate number of scenes where no controller operations are


necessary.

Also, during development, use multiple game testers to evaluate whether excessive stress is placed
on the body.

7.1.3 Explanatory Message for Wii Remote Strap Use [Required]


Immediately after starting an application that uses the Pointer, Motion Sensor, or both, display a
message prompting the user to check that the Wii Remote wrist strap is attached. The message
should also indicate that when using a controller connected to the Wii Remote, including the Nunchuk,
put the wrist strap through the connector hook.

Be sure to use the image and text included in the Wii Strap Reminder package to prompt strap
attachment. Unless you have obtained Nintendo’s prior permission, this image and text must be used

 2006-2009 Nintendo 37 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

by all software. In addition to the image and text for prompting use of the strap, the prompt screen
also includes an image and text for prompting use of the safety hook when using the Nunchuk. See
the Wii Strap Reminder package for the display sequence of these texts and images.

Select the text and images to be displayed in the strap attachment prompt screen from English,
French, and Spanish for North American market software; and English, German, French, Spanish,
Italian, and Dutch for European market software, based on the language setting of the Wii console.
Note that this language selection is separate from the language supported by the software application.

There may be games where this requirement is not necessary, such as where the controller use is
limited to horizontal use of the Wii Remote and you are holding it with both hands. Contact
[email protected] if you believe your game design does not require the Strap Usage screen.

For applications that support the Wii Zapper, see section 7.4.1 Displaying the Wii Zapper Usage
Screen [Required].

7.1.4 Handling +Control Pad Input [Required]


Make sure that simultaneously pressing the up and down or left and right directional buttons on the
+Control Pad of the Wii Remote, Classic Controller, and Nintendo GameCube Controller does not
cause program malfunctions or other problems.

Up and down input or left and right input can be provided at the same time depending on the usage
environment.

Ways to handle simultaneous pressing of the up and down or left and right buttons are as follows.

• Attach priority levels to up/down and left/right directions.


• Treat the input as NULL (no input).
Although prohibition processing takes place in the WPAD library for the +Control Pad on both the Wii
Remote and Classic Controller, other measures are required to handle bitwise-OR’ed input from both.

7.1.5 Operations on the Unused Buttons [Required]


Make sure there is no program malfunction when an unused button is pressed. This also applies to
cases where second or third controllers are used or where a non-supported extension controller is
used in an application that uses only the first controller.

There is a chance for a button not used in the application to be input. Unexpected inputs may also
come from peripheral devices.

Be especially careful when a button not used in the application can perform actions, such as the
startup of debug mode.

7.1.6 Lower Limit Value of the Control Stick and Button Analog Input Value
[Recommended]
To prevent the application from acknowledging input when Control Sticks or buttons are not being
used, give an extra allowance to the lower limit value.

RVL-06-0132-001-V 38  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

When a user is not touching the Control Sticks or any buttons, the coordinates given by the Control
Sticks or the buttons will not necessarily be those of the origin point. The offset given here will vary for
each controller, and will further show some variance each time the controller is used.

See the entries for WPADClampStick and the various clamp functions in the PAD library.

7.1.7 Taking Differences Between Analog Values from Buttons and Control Sticks
into Account [Required]
Use a range of values that allow input from any controller when the origin has been set correctly. This
is because there are differences among individual controllers, which can cause buttons and Control
Sticks that receive analog input to have different possible input ranges.

For example, a Control Stick on one controller may not necessarily give the same input value as the
Control Stick on another controller when both are tilted as far as possible.

For information on the range of values that can be input from any controller when the origin has been
set properly, see the reference for the various clamping functions in the WPAD and PAD libraries.

7.1.8 Support for Analog Input Values Defined for Control Sticks and Buttons
[Required]
Prevent irregular behavior for any value that is returned within the range defined for each controller.
The range of possible input values from buttons and Control Sticks that get analog input is defined for
each controller type.

When the origin has been set correctly, a Control Stick will not necessarily return the maximum value
or the minimum value when, for example, it is tilted as far as possible. When the origin has shifted, on
the other hand, the Control Stick may return the maximum or minimum value even if it has not been
tilted as far as its limit.

7.1.9 Regarding Applications That Support the Rumble Feature [Required]


In applications that require the Rumble Feature for the player to progress, make sure to have an
alternative presentation using images or sounds when the Rumble Feature is turned off so that the
application can progress without problems. Not doing so will cause problems when the user has
turned off the Rumble Feature or is using the WaveBird controller, which has no Rumble Feature.

We consider an application that requires the Rumble Feature to be one that cannot be finished
without using the Rumble Feature.

The enabled state of the Nintendo GameCube Controller Rumble Feature can be checked with the
return value of the PADRead function.

7.1.10 Avoiding Continuous Operation of the Rumble Motor [Recommended]


If possible, avoid continuous operation of the Rumble Motor.

A Rumble Motor that operates indefinitely from a single button press is not desirable from both a
safety and a product lifespan point of view.

 2006-2009 Nintendo 39 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

7.1.11 Stopping Rumble Motor When Controller Not in Use [Required]


The Rumble Motor must be stopped during a pause or after a reset. Also, do not start the Rumble
Motor after turning on or resetting the console until there is some form of controller input. In particular,
make sure not to use the Rumble Feature with the demo screen.

A Wii controller that is vibrating because the Rumble Motor is running while not in the user’s hand
may fall from a table or a desk.

7.1.12 Rumble Motor Run/Stop Switch Frequency [Recommended]


Do not switch between running and stopping the Rumble Motor more frequently than 100 times a
second. Due to the wireless specifications, controlling the Rumble Motor at higher frequencies is
difficult.

7.1.13 Hot Swapping Extension Controllers [Recommended]


Do not have the user insert/remove extension controllers unless it is necessary. This is to reduce
connector wear.

7.1.14 Frequency Band Usage When Using a Wireless LAN [Information]


The Wii Remote uses the same 2.4-GHz frequency band as some wireless LANs. The WPAD library
has therefore been equipped with functionality for automatically avoiding interference.

7.1.15 Do Not Use Origin Reset Command for Extension Controller Analog Input as
Game Input [Required]
Do not use commands in applications that include use of the – Button, + Button, A Button, and
B Button at the same time, since this command is used to reset the origin for analog input to the
extension controller. The origin can be reset by holding these buttons down for 3 seconds.

7.1.16 Processing Hot Swapping of Unsupported Extension Controllers [Required]


Make sure that the application operates normally when an unsupported extension controller is
connected or disconnected.

While an unsupported extension controller is connected, do one of the following.

• Display a warning message and stop game progress until the extension controller is disconnected.
• Operate the Wii Remote processes as if no controller is connected (input handling for the extension
controller is unspecified).
To verify behavior when an unsupported extension controller is hot swapped, the
WPADAttachDummyExtension and WPADDetachDummyExtension are provided for debugging purposes.
For usage information, see the WPAD library function reference in Revolution SDK.

RVL-06-0132-001-V 40  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

7.1.16.1 User Notification Regarding Hot Swapping of Unsupported Extension Controllers


[Recommended]
While an unsupported extension controller is connected, we recommend displaying a message that
notifies the user that an unsupported extension controller is connected, even when you are using the
same processing as when no extension controller is connected.

7.1.17 Handling HOME [Required]


Do not use HOME for any purpose other than displaying the HOME Menu. For details about the
HOME Menu, see Chapter 11 HOME Menu.

7.1.18 Handling of the Wii Remote Jacket [Required]


Comply with the following guidelines on how to handle the Wii Remote Jacket in an application.

Applications are divided into two groups: general applications and applications that support the use of
Wii Remote attachments (such as the Wii Zapper and Wii Wheel). Follow the appropriate item
corresponding to a title’s gameplay.

In principle, equivalent support for the following items applies to instruction manuals as well.
7.1.18.1 Wii Remote Jacket Usage Table for General Applications
General applications are divided into three categories that determine whether the Strap Usage screen
and the Wii Remote Jacket confirmation screen are required.

I. Games controlled by swinging the Wii Remote quickly, frequently or with a high range of
motion

II. Games that are controlled normally and do not fit in either Category I or III

III. Games controlled exclusively by holding the Wii Remote horizontally with both hands, or by
using the Wii Remote in a manner equivalent to a television remote control

Although it is difficult to distinguish between Categories I and II, refer to the Examples row in Table
7-1 to decide how your game would be categorized.

See section 7.1.18.2 Wii Remote Jacket Usage Table for Applications Using Attachments for
information on applications that support Wii Remote attachments such as the Wii Zapper and the Wii
Wheel.

 2006-2009 Nintendo 41 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Table 7-1 Wii Remote Jacket Usage Table for General Applications

Type General Application

Category I II III

Game controls for which


Game controls that involve the Wii Remote is always
Wii Remote Operations Normal game controls that
swinging the Wii Remote held horizontally with both
are not applicable to either
(see Examples) quickly, frequently, or with hands, or controls that are
Category I or III
a high range of motion equivalent to the remote
control for a television

Super Mario Galaxy


Wii Sports Fire Emblem: Radiant
Big Brain Academy: Wii Dawn
1 Mario Party 8
Examples Degree
Mario & Sonic at the Virtual Console titles
WarioWare: Smooth
Olympic Games News Channel
Moves

Not required
Strap Usage screen Required
(acceptable if present)

Display if the person in charge of game development


2
believes it should be required
Screen and messages to confirm (If you plan to display, contact [email protected] to
that the Wii Remote Jacket has inform Nintendo ahead of time of the control and N/A
been attached content of the display.)

Display recommended Display not required

The Wii Remote Jacket in images The person in charge of game development should
within descriptions of the controls consider this issue based on the controls and make this
2
and other text that shows the Wii determination
Remote being held No Wii Remote Jacket
(includes animations that show (acceptable if present)
Images with the Wii No Wii Remote Jacket
how to swing the Wii Remote or Remote Jacket are
other controllers, even if not being recommended (acceptable if present)
held in a hand)

The Wii Remote Jacket in demo The person in charge of game development should
movies and videos within games consider this issue based on the controls and make this
2 No Wii Remote Jacket
determination
(when in-game characters are
(acceptable if present)
holding the Wii Remote in their No Wii Remote Jacket
Images with Wii Remote
hands)
Jacket are recommended (acceptable if present)

The Wii Remote Jacket in images


of the Wii Remote by itself No Wii Remote Jacket
(in descriptions of the buttons and (acceptable if present)
other such cases)

1
Note that the titles given are examples of usage, but the Strap Usage screen and implementation of attaching the Wii
Remote Jacket might differ from the table for some titles due to their release dates.
2
The basic policy is that other than the requirement to display the Wii Remote Jacket on the Strap Usage screen, the
person in charge of the game’s development should determine whether the Wii Remote Jacket is required for the game.
This determination should be made with a full understanding of the reasons why Nintendo released the Wii Remote
Jacket.

RVL-06-0132-001-V 42  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDKRevolution SDK

7.1.18.2 Wii Remote Jacket Usage Table for Applications Using Attachments
Attachments such as the Wii Zapper and Wii Wheel cannot be attached to the Wii Remote along with
the Wii Remote Jacket. Therefore, applications that use them differ from general applications.

Applications that use attachments, as shown in the examples below, are divided into two categories:
attachment-only applications and attachment-compatible applications. Attachment-only applications
assume that an attachment will be used, without consideration for playing styles that do not use an
attachment. For example, Link’s Crossbow Training uses the Wii Zapper exclusively and is therefore
always packaged with a Wii Zapper. Attachment-compatible applications provide playing styles for
both using and not using an attachment.

The illustration for the Strap Usage screen will differ for each type of attachment, so if a screen
illustrating how to hold the controller is required, prepare a usage screen specific to each attachment.
For example, an application that uses the Wii Zapper requires the Wii Zapper Usage screen, but
there is no need to prepare a usage screen for the Wii Wheel.

Follow the instructions in Table 7-1 for attachment-compatible applications when an attachment is not
in use. The inclusion of the Strap Usage screen is determined on a case-by-case basis.

Table 7-2 Wii Remote Jacket Usage Table for Applications Using Attachments

Attachment-Only Attachment-Compatible
Type
Application Application

Use of the attachment is Playable with or without the


Category
required for play attachment

Examples Link’s Crossbow Training Mario Kart Wii

Strap Usage screen N/A Required

Depends on the specifications for the attachment (for


Attachment Usage screen
example, the Wii Zapper screen is required for the Wii Zapper)

Screen or Message to confirm that the Wii


Prohibited
Remote Jacket has been attached

The Wii Remote Jacket in images within


descriptions of the controls and other text that
No Wii Remote Jacket (display the Wii Remote connected
shows the Wii Remote being held (includes
to the attachment)
movies that show how to swing the Wii Remote or
other controllers, even if not being held in a hand)

The Wii Remote Jacket in demo movies and


No Wii Remote Jacket (display the Wii Remote connected
videos within games (when in-game characters
to the attachment)
are holding the Wii Remote in their hands)

The Wii Remote Jacket in images of the Wii


No Wii Remote Jacket (display the Wii Remote connected
Remote by itself (in descriptions of the buttons
to the attachment)
and other such cases)

Note: The basic policy is that other than the requirement to display the Wii Remote Jacket on the
Strap Usage screen, the person in charge of the game’s development should determine
whether the Wii Remote Jacket is required for the game. This determination should be made
with a full understanding of the reasons why Nintendo released the Wii Remote Jacket.

 2006-2009 Nintendo RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

7.2 Wii Remote


7.2.1 Using the Relative Distance Between the Wii Remote and the Sensor Bar
[Recommended]
Be sure to use a relative distance for the distance to the Sensor Bar. For example, do not use an
absolute distance such as the distance in centimeters between the Wii Remote and the Sensor Bar.

7.2.2 Handling HOME [Required] [Deleted]


(Moved to section 7.1 All Controllers.)

7.2.3 Disabling Pointer for Applications Without Pointer Function [Required]


To save battery power in the Wii Remote, turn off power to the Pointer in applications other than the
HOME menu that do not use the Pointer functionality.

For details about the HOME Menu, see Chapter 11 HOME Menu.

7.2.4 Disabling Pointer for Applications with Pointer Function [Recommended]


Even if the application does use the Pointer function, turn off power to the Pointer in scenes that do
not use the Pointer. This is to preserve battery power in the Wii Remote.

It is not necessary to disable and enable the Pointer frequently. You can disable and enable the
Pointer with the WPADControlDpd function in the WPAD library. When using the KPAD library, you can
disable it with the KPADDisableDPD function and enable it with the KPADEnableDPD function.

Note: The two latter functions internally call the WPADSetDataFormat function, so if the Pointer is
turned on and off, the data format will change. As a result, the burn-in reduction feature will be
rendered inoperative.

To read about the burn-in reduction feature, see section 6.21 Applying Screen Burn-In Reduction
Setting [Required] in the Wii Video Interface Library (VI) manual and the “Video Interface Library”
section of the Revolution Function Reference Manual.

7.2.5 Prohibition of Simultaneous Use of Wii Remote Memory and Wii Remote
Speaker [Required]
The Wii Remote speaker cannot be used while accessing Wii Remote memory. Stop using one before
using the other.

The reason for this is that the Wii Remote speaker cannot output correctly if it is used at the same
time as the Wii Remote memory.

7.2.6 Restriction on Contents of Data Written to Wii Remote Memory [Required]


Store data in Wii Remote memory in such a way that it will not interfere with game progress if data is lost.

This requirement is due to the fact that there is a possibility that data in Wii Remote memory may be
overwritten when another game is played.

RVL-06-0132-001-V 44  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Only use Wii Remote memory to store data that can be recovered from data in Wii console NAND
memory when data is lost, or to store temporary data that will not interfere with game progress even if
lost.

7.2.7 Wii Remote Data Error Checking [Required]


When using data from Wii Remote memory, always perform error checking using a method such as
checksum. Also, if an error is detected through error checking, make sure that this does not cause
any lock-ups.

Example of error checking:

3884 bytes data + 4 bytes checksum

7.2.8 Message Display When Writing to Wii Remote Memory [Required]


When writing data to Wii Remote memory, display a message similar to CONT_03 in the Wii Message
List to prevent the user from inserting or removing an extension controller while writing to Wii Remote
memory.

This is due to the fact that some data being written to Wii Remote memory may be corrupted if the
extension controller is removed or inserted during a write operation.

7.2.9 Message Display When Loading Wii Remote Memory [Recommended]


When reading data from the Wii Remote memory, display a message similar to CONT_03 in the Wii
Message List to prevent the user from inserting or removing the extension controller while reading Wii
Remote memory.

Data read from Wii Remote memory may be corrupted if the extension controller is inserted or
removed during a read operation.

7.2.10 Handling WPAD_ERR_TRANSFER or WPAD_ERR_BUSY Errors When Writing


to Wii Remote Memory [Required]
Be sure to perform verification after writing data to Wii Remote memory. If WPAD_ERR_TRANSFER or
WPAD_ERR_BUSY errors occur during verification, attempt to rewrite as many as three times.

If rewriting to the Wii Remote memory fails three times because of WPAD_ERR_TRANSFER or
WPAD_ERR_BUSY errors, then the Wii Remote controller is physically damaged. In this case, display the
CONT_04 error message exactly as written in the Wii Message List.

7.2.11 Handling WPAD_ERR_TRANSFER or WPAD_ERR_BUSY Errors When


Reading from Wii Remote Memory [Required]
If WPAD_ERR_TRANSFER or WPAD_ERR_BUSY errors occur while reading data from Wii Remote memory,
either attempt to reread up to three times or use error correction on the data that was read.

 2006-2009 Nintendo 45 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

If rereading from the Wii Remote memory fails three times because of WPAD_ERR_TRANSFER or
WPAD_ERR_BUSY errors, the Wii Remote controller is physically damaged. In this case, display the
CONT_04 error message exactly as written in the Wii Message List.

7.2.12 Data Compatibility for the Same Application Using Wii Remote Memory
[Required]
Maintain compatibility of the save data when releasing post-release updates to game programs.

7.2.13 Prohibition of Operations Dependent on Wii Remote Memory Access Speed


[Required]
The Wii Remote memory’s access speed depends on various external factors, such as signal
conditions. Make sure that there are no memory access speed-dependent operations that may result
in an application malfunction.

7.2.14 Handling Data Corruption in Wii Remote Memory [Recommended]


When an error is detected using a checksum of the data in Wii Remote memory or by other such
means, or if the WPADReadGameData function returns WPAD_ERR_BROKEN, display a message similar to
CONT_05 in the Wii Message List.

After displaying the message, it is acceptable to overwrite the data in Wii Remote Memory.

7.2.15 Displaying a Message when Overwriting Wii Remote Memory [Required]


When overwriting data from another game in the Wii Remote memory, display a message similar to
CONT_06 or CONT_07 in the Wii Message List.

7.2.16 Continuous Play on the Wii Remote Speaker [Recommended]


If data is played from the Wii Remote speaker for more than 8 continuous minutes, the sound may
crackle or skip. To prevent sound from crackling or skipping, we recommend implementing one of the
following two measures within 8 minutes after sound starts playing.

• Send WPAD_SPEAKER_ON with the WPADControlSpeaker function and then restart the speaker.
• Do not send sound to the Wii Remote for 1 second or more.
Crackling and skipping is caused because the speed of sound processing on the Wii console and Wii
Remote do not match exactly for the individual hardware. When the Wii console speed is faster,
crackling occurs; when the Wii Remote speed is faster, skipping occurs.

7.2.17 Processing when No Output Occurs on the Wii Remote Speaker


[Recommended]
For scenes where sound is not output from the Wii Remote speaker for a period of time, we
recommend stopping the speaker by sending WPAD_SPEAKER_OFF with the WPADControlSpeaker
function.

RVL-06-0132-001-V 46  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

However, if the speaker is frequently started and stopped for scenes with sound frequently output, Wii
Remote operations may be affected. It is acceptable to choose not to frequently start and stop the
speaker in these situations. We recommend that in place of starting and stopping you leave the
speaker on and turn MUTE ON/OFF by sending WPAD_SPEAKER_MUTE_OFF and WPAD_SPEAKER_MUTE
with the WPADControlSpeaker function.

7.2.18 Speaker Sound Quality Under Poor Signal Conditions [Recommended]


When playing sound from the Wii Remote speaker, we recommend checking the signal conditions
using the WPADCanSendStreamData function. This is to prevent sound from crackling due to
specifications when signal conditions are poor.

Applications cannot detect crackling sounds. The WPADCanSendStreamData function returns whether
crackling is occurring at the time when sound is sent to the Wii Remote. When TRUE is returned,
sound can be sent without crackling. However, if data is not sent when FALSE is returned, note that
that portion of sound is omitted (skipped). In addition, if sound is not sent from the result of the return
value of the WPADCanSendStreamData function, there is no need to restart the speaker in regards to
the skipping.

For specific use of this function, see the WPAD sample demo in Revolution SDK.

7.2.19 Displaying a Message Notifying the User That Battery Charge Is Low
[Recommended]
When informing the user that Wii Remote battery power is low, display either an icon or a message
similar to CONT_09 in the Wii Message List.

While it is true that the user can confirm the battery charge for the Wii Remote at any time using the
HOME Menu, the application might encounter problems if the battery for the Wii Remote were to
suddenly become depleted.

7.2.20 Displaying a Message Notifying Users That Wii Remote Transmissions Have
Terminated [Recommended]
When Wii Remote communications have been interrupted, display a message similar to CONT_10 in
the Wii Message List.

This is to prevent a situation where, for example, during an action-intensive game, communication
from the Wii Remote is suddenly terminated, and the game progresses without the user
understanding the reason for the sudden loss of control.

7.2.21 Application of Pause Function at Termination of Wii Remote Communication


[Information]
It is preferable to pause the application when communication from Wii Remote is terminated.

 2006-2009 Nintendo 47 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

7.2.22 Specification of Simple Pairing Procedure [Required]


Applications supporting simple pairing must perform this synchronization when the 1 Button and the 2
Button are pressed simultaneously.

The same buttons are used as the simple pairing in the HOME Menu to avoid user confusion.

7.2.23 Message Displayed During Simple Pairing [Required]


Applications supporting simple pairing must display a message similar to CONT_11 in the Wii
Message List when performing simple pairing.

7.2.24 Display Format for Simple Pairing [Required] [Deleted]


(Deleted so that the term “One Time Mode Synchronization” is mentioned only in the Wii Terminology
like other terms.)

7.2.25 Use of Function WPADSetSpeakerVolume Prohibited [Required]


Adjust the Wii Remote speaker volume from the application by converting waveform data sent to the
Wii Remote instead of using the WPADSetSpeakerVolume function.

7.2.26 Settings for Automatic Disconnection of Wii Remote Communications


[Recommended]
The time limit for automatically disconnecting communication with the Wii Remote should not be
made longer than the default 5 minutes unless absolutely necessary. If you do change it, do not set it
to an unnecessarily long time.

This is to keep battery consumption of the Wii Remote to a minimum.

For example, in cases where a movie lasting 5 minutes occurs within a game and there will not be
any user operations for a long time, there is no problem with extending the time limit in light of the
length of the movie. However, we recommend restoring the time limit to the default 5 minutes after
returning to the game.

The time limit for automatic disconnection can be set with the WPADSetAutoSleepTime function.

It is acceptable to make the time limit for automatic disconnection shorter than 5 minutes. For
example, because the default setting for screen burn-in reduction is also 5 minutes, it is acceptable to
set the automatic disconnection time to 4 minutes to avoid making it more difficult for the user to see
the “Communications with the Wii Remote have been interrupted” message, which would otherwise
appear almost simultaneously with the dimming of the screen.

See sections 6.22 Changing Screen Burn-In Reduction Wait Time [Recommended] and 7.2.20
Displaying a Message Notifying Users That Wii Remote Transmissions Have Terminated
[Recommended].

RVL-06-0132-001-V 48  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

7.2.27 Handling When a Wii Remote Is Connected to a Player Number Not Used by
the Application [Recommended]
If Wii Remotes are connected to player numbers not being used, we recommend they be
disconnected immediately in order to keep the battery consumption of these Wii Remotes to a
minimum.

For example, assume that two Wii Remotes can be used by a particular application. If Wii Remotes
with player numbers 3P or 4P are connected while this application is running, you should disconnect
them immediately.

When returning to the application from the HOME Menu, a Wii Remote may have been connected in
the HOME Menu, so verify the Wii Remote connection count restrictions.

7.2.28 Handling Wii Remote Acceleration Noise [Required]


If your application makes use of very small acceleration values, be sure to keep in mind the existence
of Wii Remote acceleration noise.

For more information, see the Wii Controller Overview.

7.3 Peripheral Devices That Connect to the Nintendo GameCubeTM


Controller Sockets
Applications that support the Nintendo GameCube Controller and other peripherals that connect to
the Nintendo GameCube Controller Sockets must support the following features.

7.3.1 Application Support for the Nintendo GameCube Controller [Information]


[Deleted]
(The content of this item was moved to section 7.3 Peripheral Devices That Connect to the
Nintendo GameCubeTM Controller Sockets because it is a description that relates to the entire section.)

7.3.2 Use of Origin Reset Command as Game Input Prohibited [Required]


To avoid resetting each stick and trigger when performing actions necessary in the application, do not
create a command involving simultaneous pressing of the GameCube Controller’s X Button, Y Button,
and START/PAUSE in the application.

The Nintendo GameCube Controller is designed to reset the origin for each stick and trigger by
holding down the X Button, Y Button, and START/PAUSE simultaneously for 3 seconds.

7.3.3 Support for Origin Reset Command [Required]


To avoid user confusion, make sure the application will not react in an unexpected manner when the
Control Stick and the R Button, L Button, and C Stick on the GameCube Controller are reset.

 2006-2009 Nintendo 49 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

7.3.4 Hot Swapping Support for Peripheral Devices That Connect to the
Nintendo GameCube Controller Sockets [Required]
Support hot swapping for the Nintendo GameCube Controller Socket being used.

The user may insert or remove a Nintendo GameCube Controller in the middle of running the
application. Execution of the Nintendo GameCube Controller origin reset command and
TM
Nintendo GameCube WaveBird Wireless Controller channel switching will also result in a state
similar to that of Controller hot swapping.

Call the PADReset function for sockets that return the error value PAD_ERR_NO_CONTROLLER.

7.3.5 Frequency of Checks for Hot Swapping [Recommended]


When inserting peripheral devices that connect to the Nintendo GameCube Controller Sockets, make
sure that there is no delay before controls are enabled in the application.

Otherwise, this delay would temporarily impede players’ game progress.

7.3.6 Nintendo GameCube WaveBird Wireless Controller Support [Information]


The WaveBird can be treated the same as a standard Nintendo GameCube Controller.

Note that the WaveBird communicates over the 2.4-Hz band, which may affect the following:

• Wi-Fi communication by the Wii console


• Communication when WiiConnect24 is turned on
• Communication by a Nintendo Wi-Fi Connection-compatible application
• Wii Remote communication

7.3.7 Stopping Access to the Optical Disc Drive in Scenes Where the User Is
Prompted to Insert Devices into or Remove Devices from the
Nintendo GameCube Controller Sockets [Required]
Stop access to the optical disc drive in scenes where the user is urged to insert devices into or
remove devices from the Nintendo GameCube Controller Sockets. This is because, for example, if
the user knocks over the Wii console during removal or insertion and jolts it, the disc or optical disc
drive may be damaged.

7.3.8 Prohibiting Applications That Require the Nintendo GameCube Controller


[Required]
It is prohibited to create applications that require the Nintendo GameCube Controller. For example, do
not make games that cannot be finished without using the Nintendo GameCube Controller.

RVL-06-0132-001-V 50  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

7.3.9 Joint Use of the Nintendo GameCube Controller and Wii-Specific Peripheral
Devices [Recommended]
We recommend that applications with support for the Nintendo GameCube Controller also support
the same type of controls using Wii-specific peripheral devices, such as the Nunchuk or Classic
Controller.

7.3.10 Restrictions on Peripheral Devices That Connect to the Nintendo GameCube


Controller Socket [Required]
It is prohibited to use peripheral devices, other than the Nintendo GameCube Controller, that connect
to the Nintendo GameCube Controller Sockets and provide control schemes that cannot be
performed on a Wii-specific peripheral device.

7.3.11 Providing Rumble Feature Settings [Required]


Provide an independent option to allow the Rumble Feature to be enabled or disabled for the
Nintendo GameCube Controller in applications that use the Rumble Feature with the
Nintendo GameCube Controller. This requirement is separate from restrictions on the Rumble
Feature for the Wii Remote.

See section 11.8 Restrictions on Rumble Feature for information on Rumble Feature restrictions for
the Wii Remote.

7.4 Wii Zapper


Applications that support the Wii Zapper must support the following items.

(For applications that support the Wii Zapper and the Wii Wheel, see the Wii Controller Overview for
precautions for game design.)

7.4.1 Displaying the Wii Zapper Usage Screen [Required]


Display the Wii Zapper Usage screen for applications that use the Wii Zapper.

For details, see the Wii Zapper Usage Screen package.

 2006-2009 Nintendo 51 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

8 Wii Console NAND Memory


8.1 Restrictions on Wii Console NAND Memory [Required]
The limits shown in Table 8-1 are placed on the size of the home directory and the /tmp region that
can be allocated by each application. Do not exceed these upper limits.

Table 8-1 Usage Limitations for Wii Console NAND Memory

Directory Max Size Number of Files/Directories

Home directory 16 MB 32

/tmp 40 MB 64

These restrictions are necessary because Wii console NAND memory is shared with other
applications.

Note: Save banner files are also subject to size and file number restrictions.

8.2 Limits on Frequent Rewrites [Required]


To reduce wear on Wii console NAND memory, avoid unnecessary calls to functions that update the
FAT. For example, avoid excessive writing to Wii console NAND memory, like saving every second or
every time the character moves.

If you are using an auto-save feature, set the frequency to once a minute at the most. If there are
mini-games that take less than a minute and are played repeatedly, this rule cannot be followed. In
such cases, it is acceptable to save with a frequency of more than once a minute sometimes, just as
long as the average frequency for your overall application is once a minute at the most.

If you are using the NANDSimpleSafe series API for auto-saving, set the frequency even lower at once
every 4 minutes at the most.

The following functions update the FAT.


• NANDCreate[Async]
• NANDCreateDir[Async]
• NANDDelete[Async]
• NANDMove[Async]
• NANDClose[Async]
• NANDSafeOpen[Async]
• NANDSafeClose[Async]
• NANDSimpleSafeOpen[Async]
• NANDSimpleSafeClose[Async]
• NANDSimpleSafeCancel[Async]

RVL-06-0132-001-V 52  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

8.3 Error Handling [Required]


Always include an error handling routine (including error display) for Wii console NAND memory.

For details on error handling, see “NAND Processing Sequence” in the Revolution Function
Reference Manual.

For error types and response policy, see "Handling Result Codes" on the "Introduction" page of the
NAND API description in the Revolution Function Reference Manual.

8.4 Write Operation Display [Required]


When writing save data larger than 1 MB to Wii console NAND memory, display a message or icon
that clearly indicates to the user that a write operation is underway. This is to prevent the user from
unintentionally destroying data important to the user by turning off power or resetting the Wii console
while writing data to Wii console NAND memory.

For example, display a message similar to NAND_09 in the Wii Message List during the write
operation itself.

It is acceptable to display the message for a longer time than it actually takes to perform write
operations to make the message easier for the user to comprehend.

If the file is a temporary file or a saved file that would not create a grave disadvantage for the user
even if the data contents were lost, then this display is not required.

8.5 Data Compatibility Within the Same Program [Required]


Maintain save data compatibility even if there is a change made to the program after mass production.

8.6 Applications Dependent on Wii Console NAND Memory Access


Speed Prohibited [Required]
Make sure there is no program malfunction or crash because of a dependency on access time to Wii
console NAND memory.

This is required because there is performance variance between individual devices. Performance will
also decrease as the device ages.

8.7 Handling Reset While Writing [Required]


If a reset is performed in the middle of a write operation, writing will be interrupted, causing a potential
loss of data. Always verify the end of the write operation before performing a reset.

8.8 Data Unit for Users [Required]


When notifying users of information such as available memory or the size of files, use units of 128 KB
and use the term “block(s).”

 2006-2009 Nintendo 53 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

When notifying the user of the required number of block(s), be sure to total the size of files required
by the game in file system block units, and count the equivalent number of bytes in 128 KB blocks
and display. Be sure to round up any fractional part that is less than 128 KB.

For example, assume that a given game uses the following files.

Banners/icons: 32 KB

File 1: 128 KB

File 2: 16 KB

In this case, the total size is 176 KB. In blocks, this is one block with a remainder of 48 KB. In this
case, round the fractional part up and display “2 blocks” for the size.

In addition, when informing the user of the available memory, please display the number of bytes of
available memory in blocks of 128 KB. If the available memory is less than 128 KB, then use a
rounded numerical value.

Be sure to note that there is a difference between the block unit used for users and the “file system
block” (equal to 16 KB) used by the Wii console NAND memory file system.

8.9 Checking the Number of Free inodes and Amount of Free Memory
Using NANDCheck[Async] [Required]
Before creating a new file or directory in the home directory, always check to see if it is possible to
create the file or directory by calling the NANDCheck[Async] function. The NANDCheck[Async]
function determines whether there are enough free inodes and free memory in the file system.

8.10 Timing for Checking the Number of Free Inodes and the Amount of
Free Memory [Required]
Be careful when you call the NANDCheck[Async] function to check the amount of available memory
and the number of available inodes. The following type of problem may arise if you check only just
before saving data without paying particular attention to the exact timing of the check.

Assume that a user is playing the time attack mode of a certain racing game. After the player
achieves the best time, he or she attempts to save that best time and ghost data but a NAND
message is displayed informing the user that there is not enough space available to save the data.

In this scenario there will be no trace of the best time and the ghost data. To avoid this type of
problem, use the NANDCheck[Async] function to check resource availability and create needed files
ahead of time.

RVL-06-0132-001-V 54  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

8.11 Notification When the Number of Inodes or the Amount of Free


Memory Is Insufficient [Required]
If the NANDCheck[Async] function finds that there are not enough available inodes or available
memory, be sure to notify the user by displaying an appropriate message. For example, display a
message similar to NAND_02 or NAND_03 in the Wii Message List.

There are situations where there is no need to inform the user why the save could not be done. If
there are files that have no effect on gameplay, even if they are not created or saved, and the
application will not notify the user that such files have been created, there is no need to display a
message.

The OSReturnToDataManager function has been prepared for times when users want to reorganize
the contents in Wii console NAND memory. This function exits the executing application and moves to
the Wii Menu's data management screen.

If there is insufficient free space or not enough inodes, defer to the user and allow a transition to the
Data Management screen in the Wii Menu.

An exception to this would be a game that can be started without save data. In this case, the game
can be played even when there are insufficient inodes or free space, so you do not need to allow the
user to go to the Data Management screen.

When there is insufficient memory available and an insufficient number of available inodes at the
same time, give higher priority to the message about there being insufficient memory available.

8.12 Do Not Change Created File Size [Required]


In general, do not change the size of files once created. This is to prevent insufficient memory or
applications becoming unable to proceed due to increase in file size while an application is running.
Be sure to create files that are large enough to begin with.

Contact [email protected] in the case of applications that are impractical without variable file size.

8.13 Handling Corrupted Files [Required]


If a NAND function returns the result code NAND_RESULT_ECC_CRIT or
NAND_RESULT_AUTHENTICATION, or if the size of the save file differs from the size expected by the
application program, display a message similar to NAND_07 in the Wii Message List indicating that
data has been corrupted and that the file cannot be used. Allow the user to delete the old files and to
create new ones.

8.14 Handling Corrupted Wii Console NAND Memory [Required]


Be sure to display the NAND_08 message exactly as written in the Wii Message List if
NAND_RESULT_CORRUPT is returned as the result code for a NAND function.

Also, disable the controller input, RESET, and Power Button while the error message is displayed.

 2006-2009 Nintendo 55 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Because NAND_RESULT_CORRUPT indicates a state where even a successful reset is not guaranteed,
continue to display the error message instead of performing a reset or shutdown.

8.15 Saving Data During the Shutdown Process [Recommended]


If pressing of the Power Button has been detected, applications must quickly begin shutdown
processing. If the application needs to save some data (such as the overall play time of the
application) in Wii console NAND memory during shutdown, make sure that saving can be completed
within 1 second.

For details, see section 10.2 Wii Power Button [Required].

8.16 Prohibition of Creating Files or Directories Without Owner Read


Permission [Required]
Files and directories need to be configured with at least read permission for the owner
(NAND_PERM_OWNER_READ). With Revolution SDK version 2.3 patch 5 and later, a function call to
create or change the permission of a file or directory will fail if there is no owner read permission.

8.17 Prohibition of Frequent Read Access [Required]


Due to the characteristics of Wii console NAND memory, a Read operation repeated over several
hundred thousand times without any Erase or Write operations for a given region may corrupt the
data in the block that includes that region. To avoid this problem, first load a set amount of data to
MEM1/MEM2, and then access this loaded data when data stored in Wii console NAND memory
needs to be read repeatedly.

Specifically, accessing a small region of a few kilobytes at a frequency of approximately every frame
or every second is prohibited. For example, pay close attention to programs that perform the following
types of operations.

• Read access for every character in a font displayed


• A periodic Read access every frame or every second
• Read access every time a character walks

8.18 Save Banner File Creation


Implement the following items so that the appropriate save banner can be displayed for the created
save data.

If there is no save banner file in the save data directory, the Wii console's Save Data Management
Screen will delete the save data in that directory on the assumption that the data is invalid. This is
done so that inconsistencies do not emerge even when invalid files have been created due to events
like the power being cut.

RVL-06-0132-001-V 56  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

If a save banner file is the only thing in the save data directory, copying to an SD Card is not possible
from the Wii console's Save Data Management Screen.

8.18.1 Timing of Creation [Required]


Save banner files should be created at the very end of the process of creating the minimum required
files, from a state in which there are no files in the home directory (for example, at the first application
startup).

The reason is to avoid user confusion. If required files were created after the creation of the save
banner file, there may be situations where it would appear from the Save Data Management screen
as if valid data existed, but the data would be shown to be invalid when the application is restarted,
causing user confusion.

Also, if only a save banner file were found in the save data directory, it could not be copied to the SD
Card in the Wii console Save Data Management screen. To avoid these problems, the save sequence
needs to follow the steps below.
1. Begin in a state in which there are no files in the home directory (for example, at the first application
startup).
2. Create the save data/directories.
3. Create the save banner file.
4. Start the application.
When you are creating a new save banner file, first create the file in /tmp and then use the NANDMove
function to move the file to the home directory.

By following this procedure, the only time when it is possible for no save banner file to exist is when
the save data file(s) are created for the first time.

If you create the save banner file directly in the Home directory, you risk creating a file of 0 bytes (this
might happen, for example, if there was a power outage). As a result, the save banner would not
display correctly on the Wii console's Save Data Management screen, and the user would not be able
to determine to which application the save data belonged.

8.18.2 Check the Save Banner File [Required]


Every time the application starts, check to confirm that the save banner file was created as intended
by the application (for example, that it has not been corrupted).

If the save banner file was not created as intended (due to a power failure or some other reason), the
Wii console's Data Management screen will not display save data correctly, and the user will not know
which save data belongs to which application.

If the save banner file could not be created as intended, use either of the below methods to create the
file again.

• Overwrite the file.


• Create the file in /tmp and then use the NANDMove function to move it to the home directory.

 2006-2009 Nintendo 57 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

If the save banner file was not present, start again from the beginning to create the save data.
Verifying with the user to make the save data again is optional.

8.19 Precautions for Creating Save Data [Information]


See the NAND Library Function Reference Manual for the methods and precautions for avoiding data
loss and corruption at creation of save data.

8.20 Save Data Comments [Required]


Always place the game title in the first line of save data comments. A comment of your choice may be
placed in the second line.

If the comment does not fit in the second line, the first line may start with the game title and be in the
format “game title + any text.”

The comments must be set in the Unicode format. A null character (\0) is treated as a termination
character, but to prevent extra characters from remaining after the comments, always be sure to fill
the remaining area with null characters.

A sans-serif (WBF1) Wii bitmap font is used to display the comments. The usable characters in WBF1
are as follows (all characters other than extended characters).

Table 8-2 Characters Usable in Save Data Comments (By Region)

Region Japan, North America, Europe, Australia China Korea

Alphanumeric characters
Yes Yes Yes
(Latin characters)

Greek characters Yes Yes Yes

JIS half-width characters Yes

JIS non-ideographs Yes

JIS level 1 kanji Yes

JIS level 2 kanji Yes

Roman numerals Yes Yes Yes

Kanji included in GB2312-80 Yes

All Hangul (11,172


Yes
characters)

Within the structure, 32 characters worth of area is allocated per line, but the number guaranteed for
display is 20 characters. Comments longer than 20 characters might extend past the comment
display region on the Wii Menu, so always confirm that they are shown correctly.

RVL-06-0132-001-V 58  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

8.21 Save Data Location Specification [Required]


A save banner file should always be created in the save data directory prepared by the system
(/title/<title-id(Low)>/data) with the filename banner.bin.

An application creates only a single save banner file. Make sure that this is created in the save data
directory with the specified file name.

8.22 Prohibition of Using Reserved Names [Required]


The names noerase and notransfer are reserved by the system. Creating a file or a directory in the
save data directory with these names is prohibited.

8.23 Precautions Regarding the nocopy Directory [Required]


Do not create any data whose loss may critically affect the game progress in the nocopy directory.

When such data is placed in the nocopy directory, the original data becomes unrecoverable if the
user erases the data in Wii console NAND memory assuming that the backup save data is copied to
the SD Card.

8.24 Save Data Tampering Protection by the Wii Console [Information]


When save data is being copied to the SD Card in the Wii console’s Data Management screen, a data
tampering protection is applied. In general, there is no need to implement any tampering protection
for save data saved to Wii console NAND memory from the application side. However, security is not
guaranteed for the future, so data tampering processing can also be implemented by the application
in order to ensure better security.

8.25 Prohibition of Usage Restrictions on Save Data Due to Wii Console-


Specific Information [Required]
Creating save data that uses information unique to each Wii console (for example, MAC addresses)
and that can only be used by the Wii console that has that unique information is prohibited.

This is to prevent save data from becoming unusable if a module or the Wii console is replaced
during repair.

8.26 Support for NAND_RESULT_MAXBLOCKS and


NAND_RESULT_MAXFILES [Recommended] [Deleted]
(Deleted as the result of a guideline review.)

 2006-2009 Nintendo 59 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

8.27 [N. American Version Only] Considerations for Save Banners That
Do Not Have Alpha Values Applied [Required] [Deleted]
(Deleted because changes to the Wii Menu make it unnecessary.)

8.28 Handling NAND_RESULT_UNKNOWN [Required]


Display error message NAND_12 from the Wii Message List when the NAND API gives a result code
of NAND_RESULT_UNKNOWN. Ignore controller operations, RESET, and the Power Button while the error
message is being displayed.

The NAND_RESULT_UNKNOWN value represents an unexpected Revolution SDK error for which
application behavior is not guaranteed, so continue to display an error message instead of running
reset or shutdown processing.

8.29 Sharing Save Data Between Applications


The following items must be supported when sharing save data between applications.

Also, the game codes of the applications sharing the save data must be determined in advance. In
particular, be aware that when the applications have different release dates, the game code for
application to be released later must be allocated in advance.

Save data can be shared with any of the following combinations.

• Disc application and disc application


• Disc application and NAND application
• NAND application and NAND application
In particular, see section 2.1.3 Restrictions on Wii Console NAND Memory Usage When Sharing
Save Data [Required] in the Wii Programming Guidelines Disc Spin-Off Channels Edition when
sharing save data one-to-one between a disc application and the channel application installed from
that disc application.

8.29.1 Creating a Directory for Sharing [Required]


Create a directory named share under the home directory to hold the files to be shared.

The permission settings for share can be freely set by the developer. File reading and writing are
performed according to the file permission settings.

Be aware of file list acquisition within the directory. If the application does not have the Read rights for
the directory, it cannot get the file list due to permission restrictions. Reading and writing of the files is
not possible unless the filenames are already known.

8.29.2 Prohibition of Changing the File Size or Number of Inodes for Save Data of
Other Titles [Required]
Changing the file size or number of inodes for the save data of other titles is prohibited.

RVL-06-0132-001-V 60  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

This is because each application independently manages the usage limitations of the allocated home
directory.

8.29.3 Operations Independent of the Start Order of Titles That Share Save Data
[Required]
Fatal problems such as malfunctions or stoppage must not occur regardless of the order in which
titles sharing the save data are started.

For example, even if Title A is released before Title B, it may be the case that after playing Title B, the
user will want to play Title A.

When reading files or directories located in share directly under the home directory of another title,
be sure that operations continue without a problem regardless of whether the file or directory exists.

8.29.4 Handling When the Shared Files Are Deleted [Required]


Users must not be notably disadvantaged even if partially shared files are deleted by another
application.

For example, when Title B reads shared files created with Title A, do not require Title B to restart from
the beginning even if the save data for Title A is deleted. However, the case when all of the save data
for Title A and Title B is shared (when all the data, not just some, is shared) is exempt.

8.30 Restriction on Copy Protect Settings [Recommended]


We recommend that copy protect not be set when there is no need to copy-protect save data.

Save data that has been copy-protected cannot be saved to the SD Card, so if the Wii Console
NAND memory is filled with copy-protected files, there may be insufficient memory to save the save
data of other applications or channels.

Contact Nintendo at [email protected] if you want to use copy protection.

 2006-2009 Nintendo 61 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

9 Nintendo GameCube Memory Card


Do not use the Nintendo GameCube Memory Card. Also, do not link to the CARD library when
creating master data.

Use a version of the Revolution SDK Version Check Tool no older than March 27, 2008, to confirm
that the CARD library is not linked.

If the CARD library is being used, the string “CARD” appears under the “Other Libraries” section.

The CARD library was removed from Revolution SDK 3.2.

9.1 Nintendo GameCube Memory Card Compatible Application


[Information] [Deleted]

9.2 Use of Write Functions Prohibited [Required] [Deleted]

9.3 Programs Must Not Depend on the Access Speed of Nintendo


GameCube Memory Cards [Required] [Deleted]

9.4 Support for High-Capacity Nintendo GameCube Memory Card


[Required] [Deleted]

9.5 Errors Displayed when Memory Cards Cannot be Used [Required]


[Deleted]

9.6 Compatible Slots [Recommended] [Deleted]

9.7 Memory Card Menu in Application [Required] [Deleted]

9.8 Limit on Accessible Memory Card Files [Required] [Deleted]

RVL-06-0132-001-V 62  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

10 Reset and Shutdown


10.1 Wii Console RESET [Required]
If RESET is pressed while an application is running, immediately perform the pre-processing for reset,
and perform the reset operation once this pre-processing is complete. Also, do not perform any
operation other than a reset when RESET is used.

However, see section 8.7 Handling Reset While Writing [Required] regarding writing to the Wii
console save memory.

For details, see the Wii Console Reset and Shutdown Programming Manual and the Revolution
Optical Disc Drive Library (DVD) manual.

10.2 Wii Power Button [Required]


If the Power Button on the Wii console or Wii Remote is pressed while an application is running,
immediately perform pre-processing for shutdown, and perform the shutdown operation once pre-
processing is complete. Also, do not perform any operation other than a shutdown when the Power
Button is pressed.

Also, holding the Power Button of the Wii console for approximately 4 seconds will cause the Wii
console to turn off by means of a hardware shutdown.

For details, see the Wii Console Reset and Shutdown Programming Manual and the Revolution
Optical Disc Drive Library (DVD) manual.

10.3 Resetting the Nintendo GameCube Controller Origin During Reset


Operations [Required]
Always perform an origin reset for the Nintendo GameCube Controller when a reset is performed in
an application that supports the Nintendo GameCube Controller.

The user may press RESET for a correction when the origin goes out of alignment.

Here, the reset operation refers to the reset operation performed with either RESET on the Wii
console or the Reset button on the HOME Menu.

When using the function OSRestart for reset, use the function PADRecalibrate to reset the origin. If
OSReturnToMenu is being used to return to the Wii Menu, there is no need to perform an origin reset
because the Nintendo GameCube Controller cannot be used to operate the Wii Menu.

The origin for the Nunchuk, Classic Controller, or WaveBird is not reset when the origin reset is
performed from the Wii console.

 2006-2009 Nintendo 63 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

10.4 Prohibiting Use of the OSRebootSystem Function [Required]


It is prohibited to use the OSRebootSystem function. Call OSReturnToMenu or
OSReturnToDataManager to return from the application and use Wii Menu features.

10.5 Required Preparations Before Using the Reset/Shutdown Functions


[Required] [Deleted]
(The content of this section was deleted because it was redundant with sections 10.1 Wii Console
RESET [Required] and 10.2 Wii Power Button [Required].)

10.6 Restrictions on Operations for Resets [Required]


Be sure to perform a reset only when RESET on the Wii console is pressed or when the reset option
is selected using the HOME Menu.

RVL-06-0132-001-V 64  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

11 HOME Menu
11.1 Implementing the HOME Menu and Using the HBM Library
[Required]
You must implement the HOME Menu for all applications.

In addition, you must use the HOME Menu library (the HBM library) to incorporate the HOME Menu
into your applications.

In principle, the modification of the HBM library and its accompanying data (screen layouts, images,
sounds, and so on) is prohibited.

However, the display and the behavior of the HOME Menu do not have to be exactly like that of the
Wii Menu's HOME Menu, providing the changes do not interfere with its operation as a HOME menu.

As long as the user can operate the HOME Menu accurately, it is acceptable if a portion of the
buttons or characters extend past the television screen or if, conversely, the screen of a background
application can be seen behind the edge of the HOME Menu.

11.2 HOME Menu Display Triggers [Required]


Only display the HOME Menu immediately after HOME is pressed. Do not display it under any other
circumstances. Do not display a confirmation message such as “Do you want to go to the HOME
Menu?”

11.3 Display Language for the HOME Menu [Required]


The language selected in the system settings should be used as the HOME Menu language,
regardless of the language used in the application.

For example, if the application is for the North American market and uses only English, but French is
selected in the system settings, display the HOME Menu in French.

A list of language options for each market is shown in Table 11-1.

Table 11-1 Selectable Languages for Each Market

Market Language Selection

Japan Japanese

North America English, French, Spanish

Europe/Australia English, French, Spanish, German, Italian, Dutch

China Chinese

Korean Korean

 2006-2009 Nintendo 65 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

11.4 Aspect Ratio of the HOME Menu [Required]


If the application supports the 16:9 aspect ratio, the aspect ratio of the HOME Menu should also
follow the setting of the Wii system.

For details, see section 6.16 Settings and Display for Applications That Support the 16:9 Aspect Ratio
Display [Required].

11.5 Using the HOME Menu from All Paired Wii Remotes
[Recommended] [Deleted]
(Deleted in accordance with guideline revisions.)

11.6 Support for HOME Menu by Classic Controllers [Required]


Applications supporting Classic Controllers should support the following.

• Display the HOME Menu when HOME on either the Classic Controller or the Wii Remote is pressed.
• Allow control in the HOME Menu from both the Classic Controller and the Wii Remote.

11.7 Application Processing During HOME Menu Display


[Recommended]
Because the user cannot perform any application-related operations while the HOME Menu is
displayed, be sure to consider the issue of timing when displaying the HOME Menu so that it does not
inconvenience the user.

For example, in the case of an action game, make sure that the game does not continue while the
HOME Menu is displayed, resulting in damage from an opponent or loss of remaining time.

11.8 Restrictions on Rumble Feature


11.8.1 Restrictions Due to the Rumble Setting of the HOME Menu [Required]
If the application has its own controller Rumble Feature option setting, and the Rumble setting in the
Wii Remote Settings screen of the HOME Menu is set to Off, the controller’s Rumble Feature should
not be activated regardless of the application’s own option setting.

The Rumble Feature for the controller should only be used if the Rumble setting in the Wii Remote
Settings screen of the HOME Menu is set to On (for example, if the return value of the
WPADIsMotorEnabled function is TRUE).

11.8.2 Prohibition of Changing the Rumble Setting of the HOME Menu [Required]
Changing the Rumble setting of the Wii Remote Settings screen in the HOME Menu from the
application is prohibited.

RVL-06-0132-001-V 66  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

If the Rumble setting of the Wii Remote Settings screen in the HOME Menu is set to Off (for example,
if the return value of the WPADIsMotorEnabled function is FALSE), running the
WPADMotorEnable(TRUE) function and then calling WPADSaveConfig changes the Rumble setting of
the Wii Remote Settings screen in the HOME Menu to On. Do not use the WPADEnableMotor and
WPADSaveConfig functions in Master ROM versions. They may only be used for debug.

11.9 Speaker Initialization After Leaving the HOME Menu [Required]


After returning from the HOME Menu to the application, the state of the Wii Remote speaker is
undefined. Always be sure to initialize the speakers after returning to the application.

11.10 Prohibition of Using the Wii Remote Speaker During HOME Menu
Startup [Required]
While the HOME Menu is starting up, the application must not operate the Wii Remote speaker.

11.11 Display of the HOME Menu Disabled Icon [Recommended]


If the HOME Menu cannot be displayed, display the specified HOME Menu Disabled Icon when
possible when HOME is pressed.

There is no need to display the HOME Menu Disabled Icon when the Strap Usage screen is being
displayed, a fatal error has occurred, or when a user would not feel anything is wrong even if the Wii
Remote input has no effect. (If you are displaying the icon on the Strap Usage screen, see the Wii
Strap Reminder package at http://www.warioworld.com.)

Follow the instructions under “Icon Displays” in the HOME Menu Library Function Reference as
closely as possible for fade-ins, fixed display time, and fade-outs for the HOME Menu Disabled Icon.

11.12 Processing When Quitting the HOME Menu [Required]


When returning from the HOME Menu to the application, get the button pressed when quitting the
HOME Menu using HBMGetSelectBtnNum. When the button is either Wii Menu or Reset, perform the
corresponding process immediately.

After returning to the application upon selection of the Wii Menu button or Reset button, do not
display a verification message (such as “Would you like to Quit?”). Also, do not restore the volume of
the application (leave it on mute).

11.13 Sound Volume When Entering and Exiting the HOME Menu
[Required]
When entering the HOME Menu, set the sound volume to 0 on the application side. When exiting the
HOME Menu, initialize sound effects on the application side when the HOME Menu ends, and restore
the sound volume.

 2006-2009 Nintendo 67 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

11.14 Displaying Error Messages for Errors That Occurred While in the
HOME Menu [Information]
If the generation of an error is detected while displaying the HOME Menu, it is acceptable to display
an error message immediately after returning to the application from the HOME Menu.

For example, if the HOME Menu is displayed and the disc is ejected while data is being read from the
disc, you can display a “No disc” error message as soon as the process returns to the application.

However, if an error occurs that might make even rebooting the Wii console impossible (such as a
fatal error regarding the disc drive or NAND_RESULT_CORRUPT regarding Wii console NAND Memory),
display the error message in the HOME Menu.

11.15 Displaying Messages Suited to Save Data Confirmation


[Required]
Two types of messages have been prepared to be displayed when Wii Menu or Reset is pressed on
the HOME Menu: One includes a warning that unsaved data will be lost, and the other does not.
Standardize the message displayed by your application to suit its specifications.

Usually, the message that includes a warning should be used by applications with a save feature, and
the message that does not include a warning should be used by applications that either do not have a
save feature or do not require user input when saving (such as applications with an auto-save
feature).

RVL-06-0132-001-V 68  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

12 Icons and Banners


12.1 Icon Animation [Required]
To make the Wii Menu resemble a television channel interface, always use an animation for the Wii
Menu channel list icon so that it will not be a stationary image.

Animation is not required to play in the Channel Data Management screen, even within the Wii Menu.
See section 12.11.4 Layout Specifications Before Channel Script Execution [Required].

12.2 Use of Text Boxes for Icon Layout [Required]


If using text boxes for the icon layout, be sure to use the Wii bitmap fonts included in Revolution SDK
(wbf1.brfna and/or wbf2.brfna, under RVL_SDK\dvddata\fonts).

The use of any other fonts is prohibited.

Separate Wii bitmap fonts have been prepared for Chinese and Korean versions.

12.3 Icon and Banner Data Size Restriction [Required]


The data size for icons and banners must be 512 KB or less after being compressed with the
archiving tools. Icon resources, banner resources, and banner sound data will be compressed and
stored into banner data.

12.4 Title Display in the Banner [Required]


Always display the software title name in the banner.

The title name can be displayed as a texture or through a text box, and the display size may be set
freely. The title name does not need to be displayed at all times, and may become hidden as a part of
the presentation.

We recommend using the language set in the Wii system language setting for the title name display.

For details on languages used in banners, see section 3.5 Switching Languages in the Icon and
Banner Specification.

12.5 Banner Animation [Information]


Animation is not required for the banner displayed when a Wii Menu channel is selected. Still images
are acceptable.

 2006-2009 Nintendo 69 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

12.6 Use of Text Boxes for Banner Layout [Required]


If using text boxes for the banner layout, make sure to use the Wii bitmap fonts included in Revolution
SDK (wbf1.brfna and/or wbf2.brfna, under RVL_SDK\dvddata\fonts).

The use of any other fonts is prohibited.

Separate Wii bitmap fonts have been prepared for Chinese and Korean versions.

12.7 Display of Trademarked or Copyrighted Names in the Banner


[Information]
The Channel banner displayed in the Channel Preview screen may include trademarked or
copyrighted names, such as company logos. Doing so can shorten the user wait time by removing the
necessity of trademarked displays in the application startup sequence.

For reference, titles developed by Nintendo display their copyrights in the application title screen, but
trademarks are generally displayed in the banner to shorten the transition time to the application title
screen.

A minimum of 1 second is guaranteed from the completion of icon selection screen zoom effect (or
transition effect from the neighboring banner) to the start of the application title screen transition
fadeout. Ensure that if the copyright/trademark display is presented here, the information is not faded
in and then out because it could be skipped if Parental Controls are activated.

However, the above suggestion is optional, so the trademark or copyright information may still be
displayed in the application startup sequence or title screen as traditionally done. Determine the
display method based on company policy or what is appropriate for the application.

Trademark or copyright information may also be displayed in both the banner and the startup
sequence/title screen. If implemented, make sure the content displayed in the banner and screen
stays consistent.

12.8 [N. American Version Only] Consideration for Non-Application of


the Banner Alpha Value [Required] [Deleted]
(This describes save banners, so the content was moved to Chapter 8 Wii Console NAND Memory.)

12.9 Banner Sound Setting [Required]


To make the Wii Menu resemble a television channel interface, always set a banner sound to ensure
that the screen is not silent during the banner display.

12.10 Displaying the Title in the Banner Data Header [Required]


In the banner data header, do not specify an arbitrary string that is irrelevant to the title of the
application.

RVL-06-0132-001-V 70  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

In the first row of the banner data header, enter a title that basically suggests the application name. It
does not need to be exactly the same as the actual title of the application. In the second row, specify
something like a subtitle.

Note that the banner data header will be referenced by “Today’s Accomplishments” in the Wii
Message Board.

12.11 Channel Scripts


Applications that support Channel Scripts should also support the following items.

12.11.1 Processing Time Restrictions [Required]


Do not spend more than 1 second processing a Channel Script used by icons and banners.

If Channel Script processing takes a long time, Wii Menu behavior might be delayed while waiting for
it to end, such as when going from one Wii Menu screen to another.

Set a maximum processing time of 1 second or less for scripts with processing times that vary
depending on such conditions as the state of the save data.

If the processing time is 2 seconds or more, the Wii console will enter an infinite loop if Begin is
selected on the Channel Banner screen in version 3.1 of the Wii Menu.

12.11.2 Prohibition Against Heavy Processing After the System.beginRender Method


Has Been Called [Required]
Perform heavy processing such as loading files before calling the System.beginRender method.
Such processing will stop the Wii Menu from rendering.

In Channel Scripts, threads with a lower priority than the main thread are processed first. The main
thread is processed after the System.beginRender method is called. This prioritization allows heavy
processing (such as loading files from Wii console NAND memory) to be performed in separate
threads, and light processing (such as layout controls) to be performed in the main thread.

If texture contents are rewritten, layout coordinates are changed, or other processing that affects
rendering is performed after the System.beginRender method is called, there is a danger that
operations in other threads may overlap with rendering in the main thread.

12.11.3 Avoiding Rendering Gaps Due to Icon Layout Adjustment [Required]


When controlling icon layout using a Channel Script, make adjustments to the layout to prevent
processing from slowing considerably while rendering in the Wii Menu.

All icons displayed on the Wii Menu screen are rendered (including off-screen icons while scrolling).
Consequently, if the burden of rendering each icon gets larger, it might cause processing as a whole
to slow down.

For example, be careful when displaying strings. Processing will slow when importing multiple
channel applications created with an icon layout that displays a large number of characters in a text
box pane.

 2006-2009 Nintendo 71 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

The Channel Script Package includes the means to import and test 47 copies of the same application
(all available channels). Confirm that processing does not slow down even within that state,

12.11.4 Layout Specifications Before Channel Script Execution [Required]


When using Channel Scripts to control icon layout, design icons to be free of problems even before a
script is run.

The Wii Menu can process multiple icon scripts in succession. As a result, an icon’s script might not
always run immediately, and its layout might be displayed before being manipulated.

The unmodified icon layout will also be displayed on the Channel Data Selection screen in that same
Wii Menu because scripts will not be run there.

For example, items might be displayed as follows.

• The phrase “This is dummy text” will be displayed unchanged if it is inserted as the default value in a
text box.
• If an icon changes the coordinates at which the structural elements of its layout are placed and the
initial position for all of these elements is set to the same set of coordinates (such as the upper-left
corner of the screen), the elements will all be placed on top of each other.
Even though icons in the Wii Menu’s Channel List must be configured with an animation, animation
can be ended because scripts are not run on the Channel Data Selection screen. See section 12.1
Icon Animation [Required].

RVL-06-0132-001-V 72  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

13 Communications with Nintendo DS


The following features must be supported in applications that communicate with the Nintendo DS
system (hereafter, “the DS”).

In addition, DS applications must comply with the Nintendo DS Programming Guidelines.

13.1 General
13.1.1 Adherence to the Use of the Library [Required]
When communicating with the DS, be sure to use the libraries provided by Nintendo.

13.1.2 ON and OFF State of MP Communications [Information]


The ON state of MP Communications refers to the state in which wireless signals can be sent or
received, or the state in which wireless signals are actually being sent or received for the purpose of
wireless communications with the DS. To be specific, this state amounts to the period between the
execution of the MPStartup or MPDLStartup function and the MPCleanup or MPDLCleanup function.
(MP Communications will be in the OFF state during all other intervals.)

This is different from the situation with the DS in that MP Communications can be turned ON without
the user’s permission and with arbitrary timing, and there is no problem with turning them ON
automatically immediately after application startup.

13.1.3 Downloading Programs [Required]


Sending programs (native ARM code) to the DS and running them through means other than the
MPDL and MPFS libraries is prohibited.

13.1.4 Using GGIDs [Required]


Use only the GGID that is set by Nintendo for each game title. (Do not use a number that has not
been assigned by Nintendo.)

You can, however, use a private GGID during testing and the early stages of game development.
Private GGIDs have been allocated for testing and will not be set for individual game titles. Note that
connections may therefore be established by other test applications that use the same private GGIDs,
which may cause bugs to occur.

There are 256 private GGIDs ranging from 0x003FFF00 to 0x003FFFFF.

13.1.5 Using TGIDs [Required]


Set the TGID to a different value each time communication is started with a DS so that old
connections will not connect by mistake.

 2006-2009 Nintendo 73 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Specifically, setting the tgid member variable to MP_TGID_AUTO in the MPConfig (for MP
communications) or MPDLConfig (for MPDL communications) structure will cause a different value to
be automatically set every time.

13.1.6 Development Note for Regional Restrictions [Information]


When developing applications that allow communications between DS and Wii applications, be
careful about the region information (game code) of the application of the peer in the communications.

Because Nintendo DS systems do not use the system region as a means of restricting which software
can be run, business decisions may sometimes dictate that applications with different regions than
the Wii console being sold in the same market may be sold in a given market.

For example, European-region Nintendo DS systems are sold in Australia, and typically the
European-region version of a given Nintendo DS title is sold in Australia. However, there may be
cases in which the North American version of a Nintendo DS title is sold in Australia.

If you fail to take this into account and implement communication functionality that can communicate
with only Nintendo DS software for the same region, communication between DS and Wii applications
may not be possible in certain markets.

13.2 MP Communications with the DS


13.2.1 Message Display for Severed Connections [Required]
When a severed connection makes it difficult to continue the game, display a warning message such
as “Communication Error” when the severed connection is detected.

For example, if the connection is severed for only one of several connected DS systems, a warning
message must be displayed on the DS with the severed connection. But if there is no overall effect on
the application’s use by other players, no warning messages need be displayed to other DS systems
or Wii consoles that are still connected.

If there is a special reason for not wanting to notify the user of a severed connection (or that MP
Communications associated with the severed connection were carried out), there are special cases in
which hiding messages (or falsely displaying them) is allowed.

If you have such plans, contact [email protected] before proceeding.

13.2.2 Single-Transmission Data Size for MP Communications [Recommended]


We recommend that the total transmission time for a single transmission of MP Communications
between the parent and all children should be 5600 microseconds or less.

Note: The shorter the transmission time, the better the communication performance is. However,
there are various disadvantages if the data size is large, including being unable to establish a
wireless connection, decreased reliability of data transmission, decreased number of systems
which are simultaneously transmitting in the same area, increased power consumption,
decreased resistance to interference, and so on.

RVL-06-0132-001-V 74  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

To calculate the total transmission time, use the “Wireless Communication Time Calculation Sheet” in
the Figures and information page in the Wireless Manager (WM) section of the NITRO-SDK Function
Reference Manual distributed with the DS development environment (NITRO-SDK).

A sample calculation is shown below.

In the case of MP Communications, once every 60 seconds for communication between one Wii
console and 15 DS systems:

• Wii: 128 bytes or less


• DS: 16 bytes or less

13.2.3 Which GGID to Use [Required] [Deleted]


(This section is also related to DS Download Play, so it has been renumbered to 13.1.4 and moved to
section 13.1 General.)

13.2.4 Connection with Game Software of Other Companies’ Titles Is Prohibited


[Required]
Creating game software that can connect with game titles made by other companies is prohibited.

If you have such plans, contact [email protected] before proceeding.

13.2.5 Connection with Different Versions of the Same Software [Required]


Make sure that communications with different versions of DS software of the same title can be carried
out normally.

13.2.6 Processing When Attempting to Connect More than the Supported Number of
DS Systems [Required]
Make sure that communications can function normally for the supported number of DS systems, even
if more than the supported number of DS systems attempt to connect to a single Wii console.

13.2.7 Screen Burn-In Reduction Feature [Required]


For applications that use the DS as a Wii controller and do not concurrently use the Wii Remote, the
screen burn-in reduction feature might be activated when the user does not expect it.

Consequently, reset the counter for activating screen burn-in reduction (using the
VIResetDimmingCount function) every time there is active input from the user (button or touch panel
input, valid speech input to the microphone, and so on).

Resetting the screen burn-in activation counter under any other circumstances (that is, when there is
no active input from the user to the DS system that has become an input device) is prohibited.

For details on the screen burn-in reduction feature, see section 6.21 Applying Screen Burn-In
Reduction Setting [Required].

 2006-2009 Nintendo 75 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

13.2.8 Dealing with Invalid or Corrupted Communications Data [Required]


Because there is a chance that data sent from DS systems will be invalid or corrupted, always code
with that in mind. See the specific guidelines indicated in the following subsections.
13.2.8.1 Caution About Buffer Overflows
In order to prevent the system from being taken over through the exploitation of buffer overflows,
avoid using variable-length data and always execute sends and receives using fixed-length data.

For example, avoid things like acquiring and using the data size from the header portion of received
data.
13.2.8.2 Validity Check for Received Data
Be absolutely sure to check that each parameter of the received data falls within the expected range.

13.3 DS Download Play


13.3.1 Banner Icons [Information] [Deleted]
(Deleted because starting with Revolution SDK Extensions 2.1, Wii games can specify their own
individual icons for DS Download Play.)

13.3.2 TGIDs Used by the MPDL Library [Required] [Deleted]


(This section is also related to MP communications with the DS, so its content has been updated,
moved to section 13.1 General, and renamed section 13.1.5 Using TGIDs [Required].)

13.3.3 Accessing Cards During DS Download Play [Required]


Allowing programs transferred to a DS via DS Download Play so as to access DS Game Cards made
by other companies is prohibited as a rule.

Do not access memory areas other than the backup memory, even for DS Game Cards made by your
company. If you have plans that involve accessing memory areas other than the backup memory,
contact [email protected] before proceeding.

13.3.4 Characters Displayed on the DS [Required]


Restrict the strings passed to the MPDLConfig structure to characters that can be displayed on the DS.
These strings are the publisher name, program title name, and program description displayed on the
DS Download Play client.

For details about the characters that can be displayed on the DS, see the character code chart in the
DS IPL Banner Guidelines package.

RVL-06-0132-001-V 76  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

14 USB Keyboards
Applications that support USB keyboards (hereafter, keyboards) connected to the USB connector
must support the following items.

14.1 Operation Verification on Specified Models


Be sure to verify operations on Logitech's Classic Keyboard 200 (regardless of the keyboard color)
for the following items.

Nintendo has verified operations on the following models.

• Logitech’s Classic Keyboard 200


• Logitech’s Cordless Keyboard for Wii
Although it is required to verify operation on the Classic Keyboard 200, we recommend that you verify
on both models.

For key arrangements of each model, see the KBD Library Supplemental Manual.

14.1.1 Support for Different Model Numbers According to Market and Language
[Required]
The keyboards for which operations have been verified have different model numbers according to
the market and language, so support these when localizing. Specifically, be aware of the language-
specific keys such as the half-width/full-width key in the Japanese keyboard or dead keys in the
European keyboard.

For key arrangements by language, see the KBD Library Supplemental Manual.

14.1.2 Operation of Unused Keys [Required]


Ensure no problems occur in the application due to an unused or unexpected key being pressed. Be
sure to appropriately support all expected and used keys and key combinations, and ignore unused
keys.

14.1.3 LED Status Control [Required]


Be sure to control the keyboard LEDs with the application. Implement the NUM LOCK and CAPS
LOCK keys so the user can operate them just as on the PC keyboard. SCROLL LOCK key support is
optional. The sample demo in the KBD library introduces how to control the LEDs appropriately.

Excessively changing the LEDs may affect the USB operation performance. Limit sending LED
commands to only instances when the NUM LOCK, CAPS LOCK, or SCROLL LOCK keys are
pressed.

14.1.4 Handling Different Types of Keyboards [Required]


Do not have application designs that operate only with a specific type of keyboard.

 2006-2009 Nintendo 77 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

For example, the PRINT SCREEN key and INSERT key are available on the Classic Keyboard 200
but not on the Cordless Keyboard for Wii. Do not design a game to require these keys for progress or
operations in the game.

In addition, the Cordless Keyboard for Wii does not have a NUM LOCK key, so the NUM LOCK status
must be initialized when the keyboard is connected.

For key layout and key codes for special keys, see the KBD Library Supplemental Manual .

14.2 Avoiding Game Design Forcing Extended Continuous Operation or


Strenuous Activity [Information]
For keyboards, as with controllers, please avoid game designs that force extended continuous
operation or strenuous activity.

For controllers, see section 7.1.2 Avoiding Game Design Forcing Extended Continuous Operation or
Strenuous Activity [Information].

14.3 Prohibit Hot Swapping of the Keyboard [Required]


Do not have specifications that urge the user to hot swap while the application is running. This is to
control wear of the connectors and to prevent damage to the Wii console due to hot swapping.

14.4 Processing During Startup When a Keyboard Is Required


[Required]
For applications that require a keyboard, if a keyboard is not connected during startup, display
USBK_01 from the Wii Message List and shut down after waiting for user operation.

14.5 Operation When a Non-Supported USB Device Is Connected


[Required]
Do not allow malfunctions when a USB device not supported by the application is hot-swapped.
There are cases when the user connects a USB device not supported by the application or the device
is already connected at startup. For USB keyboards, be especially careful of devices such as USB
mice or USB number pads, which are in the same HID class as USB keyboards.

RVL-06-0132-001-V 78  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

15 Wii Balance Board Accessory


Applications that support the Wii Balance Board should conform with the sections of this chapter. The
Wii Balance Board is not currently sold individually, so including specifications that require the use of
the Wii Balance Board is prohibited.

Contact Nintendo in advance if you must require the use of the Wii Balance Board.

15.1 Disconnecting the Wii Remote Controller [Information]


Disconnect the Wii Remote from 4P before connecting the Wii Balance Board accessory. If this is not
done, the Wii Balance Board accessory cannot be connected.

15.2 Load Restrictions [Required]


To discourage users who weigh more than 150 kg (330 lbs.) from using the Wii Balance Board
accessory, display message WBCM_01 from the Wii Message List when the measured load exceeds
150 kg (330 lbs.), and do not proceed until receiving confirmation that the load is 150 kg (330 lbs.) or
less.

Perform the accurate load measurement process to determine whether the weight restriction has
been exceeded. Do this regardless of whether accurate loads are being used in other parts of the
application.

The Wii Balance Board accessory is designed for a maximum load of 300 kg (661 lbs.). The 150kg
restriction is in place because it is conceivable that a user weighing more than 150 kg (330 lbs.) might
apply a load that exceeds this value. It is not a problem if the user takes some action that
momentarily increases the load above 150 kg on the Wii Balance Board accessory.

For information on accurate load measurement, see sections 0 If you want to determine when a user
has stepped on and then off the Wii Balance Board accessory in a simple operation (for example, to
measure body weight), make your determination based on whether the load on the accessory has
changed by more than 2kg after performing a zero point calibration with no load.

Do not change this 2kg threshold. If the threshold is changed to be dependent on the user's body
weight for the determination, it might not be possible to make correct determinations for lighter
individuals.

When the game control requires more than simple stepping on/off, (for example, when the user shifts
body weight to operate an application), use an appropriate determination method according to the
specifications of your application.

It is also acceptable to use input from the user to determine stepping on and off the device.

Preparations for Accurate Load Measurement [Required], 15.7 Specification of the Process and Time
Required for Accurate Load Measurement [Required], and 15.8 Time Restrictions for Accurate Load
Measurement [Required].

 2006-2009 Nintendo 79 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

15.3 Operation Restrictions [Required]


To ensure safety, do not ask users to perform the following types of actions on the Wii Balance Board
accessory.

• Jumping
• Standing on the edge of the Wii Balance Board accessory
• Stepping onto the accessory with other people at the same time
• Stepping on and off the accessory at such a fast tempo that a user might slip off
• Pressing down forcefully on the accessory with a heel or other hard part of the body

15.4 User Warnings [Recommended]


If you are concerned that users may perform any dangerous actions, implement special safety
measures. For example, in a game where users may unconsciously be inclined to jump, you may
display a message in advance to the effect that jumping is not permitted, handle an excessive drop in
the load as a jump and stop the game, or take a similar action.

15.5 Using Load to Determine Simple Stepping On/Off Board [Required]


If you want to determine when a user has stepped on and then off the Wii Balance Board accessory
in a simple operation (for example, to measure body weight), make your determination based on
whether the load on the accessory has changed by more than 2kg after performing a zero point
calibration with no load.

Do not change this 2kg threshold. If the threshold is changed to be dependent on the user's body
weight for the determination, it might not be possible to make correct determinations for lighter
individuals.

When the game control requires more than simple stepping on/off, (for example, when the user shifts
body weight to operate an application), use an appropriate determination method according to the
specifications of your application.

It is also acceptable to use input from the user to determine stepping on and off the device.

15.6 Preparations for Accurate Load Measurement [Required]


To take an accurate load measurement for displaying the weight, checking for the load restriction, etc.,
always display a message prompting the user to step off the Wii Balance Board accessory
immediately before making the measurement

Next, perform the following steps.


1. Call the WBCRead function to confirm that the user has stepped off the Wii Balance Board accessory.
2. Set the zero point and execute the temperature update command, which will be needed to correct
the weight value.
3. Display a message that prompts the user to step onto the Wii Balance Board accessory.

RVL-06-0132-001-V 80  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

For more details, see the Revolution Function Reference Manual.

See section 15.5 Using Load to Determine Simple Stepping On/Off Board [Required] for more
information about determining when the user has stepped on and off the device.

15.7 Specification of the Process and Time Required for Accurate Load
Measurement [Required]
To take an accurate load measurement for displaying the weight, checking for the load restriction, etc.,
allow 2 seconds for setting the zero point and 2 seconds for load measurement. An accurate
measurement is guaranteed by taking the average value over 2 seconds.

15.8 Time Restrictions for Accurate Load Measurement [Required]


To take an accurate load measurement for displaying the weight, checking for the load restriction, etc.,
prompt the user to take the measurement within 10 seconds of the zero-point setting that immediately
precedes it.

If 10 seconds have passed, either cancel the measurement or repeat the process.

15.9 Handling Insufficient Remaining Battery Power [Required]


When the remaining battery power obtained with the WBCGetBatteryLevel function is 0, prompt the
user to replace the batteries.

Specifically, display message WBCM_02 from the Wii Message List and prompt the user to replace
the batteries. Unless there is some operation available to substitute for the Wii Balance Board
accessory, do not continue until the user has replaced the batteries.

Check the remaining battery power during each frame. To explain, when the remaining battery power
obtained by the WBCGetBatteryLevel function becomes 0, the WPADRead function will always return 0
for press, and Wii Balance Board operations will become impossible.

15.10 Wii Balance Board Operation Confirmation [Required]


Implement an operation confirmation process for the Wii Balance Board accessory to allow the user
to confirm that the Wii Balance Board accessory is operating properly. The Wii Balance Board
operation confirmation process will confirm that each of the four Wii Balance Board balance sensors
can get measurement values. If even one measurement value cannot be obtained, conclude that the
Wii Balance Board is not operating properly. For details, see the Wii Balance Board Accessory
Programming Manual.

15.11 [Japan Only] Sharing HOME Registration Data [Required]


Call the WPADRegisterBLCWorkarea function before the WPADInit or KPADInit function to share Wii
Balance Board registration data between applications that support this data.

 2006-2009 Nintendo 81 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

See the Wii Balance Board Accessory Programming Manual for details.

15.12 [Japan Only] Compliance with the Weights and Measures Law
[Required]
15.12.1 Display Based on Guaranteed Accuracy
It is prohibited to display load values on the screen that have a greater degree of accuracy than
indicated in the “Weight Display” specification of Wii Balance Board Accessory Operations Manual.

The units that can be used in the display vary according to the load, as described below.

Table 15-1 Allowable Display Units

Load Units

0–100 kg (0-220 lbs.) 500 g (1 lb.)

100–136 kg (220-300 lbs.) 1 kg (2 lbs.)

For example, it is not permitted to display 62.1 kg (136.9 lbs.).

However, just as for a scale with an analog display, it is acceptable to use a scale with tick marks
every 500 g (1 lb.) for loads up to 100 kg (220 lbs.) and to show the load by indicating a level in
between two tick marks.

15.12.2 Weight Display Restrictions


In games intended for the Japanese market, do not display the weight when a load that exceeds 136
kg (300 lbs.) is applied.

RVL-06-0132-001-V 82  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Appendix A Revision History of Previous Versions


Revision Item(s)
Version Description
Date Affected

1.13 2009/05/28 (Japanese version only) Standardized the terminology to "Revolution SDK,"
All
with a space between the two words.

Handling of the Wii Remote Jacket [Required]:


7.1.18 (Japanese version only) Updated the headers and footers of the landscape
page and the pages before and after it.

Wii Remote Jacket Usage Table for General Applications:


7.1.18.1 Explained why developers should contact [email protected] regarding the
screen and image to display to confirm that the Wii Remote Jacket has been
attached.

Handling Wii Remote Acceleration Noise [Required]:


7.2.28
Added this section.

Save Banner File Creation:


Moved to this section the part about the Save Data Management Screen that
8.18 previously was in section 8.18.1 Timing of Creation [Required].
Noted that data cannot be copied to SD Card when only a save banner file is
in the save data directory.

Timing of Creation [Required]:


Moved the part about the Save Data Management Screen to 8.18 Save
Banner File Creation.
8.18.1
(Japanese version only) Corrected terminology to read Save Data
Management Screen in places where it was written as "Save Data Screen."
Added instructions for creating a new save banner file.

Check the Save Banner File [Required]:


8.18.2 Clarified processes to take when the save banner file was not created as
intended or the file did not exist.

Operations Independent of the Start Order of Titles That Share Save Data
[Required]:
8.29.3
(Japanese version only) Standardized terminology to denote directory name,
changing "/share" to read "share."

Implementing the HOME Menu and Using the HBM Library [Required]:
Changed the title of this section from "Using the Home Menu Library" to
11.1 "Implementing the HOME Menu and Using the HBM Library."
Clarified that all applications must implement a HOME Menu.
Added a comment about the display and behavior of the HOME Menu.

Development Note for Regional Restrictions [Information]:


13.1.6
Added this section.

USB Keyboards:
14 Updated reference to the KBD Library Supplemental Manual since it has
now been released.

 2006-2009 Nintendo 83 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Disconnecting the Wii Remote Controller [Information]:


15.1
Changed the importance ranking from [Required] to [Information].

Load Restrictions [Required]:


Clarified that for the determination of the load restriction, the accurate load
measurement process must be performed regardless of whether accurate
15.2
loads are used in other parts of the application.
Noted that it is not a problem for the Wii Balance Board accessory if the user
takes some action that momentarily increases the load above 150kg.

Operation Restrictions [Required]:


Added as an operating restriction "Pressing down forcefully on the device
15.3
with a heel or other hard part of the body."
Standardized the wordings in the bullet points.

Using Load to Determine Simple Stepping On/Off Board [Required]:


Changed the title from “Stepping On and Off” to “Simple Stepping On/Off.”
15.5 Limited the scope to the cases of simple stepping on/off the Wii Balance
Board accessory. Added that the zero-setting must be done first and the
reason for the 2kg threshold.

Preparations for Accurate Load Measurement [Required]:


Added the checking of the load restriction as an example of performing the
15.6 Accurate Load Measurement process.
Added a reference to 15.5 to read about determining when the user has
stepped on and off the device.

Specification of the Process and Time Required for Accurate Load


Measurement [Required]:
15.7
Added the checking of the load restriction as an example of performing the
Accurate Load Measurement process.

Time Restrictions for Accurate Load Measurement [Required]:


15.8 Added the checking of the load restriction as an example of performing the
Accurate Load Measurement process.

Handling Insufficient Remaining Battery Power [Required]:


15.9 Updated the content to take into consideration the possibility of some
operation to be done in substitute for the Wii Balance Board.

Wii Balance Board Operation Confirmation [Required]:


15.10 Updated the Wii Balance Board accessory "sensor" to read "balance
sensor."

Display Based on Guaranteed Accuracy:


15.12.1 Standardized the numbering for Table 15 1 Allowable Display Units.
Previously it was shown as "Table 2." (Japanese version only)

1.12 2009/04/01 Standardized notation.


All
Changed the term “DS Single-Card Play” to “DS Download Play.”

RVL-06-0132-001-V 84  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

Revision
Added a link to Revision History of Previous Versions.
History

Processing Hot Swapping of Unsupported Extension Controllers [Required]:


Changed “extension controllers that are not supported” to “unsupported
extension controllers” in the title and text (Japanese version only).
Although there have been many reports of problems especially during
connection, the special mention of connection was deleted so that a caution
7.1.16 for both connecting and disconnecting is given.
The processing while an unsupported extension controller is connected was
rewritten in bullet form.
Content regarding notification for unsupported extension controllers was
moved to section 7.1.16.1 User Notification Regarding Hot Swapping of
Unsupported Extension Controllers [Recommended].

User Notification Regarding Hot Swapping of Unsupported Extension


Controllers [Recommended]:
7.1.16.1
The content in 7.1.16 Processing Hot Swapping of Unsupported Extension
Controllers [Required] related to notification was moved to this new item.

Wii Zapper:
7.4
Updated the reference to the released Wii Controller Overview.

Wii Console NAND Memory:


Added the following sections.
• 8.29 Sharing Save Data Between Applications
• 8.29.1 Creating a Directory for Sharing [Required]
8 • 8.29.2 Prohibition of Changing the File Size of Number of Inodes for Save
Data of Other Titles [Required]
• 8.29.3 Operations Independent of the Start Order of Titles That Share
Save Data [Required]
• 8.29.4 Handling When the Shared Files Are Deleted [Required]
• 8.30 Restriction on Copy Protect Settings [Recommended]

Operation Verification on Specified Models:


Added content regarding the Cordless Keyboard for Wii, and also revised
14.1 instructions regarding the Classic Keyboard 200.
Added to refer to USB Keyboard Library Supplemental Manual regarding the
key layout.

Support for Different Model Numbers According to Market and Language


[Required]:
Made revisions based on the content added regarding the Cordless
14.1.1 Keyboard for Wii.
Added mention to give additional attention to language-specific keys.
Changed the reference to USB Keyboard Library Supplemental Manual.

Handling Different Types of Keyboards [Required]:


14.1.4
Added this section.

 2006-2009 Nintendo 85 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Operation When a Non-Supported USB Device Is Connected [Required]:


14.5
Added this section.

Wii Balance Board Accessory:


15 Prohibited including specifications that require the use of the Wii Balance
Board, and made revisions to contact Nintendo in advance if there is no way
to avoid requiring use.

Load Restrictions [Required]:


15.2 Revised to perform an accurate load measurement for the load restriction.
Added references for accurate loads.

Specification of the Process and Time Required for Accurate Load


Measurement [Required]:
15.7
Changed the title from “Time Required for Accurate Load Measurement”
based on the fact that the process is also specified.

Wii Balance Board Operation Confirmation [Required]:


15.10 Replaced “Troubleshooting Mode” with “Wii Balance Board Confirmation” in
the title.

1.11 2008/10/31 The revision history of version 1.10 was supposed to list items for “GGID”
and “TGID” as changes to the Communications with Nintendo DS section.
13
However, a typo caused these both to appear as “GGID.” One of these has
been corrected to “TGID.”

[North American, European, Australian, and Korean Versions] License


Display of Licensee Titles [Required]:
2.18 Added that developers and publishers should consult with Nintendo if
displaying the “Licensed by Nintendo” logo at the channel banner screen is
difficult considering other legal notices.

Settings for Automatic Disconnection of Wii Remote Communications


[Recommended]:
Added an example of a situation in which the automatic disconnection time
for the Wii Remote might be reduced. Also added a note prompting the
7.2.26 reader to refer to 6.22 Changing Screen Burn-In Reduction Wait Time
[Recommended] and 7.2.20 Displaying a Message Notifying Users That Wii
Remote Transmissions Have Terminated [Recommended] (this note was in
the Revision History but missing in the actual section in the previous
version).

Display of Trademarked or Copyrighted Names in the Banner [Information]:


12.7 Standardized the terminology used to describe the channel banner screen,
following the aforementioned update to section 2.18.

1.10 2008/10/03 [North American, European, Australian, and Korean Versions] License
Display of Licensee Titles [Required]:
2.18
Updated to display “Licensed by Nintendo” according to the Licensed by
Nintendo Screen Package and indicated the reason behind this update.

Using Firmware of Specified Versions [Required]:


2.19 Added the USB HID library to the conditions for the use of extended
firmware.

RVL-06-0132-001-V 86  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

Resetting and Shutting Down in Response to Fatal Errors [Required]:


3.9 Rewrote this section to make it easier to understand that error messages
should continue to be displayed.

Sound:
4 Added section 4.5 Considerations for the User’s Sound Output Environment
[Information].

Applying Wii System Sound Settings [Required]:


4.1 Updated to make it easier to understand how the sound setting on the Wii
console must be used with some acceptable examples to apply.

Video:
Added the following sections.
6
• 6.25 Standardizing Aspect Ratios [Required]
• 6.26 Interlaced Display When Supporting Double-Strike Mode [Required]

Taking Differences Between Analog Values from Buttons and Control Sticks
into Account [Required[:
Updated the heading from “Upper Limit Value of the Control Stick and Button
7.1.7
Analog Input Value [Required].”
Rewrote this section to clarify that maximum values require caution because
of individual differences.

Support for Analog Input Values Defined for Control Sticks and Buttons
[Required]:
Updated the heading from “Analog Input Value Range of Control Stick and
7.1.8
Button [Required].”
Rewrote this section to clarify that irregular behavior should be prevented for
any value that is returned within the defined range.

Wii Remote Jacket Usage Table for General Applications:


7.1.18.1
Updated category descriptions.

Using the Relative Distance Between the Wii Remote and the Sensor Bar
[Recommended]:
7.2.1
Replaced an example of a relative distance, which was given by mistake,
with an example of an absolute distance.

Settings for Automatic Disconnection of Wii Remote Communications


[Recommended]:
7.2.26 It was recommended that the time limit for automatically disconnecting
communication with the Wii Remote not be changed from the standard
setting unless absolutely necessary. This has been clarified to say that the
time limit may be made shorter.

Limits on Frequent Rewrites [Required]:


8.2 Added a list of functions that update the FAT and had been slated to be
released soon.

 2006-2009 Nintendo 87 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Notification When the Number of Inodes or the Amount of Free Memory Is


Insufficient [Required]:
Removed instructions to display message NAND_10 because updates to
messages NAND_02 and NAND_03 have removed the need to display
NAND_10 onscreen.
8.11
Added conditions for not transitioning to the Data Management screen on
the Wii Menu.
Removed a reference to section 8.26 Support for
NAND_RESULT_MAXBLOCKS and NAND_RESULT_MAXFILES
[Recommended], which has been deleted.

Handling Corrupted Wii Console NAND Memory [Required]:


8.14 Rewrote this to clarify that an error message should continue to be
displayed.

Support for NAND_RESULT_MAXBLOCKS and


8.26 NAND_RESULT_MAXFILES [Recommended]:
Deleted as the result of a guideline review.

Handling NAND_RESULT_UNKNOWN [Required]:


Changed from [Recommended] to [Required].
8.28
Added a note that controller operations, RESET, and the Power Button will
be ignored while the error message is being displayed.

Nintendo GameCube Memory Card:


9 Updated to say that the CARD library was removed from Revolution SDK
3.2.

Prohibiting Use of the OSRebootSystem Function [Required]:


Changed the heading from “Use of the OSRebootSystem Function
10.4 [Recommended].”
Updated to prohibit use of the OSRebootSystem function and to state that
other functions should be called to use Wii Menu features.

HOME Menu:
11 Added section 11.15 Displaying Messages Suited to Save Data Confirmation
[Required].

Communications with Nintendo DS:


Moved section 13.2.3 Which GGID to Use [Required] from section 13.2 MP
Communications with the DS to section 13.1.4 Using GGIDs [Required]
under section 13.1 General because it is also related to DS Download Play.
13
Moved section 13.3.2 TGIDs Used by the MPDL Library [Required] from
section 13.3 DS Download Play to section 13.1.5 Using TGIDs [Required]
under section 13.1 General, because it is also related to MP communications
with the DS.

Wii Balance Board:


15
Added this chapter.

1.09a 2008/08/11 2.1.8 Revised Nintendo logo requirements.

RVL-06-0132-001-V 88  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

1.09 2008/06/17 1.4 Items Warranting Special Mention: Added.

Parental Controls [Information]: Updated the name of the rating agency for
2.17
Australia from OFLC to AGCB.

Updated the section heading from “[North American, European, and


Australian Versions] License Display of Licensee Titles [Required]” to “[North
2.18
American, European, Australian, and Korean Versions] License Display of
Licensee Titles [Required].”

Prohibiting Disc Access Using the CNT Library in the Release Version
3.12
[Required]: Added.

Support for the 4:3 Aspect Ratio [Required]: Rewrote to clearly indicate that
the static image bands for the 16:9 aspect ratio are not within the rendering
6.18
region, but instead outside of the region in the margin areas at the top and
bottom of the screen.

Check Before Switching to Progressive Display [Required]: Re-updated the


6.20
deleted item content as the result of a guideline review.

Support for 16:9 Aspect Ratio [Recommended]: Rewrote to clearly indicate


that the static image bands for the 4:3 aspect ratio are not within the
6.23
rendering region, but instead are outside of the region in the margin areas at
the left and right of the screen.

Added the following sections.


• 7.1.18 Handling of the Wii Remote Jacket [Required]
7.1 • 7.1.18.1 Wii Remote Jacket Usage Table for General Applications
• 7.1.18.2 Wii Remote Jacket Usage Table for Applications Using
Attachments

Updated the section heading from “Display when Extension Controller is


Necessary [Required]” to “Display When a Controller Other Than the Wii
Remote Is Necessary [Required].”
Replaced instances of “extension controller” with “controller other than the
Wii Remote” so that messages will also be displayed for the Nintendo
7.1.1 GameCube Controller as necessary.
Added a note that icons and so on may be displayed as well as messages.
Added a note stating that when more than one type of controller is required,
messages should be displayed for each type.
Added a note to see section 14.4 Processing During Startup when a
Keyboard Is Required [Required] for more information on USB keyboards.

Updated the section heading from “Error Handling when Writing to Wii
Remote Memory [Required]” to “Handling WPAD_ERR_TRANSFER or
7.2.10 WPAD_ERR_BUSY Errors when Writing to Wii Remote Memory [Required].”
Clarified that the covered errors are WPAD_ERR_TRANSFER and
WPAD_ERR_BUSY.

7.2.11 Updated the section heading from “Error Handling when Reading from Wii
Remote Memory [Required]” to “Handling WPAD_ERR_TRANSFER or
WPAD_ERR_BUSY Errors When Reading from Wii Remote Memory
[Required].”
 2006-2009 Nintendo 89 RVL-06-0132-001-V
CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Clarified that the covered errors are WPAD_ERR_TRANSFER and


WPAD_ERR_BUSY.
Clarified that error correction should be performed on the data that was read.
TM
Updated the section heading from “Nintendo GameCube Controller” to
TM
“Peripheral Devices That Connect to the Nintendo GameCube Controller
Sockets.”
Updated content to be applicable to applications that support any peripheral
device such as the GameCube Controller that connects to the Nintendo
GameCube Controller Sockets.
Added the following new sections.
7.3
• 7.3.8 Prohibiting Applications That Require the Nintendo GameCube
Controller [Required]
• 7.3.9 Joint Use of the Nintendo GameCube Controller and Wii-Specific
Peripheral Devices [Recommended]
• 7.3.10 Restrictions on Peripheral Devices That Connect to the Nintendo
GameCube Controller Socket [Required]
• 7.3.11 Providing Rumble Feature Settings [Required]

Application Support for the Nintendo GameCube Controller [Information]


7.3.1 [Deleted]: Corrected the section number of the reference in the Japanese
version.

Use of Origin Reset Command as Game Input Prohibited [Required]: To


7.3.2 improve readability, clarified that this item’s instructions apply to the
GameCube Controller.

Support for Origin Reset Command [Required]: To improve readability,


7.3.3
clarified that this item’s instructions apply to the GameCube Controller.

Updated the section heading from “Hot Swapping Support for Nintendo
GameCube Controller Socket Devices [Required]” to “Hot Swapping Support
7.3.4
for Peripheral Devices That Connect to the Nintendo GameCube Controller
Sockets [Required].”

Frequency of Checks for Hot Swapping [Recommended]: To improve


7.3.5 readability, clarified that this item’s instructions apply to any peripheral device
that connects to the Nintendo GameCube Controller Sockets.

Updated the section heading from “Stopping Access to the Optical Disc Drive
in Scenes Where the User is Urged to Insert or Remove the Nintendo
GameCube Controller [Required]” to “Stopping Access to the Optical Disc
7.3.7
Drive in Scenes Where the User is Prompted to Insert Devices into or
Remove Devices from the Nintendo GameCube Controller Sockets
[Required].”

Displaying the Wii Zapper Usage Screen [Required]:


Updated because Wii Zapper-only applications and Wii Zapper-compatible
applications differ in how they determine if the Strap Usage screen should be
7.4.1
displayed.
In the English document, standardized the phrase “How To Hold the Wii
Zapper screen” to “Wii Zapper Usage screen.”

8.20 Save Data Comments [Required]:

RVL-06-0132-001-V 90  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

Restructured the usable characters into a table that includes Chinese and
Korean.
Added a note to confirm that comments longer than 20 characters are
displayed properly when they are set.

Support for NAND_RESULT_MAXBLOCKS and


8.26 NAND_RESULT_MAXFILES [Recommended]: Clarified that error messages
are printed in the Wii Message List so that the reader is aware of this fact.

8.28 Handling NAND_RESULT_UNKNOWN [Recommended]: Added.

Nintendo GameCube Memory Card:


Indicated that the CARD library should not be linked when generating master
9
data.
Added a note explaining how to check that the library is not being linked.

Display Language for the HOME Menu [Required]: Added Chinese and
11.3
Korean to the table.

Support for HOME Menu by Classic Controllers [Required]: Updated from


11.6
[Recommended] to [Required].

Added a note stating that the instructions under “Displaying the Icon” in the
HOME Menu Library function reference should be followed as closely as
11.11
possible for fade-ins, fixed display time, and fade-outs for the HOME Menu
Disabled Icon.

Icon Animation [Required]:


Mentioned that animation does not need to be played in the Wii Menu’s
12.1 Channel Data Selection screen.
Added section 12.11.4 Layout Specifications Prior to Channel Script
Execution [Required] as a reference.

Use of Text Boxes for Icon Layout [Required]:


12.2 Updated descriptions of the Wii bitmap fonts because they are now included
in Revolution SDK.

Title Display in the Banner [Required]:


12.4
Deleted a mistaken item number for a reference document.

Use of Text Boxes for Banner Layout [Required]:


12.6 Updated descriptions of the Wii bitmap fonts because they are now included
in Revolution SDK.

12.11 Channel Script: Added.

Communications with Nintendo DS:


13 Noted that DS applications should follow the Nintendo DS Programming
Guidelines.

1.08 2008/04/02
Standardized the notation regarding inquiries to Nintendo.
Standardized the leads for each section, noting that its content is to be
supported.
Standardized the names for the Strap Usage screen, the Disc Channel, and
 2006-2009 Nintendo 91 RVL-06-0132-001-V
CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

the Channel Banner screen.

2.1 Deleted mention of Nintendo GameCube Memory Card.

2.21 Added.

2.21.1 Added.

2.21.2 Added.

2.22 Added.

2.22.1 Added.

2.22.2 Added.

Updated content to clearly state that the restriction does not include the 100
2.3 frames necessary for switching from progressive to interlaced display, or
from EURGB60 to PAL display.

Updated, changing the reference to library and tool versions to read "latest
2.6 package." Clearly stated that this involves Revolution SDK and its patches
and related tools distributed by Nintendo.

Rewrote so it is easier to understand that caution is needed when creating


2.7 the master data. Restructured the paragraph order so that the flow of text is
easier to understand.

Updated contents to talk about access to devices via OS and Revolution


2.8
SDK.

Deleted mention of Nintendo GameCube Memory Card and added mention


2.16 of signatures and authentication as measures against alteration of loaded
data.

Added links for banners that display "Licensed by Nintendo" and for the
2.18
Strap Usage screen.

Updated the terminology, changing "network-compatible firmware" to


2.19 "extension firmware, and changing "non-network-compatible firmware" to
"standard firmware."

Mentioned that the DOL file size should be considered in the OSExec*
function example. Also added sound as means of verifying user operation of
2.20
Controller, and added the request that Nintendo be contacted if display
needs to be in static state for longer than 10 seconds.

Rearranged for easier comprehension. Added criteria for prolonged,


3.3
continuous non-sequential access.

3.7.1 Added.

3.7.2 Inserted content from section 3.7.

6 Standardized subheads and content in the following ways.


Added the word "display" to references to progressive and interlaced.
Updated content to clarify that display can be switched from progressive
RVL-06-0132-001-V 92  2006-2009 Nintendo
Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

display to interlaced display, and from EU RGB 60 display to PAL display.

Changed the title to “Procedure for Switching from Progressive Display to


6.5 Interlaced Display [Recommended]”. Previously it read
"Interlaced/Progressive." Also updated content to read more clearly.

Deleted because there is no operation switching display mode from


6.6
interlaced to progressive.

Deleted because the information duplicates the content in section 6.5


6.7 Procedure for Switching from Progressive Display to Interlaced Display
[Recommended].

6.8 Added the word "display" to the section’s title and content.

Changed the title to “Switching from EURGB60 to PAL [Recommended]”.


6.11 Previously it read “PAL/EU RGB 60”. Also updated the content to read more
clearly.

Deleted because there is no operation switching display mode from PAL to


6.12
EU RGB 60.

Deleted because the information duplicates the content in section 6.11


6.13
Switching from EURGB60 to PAL [Recommended].

Deleted because there is no requirement for applications to support library


6.14
checking.

6.18 Rewrote the letterboxing example to be easier to understand.

6.20 Deleted because this is checked with the VIGetScanMode function.

Added an example that describes how turning power off and on to the Wii
6.21
Remote Pointer can make the burn-in reduction feature inoperative.

6.23 Rewrote the pillarboxing example to be easier to understand.

6.24 Updated the content relating to brightness.

7.1.3 Added a link (to section 7.4.1) for applications that support the Wii Zapper.

Added a note regarding the burn-in reduction feature when the


7.2.4
KPADEnableDPD or KPADDisableDPD functions are used.

7.2.25 Corrected the Japanese version of this section.

7.4 Added.

Clarified that the restriction in this section is in regard to updating the FAT.
Added comments about temporary editing and replaced the text about the
8.2
NANDSafe series with text about the NANDSimpleSafe series API for auto-
saving,

Revised. The OSReturnToMenu function was replaced with the


OSReturnToDataManager function, which can update the Wii Menu and
8.11 return to the Data Management screen. Clarified that a message such as
NAND_10 from the Wii Message List should be displayed if not moving to
the Wii Menu's Data Management screen.

 2006-2009 Nintendo 93 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Moved the content to section 8.18.1 Timing of Creation [Required] and


8.18
added section 8.18.2 Check the Save Banner File [Required].

Deleted mention of a bug workaround because the Wii Menu has been
8.20
updated.

Deleted because the Wii Menu has been updated so this is no longer
8.27
necessary.

Deleted all sections of this chapter because the use of the Nintendo
9 GameCube Memory Card has been prohibited and the CARD library will be
deleted from a soon-to-be-released Revolution SDK.

11.14 Added.

Deleted because starting with Revolution SDK Extensions 2.1, Wii games
13.3.1
can also specify DS Single Card Play icons.

2.15 [N. American Version Only] Displaying the ESRB Online Rating Notice
for Applications Using Network Features [Required]
Updated the heading from “[N. American Version Only] Displaying a
Cautionary Notice for Applications Using Online Features [Required]”.
Updated contents. Updated the content also.
6.18 Support for 4:3 Aspect Ratio [Required]
Mentioned that it is permissible to display static images in the margins, in a
manner that resembles letterboxing, and that 6.24 Avoiding Screen Burn-In
Caused by Static Display [Information] should be referenced for information
on displaying static images.
6.23 Support for 16:9 Screen Ratio [Recommended]
1.07 2008/01/31 Mentioned that it is permissible to display static images in the margins, in a
manner that resembles pillarboxing, and that 6.24 Avoiding Screen Burn-In
Caused by Static Display [Information] should be referenced for information
on displaying static images.
6.24 Avoiding Screen Burn-In Caused by Static Display [Information]
Removed the pillarboxing and letterboxing examples of fixed displays that
can cause screen burn-in.
8.4 Write Operation Display [Required]
Removed the directive to show NAND_01 from the Wii Message List before
starting a write operation.
14.1 Operation Verification on Specified Models
Mentioned that the color of the “Classic Keyboard 200” is irrelevant.

Added the following items.


1.06 2007/12/19 2 • 2.19 Using Firmware of Specified Versions [Required]
• 2.20 Time Restriction when Screen is in Static State [Required]

3.2 Changed the reference to "Wii Optical Disc Drive Guidelines."

Revised description to state that program loading is performed by the Wii


3.8 Menu rather than the IPL.
Updated the reference to "Wii Optical Disc Drive Guidelines."

RVL-06-0132-001-V 94  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

Divided the sentence that described the reset process and shutdown
3.10
process into two sentences to be more easily understood.

Clarified that when the application has separate settings, the Wii console
4.1 settings are applied to these separate settings when the application is
launched initially.

Deleted mention of Revolution SDK 2.2 Patch 10.


6.4
Also deleted mention of applications that do not support progressive display.

Deleted mention of Revolution SDK 2.2 Patch 10.


6.10
Also deleted mention of applications that do not support EU RGB 60 display.

Clarified that when the application has separate settings, the Wii console
6.16 settings are applied to these separate settings when the application is
launched initially.

6.21 Updated.

6.22 Updated.

6.22.1 Deleted in line with changes to 6.21 and 6.22.

Added the case of operating an unsupported extension controller as a


7.1.5
relevant example.

Changed heading from "Handling Unsupported Extension Controllers


[Required]."
Also mentioned that the WPADAttachDummyExtension and
7.1.16
WPADDetachDummyExtension functions were prepared for debugging in
order to verify behavior when an unsupported extension controller is
connected or disconnected.

Clarified that the Wii Remote memory is physically damaged when re-
7.2.10
accessing fails three times.

Clarified that the Wii Remote memory is physically damaged when re-
7.2.11
accessing fails three times.

7.2.16 Restored a previously deleted item as a [Recommended] item.

Changed heading from "Halting Data Transfers when No Output Occurs on


the Wii Remote Speaker [Recommended]."
7.2.17
Also, separately clarified the description of processing when sound is not
output for a period of time and when sound is output frequently.

Added a specific use example, and deleted reference to the “Wii Remote
7.2.18
and Nunchuk Hardware Overview.”

Updated the relevant conditions for this item. Also provided more information
7.2.27
for the case when returning to the application from the HOME Menu.

7.3.7 This item was added.

8.3 The "NAND Library Error Types and Handling" table was moved to the
"Introduction" page of the NAND API description in the Function Reference

 2006-2009 Nintendo 95 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Manual as "Handling Result Codes." Accordingly, the table was deleted and
a reference to the new location was added.
In addition, a more detailed description of the reference was made.

Clarified that the data for which damage should be prevented is important
8.4 data, and added explanation regarding data that does not need to be
displayed.

Changed the heading from "Reset Handling" to easily differentiate it from


8.7
10.1 Wii Console RESET [Required].

8.8 Added a caution for informing the user about required memory space.

8.12 Restructured the sentence to emphasize the concern for changing file sizes.

Added information regarding protection against tampering on the application


8.24
side.

Added that 8.7 Handling Reset While Writing [Required] should be


10.1
referenced regarding handling while writing to the Wii Console save memory.

11.5 Deleted this item.

11.13 Clarified that the sound volume "setting" should be set to 0.

Revised so that the timing by which TGID becomes a different value


13.3.2
changes when communications begin.

14 This section was added to support USB Keyboard.

1.05a 2007/09/27 13.3.2 Corrected heading.

1.05 2007/08/10 Revision Corrected errors in sections 8.13, 8.14, 8.27, 10.6, and 12.8 of the revision
History history for Version 1.04.

Deleted the fact that some of the referenced documents were being updated
1.2
and therefore may not have contained the information being referenced.

1.3 Added the new section “Do Not Use Wii Development and SDK Files on
Other Platforms.”

2.10 Some content that referred to “Normal Operation after the Disc Drive Motor
Is Shut Off From a Period of Inactivity” was still present, so it was deleted.

2.13 Clarified that the warning screens for which display is prohibited is limited to
screens relating to Health and Safety Precautions.

3.9 Added a note to refer to section “3.11 Message Display in Response to Fatal
Errors [Required],” for details about fatal error messages.

3.11 Added the new section “Message Display in Response to Fatal Errors
[Required].”

6.24 Added the new section “Avoiding Screen Burn-in Caused by Static Display
[Information].”

7.1.1 Added the fact that there is no need to display the message if it has been
confirmed that the extension controller required by the application has

RVL-06-0132-001-V 96  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

already been connected.

7.2.14 Explained the conditions in greater detail, namely that [the message should
be displayed when an error is detected using a checksum of the data in the
Wii Remote memory or other such means, or when the
WPADReadGameData function returns WPAD_ERR_BROKEN.

8.1 There was no caption for the table, so it was changed to “Usage Limitations
for Wii System Memory.”

There was no caption for the table, so it was changed to “NAND Library
8.3
Error Types and Handling.”

Added the fact that there is no need to display a message if there is no need
8.11
to notify the user of the reason that the save could not be performed.

Corrected “display a message like that of NAND_08” to “display the


8.14 NAND_08 message exactly” because this section is referring to NAND_08,
which is marked as “Changes prohibited” in the Wii Message List.

There was no caption for the table, so it was changed to “Errors Displayed
9.5
when Memory Cards cannot be Used.”

These paragraphs previously directed the user to refer to the Reset and
10.1 Shutdown Programming Manual for details regarding the pre-processing for
10.2 resets and shutdowns, respectively. The wording has been changed so that
the user should refer to this document regarding the overall content.
1.05 2007/08/10
There was no caption for the table, so it was changed to “Selectable
11.3
Languages for Each Market.”

13 Added a new chapter, “Communications with Nintendo DS”

Changed the organization of content, as described below.


Added internal document links to the “Revision Items” column of the
1.04 2007/05/31 Japanese version 1.04 Revision History table and the content of the
All
precautions.
Formally moved all messages to the Wii Message List, and added notes
about referencing the Wii Message List.

2.1 Changed from [Information] to [Required].

Based on the fact that the screen displayed right after startup is the Strap
usage screen, added clarification regarding the screen to be displayed.
2.3 Added a reference to the Strap usage screen.
Deleted the section that had referenced “Wii File Restriction” in the
“Revolution Optical Disc Drive Library manual.”

Given the policy that explanations for legal rights notations will be given in
2.5 each library and tool, the text stating that there were “plans to distribute a
document compiling various library tool rights displays” was deleted.

The heading was changed from “Library Version” to “Library and Tool
2.6 Versions.”
Added a note about tools to the content.

 2006-2009 Nintendo 97 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Added MIDI adapters as an example of libraries for which releases are


2.9
prohibited.

Updated this paragraph to ensure that fatal bugs like errant processes or
freezes do not occur, even if the application is run for a long time.
2.10
The heading was also changed from “Demo Screen Loop Processing” to
“Guaranteeing Extended Operation of the Application.”

This paragraph merely referenced content explained in other paragraphs, so


2.11
it was deleted.

Added a list of the items in Wii console configuration.


2.12
Changed from [Information] to [Required].

The description of the size and type of font required was difficult to
2.18
understand, so it was rewritten.

Changed the heading from “Infinite Loops During Multiple Data Streaming
Prohibited” to “Prohibition of Non-Sequential Access Performed Continuously
for Long Periods of Time.”
1.04 2007/05/31 3.3
Revised the description to include that continuous, non-sequential access for
long periods of time is prohibited in order to prevent shortening the life span
of the drive and reduce seek noise.

Revised the description regarding the required message to refer to DISC_06


3.4
of the Wii Message List.

3.5 Shutting off the disc drive motor does not have an effect on the currently
3.6 provided development environment, so deleted these paragraphs.

Added the following new items:


3.9 Resetting and Shutting Down in Response to Fatal Errors [Required]
3.10 Resetting and Shutting Down in Response to Disc Errors Other Than Fatal
Errors [Required]

Combined the following items into “4.1 Applying Wii System Sound Settings
[Required]”:
4.1
• “Sound Setting [Information]”
4.2
• “Application of Wii Console System Sound Settings [Required]”
4.3
• “Sound Output for Applications Supporting Multiple Sound Settings
[Required]”

6.1 Added a statement about the safe frame for a 16:9 aspect ratio.

Deleted because its contents were redundant with the content indicated in
6.2
the guidelines in the “Video” section.

Added a statement that changing the settings is prohibited with Revolution


SDK 2.2 Patch10, which contained a function for changing the items in Wii
6.4
System Settings that relate to progressive display and EURGB60.
6.10
Made it clear that the appropriate displays are either interlaced or
progressive, and either PAL50 or EURGB60, respectively.

6.5 Because the screen displayed right after startup is the Strap usage screen,
clarified the screens to be displayed.

RVL-06-0132-001-V 98  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

6.11 Added a reference point for the Strap usage screen.

6.14 Deleted MPAL.

6.15 Added that anamorphic widescreen is recommended.

Clarified that the appropriate display is either 4:3 or 16:9.


Previously it was stated that changing items in Wii System Settings that
6.16 relate to the 16:9 aspect ratio was prohibited when using Revolution SDK 2.2
Patch 10, but the function in question is not being provided, so the statement
was deleted.

Made a correction to refer to the “Video Interface Library” Programming


6.19
Manual instead of the “Video Interface Library” Programming Guidelines.

Added the reason that a 16:9 screen aspect ratio is recommended to the
1.04 2007/05/31 6.23 description.
Added a reference to the “Video Interface Library” Programming Manual.

Deleted the example message.


7.1.1
Added a reference to CONT_01 and CONT_02 in the Wii Message List.

Added to the description that with Revolution SDK 2.4 Patch 6 and later,
7.1.16 functions have been added for changing the device type of the Wii Remote
without actually inserting an extension controller.

“Handling HOME” was moved from the “Wii Remote” section.


The fact that the “HOME Menu is displayed immediately if HOME is pressed
7.1.17 on the Wii Remote” was redundant with the “HOME Menu” section, so it was
deleted.
Changed the reference target to “HOME Menu.”

7.2.2 Moved “Handling HOME [Required]” to the “All Controllers” section.

Changed the text “when the pointer is not being used” to read “in scenes that
7.2.4
do not use the Pointer.”

Added to the description that output from the speaker won’t be correct if it is
7.2.5
being used at the same time as the Wii Remote memory.

7.2.8 Deleted the example message.


7.2.9 Added a reference to CONT_03 of the Wii Message List.

7.2.10 Added that CONT_04 of the Wii Message List should be displayed if
7.2.11 rewriting to or rereading from the Wii Remote memory fails three times.

Deleted the example message.


7.2.14
Added a reference to CONT_05 in the Wii Message List.

Deleted the example message.


7.2.15
Added a reference to CONT_06 and CONT_07 in the Wii Message List.

Deleted, because it was verified that there is no need to prohibit continuous


7.2.16
play on the Wii Remote speaker.

 2006-2009 Nintendo 99 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Deleted the example message.


7.2.19
Added a reference to CONT_09 in the Wii Message List.

Deleted the example message.


7.2.20
Added a reference to CONT_10 in the Wii Message List.

Deleted the example message.


7.2.23
Added a reference to CONT_11 in the Wii Message List.

Deleted this paragraph; “One Time Mode Synchronization” will only be listed
7.2.24
in the Wii Terminology, as is the case with all other terms.

Changed the heading from “Independent Adjustment of Wii Remote Speaker


Volume by Applications” to “Prohibition of Using the
1.04 2007/05/31 7.2.25 WPADSetSpeakerVolume function.”
Deleted the condition “If the application has its own independent option
setting for the Wii Remote speaker volume.”

Added the following new sections:


7.2.26 “Settings for Automatic Disconnection of Wii Remote Communications
[Recommended].”
7.2.27
“Handling When a Wii Remote is Connected to a Player Number not Used
by the Application [Recommended].”

The content of “7.3.1 Application Support for the Nintendo GameCube


7.3 Controller [Information]” is a description that relates to all
7.3.1 Nintendo GameCube Controller sections, so this item was deleted from this
7.3.1 and moved to 7.3.

Changed the handling of the following errors from “Errors that applications
must handle” to “Errors that applications are expected but not required to
8.3 handle (for which a bug report to Nintendo is expected).”
• NAND_RESULT_ALLOC_FAILED
• NAND_RESULT_BUSY

Deleted the example message.


8.4
Added a reference to NAND_01 and NAND_09 in the Wii Message List.

Deleted the example message.


Added a reference to NAND_02, NAND_03, and NAND_10 in the Wii
Message List.
Deleted description for saving multiple files.
8.11 Added the description “When there is insufficient memory available and an
insufficient number of available inodes at the same time, the insufficient
memory available message should be given higher priority for displaying.”
Added a note about referencing the section on
NAND_RESULT_MAXBLOCKS and NAND_RESULT_MAXFILES.

Changed the rank from [Recommended] to [Required].


8.13 Deleted the example message.
Added a reference to NAND_07 in the Wii Message List.

8.14 Changed the rank from [Recommended] to [Required].

RVL-06-0132-001-V 100  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

Deleted the example message.


Added a reference to NAND_08 in the Wii Message List.

Made it clear that this is an optional item for an occasion when one wants to
save data immediately before the shutdown process.
8.15
Because an addition was made to “Wii Power Button [Required]” regarding
shutdowns via hardware, a note about referring to that section was added.

Updated this paragraph so that it indicates:


That save banner files are created at the end of the sequence that creates
8.18 the minimum required files starting at the state in which there are no files in
the home directory. and
That initial startup is an example of a state in which there are no files.

Added the following new items:


8.25 • “Prohibition of Usage Restrictions on Save Data Due to Wii Console-
Specific Information [Required].”
8.26
• “Support for NAND_RESULT_MAXBLOCKS and
NAND_RESULT_MAXFILES [Recommended].”

Moved the explanation about precautions when creating save banners from
8.27
“12 Icons and Banners” to 8.27.

The content of “Nintendo GameCube Memory Card Compatible Application


9 [Information]” is a description that relates to all sections of
9.1 Nintendo GameCube Memory Card, so this item was deleted from 9.1 and
moved to Chapter 9 description.

Added a correspondence chart between the conditions for error display and
9.5
the Wii Message List IDs.
1.04 2007/05/31
10 Changed the heading from “Reset” to “Reset and Shutdown.”

The descriptions of exceptions relating to fatal errors of the optical disc drive
10.1 was moved to a new section “Resetting and Shutting Down in Response to
Fatal Errors [Required]” and deleted from here.

The descriptions of exceptions relating to fatal errors of the optical disc drive
was moved to be the new section “Resetting and Shutting Down in
10.2 Response to Fatal Errors [Required]” and deleted from here.
Added a note about shutdown via hardware.

Revised the description about reset operations, following a change to the


10.3
“Restrictions on Operations for Resets.”

Changed the term “hot reset” to specifically refer to the “OSRebootSystem


10.4
function.”

The content of this paragraph was redundant with “Wii Console RESET
10.5
[Required]” and “Wii Power Button [Required], so it was deleted.

The former heading, “Prohibition Against Using the Nintendo GameCube


10.6 Controller Reset Command [Required],” was changed to “Restrictions on
Operations for Resets.”

 2006-2009 Nintendo 101 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Deleted the description about the Nintendo GameCube Controller reset


command.
Deleted “on the Wii Remote” from the phrase “the HOME Button Menu on
the Wii Remote” (in the Japanese version).

Added that the HOME Menu must be displayed immediately if HOME is


11.2
pressed, and that a confirmation message must not be displayed.

Added “Settings and Display for 16:9 Screen Ratio Display Supported
11.4
Application” as a reference.

Added the handling when a Wii Remote is connected to a player number not
used by the application following the addition of the new section “Handling
When a Wii Remote is Connected to a Player Number not Used by the
11.5 Application [Recommended].”
Changed the heading from the former “Using HOME Menu from All
Connected Wii Remotes” to “Using the HOME Menu from All Paired Wii
Remotes.”

11.6 Changed the level of importance from [Required] to [Recommended].

Restructured the former paragraph “Restrictions on Rumble when the


Application has its own Rumble Settings [Required]” as the following three
items:
1.04 2007/05/31 11.8 Restrictions on Rumble Feature
11.8.1 Restrictions Due to the Rumble Setting of the HOME Menu [Required]
11.8.2 Prohibition of Changing the Rumble Setting of the HOME Menu [Required]

Added the conditions for not displaying HOME.


11.11
Changed the level of importance from [Required] to [Recommended].

Added a new paragraph “Sound Volume When Entering and Exiting the
11.13
HOME Menu [Required].”

Added that animations are required in order to make the Wii Menu look like
12.1
an interface to a television channel.

Moved [this paragraph] to Chapter “8 Wii System Memory” because it


12.8
describes cautions for creating save banners.

Added the statement that sound is required in order to make the Wii Menu
12.9
feel like an interface to a television channel.

12.10 Added the [Required] notation because it had previously been missing.

Notification When the Number of inodes or the Amount of Free Memory Is


1.03 2007/02/07 8
Insufficient [Required].

1.02 2007/02/01
All Combined precautions from the following three documents:
• Icon and Banner Specifications
• Wii Save Data Creation Guidelines
• HOME Menu Implementation Specifications
In the Japanese version, the term “Wii system memory” has been replaced
RVL-06-0132-001-V and standardized  2006-2009
102 to “Wii system NAND memory" (no changes to theNintendo
user
Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

terminologies for messages). The English version will continue to use “Wii
system memory.”
Standardized the reference target name for individual sections.

Moved Startup Disc Error Handling [Required] to Chapter 3.


Replaced the contents in Integrating Banners, Comments, and Icons
[Information] with a reference to related items, and changed the level of
importance.
Referencing and Changing Wii System Settings updated to Application of Wii
System Settings [Required].
2 Combined the two sections “Display of Health and Safety Warning” and
“Application Startup Display Message” and updated as Prohibition of
Warning Display by Applications [Required].
Updated Program Distribution Method [Required] and Parental Controls
[Information].
Added [North American, European, and Australian Versions] License Display
of Licensee Titles [Required].

Updated Wii Game Disc Error Handling [Required].


Updated Normal Operation after the Disc Drive Motor Is Shut Off From a
3
Period of Inactivity [Required].
Moved “Startup Disc Error Handling” from Chapter 3.

Updated Support for Progressive Display [Recommended], PAL 50 Support


[Required], Settings and Display for Applications That Support 16:9 Screen
Ratio Display [Required], and Checking the On-Screen Display During
Application Startup [Required].
6 Updated Applying Screen Burn-in Reduction Setting [Required] and changed
the level of importance.
Added Changing Screen Burn-in Reduction Wait Time [Recommended],
Restrictions for Non-Activation of Screen Burn-in Reduction [Required], and
Support for 16:9 Screen Ratio [Recommended].

Updated Display When Extension Controller is Necessary [Required],


Explanatory Message for Wii Remote Strap Use [Required], and Check
Before Switching to Progressive Display [Required].
7.1 Updated the heading “Prohibition on the Use of Origin Reset Command for
the Analog Input of the Extension controller” as Do Not Use Origin Reset
Command for Extension Controller Analog Input as Game Input [Required].
Added Handling Unsupported Extension Controllers [Required].

1.02 2007/02/01
7.2 Updated Handling HOME [Required], Disabling Pointer for Applications
Without Pointer Function [Required], Disabling Pointer for Applications with
Pointer Function [Recommended], Prohibition of Simultaneous Use of Wii
Remote Memory and Wii Remote Speaker [Required], Wii Remote Data
Error Checking [Required], Message Display When Writing to Wii Remote
Memory [Required], Message Display When Loading Wii Remote Memory
[Recommended], Data Compatibility for the Same Application Using Wii
Remote Memory [Required].
 2006-2009 Nintendo Updated the103
heading “Prohibition of Application Dependent on Wii Remote
RVL-06-0132-001-V
CONFIDENTIAL Memory Access Speed” as Prohibition of Operations Dependent
Released: on Wii
August 18, 2009
Remote Memory Access Speed [Required] and updated the content.
Updated the heading “Handling Damage to Wii Remote Memory” as
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Handling Data Corruption in Wii Remote Memory [Recommended] and


updated the content.
Updated Continuous Play on the Wii Remote Speaker [Required].
Updated the heading “Audio Cut off of Speaker due to Poor Signal
Sensitivity” as Speaker Sound Quality under Poor Signal Conditions
[Recommended] and updated contents.
Updated Displaying a Message Notifying the User That Battery Charge Is
Low [Recommended].
Added Application of Pause Function at Termination of Wii Remote
Communication [Information], Specification of Simple Pairing Procedure
[Required], Message Displayed During Simple Pairing [Required], Display
Format for Simple Pairing [Required], Prohibition of Using the
WPADSetSpeakerVolume Function [Required].

Updated the contents and the level of importance of Nintendo GameCube


7.3
WaveBird Wireless Controller Support [Information].

Updated Restrictions on Wii System Memory [Required] and Handling


Corrupted Wii System Memory [Required].
Added Prohibition of Creating Files or Directories Without Owner Read
Permission [Required], Prohibition of Frequent Read Access [Required],
8 Save Banner File Creation [Required], Precautions for Creating Save Data
[Information], Save Data Comments [Required], Save Data Location
Specification [Required], Prohibition of Using Reserved Names [Required],
Precautions Regarding the nocopy Directory [Required], and Save Data
Tampering Protection by the Wii Console [Information].

Updated Wii Console RESET [Required], Wii Power Button [Required], and
10 Resetting the Nintendo GameCube Controller Origin during Reset
Operations [Required].

11 Added the chapter “HOME Menu.”

12 Added the chapter “Icons and Banners.”

1.01 2006/10/06 2 Deleted “Boot Caching.”

3 Added “Prohibition on Drive Specification Dependency.”

Updated “Sound Setting,” and “Sound Output for Applications Supporting


4
Multiple Sound Settings.”

5.6 Edited brightness formula used for photosensitivity.

Added “Video Settings.”


Updated “Settings and Display for EURGB60 Supported Application” and
“Reset Operation during Progressive Output.”
Updated “Test of Different TV Reception Formats” as “Maintaining
6
Appropriate Video Output.”
Added “Checking the On-screen Display during Application Startup” and
“Check Before Switching to Progressive Display.”
Updated “Applying the Raster Burn Mitigation Setting.”

RVL-06-0132-001-V 104  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

Updated “Explanatory Message for Strap Use.”


Updated “Using Wireless LAN” as “Frequency Band Usage when Using a
Wireless LAN.”
Updated “Support for Changes in the Wii Remote and Sensor Bar Distance”
to “Using the Relative Distance between the Wii Remote and the Sensor
7 Bar.”
Added “Restrictions on Contents of Data Written to Wii Remote Memory.”
Updated “Continuous Play on the Wii Remote Speaker.”
Updated “Handling Audio Data Transmissions Stopped by the Feature for
Avoiding Audio Cutoff” as “Audio Cutoff of Speaker due to Poor Signal
Sensitivity.”

Updated “Write Operation Display,” “Data Unit for Users,” “Checking the
Amount of Free Memory and Number of Free inodes Using
8 NANDCheck[Async],” “Notification When the Amount of Free Memory or
Number of inodes is Insufficient,” and “Handling Corrupted Wii System
Memory.”

Added “Prohibition on Programs Depending on the Access Speed of


9
Nintendo GameCube Memory Cards.”

Updated “Wii Console RESET,” and “Wii Power Button.”


10 Changed the title heading “Reacquisition of Origin for GameCube Controller
during Reset Operation” to “Reset the Nintendo GameCube Controller Origin
during Reset Operations.”

2 Updated “Prohibition of Dependency on Device Specifications.”


1.00 2006/09/21
7.1 Updated “Handling +Control Pad Input.”

Updated “Support for Changes in the Wii Remote and Sensor Bar Distance.”
Changed “Limitations on Use of HOME” to “Handling HOME.”
Added “Prohibition of Simultaneous Use of Wii Remote Memory and the Wii
Remote Speaker.”
Added “Data Compatibility for the Same Application using Wii Remote
Memory,” “Prohibition of Application Dependent on Wii Remote Memory
Access Speed,” “Handling Damage to Wii Remote Memory,” and “Displaying
a Message when Overwriting Wii Remote Memory.”
7.2
Updated “Handling Audio Data Transmissions Stopped by the Feature for
Avoiding Audio Distortion.”
1.00 2006/09/21 Changed “Specifying a Message Notifying the User that Battery Charge is
Low” to “Displaying a Message Notifying the User that Battery Charge is
Low.”
Changed “Specifying a Message Notifying Users that Wii Remote
Transmissions Have Terminated” to “Displaying a Message Notifying Users
that Wii Remote Transmissions Have Terminated.”

Updated “Notification When the Amount of Free Memory or Number of


8 inodes is Insufficient,” “Handling Corrupted Files,” and “Handling Corrupted
Wii System Memory.”

Changed “Support for Non-Japanese Spec GameCube Memory Cards” to


9
“Errors Displayed when Memory Cards Cannot be Used.”

 2006-2009 Nintendo 105 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

Revision Item(s)
Version Description
Date Affected

Overall Standardized terminology to use “Wii system memory.”

2 Added section 2.18 Parental Controls.

Added that the feature for stopping the disc drive motor does not work under
3 Revolution SDK 2.2 Patch.
Deleted “Error Display when Disc Eject Button is Pressed.”

Updated text. Added figures, graphs, and tables. Added information on


5
calculating screen brightness.
0.98 2006/09/15
6 Added “Applying the Raster Burn Mitigation Setting.”

Updated “Explanatory Message for Wii Remote Strap Use.”


Updated “Lower Limit Value of the Control Stick and Button Analog Input
Value,” “Upper Limit Value of the Control Stick and Button Analog Input
7.1 Value,” and “Analog Input Value Range of Control Stick and Button.”
Deleted “Vibration Enabled/Disabled Mode Switch Function.”
Updated “Do Not Use the Origin Reset Command for the Analog Input to an
Extension Controller.”

Updated “Limit Use of HOME” and “Disabling Pointer for Application Without
Pointer Function.”
Deleted “A Caution about Data Loss for Wii Remote Memory.”
Changed the level of importance of “Message Display when Writing to Wii
Remote Memory.”
Standardized terminology to use the word “speaker.”
7.2
Combined “Handling Audio Cutoff of Speakers Due to Plugging in the
External Extension Controller” and “Handling Audio Cutoff of Speakers Due
to Packet Loss” to form “Handling Audio Data Transmissions Stopped by the
Feature for Avoiding Audio Cutoff.”
Added “Specifying a Message Notifying the User that Battery Charge is Low”
0.98 2006/09/15 and “Specifying a Message Notifying Users That Wii Remote Transmissions
Have Terminated.”

Updated “Checking the Number of Free inodes and Amount of Free Memory
Using NANDCheck[Async]” and “Notification When the Number of inodes or
8 the Amount of Free Memory Is Insufficient.”
Changed the rank of “Handling Corrupted Files.”
Updated “Handling Corrupted Wii System Memory.”

Updated “Memory Card Menu in Application.”


9 Updated “Note for Using CARDFastOpen Function” and changed the title to
“Limit on Accessible Memory Card Files.”

10 Updated “Wii Console RESET” and “Wii Power Button.”

0.97 2006/09/07 2 Updated "Boot Caching".

Added “Prohibition on the Modification of the Audio Playback Frequency


4.4
within an Application.

6 Added description of Wii console setting values when using a 16:9 aspect

RVL-06-0132-001-V 106  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL
Wii Programming Guidelines Revolution SDK

Revision Item(s)
Version Description
Date Affected

ratio.

Added a note that the screen for describing how to wear the strap is
currently being studied.
Added the section “Prohibition on the Use of the Origin Reset Command for
the Analog Input of the Extension Controller”.
7 Updated notes regarding message displayed when reading or writing to Wii
Remote memory.
Added the sections “Handling Audio Cutoff of the Speaker Due to
Connection of an External Extension Controller” and “Handling Audio Cutoff
of the Speaker Due to Packet Loss.”

Standardized terminology to use the term “Wii system memory” (old term:
Wii console internal flash memory).
8 Deleted “Free Space Check” (the old 8.4).
Updated sections 8.1, 8.2, 8.3, 8.4, 8.5, and 8.8.
Added new sections from 8.9 to 8.15.

Updated the names of documents being referenced.


10 Added sections 10.2 and 10.6.
Changed the title of section 10.5.

2.17 Deleted the (tentative) appellation for Boot Caching.

6.17 Added section on Support for 4:3 Aspect Ratio.


0.96 2006/08/24
Added indication that the pointer halt functionality is not currently available in
7.2.4
the KPAD library.

Added sections on Wii Remote memory (7.2.5 to 7.2.9) and on the speaker
7.2
(7.2.10 and 7.2.11).

2.17 Added section on “Boot Caching (tentative).”

4 Reorganized the entire chapter.


0.95 2006/08/09
Changed the title “Warning Message of Moving Controllers” to “Explanatory
7.1.3
Message for Strap Use,” and upgraded the level of importance to “Required.”

8.9 Added section on “Data Unit for Users.”

0.94 2006/07/21 Initial version.

 2006-2009 Nintendo 107 RVL-06-0132-001-V


CONFIDENTIAL Released: August 18, 2009
Revolution SDK Wii Programming Guidelines

All company and product names in this document are the trademarks or registered trademarks of their respective companies.

© 2006-2009 Nintendo

The contents of this document cannot be


duplicated, copied, reprinted, transferred,
distributed, or loaned in whole or in part without
the prior approval of Nintendo.

RVL-06-0132-001-V 108  2006-2009 Nintendo


Released: August 18, 2009 CONFIDENTIAL

You might also like