| 2414 | } |
| 2415 | |
| 2416 | static void cdvdWrite16(u8 rt) // SCOMMAND |
| 2417 | { |
| 2418 | { |
| 2419 | // cdvdTN diskInfo; |
| 2420 | // cdvdTD trackInfo; |
| 2421 | // int i, lbn, type, min, sec, frm, address; |
| 2422 | int address; |
| 2423 | u8 tmp; |
| 2424 | |
| 2425 | CDVD_LOG("cdvdWrite16: SCMD %s (%x) (ParamP = %x)", sCmdName[rt], rt, cdvd.SCMDParamPos); |
| 2426 | |
| 2427 | cdvd.sCommand = rt; |
| 2428 | std::memset(&cdvd.SCMDResultBuff[0], 0, sizeof(cdvd.SCMDResultBuff)); |
| 2429 | |
| 2430 | switch (rt) |
| 2431 | { |
| 2432 | // case 0x01: // GetDiscType - from cdvdman (0:1) |
| 2433 | // SetResultSize(1); |
| 2434 | // cdvd.Result[0] = 0; |
| 2435 | // break; |
| 2436 | |
| 2437 | case 0x02: // CdReadSubQ (0:11) |
| 2438 | SetSCMDResultSize(11); |
| 2439 | cdvd.SCMDResultBuff[0] = cdvdReadSubQ(cdvd.CurrentSector, (cdvdSubQ*)&cdvd.SCMDResultBuff[1]); |
| 2440 | break; |
| 2441 | |
| 2442 | case 0x03: // Mecacon-command |
| 2443 | switch (cdvd.SCMDParamBuff[0]) |
| 2444 | { |
| 2445 | case 0x00: // get mecha version (1:4) |
| 2446 | SetSCMDResultSize(4); |
| 2447 | std::memcpy(&cdvd.SCMDResultBuff[0], &s_mecha_version, sizeof(u32)); |
| 2448 | break; |
| 2449 | case 0x30: |
| 2450 | SetSCMDResultSize(2); |
| 2451 | cdvd.SCMDResultBuff[0] = cdvd.Status; |
| 2452 | cdvd.SCMDResultBuff[1] = (cdvd.Status & 0x1) ? 8 : 0; |
| 2453 | //Console.Warning("Tray check param[1]=%02X", cdvd.Param[1]); |
| 2454 | break; |
| 2455 | case 0x44: // write console ID (9:1) |
| 2456 | SetSCMDResultSize(1); |
| 2457 | cdvdWriteConsoleID(&cdvd.SCMDParamBuff[1]); |
| 2458 | break; |
| 2459 | |
| 2460 | case 0x45: // read console ID (1:9) |
| 2461 | SetSCMDResultSize(9); |
| 2462 | cdvdReadConsoleID(&cdvd.SCMDResultBuff[1]); |
| 2463 | break; |
| 2464 | |
| 2465 | case 0xFD: // _sceCdReadRenewalDate (1:6) BCD |
| 2466 | SetSCMDResultSize(6); |
| 2467 | cdvd.SCMDResultBuff[0] = 0; |
| 2468 | cdvd.SCMDResultBuff[1] = 0x04; //year |
| 2469 | cdvd.SCMDResultBuff[2] = 0x12; //month |
| 2470 | cdvd.SCMDResultBuff[3] = 0x10; //day |
| 2471 | cdvd.SCMDResultBuff[4] = 0x01; //hour |
| 2472 | cdvd.SCMDResultBuff[5] = 0x30; //min |
| 2473 | break; |
no test coverage detected