font library problem regarding clearing of texture cache when renderingnw::ut::MoveArraynw::font::TagProcessor when using nw::font::RectDrawernw::os::IsDeviceMemorynw::ut::Childrennw::math and nn::mathnw::ut namespaceversion.hGet method of MovePtr FloatColor to u32ResArray::size functionMoveArrayNW_FAILSAFE_IF operationsnw::math::ResXXX types to nw::utArrayWrapper class to MoveArrayResFont::SetDrawBufferconst argument passed by reference Set method to Vectorfont library problem regarding clearing of texture cache when renderingDuring rendering by the font library, the texture cache was not cleared adequately. This bug has been fixed. In correcting this problem, the memory used for rendering has been increased by 8 bytes per character.
Up to this version, mutex-based exclusive control was being performed regardless of whether SharedPtr was being used. Specifications have changed so that exclusive control is not performed by default. If exclusive control is required, specify a class for locking in the second argument of the template in a manner such as the folowing: SharedPtr<TObj, nw::os::LockObject>.
Specifications are currently such that a DEPRECATED warning is issued at compile time regarding the use of APIs scheduled for future deletion. The following header has been prepared for ignoring such warnings.
This is equivalent to suppressing warning using #pragma diag_suppress 1361.
#include <nw/config/ignore_deprecated_begin.h> #include <nw/config/ignore_deprecated_end.h>
In addition, the build option NW_IGNORE_DEPRECATED has also been prepared. Use of this build option is not particularly recommended as it will disable all warnings.
The method PushBackFast has been added to MoveArray. This method operates faster than push_back because an assert is used for the range check and the automatic extension feature capacity does not work.
This is useful when the required amount of memory can be reserved ahead of time and elements can be pushed back all together.
There was a bug that caused a link error when calling the nw::font::RectDrawer::GetVertexBufferData() of the character drawing library. This bug has been fixed.
The macro definition ”NW_SIGNAL_MULTI_SLOT_ENABLED” has been added to ut_Config.h. Signal can be made to manage only one Slot by disabling this definition.
You can expect process optimization by limiting the number of slots managed to one. The library must be rebuilt in order to use this macro definition.
There was a problem with the implementation of the PairFont class that made it unusable. This bug has been fixed.
The following problem with the character drawing sample (PackedFont) was fixed.
There was a bug where creation of archive fonts (bcfna) would fail. This bug has been fixed.
Font data files (bcfnt, bcfna) in some formats (RGB5A1 and RGBA4) could not be loaded correctly. This bug has been fixed.
The following bug was fixed in the character drawing sample (ArchiveFont, PackedFont).
There was a hardware setting that was partially incorrect when drawing characters. Characters would be drawn shifted in position as a result. This bug has been fixed.
Previous versions had some notation related to the TEG2 board. This has been deleted from this version.
In the character drawing sample programs ResFont and ArchiveFont , the character drawing library leaves it up to the user to configure the GL settings. The method for configuring these GL settings has been changed such that it is now done by issuing 3D commands after GL functions have been called.
nw::ut::MoveArrayWhen destructing, the destructors for the various saved elements were not called. That problem has been fixed. The cause was a memory leak at a certain place in the library.
nw::font::TagProcessor when using nw::font::RectDrawerWhen nw::font::RectDrawer was being used, the color of the first character would not change when the text color was changed by nw::font::TagProcessor. This bug has been fixed.
nw::os::IsDeviceMemoryRevised nw::os::IsDeviceMemory to support the change to variable device memory size in CTR-SDK 0.10.0.
nw::ut::ChildrenWhen an attempt is made to delete an un-owned object, the function now does nothing and returns false. Before this improvement, the behavior would sometimes change when the function was used in problematic ways.
nw::math and nn::mathDeleted nn::math and the shared classes and functions and added a using-based alias. In the past nw::math class, an unnamed structure was defined in the union and it was possible to access elements like MTX33::_00. But for nn::math the standard is that this definition is not valid. By declaring the macro definition NN_SWITCH_ENABLE_MEMBER_NAME_SHORTCUT before including the header to the nn::math namespace, you can access via unnamed structures compatible with the previous nn::math.
nw::ut namespaceMoved SafeDestroy, SafeDestroyer, SafeDestroyAll from the nw::gfx namespace to the nw::ut namespace. These remain defined as using-based aliases in nw::gfx.
Added the nw::font::RectDrawer class for fast drawing of character strings.
Changed the character-drawing sample programs ResFont and ArchiveFont so they can use the class for fast text drawing (nw::font::RectDrawer). The sample program PackedFont was not changed because it does not support drawing using nw::font::RectDrawer.
nw::ut::FloatColor The implicit operator for casting to u32 was deleted from nw::ut::FloatColor because of problems due to different endianness than Color8. In its place, added the function FloatColor::ToPicaU32.
version.hThe following two items were added to $(NW4C_ROOT)/include/nw/version.h
NW_VERSION_RELSTEP corresponds to the 4th digit of the version number and is incremented by 1 for each release, be it the PR version, the RC version or the official version.
NW_VERSION_REVISION is updated every time the file is revised and has no relation to the release.
Get method of MovePtr The return value of a const method is now a non-const pointer.
Changed the format of font binary files. Not compatible with binary of previous versions.
During text drawing, even if the cursor position in the Z direction changed the Z value would not be updated unless the SetupGX function was called. That was revised in this release, so now the Z value is updated when it is changed during text drawing.
FloatColor to u32When converting from FloatColor to u32 the alpha value did not convert correctly. That problem was fixed.
ResArray::size functionThe result of the ResArray::size function would be the opposite sign of what it should be. That was fixed so now it is signed correctly as positive or negative.
Added the development-use library nw_dev. This library also operates in Release mode, so when creating the ROM be sure to define NW_DEV_DISABLED so it is not included in your retail product.
Simple profile features have been added to the dev library.
The ASSERT check was enabled in the Release build version of the library. That has been corrected, so now ASSERT is only enabled in the Debug and Development builds and disabled in the Release build.
Changed the C++ source code from ShiftJIS to UTF-8 with BOM.
MoveArrayAn error would occur for memory of the MoveArray-specified size when a size of 0 was specified for the constructor allocated from the allocator. That problem has been fixed.
In Visual C++, when the element type was primitive a warning would appear in the destroy method. That problem was fixed
NW_FAILSAFE_IF operationsFixed problems relating to the incorrect operation of billboarding and other operations.
Some of the (Wide)TextWriter class member functions that were used by the previous release of the 2D Layout library can no longer be used in the present release, so they have been deleted. The following functions were deleted:.
When drawing with the (Wide)TextWriter class, the position at which drawing began would be off by 0.5 under the conditions listed below.. As a result, even when an integer was specified for the cursor position, pixels would be drawn straddled and the text would look blurry.
To correct for this, when text is being drawn under these conditions the text size is calculated as a multiple of 2 and rounded up. This is done separately for width and height.
In the Development and Release builds for the actual hardware, the assembler version is now used for the following API
MTX34Mult
MTX34Copy
MTX33Mult
nw::math::ResXXX types to nw::utThe following types have been moved from nw::math to nw::ut. The nw::math definitions will remain for a while but in the future they are to be deleted.
ArrayWrapper class to MoveArrayResFont::SetDrawBufferIn previous releases, there was no way to remove the reference to the memory that was configured for drawing by ResFont::SetDrawBuffer. From this release that can now be done by specifying NULL for ResFont::SetDrawBuffer.
In the conventional TextWriter class, line-spacing was taken into consideration even when just one line of text was being drawn. As a result, when text was centered vertically it was not positioned correctly. This bug has been fixed.
Added the binary file color formats A4 and L4. These formats cannot be used on the TEG2 board.
const argument passed by reference Added an overloaded function with a const argument passed by reference to the operations for Vector, Matrix and Quaternion.
Set method to VectorAdded a Set method for setting values to Vector2, Vector3 and Vector4.
In past versions, the CharWriter class for text drawing also managed the drawing resources like shaders and texture objects required for text drawing.
In this version, these resources have been made independent as the TextWriterResource class. Multiple CharWriter(TextWriter) can share the use of this TextWriterResource class.
In past versions, a shader file for text drawing was provided for the sample program but it was not provided as part of the library.
In this version, a shader file in binary format has been prepared as the file nwfont_TextWriterShader.shbin in the shaders directory.
The names of the following functions and types have been changed:
Changed the format of font binary files. Not compatible with binary of previous versions.
CONFIDENTIAL