Exemplo n.º 1
0
 private static void FixParse_cmdF8(ROM rom, DisplayListRegion region, RegionFixState state)
 {
     if (state.config.disableFog)
     {
         rom.Write64(0);
     }
 }
Exemplo n.º 2
0
        private static void FixParse_cmdBC(ROM rom, DisplayListRegion region, RegionFixState state)
        {
            if (state.config.disableFog)
            {
                rom.Write64(0);
                return;
            }

            if (state.config.nerfFog)
            {
                float A = rom.Read16(4);
                float B = rom.Read16(6);

                float min = 500 * (1 - B / A);
                float max = 128000 / A + min;

                // nerf fog
                min += 5;
                A    = 128000 / (max - min);
                B    = (500 - min) * 256 / (max - min);

                int Aint = (int)A;
                int Bint = (int)B;

                rom.Write16(Aint, 4);
                rom.Write16(Bint, 6);
            }
        }
Exemplo n.º 3
0
        private static void FixParse_cmdB9(ROM rom, DisplayListRegion region, RegionFixState state)
        {
            if (state.config.disableFog)
            {
                rom.Write64(0);
                return;
            }

            if (!state.config.fixOtherMode)
            {
                return;
            }

            if (!region.isFogEnabled)
            {
                return;
            }

            if ((ulong)rom.Read64(-8) != 0xBA00140200000000 || (ulong)rom.Read64(8) != 0xB600000000010000)
            {
                return;
            }

            UInt64 B9Cmd = OtherMode.GetB9Cmd(region.layer);

            if (B9Cmd != 0)
            {
                rom.Write64(B9Cmd);
            }
        }
Exemplo n.º 4
0
        public static void PerformRegionFix(ROM rom, Region region, FixConfig config)
        {
            RegionFixState    state    = new RegionFixState(config);
            DisplayListRegion dlRegion = (DisplayListRegion)region;

            rom.PushOffset(region.romStart);
            byte curCmdIndex;

            do
            {
                curCmdIndex = rom.Read8();
                FixParseCmd func = fixParser[curCmdIndex];
                func(rom, dlRegion, state);
                rom.AddOffset(8);
            }while (rom.offset < region.romStart + region.length);
            rom.PopOffset();
            rom.ReadData(region.romStart, region.length, region.data);
        }
Exemplo n.º 5
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.º 6
0
 private static void FixParse_common(ROM rom, DisplayListRegion region, RegionFixState state)
 {
 }