<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hedgedocs.com/index.php?action=history&amp;feed=atom&amp;title=NN_Chunk_Format_-_TEXLIST</id>
	<title>NN Chunk Format - TEXLIST - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://hedgedocs.com/index.php?action=history&amp;feed=atom&amp;title=NN_Chunk_Format_-_TEXLIST"/>
	<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=NN_Chunk_Format_-_TEXLIST&amp;action=history"/>
	<updated>2026-04-17T08:11:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://hedgedocs.com/index.php?title=NN_Chunk_Format_-_TEXLIST&amp;diff=189&amp;oldid=prev</id>
		<title>PTKay: Created page with &quot;== NNS_TEXFILELIST == {{Notice|type=note|content=This is the root struct for all TEXLIST data chunks.}} A list of texture file entries.&lt;syntaxhighlight lang=&quot;cpp&quot;&gt; struct NNS_TEXFILELIST {   // The number of elements in the [pTexFileList] array.   int32_t nTex;    // An array of NNS_TEXFILE structs.   NNS_TEXFILE* pTexFileList; };  // Macros used by Text-Form files: #define TEXFILELIST(nTex, pTexFileList) { nTex, pTexFileList } #define TFL_N_TEXFILE(nTex) (nTex) #define...&quot;</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=NN_Chunk_Format_-_TEXLIST&amp;diff=189&amp;oldid=prev"/>
		<updated>2025-02-21T10:38:23Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== NNS_TEXFILELIST == {{Notice|type=note|content=This is the root struct for all TEXLIST data chunks.}} A list of texture file entries.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; struct NNS_TEXFILELIST {   // The number of elements in the [pTexFileList] array.   int32_t nTex;    // An array of NNS_TEXFILE structs.   NNS_TEXFILE* pTexFileList; };  // Macros used by Text-Form files: #define TEXFILELIST(nTex, pTexFileList) { nTex, pTexFileList } #define TFL_N_TEXFILE(nTex) (nTex) #define...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== NNS_TEXFILELIST ==&lt;br /&gt;
{{Notice|type=note|content=This is the root struct for all TEXLIST data chunks.}}&lt;br /&gt;
A list of texture file entries.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct NNS_TEXFILELIST&lt;br /&gt;
{&lt;br /&gt;
  // The number of elements in the [pTexFileList] array.&lt;br /&gt;
  int32_t nTex;&lt;br /&gt;
&lt;br /&gt;
  // An array of NNS_TEXFILE structs.&lt;br /&gt;
  NNS_TEXFILE* pTexFileList;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Macros used by Text-Form files:&lt;br /&gt;
#define TEXFILELIST(nTex, pTexFileList) { nTex, pTexFileList }&lt;br /&gt;
#define TFL_N_TEXFILE(nTex) (nTex)&lt;br /&gt;
#define TFL_TEXFILE(pTexFileList) (pTexFileList)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;{{Notice|type=note|content=Is the following information on embedded texture data correct? This might only apply to NCP files, NOT to NN?}}&lt;br /&gt;
Binary-form files can additionally contain embedded texture data via setting the &amp;lt;code&amp;gt;Filename&amp;lt;/code&amp;gt; field within one or more [[NN Chunk Format - TEXLIST#NNS TEXFILE|NNS_TEXFILE]] structs to NULL.&lt;br /&gt;
&lt;br /&gt;
In binary-form files which utilize this feature, there is an extra field in NNS_TEXFILELIST after &amp;lt;code&amp;gt;pTexFileList&amp;lt;/code&amp;gt;, which is a pointer to an array of &amp;lt;code&amp;gt;nTex&amp;lt;/code&amp;gt; NNS_TEXFILEDATA structs, which go like this:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// NOTE: This name was guessed.&lt;br /&gt;
struct NNS_TEXFILEDATA&lt;br /&gt;
{&lt;br /&gt;
  // Seems to be flags?&lt;br /&gt;
  uint32_t Unknown1;&lt;br /&gt;
&lt;br /&gt;
  // Pointer to the embedded texture data.&lt;br /&gt;
  void* pData;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NNF_TEXFILETYPE ==&lt;br /&gt;
Types and flags for a [[NN Chunk Format - TEXLIST#NNS TEXFILE|NNS_TEXFILE]] struct.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
enum NNF_TEXFILETYPE : uint32_t&lt;br /&gt;
{&lt;br /&gt;
  // -- Masks --&lt;br /&gt;
&lt;br /&gt;
  // Apply this mask to get the Texture Type.&lt;br /&gt;
  NND_TEXFTYPE_TEXTYPE_MASK = 255,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // -- Texture Types --&lt;br /&gt;
&lt;br /&gt;
  // NOTE: These types were taken from Sonic 4 Episode 1 for Windows Phone 7,&lt;br /&gt;
  // but they do NOT appear to be used by ANY known NN games correctly!&lt;br /&gt;
&lt;br /&gt;
  // PS2 NN texture lists that use SVR textures have&lt;br /&gt;
  // their type set to 0 (GVR), for example.&lt;br /&gt;
&lt;br /&gt;
  // Please do NOT rely on these values!!!&lt;br /&gt;
&lt;br /&gt;
  NND_TEXFTYPE_GVRTEX = 0,&lt;br /&gt;
  NND_TEXFTYPE_SVRTEX = 1,&lt;br /&gt;
  NND_TEXFTYPE_XVRTEX = 2,&lt;br /&gt;
&lt;br /&gt;
  // -- Flags --&lt;br /&gt;
&lt;br /&gt;
  // The [FileName] field should be ignored.&lt;br /&gt;
  NND_TEXFTYPE_NO_FILENAME = 256,&lt;br /&gt;
&lt;br /&gt;
  // The [MinFilter] and [MagFilter] fields&lt;br /&gt;
  // should be ignored; use a default instead.&lt;br /&gt;
  NND_TEXFTYPE_NO_FILTER = 512,&lt;br /&gt;
&lt;br /&gt;
  // The [GlobalIndex] field is used (default is to ignore it).&lt;br /&gt;
  NND_TEXFTYPE_LISTGLBIDX = 1024,&lt;br /&gt;
&lt;br /&gt;
  // The [Bank] field is used (default is to ignore it).&lt;br /&gt;
  NND_TEXFTYPE_LISTBANK = 2048&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NNF_TEXFILE_MINFILTER ==&lt;br /&gt;
All possible texture minification filters.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
enum NNF_TEXFILE_MINFILTER : uint16_t&lt;br /&gt;
{&lt;br /&gt;
  // Nearest minification filtering.&lt;br /&gt;
  NND_MIN_NEAREST = 0,&lt;br /&gt;
&lt;br /&gt;
  // Linear minification filtering.&lt;br /&gt;
  NND_MIN_LINEAR = 1,&lt;br /&gt;
&lt;br /&gt;
  NND_MIN_NEAREST_MIPMAP_NEAREST = 2,&lt;br /&gt;
  NND_MIN_NEAREST_MIPMAP_LINEAR = 3,&lt;br /&gt;
  NND_MIN_LINEAR_MIPMAP_NEAREST = 4,&lt;br /&gt;
  NND_MIN_LINEAR_MIPMAP_LINEAR = 5,&lt;br /&gt;
  NND_MIN_ANISOTROPIC = 6,&lt;br /&gt;
  NND_MIN_ANISOTROPIC2 = 6,&lt;br /&gt;
  NND_MIN_ANISOTROPIC_MIPMAP_NEAREST = 7,&lt;br /&gt;
  NND_MIN_ANISOTROPIC2_MIPMAP_NEAREST = 7,&lt;br /&gt;
  NND_MIN_ANISOTROPIC_MIPMAP_LINEAR = 8,&lt;br /&gt;
  NND_MIN_ANISOTROPIC2_MIPMAP_LINEAR = 8,&lt;br /&gt;
  NND_MIN_ANISOTROPIC4 = 9,&lt;br /&gt;
  NND_MIN_ANISOTROPIC4_MIPMAP_NEAREST = 10,&lt;br /&gt;
  NND_MIN_ANISOTROPIC4_MIPMAP_LINEAR = 11,&lt;br /&gt;
  NND_MIN_ANISOTROPIC8 = 12,&lt;br /&gt;
  NND_MIN_ANISOTROPIC8_MIPMAP_NEAREST = 13,&lt;br /&gt;
  NND_MIN_ANISOTROPIC8_MIPMAP_LINEAR = 14&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NNF_TEXFILE_MAGFILTER ==&lt;br /&gt;
All possible texture magnification filters.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
enum NNF_TEXFILE_MAGFILTER : uint16_t&lt;br /&gt;
{&lt;br /&gt;
  // Nearest magnification filtering.&lt;br /&gt;
  NND_MAG_NEAREST = 0,&lt;br /&gt;
&lt;br /&gt;
  // Linear magnification filtering.&lt;br /&gt;
  NND_MAG_LINEAR = 1,&lt;br /&gt;
&lt;br /&gt;
  // Anisotropic magnification filtering.&lt;br /&gt;
  NND_MAG_ANISOTROPIC = 2&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NNS_TEXFILE ==&lt;br /&gt;
A texture file entry.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct NNS_TEXFILE&lt;br /&gt;
{&lt;br /&gt;
  // Types and flags.&lt;br /&gt;
  NNF_TEXFILETYPE fType;&lt;br /&gt;
&lt;br /&gt;
  // The name of the file this texture is stored in, or NULL if&lt;br /&gt;
  // this texture&amp;#039;s data is embedded within this file. This value&lt;br /&gt;
  // should be ignored if NND_TEXFTYPE_NO_FILENAME is set in [fType].&lt;br /&gt;
  char* Filename;&lt;br /&gt;
&lt;br /&gt;
  // The minification filter to use on the texture. This value&lt;br /&gt;
  // should be ignored if NND_TEXFTYPE_NO_FILTER is set in [fType].&lt;br /&gt;
  NNF_TEXFILE_MINFILTER MinFilter;&lt;br /&gt;
&lt;br /&gt;
  // The magnification filter to use on the texture. This value&lt;br /&gt;
  // should be ignored if NND_TEXFTYPE_NO_FILTER is set in [fType].&lt;br /&gt;
  NNF_TEXFILE_MAGFILTER MagFilter;&lt;br /&gt;
&lt;br /&gt;
  // Unknown. Maybe some games have a global texture array, and&lt;br /&gt;
  // this is the index into that array to place this texture into?&lt;br /&gt;
  // This value should always be ignored *unless* NND_TEXFTYPE_LISTGLBIDX&lt;br /&gt;
  // is set in [fType].&lt;br /&gt;
  uint32_t GlobalIndex;&lt;br /&gt;
&lt;br /&gt;
  // Unknown. Maybe some games group textures into banks?&lt;br /&gt;
  // This value should always be ignored *unless* NND_TEXFTYPE_LISTBANK&lt;br /&gt;
  // is set in [fType].&lt;br /&gt;
  uint32_t Bank;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Macros used by Text-Form files:&lt;br /&gt;
#define TEXFILE(filename, filter) { 0, filename, filter, 0, 0 }&lt;br /&gt;
#define TF_FILENAME(filename) (filename)&lt;br /&gt;
#define TF_FILTER(minFilter, magFilter) (minFilter), (magFilter)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>PTKay</name></author>
	</entry>
</feed>