発行番号: | STN-5 | ||||||
|---|---|---|---|---|---|---|---|
発 行 日: | 94/10/07 | ||||||
メディア: | ○共 通 | ●CD-ROM | ○カートリッジ | ○その他 | |||
関 連: | ●プログラム | ○ハード | ○マニュアル | ○ツール | ○ゲーム | ○バグ | ○その他 |
情報区別: | ●新 規 | ○変 更 | ○追 加 | ||||
重 要 度: | ●厳 守 | ○推 奨 | ○参 考 | ○その他 | |||
添付資料: | ○無 | ●有 | |||||
件名補足: | |||||||
![]() |
セガサターン用CD-ROMを作成する場合、データエラーを考慮して、必ずリードリトライを行うこと。 |
CD-ROMは、高いエラー訂正能力をもっていますが、ドライブの劣化・ディスク傷,
偏心・ディスクに付着したほこり等により、訂正不能なエラーが発生する場合があり
ます。
従ってデータエラーを考慮して、「ECCの回数を増やす方法」
(添付資料参照)だけではなく、必ずリードリトライを行うようにしてください。
但しデバック時等には、リードリトライを行う事により、エラー等の発生原因が解らな
くなる恐れがありますのでご注意ください。
#include "sega_cdc.h" #define ECC 5 /* ECC繰り返し回数: 5回 */ #define RETRY 0x0f /* リトライ回数 :15回 */ /* ECC/リトライ回数の設定(初期化フラグ,スタンバイタイムはデフォルト値)*/ CDC_CdInit(0,0,ECC,RETRY);
#include "sega_cdc.h"
#define STS_MSK 0x0f /* CDステータスのマスクパターン */
Sint32 recovPlay(Sint32 fad);
Sint32 waitStat(Sint32 sts);
/* CD再生の復帰処理(指定fadから再生を再開する)*/
Sint32 recovPlay(Sint32 fad)
{
Sint32 Ret;
CdcPos pos;
CdcPly ply;
/* 目的位置へシークする */
CDC_POS_PTYPE(&pos) = CDC_PTYPE_FAD;
CDC_POS_FAD(&pos) = fad;
ret = CDC_CdSeek(&pos);
if (ret != CDC_ERR_OK) {
return NG;
}
/* 状態になるまで待つ */
ret = waitStat(CDC_ST_PAUSE);
if (ret != OK) {
return ret;
}
/* CD再生を再開する */
CDC_PLY_STYPE(&ply) = CDC_PTYPE_NOCHG;
CDC_PLY_ETYPE(&ply) = CDC_PTYPE_NOCHG;
CDC_PLY_PMODE(&ply) = CDC_PM_NOCHG;
ret = CDC_CdPlay(&ply);
if (ret != CDC_ERR_OK) {
return NG;
}
return OK;
}
/* 指定ドライブ状態になるまで待つ */
Sint32 waitStat(Sint32 sts)
{
Sint32 ret;
Sint32 stwk;
CdcStat stat;
while (TRUE) { /* 実際にはループ回数の上限が必要 */
/* 定期レスポンスの取得 */
ret = CDC_GetPeriStat(&stat);
if (ret == CDC_ERR_PERI) {
continue;
}
if (ret != CDC_ERR_OK) {
return NG;
}
stwk = (CDC_STAT_STATUS(&stat) & STS_MSK);
if (stwk == sts) {
brake;
}
}
return OK;
}
★INDEX
▲
STN-2
|STN-3
|STN-4
|STN-5
|STN-6
|STN-9
|STN-18
▼