Example #1
0
        static Database()
        {
            var dbFile = Path.GetFullPath(Path.Combine(Settings.ConfigDirectory, "mapleseed.db"));

            if (LiteDatabase == null)
            {
                DbFileStream       = Helper.FileOpenStream(dbFile);
                LiteDatabase       = new LiteDatabase(DbFileStream);
                SettingsCollection = LiteDatabase.GetCollection <Config>("Settings");
            }

            if (GraphicPacks == null)
            {
                GraphicPacks = new GraphicPackDatabase(LiteDatabase);
            }

            WiiuTitleDatabase.Load();

            DownloadManager = new DownloadManager(WiiuClient.DownloadTitleTask);

            Task.Run(async() =>
            {
                while (DatabaseLoaded == null || DatabaseCount < MaxDatabaseCount)
                {
                    await Task.Delay(250);
                }

                DatabaseLoaded?.Invoke(new object[] { GraphicPacks }, EventArgs.Empty);
            });
        }
Example #2
0
        static Database()
        {
            if (string.IsNullOrEmpty(DatabaseFileLocation))
            {
                DatabaseFileLocation = Helper.FullPath(Settings.ConfigDirectory, "mapleseed.db");
            }

            InitializeDatabase();

            VersionCheck();

            WiiuTitleDatabase.Load();

            if (GraphicPacks == null)
            {
                GraphicPacks = new GraphicPackDatabase(LiteDatabase);
            }

            if (DownloadManager == null)
            {
                DownloadManager = new DownloadManager(WiiuClient.DownloadTitleTask);
            }

            Task.Run(async() =>
            {
                while (DatabaseLoaded == null || DatabaseCount < MaxDatabaseCount)
                {
                    await Task.Delay(250);
                }

                DatabaseLoaded?.Invoke(new object[] { GraphicPacks }, EventArgs.Empty);
            });
        }
Example #3
0
        /// <summary>
        ///     Creates a blank ticket using the referenced title
        /// </summary>
        /// <param name="title">The title</param>
        /// <returns></returns>
        public static byte[] Create(TitleKey title)
        {
            if (string.IsNullOrEmpty(title.titleID))
            {
                return(null);
            }

            var tiktem =
                ("00010004d15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11a" +
                 "d15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed" +
                 "15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11a" +
                 "d15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed" +
                 "15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11a" +
                 "d15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed" +
                 "15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11ad15ea5ed15abe11a" +
                 "d15ea5ed15abe11a00000000000000000000000000000000000000000000000000000000" +
                 "0000000000000000000000000000000000000000000000000000000000000000526f6f74" +
                 "2d434130303030303030332d585330303030303030630000000000000000000000000000" +
                 "000000000000000000000000000000000000000000000000feedfacefeedfacefeedface" +
                 "feedfacefeedfacefeedfacefeedfacefeedfacefeedfacefeedfacefeedfacefeedface" +
                 "feedfacefeedfacefeedface010000cccccccccccccccccccccccccccccccc0000000000" +
                 "0000000000000000aaaaaaaaaaaaaaaa0000000000000000000000000000000000000000" +
                 "000000000000000000000000000000000000000000000000000000000000000000000000" +
                 "000000000001000000000000000000000000000000000000000000000000000000000000" +
                 "000000000000000000000000000000000000000000000000000000000000000000000000" +
                 "000000000000000000000000000000000000000000000000000000000000000000000000" +
                 "0000000000000000000000000000000000000000000000000000000000010014000000ac" +
                 "000000140001001400000000000000280000000100000084000000840003000000000000" +
                 "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000" +
                 "000000000000000000000000000000000000000000000000000000000000000000000000" +
                 "000000000000000000000000000000000000000000000000000000000000000000000000" +
                 "0000000000000000000000000000000000000000").HexToBytes();

            var tikdata = new List <byte>(tiktem);

            switch (title.ContentType)
            {
            case "DLC":
                PatchDlc(ref tikdata);
                break;

            case "Demo":
                PatchDemo(ref tikdata);
                break;
            }

            var versions = WiiuTitleDatabase.GetVersions($"00050000{title.Lower8Digits()}");

            tikdata.InsertRange(TK + 0xA6, versions[0].ToBytes());
            tikdata.InsertRange(TK + 0x9C, title.titleID.ToUpper().HexToBytes());
            tikdata.InsertRange(TK + 0x7F, title.titleKey.ToUpper().HexToBytes());

            return(tikdata.ToArray());
        }
Example #4
0
        public static Title FindTitle(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(null);
            }

            var list   = GetLibraryList();
            var titles = list.Where(x => x.ID == id.ToUpper()).ToList();

            if (!titles.Any())
            {
                titles = WiiuTitleDatabase.Find(id).ToList();
            }

            return(titles.FirstOrDefault());
        }
Example #5
0
 private static async Task <IEnumerable <Title> > GetTitles()
 {
     return(await WiiuTitleDatabase.All());
 }