public static CombinerCommand GetNewCombiner(DisplayListRegion dlRegion) { CombinerCommand oldCmd = new CombinerCommand(dlRegion.FCcmdfirst); if (dlRegion.isEnvcolorEnabled) { return(new CombinerCommand(fog: dlRegion.isFogEnabled, alpha: true)); } if (oldCmd.opaque) { return(new CombinerCommand(fog: dlRegion.isFogEnabled, opaque: true)); } return(new CombinerCommand(fog: dlRegion.isFogEnabled, solid: true)); }
private static void FixParse_cmdFC(ROM rom, DisplayListRegion region, RegionFixState state) { if (!state.config.fixCombiners) { return; } if (state.FCCountFixed != 0) { return; } CombinerCommand cmd = CombinerCommand.GetNewCombiner(region); UInt64 FCCmd = cmd.GetFCcmd(); if (FCCmd != 0) { state.FCCountFixed++; rom.Write64(FCCmd); } }
private void splitROM_Click(object sender, EventArgs e) { GC.Collect(); dataGridView1.Rows.Clear(); //object[] row = { "aaaa", true, false, "old", "new", false }; //dataGridView1.Rows.Add(row); //return; OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "ROM File|*.z64"; openFileDialog1.Title = "Select a ROM"; if (openFileDialog1.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } path = openFileDialog1.FileName; path = Path.GetFullPath(path); rom = new ROM(File.ReadAllBytes(path)); for (int i = 0; i <= 30; i++) { try { int offset = LevelInfo.GetLevelScriptEntryPoint(i); List <Region> regions = new List <Region>(); // 1st pass : find out where regions are LevelScript.PerformRegionParse(rom, regions, offset, out Dictionary <int, List <ScrollObject> > scrolls); // Fill in data from rom foreach (Region region in regions) { region.data = new byte[region.length]; rom.ReadData(region.romStart, region.length, region.data); } foreach (Region region in regions) { if (region.state == RegionState.DisplayList) { DisplayListRegion dlRegion = (DisplayListRegion)region; scrolls.TryGetValue(1, out List <ScrollObject> areaScrolls); if (areaScrolls == null) { areaScrolls = new List <ScrollObject>(); } object[] row = { dlRegion, true, region.romStart.ToString("X"), i, dlRegion.isFogEnabled, dlRegion.isEnvcolorEnabled, new CombinerCommand(dlRegion.FCcmdfirst), CombinerCommand.GetNewCombiner(dlRegion), rom.segments.Clone(), areaScrolls }; dataGridView1.Rows.Add(row); } } } catch (Exception) { } } dataGridView1.Sort(new RowComparer(SortOrder.Ascending)); }