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

Function HDDReadFIFO

pcsx2/DEV9/DEV9.cpp:259–283  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

257 dev9.fifo_bytes_write += read;
258}
259void HDDReadFIFO()
260{
261 pxAssert(dev9.ata->dmaReady && (dev9.if_ctrl & SPD_IF_ATA_DMAEN));
262 pxAssert((dev9.if_ctrl & SPD_IF_READ) == 0);
263
264 const int unread = (dev9.fifo_bytes_write - dev9.fifo_bytes_read);
265 const int base = dev9.fifo_bytes_read % (SPD_DBUF_AVAIL_MAX * 512);
266
267 pxAssert(unread <= SPD_DBUF_AVAIL_MAX * 512);
268
269 int write;
270 if (base + unread > SPD_DBUF_AVAIL_MAX * 512)
271 {
272 const int was = SPD_DBUF_AVAIL_MAX * 512 - base;
273 write = dev9.ata->WriteDMAFromFIFO(dev9.fifo + base, was);
274 if (write == was)
275 write += dev9.ata->WriteDMAFromFIFO(dev9.fifo, unread - was);
276 }
277 else
278 {
279 write = dev9.ata->WriteDMAFromFIFO(dev9.fifo + base, unread);
280 }
281
282 dev9.fifo_bytes_read += write;
283}
284void IOPReadFIFO()
285{
286 pxAssert((dev9.dma_iop_ptr != nullptr) && (dev9.xfr_ctrl & SPD_XFR_DMAEN));

Callers 1

DEV9runFIFOFunction · 0.85

Calls 1

WriteDMAFromFIFOMethod · 0.80

Tested by

no test coverage detected