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

Method PS1Read

pcsx2/SIO/Memcard/MemoryCardProtocol.cpp:262–324  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

260}
261
262u8 MemoryCardProtocol::PS1Read(u8 data)
263{
264 MC_LOG.WriteLn("%s", __FUNCTION__);
265
266 if (!mcd->IsPresent())
267 {
268 return 0xff;
269 }
270
271 bool sendAck = true;
272 u8 ret = 0;
273
274 switch (ps1McState.currentByte)
275 {
276 case 2:
277 ret = 0x5a;
278 break;
279 case 3:
280 ret = 0x5d;
281 break;
282 case 4:
283 ps1McState.sectorAddrMSB = data;
284 ret = 0x00;
285 break;
286 case 5:
287 ps1McState.sectorAddrLSB = data;
288 ret = 0x00;
289 RecalculatePS1Addr();
290 break;
291 case 6:
292 ret = 0x5c;
293 break;
294 case 7:
295 ret = 0x5d;
296 break;
297 case 8:
298 ret = ps1McState.sectorAddrMSB;
299 break;
300 case 9:
301 ret = ps1McState.sectorAddrLSB;
302 break;
303 case 138:
304 ret = ps1McState.checksum;
305 break;
306 case 139:
307 ret = 0x47;
308 sendAck = false;
309 break;
310 case 10:
311 ps1McState.checksum = ps1McState.sectorAddrMSB ^ ps1McState.sectorAddrLSB;
312 mcd->Read(ps1McState.buf.data(), ps1McState.buf.size());
313 [[fallthrough]];
314 default:
315 ret = ps1McState.buf[ps1McState.currentByte - 10];
316 ps1McState.checksum ^= ret;
317 break;
318 }
319

Callers 2

MemcardMethod · 0.80
MemcardMethod · 0.80

Calls 6

SetAcknowledgeMethod · 0.80
WriteLnMethod · 0.45
IsPresentMethod · 0.45
ReadMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected