Esempio n. 1
0
        private void CpuOnBeforeInstructionFetch(object sender, BeforeInstructionFetchEventArgs e)
        {
            if (!hookedMethods.ContainsKey(regs.PC))
            {
                return;
            }

            if (segmentNumber == null &&
                (mappedRam = slotsSystem.GetSlotContents(slotsSystem.GetCurrentSlot(1)) as IMappedRam) != null &&
                ExtractString(0x4000, 14) == "FileSysDriver")
            {
                segmentNumber = mappedRam.GetBlockInBank(1);
            }

            if (segmentNumber != null &&
                mappedRam?.GetBlockInBank(1) == segmentNumber.Value &&
                slotsSystem.GetSlotContents(slotsSystem.GetCurrentSlot(1)) == mappedRam)
            {
                hookedMethods[regs.PC]();
                cpu.ExecuteRet();
            }
        }