LeoCreateLeoManager.htm
5.62 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
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.03j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">LeoCreateLeoManager(3P) LeoCJCreateLeoManager(3P) LeoCACreateLeoManager(3P)<BR>
</FONT></B>
<P>
<B>関数名<BR>
</B>
<P>
LeoCreateLeoManager, LeoCJCreateLeoManager, LeoCACreateLeoManager
<P>
→ leo マネージャの作成 <BR>
<P>
<B>構文</B>
<PRE>
<FONT SIZE=4>#include <PR/leo.h>
</FONT><FONT SIZE=2 FACE="MS ゴシック"><ディスク起動の場合>
</FONT><FONT SIZE=4 FACE="MS ゴシック">s32 LeoCreateLeoManager(OSPri <U>cmdPri</U>, OSPri <U>intPri</U>,
OSMesg *<U>cmdBuf</U>, s32 <U>cmdMsgCnt</U>);
</FONT><FONT SIZE=2 FACE="MS ゴシック"><日本向けカセット起動の場合>
</FONT><FONT SIZE=4 FACE="MS ゴシック">s32 LeoCJCreateLeoManager(OSPri <U>cmdPri</U>, OSPri <U>intPri</U>,
OSMesg *<U>cmdBuf</U>, s32 <U>cmdMsgCnt</U>);
</FONT><FONT SIZE=2 FACE="MS ゴシック"><アメリカ向けカセット起動の場合>
</FONT><FONT SIZE=4 FACE="MS ゴシック">s32 LeoCACreateLeoManager(OSPri <U>cmdPri</U>, OSPri <U>intPri</U>,
OSMesg *<U>cmdBuf</U>, s32 <U>cmdMsgCnt</U>);
</FONT>
</PRE>
<P>
<B>説明</B>
<P>
<B>注意:</B>64DD関係の命令はすべて、rom DMA(ドライブ内ROM対象のDMAを含む)が行われていない、また行われないという仮定で設計されています。そのための注意点に関しては、64DDプログラミングマニュアル「第12章 禁止事項、注意事項のまとめ」を参照してください。 <BR>
<P>
<B>Leo*CreateLeoManager</B> はleoマネージャと呼ばれるデバイスドライバを作成、スタートさせます。leoマネージャは64DD関連のすべての関数の実行に先立って立ち上げておく必要があります。
leoマネージャは2つの leo マネージャシステムスレッド(コマンドスレッドおよびインタラプトスレッド)からなり、コマンドスレッドはアプリケーション側からのコマンドの受け付けおよび実行、インタラプトスレッドは内部の割り込み処理を行います。呼び出し側はこれらのスレッドの優先順位をそれぞれ、<U>cmdPri</U>,
<U>intPri</U> で指定します。内部処理の都合上、<U>intPri</U> にはOS_PRIORITY_LEOMGR
(leo.h で定義されている。PI マネージャと同じ優先順位)、<U>cmdPri</U>
にはこれより少し低い優先順位を指定してください。<BR>
<P>
<b>LeoCreateLeoManager( )</b>はディスク起動ゲームの初期化に、<b>LeoC*CreateLeoManager( )</b>はカセット起動
ゲームの初期化に使用します。カセット起動の場合、日本向けかアメリカ向けかに応じて初期化時に使用する関数が異
なります。日本向けは<b>LeoCJCreateLeoManager( )</b>, アメリカ向けは<b>LeoCACreateLeoManager( )</b>を使用してください(他の国・地域向けは追ってリリースします)。ディスク起動ゲームとは、ロムカートリッジとの併用をせず、ディスクのみを使用したゲームのことで、これに対してカセット起動ゲームとは、ロムカートリッジのゲームからディスクをアクセスするゲームのことです。詳しくは64DDプログラミングマニュアル「7.7 ディスク起動とカセット起動」を参照してください。
<BR>
<P>
<U>cmdBuf</U>, <U>cmdMsgCnt</U>には使用するバッファへのポインタ、及びleoマネー
ジャのコマンド受け付けキューのサイズを指定します。コマンド受け付けキューは下記
の関数を実行したときに使用されます。
<BLOCKQUOTE>
<A HREF="LeoReadWrite.htm">LeoReadWrite</A>(3P)<BR>
<A HREF="LeoSeek.htm">LeoSeek</A>(3P)<BR>
<A HREF="LeoSpdlMotor.htm">LeoSpdlMotor</A>(3P)<BR>
<A HREF="LeoTestUnitReady.htm">LeoTestUnitReady</A>(3P)<BR>
<A HREF="LeoReadDiskID.htm">LeoReadDiskID</A>(3P)<BR>
<A HREF="LeoReadRTC.htm">LeoReadRTC</A>(3P)<BR>
<A HREF="LeoReadRTC.htm">LeoSetRTC</A>(3P)<BR>
<A HREF="LeoModeSelectAsync.htm">LeoModeSelectAsync</A>(3P)<BR>
</BLOCKQUOTE>
<P>
これらのコマンドが一度に<U>cmdMsgCnt</U>個以上発行されると、LEO_ERROR_QUE_FULL
が返され、正常に処理されません。十分なサイズを確保するようにしてください。
<P>
(<B>注意:</B> <B>Leo*CreateLeoManager</B>を用いてleoマネージャを作成した直後に、
必ず<A HREF="LeoReadDiskID.htm">LeoReadDiskID</A>(3P))関数を呼び、その時点で挿
入されているディスクがIPLで立ち上げられたディスクと等しいか比較(ディスク起動の
ゲームの場合)するか、あるいはその時点でのIDを読み出し、RDRAM上に記憶しておく
(カセット起動のゲームの場合)かをするようにしてください(64DDプログラミングマニュ
アル「第10章 エラー処理シーケンス」参照)。)
<P>
コマンド受け付けキューにたまっているコマンドは、<A HREF="LeoClearQueue.htm">
LeoClearQueue</A>(3P)関数でクリアすることができます。クリアされたコマンドにはLEO_
COMMAND_TERMINATEDエラーが返されます。
<BR>
<P>
<B>Leo*CreateLeoManager</B>からの返り値は以下のとおりです。
<P>
<B>LEO_ERROR_GOOD</B>
<BLOCKQUOTE>
正常終了です。<BR>
</BLOCKQUOTE>
<P>
<B>LEO_ERROR_DEVICE_COMMUNICATION_FAILURE</B>
<BLOCKQUOTE>
64DDとの通信がうまくいきません。コネクタがはずれていることが主な原因です。
<BR>
</BLOCKQUOTE>
<P>
<B>参照</B>
<P>
<A HREF="LeoReadWrite.htm">LeoReadWrite</A>(3P), <A HREF="LeoReadDiskID.htm">LeoReadDiskID</A>(3P),
<A HREF="LeoSpdlMotor.htm">LeoSpdlMotor</A>(3P), <A HREF="LeoSeek.htm">LeoSeek</A>(3P),
<BR>
<A HREF="LeoByteToLBA.htm">LeoByteToLBA</A>(3P), <A HREF="LeoByteToLBA.htm">LeoLBAToByte</A>(3P),
<A HREF="LeoReset2.htm">LeoReset</A>(3P), <A HREF="LeoResetClear.htm">LeoResetClear</A>(3P),
<BR>
<A HREF="LeoGetAAdr.htm">LeoGetKAdr</A>(3P), <A HREF="LeoGetAAdr.htm">LeoGetAAdr</A>(3P),
<A HREF="LeoGetAAdr.htm">LeoGetAAdr2</A>(3P), <A HREF="LeoModeSelectAsync.htm">LeoModeSelectAsync</A>(3P),
<BR>
<A HREF="LeoTestUnitReady.htm">LeoTestUnitReady</A>(3P), <A HREF="LeoRezero.htm">LeoRezero</A>(3P),
<A HREF="LeoClearQueue.htm">LeoClearQueue</A>(3P), <A HREF="LeoReadCapacity.htm">LeoReadCapacity</A>(3P),
<BR>
<A HREF="LeoInquiry.htm">LeoInquiry</A>(3P)
<BR>
<HR>
<P>
<A HREF="64dd_INDEX.htm">64DDのマニュアルページのメニューへ</A>
<P>
<A HREF="../n64man.htm">N64のマニュアルページのトップメニューへ</A>
<P>
</BODY>
</HTML>