private void GenerateButton_Click(object sender, RoutedEventArgs e) { var rom = new FF1Rom(_filename); var rng = new MT19337(BitConverter.ToUInt32(_seed, 0)); if (TreasuresCheckBox.IsChecked == true) { rom.ShuffleTreasures(rng); } if (ShopsCheckBox.IsChecked == true) { rom.ShuffleShops(rng); } if (MagicShopsCheckBox.IsChecked == true) { rom.ShuffleMagicShops(rng); } if (MagicLevelsCheckBox.IsChecked == true) { rom.ShuffleMagicLevels(rng, MagicPermissionsCheckBox.IsChecked ?? false); } if (EnemyScriptsCheckBox.IsChecked == true) { rom.ShuffleEnemyScripts(rng); } if (EnemySkillsSpellsCheckBox.IsChecked == true) { rom.ShuffleEnemySkillsSpells(rng); } if (EnemyStatusAttacksCheckBox.IsChecked == true) { rom.ShuffleEnemyStatusAttacks(rng); } if (EarlyRodCheckBox.IsChecked == true) { rom.EnableEarlyRod(); } if (NoPartyShuffleCheckBox.IsChecked == true) { rom.DisablePartyShuffle(); } if (PriceScaleFactorSlider.Value > 1) { rom.ScalePrices(PriceScaleFactorSlider.Value, rng); } if (EnemyScaleFactorSlider.Value > 1) { rom.ScaleEnemyStats(EnemyScaleFactorSlider.Value, rng); } if (ExpMultiplierSlider.Value > 1 || ExpBonusSlider.Value > 0) { rom.ExpGoldBoost(ExpBonusSlider.Value*10, ExpMultiplierSlider.Value); } var seedText = _seed.ToHex(); rom.WriteSeedAndFlags(Version, seedText, FlagsTextBox.Text); var fileRoot = _filename.Substring(0, _filename.LastIndexOf(".")); var outputFilename = $"{fileRoot}_{FlagsTextBox.Text}_{seedText}.nes"; rom.Save(outputFilename); MessageBox.Show($"Finished generating new ROM: {outputFilename}", "Done"); }
private void ValidateRom(string filename) { var rom = new FF1Rom(filename); if (!rom.Validate()) { MessageBox.Show("ROM does not appear to be valid. Proceed at your own risk.", "Validation Error"); } _filename = filename; var slashIndex = filename.LastIndexOfAny(new[] { '/', '\\' }); RomTextBox.Text = filename.Substring(slashIndex + 1); GenerateButton.IsEnabled = true; }