Exemple #1
0
        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}");
                }
            }
        }
Exemple #2
0
        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");
        }