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

Function cdvdCommandErrorHandler

pcsx2/CDVD/CDVD.cpp:1872–1904  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1870}
1871
1872static bool cdvdCommandErrorHandler()
1873{
1874 if (cdvd.nCommand > N_CD_NOP) // Command needs a disc, so check the tray is closed
1875 {
1876 if ((cdvd.Status & CDVD_STATUS_TRAY_OPEN) || (cdvd.DiscType == CDVD_TYPE_NODISC))
1877 {
1878 cdvd.Error = (cdvd.DiscType == CDVD_TYPE_NODISC) ? 0x12 : 0x11; // No Disc Tray is open
1879 cdvd.Ready |= CDVD_DRIVE_ERROR;
1880 cdvdSetIrq();
1881 return false;
1882 }
1883 }
1884
1885 if (cdvd.NCMDParamCnt != cdvdParamLength[cdvd.nCommand] && cdvdParamLength[cdvd.nCommand] != 255)
1886 {
1887 DevCon.Warning("CDVD: Error in command parameter length, expecting %d got %d", cdvdParamLength[cdvd.nCommand], cdvd.NCMDParamCnt);
1888 cdvd.Error = 0x22; // Invalid parameter for command
1889 cdvd.Ready |= CDVD_DRIVE_ERROR;
1890 cdvdSetIrq();
1891 return false;
1892 }
1893
1894 if (cdvd.nCommand > N_CD_CHG_SPDL_CTRL)
1895 {
1896 DevCon.Warning("CDVD: Error invalid NCMD");
1897 cdvd.Error = 0x10; // Unsupported Command
1898 cdvd.Ready |= CDVD_DRIVE_ERROR;
1899 cdvdSetIrq();
1900 return false;
1901 }
1902
1903 return true;
1904}
1905
1906static void cdvdWrite04(u8 rt)
1907{ // NCOMMAND

Callers 1

cdvdWrite04Function · 0.85

Calls 2

cdvdSetIrqFunction · 0.85
WarningMethod · 0.45

Tested by

no test coverage detected