# TWL-System G3D Library Revision History

## Index

### 2.1.0

#### Added and Changed Features

- Note 81-R01: (Library) Changed the default maximum number of shapes
- Note 81-R02: (Converter) Added options

#### Bug Fixes

- Note 81-R03: (Library) Fixed the material skipping bug
- Note 81-R04: (Library) Fixed the `NNS_G3D_GET_ANM` macro bug
- Note 81-R05: (Converter) Removed the debug check feature from `g3dcvtr`
- Note 81-R06: (Converter) Fixed bug specific to large element size in intermediate files
- Note 81-R07: (Converter) Fixed error output when name is blank

### 2.0.0

#### Added and Changed Features

- Note 80-R01: (Library) Updated for NDMA

### 2.0.0 RC

#### Added and Changed Features

- Note 78-R01: (Converter) Added errors to `g3dcvtr` for irregular matrices

#### Bug Fixes

- Note 78-R02: (Converter) Fixed bug for uniform processing of `frame_step` in `g3dcvtr`

### 2008/04/08 Version

#### Added and Changed Features

- Note 76-R01: (Converter) Added animation data reference range check to `g3dcvtr`
- Note 76-R02: (Manual) Changed the format of the Revision History
- Note 76-R03: (Manual) Changed the language of the Xerces-C++ license

#### Bug Fixes

- Note 76-R04: (Converter) Fixed bug where `g3dcvtr` does not return correct value on an error
- Note 76-R05: (Converter) Changed specifications for the `frame_step` uniformity process in `g3dcvtr`

### 2007/11/26 Version

#### Added and Changed Features

- Note 71-R01: (Library) Changed specifications
- Note 71-R02: (Converter) Changed `g3dcvtr` specifications

#### Bug Fixes

- Note 71-R03: (Library) Fixed ASSERT bug
- Note 71-R04: (Converter) Fixed bug where incorrect rotation data was output when converting the ICA file
- Note 71-R05: (Converter) Fixed bug where `NODEDESC` command of the SCB command was not issued correctly when converting `g3dcvtr`'s IMD file

### 2006/05/29 Version

#### Added and Changed Features

- Note 59-R01: (Converter) Revised to read the command line argument from the file with `g3dcvtr`
- Note 59-R02: (Converter) Added `-tex-nomerge` option to `g3dcvtr`

#### Bug Fixes

- Note 59-R03: (Library) Revised comments
- Note 59-R04: (Converter) Fixed bug where intermediate files that include billboards could not be converted

### 2005/09/01 Version

#### Bug Fixes

- Note 50-R01: (Library) Fixed bug where rotate animations using a small angle were not being animated smoothly

### 2005/06/16 Version

#### Bug Fixes

- Note 46-R01: (Library) Fixed various bugs

### 2005/06/06 Version

#### Bug Fixes

- Note 45-R01: (Library) Fixed bug when playing animations

### 2005/03/28 Version

#### Added and Changed Features

- Note 43-R01: (Library) Improved the precision of frame interpolation

#### Bug Fixes

- Note 43-R02: (Library) Fixed bug in SBC instruction callback
- Note 43-R03: (Converter) Fixed bug where code used for the environment map when using `g3dcvtr` was working incorrectly

### 2005/01/31 Version

#### Added and Changed Features

- Note 39-R01: (Library) Support for environmental and projection mapping
- Note 39-R02: (Sample) Added samples
- Note 39-R03: (Converter) Updated `g3dcvtr` for NITRO intermediate file version 1.6.0

#### Bug Fixes

- Note 39-R04: (Library) Fixed bug in rendering weighted envelope models

### 2004/12/06 Version

#### Added and Changed Features

- Note 34-R01: (Sample) Added samples
- Note 34-R02: (Documentation) Added a document about the G3D binary file format
- Note 34-R03: (Converter) Updated `g3dcvtr` for specifications added to NITRO intermediate file version 1.5.0
- Note 34-R04: (Converter) Improved binary generation

#### Bug Fixes

- Note 34-R05: (Library) Fixed bug in Y-axis billboard conversion
- Note 34-R06: (Library) Fixed bug where callbacks were not called correctly

### 2004/11/10 Version

#### Added and Changed Features

- Note 31-R01: (Library) Support for partial playback of joint animations
- Note 31-R02: (Library) Support for fractional frame interpolation playback in joint animations
- Note 31-R03: (Library) Increased display speed of weighted envelopes
- Note 31-R04: (Library) Added accessors for the `NNSG3dRenderObj` and `NNSG3dRS` structures
- Note 31-R05: (Sample) Added samples

#### Bug Fixes

- Note 31-R06: (Library) Fixed bug where alpha-value animations did not play accurately
- Note 31-R07: (Library) Fixed bug where animation data was sometimes output in duplicate
- Note 31-R08: (Library) Fixed bug where playback using a frame step of 2 or 4 was undefined
- Note 31-R09: (Library) Fixed bug where display was invalid
- Note 31-R10: (Converter) Fixed bug where some data was illegally output by `g3dcvtr`
- Note 31-R11: (Converter) Fixed bug in alignment of animation data when using `g3dcvtr`
- zNote 31-R12: (Converter) Fixed bug in output of `pos_scale` value of `<box text>` when using `g3dcvtr`

### 2004/10/12 Version

#### Added and Changed Features

- Note 26-R01: (Library) Added the display of weighted envelopes
- Note 26-R02: (Library) Changed callback specifications
- Note 26-R03: (Library) Tuned material animations
- Note 26-R04: (Sample) Added samples
- Note 26-R05: (Converter) Made changes to the `g3dcvtr` summary display format (NSBMA, NSBTP, and NSBTA files)

#### Bug Fixes

- Note 26-R06: (Library) Fixed bug where execution would hang when using `NNS_G3dGeSendDL`
- Note 26-R07: (Library) Fixed bug where texture scaling was wrong
- Note 26-R08: (Library) Fixed bug where write direction was set illegally
- Note 26-R09: (Library) Fixed bug for large textures

### 2004/09/16 Version

#### Added and Changed Features

- Note 21-R01: (Library) Added function to get current matrix
- Note 21-R02: (Library) Added the `NNS_G3dGlbFlushP`, `NNS_G3dGlbFlushVP`, and `NNS_G3dGlbFlushWVP` functions
- Note 21-R03: (Library) Added an accessor for the `NNSG3dGlb` structure
- Note 21-R04: (Library) Deleted unused code
- Note 21-R05: (Converter) Changed the `g3dcvtr` summary display format (NSBCA and NSBVA files)

#### Bug Fixes

- Note 21-R06: (Library) Fixed bug where scaling was not applied correctly
- Note 21-R07: (Library) Fixed bug where models that use textures with a TexCoord source were not rendered correctly

### 2004/09/02 Version

#### Added and Changed Features

- Note 20-R01: (Library) Added functions to render simple objects quickly
- Note 20-R02: (Library) Treated a bug in the geometry FIFO (2004/09/01)
- Note 20-R03: (Library) Optimized code
- Note 20-R04: (Converter) Improved `g3dcvtr` error display
- Note 20-R05: (Converter) Improved `g3dcvtr` output

#### Bug Fixes

- Note 20-R06: (Library) Fixed bug where child node list was wrong
- Note 20-R07: (Library) Fixed bug in adding multiple animations
- Note 20-R08: (Converter) Fixed bug for the conversion of fully weighted envelope models

### 2004/08/10 Version

#### Added and Changed Features

- Note 16-R01: (Library) Updated for material color animations
- Note 16-R02: (Library) Updated for texture SRT animations

#### Bug Fixes

- Note 16-R03: (Library) Fixed various bugs

## Changes in 2.1.0

### 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 the material skipping bug

During the material update process, a material that is hidden or is the same as the immediately 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 the `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) Removed the debug check feature from `g3dcvtr`

The `g3dcvtr` tool in the release package had a check feature for debugging purposes that should have been disabled but was not. This feature caused errors to result from data that could previously be converted. This problem 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.

## Changes in 2.0.0

### Note 80-R01: (Library) Updated for NDMA

Added support for NDMA added with the TWL.

## Changes in 2.0.0 RC

### Note 78-R01: (Converter) Added errors to `g3dcvtr` for irregular matrices

When the modeling matrix of a node referenced from a weighted envelope is a non-regular matrix, an error is now output.

### Note 78-R02: (Converter) Fixed bug for uniform processing of `frame_step` in `g3dcvtr`

Fixed the problem of the constant component of `frame_step` being employed for all frame steps when the XYZ components of the rotation data of an ICA file or the RGB components of an IMA file met these two conditions.

- The `frame_step` of two non-constant components were equivalent
- The third component was constant and had a larger `frame_step`

## Changes in Version 2008/04/08

### Note 76-R01: (Converter) Added animation data reference range check to `g3dcvtr`

For ICA, IVA, IMA, ITP, and ITA intermediate files, added a range check for when the animation data are index-referenced.

### Note 76-R02: (Manual) Changed the format of the Revision History

The format of the Revision History has been changed in the following PDF manuals.

- `G3D_BinaryFormat.pdf`
- `g3dcvtr_UsersManual.pdf`

### Note 76-R03: (Manual) Changed the language of the Xerces-C++ license

Changed the notation of the Xerces-C++ license in the document `g3dcvtr_UsersManual.pdf`.

### Note 76-R04: (Converter) Fixed bug where `g3dcvtr` does not return correct value on an error

When an error occurred, `g3dcvtr` returned the normal value 0 instead of returning 1. That has been corrected.

### Note 76-R05: (Converter) Changed specifications for the `frame_step` uniformity process in `g3dcvtr`

The specification for unifying `frame_step` for the XYZ components of the rotational data in the ICA file has been changed. Before they were unified to the lowest-precision `frame_step`. Now they are unified to the highest-precision `frame_step`.

## Changes in Version 2007/11/26

### Note 71-R01: (Library) Changed specifications

- Under previous specifications, if the `NNS_G3D_USE_FASTGXDMA` macro was defined, the transfer method of the geometry command could not be switched even by calling the `NNS_G3dGeUseFastDma` function. This has been changed so that the transfer method can be switched.

- Under previous specifications, if rotate matrices were blended using the `NNSi_G3dAnmBlendJnt` function, execution would fail on an assert during normalization if the row vector resulting from blending was a zero vector. This has been changed so that the status before blending is restored if the result of blending is a zero vector.

### Note 71-R02: (Converter) Changed `g3dcvtr` specifications

Under previous specifications, an error would result if the `frame_step` for the red, green, and blue components were not all the same when converting IMA files. This has been changed so that conversion is performed using the `frame_step` having the highest precision.

### Note 71-R03: (Library) Fixed ASSERT bug

- A problem has been corrected where execution would always fail on an assert during the callback process and execution would then terminate on an error if memory allocation by the `NNS_G3dResDefaultSetup` function failed.

- A problem has been corrected where locations that should return `NULL` would fail on an ASSERT if a numeric value equal to or greater than the number of animations possessing resources was specified for the second argument of the `NNS_G3dGetAnmByIdx` function.

### Note 71-R04: (Converter) Fixed bug where incorrect rotation data was output when converting the ICA file

A problem has been corrected when converting ICA files where the wrong rotate data was being output depending on the combination of `frame_size` and `frame_step_mode` being used.

### Note 71-R05: (Converter) Fixed bug where `NODEDESC` command of the SCB command was not issued correctly when converting `g3dcvtr`'s IMD file

A problem has been corrected when converting IMD files where the `NODEDESC` instruction of the SBC instruction was not being correctly issued depending on the node configuration and `<display>::priority` setting.

## Changes in Version 2006/05/29

### Note 59-R01: (Converter) Revised to read the command line argument from the file with `g3dcvtr`

Command-line arguments can now be read from a file. Command-line arguments starting with an at sign (`@`) are interpreted as a filename past the second character, and the contents of that file are expanded as arguments. Expansion of multiple files and multiple nested layers is possible. An error will result if file access cycles.

### Note 59-R02: (Converter) Added `-tex-nomerge` option to `g3dcvtr`

The `-tex-nomerge` option has been added to `g3dcvtr`. If the texture or palette names are different when using this option, they are not merged even if the data is the same and separate memory is allocated.

### Note 59-R03: (Library) Revised comments

Comments for the `NNS_G3dGeUseFastDma` function have been revised.

### Note 59-R04: (Converter) Fixed bug where intermediate files that include billboards could not be converted

A problem where intermediate files that include billboards could not be converted has been corrected.

## Changes in Version 2005/09/01

### Note 50-R01: (Library) Fixed bug where rotate animations using a small angle were not being animated smoothly

Fixed bug to smoothly do animations that rotate through small angles.

## Changes in Version 2005/06/16

### Note 46-R01: (Library) Fixed various bugs

Bugs in the 2005/06/06 version have been corrected.

## Changes in Version 2005/06/06

### Note 45-R01: (Library) Fixed bug when playing animations

When converting ICA files using the `–OS` option, replay did not work in some cases. This bug was fixed.

## Changes in Version 2005/03/28

### Note 43-R01: (Library) Improved the precision of frame interpolation

When frame interpolation was used with joint animation and the amount of rotations between key frames was large, distortions in the models would increase in size in some cases. This was improved.

### Note 43-R02: (Library) Fixed bug in SBC instruction callback

In SBC instructions `NODEDESC` and `BBY`, with `TIMING_C`, the `NNS_G3D_RSFLAG_SKIP` flag for `TIMING_B` was used by mistake. This problem was fixed. Also in SBC instructions `NODEDESC`, `BBY`, and `BB`, if processing was skipped with `TIMING_C`, subsequent processing would fail. This problem was fixed.

### Note 43-R03: (Converter) Fixed bug where code used for the environment map when using `g3dcvtr` was working incorrectly

When multiple IMD files were converted, the environment map codes would malfunction. This bug was fixed.

## Changes in Version 2005/01/31

### Note 39-R01: (Library) Support for environmental and projection mapping

Added the `NNSi_G3dFuncSbc_ENVMAP` and `NNSi_G3dFuncSbc_PRJMAP` functions to support environment and projection mapping (orthogonal projection).

### Note 39-R02: (Sample) Added samples

The following samples have been added.

- The `EnvMap` sample: Displays an environmentally mapped sphere.
- The `ProjMap` sample: Displays a projection-mapped (orthogonal projection) sphere.

### Note 39-R03: (Converter) Updated `g3dcvtr` for NITRO intermediate file version 1.6.0

`g3dcvtr` now supports NITRO intermediate file version 1.6.0. IMD files that include an environment map and/or projection map can be converted.

### Note 39-R04: (Library) Fixed bug in rendering weighted envelope models

Fixed the bug in which the drawing was not performed properly because a portion of the data in the NSBMD file output by `g3dcvtr` is invalid if classic scale off was configured with a weighted-envelope model (Softimage3D or Softimage|XSI).

## Changes in Version 2004/12/06

### Note 34-R01: (Sample) Added samples

The following samples have been added.

- The `Translucent` sample has been added. This sample demonstrates the rendering of a model in which translucent polygons overlap.

### Note 34-R02: (Documentation) Added a document about the G3D binary file format

The binary file format used with G3D is described in `NitroSystem\docs\G3D\G3D_BinaryFormat.pdf`.

### Note 34-R03: (Converter) Updated `g3dcvtr` for specifications added to NITRO intermediate file version 1.5.0

Provided support for addition attributes for `<material>` and `<display>` elements added with version 1.5.0 of the NITRO intermediate files.

### Note 34-R04: (Converter) Improved binary generation

Binary generation has been improved when a billboard is added to a joint with multiple `<display>` elements.

### Note 34-R05: (Library) Fixed bug in Y-axis billboard conversion

A bug where thick objects did not appear properly when a Y-axis billboard conversion occurred has been fixed.

### Note 34-R06: (Library) Fixed bug where callbacks were not called correctly

A bug where the wrong callback was called when the `NNS_G3D_SBC_CALLBACK_TIMING_A_DISABLE` macro was defined and G3D was compiled has been fixed.

## Changes in Version 2004/11/10

### Note 31-R01: (Library) Support for partial playback of joint animations

Added the `NNS_G3dAnmObjDisableID` and `NNS_G3dAnmObjEnableID` functions to support the playback of the joint animation in which only some of joints are animated.

### Note 31-R02: (Library) Support for fractional frame interpolation playback in joint animations

If `linear` is specified for `<node_anm_info>::interpolation` in the ICA file, when the decimal part of the frame is specified, the joint animation is played back by performing linear interpolation with neighboring frames. To loop playback of the animation, `<node_anm_info>::interp_end_to_start` must be set to `ON`.

### Note 31-R03: (Library) Increased display speed of weighted envelopes

Improved the implementation of the `NNSi_G3dFuncSbc_NODEMIX` function and accelerated display of models that have weighted envelopes.

### Note 31-R04: (Library) Added accessors for the `NNSG3dRenderObj` and `NNSG3dRS` structures

Added accessor for the `NNS_G3dRenderObj` and `NNS_G3dRS` structures.

### Note 31-R05: (Sample) Added samples

The following samples have been added.

- The `PartialAnm1` sample has been added. The sample demonstrates partial playback of joint animation.
- The `PartialAnm2` sample has been added. This sample demonstrations partial playback of a joint animation, but for cases more complicated than those covered by `PartialAnm1`.
- The `SlowMotion` sample has been added. This sample plays joint animations in slow motion.
- The `SharedMotion` sample has been added. This sample plays the same joint animation resource using two models with different shapes.
- The `ScreenUtil` sample has been added. This is a sample of the coordinate conversion utility API. Converts from world coordinates to BG screen coordinates or from BG screen coordinates to world coordinates.

### Note 31-R06: (Library) Fixed bug where alpha-value animations did not play accurately

A bug in the 2004/10/12 version that kept animations with alpha values for the material color animation from playing back properly has been fixed.

### Note 31-R07: (Library) Fixed bug where animation data was sometimes output in duplicate

A bug where redundant animation data near the last frame was sometimes being generated if the frame step was set to 2 or 4 when converting ICA files with `g3dcvtr` has been fixed.

### Note 31-R08: (Library) Fixed bug where playback using a frame step of 2 or 4 was undefined

A bug where invalid playback resulted when the frame step was set to 2 or 4 if there were frames with scale greater than or equal to 8 or less than or equal to 0.125 in the joint animation has been fixed.

### Note 31-R09: (Library) Fixed bug where display was invalid

A bug where an invalid display would result if the camera was far or close when using weighted envelopes because it caused the temporary variable being used in G3D to overflow has been fixed.

### Note 31-R10: (Converter) Fixed bug where some data was illegally output by `g3dcvtr`

A bug where some data was output improperly when converting multiple IMD files into one NSBMD file with `g3dcvtr` has been fixed.

### Note 31-R11: (Converter) Fixed bug in alignment of animation data when using `g3dcvtr`

A bug where inappropriate alignment of the second and subsequent animation data was used when converting multiple IMA files with `g3dcvtr` has been fixed.

### Note 31-R12: (Converter) Fixed bug in output of `pos_scale` value of `<box text>` when using `g3dcvtr`

A bug where the `pos_scale` value of `<model_info>` was output as data corresponding to the `pos_scale` value of `<box_test>` used by `g3dcvtr` has been fixed.

## Changes in Version 2004/10/12

### Note 26-R01: (Library) Added the display of weighted envelopes

The `NNSi_G3dFuncSbc_NODEMIX` function was added, and now models having weighted envelopes converted with `g3dcvtr` can be displayed. In addition, the NSBMD file format has been extended, and IMD files must be converted again.

### Note 26-R02: (Library) Changed callback specifications

Callback specifications were changed. In some cases, they may not be compatible with previous versions.

- By using the `NNS_G3dRenderObjSetInitFunc` function, you can execute functions that use the `NNSG3dRS` structure as an argument immediately before rendering.
- By allocating an `NNSG3dRS` callback function pointer for each SBC instruction, one callback can be registered to each type of SBC instruction during rendering. This change makes it easy to use multiple callbacks.
- Callbacks cannot be called by specifying the address of an SBC instruction. Accordingly, the value of the third argument of `NNS_G3dRenderObjSetCallBack` is now invalid.
- The code inside a callback function that changes the callback conditions or the callback function itself must be changed. For more information, see the `callback4` and `callback5` samples.

### Note 26-R03: (Library) Tuned material animations

The performance of material color animations and texture SRT animations was improved, and the code was reduced in size. Fixed the bug that always enabled the specular reflection shininess table when a material color animation was executed.

### Note 26-R04: (Sample) Added samples

The following samples have been added.

- The `RecordMtx` sample has been added. Processing similar to the `callback2` sample is possible without using a callback function by converting IMD files using the `-s` option of `g3dcvtr`.
- The `ManualSetup` sample has been added. This sample demonstrated how to set up a loaded NSBMD file without using the `NNS_G3dResDefaultSetup` function.
- The `callback5` sample has been added. A sample that uses callbacks has been added along with the ability to register multiple callback functions.
- The `ShadowVolume` sample has been added. This sample demonstrates how to display a shadow volume using the G3D library.
- The `Envelope` sample has been added. The sample compares the display quality and performance when weighted envelopes versus when they are not used.

### Note 26-R05: (Converter) Made changes to the `g3dcvtr` summary display format (NSBMA, NSBTP, and NSBTA files)

The format of the summary display shown when NSBMA, NSBTP, and NSBTA files are passed to `g3dcvtr` as arguments has been changed.

### Note 26-R06: (Library) Fixed bug where execution would hang when using `NNS_G3dGeSendDL`

A bug has been fixed where execution would hang if the `NNS_G3dGeSendDL` function was used while `GX_DMA_NOT_USE` was selected with NITRO-SDK's `GX_InitEx` function.

### Note 26-R07: (Library) Fixed bug where texture scaling was wrong

A bug where texture scaling became invalid when a textured model was created using SoftImage3D has been fixed.

### Note 26-R08: (Library) Fixed bug where write direction was set illegally

Fixed bug where the light direction was being set improperly by the `NNS_G3dGlbFlushWVP` function.

### Note 26-R09: (Library) Fixed bug for large textures

A bug where large textures were sometimes not displayed has been fixed.

## Changes in Version 2004/09/16

### Note 21-R01: (Library) Added function to get current matrix

The current position coordinate and direction vector matrices can be obtained with the `NNS_G3dGetCurrentMtx` function.

### Note 21-R02: (Library) Added the `NNS_G3dGlbFlushP`, `NNS_G3dGlbFlushVP`, and `NNS_G3dGlbFlushWVP` functions

The various functions that initialize the current matrix and so on before rendering were broken into three types. These functions differ only in how they set the current matrix, as described below.

- The `NNS_G3dGlbFlushP` function sets the projection transformation matrix as the current projection matrix, combines the camera matrix and the modeling matrix, and sets the resulting matrix as the current position coordinate matrix and the direction vector matrix.
- The `NNS_G3dGlbFlushVP` function combines the projection transformation matrix and the camera matrix, sets the resulting matrix as the current projection matrix, and sets the modeling matrix as the current position coordinate matrix and direction vector matrix.
- The `NNS_G3dGlbFlushWVP` function combines the projection transformation matrix, the camera matrix, and the modeling matrix, and sets the resulting matrix as the current projection matrix and sets the identity matrix as the current position coordinate matrix and direction vector matrix.

Due to the above function differences, the current matrices obtained during rendering will be the camera coordinate system, world coordinate system, and local coordinate system matrices, respectively. By using these three functions accordingly, calculations such as multiplying an inverse matrix can be omitted when getting necessary data.

The `NNS_G3dGlbFlushP` function works the same as the existing `NNS_G3dGlbFlush` function. The same is true for the `NNS_G3dGlbFlushWVP` and `NNS_G3dGlbFlushAlt` functions.

### Note 21-R03: (Library) Added an accessor for the `NNSG3dGlb` structure

Added accessor functions that read from and write to the data in the `NNSG3dGlb` structure.

### Note 21-R04: (Library) Deleted unused code

Unused code has been deleted.

### Note 21-R05: (Converter) Changed the `g3dcvtr` summary display format (NSBCA and NSBVA files)

Changed the summary display format used when NSBCA and NSBVA files are passed as arguments to `g3dcvtr`.

### Note 21-R06: (Library) Fixed bug where scaling was not applied correctly

A bug has been fixed where scaling was not applied correctly with the `NNS_G3dDraw1Mat1Shp` function.

### Note 21-R07: (Library) Fixed bug where models that use textures with a TexCoord source were not rendered correctly

Fixed bug that caused the `NNS_G3dDraw1Mat1Shp` function to incorrectly render models that use textures based on TexCoord source.

## Changes in Version 2004/09/02

### Note 20-R01: (Library) Added functions to render simple objects quickly

Added the `NNS_G3dDraw1Mat1Shp` function, which allows a simple object to be rendered quickly.

### Note 20-R02: (Library) Treated a bug in the geometry FIFO (2004/09/01)

Fixed bug in Geometry FIFO.

### Note 20-R03: (Library) Optimized code

A display list that is shorter than 256 bytes is transferred via the CPU without using the DMA.

### Note 20-R04: (Converter) Improved `g3dcvtr` error display

Improved the error display of the error in the input XML file.

### Note 20-R05: (Converter) Improved `g3dcvtr` output

Because the output of `g3dcvtr` was improved, the stall period that is related to the DMA transfer of the display list was shortened.

### Note 20-R06: (Library) Fixed bug where child node list was wrong

Fixed bug where the child node list output by the `NNS_G3dGetChildNodeIDList` function was not correct.

### Note 20-R07: (Library) Fixed bug in adding multiple animations

Fixed bug that did not play back the animation when multiple animations were added to the same rendering object.

### Note 20-R08: (Converter) Fixed bug for the conversion of fully weighted envelope models

A bug where fully weighted envelope models were not being converted correctly by `g3dcvtr` has been fixed.

## Changes in Version 2004/08/10

### Note 16-R01: (Library) Updated for material color animations

The library now supports the playback of material color animations.

### Note 16-R02: (Library) Updated for texture SRT animations

The library now supports the playback of texture SRT animations.

### Note 16-R03: (Library) Fixed various bugs

Bugs in texture matrix calculation, animation blending, texture pattern animation, and so on have been fixed.

CONFIDENTIAL