funcs.jp
3.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
hdd.h で使用する各コマンドの説明。
s32 dd_create(void);
ディスク処理スレッド生成と必要なイニシャライズを行います。
返り値は、正常終了のときは -1 、既に呼び出されていれば何も
行わずに 0 を返します。dd.c コンパイル時に以下のオプション
を指定することでこの関数の動作を下記のように変更できます。
オプション
START_FROM_CASSETTE
効果
LeoCreateLeoManager ではなく LeoCJCreateLeoManagerを呼びます。
DDの接続をチェックします。 リセット状態を解除します。リセッ
トについては 64DDプログラミングマニュアル7章の
LeoResetClear() の説明を参照してください。
START_FROM_CASSETTEのサブオプション
NO_USE_RTC RTCのチェックを行いません
NEED_DISK イニシャライズ時にディスクがささっていなければ挿入させます。
s32 dd_exec( TMessage4dd * msg );
ディスクスレッドにコマンドをポストします。 msg->retQ をセットして
おくと非同期関数となります。この場合は msgを dd_checkGate() で受
ける必要があります。retQ は ローカルの一時変数であってはいけませ
ん、注意して下さい。
ポスト出来る命令については command.txt を参照して下さい。
s32 dd_checkGate( TMessage4dd * msg );
dd_exec( ) によって開始されたディスクスレッドの処理が完了してい
れば -1 を返し、処理中であれば 0 を返します。この関数はスレッドをブロッ
クしません。単に現在次の dd_exec() を発行可能かどうかを知らせるだ
けです。この関数の返り値が真の時に限りディスクスレッドによって msg
に意味のある値が格納されます。
s32 dd_thaw(s32 target_err);
中断したディスクスレッド中のエラー処理を再開させます。target_err
は 整合性チェック用です。dd_getStatus( )->errno と一致している必
要があります。このモジュールの static 関数である dd_freeze() と一
対一対応している必要があります。
void dd_flush(void);
ディスクスレッドにおいてウェイト用関数 dd_wait( )
を機能させるために必要な補助関数です。hdd.h モジュールを使用する
ときは、この関数をメインスケジューラから毎フレーム呼び出して下さ
い。
TDDStatus *dd_getStatus(void);
ディスクスレッドの情報を返します。
s32 dd_saveID(LEODiskID * det);
det をカレントのディスクIDとしてセットします。
主にディスクを交換したい時に使います。
s32 dd_driveExist(void);
ドライブが接続されていれば 1 を返します。
u32 dd_getVersion(void);
LeoInquiry で得られるバージョン情報を 32byte データとして返します。
s32 dd_getBlockSize(s32 lba,s32 size);
LeoLBAToByte()のラッパーです。lba から size ブロックが何バイトに
なるかを返します。
void dd_change_mode_USA(void);
北米向けカセット起動のディスクゲームを作成するときは、dd_create()
を実行する前にこの関数を呼びます。
void dd_errHook(s32 func_no , s32 err_no , s32 count );
このモジュール自身をデバッグするための関数です。func_no は
hdd_internal.h の leofunc_t を参照してください。以降 count で指定
した回数 ,func_no で指定した Leo関数が実行されたとき強制的に
err_no エラーを返させます。強制エラー発生毎に count は 1 減ります。
一度にフック出来る Leo関数は一つのみです。
以下は static 関数ですが
必ずアプリケーションで修正してから使用するようにしてください。
s32 dd_checkSum(void);
RAM 領域リード時のデータチェック方法を記述します。
dd_makeSum() でのライト方法と対応がとれている必要があります。
s32 dd_makeSum(void);
RAM 領域のデータフォーマットを規定します。
dd_checkSum() でのデータチェックに対応したフォーマットです。
s32 dd_restoreData(void);
RAM領域のデータ破損時の復旧方法を規定します。