string GenerateSeed(int seed, byte[] rom_data, string linkSpriteFilename, string inputFilename, string outputPath) { #if !DEBUG try // make sure we don't crash in release build { #endif RomData romData = new RomData(rom_data); Randomization randomize = new Randomization(); RomData randomizedRom = randomize.MakeRandomization("", seed, config.OptionFlags, romData, linkSpriteFilename); string fileNameNoExtension = Path.Combine(outputPath, $"Enemizer {EnemizerLibrary.Version.CurrentVersion} - {Path.GetFileNameWithoutExtension(inputFilename)} (EN{randomizedRom.EnemizerSeed})"); if (config.OptionFlags.GenerateSpoilers) { File.WriteAllText($"{fileNameNoExtension}.txt", randomizedRom.Spoiler.ToString()); } #if DEBUG // build a patch for testing var romPatch = randomizedRom.GeneratePatch(); string patch = JsonConvert.SerializeObject(romPatch); File.WriteAllText($"{fileNameNoExtension}.patch", patch); #endif Randomization.SetSwordGfx(randomizedRom, config.OptionFlags.SwordGraphics); Randomization.SetShieldGfx(randomizedRom, config.OptionFlags.ShieldGraphics); if (config.OptionFlags.RandomizeSpriteOnHit) { Randomization.BuildRandomLinkSpriteTable(randomizedRom, seed, config.OptionFlags); } string fileName = $"{fileNameNoExtension}.sfc"; var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write); randomizedRom.WriteRom(fs); fs.Close(); return(fileName); #if !DEBUG } catch (Exception ex) { logger.Error(ex); MessageBox.Show($"{ex.Message}\r\n{ex.StackTrace}", "Enemizer"); } return("Failed"); #endif }