English
INDEX ▲ |STN-6 |STN-9 |STN-19 |STN-21 |STN-22 |STN-23 |STN-24

STN-21

GFS_Init,GFS_LoadDir関数のリカバリ


発行番号:
STN-21
発 行 日:
95/01/20
メディア:
○共 通●CD-ROM○カートリッジ○その他
関  連:
●プログラム○ハード○マニュアル○ツール○ゲーム○バグ○その他
情報区別:
●新 規○変 更○追 加
重 要 度:
●厳 守○推 奨○参 考○その他
添付資料:
●無○有
件名補足:
対象ライブラリ:GFS Ver1.15

内 容

■対策方法

 GFS_Init,GFS_LoadDir関数でエラーが発生した場合、次のような対処をしてください。

 ●GFS_ERR_CDRD,GFS_ERR_FATALエラーの場合
 GFS_InitはECC/リードリトライ回数を最大に設定しており、できるだけ<ERROR> 状態にならないようにしています。また、<FATAL>状態になった場合は、リカバ リのためストップコマンド(ホーム位置へのシーク)を発行します。
□これらのエラーが発生した場合は、添付資料のプラグラム例のようにポーズ コマンド発行後"PAUSE"状態になるのを待ってから、再実行してください。再実 行の繰り返し回数は3回以上にします。
□繰り返し実行してもエラーになる場合は、修復不可能なディスクの傷などが考 えられます。メッセージを表示するかマルチプレイヤに移行してください。

 ●GFS_ERR_CDNODISC,GFS_ERR_CDOPENエラーの場合
 マルチプレイヤに移行してください。

 ●その他のエラーの場合
 本来発生してはいけないエラーです。プログラムを見直してください。
GFSライブラリやハードウェアの障害の可能性がありますので、原因が解らなければ弊社 まで連絡してください。
製品版ではマルチプレイヤに移行するしかありません。

■サンプルプログラム


#include "sega_cdc.h"
Sint32	 recocGfsInit(void);
Sint32	 waitStat(Sint32sts);

/*GFS_Init,GFS_LoadDirの復帰処理*/
Sint32 revovGfsInit(void)
{
	Sint32 ret;
	CdcPos pos;
	/*ポーズコマンドを発行する*/
	CDC_POS_PTYPE(&pos) = CDC_PTYPE_NOCHG;
	ret = CDC_CdSeek(&pos);
	if(ret != CDC_ERR_OK){
		return NG;
	}
	/*"PAUSE"状態になるまで待つ*/
	ret = waitStat(CDC_ST_PAUSE);
	return ret;
}
/*指定ドライブ状態になるまで待つ*/
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_GET_STC(&stat);
		if(stwk == sts){
			brake;
		}
	}
	return OK;
}
以上
INDEX ▲ |STN-6 |STN-9 |STN-19 |STN-21 |STN-22 |STN-23 |STN-24
Copyright SEGA ENTERPRISES, LTD., 1997