public static List <uint> GenerateRecordsStringDicList(GameVersion version) { if (!(version.Is360() || version == GameVersion.PS3 || version == GameVersion.PC)) { throw new Exception("Unknown game version for records menu: " + version); } List <uint> records = new List <uint>(); for (uint i = 33912371; i < 33912385; ++i) { if (i == 33912376) { continue; } records.Add(i); } records.Add(33912570u); for (uint i = 33912385; i < 33912392; ++i) { records.Add(i); } records.Add(33912571u); records.Add(33912572u); records.Add(33912585u); records.Add(33912586u); records.Add(33912587u); records.Add(33912588u); if (version.HasPS3Content()) { // repede snowboarding 1 - 8, team melee, 30 man per character for (uint i = 33912733; i < 33912751; ++i) { records.Add(i); } } else if (version.Is360()) { records.Add(33912621u); // 30 man melee generic } for (uint i = 33912392; i < 33912399; ++i) { records.Add(i); } if (version.HasPS3Content()) { // usage flynn, patty records.Add(33912399u); records.Add(33912400u); } return(records); }
public static Stream TryGetRecipes(string basepath, GameLocale locale, GameVersion version) { if (version.Is360()) { return(TryGetContainerFromDisk(basepath)?.FindChildByName("cook.svo")?.ToFps4()?.FindChildByName("COOKDATA.BIN")?.AsFile?.DataStream); } else { return(TryGetContainerFromDisk(basepath)?.FindChildByName("menu.svo")?.ToFps4()?.FindChildByName("COOKDATA.BIN")?.AsFile?.DataStream); } }
public static SCFOMBIN.SCFOMBIN LoadBattleTextFile(IContainer gameDataPath, string filename, GameLocale locale, GameVersion version, EndianUtils.Endianness endian, TextUtils.GameTextEncoding encoding, BitUtils.Bitness bits) { if (!version.Is360()) { uint ptrDiff = 0x1888; if (filename.StartsWith("BTL_XTM")) { ptrDiff = 0x1B4C; } var bin = new SCFOMBIN.SCFOMBIN(GenerateWebsite.TryGetBattleScenarioFile(gameDataPath, filename, locale, version), endian, encoding, ptrDiff); return(bin); } else { var bin = new ScenarioFile.ScenarioFile(GenerateWebsite.TryGetBattleScenarioFile(gameDataPath, filename, locale, version), encoding, endian, bits); var btl = new SCFOMBIN.SCFOMBIN(); btl.EntryList = bin.EntryList; return(btl); } }
public static bool HasPS3Content(this GameVersion version) { return(!version.Is360()); }
public static List <ConfigMenuSetting> GenerateSettingsStringDicList(GameVersion version) { if (!(version.Is360() || version == GameVersion.PS3 || version == GameVersion.PC)) { throw new Exception("Unknown game version for settings menu: " + version); } List <ConfigMenuSetting> settings = new List <ConfigMenuSetting>(); settings.Add(new ConfigMenuSetting(33912401u, 33912401u + 46u, 33912427u, 33912426u, 33912425u, 33912424u)); // msg speed settings.Add(new ConfigMenuSetting(33912402u, 33912402u + 46u, 33912428u, 33912429u, 33912430u, 33912431u)); // difficulty if (version != GameVersion.PS3) { settings.Add(new ConfigMenuSetting(33912403u, 33912403u + 46u, 33912438u, 33912437u)); // in 360/PS3 this is the 360 vibration string, in PC this is just the general one } else { settings.Add(new ConfigMenuSetting(33912679u, 33912681u, 33912438u, 33912437u)); // console-neutral vibration string used in ps3 version only } settings.Add(new ConfigMenuSetting(33912404u, 33912404u + 46u, 33912432u, 33912433u)); // camera controls if (version.HasPS3Content() && version != GameVersion.PC) { settings.Add(new ConfigMenuSetting(33912751u, 33912752u, 33912443u, 33912444u)); // stick/dpad controls } settings.Add(new ConfigMenuSetting(33912405u, 33912405u + 46u, 33912439u)); // button config if (version != GameVersion.PC) { settings.Add(new ConfigMenuSetting(33912406u, 33912406u + 46u, 33912436u, 33912435u, 33912434u)); // sound } if (version == GameVersion.PC) { settings.Add(new ConfigMenuSetting(33912779u, 33912780u, 33912439u)); // graphics settings } settings.Add(new ConfigMenuSetting(33912407u, 33912407u + 46u)); // bgm settings.Add(new ConfigMenuSetting(33912408u, 33912408u + 46u)); // se settings.Add(new ConfigMenuSetting(33912409u, 33912409u + 46u)); // battle se settings.Add(new ConfigMenuSetting(33912413u, 33912413u + 46u)); // battle voice settings.Add(new ConfigMenuSetting(33912414u, 33912414u + 46u)); // event voice settings.Add(new ConfigMenuSetting(33912422u, 33912422u + 46u)); // skit settings.Add(new ConfigMenuSetting(33912423u, 33912423u + 46u)); // movie if (version.HasPS3Content()) { settings.Add(new ConfigMenuSetting(33912656u, 33912657u, 33912658u, 33912659u)); // item request type } settings.Add(new ConfigMenuSetting(33912410u, 33912410u + 46u, 33912438u, 33912437u)); // engage cam settings.Add(new ConfigMenuSetting(33912411u, 33912411u + 46u, 33912438u, 33912437u)); // dynamic cam settings.Add(new ConfigMenuSetting(33912412u, 33912412u + 46u, 33912438u, 33912437u)); // field boundary settings.Add(new ConfigMenuSetting(33912415u, 33912415u + 46u, 33912438u, 33912437u)); // location names settings.Add(new ConfigMenuSetting(33912416u, 33912416u + 46u, 33912438u, 33912437u)); // skit titles settings.Add(new ConfigMenuSetting(33912417u, 33912417u + 46u, 33912438u, 33912437u)); // skit subs settings.Add(new ConfigMenuSetting(33912418u, 33912418u + 46u, 33912438u, 33912437u)); // movie subs if (version == GameVersion.PC) { settings.Add(new ConfigMenuSetting(33912881u, 33912880u, 33912438u, 33912437u)); // post-battle subs } settings.Add(new ConfigMenuSetting(33912420u, 33912420u + 46u, 33912440u, 33912441u, 33912442u)); // font if (version.Is360() || version == GameVersion.PC) { settings.Add(new ConfigMenuSetting(33912419u, 33912419u + 46u, 33912439u)); // brightness settings.Add(new ConfigMenuSetting(33912421u, 33912421u + 46u, 33912439u)); // marketplace / steam } else { settings.Add(new ConfigMenuSetting(33912713u, 33912714u, 33912439u)); // brightness & screen pos } settings.Add(new ConfigMenuSetting(33912595u, 33912596u, 33912597u)); // reset to default return(settings); }
public void PrintData(EndianUtils.Endianness endian, GameVersion version, Dictionary <uint, TSS.TSSEntry> inGameDic, FAMEDAT.FAMEDAT titles) { using (var characterDataStream = Stream.Duplicate()) { characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadAscii(0x40); // custom character name uint character = characterDataStream.ReadUInt32().FromEndian(endian); // character ID characterDataStream.ReadUInt32().FromEndian(endian); // level characterDataStream.ReadUInt32().FromEndian(endian); // current HP characterDataStream.ReadUInt32().FromEndian(endian); // current TP characterDataStream.ReadUInt32().FromEndian(endian); // max HP characterDataStream.ReadUInt32().FromEndian(endian); // max TP characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // EXP characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // base attack characterDataStream.ReadUInt32().FromEndian(endian); // base magic attack characterDataStream.ReadUInt32().FromEndian(endian); // base def characterDataStream.ReadUInt32().FromEndian(endian); // base mdef characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // base agility characterDataStream.ReadUInt32().FromEndian(endian); // luck characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // base attack attribute fire characterDataStream.ReadUInt32().FromEndian(endian); // base attack attribute earth characterDataStream.ReadUInt32().FromEndian(endian); // base attack attribute wind characterDataStream.ReadUInt32().FromEndian(endian); // base attack attribute water characterDataStream.ReadUInt32().FromEndian(endian); // base attack attribute light characterDataStream.ReadUInt32().FromEndian(endian); // base attack attribute dark characterDataStream.ReadUInt32().FromEndian(endian); // base attack attribute physical...? characterDataStream.ReadUInt32().FromEndian(endian); // base damage multiplier fire characterDataStream.ReadUInt32().FromEndian(endian); // base damage multiplier earth characterDataStream.ReadUInt32().FromEndian(endian); // base damage multiplier wind characterDataStream.ReadUInt32().FromEndian(endian); // base damage multiplier water characterDataStream.ReadUInt32().FromEndian(endian); // base damage multiplier light characterDataStream.ReadUInt32().FromEndian(endian); // base damage multiplier dark characterDataStream.ReadUInt32().FromEndian(endian); // base damage multiplier physical? characterDataStream.DiscardBytes(0xA8A60 - 0xA89F0); // ? characterDataStream.ReadUInt32().FromEndian(endian); // modified attack (base + from equipment) characterDataStream.ReadUInt32().FromEndian(endian); // mod def characterDataStream.ReadUInt32().FromEndian(endian); // mod matk characterDataStream.ReadUInt32().FromEndian(endian); // mod mdef characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // mod agility characterDataStream.ReadUInt32().FromEndian(endian); // mod luck characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // ? characterDataStream.ReadUInt32().FromEndian(endian); // mod attack attribute fire characterDataStream.ReadUInt32().FromEndian(endian); // mod attack attribute earth characterDataStream.ReadUInt32().FromEndian(endian); // mod attack attribute wind characterDataStream.ReadUInt32().FromEndian(endian); // mod attack attribute water characterDataStream.ReadUInt32().FromEndian(endian); // mod attack attribute light characterDataStream.ReadUInt32().FromEndian(endian); // mod attack attribute dark characterDataStream.ReadUInt32().FromEndian(endian); // mod attack attribute physical...? characterDataStream.ReadUInt32().FromEndian(endian); // mod damage multiplier fire characterDataStream.ReadUInt32().FromEndian(endian); // mod damage multiplier earth characterDataStream.ReadUInt32().FromEndian(endian); // mod damage multiplier wind characterDataStream.ReadUInt32().FromEndian(endian); // mod damage multiplier water characterDataStream.ReadUInt32().FromEndian(endian); // mod damage multiplier light characterDataStream.ReadUInt32().FromEndian(endian); // mod damage multiplier dark characterDataStream.ReadUInt32().FromEndian(endian); // mod damage multiplier physical? characterDataStream.DiscardBytes(0xA8E04 - 0xA8ABC); // ? characterDataStream.ReadUInt32().FromEndian(endian); // enemy kill counter (?) characterDataStream.DiscardBytes(0xAAE28 - 0xA8E08); // ? // skill equipment is stored around here characterDataStream.DiscardBytes(0xAC5B8 - 0xAAE28); // ? uint[] titlesUnlockedBitfield = characterDataStream.ReadUInt32Array(15, endian); foreach (var title in titles.TitleList) { bool haveTitle = ((titlesUnlockedBitfield[title.ID / 32] >> (int)(title.ID % 32)) & 1) > 0; if (haveTitle || ((title.BunnyGuildPointsMaybe > 0 || (!version.Is360() && title.ID == 67)) && title.Character == character)) { Console.WriteLine((haveTitle ? "Y" : "N") + ": " + inGameDic[title.NameStringDicID].StringEngOrJpn); } } characterDataStream.DiscardBytes(0xAC938 - 0xAC5F4); // ? } }