osTestHost.htm
1.99 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
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">osTestHost(3P) <BR>
</FONT></B>
<P>
<B>関数名<BR>
</B>
<P>
osReadHost, osWriteHost, osTestHost
<P>
→ ホストとDRAM間の転送データ <BR>
<P>
<B>構文<BR>
</B>
<P>
#include <ultra64.h>
<P>
void osReadHost(void *vAddr, s32 nbytes);
<P>
void osWriteHost(void *vAddr, s32 nbytes);
<P>
s32 osTestHost(void);<BR>
<P>
<B>説明<BR>
</B>
<P>
これらのルーチンはゲームがホストアプリケーションからデータの受け渡しをすることを許可します。それらはホスト側の<A HREF="../uh/uhOpenGame.htm" >uhOpenGame</A>(3P)中に記述されたルーチンと一緒に動作します。
<BR>
</FONT>
<P>
osReadHostルーチンはホストからnbytesのデータを受け取るゲーム側の接続をセットアップし、そしてそのデータをアドレスvAddrで始まるDRAMにコピーします。正確な同期を行うために、uhWriteGameと確実に同じバイト数にゲーム側を合わせてください。もしホストがライトを実行する前にゲーム側からリードを試みると、ゲームスレッドはブロックします。逆に言えば、ゲームがリードを実行する前にホストからライトを試みれば、ホストプロセスはブロックします。両方の側が正確に対応している手続きのコールを行ったときは、転送は実行され、ブロック中の側は再開します。
<BR>
<P>
osWriteHostルーチンはゲームが開始するvAddrからnbytesのデータをホストにコピーします。こういったケースでは、操作を行う際にホスト側でuhReadGame手続きと同じバイトのカウントに合わせておいてください。上記と同様、ホストとゲームの両方が通信を行うまでブロックします。
<BR>
<P>
DRAM仮想アドレスvAddrは8byte(64bit)整列であるべきですが、ホスト側の制約によって、転送サイズnbytesは4の倍数にしてください。加えて、rmonがロウレベルの同期を管理するために動作することも必要になります。
<BR>
<P>
<B>osTestHost</B>ルーチンはホストからデータを読むまでは、単に0を返します。それ以外は-1を返します。
<BR>
</FONT>
<P>
正確な開始方法とホストからの接続の使用方法については<A HREF="../uh/uhOpenGame.htm" >uhOpenGame</A>(3P)を参照してください。
<BR>
</FONT>
</BODY>
</HTML>