public ShopDefinition(System.IO.Stream stream, EndianUtils.Endianness endian, BitUtils.Bitness bits) { InGameID = stream.ReadUInt32().FromEndian(endian); StringDicID = stream.ReadUInt32().FromEndian(endian); stream.ReadUInt32().FromEndian(endian); // second instance of string dic id? stream.ReadUInt32().FromEndian(endian); // always empty? OnTrigger = stream.ReadUInt32().FromEndian(endian); ChangeToShop = stream.ReadUInt32().FromEndian(endian); stream.DiscardBytes(4 + bits.NumberOfBytes()); // always empty? }
public Unknown0x20byteAreaB(System.IO.Stream stream, uint refStringStart, Util.Endianness endian) { UnknownFloats = new float[4]; for (int i = 0; i < UnknownFloats.Length; ++i) { UnknownFloats[i] = stream.ReadUInt32().FromEndian(endian).UIntToFloat(); } UnknownByte = (byte)stream.ReadByte(); stream.DiscardBytes(0x0F); }
public Title(System.IO.Stream stream) { ID = stream.ReadUInt32().SwapEndian(); NameStringDicID = stream.ReadUInt32().SwapEndian(); DescStringDicID = stream.ReadUInt32().SwapEndian(); Character = stream.ReadUInt32().SwapEndian(); CostumeString = stream.ReadAscii(0x10).TrimNull(); BunnyGuildPointsMaybe = stream.ReadUInt32().SwapEndian(); stream.DiscardBytes(0xC); }
public SynopsisEntry(System.IO.Stream stream, EndianUtils.Endianness endian) { ID = stream.ReadUInt32().FromEndian(endian); StoryIdMin = stream.ReadUInt32().FromEndian(endian); StoryIdMax = stream.ReadUInt32().FromEndian(endian); NameStringDicId = stream.ReadUInt32().FromEndian(endian); TextStringDicId = stream.ReadUInt32().FromEndian(endian); stream.DiscardBytes(0xC); long pos = stream.Position; RefString1 = stream.ReadAsciiNullterm(); stream.Position = pos + 0x10; RefString2 = stream.ReadAsciiNullterm(); stream.Position = pos + 0x20; }
public static bool VerifySave(out uint saveNumber, System.IO.Stream file, int position) { saveNumber = 0; uint saveValidPage = 0; for (int i = 0; i < 0xE; ++i) { int sectorpos = position + 0x1000 * i; file.Position = sectorpos + 0xFF4; int saveLogicalPage = file.ReadByte(); file.DiscardBytes(1); ushort readChecksum = file.ReadUInt16(); uint magic = file.ReadUInt32(); uint saveNumberTmp = file.ReadUInt32(); // verify magic number if (magic != 0x08012025) { Console.WriteLine("Magic number of sector at 0x" + sectorpos.ToString("X") + " is wrong."); continue; } // check if logical page is in valid range if (saveLogicalPage > 0xD) { Console.WriteLine("Logical page of sector at 0x" + sectorpos.ToString("X") + " is outside of valid range."); continue; } // verify checksum file.Position = sectorpos; ushort calculatedChecksum = Checksum.CalculateSaveChecksum(file, 0xF80); if (readChecksum != calculatedChecksum) { Console.WriteLine("Checksum of sector at 0x" + sectorpos.ToString("X") + " is wrong."); continue; } // all checks passed, page is valid, remember that saveNumber = saveNumberTmp; saveValidPage |= (1u << saveLogicalPage); } return(saveValidPage == 0x3FFF); }
public FloorInfo(System.IO.Stream stream, uint refStringStart, Util.Endianness endian, Util.Bitness bits) { uint atLeastBytes = (0x10 + 2 * (bits.NumberOfBytes())); EntrySize = stream.ReadUInt32().FromEndian(endian); if (EntrySize < atLeastBytes) { throw new Exception("This file confuses me."); } uint unknown2 = stream.ReadUInt32().FromEndian(endian); uint unknown3 = stream.ReadUInt32().FromEndian(endian); ulong unknown4 = stream.ReadUInt(bits, endian); uint unknown5 = stream.ReadUInt32().FromEndian(endian); ulong unknown6 = stream.ReadUInt(bits, endian); if (EntrySize > atLeastBytes) { stream.DiscardBytes(EntrySize - atLeastBytes); } RefString1 = stream.ReadAsciiNulltermFromLocationAndReset((long)(refStringStart + unknown4)); RefString2 = stream.ReadAsciiNulltermFromLocationAndReset((long)(refStringStart + unknown6)); }
// 14 is always zero // 16 is zero except on the new giganto monsters and spiral draco // 76 is on PS3 only, StringDicID for the dummy description public Enemy(System.IO.Stream stream, uint refStringStart, EndianUtils.Endianness endian, BitUtils.Bitness bits) { long pos = stream.Position; uint entryLength = stream.ReadUInt32().FromEndian(endian); // 0 ID = stream.ReadUInt32().FromEndian(endian); // 1 NameStringDicID = stream.ReadUInt32().FromEndian(endian); // 2 ulong ref3 = stream.ReadUInt(bits, endian); // 3 ulong ref4 = stream.ReadUInt(bits, endian); // 4 InGameID = stream.ReadUInt32().FromEndian(endian); // 5 ulong ref6 = stream.ReadUInt(bits, endian); // 6 Level = stream.ReadUInt32().FromEndian(endian); // 7 HP = stream.ReadUInt32().FromEndian(endian); // 8 TP = stream.ReadUInt32().FromEndian(endian); // 9 PATK = stream.ReadUInt32().FromEndian(endian); // 10 PDEF = stream.ReadUInt32().FromEndian(endian); // 11 MATK = stream.ReadUInt32().FromEndian(endian); // 12 MDEF = stream.ReadUInt32().FromEndian(endian); // 13 stream.ReadUInt32().FromEndian(endian); // 14 AGL = stream.ReadUInt32().FromEndian(endian); // 15 stream.ReadUInt32().FromEndian(endian); // 16 FatalBlue = stream.ReadUInt32().FromEndian(endian).UIntToFloat(); // 17 FatalRed = stream.ReadUInt32().FromEndian(endian).UIntToFloat(); // 18 FatalGreen = stream.ReadUInt32().FromEndian(endian).UIntToFloat(); // 19 FatalBlueRelated = stream.ReadUInt32().FromEndian(endian).UIntToFloat(); // 20 FatalRedRelated = stream.ReadUInt32().FromEndian(endian).UIntToFloat(); // 21 FatalGreenRelated = stream.ReadUInt32().FromEndian(endian).UIntToFloat(); // 22 stream.ReadUInt32().FromEndian(endian); // 23 Category = stream.ReadUInt32().FromEndian(endian); // 24 stream.ReadUInt32().FromEndian(endian); // 25 // > 100 weak, < 100 resist, 0 nullify, negative absorb // effectively a damage multiplier in percent Attributes = new int[7]; Attributes[0] = (int)stream.ReadUInt32().FromEndian(endian); // 26 Attributes[1] = (int)stream.ReadUInt32().FromEndian(endian); // 27 Attributes[2] = (int)stream.ReadUInt32().FromEndian(endian); // 28 Attributes[3] = (int)stream.ReadUInt32().FromEndian(endian); // 29 Attributes[4] = (int)stream.ReadUInt32().FromEndian(endian); // 30 Attributes[5] = (int)stream.ReadUInt32().FromEndian(endian); // 31 Attributes[6] = (int)stream.ReadUInt32().FromEndian(endian); // 32 EXP = stream.ReadUInt32().FromEndian(endian); // 33 Gald = stream.ReadUInt32().FromEndian(endian); // 34 LP = stream.ReadUInt32().FromEndian(endian); // 35 DropItems = new uint[4]; DropItems[0] = stream.ReadUInt32().FromEndian(endian); // 36 DropItems[1] = stream.ReadUInt32().FromEndian(endian); // 37 DropItems[2] = stream.ReadUInt32().FromEndian(endian); // 38 DropItems[3] = stream.ReadUInt32().FromEndian(endian); // 39 DropChances = new uint[4]; DropChances[0] = stream.ReadUInt32().FromEndian(endian); // 40 DropChances[1] = stream.ReadUInt32().FromEndian(endian); // 41 DropChances[2] = stream.ReadUInt32().FromEndian(endian); // 42 DropChances[3] = stream.ReadUInt32().FromEndian(endian); // 43 StealItem = stream.ReadUInt32().FromEndian(endian); // 44 StealChance = stream.ReadUInt32().FromEndian(endian); // 45 FatalTypeExp = stream.ReadUInt32().FromEndian(endian); // 46 EXPModifier = stream.ReadUInt32().FromEndian(endian); // 47 FatalTypeLP = stream.ReadUInt32().FromEndian(endian); // 48 LPModifier = stream.ReadUInt32().FromEndian(endian); // 49 FatalTypeDrop = stream.ReadUInt32().FromEndian(endian); // 50 DropModifier = new uint[4]; DropModifier[0] = stream.ReadUInt32().FromEndian(endian); // 51 DropModifier[1] = stream.ReadUInt32().FromEndian(endian); // 52 DropModifier[2] = stream.ReadUInt32().FromEndian(endian); // 53 DropModifier[3] = stream.ReadUInt32().FromEndian(endian); // 54 ulong ref55 = stream.ReadUInt(bits, endian); // 55 KillableWithFS = stream.ReadUInt32().FromEndian(endian); // 56 IconID = stream.ReadUInt32().FromEndian(endian); // 57 ulong ref58 = stream.ReadUInt(bits, endian); // 58 InMonsterBook = stream.ReadUInt32().FromEndian(endian); // 59 Location = stream.ReadUInt32().FromEndian(endian); // 60 // -1: None shown, 0: Sun, 1: Rain, 2: Snow, 3: Windy, 4: Night, 5: Cloudy LocationWeather = (int)stream.ReadUInt32().FromEndian(endian); // 61 stream.ReadUInt32().FromEndian(endian); // 62 stream.ReadUInt32().FromEndian(endian); // 63 stream.ReadUInt32().FromEndian(endian); // 64 stream.ReadUInt32().FromEndian(endian); // 65 stream.ReadUInt32().FromEndian(endian); // 66 stream.ReadUInt32().FromEndian(endian); // 67 SecretMissionDrop = stream.ReadUInt32().FromEndian(endian); // 68 SecretMissionDropChance = stream.ReadUInt32().FromEndian(endian); // 69 long bytesleft = (pos + entryLength) - stream.Position; if (bytesleft > 0) { stream.DiscardBytes((uint)bytesleft); } RefString = stream.ReadAsciiNulltermFromLocationAndReset((long)(refStringStart + ref6)); RefString2 = stream.ReadAsciiNulltermFromLocationAndReset((long)(refStringStart + ref3)); RefString3 = stream.ReadAsciiNulltermFromLocationAndReset((long)(refStringStart + ref4)); RefString4 = stream.ReadAsciiNulltermFromLocationAndReset((long)(refStringStart + ref55)); RefString5 = stream.ReadAsciiNulltermFromLocationAndReset((long)(refStringStart + ref58)); }