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);
        }
Exemple #2
0
 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);
     }
 }
Exemple #4
0
 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);                   // ?
            }
        }