TWL-System 2.1.1 Release Notes

2009/05/28

Introduction

This is the Nintendo TWL-System 2.1.1 package.

Nintendo TWL-System is a collective term for the basic tools and libraries that are used to develop game software for the Nintendo DS series. These are the release notes for Nintendo TWL-System 2.1.1.

Table of Contents

Package Contents

The Nintendo TWL-System package contains the following libraries and tools.

Extracting the TWL-System Package

Extract the Nintendo TWL-System package to anywhere on the local disk. The Nintendo TWL-System package is compressed in ZIP format. Use an appropriate tool to decompress it. When the package is extracted, a directory named TwlSystem is created.

Before using Nintendo TWL-System, you must set the TWLSYSTEM_ROOT environment variable. Set TWLSYSTEM_ROOT with the absolute path to the unzipped TwlSystem directory. If this environment variable is not specified, the path is treated as if C:\TwlSystem had been set.

Software Requirements

Changes in 2.1.1

Added and Changed Features

NITRO-Viewer

3ds Max Plug-in

SOFTIMAGE|XSI Plug-in

Problem Fixes

G3D Library

3ds Max Plug-in

Note 82-R01: (Library) Reverted the changes related to material skipping

Note 81-R03: (Library) The changes for the material skipping bug prevented materials status from being updated in certain cases, causing invalid colors to be applied to polygons. The changes have been reverted provisionally.

Note 82-V01: (NITRO-Viewer) Support for the TWL-System library (2.1.1)

Applied changes made in the TWL-System library (2.1.1).

Note 82-X01: 3ds Max version

This update does not contain the plug-in for 3ds Max 8.0. Furthermore, we plan to support only 3ds Max 9.0 and above starting with the next update.

Note 82-X02: Support for 3ds Max 2010 (Windows 32-bit version)

There is now support for 3ds Max 2010 (Windows 32-bit version).

Note 82-X03: Corrected problems in NITRO Replace Character and NITRO Rename Over 16 Characters

Corrected a problem where it was not possible to use NITRO Replace Character or NITRO Rename Over 16 Characters to change the material name applied to nodes that have parent nodes.

Note 82-I01: Support for Softimage 7.5 (Windows 32-bit version)

Support for Softimage 7.5 (Windows 32-bit version). The add-on file is not included in this update. Use the add-on file for XSI 7, in Softimage 7.5.

Changes in 2.1.0

Added and Changed Features

Overall Development Environment

G2D Library

G3D Library

NITRO-Composer

Multiple Channel Stream

NITRO-Viewer

NITRO-Player

Photoshop Plug-in

Maya Plug-in

3ds Max Plug-in

SOFTIMAGE|XSI Plug-in

Problem Fixes

G3D Library

NITRO-Composer

NITRO-Player

NITRO-SoundMaker

3D Material Editor

3ds Max Plug-in

Note 1-D01: Makefile support for version.h

Included the $TwlSystem/include/nnsys/version.h file from Makefile and enabled the acquisition of version information.

Note 81-D02: Deleted the IDE sample demo

The IDE sample demo and IDE build guide have been deleted from the TWL-System package because they will be released in a different package.

Note 81-B01: (Converter) Revised the Font Converter error messages

Revised the error messages output from the fontcvtr.exe font converter tool.

Note 81-B02: (Documentation) Revised fontcvtr_Manual

Revised the error message descriptions.

Note 81-R01: (Library) Changed the default maximum number of shapes

Because no special restrictions are necessary, the default value for the maximum number of shapes in one model has been changed from 64 to 256.

Note 81-R02: (Converter) Added options

Added the -we option for handling warnings as errors.

Note 81-R03: (Library) Fixed material skipping bug

During the material update process, a material that is hidden or is the same as the previous material should be skipped and not updated. However, this skipping did not occur. That bug has now been fixed.

Note 81-R04: (Library) Fixed NNS_G3D_GET_ANM macro bug

The NNS_G3D_GET_ANM macro was using undefined variables as arguments. That has been fixed.

Note 81-R05: (Converter) Deleted the debug check feature from g3dcvtr

The g3dcvtr tool in the release package has a check feature for debugging purposes that resulted in an error for data that previously could be converted. This bug has been fixed.

Note 81-R06: (Converter) Fixed bug specific to large element size in intermediate files

When the intermediate file contained elements with more than 2 MB of content, an error would occur. That has been fixed.

Note 81-R07: (Converter) Fixed error output when name is blank

When the name of a node or material was left blank, an error was not correctly output. That has been fixed.

Note 81-S01: (Converter) Support for converting data in Japanese-language folders

An error would occur when sound data stored in a folder named in Japanese was converted by SoundMaker, among others. That bug has been fixed.

Note 81-S02: (Documentation) Added to description of NNS_SndArcInitOnMemory

Added a note about destroying Sound archives and loading different Sound archives to the same address.

Note 81-S03: (Library) Updated NNS_SndWaveOutStart for IMA-ADPCM

Updated to include IMA-ADPCM among the waveform data formats that can be handled by the NNS_SndWaveOutStart function.

Note 81-S04: (Converter) Fixed bug in data size alignment

The alignment size specified by the --align option in sndarc.exe was not being applied. That has been fixed. There was also an incorrect size value being output to the Sound Map file. That has also been fixed.

Note 81-S05: (Documentation) Added to description of NNS_SndArcInit*

Added mention in the references for the NNS_SndArcInit* functions that the sound archive data in NAND archives and SD Card archives cannot be used.

Note 81-S06: (Converter) Updated for invalid loop information during waveform conversion

An error is now output when a waveform file with invalid loop information has been converted by waveconv.exe.

Note 81-S07: (Documentation) Added explanation of SoundPlayer's TWL updates

Added a description to the Sound Designer Guide: Hardware volume is displayed when SoundPlayer is used with the TWL or with IS-TWL-DEBUGGER Also added an explanation of IS-TWL-MIDI-specific updates.

Note 81-S08: (Documentation) Corrected sample data directory path

In the Quick Start Guide and the Sound Designer Guide, an incorrect path was give for directories containing sample data. This bug has been fixed.

Note 81-S09: (Documentation) Added notes about using TWL-SDK's SND, SNDEX, and DSP functions

Added notes about using the TWL-SDK's SND, SNDEX, and DSP functions to the Sound Programmer Guide.

Note 81-C01: (MCS Server) Updated for programs built as TWLSDK_PLATFORM=NITRO (SRL files) when connected to the IS-TWL-DEBUGGER hardware

Up until now, when the MCS server was connected to the IS-TWL-DEBUGGER hardware, communication was not possible when the program that was running was a TWLSDK_PLATFORM=NITRO build (an SRL file).

Communication is now possible when using this release of the MCS library and version 0.76 or later of the IS-TWL-DEBUGGER software.

Note 81-C02: (MCS Server) Official support for debugger sharing

Support is now official for the debugger sharing feature in IS-TWL-DEBUGGER's software, version 1.01 and later.

Note 81-V01: (NITRO-Viewer) Updated for the TWL-System library (2.1.0 official version)

Applied changes made to the TWL-System library (2.1.0 official version).

Note 81-V02:(NITRO-Viewer) Support for operations using IS-NITRO-UIC

Updated to preview on the Nintendo DS system using IS-NITRO-UIC.

Note 81-P01: Fixed bug where SARC file size becomes 0 bytes

When you pressed CTRL+S when a SARC file had been loaded to NitroPlayer.exe, the size of the SARC file would become 0 bytes. That bug has been fixed.

Note 81-P02: Revised communication with IS-NITRO-UIC

IS-NITRO-UIC did not operate properly when NitroPlayer.srl was started on a Nintendo DS system, so we added NitroPlayerUIC.srl, which does operate correctly. For more information, see the NITRO-Player User Manual.

Note 81-P03: Updated for IS-TWL-MIDI

Real-time MIDI playback is now possible by combining IS-TWL-DEBUGGER and IS-TWL-MIDI. For more information, see the NITRO-Player User Manual.

Note 81-P04: Hardware volume now displayed

When run on a Nintendo DSi system (or on IS-TWL-DEBUGGER), hardware volume is now displayed as a value in the lower screen.

Note 81-P05: Fixed bug when sending large amounts of data

Communication would be disconnected when an attempt was made to send a large amount of data to the application on the console. That bug has been fixed.

Note 81-K01: Fixed NITRO-Player startup bug

When NITRO-Player was already running and the Start NITRO-Player button was pressed while using a Sound project stored in a Japanese-language folder, the message XXXX contains an invalid path would appear on NITRO-Player, and an error would occur. That bug has been fixed.

Note 81-M01: Fixed bug specific to large element size in intermediate files

When the intermediate file contained elements with more than 2 MB of content, an error would occur. That has been fixed.

Note 81-H01: Updated for the Windows 32-bit version of Adobe Photoshop CS4

Updated for the Windows 32-bit version of Adobe Photoshop CS4.

Note 81-Y01: Added the Remove Namespace option to the Output plug-in

Added the Remove Namespace option to the Output plug-in.

Note 81-Y02: Added the Remove Namespace option to the NITRO Rename Over 16 Characters plug-in

Added the Remove Namespace option to the NITRO Rename Over 16 Characters plug-in.

Note 81-Y03: Enabled resizing of the Select Output Folder dialog box

Revised the Select Output Folder dialog box in the Output Options window so that it can be resized.

Note 81-Y04: Updated the N3ES file format

Updated the N3ES file format.

Note 81-X01: (Manual) Revised Material Types and Attributes

Revised the note regarding opacity in Material Types and Attributes.

Note 81-X02: Revised error so it now occurs when node name or material name is null

Revised so that now an error occurs when a node name or a material name is null.

Note 81-X03: When mesh does not have polygons, warning is now displayed, and null is output

When a mesh does not have polygons, a warning is now displayed, and null is output.

Note 81-X04: Fixed invalid modifier bug

When an error occurred during output, sometimes the modifier would become invalid. That bug has been fixed.

Note 81-X05: Fixed problem outputting Physique

When Physique was used for a model, sometimes the pose in the IMD file would not be output correctly. That bug has been fixed.

Note 81-I01: (Manual) Updated manuals

Added supplementary information about XSI 7.01 to NITRO_SoftimageXSI_Plugin.pdf and to Setup_SoftimageXSI_Plugin.pdf.

Known Issues

[G3D Library] (Library) Limitations on texture block size

The maximum size of the texture blocks contained in NSBMD and NSBTX files is 524272 bytes. In other words, 16 bytes short of 512 KB. The reason for this is that the size portion inside the VRAM key is a 15-bit field that has been left-shifted 4 bits.

[G3D Library] (Library) Problem blending Joint animation that includes Scale

When blending multiple animations that include scale animations (particularly those with strong Scales) of models that use the Maya SSC (Segment Scale Compensate) or SOFTIMAGE|XSI's Hierarchical Scaling feature, the post-blend scale may be inappropriate. To correct this problem, use the following countermeasures.

TwlSystem/build/libraries/g3d/src/anm.c, line 31
//#define FIX_SCALEEX_BLEND_BUG

[G3D Library] (Library) Material transmission bug

Because there is a bug in the evaluation routines that are meant to prevent retransmission of identical materials, there are unnecessary costs caused by extraneous updating of materials. See related Notes 81-R03 and 82-R01.

[NITRO-Viewer] 3D Preview

[NITRO-Player] Interruption of sounds during stream playback

Stream playback with NITRO-Player is achieved by transferring from the PC the data that is actually loaded in real time from the ROM. Therefore, the sound may be interrupted during stream playback. This phenomenon is most notable when playing back ADPCM data.

Conversely, even if the sound is not interrupted on the NITRO-Player, it does not guarantee that the playback of the sound is not interrupted during the game.

For checking the stream playback, use of SoundPlayer is recommended.

[NITRO-SoundMaker] Problem with instrument regions joining when loaded

Under certain conditions, when the last two regions that are loaded, they are combined into a single region. This problem happens when the following three conditions are all met.

However, there are no differences in the data, and sounds output before and after the regions have been combined.

Information about TWL-System

Information regarding Nintendo TWL-System is located in the docs directory of the TWL-System source tree. Read the following documents first.

Notes

Multi-Thread Operation

The TWL-System library is not designed to be fundamentally thread-safe (in a form that supports multi-threading). Consequently, calling a function from the TWL-System library from an interrupt handler or a different thread might not work properly.

However, the functions of the sound driver (SND) are thread-safe so they can be called from an interrupt handler or a different thread.

Using Dividers

The G2D and G3D libraries of TWL-System use dividers. When using TWL-System without backing up or restoring the calculator used for internal processing, there is a chance that the calculation result of the interrupt source will be destroyed.

When using TWL-System for interrupt processing, be sure to back up or restore the status of any divider used inside an interrupt with the CP_SaveContext and CP_RestoreContext functions from the TWL-SDK.

Image Data and Music Data in Samples

Copyrights for the image data and music data used in the demo and sample programs included in this package are the property of Nintendo. This data may only be used in the demo and sample programs of this package, and may not be used in any other programs.

Font Licenses

Nintendo TWL-System includes the font converter fontcvtr. By using this fontcvtr, you can convert any font installed on a PC to a form usable by Nintendo DS. However, to sell software that uses these fonts, you must get licenses for them. You need to get licenses for each game software title. fontcvtr and TWL-System do not come with licenses for the LC font or any other font.

Plug-Ins for the 3D CG tools and Photoshop

The plug-ins for the 3D CG tools and for Photoshop that are included in TWL-System can also be used with NITRO-System.

Note that the plug-ins appear as NITRO-System in the various applications.

About Xerces-C++

This package contains software developed by the Apache Software Foundation (http://www.apache.org/). Copies of the Xerces-C++ NOTICE file and license file are located in the following directories.


                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!) The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
© 2005-2009 Nintendo
© 2005-2009 HAL Laboratory, Inc.
  
The content of this document cannot be duplicated, copied, 
reprinted, transferred, distributed, or loaned in whole or 
in part without the prior approval of Nintendo.

CONFIDENTIAL