Пример #1
0
        public void Disassemble(Stream s, IMemoryDomains mem)
        {
            var w = new StreamWriter(s);

            w.WriteLine("; Bizhawk CDL Disassembly");
            w.WriteLine();
            foreach (var kvp in this)
            {
                w.WriteLine(".\"{0}\" size=0x{1:x8}", kvp.Key, kvp.Value.Length);

                byte[] cd = kvp.Value;
                var    md = mem[kvp.Key];

                for (int i = 0; i < kvp.Value.Length; i++)
                {
                    if ((kvp.Value[i] & (byte)HuC6280.CDLUsage.Code) != 0)
                    {
                        int    unused;
                        string dis = HuC6280.DisassembleExt(
                            0,
                            out unused,
                            delegate(ushort addr)
                        {
                            return(md.PeekByte(addr + i));
                        },
                            delegate(ushort addr)
                        {
                            return(md.PeekWord(addr + i, false));
                        }
                            );
                        w.WriteLine("0x{0:x8}: {1}", i, dis);
                    }
                }
                w.WriteLine();
            }
            w.WriteLine("; EOF");
            w.Flush();
        }