----------------------------------------------------------- Virtual Console Manual Viewer SDK v2.5 CW for Wii 2010/08/24 ----------------------------------------------------------- ----------------------------------------------------------- Index (1) Introduction (2) Contents of this package (3) Requirements (4) Installation (5) Notes in displaying HTML documents for China and Korea (6) Known Issues (7) Regarding font data included in this package (8) Change History ---------------------------------------------------------- ---------------------------------------------------------- (1) Introduction ---------------------------------------------------------- The Virtual Console Manual Viewer uses the component browser built by Opera to display user-manual content for Virtual Console games. The content is created using html and javascript, in accordance with a set of guidelines. A sample user manual is included in this package. The purpose of this SDK is to provide manual viewer functionality to virtual console games, and also provide a common shell for virtual console engines. The Manual Viewer is accessed via the Home Button Menu, and a certain amount of integration has taken place between the Manual Viewer and the Home Button Menu. Graphics and Sound resources are shared between the Manual Viewer and the Home Button Menu. The latest version of VCMV supports Interlace / Non-interlace mode selection User Interface, and 16:9 Squash / Stretch selection User Interface. vcmv_test.c has been extensively updated to support 3 separate modes: for Game, HBM and Manual, and to support seamless transitions between modes. ---------------------------------------------------------- (2) Contents of this package ---------------------------------------------------------- lib/vcmv.a .. Manual Viewer library using DVD contents, release build lib/vcmvD.a .. Manual Viewer library using DVD contents, debug build lib/vcmv_nandappD.a .. Manual Viewer library for creating NAND Apps, debug build lib/vcmv_nandapp.a .. Manual Viewer library for creating NAND Apps, release build include/vcmv.h .. include file src/vcmv_test.c .. Manual Viewer test program dvdroot/content2/wwwlib-rvl.lz7 .. shared component browser RSO compressed using lz77 dvdroot/content3/WiiNTLG_Latin-M.ttc .. shared font used by the browser dvdroot/content3/Wii-cn_HeiTiW5.ttf .. shared font used by the browser on CHN platform dvdroot/content3/Wii-kr_Round Gothic B.ttf .. shared font used by the browser on KOR platform dvdroot/content4/* .. resource files contained in HomeButton.arc dvdroot/content5/html/*.arc .. sample manual contents placed in an arc file for each region. dvdroot/content5/Opera.arc .. Opera ini files, skin files dvdroot/content5/sample256x224.rgb565 .. background images for sample program dvdroot/content5/sample256x240.rgb565 dvdroot/content5/sample320x224.rgb565 dvdroot/content5/sample320x240.rgb565 dvdroot/content5/sample336x224.rgb565 dvdroot/content5/sample336x240.rgb565 dvdroot/content5/sample512x224.rgb565 dvdroot/content5/sample512x240.rgb565 dvdroot/content5/home.csv .. Resources for HBM 4.x dvdroot/content5/home_nosave.csv dvdroot/content5/home_hbm3.csv .. Resources for HBM 3.x dvdroot/content5/home_nosave_hbm3.csv dvdroot/content6/HomeButtonSe/Huf8_HomeButtonSe.arc .. shared contents - Home Button Menu Sounds dvdroot/wad/HomeButton.arc .. Official HBM resources. Use this file as content4 when creating wad files dvdroot/wad/WiiOutlineUniversalFont.arc .. Official Font resource. Use as content3 when creating wad files. dvdroot/wad/WiiOutlineUniversalFont_CHN.arc .. Official Font resource for initial VC titles. Use as content3 when creating wad files for China. dvdroot/wad/WiiOutlineUniversalFont_KOR.arc .. Official Font resource for initial VC titles. Use as content3 when creating wad files for Korea. dvdroot/wad/wwwlib-rvl_no_font.arc .. Official Browser component RSO. Use as content2 when creating wad files. dvdroot/opening.bnr .. banner file dvdroot/title.met Makefile .. a makefile for vcmv_test, which can build and run each version CW_Project_for_RVL_SDK_3_3/VcmvTest.mcp .. an alternative to the makefile. Code Warrior project file for building vcmv_test under SDK 3.3 wadscript .. a script that can be used to build and execute the wad file for the NAND release version. (Not necessary if using the Makefile) wadscriptD .. script for NAND debug version vcmvtest.bin/VcmvTest.elf .. pre-built DVD release version of vcmv_test vcmvtest.bin/VcmvTestD.elf .. pre-built DVD debug version of vcmv_test vcmvtest.bin/VcmvTestN.elf .. pre-built NAND release version of vcmv_test vcmvtest.bin/VcmvTestND.elf .. pre-built NAND debug version of vcmv_test vcmvmenu/vcmvmenu_eu.wad .. tool for testing VCSettings vcmvmenu/vcmvmenu_jp.wad vcmvmenu/vcmvmenu_us.wad vcmvmenu/vcmvmenu_kr.wad vcmvmenu/vcmvmenu_cn.wad vcmvtest.banner/WiiMakeBanner.exe .. tool for making banner data vcmvtest.banner/sample/banner.cfg.txt .. config file for sample banner man/en_US/vcmv/index.html .. VCMV Reference Manual (English) man/ja_JP/vcmv/index.html .. VCMV Reference Manual (Japanese) ---------------------------------------------------------- (3) Requirements ---------------------------------------------------------- Confirmed to work with the following components: Firmware 56.x.x RVL_SDK-3_3-2_20100823 RVL_HBM_SDK-4_7_3-20100730 CodeWarrior for Wii V1.1 Titles using SDK 3.2, should use VCMV 2.4. Titles using SDK 3.1 and NADK 2.2 should use VCMV 2.0. Titles using SDK 2.4 and NADK 2.1 should use VCMV 1.9. ---------------------------------------------------------- (4) Installation ---------------------------------------------------------- The package can be installed by extracting the archive to a suitable directory. The makefile, codewarrior project and wadscript are based on relative paths so they should work without any change. Please use the VCMV version of the Home Button Library. Prior to including vcmv.h (HBMBase.h), add the following line: #define USE_FOR_MANUAL ---------------------------------------------------------- (5) Notes in displaying HTML documents for China and Korea ---------------------------------------------------------- vcmv changes the font data by the language setting. If displaying HTML documents in Korean, please set it Korean. If displaying HTML documents in Chinese, please set it Simple Chinese. If displaying HTML documents in others, please set everything except Korean and Simple Chinese. ** NOTE: ******************************************************************* ** ** ** If the language setting is wrong, vcmv library fails to read ** ** the font data and the exception occurs. ** ** ** **************************************************************************** The sample manual of Korea corresponds only when the screen ratio is 4:3. Please refer to the sample manual of the other language when 16:9. The sample manual of China uses the US version. ---------------------------------------------------------- (6) Known Issues ---------------------------------------------------------- ***************************************************************************** ** ** ** The browser will eventually run out of memory after sustained usage, ** ** either due to memory fragmentation, or due to an undiscovered memory ** ** leak within the Opera component. This problem is not expected to be ** ** fixed, so as a workaround the manual viewer will automatically quit ** ** back to the game when it runs out of memory. ** ** ** ** From VCMV 1.8 the Opera.ini file has been changed to set "Max Window ** ** History Lines" = 0, thereby disabling the '-' button. This reduces ** ** the frequency of the problem, but does not fix it entirely. ** ** ** ** Larger html contents tend to make the problem occur more easily, ** ** whereas the frequency of occurrence can be reduced by increasing the ** ** size of the heap allocated with VCMVAllocateHeap(). ** ** ** ** In order to determine the appropriate amount of memory to allocate ** ** for the heap, please consider how many pages the user is expected to ** ** flip through, or how long the user is expected to view the manual, ** ** and test thoroughly to make sure this level can be supported. ** ** ** ***************************************************************************** ***************************************************************************** ** ** ** The scrollbar is not displayed within the TV safety screen area ** ** despite being an important part of the interface. ** ** ** ***************************************************************************** ***************************************************************************** ** ** ** The following messages might be displayed when VCMVRun() is called ** ** depending on the environment, and the initialization of a browser ** ** might fail. ** ** ** ** "Failed to init Opera: *, @@@@@@" ** ** ** ** When * is -1, there might not be enough empty space on the memory. ** ** Please allocate enough space on the memory to start a browser. ** ** ** ** When * is 1, the browser making might have failed . ** ** Please confirm the name and the path such as the font files passed ** ** to a browser. ** ** ** ** When the error message is displayed excluding the above-mentioned, ** ** contents for a browser might not be opened, because it exceeded the ** ** number of maximum contents where NAND/CNT API can be opened at the ** ** same time on the system. ** ** In this case, please call VCMVRun() after closing some contents ** ** opened in the application. ** ** ** ***************************************************************************** ---------------------------------------------------------- (7) Regarding font data included in this package ---------------------------------------------------------- This package includes the font data owned by Fontworks Japan Inc, HangYang, and Dyna Font. ("Font Data") You must comply with the terms hereunder for usage of Font Data. 1. The Font Data may be used only for display with the viewer included in this package, and may be used on PC only for the purpose of editing Virtual Console Manuals. Use of the Font Data for any other purpose is strictly prohibited. 2. Activities such as but not limited to assignment, rental, or sale of the Font Data are strictly prohibited. Additionally, you must not grant usage of Font Data to any third party. 3. At Nintendo's request, you must delete the Font Data (including any copies thereof) immediately. Additionally, in the case you are provided CD-R or any such tangible media from Nintendo, you must return them immediately to Nintendo. 4. In addition to items 1-3 above, you must comply with any other terms as stipulated by Nintendo relating to the Font Data. ---------------------------------------------------------- (8) Change History ---------------------------------------------------------- 2.4 -> 2.5 * Added support for SDK 3.3 2.3 -> 2.4 * Fixed a bug to which the scroll bar of the former screen is displayed in a specific manual composition. * Added English VCMV Reference Manual. 2.2 -> 2.3 * The sample manual of Japan, Europe and America corresponded to screen ratio 16:9. * The sample program corresponded to display the manual of 16:9 version. * The language of the sample manual of Korea was updated to the Hangul word. (Only 4:3 version) * Fixed a bug that display collapses only first time when specific HTML code is read. 2.1 -> 2.2 * Corrected the process of selecting the font contents when the wad for China or Korea is build. * Added caution about calling VCMVRun(). * Added VCMV Reference Manual ( man/index.html ). NOTE: Contents of the sample program and API explanation being written in Readme were moved to the Reference Manual. 2.0 Patch 2 -> 2.1 * Added support for SDK 3.2 * Fixed a bug that not accepted the controller input after it had moved to the manual page, when the index button was pushed according to timing. * Fixed a bug to which the screen moved up and down under a certain condition, while holding DOWN key with the pointer put on the scroll bar. * Fixed a bug that displayed part or the whole of the screen to scroll without the scroll operation under a certain condition. 2.0 Patch 1 -> 2.0 Patch 2 * Corrected the path of the wad contents in the Makefile when the VcmvTestD.wad for China or Korea is build. * Corrected how to call CNTRead() in the vcmv_test.c. * Fixed the character design of backslash (code:U+005C). 2.0 -> 2.0 Patch 1 * Supported China and Korean regions. 1.9 Patch 1 -> 2.0 * Recompiled with CNT_READ_BACKWARD_COMPATIBLE to work with NADK 2.2. * Replaced setncountrycode with setcountrycode in the Makefile. * Updated VCMV to support Home Button Menu, version 4.x. In vcmv_test.c, set the flag USE_HBM_3_RESOURCES to 1 for HBM Version 3.x. 1.9 -> 1.9 Patch 1 * Changed VCMVAllocateAndLoadBrowserComponent() to allow Browser RSO and Font content index to be specified. * Fixed a bug whereby on the first call to VCMVRun(), it would ignore the specified URL, and always start from the top page. 1.8 -> 1.9 * Added support for SDK 3.1 * Updated VCMV to support Home Button Menu, version 3.x. In vcmv_test.c, set the flag HOME_BUTTON_MENU_3 to 1 for HBM Version >= 3.0. In HBM 3.0, the directory structure follows the SDK structure, and it is no longer necessary to rename the debug library and copy to VCMV. * Fixed a bug in vcmv_test.c which can cause cursor scaling problems for applications which set IGNORE_TV_ASPECT_RATIO flag to 1 (currently all apps), if the 16:9 Squash flag has been set to TRUE by another application. Please see MyReadControllers() of vcmv_test.c for the fix. The bug behaviour can be tested by using the vcmvmenu_*.wad tool to change the Squash flag setting. * Fixed a bug where scrolling manual pages with the classic controller would cause the button under the cursor not to be updated. * When using the classic controller to move the cursor, then pressing A on the core controller, the old Wii remote X,Y location would be used even if the core controller is not currently pointing at the screen. This was changed to continue using the classic controller X,Y location until a valid coordinate can be read from the Wii remote. * For games which use NintendoWare, there was a problem with vcmv_test.c not initializing the sound system. A new flag has been added. Please set GAME_USES_NW4R to 1 to ensure nw4r::snd::SoundSystem::InitSoundSystem is called during initialization. * Removed unnecessary libraries from the CodeWarrior project file which were causing the debugger to fail: amcnotstubD.a, odemustubsD.a 1.8 Patch 4 -> 1.8 Patch 5 * Fixed a problem where scrolling artifacts would occur with certain contents. * Fixed an error in vcmv_test where configBufSize was being set incorrectly. 1.8 Patch 3 -> 1.8 Patch 4 * Updated VCMV to use Home Button Menu library version 2.7 There are changes to the library and vcmv_test.c. ** NOTE: ******************************************************************* ** ** ** With Home Button Menu library version 2.7, the HBMDataInfo struct ** ** has changed, so this version of VCMV is not compatible with ** ** previous versions of the Home Button Menu library. ** ** ** **************************************************************************** * Fixed VCMVAllocateAndLoadBrowserComponent() to return an error message if sufficient MEM1 space (7MB) could not be allocated for Opera RSO. 1.8 Patch 2 -> 1.8 Patch 3 * Changed the specification of the VC API for PAL mode. Currently VC titles do not support EUR60 mode but user selection between Interlace/Non-interlace was automatically disabled when a progressive cable was used. Now the application must specify whether the Interlace/Non-interlace setting UI should be enabled. See the description of the VCMVSetRenderModes() function. * Fixed a bug in vcmv_test where pressing the NDEV reset button during the HBM->Game fade out transition, would not fade out the HBM to black properly. 1.8 Patch 1 -> 1.8 Patch 2 * Fixed a bug in the VCMV library where the cursor would start at the Bottom Right of the screen when using the Classic Controller. * Fixed a bug in the VCMV library where the cursor position could not be controlled properly with the classic controller if no input had yet been received from the DPD. * Fixed a bug in the VCMV library where VCMVReadControllersForHBM would return the wrong position prior to calling VCMVGetSquashFlag. 1.8 -> 1.8 Patch 1 * Fixed a bug in vcmv_test.c where GXSetCopyFilter was not being called. (This caused the sample background to be blurred in the vertical axis). * Fixed a bug with creation of VC settings file on NAND, which would cause VCMV to hang in an endless loop. This problem occurred if the Wii System Menu had never been run on the NDEV. * Fixed a bug with VCMV where it would ignore input from unassigned (future) controller attachments. Now it should still allow the core controller functionality to operate. * There was a problem with wide-screen manual contents, where scrolling would stutter with some pages. This was fixed by adjusting the scroll speed for the wide-screen case. (Wide-screen contents is used by certain Nand applications, but not used by Virtual Console titles). * Fixed a bug in vcmv_test.c where the Home Button Menu Ban Icon was not displayed at the correct location. * Added a flag to disable the Ban Icon display test code, and made it default to Disabled. 1.4 -> 1.8 * Updated to SDK 2.4 patch 2 * Updated to latest version of HomeButton library * Supported hidden commands within VCMV for Screen mode preference selection. * Added and removed some functions from the VCMV API. - added VCMVSetRenderModes() - added VCMVGetNonInterlaceFlag() - added VCMVGetSquashFlag() - removed VCMVInitRenderMode() - removed VCMVInitAudio() (- Audio is handled by the HBM) - removed VCMVCloseAudio() * Updated sample program to support PAL mode easily and to automatically select the correct mode based on the system menu settings. * Updated sample program to support 16:9 squash mode settings. (Included IGNORE_TV_ASPECT_RATIO flag for transition period compatibility) * Updated sample program to display a background texture of the same size as Virtual Console hardware resolution, (for display quality checking), and provided optimized tweaked parameters for the following modes: (256, 320, 336, 512) x (224, 240) * Updated sample program to use a LINEAR texture filter while displaying the HBM. This is because using NEAR is only appropriate during game play when the pixel:texel ratio is an integer. * Changed page history to 0 in Opera.ini bacuase it still caused memory problems for certain contents. This means the "Previous Page" command is not available. * Fixed a problem with direction-pad scrolling which occurs with certain html pages. The problem is due to a mismatch in speed between the scrolling interface and the actual rendering of Opera. It was fixed by restricting the fastest speed at which a page can scroll. * Fixed a bug in VCMV where pressing '+' at the top page made a sound. (Since we are already at the top page, there should be no sound). * Fixed a problem with triggering A-button as soon as the VCMV starts if the A button had been held down during start-up. 1.4 patch 11 -> 1.4 patch 12 * The VCMV library was updated to deal with a fade-in problem related to a change in the format of html content. The original manual templates used javascript to preload the images of each page. This has been removed from the most recent content, since all VC emulators preload the full manual into RAM. However, removing the preloading commands caused a change in the start-up behaviour of the browser component. The VCMV libraries have now been fixed to handle content with or without the preload commands. 1.4 patch 10 -> 1.4 patch 11 * Replaced the HBM libraries. There was a problem introduced by the HBM libraries in patch 10 which caused the on-focus click sound to be corrupted within HBM and VCMV. 1.4 patch 9 -> 1.4 patch 10 * Updated the HBM to version 2.2.0.1 * Fixed a problem similar to the problem fixed by patch 1: Using "-" to return to the contents page while keeping the mouse pointer outside the button area would cause the contents page to be displayed with the previously selected button already pressed down. * Fixed a problem with opening the manual viewer to short pages without any extra pictures. These pages have a short loading time, which made the opening fade-in too abrupt. The opening fade-in has been changed so that all pages have a similar smoother fade-in. 1.4 Patch 8 -> 1.4 Patch 9 * Fixed a bug with incorrect calculation of a memory buffer size which would cause a crash in 16:9 mode. 1.4 Patch 7 -> 1.4 Patch 8 * There was a problem whereby sometimes a button click would be ignored. This problem has been fixed. * Replaced setcountrycode with setncountrycode for the nandrun target in the Makefile. 1.4 Patch 6 -> 1.4 Patch 7 * Fixed a problem with scrolling certain manual pages. In manuals where the contents page has a 11 or 12 items so that one extra line is required, a scrolling artifact occurred when holding down scroll while moving the pointer up and down along the edge between the upper frame and the scrolling area. This was due to an unexpected screen-update message from Opera being detected as a scroll. The screen-update message is now filtered out, because the height of the update area is too low to be a legitimate scroll. 1.4 Patch 5 -> 1.4 Patch 6 * The following bug was fixed in the HBM libraries: If the game application is using HBMDelete(), then a hangup bug can occur if the user quits from the HBM to the game, while quickly plugging and unplugging the classic controller. The problem was that a WPAD callback could be sent to the HBM after the HBM had been deleted. 1.4 Patch 4 -> 1.4 Patch 5 * Fixed a problem whereby inserting the classic controller very slowly caused it to stop working, in response to the following bug reported by NCL debug team: "Within WiiMenu 'Wii Remote Settings' page, slowly connecting the classic controller causes the remote to stop working until the classic controller is unplugged and reconnected." (translation) 1.4 Patch 3 -> 1.4 Patch 4 * The Opera browser component was updated to fix a problem with not releasing NAND file handles in certain cases. 1.4 Patch 2 -> 1.4 Patch 3 * Fixed a problem with using the "+" or "-" button to change page whilst in the middle of scrolling using the direction pad. Previously the screen would jump suddenly. Now it decelerates and stops the scrolling, then does the normal fade change. This fixes the following bug reported by NCL debug team: "Within the manual viewer, while scrolling through long pages using the direction pad, then pressing '-' or '+' to change to a different page, the normal fade-in effect does not occur, and either an abrupt change or a jumpy change occurs." (translation) 1.4 Patch 1 -> 1.4 Patch 2 * Fixed a problem with plugging and unplugging Classic controller within the HBM which cuased HBM to think the remote had also been re-connected. This is in response to the following bug report reported by NOA debug team: "Wii Menu / All titles When in the Wii Remote Settings menu, the following occurrences will make the connection icon's display appear black: 1: Selecting the Reconnect icon with an accessory (e.g. Classic Controller, Nunchuk) connected to the Wii Remote. 2: Selecting the Reconnect icon without an accessory connected, then connecting an accessory while still in the Reconnect menu. Though the connection icon is displayed in black, the player can still back out of the Reconnect menu. Note: Occurs less frequently with the following Titles: Donkey Kong Jr. and Solomon's Key." * Fixed a problem with stopping controller rumble in VcmvTest. VcmvTest was using WPADMotorEnable(flag) instead of WPADStopMotor(chan). This caused the HBM vibration enable/disable setting to be overwritten. It also caused lack of vibration within Manual Viewer in v1.4 and v1.4 patch 1. 1.4 -> 1.4 Patch 1 * A bug found by NCL debug team was fixed: "During VCMV if a page is turned, then '-' button is used to return to that page, the page will appear with the button already pressed down, in the same state as it was when the cursor was over the button before leaving the page." (It is easier to recognize this bug using the classic controller, since the button returns to its original position as soon as the cursor is moved). * The new libraries allow the scrollbar to be grabbed even when the mouse is at the right edge of the screen. 1.3 -> 1.4 * Updated to final version version of Opera. * Updated to final universal font. * Added VCMVBlackOutAndQuit to support Reset/Power button being pressed while VCMV is running. * VcmvTest now supports Reset and Power button. * Improved direction pad scrolling within manual content. Now VCMV has smooth scrolling with acceleration/deceleration. * Added -T option to makeWad in the wadscript and makefile. This specifies the corresponding contents to be shared via the /shared1 directory of NAND. * Includes a new private patch for NADK 1.4-patch1 which updates NMenu so that country code, and parental control information can be verified - PLEASE REAPPLY THE PRIVATE PATCH. 1.2 -> 1.3 * Updated to latest (possibly final) version of Opera browser component. The page history (using previous button) has been reduced to 5 pages. This reduces a problem with Opera's memory manager whereby old pages are not freed fast enough, causing "OUT_OF_MEMORY" errors. The Opera component increased in size by 600KB, as a result of adding support for standard browser error messages in multiple languages. * Updated to the latest Home Button Menu library. The resource files are now stored in a separate content folder, to allow it to become a shared component. The format of the HBM resource files has been updated, and now includes several compressed files which must be decompressed by the application. This has been implemented in the sample program. * Removed Japanese font from release. Currently Japanese content is displayed as images so it is not needed for launch titles. A combined Latin+Japanese font is being prepared, but will not be ready in time for launch title final debug and lot check. * Fixed a recurrence of an earlier bug with NANDAPP versions of the library causing them to fail on the 6th call to VCMVRun. * Fixed progressive mode problem with VCMV library, and added support for progressive mode to VcmvTest. * Removed an obsolete API function (VCMVGetMode) * Fixed a problem with controller rumble duration to make it less random on button focus events. * Added initial key-repeat delay for scrolling to make it easier to scroll by a small amount. 1.1 -> 1.2 * Fixed a memory leak in the library. * Fixed an error with VCMVAllocIfNecessary where it would not attempt to allocate from the second preference memory area * Fixed a memory leak in the sample program. 1.0 -> 1.1 * Made scrolling work at the edges of the screen within VCMV. * Updated the sample to improve the transition from HBM->Game in the case where the Game is using non-interlaced mode. Now the game fades out along with the HBM. * Fixed a problem whereby the debug libraries contained copies of the OS libraries. These have been removed.