private void DiskViewForm_Activated(object sender, EventArgs e) { DiskViewForm form = (DiskViewForm)this.ActiveMdiChild; IDiskImage di = form.DiskFormat.DiskImage; this.UpdateMenu(); }
public RSDosFormat(IDiskImage diskImage) { this.DiskImage = diskImage; byte[] sector = this.DiskImage.ReadSector(17, 0, 17); int e = 0; for (int i = 0; i < sector.Length; i++) { if (sector[i] == 0 || sector[i] == 0xff) { e = i; break; } } if (e > 0) { this.BaseDiskLabel = Encoding.ASCII.GetString(sector.Subset(0, e)).Trim(); } this.LogicalTracks = 35; this.LogicalHeads = 1; this.LogicalSectors = 18; this.LogicalSectorSize = 256; if (!(this.DiskImage.IsPartitioned)) { this.LogicalTracks = this.DiskImage.PhysicalTracks; this.LogicalHeads = this.DiskImage.PhysicalHeads; this.LogicalSectors = this.DiskImage.PhysicalSectors; this.LogicalSectorSize = this.DiskImage.PhysicalSectorSize; } }
/// <summary> /// Initializes a new instance of the <see cref="RSDOSFormat"/> class /// to create a new logical disk with specific parameters. /// </summary> /// <param name="diskImage">Underlying virtual disk image class</param> /// <param name="tracks">Cylinders per side</param> /// <param name="heads">Number of sides</param> /// <param name="sectors">Sectors per track</param> /// <param name="sectorSize">Size of sectors in bytes</param> public RSDOSFormat(IDiskImage diskImage, int tracks, int heads, int sectors, int sectorSize) { this.DiskImage = diskImage; this.BaseDiskLabel = string.Empty; this.LogicalTracks = tracks; this.LogicalHeads = heads; this.LogicalSectors = sectors; this.LogicalSectorSize = sectorSize; this.FormatDisk(); }
/// <summary> /// Initializes a new instance of the <see cref="DragonDosFormat"/> class /// to create a new logical disk with specific parameters. /// </summary> /// <param name="diskImage">Underlying virtual disk image class</param> /// <param name="tracks">Cylinders per side</param> /// <param name="heads">Number of sides</param> /// <param name="sectors">Sectors per track</param> /// <param name="sectorSize">Size of sectors in bytes</param> public DragonDosFormat(IDiskImage diskImage, int tracks, int heads, int sectors, int sectorSize) { this.DiskImage = diskImage; this.LogicalTracks = tracks; this.LogicalHeads = heads; this.LogicalSectors = sectors; this.LogicalSectorSize = sectorSize; this.FormatDisk(); this.ValidateDragonDos(); }
public Ultima1Data(IDiskImage image = null) { if (image == null) { m_diskImage = new DiskImage(); } else { m_diskImage = image; } NumberOfCharacters = 0; Characters = new Ultima1CharacterData[4]; //for (int i = 0; i < 4; ++i) Characters[0] = new Ultima1CharacterData(); }
public DragonDosFormat(IDiskImage diskImage) { this.DiskImage = diskImage; this.LogicalTracks = 40; this.LogicalHeads = 1; this.LogicalSectors = 18; this.LogicalSectorSize = 256; if (!(this.DiskImage.IsPartitioned)) { this.LogicalTracks = DiskImage.PhysicalTracks; this.LogicalHeads = DiskImage.PhysicalHeads; this.LogicalSectors = DiskImage.PhysicalSectors; this.LogicalSectorSize = DiskImage.PhysicalSectorSize; } this.ValidateDragonDos(); }
public SectorEditor(IDiskImage Disk) { InitializeComponent(); this.toolStrip.Renderer.RenderToolStripBorder += new ToolStripRenderEventHandler(Renderer_RenderToolStripBorder); disk = Disk; data = Disk.ReadSector((int)numTrack.Value, (int)numSide.Value, (int)numSector.Value); FixedLengthByteProvider dbp = new FixedLengthByteProvider(data); dbp.Changed += new EventHandler(dbp_Changed); hexBox1.ByteProvider = dbp; //hexBox1.ReadOnly = true; numTrack.Maximum = disk.PhysicalTracks - 1; numSide.Maximum = disk.PhysicalHeads - 1; numSector.Maximum = disk.PhysicalSectors; Init(); hexBox1.MouseWheel += hexBox1_MouseWheel; }
/// <summary> /// Update menu when a DiskViewForm is activated /// </summary> /// <param name="sender">Sending object</param> /// <param name="e">Event Arguments</param> private void DiskViewForm_Activated(object sender, EventArgs e) { DiskViewForm form = (DiskViewForm)this.ActiveMdiChild; IDiskImage di = form.DiskFormat.DiskImage; if (di.IsPartitioned) { this.selectRGBDOSDriveToolStripMenuItem = form.PartitionItems; this.selectRGBDOSDriveToolStripMenuItem.Enabled = true; this.gotoRGBDOSDriveToolStripMenuItem.Enabled = true; } else { this.selectRGBDOSDriveToolStripMenuItem.Enabled = false; this.gotoRGBDOSDriveToolStripMenuItem.Enabled = false; } this.UpdateMenu(); }
/// <summary> /// Initializes a new instance of the <see cref="OS9Format"/> class. /// </summary> /// <param name="diskImage">Underlying virtual disk image class</param> public OS9Format(IDiskImage diskImage) { this.DiskImage = diskImage; this.ValidateOS9(); this.BaseDiskLabel = this.lsn0.VolumeName; }
internal void OpenDiskView(string filename) { IDiskImage diskimage = null; IDiskFormat diskformat = null; if (!File.Exists(filename)) { this.mruManager.Remove(filename); return; } switch (Path.GetExtension(filename).ToUpper()) { case ".OS9": diskimage = new RAWImage(filename); break; case ".JVC": diskimage = new JVCImage(filename); break; case ".VDK": diskimage = new VDKImage(filename); break; case ".DMK": diskimage = new DMKImage(filename); break; case ".VHD": diskimage = new VHDImage(filename); break; case ".DSK": diskimage = new JVCImage(filename); if (!diskimage.IsValidImage) { diskimage.Close(); diskimage = new DMKImage(filename); } break; } if (diskimage == null || !diskimage.IsValidImage) { diskimage.Close(); this.mruManager.Remove(filename); MessageBox.Show(string.Format(resourceManager.GetString("MainForm_NotValidDiskImage", cultureInfo), filename), resourceManager.GetString("MainForm_NotValidDiskImageCaption", cultureInfo), MessageBoxButtons.OK, MessageBoxIcon.Error); } diskimage.SetPartition(0); diskformat = new OS9Format(diskimage); if (diskformat == null || !diskformat.IsValidFormat) { diskformat = new DragonDosFormat(diskimage); if (diskformat == null || !diskformat.IsValidFormat) { diskformat = new RSDosFormat(diskimage); } } if (!diskformat.IsValidFormat || !diskimage.IsValidImage) { diskformat = null; diskimage.Close(); } else { DiskViewForm diskviewform = new DiskViewForm(diskformat); diskviewform.Text = string.Format("EMUDisk - {0}", diskimage.Filename); diskviewform.MdiParent = this; diskviewform.Activated += new EventHandler(this.DiskViewForm_Activated); diskviewform.Disposed += new EventHandler(this.DiskViewForm_Disposed); diskviewform.Show(); this.mruManager.Add(filename); } }
public OS9Format(IDiskImage diskImage) { this.DiskImage = diskImage; this.ValidateOS9(); this.BaseDiskLabel = this.lsn0.DD_NAM; }
public void Save(IDiskImage di) { if (RawData == null) { throw new InvalidOperationException("Cannot save a file without loading one first."); } RawData[SexOffset] = (byte)Sex; RawData[ClassOffset] = (byte)Class; RawData[RaceOffset] = (byte)Race; RawData[HitPointsOffset] = (byte)(HitPoints & 0x00ff); RawData[HitPointsOffset + 1] = (byte)(HitPoints >> 8); RawData[ExperienceOffset] = (byte)(Experience & 0x00ff); RawData[ExperienceOffset + 1] = (byte)(Experience >> 8); RawData[StrengthOffset] = (byte)Strength; RawData[AgilityOffset] = (byte)Agility; RawData[StaminaOffset] = (byte)Stamina; RawData[CharismaOffset] = (byte)Charisma; RawData[WisdomOffset] = (byte)Wisdom; RawData[IntelligenceOffset] = (byte)Intelligence; for (int i = 0; i < 10; ++i) { RawData[SpellsOffset + i] = (byte)Spells[i]; } for (int i = 0; i < 5; ++i) { RawData[ArmorOffset + i] = (byte)Armor[i]; } for (int i = 0; i < 15; ++i) { RawData[WeaponsOffset + i] = (byte)Weapons[i]; } RawData[FoodOffset] = (byte)(Food & 0x00ff); RawData[FoodOffset + 1] = (byte)(Food >> 8); RawData[CoinsOffset] = (byte)(Coins & 0x00ff); RawData[CoinsOffset + 1] = (byte)(Coins >> 8); for (int i = 0; i < 4; ++i) { RawData[GemsOffset + i] = (byte)Gems[i]; } RawData[EnemyShipsOffset] = (byte)EnemyShips; RawData[LocationOffset] = (byte)Location.X; RawData[LocationOffset + 1] = (byte)Location.Y; IImageFile image = di.Open("P" + RosterId, C64FileType.PRG, "wb"); if (image == null) { throw new System.IO.FileLoadException("Cannot open save file 'P" + RosterId + ".PRG' for write."); } int len = image.Write(RawData, RawData.Length); if (len != RawData.Length) { throw new System.IO.IOException("There was an error writing file 'P" + RosterId + ".PRG'."); } image.Close(); }
public void Load(IDiskImage di, int rosterNumber) { byte[] buffer = new byte[200000]; // they seem to be 460 bytes, but screw it better safe than sorry. IImageFile image = di.Open("P" + rosterNumber, C64FileType.PRG, "rb"); if (image == null) { throw new System.IO.FileLoadException("Cannot open save file 'P" + RosterId + ".PRG' for read."); } int len = image.Read(buffer, buffer.Length); RawData = new byte[len]; Buffer.BlockCopy(buffer, 0, RawData, 0, len); image.Close(); RosterId = rosterNumber; m_name = ProcessName(); Sex = (U1Sex)RawData[SexOffset]; Class = (U1Class)RawData[ClassOffset]; Race = (U1Race)RawData[RaceOffset]; HitPoints = RawData[HitPointsOffset] | (RawData[HitPointsOffset + 1] << 8); Experience = RawData[ExperienceOffset] | (RawData[ExperienceOffset + 1] << 8); Strength = RawData[StrengthOffset]; Agility = RawData[AgilityOffset]; Stamina = RawData[StaminaOffset]; Charisma = RawData[CharismaOffset]; Wisdom = RawData[WisdomOffset]; Intelligence = RawData[IntelligenceOffset]; for (int i = 0; i < 10; ++i) { Spells[i] = RawData[SpellsOffset + i]; } for (int i = 0; i < 5; ++i) { Armor[i] = RawData[ArmorOffset + i]; } for (int i = 0; i < 15; ++i) { Weapons[i] = RawData[WeaponsOffset + i]; } Food = RawData[FoodOffset] | (RawData[FoodOffset + 1] << 8); Coins = RawData[CoinsOffset] | (RawData[CoinsOffset + 1] << 8); for (int i = 0; i < 4; ++i) { Gems[i] = RawData[GemsOffset + i]; } for (int i = 0; i < 6; ++i) { m_transportation[i] = RawData[TransportationOffset + i]; } m_transportation[6] = RawData[TimeMachineOffset]; EnemyShips = RawData[EnemyShipsOffset]; Location.X = RawData[LocationOffset]; Location.Y = RawData[LocationOffset + 1]; }
/// <summary> /// Open virtual disk and display it in a DiskViewForm instance /// </summary> /// <param name="filename">Filename to open</param> internal void OpenDiskView(string filename) { IDiskImage diskimage = null; IDiskFormat diskformat = null; if (!File.Exists(filename)) { this.mruManager.Remove(filename); return; } switch (Path.GetExtension(filename).ToUpper()) { case ".OS9": diskimage = new OS9Image(filename); break; case ".JVC": diskimage = new JVCImage(filename); break; case ".VDK": diskimage = new VDKImage(filename); break; case ".DMK": diskimage = new DMKImage(filename); break; case ".VHD": diskimage = new VHDImage(filename); if (!diskimage.IsValidImage) { diskimage = new PartitionedVHDImage(filename); } break; case ".DSK": diskimage = new JVCImage(filename); if (!diskimage.IsValidImage) { diskimage = new DMKImage(filename); } break; } if (diskimage == null || !diskimage.IsValidImage) { this.mruManager.Remove(filename); MessageBox.Show(string.Format(resourceManager.GetString("MainForm_NotValidDiskImage", cultureInfo), filename), resourceManager.GetString("MainForm_NotValidDiskImageCaption", cultureInfo), MessageBoxButtons.OK, MessageBoxIcon.Error); } else { if (diskimage.IsPartitioned) { ComponentResourceManager resources = new ComponentResourceManager(typeof(MainForm)); PartitionedVHDImage pi = (PartitionedVHDImage)diskimage; Cursor cursor = this.Cursor; this.Cursor = Cursors.WaitCursor; this.selectRGBDOSDriveToolStripMenuItem.DropDownItems.Clear(); ToolStripMenuItem tsi; int i = 0; if (diskimage.ImagePartitionOffset != 0) { tsi = new ToolStripMenuItem(); tsi.Name = "0"; tsi.Text = "OS9 Drive"; tsi.Size = new System.Drawing.Size(152, 22); tsi.CheckOnClick = true; tsi.Click += new EventHandler(this.SelectRGBDOSDrive_Click); tsi.Image = (System.Drawing.Image)resources.GetObject("OS9.image"); diskformat = new OS9Format(diskimage); if (diskformat != null && diskformat.IsValidFormat && !string.IsNullOrEmpty(diskformat.DiskLabel)) { tsi.Text = diskformat.DiskLabel; } this.selectRGBDOSDriveToolStripMenuItem.DropDownItems.Add(tsi); i++; } for (int j = 0; i < diskimage.Partitions; j++, i++) { tsi = new ToolStripMenuItem(); tsi.Name = i.ToString(); tsi.Text = string.Format("RGBDOS Drive {0}", j); tsi.Size = new System.Drawing.Size(152, 22); tsi.CheckOnClick = true; tsi.Click += new EventHandler(this.SelectRGBDOSDrive_Click); if (i == 0) { tsi.Checked = true; } pi.CurrentPartition = i; diskformat = new OS9Format(pi); tsi.Image = (System.Drawing.Image)resources.GetObject("OS9.image"); if (!diskformat.IsValidFormat) { diskformat = new DragonDosFormat(pi); tsi.Image = (System.Drawing.Image)resources.GetObject("DragonDos.image"); if (!diskformat.IsValidFormat) { diskformat = new RSDOSFormat(pi); tsi.Image = (System.Drawing.Image)resources.GetObject("RSDOS.image"); } } if (diskformat != null && diskformat.IsValidFormat && !string.IsNullOrEmpty(diskformat.DiskLabel)) { tsi.Text = diskformat.DiskLabel; } this.selectRGBDOSDriveToolStripMenuItem.DropDownItems.Add(tsi); } pi.CurrentPartition = 0; ((ToolStripMenuItem)this.selectRGBDOSDriveToolStripMenuItem.DropDownItems[0]).Checked = true; this.selectRGBDOSDriveToolStripMenuItem.Enabled = true; this.gotoRGBDOSDriveToolStripMenuItem.Enabled = true; this.Cursor = cursor; } else { this.selectRGBDOSDriveToolStripMenuItem.Enabled = false; this.gotoRGBDOSDriveToolStripMenuItem.Enabled = false; } } diskformat = new OS9Format(diskimage); if (diskformat == null || !diskformat.IsValidFormat) { diskformat = new DragonDosFormat(diskimage); if (diskformat == null || !diskformat.IsValidFormat) { diskformat = new RSDOSFormat(diskimage); } } if (!diskformat.IsValidFormat && !diskimage.IsPartitioned) { DialogResult dr = MessageBox.Show(resourceManager.GetString("MainForm_disknotformatted", cultureInfo), resourceManager.GetString("MainForm_formatnotrecognized", cultureInfo), MessageBoxButtons.YesNo, MessageBoxIcon.Error); if (dr == System.Windows.Forms.DialogResult.Yes) { // FormatWizardForm form = new FormatWizardForm(false, true); // form.Filename = diskimage.Filename; // form.Tracks = diskimage.PhysicalTracks; // form.Heads = diskimage.PhysicalHeads; // form.Sectors = diskimage.PhysicalSectors; // form.SectorSize = diskimage.PhysicalSectorSize; // form.Partitions = diskimage.Partitions; // form.RootPartitionSize = diskimage.ImagePartitionOffset; // form.DiskImageType = diskimage.ImageType; // dr = form.ShowDialog(); FormatForm form = new FormatForm(); form.Label1 = resourceManager.GetString("FormatForm_formatdisk", cultureInfo); dr = form.ShowDialog(); if (dr == System.Windows.Forms.DialogResult.Cancel) { return; } else { if (form.OS9) { diskformat = new OS9Format(diskimage); diskformat.FormatDisk(); } else if (form.RSDOS) { diskformat = new RSDOSFormat(diskimage); diskformat.FormatDisk(); } else if (form.DragonDos) { diskformat = new DragonDosFormat(diskimage); diskformat.FormatDisk(); } } } } else if (!diskformat.IsValidFormat && diskimage.IsPartitioned) { DialogResult dr = MessageBox.Show(resourceManager.GetString("MainForm_partitionnotformatted", cultureInfo), resourceManager.GetString("MainForm_formatnotrecognized", cultureInfo), MessageBoxButtons.YesNo, MessageBoxIcon.Error); if (dr == System.Windows.Forms.DialogResult.Yes) { FormatForm form = new FormatForm(); form.Label1 = resourceManager.GetString("FormatForm_formatpartition", cultureInfo); dr = form.ShowDialog(); if (dr == System.Windows.Forms.DialogResult.Cancel) { return; } else { if (form.OS9) { diskformat = new OS9Format(diskimage); diskformat.FormatDisk(); } else if (form.RSDOS) { diskformat = new RSDOSFormat(diskimage); diskformat.FormatDisk(); } else if (form.DragonDos) { diskformat = new DragonDosFormat(diskimage); diskformat.FormatDisk(); } } } } DiskViewForm diskviewform = new DiskViewForm(diskformat); diskviewform.Text = string.Format("EMUDisk - {0}", diskimage.Filename); diskviewform.MdiParent = this; diskviewform.Activated += new EventHandler(this.DiskViewForm_Activated); diskviewform.Disposed += new EventHandler(this.DiskViewForm_Disposed); diskviewform.PartitionItems = this.selectRGBDOSDriveToolStripMenuItem; diskviewform.Show(); this.mruManager.Add(filename); }