The current URL is datacrystal.tcrf.net.
THE iDOLM@STER/Notes: Difference between revisions
(Update NSH research. Experimenting with new table format for more easily keeping track of offsets) |
(NSH hexpat) |
||
Line 149: | Line 149: | ||
|} | |} | ||
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}} |
Revision as of 20:47, 31 July 2024
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)
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?
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.
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
Internal Data for THE iDOLM@STER
| |
---|---|