Shinobi Library - ファイルシステム関数

gdFsGetDrvStat

ドライブ状態の取得

書式

Sint32 gdFsGetDrvStat( void )

引数

なし

戻り値

ドライブステータス

解説

ドライブの状態を取得します。

ドライブステータスは以下の値が戻ります。

 定義   意味 
 GDD_DRVSTAT_BUSY   稼働中 
 GDD_DRVSTAT_PAUSE   ポーズ状態 
 GDD_DRVSTAT_STANDBY   スタンバイ状態 
 GDD_DRVSTAT_SEEK   シーク中 
 GDD_DRVSTAT_PLAY   再生中 
 GDD_DRVSTAT_SCAN   スキャン再生中 
 GDD_DRVSTAT_OPEN   ディスクドアが開いている 
 GDD_DRVSTAT_NODISC   ディスクがない 
 GDD_DRVSTAT_RETRY   リトライ 
 GDD_DRVSTAT_ERROR   エラー 

ドライブステータスが取得できなかった場合は -1が戻ります。


用例

Sint32 dstat;
dstat = gdFsGetDrvStat();

備考

GDエミュレータ(GD-Workshop)と実ドライブでは以下のような仕様の違いがあります。

 環境   仕様 
 Dreamcast実機、Dev.Box(実ドライブ)   ドライブの状態は常に更新される。→ gdFsGetDrvStat()関数は現在のドライブ状態を返す。 
 Dev.Box(エミュレータ)   ドライブの状態はドライブに処理を要求し、それが完了したときのみ更新される。→ gdFsGetDrvStat()は、最新のコマンド発行時の状態を返す。→ GDエミュレータのドライブの状態を更新させるためには、ステータス更新用のコマンドを発行しなくてはならない。 

このためエミュレータ使用時は、ドアオープンを行ってもこの関数では、現在の状態を取得できません。 簡単な対処として、定期的にコマンドを発行することでこの問題は回避できます。 しかし、実ドライブでは意味がなく、パフォーマンスの低下となりますので、開発のテスト目的での使用にとどめておくべきでしょう。


(実ドライブでは、この処理は不要です)
BEGIN -------- Patch (メインループに追加)
{
static Sint32 LoopCount = 0;
if ( ((LoopCount++) % 60) == 0 ){
gdFsReqDrvStat();
}

END ---------- Patch

この関数はドライブに実際にアクセスする関数ではありません。


gdFsGetDrvStat
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000