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); } } }
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); } } }
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(); }
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; }
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) { } }
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(); }
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); }
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); }
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); }
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 += () => { }; }
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; }
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); }