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この関数はドライブに実際にアクセスする関数ではありません。