| 1870 | } |
| 1871 | |
| 1872 | static 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 | |
| 1906 | static void cdvdWrite04(u8 rt) |
| 1907 | { // NCOMMAND |
no test coverage detected