public IDictionary <string, RegisterValue> GetCpuFlagsAndRegisters()
        {
            LibGPGX.RegisterInfo[] regs = new LibGPGX.RegisterInfo[LibGPGX.gpgx_getmaxnumregs()];

            int n = LibGPGX.gpgx_getregs(regs);

            if (n > regs.Length)
            {
                throw new InvalidOperationException("A buffer overrun has occured!");
            }
            var ret = new Dictionary <string, RegisterValue>();

            for (int i = 0; i < n; i++)
            {
                // el hacko
                string name = Marshal.PtrToStringAnsi(regs[i].Name);
                byte   size = 32;
                if (name.Contains("68K SR") || name.StartsWith("Z80"))
                {
                    size = 16;
                }

                ret[name] = new RegisterValue((ulong)regs[i].Value, size);
            }

            return(ret);
        }
Beispiel #2
0
        public Dictionary <string, int> GetCpuFlagsAndRegisters()
        {
            LibGPGX.RegisterInfo[] regs = new LibGPGX.RegisterInfo[LibGPGX.gpgx_getmaxnumregs()];

            int n = LibGPGX.gpgx_getregs(regs);

            if (n > regs.Length)
            {
                throw new InvalidOperationException("A buffer overrun has occured!");
            }
            var ret = new Dictionary <string, int>();

            for (int i = 0; i < n; i++)
            {
                ret[Marshal.PtrToStringAnsi(regs[i].Name)] = regs[i].Value;
            }
            return(ret);
        }