# TWL-System G2D Library Revision History

## Index

### 2.1.0

#### Added and Changed Features

- Note 81-B01: (Converter) Revised the Font Converter Error Messages
- Note 81-B02: (Documentation) Revised `fontcvtr`_Manual

### 2.0.0

#### Added and Changed Features

- Note 80-B01: (Library) Revised the workings of the API

### 2.0.0 RC2

#### Bug Fixes

- Note 79-B01: (Library) Fixed bug in font version checking
- Note 79-B02: (Library) Fixed bug in output of false warnings when font-display functions are used
- Note 79-B03: (Library) Suppressed warnings because of change in compiler specifications

### 2.0.0 RC

#### Added and Changed Features

- Note 78-B01: (Converter) Added location information to the format of BMP files input/output by `fontcvtr`

#### Bug Fixes

- Note 78-B02: (Converter) Fixed bug in baseline position of vertical fonts in `fontcvtr`
- Note 78-B03: (Converter) Fixed bug where incorrect linefeed width for vertical fonts is output in `fontcvtr`

### 2008/04/08 Version

#### Added and Changed Features

- Note 76-B01: (Manual) Changed Revision History format, made overall revisions
- Note 76-B02: (Manual) Changed the language of the Xerces-C++ license

### 2007/11/26 Version

#### Added and Changed Features

- Note 71-B01: (Library) Added function for standard material settings for software sprites
- Note 71-B02: (Library) Revised specifications such that standard camera matrix for software sprites is set for position coordinate matrix
- Note 71-B03: (Converter) Added `-cic` option to `g2dcvtr`
- Note 71-B04: (Converter) Added functionality to select width of a space character in `fontcvtr`

#### Bug Fixes

- Note 71-B05: (Library) Fixed bug in cell-animation function
- Note 71-B06: (Library) Added `const` to cell-animation function arguments
- Note 71-B07: (Library) Revised spelling errors for software sprite
- Note 71-B08: (Library) Fixed bug in OAM manager
- Note 71-B09: (Library) Fixed bug in background
- Note 71-B10: (Converter) Fixed bug in `-pcm` option of `g2dcvtr`
- Note 71-B11: (Converter) Fixed bug in `-afs` option of `g2dcvtr`
- Note 71-B12: (Converter) Fixed bug for header information in BMP files output by `fontcvtr`

### 2007/03/14 Version

#### Added and Changed Features

- Note 64-B01: (Library) Changed static inline in the header file to inline
- Note 64-B02: (Library) Added function to OAM manager to get pointer to internal buffer
- Note 64-B03: (Library) Revised operations resulting when region to be transferred in background exceeds allowed range
- Note 64-B04: (Library) Updated for vertical writing/holding when rendering characters
- Note 64-B05: (Library) Added and revised character rendering samples
- Note 64-B06: (Converter) Added option to input Windows fonts when using `fontcvtr`
- Note 64-B07: (Converter) Added letter order files for `fontcvtr`
- Note 64-B13: (Converter) Updated `fontcvtr` to output fonts used for vertical writing/holding

#### Bug Fixes

- Note 64-B08: (Converter) Fixed bug where illegal termination code was not returned correctly when using `g2dcvtr`
- Note 64-B09: (Converter) Fixed bug where last frame of multicell animations was mistakenly displayed when using `g2dcvtr`
- Note 64-B10: (Converter) Fixed bug where multicell animations were not updated correctly when using `g2dcvtr`
- Note 64-B11: (Converter) Revised such that illegal data causes conversion to halt in `g2dcvtr`
- Note 64-B12: (Converter) Added `-cza` option to `g2dcvtr`
- Note 64-B14: (Converter) Fixed bug when entering Windows font in `fontcvtr`
- Note 64-B15: (Converter) Fixed bug in `-iu` option of `fontcvtrc`
- Note 64-B16: (Converter) Fixed bug in width line of `fontcvtrc`
- Note 64-B17: (Converter) Fixed bug in message window when using `fontcvtr`
- Note 64-B18: (Converter) Fixed bug in `fontcvtr` letter order files

### 2006/05/29 Version

#### Added and Changed Features

- Note 59-B01: (Library) Added functionality to restart cell animations from the beginning
- Note 59-B02: (Library) Added functionality to restart multicell animations from the beginning
- Note 59-B03: (Library) Added functionality to set playback start status for multicell animations
- Note 59-B04: (Converter) Added `-afs` option to `g2dcvtr`

#### Bug Fixes

- Note 59-B05: (Library) Fixed bug where G2d library did not function correctly when `GX_DMA_NOT_USE` was set
- Note 59-B06: (Library) Fixed bug where screens that were not a multiple of 32 characters could not be loaded correctly
- Note 59-B07: (Converter) Fixed bug where incorrect region information was calculated and output by `g2dcvtr`
- Note 59-B08: (Converter) Fixed bug where VRAM transfer information was not calculated correctly by `g2dcvtr`
- Note 59-B09: (Converter) Fixed bug where cell boundary radius was not calculated correctly by `g2dcvtr`

### 2005/09/01 Version

#### Added and Changed Features

- Note 50-B01: (Format) Added capture position information block to NCGR and NCBR
- Note 50-B02: (Library) Added function to access data blocks
- Note 50-B03: (Library) Added functionality to access data structures
- Note 50-B04: (Library) Added functions for the animation controller
- Note 50-B08: (Sample) Added samples
- Note 50-B09: (Converter) Added `-br/`, `-rtp`, and `-oua` options to `g2dcvtr`

#### Bug Fixes

- Note 50-B05: (Library) Added functions for multicell animations
- Note 50-B06: (Library) Added background functionality
- Note 50-B07: (Library) Added function for character rendering
- Note 50-B10: (Library) Fixed bug where cell animation rendering failed
- Note 50-B11: (Library) Multicell animations
- Note 50-B12: (Library) Fixed bug where OAM manager would fail on an assert
- Note 50-B13: (Library) Fixed bug where an assert warning was illegally displayed by extended OAM manager
- Note 50-B14: (Library) Fixed bug where renderer did not render correctly
- Note 50-B15: (Library) Fixed bug where data was loaded in the wrong slot in background
- Note 50-B16: (Library) Fixed bug where wrong background mode would result in background
- Note 50-B17: (Library) Fixed bug in tag process callback for character rendering
- Note 50-B18: (Converter) Fixed bug for VRAM transfer information output when using `g2dcvtr`
- Note 50-B19: (Converter) Fixed bug where warning message was illegally displayed by `g2dcvtr`
- Note 50-B20: (Converter) Fixed bug where screen was not converted correctly when using `g2dcvtr`
- Note 50-B21: (Converter) Fixed bug in rectangular region information output when using `g2dcvtr`

### 2005/06/06 Version

#### Added and Changed Features

- Note 45-B01: (Library) Added font-rendering functionality
- Note 45-B02: (Library) Added assert statement for cell animation
- Note 45-B03: (Library) Changed object position correction process for cell animations
- Note 45-B04: (Library) Updated for object rendering where double affine flag is set for OAM software sprite rendering
- Note 45-B05: (Library) Added function for multicell animations
- Note 45-B06: (Library) Changed object position correction process for renderer and renderer core
- Note 45-B07: (Library) Changed object processing method when double affine flag is set for renderer and renderer core
- Note 45-B08: (Converter) Added `-ncn` option to `g2dcvtr`
- Note 45-B09: (Converter) Added warning process to `g2dcvtr`
- Note 45-B10: (Converter) Added `fontcvtr`

#### Bug Fixes

- Note 45-B11: (Library) Fixed bug where cells not included between -128 and 127 were not rendered correctly
- Note 45-B12: (Library) Fixed bug in rendering software sprites
- Note 45-B13: (Library) Fixed bug where infinite loop resulted with cell animations
- Note 45-B14: (Converter) Fixed bug in `BuildNENR`

### 2005/03/28 Version

#### Added and Changed Features

- Note 43-B01: (Library) Standardized rendering order for standard OAMs and affine-converted OAMs when using extended OAM manager
- Note 43-B02: (Library) Added function for extended OAM manager
- Note 43-B03: (Sample) Added samples

#### Bug Fixes

- Note 43-B04: (Library) Fixed bug in multicell animations
- Note 43-B05: (Library) Fixed bug related to renderer affine parameter sharing
- Note 43-B06: (Library) Revised coding error in ASSERT macro
- Note 43-B07: (Converter) Fixed bug where invalid converted binary was output by `g2dcvtr`

### 2005/01/31 Version

#### Added and Changed Features

- Note 39-B01: (Library) Added function to calculate total length of video frames for animation sequence data
- Note 39-B02: (Library) Added function for multicell animations
- Note 39-B03: (Library) Changed function that initializes multicell animations
- Note 39-B04: (Converter) Changed label definition header file output by `g2dcvtr`
- Note 39-B05: (Converter) Deleted the C source code format output feature in `g2dcvtr`

#### Bug Fixes

- Note 39-B06: (Library) Fixed bug in UV value calculation when rendering OAM software sprites
- Note 39-B07: (Converter) Fixed bug where conversion of files stored in absolute-path format by `g2dcvtr` failed
- Note 39-B08: (Converter) Fixed bug where cell animation playback mode information for `g2dcvtr` was not set correctly

### 2004/12/06 Version

#### Added and Changed Features

- Note 34-B01: (Library) Added function for multicell animations
- Note 34-B02: (Documentation) Moved portion of the overview manual to API reference
- Note 34-B03: (Converter) Added `-o/` and `-src` options to `BuildNENR`
- Note 34-B04: (Converter) Added `-ai`, `-aisrt`, and `-ait` options to `g2dcvtr`

#### Bug Fixes

- Note 34-B05: (Library) Fixed bug where rendering count was set too low for extended OAM manager
- Note 34-B06: (Library) Fixed bug where values were not updated correctly for software sprites
- Note 34-B07: (Library) Fixed bug in loading images

### 2004/11/18 Version

#### Added and Changed Features

- Note 33-B01: (Library) Added the renderer core module
- Note 33-B02: (Sample) Added renderer core module samples
- Note 33-B03: (Library) Added function for cells
- Note 33-B04: (Library) Added process to SRT animation for data that uses translation animation only
- Note 33-B05: (Library) Added functions for high-speed rendering of software sprites
- Note 33-B06: (Library) Added functions for high-speed rendering when rendering OAM software sprites
- Note 33-B07: (Library) Added functions to improve efficiency of rendering process when rendering OAM software sprites
- Note 33-B08: (Library) Added cache process for loading images
- Note 33-B09: (Library) Improved renderer processing efficiency
- Note 33-B10: (Library) Added and also eliminated renderer functions
- Note 33-B11: (Library) Added renderer process to overwrite OAM parameters
- Note 33-B12: (Converter) Updated `g2dcvtr` for data that uses only translation animation

#### Bug Fixes

- Note 33-B13: (Library) Fixed bug where palettes were not loaded correctly when loading images

### 2004/10/12 Version

#### Added and Changed Features

- Note 26-B01: (Library) Changed the DMA channel used by the library
- Note 26-B02: (Library) Changed some functions in library to inline functions
- Note 26-B03: (Library) Updated for cell information that has rectangle information as cell-region information
- Note 26-B04: (Library) Eliminated wrapping process formerly used when specifying position outside screen for software sprite
- Note 26-B05: (Library) Added function to load palettes where only part of the palette used is loaded
- Note 26-B06: (Library) Added renderer functions
- Note 26-B07: (Library) Enabled control of object affine conversion mode rewrite method when using renderer
- Note 26-B08: (Library) Changed type of callback arguments before and after object rendering by the renderer
- Note 26-B09: (Converter) Added `-pcm` option to `g2dcvtr`
- Note 26-B10: (Converter) Error messages now output as standard errors
- Note 26-B11: (Converter) Revised specifications such that execution result is now returned as return value
- Note 26-B12: (Converter) Added `-br` option to `g2dcvtr`
- Note 26-B14: (Library) Fixed bug when loading 256-color extended palette data

#### Bug Fixes

- Note 26-B13: (Library) Fixed bug where polygon ID setting for software sprites was not enabled
- Note 26-B15: (Library) Fixed bug where cell data was not rendered correctly by the renderer
- Note 26-B16: (Converter) Fixed bug where invalid data was output by `g2dcvtr`

### 2004/09/16 Version

#### Added and Changed Features

- Note 21-B01: (Library) Added functionality to display background
- Note 21-B02: (Library) Changed behavior when double affine conversion mode is forcibly set by the OAM manager
- Note 21-B03: (Library) Eliminated functionality to set object affine conversion mode when using extended OAM manager
- Note 21-B04: (Library) Implemented process for switching render surface's active state
- Note 21-B05: (Converter) Updated for conversion of background-related data to `g2dcvtr`

### 2004/09/02 Version

#### Added and Changed Features

- Note 20-B01: (Library) Added functionality to OAM manager to automatically shift Z-value of sprite and render it
- Note 20-B02: (Library) Added functionality to renderer to automatically shift Z-value of sprite and render it
- Note 20-B03: (Library) Implemented functionality to optimize renderer's rendering process
- Note 20-B04: (Library) Added flip-rendering functionality to renderer
- Note 20-B05: (Library) Added ability to register callback functions to renderer
- Note 20-B06: (Library) Updated for SRT animations in cell animations
- Note 20-B07: (Library) Updated for SRT animations in multicell animations
- Note 20-B08: (Converter) Added functionality to correct scale value in SRT animations

#### Bug Fixes

- Note 20-B09: (Library) Fixed bug that did not reset cell animation playback status when multicells were switched

### 2004/08/10 Version

#### Added and Changed Features

- Note 16-B01: (Converter) Added `-bg` option to `g2dcvtr`
- Note 16-B02: (Converter) Added `-lbl` option to `g2dcvtr`
- Note 16-B03: (Converter) Changed `g2dcvtr`'s log messages

#### Bug Fixes

- Note 16-B04: (Library) Fixed bug in animations
- Note 16-B05: (Converter) Fixed bug in input filename path

### 2004/08/02 Version

#### Added and Changed Features

- Note 15-B01: (Library) Changed function names
- Note 15-B02: (Library) Improved debug string output for color palettes loaded from file
- Note 15-B03: (Library) Added functions to OAM manager
- Note 15-B04: (Library) Updated for cases where OAM manager does not manage affine parameters
- Note 15-B05: (Library) Changed parameters for setting 3D graphics engine camera used with software sprites
- Note 15-B06: (Converter) Extended functionality of converter and changed its name

#### Bug Fixes

- Note 15-B07: (Library) Fixed bug where affine parameters outside area being managed were illegally reset by OAM manager
- Note 15-B08: (Library) Fixed bug where rendering was not performed correctly by OAM manager except in double affine mode

### 2004/07/20 Version

#### Added and Changed Features

- Note 13-B01: (Library) Updated for multicells
- Note 13-B02: (Format) Changed the version of every file format to 1.0
- Note 13-B03: (Library) Added CellVRAM transfer mode manager module
- Note 13-B04: (Library) Added OAM software sprite rendering module
- Note 13-B05: (Library) Updated cell animations for VRAM transfer animations
- Note 13-B06: (Library) Changed names of multicell functions
- Note 13-B07: (Library) Changed workings of OAM manager
- Note 13-B08: (Converter) Added functionality to `g2dcvtr`

### 2004/06/22 Version

#### Added and Changed Features

- Note 10-B01: (Library) Combined extended OAM manager and extended OAM manager 2
- Note 10-B02: (Library) Changed variable names
- Note 10-B03: (Library) Revised specifications such that functions used for debug output are turned off in FINALROM build
- Note 10-B04: (Library) Changed accessors for animation controller to inline functions
- Note 10-B05: (Library) Changed extended OAM manager specifications
- Note 10-B06: (Library) Added functionality to the renderer
- Note 10-B07: (Format) Changed the format of NCER files

#### Bug Fixes

- Note 10-B08: (Library) Fixed bug where extended OAM manager did not render correctly
- Note 10-B09: (Library) Fixed bug where renderer did not render correctly

### 2004/06/10 Version

#### Added and Changed Features

- Note 09-B01: (Converter) Updated converter for 1D-mapping specifications

#### Bug Fixes

- Note 09-B02: (Library) Fixed bug where debug display for animation data failed when loading files
- Note 09-B03: (Library) Fixed bug in OAM manager
- Note 09-B04: (Library) Fixed bugs in software sprites

### 2004/05/28 Version

#### Added and Changed Features

- Note 08-B01: (Library) Added functions to load files
- Note 08-B02: (Library) Added functions for the animation controller
- Note 08-B03: (Library) Changed OAM manager function arguments
- Note 08-B04: (Library) Changed extended OAM manager 2 function arguments
- Note 08-B05: (Library) Added functions to load images
- Note 08-B06: (Library) Changed renderer function arguments
- Note 08-B07: (Library) Enabled turning debug output on and off with compiler switch
- Note 08-B08: (Format) Made changes to file format and converter
- Note 08-B09: (Sample) Added samples
- Note 08-B10: (Converter) Added `BuildNENR`

## Changes in 2.1.0

### 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.

## Changes in 2.0.0

### Note 80-B01: (Library) Revised the workings of the API

Note: When using NDMA added with the TWL, memory operations cannot be conducted via DMA. Memory operations are instead conducted via the CPU.

- `NNS_G2dResetOamManagerBuffer`
- `NNS_G2dBGLoadElementsEx`

## Changes in 2.0.0 RC2

### Note 79-B01: (Library) Fixed bug in font version checking

In TWL-System 2.0.0 RC, there was a bug rendering NFTR 1.1 vertically written and vertically held fonts in the correct direction. That has been fixed.

### Note 79-B02: (Library) Fixed bug in output of false warnings when font-display functions are used

Fixed bug with output of false warnings when the following functions were used.

- `NNS_G2dCharCanvasMakeCell1D`
- `NNS_G2dCharCanvasMakeCell2DRect`

### Note 79-B03: (Library) Suppressed warnings because of change in compiler specifications

In conjunction with changes to compiler specifications, suppressed warnings when variable-length arrays of `g2d_Font_data.h` are used.

## Changes in 2.0.0 RC

### Note 78-B01: (Converter) Added location information to the format of BMP files input/output by `fontcvtr`

The font width and font height can now be described for the BMP files input and output by `fontcvtr`. If a font width and height are not specified, the size is treated like before as the minimum rectangle in which all characters are superimposed. The font width is not used with the current version of the G2D library.

### Note 78-B02: (Converter) Fixed bug in baseline position of vertical fonts in `fontcvtr`

When a vertically written font was output to a BMP file, the baseline position would be skewed if an offset or a margin of greater than 0 was specified. That bug has been fixed.

### Note 78-B03: (Converter) Fixed bug where incorrect linefeed width for vertical fonts is output in `fontcvtr`

When a vertically written font was output to a NITRO Font, if the linefeed width and the default width information was not specified, the values would be calculated with horizontal and vertical reversed. That bug has been fixed.

## Changes in Version 2008/04/08

### Note 76-B01: (Manual) Changed Revision History format, made overall revisions

Changed the format of the Revision History in the PDF manuals listed below and made comprehensive corrections.

- `BuildNENR_Manual.pdf`
- `fontcvtr_Manual.pdf`
- `fontcvtrc_Manual.pdf`
- `g2dcvtr_Manual.pdf`
- `NNS_G2DRuntime-BinaryFormat.pdf`

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

Changed the language of the Xerces-C++ license in the PDF manuals listed below.

- `fontcvtr_Manual.pdf`
- `fontcvtrc_Manual.pdf`

## Changes in Version 2007/11/26

### Note 71-B01: (Library) Added function for standard material settings for software sprites

The `NNS_G2dSetupSoftwareSpriteMaterial` function standard material settings when using software sprite functionality has been added.

### Note 71-B02: (Library) Revised specifications such that standard camera matrix for software sprites is set for position coordinate matrix

Specifications have been changed such that the standard camera matrix is set for the position coordinate matrix inside the `NNS_G2dSetupSoftwareSpriteCamera` function.

### Note 71-B03: (Converter) Added `-cic` option to `g2dcvtr`

Added the `-cic` option to check for presence of invalid character numbers.

### Note 71-B04: (Converter) Added functionality to select width of a space character in `fontcvtr`

When entering a Windows font, an option has been added to use the character width specified by the font for spaces and use the glyph width for all other characters ("Use glyph width (keep space)").

### Note 71-B05: (Library) Fixed bug in cell-animation function

A bug that caused the `NNS_G2dSetCellAnimationCurrentFrame` function to malfunction has been fixed.

### Note 71-B06: (Library) Added `const` to cell-animation function arguments

The `const` keyword has been added to arguments (3, 8, and 9) used by the `NNS_G2dInitCellAnimationVramTransfered` function.

### Note 71-B07: (Library) Revised spelling errors for software sprite

The following misspellings in the `g2d_Softsprite.h` library header file have been corrected.

    Incorrect: NNS_G2D_SPRITEATTR_TEXTUE
    Correct: NNS_G2D_SPRITEATTR_TEXTURE
    The previous, incorrect expression remains as a separate name to maintain code compatibility.

### Note 71-B08: (Library) Fixed bug in OAM manager

The internal buffer that holds the OAM manager's admin area was not updated correctly, and therefore, it was not possible to properly check for illegal manager initialization. This bug has been fixed.

In the previous version, if for example you defined two OAM managers and specified an illegal initialization where the starting number of one of the OAM managers overlapped with the ending OAM number of the other OAM manager's admin area, overlap determination would not occur correctly, and initialization would succeed.

### Note 71-B09: (Library) Fixed bug in background

Fixed a bug in the `NNS_G2dBGLoadScreenRect` function that caused invalid writing of data outside of the transfer-destination region when that region was smaller than the transfer-source region.

### Note 71-B10: (Converter) Fixed bug in `-pcm` option of `g2dcvtr`

- A bug resulting in incorrect calculation of palette size when using the `-pcm` option has been fixed.

### Note 71-B11: (Converter) Fixed bug in `-afs` option of `g2dcvtr`

- A bug where the `-afs` option (for aligning output file size to 4-byte units) was not reflected correctly in file header size information has been fixed..

### Note 71-B12: (Converter) Fixed bug for header information in BMP files output by `fontcvtr`

A bug where header information for output BMP files was not parsed correctly by some editors and viewers has been fixed.

## Changes in Version 2007/03/14

### Note 64-B01: (Library) Changed static inline in the header file to inline

Some static inline function declarations in the header file have been changed from static inline to inline. A reduction in code size can be expected due to this change.

### Note 64-B02: (Library) Added function to OAM manager to get pointer to internal buffer

The `NNS_G2dGetOamBuffer` function to get a pointer to the internal buffer of the OAM manager module has been added.

### Note 64-B03: (Library) Revised operations resulting when region to be transferred in background exceeds allowed range

Behavior has been revised so that clipping results when the area being transferred by the `NNS_G2dBGLoadScreenRect` function exceeds the range of the transfer source/destination.

### Note 64-B04: (Library) Updated for vertical writing/holding when rendering characters

Updated for correct display of vertical writing and holding.

### Note 64-B05: (Library) Added and revised character rendering samples

- Three demos, `PortraitHW`, `PortraitSW`, and `DrawVertical`, have been added to sample demos.
- Specifications have been changed so that VRAM mode and color mode can be switched when using the `OBJ1D` and `MinimumCanvas` sample demos. A warning is now issued or a correction carried out when an invalid size results for `CharCanvas`.

### Note 64-B06: (Converter) Added option to input Windows fonts when using `fontcvtr`

- An option for parsing font sizes in the same manner as typical Windows software when entering a Windows font has been added.

- When entering a Windows font and converting at other than two levels, a "soft anti-alias" feature that allows output quality to be improved depending on the font has been added.

### Note 64-B07: (Converter) Added letter order files for `fontcvtr`

- Letter order files for IPL font output for the Chinese and Korean markets have been added.
- A letter order file for character output used by UHC (code page 949) has been added.

### Note 64-B08: (Converter) Fixed bug where illegal termination code was not returned correctly when using `g2dcvtr`

A bug where illegal termination codes were not returned correctly for data when the number of display frames for all animation frames was zero has been fixed.

### Note 64-B09: (Converter) Fixed bug where last frame of multicell animations was mistakenly displayed when using `g2dcvtr`

A bug where the last frame was mistakenly displayed when animation frames whose number of display frames was zero was specified at the end of a multicell animation sequence has been fixed.

### Note 64-B10: (Converter) Fixed bug where multicell animations were not updated correctly when using `g2dcvtr`

Sometimes animations were not updated correctly due to the update timing of multicell animations when zero display frames were specified for the last frame of a cell animation sequence inside a multicell animation. This bug has been fixed.

### Note 64-B11: (Converter) Revised such that illegal data causes conversion to halt in `g2dcvtr`

A means of checking for illegal character numbers of objects in a cell has been implemented so that illegal data now causes conversion to halt.

### Note 64-B12: (Converter) Added `-cza` option to `g2dcvtr`

The `-cza` option for checking for animation frames for which zero has been specified as the number of displayed animation frames and treating such cases as illegal data has been added.

### Note 64-B13: (Converter) Updated `fontcvtr` to output fonts used for vertical writing/holding

- Functionality to output vertical NITRO fonts has been added.
- Functionality to output NITRO fonts for vertical holding has been added.
- Functionality to rotate glyphs during BMP output has been deleted with the addition of functionality to output NITRO fonts for vertical writing/holding. This functionality is still available in the CUI version.

### Note 64-B14: (Converter) Fixed bug when entering Windows font in `fontcvtr`

A bug where fonts were not output correctly when 2 was specified for Levels of Gray when using a Windows font for input has been fixed.

### Note 64-B15: (Converter) Fixed bug in `-iu` option of `fontcvtrc`

A bug where the command line option `-iu` was actually `-iv` when using the command line version (CUI version) has been fixed. Although `-iu` is the correct option, `-iv` can also be used for compatibility. (However, it is not given in the manual.)

### Note 64-B16: (Converter) Fixed bug in width line of `fontcvtrc`

A bug where the width line color and internal cell color were being processed in the same way has been fixed.

### Note 64-B17: (Converter) Fixed bug in message window when using `fontcvtr`

A bug has been fixed where the message window would close when using the GUI even if conversion failed.

### Note 64-B18: (Converter) Fixed bug in `fontcvtr` letter order files

When using a letter order file (`ds_ipl.xlor`) that outputs an IPL table, a bug has been fixed where characters having the same character code in the European and Japanese code sets would appear. Corresponding locations in the Japanese code set have been replaced with `<null/>`.

## Changes in Version 2006/05/29

### Note 59-B01: (Library) Added functionality to restart cell animations from the beginning

The `NNS_G2dRestartCellAnimation` function was added to restart animation playback from the beginning of an animation.

### Note 59-B02: (Library) Added functionality to restart multicell animations from the beginning

The `NNS_G2dRestartMCAnimation` function was added to restart multicell animation playback from the beginning of an animation.

### Note 59-B03: (Library) Added functionality to set playback start status for multicell animations

The `NNS_G2dStartMCCellAnimationAll` function has been added to put cell animations made up of multicell instances in animation playback start mode.

### Note 59-B04: (Converter) Added `-afs` option to `g2dcvtr`

Added the `-afs` option for aligning the file size of output files to 4-byte multiples.

### Note 59-B05: (Library) Fixed bug where G2d library did not function correctly when `GX_DMA_NOT_USE` was set

A bug has been fixed where the G2d library would not work correctly when `GX_DMA_NOT_USE` was set using the `GX_SetDefaultDMA` function.

### Note 59-B06: (Library) Fixed bug where screens that were not a multiple of 32 characters could not be loaded correctly

A bug has been fixed where screens whose vertical/horizontal dimensions were not a multiple of 32 characters could not be loaded correctly. The arguments of the `NNS_G2dBGLoadScreenRect` function were also changed in line with this.

### Note 59-B07: (Converter) Fixed bug where incorrect region information was calculated and output by `g2dcvtr`

A bug has been fixed where the calculation of area information for cells that include an object for which double affine mode has been set was mistakenly output. Now the same area information as cells that use only standard objects is output.

### Note 59-B08: (Converter) Fixed bug where VRAM transfer information was not calculated correctly by `g2dcvtr`

A bug has been fixed where transfer information was not calculated corrected by the process used to calculate VRAM transfer information as updated in version 1.2.2.

### Note 59-B09: (Converter) Fixed bug where cell boundary radius was not calculated correctly by `g2dcvtr`

There was a bug where the cell boundary radius was not being calculated correctly. This has been fixed.

## Changes in Version 2005/09/01

### Note 50-B01: (Format) Added capture position information block to NCGR and NCBR

The character-data file formats NCCR and NCBR have been extended, and the character location information block has been added.

### Note 50-B02: (Library) Added function to access data blocks

The `NNS_G2dGetUnpackedCharacterPosInfo` function has been added to access this data block.

### Note 50-B03: (Library) Added functionality to access data structures

- An accessor function has been added to enable use of user extended attributes.
- The `NNS_G2dGetAnimSequenceIndex` function has been added.

### Note 50-B04: (Library) Added functions for the animation controller

The following new functions have been added for the animation controller.

- `NNS_G2dGetAnimCtrlCurrentAnimSequence`
- `NNS_G2dGetAnimCtrlCurrentElemIdxVal`

### Note 50-B05: (Library) Added functions for multicell animations

The following new functions have been added for multicell animations.

- `NNS_G2dTraverseMCCellAnims`
- `NNS_G2dTraverseMCNodes`

### Note 50-B06: (Library) Added background functionality

The following functionality has been added to backgrounds.

- Updated to load compressed palettes and partial characters.
- Updated for loading free size screens.

### Note 50-B07: (Library) Added function for character rendering

A function was added for creating cells that display `CharCanvas` using the renderer.

### Note 50-B08: (Sample) Added samples

- The `Renderer_CharChange` sample demo has been added. This demo switches between multiple images for the renderer. It also shows how to use the `-br` partial character output option.

- The `UserExAttribute` sample demo has been added. This demo uses user extended attributes.
- The `MultiCell_UILayout` sample demo has been added. This demo does user interface processing for game applications using multicells.

### Note 50-B09: (Converter) Added `-br/`, `-rtp`, and `-oua` options to `g2dcvtr`

- The `–br/` option has been added for the conversion process in which a rectangular area of the character file has been specified.
- The `-rtp` option has been added to remove transparent pixels from the boundary region when calculating boundary region information.
- The `–oua` option has been added to extract comment strings in extended comment fields that are added in NCE file version 1.04 as extended user attribute information. (For more information, see the `g2dcvtr` manual.)

### Note 50-B10: (Library) Fixed bug where cell animation rendering failed

The rendering of animation sequences that specified a zero display time for the leading animation would fail. This bug has been fixed.

### Note 50-B11: (Library) Multicell animations

A bug has been fixed where animation updating was not performed properly in cases for data that the multicell node attribute and `NNS_G2D_MCANIM_PLAYMODE_CONTINUE` were set.

Note: The fix for this bug has slightly increased the processing load to update multicell animations. Specifically, the average execution time of the `NNS_G2dTickMCAnimation` function has increased by 19 percent (from 57 µseconds to 68 µseconds) in the `Renderer_PerfCheck` sample. The increase in processing load depends on the data. The characteristics of an increased processing load are as follows.

- Processing occurs during multicell switching.
- No processing occurs if `NNS_G2D_MCANIM_PLAYMODE_CONTINUE` has not been set.
- The processing load increases if the total number of animation frames is large in the cell animation referenced by multicell.

### Note 50-B12: (Library) Fixed bug where OAM manager would fail on an assert

A bug has been fixed where an assert fails if the transformation enable flag is not set for the object and the object is registered by the OAM manager with an affine reference number. (Operations were changed to continue processing without setting the affine number.)

### Note 50-B13: (Library) Fixed bug where an assert warning was illegally displayed by extended OAM manager

When setting a registration function with the extended OAM manager using the `NNS_G2dSetOamManExEntryFunctions` function, an erroneous assert warning was output when the affine parameters were not used but `NNSG2dOamExEntryFunctions.getAffineCapacity` and `NNSG2dOamExEntryFunctions.funcs.entryNewAffine` were set to `NULL`. This bug has been fixed.

### Note 50-B14: (Library) Fixed bug where renderer did not render correctly

A bug has been fixed where cells were not rendered correctly when using object rendering without using affine transformation after rendering a cell with the renderer using software sprites that use affine transformation.

### Note 50-B15: (Library) Fixed bug where data was loaded in the wrong slot in background

A bug in `NNS_G2dBGSetup` and `NNS_G2dBGLoadElements` has been fixed where the extended palette was loaded into the wrong slot with the sub-screen as the target.

### Note 50-B16: (Library) Fixed bug where wrong background mode would result in background

A bug in `NNS_G2dBGSetup` that resulted in the wrong background mode when reading an affine-extended background into a BG3 that is an affine-extended background has been fixed.

### Note 50-B17: (Library) Fixed bug in tag process callback for character rendering

A bug in `NNS_G2dTextCanvasDrawTaggedText` has been fixed where changes made using a tag process callback to `TextCanvas` were not reflected in the rendered drawing.

### Note 50-B18: (Converter) Fixed bug for VRAM transfer information output when using `g2dcvtr`

A bug in specifying a greater transfer size than was needed during VRAM transfer information output has been fixed.

### Note 50-B19: (Converter) Fixed bug where warning message was illegally displayed by `g2dcvtr`

A bug for a warning message output erroneously in the middle of valid conversion processing has been fixed. The warning displays information about an invalid type conversion that causes truncation when converting variable types within the converter. In previous versions, even valid type conversions displayed this warning. This bug has been fixed.

### Note 50-B20: (Converter) Fixed bug where screen was not converted correctly when using `g2dcvtr`

A bug in converting screens that were not multiples of 256 in height properly has been fixed.

### Note 50-B21: (Converter) Fixed bug in rectangular region information output when using `g2dcvtr`

A bug where rectangular area information was output one size larger has been fixed.

## Changes in Version 2005/06/06

### Note 45-B01: (Library) Added font-rendering functionality

Functions to manipulate fonts and rendering of text characters and text strings have been added.

### Note 45-B02: (Library) Added assert statement for cell animation

Assert statements that treat animation sequences having only animation frames with a display time of zero as invalid sequences have been added.

### Note 45-B03: (Library) Changed object position correction process for cell animations

The object position correction processing that is used when the double affine flag is specified using the `NNS_G2dMakeCellToOams` function will be performed only when the object's double-size flag is actually changed.

### Note 45-B04: (Library) Updated for object rendering where double affine flag is set for OAM software sprite rendering

Updated for object rendering when a double affine flag is set for OAM software sprite rendering.

### Note 45-B05: (Library) Added function for multicell animations

Added the `NNS_G2dSetMCAnimationCellAnimFrame` function, which sets the playback animation frame for each cell animation in a multicell animation.

### Note 45-B06: (Library) Changed object position correction process for renderer and renderer core

The object position correction process used when the double-size affine flag overwrite is specified using the `NNS_G2dSetRendererAffineOverwriteMode` function is performed only when the object’s double-size flag is actually changed.

### Note 45-B07: (Library) Changed object processing method when double affine flag is set for renderer and renderer core

The processing method used to render objects that have had their double-size affine flag enabled by NITRO-CHARACTER using 2D graphics engines was changed. In the new version, when objects with an enabled double-size affine flag are entered, based on the assumption that the tool has performed object position correction, object size * 1/2 is added to the object position calculation, and the correction value for double-size affine objects is cancelled before performing the process. (If you want to revert to the previous operation, comment out the ?`NNS_G2D_ASSUME_DOUBLEAFFINE_OBJPOS_ADJUSTED` definition in `g2d_config.h`.)

### Note 45-B08: (Converter) Added `-ncn` option to `g2dcvtr`

Added the `–ncn` option, which uses NCE file titles for the NCGR (NCBR) output filenames. The `–ncn` option is used when several 1D mapping format NCE files reference a single NCG file.

### Note 45-B09: (Converter) Added warning process to `g2dcvtr`

A warning process was added to prevent the output of invalid data. (For animation sequences that do not contain any animation frames, and sequences that contain only animation frames having a display time of zero.)

### Note 45-B10: (Converter) Added `fontcvtr`

A font converter (`fontcvtr.exe`) has been added to create font resources. For instructions on its use, see `NitroSystem\docs\G2D\fontcvtr_Manual.pdf`.

### Note 45-B11: (Library) Fixed bug where cells not included between -128 and 127 were not rendered correctly

Cells with objects positioned outside of the range -128 to 127 were rendered incorrectly. This bug has been fixed. Objects in cells can be positioned from -256 to 255. You can revert to previous rendering functionality by defining `NNS_G2D_LIMIT_CELL_X_128` in `include/fmt/g2d_Cell_data.h` and recompiling the library.

### Note 45-B12: (Library) Fixed bug in rendering software sprites

The direction of flat surfaces is reversed on square polygons in software sprites. As a result of this change, sprites display correctly even when the culling mode is set to `GX_CULL_BACK`.

### Note 45-B13: (Library) Fixed bug where infinite loop resulted with cell animations

A bug has been fixed where animation sequence rendering would fail when the lead animation frame was specified as having a display time of zero in the cell animation.

### Note 45-B14: (Converter) Fixed bug in `BuildNENR`

Fixed bugs in `BuildNENR.exe` (mainly related to input path parsing).

## Changes in Version 2005/03/28

### Note 43-B01: (Library) Standardized rendering order for standard OAMs and affine-converted OAMs when using extended OAM manager

The rendering order for standard OAMs and affine-converted OAMs has been standardized. In the past, affine-converted OAMs were rendering in the reverse order they were registered in. The same behavior as implemented in the past can be restored by defining `NNS_G2D_OAMEX_USE_OLD_REINDEXOAMCHUNKLIST_` and rebuilding the library.

### Note 43-B02: (Library) Added function for extended OAM manager

The `NNSG2d_SetOamManExDrawOrderType` function has been added for changing behavior related to object rendering order used by the extended OAM manager.

### Note 43-B03: (Sample) Added samples

A sample using the extended OAM manager in combination with the renderer has been added.

### Note 43-B04: (Library) Fixed bug in multicell animations

A bug where the `NNS_G2dSetMCAnimationSpeed` and `NNS_G2dResetMCCellAnimationAll` functions would not work correctly depending on initialization conditions has been fixed. (The functions would not work correctly when initialized with the multicell instance type specified as `NNS_G2D_MCTYPE_DONOT_SHARE_CALLANIM`.)

### Note 43-B05: (Library) Fixed bug related to renderer affine parameter sharing

A bug related to affine parameter sharing by the renderer module has been fixed.

### Note 43-B06: (Library) Revised coding error in ASSERT macro

A coding error in the ASSERT macro found in the `g2d_SRTControl.h` file has been fixed.

### Note 43-B07: (Converter) Fixed bug where invalid converted binary was output by `g2dcvtr`

A bug has been fixed where invalid converted binary was being output for 1D mapping mode data with object compression turned off.

## Changes in Version 2005/01/31

### Note 39-B01: (Library) Added function to calculate total length of video frames for animation sequence data

Added the `NNS_G2dCalcAnimSequenceTotalVideoFrames` function, which calculates the total video frame length of the animation sequence data.

### Note 39-B02: (Library) Added function for multicell animations

The `NNS_G2dResetMCCellAnimationAll` function has been added. Resets the animation frames for the cell animation that composes the multicell entity.

### Note 39-B03: (Library) Changed function that initializes multicell animations

The function for initializing multicell animations has been changed. The sample demo that showed how to use the functions was also revised. Usage has been simplified, and depending on the characteristics of the multicell animation data, improved performance and memory efficiency can be anticipated (this is effective in cases where data references the same cell animation). The older function also remains.

### Note 39-B04: (Converter) Changed label definition header file output by `g2dcvtr`

The extended comment information in the label definition header file output with the `-lbl` option of `g2dcvtr` is now inserted as a C comment.

### Note 39-B05: (Converter) Deleted the C source code format output feature in `g2dcvtr`

Deleted functionality to create output files in C source code format.

### Note 39-B06: (Library) Fixed bug in UV value calculation when rendering OAM software sprites

Fixed a bug in the calculation method of the UV value used in software sprite rendering when a 1D mapping with a 256-color character was being used.

### Note 39-B07: (Converter) Fixed bug where conversion of files stored in absolute-path format by `g2dcvtr` failed

Fixed a bug where file conversion failed for files with related files in the link filename data that use absolute path names.

### Note 39-B08: (Converter) Fixed bug where cell animation playback mode information for `g2dcvtr` was not set correctly

Fixed a bug that caused the cell animation playback mode information to be set incorrectly when converting multicell data.

## Changes in Version 2004/12/06

### Note 34-B01: (Library) Added function for multicell animations

The `NNS_G2dGetMCBankNumNodesRequired` function was added.

### Note 34-B02: (Documentation) Moved portion of the overview manual to API reference

Updated the content of the technical document and moved a section of the overview manual to API reference.

### Note 34-B03: (Converter) Added `-o/` and `-src` options to `BuildNENR`

The following options were added to the `BuildNENR.exe` converter.

- `-o/` Output destination folder specification
- `-src` Source file output specification

### Note 34-B04: (Converter) Added `-ai`, `-aisrt`, and `-ait` options to `g2dcvtr`

Added options (`-ai`, `-aisrt`, `-ait`) that specify the method for the output animation element in `g2dcvtr.exe`.

### Note 34-B05: (Library) Fixed bug where rendering count was set too low for extended OAM manager

With the lower-priority OAM (drawn in the background), a bug caused the number of rendering times to be set to a lower number. That has been fixed.

### Note 34-B06: (Library) Fixed bug where values were not updated correctly for software sprites

When the `NNS_G2dSetSpriteAttrEnable` function was executed the second or later times, values were not updated properly. This bug has been fixed.

### Note 34-B07: (Library) Fixed bug in loading images

With functions like `NNS_G2dLoadImage*`, a bug that did not flash cache content before the DMA transfer has been fixed.

## Changes in Version 2004/11/18

### Note 33-B01: (Library) Added the renderer core module

Separated part of the rendering process for the renderer from matrix stack management and parameter management, and made part of the rendering process into a separate renderer core module.

The renderer core module was created by separating from the renderer module only the essential parts necessary for render processing. It was created with the assumption that users want to substantially customize their process or speed up simple processes. The renderer module uses the renderer core module internally.

### Note 33-B02: (Sample) Added renderer core module samples

Six renderer module samples have been added.

### Note 33-B03: (Library) Added function for cells

The `NNS_G2dGetCellAnimationCurrentCell` function has been added.

### Note 33-B04: (Library) Added process to SRT animation for data that uses translation animation only

A process has been added in cell (multicell) SRT animation for data using only translational animation. Previously, even when using only translational animation, scale and rotation was also configured for cell (multicell) animation. With this addition, unnecessary affine transformation settings are avoided.

### Note 33-B05: (Library) Added functions for high-speed rendering of software sprites

The `NNS_G2dDrawSprite*Fast` functions that do not save the current matrix of the 3D graphics engine have been added. They work faster because push and pop operations are not performed on the matrix stack.

### Note 33-B06: (Library) Added functions for high-speed rendering when rendering OAM software sprites

The `NNS_G2dDrawOneOam3DDirect*Fast` functions that do not save the current matrix of the 3D graphics engine have been added. They work faster because push and pop operations are not performed on the matrix stack.

### Note 33-B07: (Library) Added functions to improve efficiency of rendering process when rendering OAM software sprites

Added functions to increase the efficiency of the rendering process by caching UV parameter calculation results (`NNS_G2dSetOamSoftEmuSpriteParamCache` and `NNS_G2dDrawOneOam3DDirectUsingParamCacheFast`). The usable parts are limited, but they operate about 50 percent faster than the normal `NNS_G2dDrawOneOam3DDirect*Fast` functions.

### Note 33-B08: (Library) Added cache process for loading images

Added a process that writes the memory cache of the transfer source data region back to main memory before data transfer to VRAM with the `NNS_G2dLoadPalette` and `NNS_G2dLoadPaletteEx` functions.

### Note 33-B09: (Library) Improved renderer processing efficiency

Process efficiency has improved. Comparing with the multicell rendering process (see the `Renderer_PerfCheck` sample demo):

- When optimization method is not set, object rendering is about -40 percent, and software sprite rendering is -30 percent
- When optimization method is set, object rendering is about -50 percent, and software sprite rendering is -40 percent

### Note 33-B10: (Library) Added and also eliminated renderer functions

- The `NNS_G2dOptimizeRenderer` function has been eliminated.
- The `NNS_G2dBeginRenderingEx` function has been added to replace the function above.
- The `NNS_G2dSetTrans` function has been added.

### Note 33-B11: (Library) Added renderer process to overwrite OAM parameters

Items were added that the renderer can specify in the parameter overwrite process performed for OAM (such as the `NNS_G2dSetRendererOverwriteEnable`/`Disable` functions).

### Note 33-B12: (Converter) Updated `g2dcvtr` for data that uses only translation animation

In cell SRT animation, animation result types supporting data using only translational animation were added. Updates were also made for that output. With this extension, animation data capacity was reduced, and unnecessary affine transformation settings during execution were avoided.

### Note 33-B13: (Library) Fixed bug where palettes were not loaded correctly when loading images

Fixed bug in the `NNS_G2dLoadPaletteExfunction` where palette was not loaded correctly.

## Changes in Version 2004/10/12

### Note 26-B01: (Library) Changed the DMA channel used by the library

The DMA channels used by the G2D library are now the same ones used by the GX library.

### Note 26-B02: (Library) Changed some functions in library to inline functions

To improve processing efficiency, changed some of the library functions to inline functions.

### Note 26-B03: (Library) Updated for cell information that has rectangle information as cell-region information

Updated for cell information that has rectangle information as cell-region information. Also, preexisting private functions for getting boundary sphere information have made public. (Such as the `NNS_G2dGetCellBoundingRect` function.)

### Note 26-B04: (Library) Eliminated wrapping process formerly used when specifying position outside screen for software sprite

The `NNS_G2dDrawSprite*` functions no longer internally emulate wrapping when an offscreen position is specified.

### Note 26-B05: (Library) Added function to load palettes where only part of the palette used is loaded

A function was added for loading palettes where only the part of the palette being used is loaded. (`NNS_G2dLoadPaletteEx`.) To use this functionality, you must use the converter's `-pcm` option to create compressed palette data.

### Note 26-B06: (Library) Added renderer functions

Programmer-friendly functions for overwriting rendering objects parameters have been added. (Such as `NNS_G2dSetRendererOverwriteEnable` and `NNS_G2dSetRendererOverwrite*`.)

### Note 26-B07: (Library) Enabled control of object affine conversion mode rewrite method when using renderer

Rewriting object affine conversion mode when the renderer renders objects using the 2D graphics engine can now be controlled. (Using the `NNS_G2dSetRendererAffineOverwriteMode` function, for example.)

### Note 26-B08: (Library) Changed type of callback arguments before and after object rendering by the renderer

The argument type used by callbacks before and after the renderer draws objects has been changed.

### Note 26-B09: (Converter) Added `-pcm` option to `g2dcvtr`

The `—pcm` option was added. This option outputs compressed palette data that holds only the used palette numbers as data. Palettes can be partially loaded using the `NNS_G2dLoadPaletteEx` function to load compressed palette data.

### Note 26-B10: (Converter) Error messages now output as standard errors

Error messages are now output as standard errors. Also, the user can control the output of the converter's operation messages. With standard values the converter does not output operational messages.

- If the `v` option is specified, operational messages of the converter are output to the standard output.

### Note 26-B11: (Converter) Revised specifications such that execution result is now returned as return value

The converter's execution result is now returned as a return value. Zero is returned when execution succeeded. A nonzero value is returned when execution failed.

### Note 26-B12: (Converter) Added `-br` option to `g2dcvtr`

The `-br` option was added. This option outputs cell data that contains rectangular area information.

### Note 26-B13: (Library) Fixed bug where polygon ID setting for software sprites was not enabled

Fixed a bug that disabled functions (such as `NNS_G2dSetSpriteCurrentPolygonID`) used to set polygon IDs used while rendering software sprites.

### Note 26-B14: (Library) Fixed bug when loading 256-color extended palette data

Fixed a bug in which the loading destination address value was not reflected when using the `NNS_G2dLoadPalette` function to load 256-color extended palette data for use with the 2D graphics engine.

### Note 26-B15: (Library) Fixed bug where cell data was not rendered correctly by the renderer

Fixed a bug in which cell data meeting both of the following conditions were not rendered properly.

- The load destination address of the image proxy character data is a nonzero value.
- The character data uses a 256-color palette format or a mapping mode other than 1D-32K.

### Note 26-B16: (Converter) Fixed bug where invalid data was output by `g2dcvtr`

A bug resulted in corrupt export data if object compression was turned off when converting 256-color palettes and 1D mapping characters. This has been fixed.

## Changes in Version 2004/09/16

### Note 21-B01: (Library) Added functionality to display background

Added functionality that displays backgrounds semi-automatically, using screen data information.

### Note 21-B02: (Library) Changed behavior when double affine conversion mode is forcibly set by the OAM manager

Changed the way in which double-size affine transformation mode is applied forcibly to an object that is registered using the `NNS_G2dEntryOamManagerOamWithAffineIdx` function. Only the affine parameter numbers are rewritten. The affine transformation mode is not changed. The same processing must be performed outside the manager. (When using the `NNS_G2dMakeCellToOams` function and the renderer, you do not need to be concerned with this. In the next release, we plan to release functions that control rewriting operations that are performed in the renderer's affine transformation mode.)

### Note 21-B03: (Library) Eliminated functionality to set object affine conversion mode when using extended OAM manager

Removed the ability to set the object affine transformation mode (normal or double-size). Along with this change, the `NNS_G2dSetOamManExDoubleAffineFlag` and `NNS_G2dGetOamManExDoubleAffineFlag` functions were deleted. The same processing must be performed outside the manager. (When using the `NNS_G2dMakeCellToOams` function and the renderer, you do not need to be concerned with this.

### Note 21-B04: (Library) Implemented process for switching render surface's active state

Implemented processing that supports the switching of the active state of the render surface. This feature allows you to forcibly prohibit rendering on specific surfaces. The `NNS_G2dSetRendererSurfaceActiveFlag` and `NNS_G2dGetRendererSurfaceActiveFlag` accessor functions have been added.

### Note 21-B05: (Converter) Updated for conversion of background-related data to `g2dcvtr`

Support for the conversion of background data has been added to `g2dcvtr`.

## Changes in Version 2004/09/02

### Note 20-B01: (Library) Added functionality to OAM manager to automatically shift Z-value of sprite and render it

Added functionality to shift Z-values automatically and to render sprites when software sprite rendering is used. (`NNS_G2dSetOamManagerSpriteZoffsetStep`.)

### Note 20-B02: (Library) Added functionality to renderer to automatically shift Z-value of sprite and render it

Added functionality to shift Z-values automatically and to render sprites when software sprite rendering is used. (`NNS_G2dSetOamManagerSpriteZoffsetStep`.)

### Note 20-B03: (Library) Implemented functionality to optimize renderer's rendering process

Examined the renderer setting status and implemented functionality to optimize the rendering process. (`NNS_G2dOptimizeRenderer`.)

### Note 20-B04: (Library) Added flip-rendering functionality to renderer

Flip-rendering functionality has been added to the renderer. (`NNS_G2dSetRendererFlipMode`.)

### Note 20-B05: (Library) Added ability to register callback functions to renderer

Made it possible to register callback functions that are used before and after rendering a cell or an object.

### Note 20-B06: (Library) Updated for SRT animations in cell animations

Updated for SRT (scale, rotate, and translate) animation.

Note: Many of the NCE data that was created with previous versions of NITRO-CHARACTER contain animation frames that include an incorrect scale zero value. Such data cannot be rendered properly with the new runtime. Reconvert the data and replace scale zero, or save the data again with the latest version of NITRO-CHARACTER. (This applies to the multicell animations that is described below.)

### Note 20-B07: (Library) Updated for SRT animations in multicell animations

Updated for SRT (scale, rotate, and translate) animation.

### Note 20-B08: (Converter) Added functionality to correct scale value in SRT animations

Implemented functionality that replaces scale values with a value of 1 if the scale value is specified as 0 for the SRT animation data.

### Note 20-B09: (Library) Fixed bug that did not reset cell animation playback status when multicells were switched

Fixed a bug that did not reset cell animation playback status when multicells were switched. Now the multicell animations that use the cell animations in stop playback mode can be played back properly.

## Changes in Version 2004/08/10

### Note 16-B01: (Converter) Added `-bg` option to `g2dcvtr`

The `-bg` option for outputting character (NCG) data used for backgrounds has been added. When using the `–bg` option, no NCE (cell definition) file is necessary during conversion.

### Note 16-B02: (Converter) Added `-lbl` option to `g2dcvtr`

Added `–lbl` option, which outputs the label name definition header file. The label name definition header file defines label text strings linked to animation sequences as aliases for label numbers.

### Note 16-B03: (Converter) Changed `g2dcvtr`'s log messages

The converter log message was changed to output more data.

### Note 16-B04: (Library) Fixed bug in animations

Fixed a bug that caused the animation frame of frame 0 to be set regardless of the frame number entered with the `NNS_G2dSetAnimCtrlCurrentFrame` function.

Bugs in the `NNS_G2dSetMCAnimationCurrentFrame`, `NNS_G2dSetCellAnimationCurrentFrame`, and `NNS_G2dSetCellAnimationCurrentFrameNoReset` functions, which use the N`NS_G2dSetAnimCtrlCurrentFrame` function, have also been fixed.

### Note 16-B05: (Converter) Fixed bug in input filename path

Fixed a bug that caused parameter parsing to fail with entered filenames that do not include a '`\`' or '`/`' in their file path.

## Changes in Version 2004/08/02

### Note 15-B01: (Library) Changed function names

Changed function names. Function names in past versions have been aliased and still work. Please use new functions for the projects. The following functions have changed.

    ---------------------------------------------------------------------------
    Animation
    Old                                                   =>      New
    NNS_G2dGetCurrentElement               NNS_G2dGetAnimCtrlCurrentElement
    NNS_G2dGetNextElement                  NNS_G2dGetAnimCtrlNextElement
    NNS_G2dGetNormalizedTime               NNS_G2dGetAnimCtrlNormalizedTime
    NNS_G2dSetCallBackFunctor              NNS_G2dSetAnimCtrlCallBackFunctor
    NNS_G2dSetCallBackFunctorAtAnimFrame   NNS_G2dSetAnimCtrlCallBackFunctorAtAnimFrame
    NNS_G2dGetAnimSpeed                    NNS_G2dGetAnimCtrlSpeed
    NNS_G2dSetAnimSpeed                    NNS_G2dSetAnimCtrlSpeed
    NNS_G2dResetAnimationState             NNS_G2dResetAnimCtrlState
    NNS_G2dInitCallBackFunctor             NNS_G2dInitAnimCallBackFunctor

    NNS_G2dBindAnimController              NNS_G2dBindAnimCtrl
    NNS_G2dGetAnimControllerType           NNS_G2dGetAnimCtrlType
    NNS_G2dInitAnimController              NNS_G2dInitAnimCtrl
    NNS_G2dIsAnimControllerActive          NNS_G2dIsAnimCtrlActive
    NNS_G2dStartAnimController             NNS_G2dStartAnimCtrl
    NNS_G2dStopAnimController 	            NNS_G2dStopAnimCtrl
    NNS_G2dTickAnimController              NNS_G2dTickAnimCtrl
    NNS_G2dInitAnimControllerCallBackFunctor  NNS_G2dInitAnimCtrlCallBackFunctor

    ---------------------------------------------------------------------------
    Cell Animations
    Old                                                   =>      New
    NNS_G2dSetCellAnimSpeed                NNS_G2dSetCellAnimationSpeed
    NNS_G2dGetCellAnimAnimCtrl             NNS_G2dGetCellAnimationAnimCtrl
    NNS_G2dInitializeCellAnimation         NNS_G2dInitCellAnimation
    NNS_G2dInitializeCellAnimationVramTransfered    NNS_G2dInitCellAnimationVramTransfered

    ---------------------------------------------------------------------------
    Multicell Animations
    Old                                                   =>      New
    NNS_G2dInitializeMCAnimation           NNS_G2dInitMCAnimation
    NNS_G2dInitializeMCInstance            NNS_G2dInitMCInstance
    NNS_G2dSetMCAnimSpeed                  NNS_G2dSetMCAnimationSpeed

    ---------------------------------------------------------------------------
    Graphic Image Loading
    Old                                                   =>      New
    NNS_G2dInitializeImageProxy            NNS_G2dInitImageProxy
    NNS_G2dInitializeImagePaletteProxy     NNS_G2dInitImagePaletteProxy
    ---------------------------------------------------------------------------
    Entities
    Old                                                   =>      New
    NNS_G2dInitializeEntity                NNS_G2dInitEntity
    NNS_G2dSetCurrentAnimation             NNS_G2dSetEntityCurrentAnimation

    ----------------------------------------------------------------------------
    OAM Manager
    Old                                                   =>      New
    NNS_G2dInitializeOamManager            NNS_G2dInitOamManagerModule
    NNS_G2dEntryNewOam                     NNS_G2dEntryOamManagerOam
    NNS_G2dEntryNewOamWithAffineIdx        NNS_G2dEntryOamManagerOamWithAffineIdx
    NNS_G2dEntryNewOamAffine               NNS_G2dEntryOamManagerAffine
    NNS_G2dEntryOamAffine                  NNS_G2dSetOamManagerAffine
    NNS_G2dApplyToHW                       NNS_G2dApplyOamManagerToHW
    NNS_G2dApplyToHWSoftEmu                NNS_G2dApplyOamManagerToHWSprite
    NNS_G2dResetBuffer                     NNS_G2dResetOamManagerBuffer
    NNS_G2dApplyToHWAndReset               NNS_G2dApplyAndResetOamManagerBuffer
    NNS_G2dGetOamAttrCapacity              NNS_G2dGetOamManagerOamCapacity
    NNS_G2dGetOamAffineCapacity            NNS_G2dGetOamManagerAffineCapacity

    ---------------------------------------------------------------------------
    Extended OAM Manager
    Old                                                   =>      New
    NNS_G2dEntryNewOamEx                   NNS_G2dEntryOamManExOam
    NNS_G2dEntryNewOamWithAffineIdxEx      NNS_G2dEntryOamManExOamWithAffineIdx
    NNS_G2dEntryNewAffineParamsEx          NNS_G2dEntryOamManExAffine
    NNS_G2dApplyToBaseModuleEx             NNS_G2dApplyOamManExToBaseModule
    NNS_G2dResetOamInstanceEx              NNS_G2dResetOamManExBuffer
    NNS_G2dGetNewOamInstanceEx             NNS_G2dGetOamManExInstance
    NNS_G2dSetOamEntryFunctionsEx          NNS_G2dSetOamManExEntryFunctions

    ----------------------------------------------------------------------------
    Renderer
    Old                                                   =>      New
    NNS_G2dAddTargetSurface                NNS_G2dAddRendererTargetSurface
    NNS_G2dSetCurrentImageProxy            NNS_G2dSetRendererImageProxy

    -----------------------------------------------------------------------------
    Software Sprites
    Old                                                   =>      New
    NNS_G2dSetCurrentPolygonID             NNS_G2dSetSpriteCurrentPolygonID
    NNS_G2dSetDefaultAttr                  NNS_G2dSetSpriteDefaultAttr
    NNS_G2dGetDefaultAttr                  NNS_G2dGetSpriteDefaultAttr

### Note 15-B02: (Library) Improved debug string output for color palettes loaded from file

Improved debug string output for the color palette.

### Note 15-B03: (Library) Added functions to OAM manager

- Added the `NNS_G2dGetNewOamManagerInstance` function, a new function that generates the OAM Manager entity.
- Added the `NNS_G2dGetNewOamManagerInstanceAsFastTransferMode` function, which generates the OAM Manager entity and can transfer the internal buffer at high speed using DMA.

### Note 15-B04: (Library) Updated for cases where OAM manager does not manage affine parameters

Updated for when the OAM Manager entity does not control the affine parameter.

### Note 15-B05: (Library) Changed parameters for setting 3D graphics engine camera used with software sprites

Changed the parameters of the 3D graphics engine camera settings for software sprites. Fixed a bug resulting in disparities in the image output between 2D and 3D rendering.

### Note 15-B06: (Converter) Extended functionality of converter and changed its name

The name of the converter program has been changed from `G2DConv.exe` to `g2dcvtr.exe`. Functionality was also extended. (For more information, see the converter manual.

### Note 15-B07: (Library) Fixed bug where affine parameters outside area being managed were illegally reset by OAM manager

Fixed a bug where affine parameters outside the control range were incorrectly reset by the `NNS_G2dResetBuffer` function (internal buffer reset process).

### Note 15-B08: (Library) Fixed bug where rendering was not performed correctly by OAM manager except in double affine mode

Fixed a bug resulting in incorrect rendering from outside the double affine mode when the software sprite rendering functions are used.

## Changes in Version 2004/07/20

### Note 13-B01: (Library) Updated for multicells

Updated for multicell use.

### Note 13-B02: (Format) Changed the version of every file format to 1.0

Changed the version of every file format to 1.0. (Old data cannot be used. Please use the new converter to reconvert.)

### Note 13-B03: (Library) Added CellVRAM transfer mode manager module

A CellVRAM transfer mode manager module has been added. (Used in VRAM transfer animation.)

### Note 13-B04: (Library) Added OAM software sprite rendering module

Rendering using OAM software sprites separated from the OAM Manager. OAM software sprite rendering module added.

### Note 13-B05: (Library) Updated cell animations for VRAM transfer animations

Cell animations now support VRAM transfer animation.

### Note 13-B06: (Library) Changed names of multicell functions

- Changed the name of the `NNS_G2dGetNumNodesRequired` function to `NNS_G2dGetMCNumNodesRequired`.
- Changed the name of the `MultiCellDataToMCInstance` function to `NNS_G2dSetMCDataToMCInstance`.

### Note 13-B07: (Library) Changed workings of OAM manager

Separated rendering with OAM software sprites into its own module. (The behavior of the NNS_G2dDrawOneOam3DDirect function was changed accordingly. For more information, see the function reference.)

### Note 13-B08: (Converter) Added functionality to `g2dcvtr`

- Implemented version checking for NITRO-CHARACTER files. Old version files can no longer be used. (Old data must be resaved using the new NITRO-CHARACTER.)

- Various output options were added. (See the converter documentation for more information.)
- Updated for the output of various 1D mapping modes.
- Updated for conversion of data using character compression functionality.
- Made it possible to output VRAM transfer animation data.
- Updated for output of animation play method information.

## Changes in Version 2004/06/22

### Note 10-B01: (Library) Combined extended OAM manager and extended OAM manager 2

The extended OAM manager and extended OAM manager 2 have been combined. Named the extended OAM manager, with functions to use the extended OAM manager 2 format.

### Note 10-B02: (Library) Changed variable names

`NNSG2dCellData.cellType` has been renamed `NNSG2dCellData.cellAttr`.

### Note 10-B03: (Library) Revised specifications such that functions used for debug output are turned off in FINALROM build

The function group that outputs run-time library debug data is defined as dummy inline functions in the FINALROM build.

### Note 10-B04: (Library) Changed accessors for animation controller to inline functions

Converted the accessor group functions that were defined in the header to inline functions.

### Note 10-B05: (Library) Changed extended OAM manager specifications

- Can specify the method (normal or double-sized affine) for affine transformations that are used by the OAM Manager. (`NNS_G2dSetOamManExDoubleAffineFlag`.)

- Can no longer configure default rendering registration functions. The `NNS_G2dSetOamEntryFunctionsEx` function must be executed.

### Note 10-B06: (Library) Added functionality to the renderer

- Added visibility culling functionality to the Renderer. (Data must be reconverted with the new converter.)
- Added a function to initialize the render surface (`NNS_G2dInitRenderSurface`).
- Added a pointer to the function that performs visibility culling on the render surface member.

### Note 10-B07: (Format) Changed the format of NCER files

Changed the format of the cell definition data NCER file. Data from previous versions cannot be used. (Re-conversion is necessary.)

### Note 10-B08: (Library) Fixed bug where extended OAM manager did not render correctly

Fixed a bug that caused improper rendering when registering OAM without using affine parameters.

### Note 10-B09: (Library) Fixed bug where renderer did not render correctly

Fixed a bug that prevented proper rendering when object position was y <= -64 in the cell's local coordinate system.

## Changes in Version 2004/06/10

### Note 09-B01: (Converter) Updated converter for 1D-mapping specifications

Added converter support for specifications to allow multiple objects in a single cell to share the character region during 1D mapping.

### Note 09-B02: (Library) Fixed bug where debug display for animation data failed when loading files

In the `NNS_G2dPrintAnimContents` function, the display of debug animation data that was created using SRT (scale, rotate, and translate) animation failed. This bug has been fixed.

### Note 09-B03: (Library) Fixed bug in OAM manager

- Fixed a bug that caused improper operation when `NNS_G2D_OAMTYPE_SOFTWAREEMULATION` was specified as a manager type and the OAM management region start index was specified as a value other than 0.

- Fixed a bug that caused improper operation when the affine parameter management region start index was specified as a value other than 0.

### Note 09-B04: (Library) Fixed bugs in software sprites

- Fixed a bug that caused improper rendering after a sprite with an alpha value of 0 was rendered.
- Fixed a bug that caused improper rendering when the `NNS_G2D_SPRITEATTR_UV` attribute was not used.
- Fixed a bug resulting in a difference in the behavior of the 2D graphics engine and software sprite processing when scrolling.

## Changes in Version 2004/05/28

### Note 08-B01: (Library) Added functions to load files

- Added the `NNS_G2dGetUnpackedXXX` function group to simplify the description of user code.
- Added the `NNS_G2dIsBinFileValid` function to verify file extensions and versions.

### Note 08-B02: (Library) Added functions for the animation controller

- Added playback control functions (`NNS_G2dStartAnimController`, `NNS_G2dStopAnimController`, and so on)
- Added functions that allow the playback mode to be changed by the programmer (`NNS_G2dSetAnimCtrlPlayModeOverridden` and so on).
- Renamed the `NNS_G2dSetCallBackFunctorAtSpecifiedFrame` function as `NNS_G2dSetCallBackFunctorAtAnimFrame`.

### Note 08-B03: (Library) Changed OAM manager function arguments

Changed the arguments for the `NNS_G2dApplyToHWSoftEmu` and `NNS_G2dDrawOneOam3DDirect` functions.

### Note 08-B04: (Library) Changed extended OAM manager 2 function arguments

Changed the arguments of the `NNS_G2dGetNewOamInstanceEx2` functions.

### Note 08-B05: (Library) Added functions to load images

Added a convenient function group to simplify the loading of data to an image proxy.

### Note 08-B06: (Library) Changed renderer function arguments

- Changed the arguments for rendering methods. The matrix cache for the `NNS_G2dDrawXXX` internal data structure has been hidden.
- Changed the arguments for the `NNS_G2dPopMtx` function.

### Note 08-B07: (Library) Enabled turning debug output on and off with compiler switch

- Allowed the compiler switch to turn debug output on and off in the library. Debug output is enabled when `NNSI_G2D_DEBUG` is defined.

### Note 08-B08: (Format) Made changes to file format and converter

Changed the file format and converter. Reconvert previously created files.

### Note 08-B09: (Sample) Added samples

- Revised the sample to support SDK 1.2 and load sample data from the file system.
- Added character data display samples for each format (256-color palette, extended palette, and so on).

### Note 08-B10: (Converter) Added `BuildNENR`

Provided the `BuildNENR.exe` tool to create entity-defined binary files.

CONFIDENTIAL