Nintendo DS的一種圖像格式,指示NCGR檔案里的方格怎樣排布,用NCLR檔案的哪一組色盤。
通用檔案頭,NRCS區域,
通用檔案頭
0x00 ID u8[4] NSCR 或 RCSN
0x04 Endianess u16 If = 0xFFFE 則是小尾
0x06 Constant u16 常數
0x08 File size u32 檔案大小
0x0C Header size u16 檔案頭大小,總是 0x10
0x0E Number of sections u16 區塊數量,總是 0x01
NRCS區域
0x00 ID u8[4] 常量NRCS
0x04 Section size u32 區段大小
0x08 Width u16 寬(像素)
0x0A Height u16 高(像素)
0x0C Unknown u32 可能是 0x00, 0x01 0x02
0x10 Data length u32 NTFS數據大小
0x14 NTFS data NTFS[] 這個NTFS不是磁碟的分區格式,不要弄混了。
vb聲明
PublicStructuresNSCR'NintendoSCreenResourcePublicheaderAsNitroHeader PublicStructureNitroHeader'GenericHeaderinNitroformatsPublicidAsChar()PublicendianessAsUInt16'0xFFFE->littleendianPublicconstantAsUInt16'Always0x0100Publicfile_sizeAsUInt32Publicheader_sizeAsUInt16'Always0x10PublicnSectionAsUInt16'NumberofsectionsEndStructurePublicnrcsAsNRCS_PublicStructureNRCS_PublicidAsChar()'NRCS=0x4E524353Publicsection_sizeAsUInt32PublicwidthAsUInt16PublicheightAsUInt16PublicpaddingAsUInt32'Always0x0Publicdata_sizeAsUInt32PublicmapDataAsUShortEndStructureEndStructure
解釋NTFS:
每個部分都是2位元組的,
每位是一個字母的話,NTFS是這樣表示的
PPPP X Y NNNNNNNNNN
PPPP => 色盤號
X => 是否沿著x軸翻轉
Y => 是否沿著y軸翻轉
NNNNNNNNNN => 方格編號
注意:
方格編號是10位無符號整數,說明它最大只有1023。但是,一些圖片有1536個方格,這會導致溢出。
溢出之後,方格編號可能變成0也可能丟棄最高位,這導致圖像不能用這個值解碼。
如果圖片有1536個方格,正確的方格編號用以下程式計算:
FunctionGetTileNumbers()AsUShort()Dimarr1(1024)AsUShortDimarr2(511)AsUShortDimj1AsInteger=0Dimj2AsInteger=0ForcAsUShort=0To1535IfcMod&H30<&H20Thenarr1(j1)=cj1+=1Elsearr2(j2)=cj2+=1EndIfNextReturnarr1.Concat(arr2).ToArrayEndFunction
這種圖片使用這組方格編號時要注意,第1025個方格丟棄不用。