発行番号: | 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; }