public static NSD Load(byte[] data) { if (data == null) { throw new ArgumentNullException("data"); } if (data.Length < 1312) { ErrorManager.SignalError("NSD: Data is too short"); } int[] unknown1 = new int [256]; for (int i = 0; i < 256; i++) { unknown1[i] = BitConv.FromInt32(data, i * 4); } int chunkcount = BitConv.FromInt32(data, 1024); int entrycount = BitConv.FromInt32(data, 1028); int[] unknown2 = new int [70]; for (int i = 0; i < 70; i++) { unknown2[i] = BitConv.FromInt32(data, 1032 + i * 4); } if (chunkcount < 0) { ErrorManager.SignalError("NSD: Chunk count is negative"); } if (entrycount < 0) { ErrorManager.SignalError("NSD: Entry count is negative"); } if (data.Length < 1312 + 8 * entrycount) { ErrorManager.SignalError("NSD: Data is too short"); } NSDLink[] index = new NSDLink [entrycount]; for (int i = 0; i < entrycount; i++) { int chunkid = BitConv.FromInt32(data, 1312 + 8 * i); int entryid = BitConv.FromInt32(data, 1316 + 8 * i); index[i] = new NSDLink(chunkid, entryid); } int extralength = data.Length - (1312 + 8 * entrycount); byte[] extradata = new byte [extralength]; Array.Copy(data, 1312 + 8 * entrycount, extradata, 0, extralength); return(new NSD(unknown1, chunkcount, unknown2, index, extradata)); }
public static NSD Load(byte[] data) { if (data == null) throw new ArgumentNullException("data"); if (data.Length < 1312) { ErrorManager.SignalError("NSD: Data is too short"); } int[] unknown1 = new int [256]; for (int i = 0;i < 256;i++) { unknown1[i] = BitConv.FromInt32(data,i * 4); } int chunkcount = BitConv.FromInt32(data,1024); int entrycount = BitConv.FromInt32(data,1028); int[] unknown2 = new int [70]; for (int i = 0;i < 70;i++) { unknown2[i] = BitConv.FromInt32(data,1032 + i * 4); } if (chunkcount < 0) { ErrorManager.SignalError("NSD: Chunk count is negative"); } if (entrycount < 0) { ErrorManager.SignalError("NSD: Entry count is negative"); } if (data.Length < 1312 + 8 * entrycount) { ErrorManager.SignalError("NSD: Data is too short"); } NSDLink[] index = new NSDLink [entrycount]; for (int i = 0;i < entrycount;i++) { int chunkid = BitConv.FromInt32(data,1312 + 8 * i); int entryid = BitConv.FromInt32(data,1316 + 8 * i); index[i] = new NSDLink(chunkid,entryid); } int extralength = data.Length - (1312 + 8 * entrycount); byte[] extradata = new byte [extralength]; Array.Copy(data,1312 + 8 * entrycount,extradata,0,extralength); return new NSD(unknown1,chunkcount,unknown2,index,extradata); }