MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / ReadFile

Method ReadFile

pcsx2/GS/GSLzma.cpp:73–233  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71}
72
73bool GSDumpFile::ReadFile(Error* error)
74{
75 u32 ss;
76 if (Read(&m_crc, sizeof(m_crc)) != sizeof(m_crc) || Read(&ss, sizeof(ss)) != sizeof(ss))
77 {
78 Error::SetString(error, TRANSLATE_STR("GSDumpFile", "Failed to read header."));
79 return false;
80 }
81
82 m_state_data.resize(ss);
83 if (Read(m_state_data.data(), ss) != ss)
84 {
85 Error::SetString(error, TRANSLATE_STR("GSDumpFile", "Failed to read state data."));
86 return false;
87 }
88
89 // Pull serial out of new header, if present.
90 if (m_crc == 0xFFFFFFFFu)
91 {
92 GSDumpHeader header;
93 if (m_state_data.size() < sizeof(header))
94 {
95 Error::SetString(error, TRANSLATE_STR("GSDumpFile", "GSDump header is corrupted."));
96 return false;
97 }
98
99 std::memcpy(&header, m_state_data.data(), sizeof(header));
100
101 m_crc = header.crc;
102
103 if (header.serial_size > 0)
104 {
105 if (header.serial_offset > ss || (static_cast<u64>(header.serial_offset) + header.serial_size) > ss)
106 {
107 Error::SetString(error, TRANSLATE_STR("GSDumpFile", "GSDump header is corrupted."));
108 return false;
109 }
110
111 if (header.serial_size > 0)
112 m_serial.assign(reinterpret_cast<const char*>(m_state_data.data()) + header.serial_offset, header.serial_size);
113 }
114
115 // Read the real state data
116 m_state_data.resize(header.state_size);
117 if (Read(m_state_data.data(), header.state_size) != header.state_size)
118 {
119 Error::SetString(error, TRANSLATE_STR("GSDumpFile", "Failed to read real state data"));
120 return false;
121 }
122 }
123
124 m_regs_data.resize(8192);
125 if (Read(m_regs_data.data(), m_regs_data.size()) != m_regs_data.size())
126 {
127 Error::SetString(error, TRANSLATE_STR("GSDumpFile", "Failed to read regs data."));
128 return false;
129 }
130

Callers 3

OpenIsoFileMethod · 0.45
InitializeMethod · 0.45
ChangeDumpMethod · 0.45

Calls 8

ReadFunction · 0.50
resizeMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
assignMethod · 0.45
shrink_to_fitMethod · 0.45
ErrorMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected