Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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));
        }