Exemple #1
0
        public static void BruteForce()
        {
            Input.USE_TAS_INPUT_Y = false;
            HashSet <int> seenRngIndexes = new HashSet <int>();

            for (int count = 0; true; count++)
            {
                List <Input>   inputs         = GenerateInputs();
                ObjSlotManager objSlotManager = Simulate(inputs, false);
                if (objSlotManager != null)
                {
                    int rngIndex = objSlotManager.Rng.GetIndex();
                    (int numInitialBubbles, bool isBubbleSpawnerPresent) = objSlotManager.GetBubbleConfiguration();
                    int numTries = 1;
                    seenRngIndexes.Add(rngIndex);
                    Config.Print("CHECKING SECOND SUCCESS {0} {1} {2} {3}", rngIndex, isBubbleSpawnerPresent, numInitialBubbles, seenRngIndexes.Count);
                    bool success2 = LoadingZoneMain.Run(rngIndex, isBubbleSpawnerPresent, numInitialBubbles, numTries, true);
                    if (success2)
                    {
                        Config.Print();
                        Config.Print("SUCCESS AFTER " + count);
                        Config.Print();
                        Config.Print(string.Join("\r\n", inputs));
                        Config.Print();
                        Simulate(inputs, true);
                        Config.Print();
                        return;
                    }
                }
            }
        }
Exemple #2
0
 public BubbleSpawnerObject(
     ObjSlotManager objSlotManager, TtcRng rng,
     float y, int timer, int timerMax)
     : base(objSlotManager, rng)
 {
     Y        = y;
     Timer    = timer;
     TimerMax = timerMax;
 }
Exemple #3
0
 public BubbleObject(
     ObjSlotManager objSlotManager, TtcRng rng,
     float y, int timer,
     float varF4, float varF8, float varFC, float var100)
     : base(objSlotManager, rng)
 {
     Y      = y;
     Timer  = timer;
     VarF4  = varF4;
     VarF8  = varF8;
     VarFC  = varFC;
     Var100 = var100;
 }
Exemple #4
0
            public override void Update()
            {
                if (Timer == 0)
                {
                    TimerMax = 2 + (int)(9 * Rng.PollFloat());
                }

                if (Timer == TimerMax)
                {
                    BubbleObject bubbleObject =
                        new BubbleObject(ObjSlotManager, Rng, Y, 0, 0, 0, 0, 0);
                    ObjSlotManager.AddObject(bubbleObject);
                    MarkForDeletion();
                }

                Timer++;
            }
Exemple #5
0
            public override void Update()
            {
                int   index = WaterState.Index;
                Input input = index < Inputs.Count ? Inputs[index] : new Input(0, 127);

                WaterState.Update(input, ObjSlotManager.WaterLevel);

                if ((WaterState.Y < (ObjSlotManager.WaterLevel - 160)) || (WaterState.Pitch < -0x800))
                {
                    if (!ObjSlotManager.HasBubbleSpawner())
                    {
                        BubbleSpawnerObject bubbleSpawnerObject =
                            new BubbleSpawnerObject(ObjSlotManager, Rng, WaterState.Y, 0, 0);
                        ObjSlotManager.AddObject(bubbleSpawnerObject);
                    }
                }
            }
Exemple #6
0
        public static void BruteForce2()
        {
            Input.USE_TAS_INPUT_Y = false;

            List <int> rngIndexes = LoadingZoneMain.GetRngIndexes();

            bool[] rngIndexSuccesses = new bool[65114];
            rngIndexes.ForEach(rngIndex => rngIndexSuccesses[rngIndex] = true);

            HashSet <int> seenAlready = new HashSet <int>();

            for (int count = 0; true; count++)
            {
                List <Input>   inputs         = GenerateInputs();
                ObjSlotManager objSlotManager = Simulate(inputs, false);
                if (objSlotManager != null)
                {
                    int rngIndex = objSlotManager.Rng.GetIndex();

                    if (!seenAlready.Contains(rngIndex))
                    {
                        Config.Print("just saw " + rngIndex);
                        seenAlready.Add(rngIndex);
                    }

                    bool success = rngIndexSuccesses[rngIndex];
                    if (success)
                    {
                        Config.Print();
                        Config.Print("SUCCESS AFTER " + count);
                        Config.Print();
                        Config.Print(string.Join("\r\n", inputs));
                        Config.Print();
                        Simulate(inputs, true);
                        Config.Print();
                        return;
                    }
                }
            }
        }
Exemple #7
0
        public static void FindAllBubbleConfigurations()
        {
            ObjSlotManager objSlotManager = new ObjSlotManager(new List <Input>());

            for (int i = 0; i < 1000; i++)
            {
                objSlotManager.Update();
            }

            HashSet <(int numBubbles, bool bubbleSpawnerPresent)> alreadySeen =
                new HashSet <(int numBubbles, bool bubbleSpawnerPresent)>();

            while (true)
            {
                objSlotManager.Update();
                var bubbleConfiguration = objSlotManager.GetBubbleConfiguration();
                if (!alreadySeen.Contains(bubbleConfiguration))
                {
                    Config.Print(bubbleConfiguration);
                    alreadySeen.Add(bubbleConfiguration);
                }
            }
        }
Exemple #8
0
        public static ObjSlotManager Simulate(List <Input> inputs, bool print)
        {
            ObjSlotManager objSlotManager = new ObjSlotManager(inputs);

            if (print)
            {
                Config.Print(objSlotManager);
            }
            while (objSlotManager.GlobalTimer < 7798)
            {
                objSlotManager.Update();
                if (print)
                {
                    Config.Print(objSlotManager);
                }
            }

            bool success =
                objSlotManager.HasBubbleConfiguration(5, true) ||
                objSlotManager.HasBubbleConfiguration(6, false);

            return(success ? objSlotManager : null);
        }
Exemple #9
0
 public BobombBuddyObject(ObjSlotManager objSlotManager, TtcRng rng, int bobombBuddyBlinkingTimer)
     : base(objSlotManager, rng)
 {
     BobombBuddyBlinkingTimer = bobombBuddyBlinkingTimer;
 }
Exemple #10
0
 public MarioObject(ObjSlotManager objSlotManager, TtcRng rng, List <Input> inputs)
     : base(objSlotManager, rng)
 {
     Inputs     = inputs;
     WaterState = new WaterState();
 }
Exemple #11
0
 public WaterObject(ObjSlotManager objectSlotsManager, TtcRng rng)
 {
     ObjSlotManager  = objectSlotsManager;
     Rng             = rng;
     ShouldBeDeleted = false;
 }