THE iDOLM@STER/Notes: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Updated research on scratchpad file system and file formats)
mNo edit summary
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{notes}}
== Abbreviations ==
== Abbreviations ==


Line 118: Line 119:
===NSH (Namco SHader)===
===NSH (Namco SHader)===


Found in default.xex binary using Ghidra.  Possibly "stored" in /root/effect/ scratchpad file system?  Unknown how it relates to HLSL or compiled DXBC.
"Stored" in /root/effect/ scratchpad file system, found in /root/initialTemp/initialTemp.bna.  Appears to be mostly SM 3.0 DXBC.
 
{| class="wikitable"
|+ NSH Format
|-
! Offset !! Entry !! Size !! Description
|-
| 0x0 || Magic || 0x4 || "NSXR"
|-
| 0x4 || File size || 0x4 || Size of the entire NSH
|-
| 0x8 || Number of Shaders in archive? || 0x1? ||
|-
| 0x9 || Constant dataNumber of combined VS/PS? || 0x7? || '''0x00 0x00 0x01 0x00 0x00 0x00 0x00'''
|-
| 0x10 || Unknown Header/Padding || 0x10 ||
|-
| 0x20 || Unknown || 0x18 || Unknown header/DXBC
|-
| 0x38 || Size of DXBC/ucode? || 0x4 || Always equal to total file size - 32 byte NSH header
|-
| 0x3C || Unknown || 0x44 || Unknown header/DXBC
|-
| 0x80 || Offset Table || 0x80 (0x10 per entry) || Offsets from start of DXBC to various sections of DXBC
Each entry is composed of a DWORD offset from end of NSH header (ex - 0xE0 points to 0x100), an unknown DWORD, a length DWORD and a second unknown DWORD
 
Currently known entries are Vertex Shaders, Pixel Shaders, Vertex Shader Globals and Pixel Shader Globals
|-
| 0x100 || Shader ucode || Varies || Compiled with XDK 4025. See [[Xbox 360/Hardware information/Xenos (GPU)]] for more info
|}
 
This WIP hexpat can be used with imHex to more easily view nsh files
 
<pre>
#pragma description Namco 360 Shader
//#pragma magic [4E 53 58 52] @ 0x0 //broken in some versions of imHex
//#pragma endian big //broken in some versions of imHex
 
struct dxbcOffsetTable { //Some of these might not exist, indicated by zeroes
be u32 VSPtr [[color("BCBD22")]];
be u32 VSUnknown1 [[color("FF7F0E")]];
be u32 VSLength [[color("17BECF")]];
be u32 VSUnknown2 [[color("1F77B4")]];
be u32 PSPtr [[color("BCBD22")]];
be u32 PSUnknown1 [[color("FF7F0E")]];
be u32 PSLength [[color("17BECF")]];
be u32 PSUnknown2 [[color("1F77B4")]];
be u32 VSGlobalsPtr [[color("BCBD22")]];
be u32 VSGlobalsUnknown1 [[color("FF7F0E")]];
be u32 VSGlobalsLength [[color("17BECF")]];
be u32 VSGlobalsUnknown2 [[color("1F77B4")]];
be u32 PSGlobals [[color("BCBD22")]];
be u32 PSGlobalsUnknown1 [[color("FF7F0E")]];
be u32 PSGlobalsLength [[color("17BECF")]];
be u32 PSGlobalsUnknown2 [[color("1F77B4")]];
be u32 paddingUnknown3[16] [[color("D62728")]];
};
 
struct dxbc {
be u32 unknowndxbcHeader[6];
be u32 dxbcSize;
be u32 paddingUnknown2[17];
dxbcOffsetTable dxbcTable;
};
 
struct nshHeader {
char MAGIC[4];
be u32 nshSize;
u8 numShaders;
u8 unknown[7]; //possibly number of VS+PS pairs
be u32 paddingUnknown1[4];
dxbc ucode;
};
 
 
struct vertexShader {
be u32 VSMagic; //10 2A 11 01
be u32 unknown[11];
be u16 shaderType; //FF FE
};
 
struct pixelShader {
be u32 PSMagic; //10 2A 11 01
be u32 unknown[11];
be u16 shaderType; //FF FF
};
 
 
 
 
 
 
 
 
 
nshHeader root @ 0x0;
vertexShader vs @ 0x100;
//pixelShader ps @ 0x100; //should actually be at where root.ucode.dxbcTable.PSPtr points to
</pre>


{{Internal Data}}
{{Internal Data}}

Latest revision as of 03:49, 24 October 2024

Chip tiny.png The following article is a Notes Page for THE iDOLM@STER.

Abbreviations

Idols

Abbreviation Full Text Notes
ami Ami Futami
azu Azusa Miura
chi Chihaya Kisaragi
har Haruka Amami
ior Iori Minase
mak Makoto Kikuchi
mam Mami Futami
mik Miki Hoshii
mis Miki Hoshii (awakened) "MIki Special"
rit Ritsuko Akizuki
yay Yayoi Takatsuki
yuk Yukiho Hagiwara

Songs

Abbreviation Full Text Notes
age Agent Yoru o Yuku
aoi Aoi Tori
fir First Stage
gmw Go My Way!
hwg Here We Go!!
mah Mahou o Kakete!
mas Massugu
mbf My Best Friend
oha Ohayou!! Asagohan
omo Omoide o Arigatou
pm9 9:02pm
pos Positive!
rel relations
tai Taiyou no Jealousy
tim THE IDOLM@STER
wat Watashi wa Idol♥

Scratchpad Filesystem

BNA archives store files in folders that do not exist on the ROM.

For example, /root/bg3d/b3d_audition_a1_ill_wat.bna exctracts a file into the folder /root/bg3d/audition_a1/ but does not create this folder itself. /root/bg3d/audition_a1.bna does create this folder, indicating something in memory is keeping track of files.

File Formats Under Research

BXR Files (Bandai? Xbox? Resources)

BXR Format
Entry Size Notes
Magic Header 0x4 "BXR0"
Unknown Data? Varies with number of resources cataloged Bulk of research to be done here
Resource Listing Varies with number of resources cataloged Plaintext, separated with 0x00

AIX Files (Audio? I???? X????)

Criware proprietary audio format. Seems to be an archive?

AIX Files
Entry Size Notes
Magic Header 0x4 "AIXF"
Metadata Header? 0x43? Some kind of metadata for the file as a whole?
Subfiles Metadata Table 0x17B3 Table of data for subfiles. Each entry 0x10 bytes. If less than 0x17B files, remaining entries are zero filled.
Subfiles Headers? 0x6A per subfile "(c)CRIAIXP" + [HEADER DATA] + 0xFF 0xFF 0xFF 0xFF
Subfile Data Varies
Zero Filled Footer? ???? Unsure if part of final subfile or AIX

NSH (Namco SHader)

"Stored" in /root/effect/ scratchpad file system, found in /root/initialTemp/initialTemp.bna. Appears to be mostly SM 3.0 DXBC.

NSH Format
Offset Entry Size Description
0x0 Magic 0x4 "NSXR"
0x4 File size 0x4 Size of the entire NSH
0x8 Number of Shaders in archive? 0x1?
0x9 Constant data? Number of combined VS/PS? 0x7? 0x00 0x00 0x01 0x00 0x00 0x00 0x00
0x10 Unknown Header/Padding 0x10
0x20 Unknown 0x18 Unknown header/DXBC
0x38 Size of DXBC/ucode? 0x4 Always equal to total file size - 32 byte NSH header
0x3C Unknown 0x44 Unknown header/DXBC
0x80 Offset Table 0x80 (0x10 per entry) Offsets from start of DXBC to various sections of DXBC

Each entry is composed of a DWORD offset from end of NSH header (ex - 0xE0 points to 0x100), an unknown DWORD, a length DWORD and a second unknown DWORD

Currently known entries are Vertex Shaders, Pixel Shaders, Vertex Shader Globals and Pixel Shader Globals

0x100 Shader ucode Varies Compiled with XDK 4025. See Xbox 360/Hardware information/Xenos (GPU) for more info

This WIP hexpat can be used with imHex to more easily view nsh files

#pragma description Namco 360 Shader
//#pragma magic [4E 53 58 52] @ 0x0 //broken in some versions of imHex
//#pragma endian big //broken in some versions of imHex

struct dxbcOffsetTable { //Some of these might not exist, indicated by zeroes
	be u32 VSPtr [[color("BCBD22")]];
	be u32 VSUnknown1 [[color("FF7F0E")]];
	be u32 VSLength [[color("17BECF")]];
	be u32 VSUnknown2 [[color("1F77B4")]];
	be u32 PSPtr [[color("BCBD22")]];
	be u32 PSUnknown1 [[color("FF7F0E")]];
	be u32 PSLength [[color("17BECF")]];
	be u32 PSUnknown2 [[color("1F77B4")]];
	be u32 VSGlobalsPtr [[color("BCBD22")]];
	be u32 VSGlobalsUnknown1 [[color("FF7F0E")]];
	be u32 VSGlobalsLength [[color("17BECF")]];
	be u32 VSGlobalsUnknown2 [[color("1F77B4")]];
	be u32 PSGlobals [[color("BCBD22")]];
	be u32 PSGlobalsUnknown1 [[color("FF7F0E")]];
	be u32 PSGlobalsLength [[color("17BECF")]];
	be u32 PSGlobalsUnknown2 [[color("1F77B4")]];
	be u32 paddingUnknown3[16] [[color("D62728")]];
};

struct dxbc {
	be u32 unknowndxbcHeader[6];
	be u32 dxbcSize;
	be u32 paddingUnknown2[17];
	dxbcOffsetTable dxbcTable;
};

struct nshHeader {
	char MAGIC[4];
	be u32 nshSize;
	u8 numShaders;
	u8 unknown[7]; //possibly number of VS+PS pairs
	be u32 paddingUnknown1[4];
	dxbc ucode;
};


struct vertexShader {
	be u32 VSMagic; //10 2A 11 01
	be u32 unknown[11];
	be u16 shaderType; //FF FE
};

struct pixelShader {
	be u32 PSMagic; //10 2A 11 01
	be u32 unknown[11];
	be u16 shaderType; //FF FF
};









nshHeader root @ 0x0;
vertexShader vs @ 0x100;
//pixelShader ps @ 0x100; //should actually be at where root.ucode.dxbcTable.PSPtr points to