private void MakeTrace(ushort pc) { int[] s = new int[10]; LibSameboy.sameboy_getregs(SameboyState, s); Tracer.Put(new( disassembly: LR35902.Disassemble( pc, addr => LibSameboy.sameboy_cpuread(SameboyState, addr), _settings.UseRGBDSSyntax, out _).PadRight(36), registerInfo: string.Format( "A:{0:x2} F:{1:x2} B:{2:x2} C:{3:x2} D:{4:x2} E:{5:x2} H:{6:x2} L:{7:x2} SP:{8:x4} LY:{9:x2} Cy:{10}", s[1] & 0xFF, s[2] & 0xFF, s[3] & 0xFF, s[4] & 0xFF, s[5] & 0xFF, s[6] & 0xFF, s[7] & 0xFF, s[8] & 0xFF, s[9] & 0xFFFF, LibSameboy.sameboy_cpuread(SameboyState, 0xFF44), CycleCount ))); }
private void FrameAdvancePost() { if (IsLagFrame) { LagCount++; } Frame++; if (_scanlinecbline == -1) { _scanlinecb?.Invoke(LibSameboy.sameboy_cpuread(SameboyState, 0xFF40)); } }
private void InitMemoryDomains() { CreateMemoryDomain(LibSameboy.MemoryAreas.ROM, "ROM"); CreateMemoryDomain(LibSameboy.MemoryAreas.RAM, "WRAM"); CreateMemoryDomain(LibSameboy.MemoryAreas.CART_RAM, "CartRAM"); CreateMemoryDomain(LibSameboy.MemoryAreas.VRAM, "VRAM"); CreateMemoryDomain(LibSameboy.MemoryAreas.HRAM, "HRAM"); CreateMemoryDomain(LibSameboy.MemoryAreas.IO, "MMIO"); CreateMemoryDomain(LibSameboy.MemoryAreas.BOOTROM, "BIOS"); CreateMemoryDomain(LibSameboy.MemoryAreas.OAM, "OAM"); CreateMemoryDomain(LibSameboy.MemoryAreas.BGP, "BGP"); CreateMemoryDomain(LibSameboy.MemoryAreas.OBP, "OBP"); CreateMemoryDomain(LibSameboy.MemoryAreas.IE, "IE"); // also add a special memory domain for the system bus, where calls get sent directly to the core each time _memoryDomains.Add(new MemoryDomainDelegate("System Bus", 65536, MemoryDomain.Endian.Little, delegate(long addr) { if (addr < 0 || addr >= 65536) { throw new ArgumentOutOfRangeException(); } return(LibSameboy.sameboy_cpuread(SameboyState, (ushort)addr)); }, delegate(long addr, byte val) { if (addr < 0 || addr >= 65536) { throw new ArgumentOutOfRangeException(); } LibSameboy.sameboy_cpuwrite(SameboyState, (ushort)addr, val); }, 1)); MemoryDomains = new MemoryDomainList(_memoryDomains); _serviceProvider.Register(MemoryDomains); }