コード例 #1
0
        async void skydriveList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ImportFileItem item = this.skydriveList.SelectedItem as ImportFileItem;

            if (item == null)
            {
                return;
            }

            ROMDatabase db = ROMDatabase.Current;


            if (item.Type == SkyDriveItemType.ROM)
            {
                if (item.Stream != null)
                {
                    await SkyDriveImportPage.ImportROM(item, this);
                }
            }

            else if (item.Type == SkyDriveItemType.Savestate || item.Type == SkyDriveItemType.SRAM)
            {
                //check to make sure there is a rom with matching name
                ROMDBEntry entry = null;

                if (item.Type == SkyDriveItemType.Savestate)  //save state
                {
                    entry = db.GetROMFromSavestateName(item.Name);
                }
                else if (item.Type == SkyDriveItemType.SRAM) //sram
                {
                    entry = db.GetROMFromSRAMName(item.Name);
                }

                if (entry == null) //no matching file name
                {
                    MessageBox.Show(AppResources.NoMatchingNameText, AppResources.ErrorCaption, MessageBoxButton.OK);
                    return;
                }

                //check to make sure format is right
                if (item.Type == SkyDriveItemType.Savestate)  //save state
                {
                    string slot       = item.Name.Substring(item.Name.Length - 5, 1);
                    int    parsedSlot = 0;
                    if (!int.TryParse(slot, out parsedSlot))
                    {
                        MessageBox.Show(AppResources.ImportSavestateInvalidFormat, AppResources.ErrorCaption, MessageBoxButton.OK);
                        return;
                    }
                }



                if (item.Stream != null)
                {
                    await SkyDriveImportPage.ImportSave(item, this);
                }
            }
        }
コード例 #2
0
ファイル: FileHandler.cs プロジェクト: brenopolanski/snes8x
        public static async Task FindExistingSavestatesForNewROM(ROMDBEntry entry)
        {
            ROMDatabase   db          = ROMDatabase.Current;
            StorageFolder localFolder = ApplicationData.Current.LocalFolder;
            StorageFolder romFolder   = await localFolder.GetFolderAsync(ROM_DIRECTORY);

            StorageFolder saveFolder = await romFolder.GetFolderAsync(SAVE_DIRECTORY);

            IReadOnlyList <StorageFile> saves = await saveFolder.GetFilesAsync();

            // Savestates zuordnen
            foreach (var save in saves)
            {
                if (save.Name.Substring(0, save.Name.Length - 2).Equals(entry.DisplayName + ".0"))
                {
                    // Savestate gehoert zu ROM
                    String         number  = save.Name.Substring(save.Name.Length - 2);
                    int            slot    = int.Parse(number);
                    SavestateEntry ssEntry = new SavestateEntry()
                    {
                        ROM      = entry,
                        Savetime = save.DateCreated.DateTime,
                        Slot     = slot,
                        FileName = save.Name
                    };
                    db.Add(ssEntry);
                }
            }
        }
コード例 #3
0
ファイル: FileHandler.cs プロジェクト: brenopolanski/snes8x
        private static void createSavestate(int slot, string romFileName)
        {
            ROMDatabase db           = ROMDatabase.Current;
            string      saveFileName = romFileName.Substring(0, romFileName.Length - 3);

            if (slot < 10)
            {
                saveFileName += "00" + slot;
            }
            else
            {
                saveFileName += "0" + slot;
            }
            SavestateEntry entry;

            if ((entry = db.GetSavestate(romFileName, slot)) == null)
            {
                ROMDBEntry rom = db.GetROM(romFileName);
                entry = new SavestateEntry()
                {
                    ROM         = rom,
                    FileName    = saveFileName,
                    ROMFileName = romFileName,
                    Savetime    = DateTime.Now,
                    Slot        = slot
                };
                db.Add(entry);
            }
            else
            {
                entry.Savetime = DateTime.Now;
            }
            db.CommitChanges();
        }
コード例 #4
0
        public ManageSavestatePage()
        {
            InitializeComponent();

            //create ad control
            if (PhoneDirect3DXamlAppComponent.EmulatorSettings.Current.ShouldShowAds)
            {
                AdControl adControl = new AdControl();
                ((Grid)(LayoutRoot.Children[0])).Children.Add(adControl);
                adControl.SetValue(Grid.RowProperty, 2);
            }


            db = ROMDatabase.Current;

            object tmp;

            PhoneApplicationService.Current.State.TryGetValue("parameter", out tmp);
            this.romEntry = tmp as ROMDBEntry;
            PhoneApplicationService.Current.State.Remove("parameter");

            titleLabel.Text = this.romEntry.DisplayName;

            CreateAppBar();

            var savestates = db.GetSavestatesForROM(this.romEntry);

            this.stateList.ItemsSource = savestates;
        }
コード例 #5
0
ファイル: FileHandler.cs プロジェクト: duchuule/snes8x
        private static void captureSnapshot(ushort[] pixeldata, int pitch, string filename)
        {
            WriteableBitmap bitmap = new WriteableBitmap(pitch / 2, (int)pixeldata.Length / (pitch / 2));
            int             x      = 0;
            int             y      = 0;

            for (int i = 0; i < bitmap.PixelWidth * bitmap.PixelHeight; i++)
            {
                ushort pixel = pixeldata[i];
                byte   r     = (byte)((pixel & 0xf800) >> 11);
                byte   g     = (byte)((pixel & 0x07e0) >> 5);
                byte   b     = (byte)(pixel & 0x001f);
                r = (byte)((255 * r) / 31);
                g = (byte)((255 * g) / 63);
                b = (byte)((255 * b) / 31);
                bitmap.SetPixel(x, y, r, g, b);
                x++;
                if (x >= bitmap.PixelWidth)
                {
                    y++;
                    x = 0;
                }
            }
            String snapshotName = filename.Substring(0, filename.Length - 3) + "jpg";

            //StorageFolder folder = await ApplicationData.Current.LocalFolder.GetFolderAsync(ROM_DIRECTORY);
            ////StorageFolder saveFolder = await folder.GetFolderAsync(SAVE_DIRECTORY);
            //StorageFolder shared = await folder.GetFolderAsync("Shared");
            //StorageFolder shellContent = await shared.GetFolderAsync("ShellContent");
            //StorageFile file = await shellContent.CreateFileAsync(snapshotName, CreationCollisionOption.ReplaceExisting);

            try
            {
                IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
                using (IsolatedStorageFileStream fs = new IsolatedStorageFileStream("/Shared/ShellContent/" + snapshotName, System.IO.FileMode.Create, iso))
                {
                    bitmap.SaveJpeg(fs, bitmap.PixelWidth, bitmap.PixelHeight, 0, 90);
                    //await fs.FlushAsync();
                    fs.Flush(true);
                }
                ROMDatabase db    = ROMDatabase.Current;
                ROMDBEntry  entry = db.GetROM(filename);
                entry.SnapshotURI = "Shared/ShellContent/" + snapshotName;
                db.CommitChanges();

                UpdateLiveTile();

                CreateOrUpdateSecondaryTile(false);

                UpdateROMTile(filename);
            }
            catch (Exception)
            {
            }
        }
コード例 #6
0
ファイル: FileHandler.cs プロジェクト: brenopolanski/snes8x
        public static async Task DeleteROMAsync(ROMDBEntry rom)
        {
            ROMDatabase   db       = ROMDatabase.Current;
            String        fileName = rom.FileName;
            StorageFolder folder   = await ApplicationData.Current.LocalFolder.GetFolderAsync(ROM_DIRECTORY);

            StorageFile file = await folder.GetFileAsync(fileName);

            DeleteROMTile(file.Name);
            await file.DeleteAsync(StorageDeleteOption.PermanentDelete);

            db.RemoveROM(file.Name);
            db.CommitChanges();
        }
コード例 #7
0
ファイル: FileHandler.cs プロジェクト: brenopolanski/snes8x
        public static ROMDBEntry InsertNewDBEntry(string fileName)
        {
            ROMDatabase db          = ROMDatabase.Current;
            string      displayName = fileName.Substring(0, fileName.Length - 4);
            ROMDBEntry  entry       = new ROMDBEntry()
            {
                DisplayName = displayName,
                FileName    = fileName,
                LastPlayed  = DEFAULT_DATETIME,
                SnapshotURI = DEFAULT_SNAPSHOT
            };

            db.Add(entry);
            return(entry);
        }
コード例 #8
0
ファイル: FileHandler.cs プロジェクト: brenopolanski/vba8
        public static void UpdateLiveTile()
        {
            ROMDatabase   db   = ROMDatabase.Current;
            ShellTile     tile = ShellTile.ActiveTiles.FirstOrDefault();
            CycleTileData data = new CycleTileData();

#if !GBC
            data.Title = AppResources.ApplicationTitle;
#else
            data.Title = AppResources.ApplicationTitle2;
#endif
            IEnumerable <String> snapshots = db.GetRecentSnapshotList();
            List <Uri>           uris      = new List <Uri>(snapshots.Count());
            if (snapshots.Count() == 0)
            {
                for (int i = 0; i < 9; i++)
                {
#if !GBC
                    uris.Add(new Uri("Assets/Tiles/tileIconLarge.png", UriKind.Relative));
#else
                    uris.Add(new Uri("Assets/Tiles/tileIconLargeGBC.png", UriKind.Relative));
#endif
                }
            }
            else
            {
                int x = 0;
                for (int j = 0; j <= (3 - snapshots.Count()); j++)
                {
                    for (int i = 0; i < 3; i++)
                    {
                        foreach (var snapshot in snapshots)
                        {
                            uris.Add(new Uri("isostore:/" + snapshot, UriKind.Absolute));
                            x++;
                            if (x >= 9)
                            {
                                i = j = 3;
                                break;
                            }
                        }
                    }
                }
            }
            data.CycleImages = uris;

            tile.Update(data);
        }
コード例 #9
0
        protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
        {
            if (initialized && this.m_d3dBackground.IsROMLoaded())
            {
                this.m_d3dBackground.PauseEmulation();
            }
            ROMDatabase db    = ROMDatabase.Current;
            var         entry = db.GetROM(this.m_d3dBackground.LoadadROMFile.Name);

            if (entry != null)
            {
                entry.LastPlayed = DateTime.Now;
                db.CommitChanges();
            }
            base.OnNavigatingFrom(e);
        }
コード例 #10
0
        private async Task Initialize()
        {
            createFolderTask = FileHandler.CreateInitialFolderStructure();
            copyDemoTask     = this.CopyDemoROM();

            await createFolderTask;
            await copyDemoTask;

            this.db = ROMDatabase.Current;
            if (db.Initialize())
            {
                await FileHandler.FillDatabaseAsync();
            }
            this.db.Commit += () =>
            {
            };
        }
コード例 #11
0
        public ManageSavestatePage()
        {
            InitializeComponent();


            db = ROMDatabase.Current;

            object tmp;

            PhoneApplicationService.Current.State.TryGetValue("parameter", out tmp);
            this.romEntry = tmp as ROMDBEntry;
            PhoneApplicationService.Current.State.Remove("parameter");

            titleLabel.Text = this.romEntry.DisplayName;

            CreateAppBar();

            var savestates = db.GetSavestatesForROM(this.romEntry);

            this.stateList.ItemsSource = savestates;
        }
コード例 #12
0
ファイル: FileHandler.cs プロジェクト: brenopolanski/snes8x
        internal static async Task <ROMDBEntry> ImportRomBySharedID(string importRomID)
        {
            ROMDatabase db       = ROMDatabase.Current;
            string      filename = SharedStorageAccessManager.GetSharedFileName(importRomID);

            ROMDBEntry entry = db.GetROM(filename);

            StorageFolder localFolder = ApplicationData.Current.LocalFolder;
            StorageFolder romFolder   = await localFolder.GetFolderAsync(ROM_DIRECTORY);

            IStorageFile file = await SharedStorageAccessManager.CopySharedFileAsync(romFolder, filename, NameCollisionOption.ReplaceExisting, importRomID);

            if (entry == null)
            {
                entry = FileHandler.InsertNewDBEntry(filename);
                await FileHandler.FindExistingSavestatesForNewROM(entry);

                db.CommitChanges();
            }

            return(entry);
        }