private static void TestBetaQuestShuffleData(Arguments args) { if (Options.Version != ORom.Build.N0) { return; } Ptr staticCtx = SPtr.New(0x11BA00).Deref(); Ptr shuffleTable = staticCtx.RelOff(BetaQuest.GetTBL_OFFSET()); Dictionary <short, int> collisions = new Dictionary <short, int>(); int shuffle = BetaQuest.GetSHUFFLE(); for (int i = 0; i < shuffle; i++) { short index = shuffleTable.ReadInt16(i * 2); if (collisions.ContainsKey(index)) { collisions[index] += 1; } else { collisions.Add(index, 1); } } Console.Clear(); Console.WriteLine("Repeats: "); foreach (var item in collisions) { if (item.Value > 1) { Console.WriteLine($"{item.Key:X4} - {item.Value}"); } } }
private static void LocateBetaQuestEntrance(Arguments args) { if (Options.Version != ORom.Build.N0) { return; } Ptr staticCtx = SPtr.New(0x11BA00).Deref(); Ptr shuffleTable = staticCtx.RelOff(BetaQuest.GetTBL_OFFSET()); short index = (short)args[0]; short[] VAR_Entrances = BetaQuest.GetVAR_Entrances(); for (int i = 0; i < 326; i++) { var read = shuffleTable.ReadInt16(i * 2); if (index == read) { Console.WriteLine($"{VAR_Entrances[i]:X4}"); return; } } Console.WriteLine("NOT FOUND"); }