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; } } } }
public BubbleSpawnerObject( ObjSlotManager objSlotManager, TtcRng rng, float y, int timer, int timerMax) : base(objSlotManager, rng) { Y = y; Timer = timer; TimerMax = timerMax; }
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; }
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++; }
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); } } }
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; } } } }
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); } } }
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); }
public BobombBuddyObject(ObjSlotManager objSlotManager, TtcRng rng, int bobombBuddyBlinkingTimer) : base(objSlotManager, rng) { BobombBuddyBlinkingTimer = bobombBuddyBlinkingTimer; }
public MarioObject(ObjSlotManager objSlotManager, TtcRng rng, List <Input> inputs) : base(objSlotManager, rng) { Inputs = inputs; WaterState = new WaterState(); }
public WaterObject(ObjSlotManager objectSlotsManager, TtcRng rng) { ObjSlotManager = objectSlotsManager; Rng = rng; ShouldBeDeleted = false; }