yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
cpu_serialization.cc
Go to the documentation of this file.
1
2void Cpu::SaveState(std::ostream& stream) {
3 // Registers
4 stream.write(reinterpret_cast<const char*>(&A), sizeof(A));
5 stream.write(reinterpret_cast<const char*>(&X), sizeof(X));
6 stream.write(reinterpret_cast<const char*>(&Y), sizeof(Y));
7 stream.write(reinterpret_cast<const char*>(&D), sizeof(D));
8 stream.write(reinterpret_cast<const char*>(&DB), sizeof(DB));
9 stream.write(reinterpret_cast<const char*>(&PB), sizeof(PB));
10 stream.write(reinterpret_cast<const char*>(&PC), sizeof(PC));
11 stream.write(reinterpret_cast<const char*>(&status), sizeof(status));
12
13 // Flags and State
14 stream.write(reinterpret_cast<const char*>(&E), sizeof(E));
15 stream.write(reinterpret_cast<const char*>(&waiting_), sizeof(waiting_));
16 stream.write(reinterpret_cast<const char*>(&stopped_), sizeof(stopped_));
17 stream.write(reinterpret_cast<const char*>(&irq_wanted_), sizeof(irq_wanted_));
18 stream.write(reinterpret_cast<const char*>(&nmi_wanted_), sizeof(nmi_wanted_));
19 stream.write(reinterpret_cast<const char*>(&reset_wanted_), sizeof(reset_wanted_));
20 stream.write(reinterpret_cast<const char*>(&int_wanted_), sizeof(int_wanted_));
21 stream.write(reinterpret_cast<const char*>(&int_delay_), sizeof(int_delay_));
22
23 // Breakpoints
24 uint32_t bp_count = static_cast<uint32_t>(breakpoints_.size());
25 stream.write(reinterpret_cast<const char*>(&bp_count), sizeof(bp_count));
26 if (bp_count > 0) {
27 stream.write(reinterpret_cast<const char*>(breakpoints_.data()), bp_count * sizeof(uint32_t));
28 }
29}
30
31void Cpu::LoadState(std::istream& stream) {
32 // Registers
33 stream.read(reinterpret_cast<char*>(&A), sizeof(A));
34 stream.read(reinterpret_cast<char*>(&X), sizeof(X));
35 stream.read(reinterpret_cast<char*>(&Y), sizeof(Y));
36 stream.read(reinterpret_cast<char*>(&D), sizeof(D));
37 stream.read(reinterpret_cast<char*>(&DB), sizeof(DB));
38 stream.read(reinterpret_cast<char*>(&PB), sizeof(PB));
39 stream.read(reinterpret_cast<char*>(&PC), sizeof(PC));
40 stream.read(reinterpret_cast<char*>(&status), sizeof(status));
41
42 // Flags and State
43 stream.read(reinterpret_cast<char*>(&E), sizeof(E));
44 stream.read(reinterpret_cast<char*>(&waiting_), sizeof(waiting_));
45 stream.read(reinterpret_cast<char*>(&stopped_), sizeof(stopped_));
46 stream.read(reinterpret_cast<char*>(&irq_wanted_), sizeof(irq_wanted_));
47 stream.read(reinterpret_cast<char*>(&nmi_wanted_), sizeof(nmi_wanted_));
48 stream.read(reinterpret_cast<char*>(&reset_wanted_), sizeof(reset_wanted_));
49 stream.read(reinterpret_cast<char*>(&int_wanted_), sizeof(int_wanted_));
50 stream.read(reinterpret_cast<char*>(&int_delay_), sizeof(int_delay_));
51
52 // Breakpoints
53 uint32_t bp_count;
54 stream.read(reinterpret_cast<char*>(&bp_count), sizeof(bp_count));
55 breakpoints_.resize(bp_count);
56 if (bp_count > 0) {
57 stream.read(reinterpret_cast<char*>(breakpoints_.data()), bp_count * sizeof(uint32_t));
58 }
59}