void ParseRegisters(Builder& target) { Stream.Seek(0x10); const auto pc = fromLE(Stream.ReadField<uint32_t>()); const auto gp = fromLE(Stream.ReadField<uint32_t>()); Dbg("PC=0x%08x GP=0x%08x", pc, gp); target.SetRegisters(pc, gp); }
void ParseMainPart(Builder& target) { const RawHeader& hdr = Stream.ReadField<RawHeader>(); Require(hdr.Signature == SIGNATURE); ParseID666(hdr.ID666, target); target.SetRegisters(fromLE(hdr.Regs.PC), hdr.Regs.A, hdr.Regs.X, hdr.Regs.Y, hdr.Regs.PSW, hdr.Regs.SP); target.SetRAM(hdr.RAM, sizeof(hdr.RAM)); target.SetDSPRegisters(hdr.DSPRegisters, sizeof(hdr.DSPRegisters)); if (Stream.GetRestSize() >= sizeof(ExtraRAM)) { const ExtraRAM& extra = Stream.ReadField<ExtraRAM>(); target.SetExtraRAM(extra.Data, sizeof(extra.Data)); } }