Advertisement
Guest User

hvqm2sp2.o

a guest
Nov 19th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.54 KB | None | 0 0
  1. headerbuf レコードヘッダ(HVQM2Record構造体)を格納するバッファ
  2.  *     bodybuf   レコードのデータ本体を格納するバッファ
  3.  *     type      要求レコードタイプ
  4.  *     stream    現在のHVQM2レコードアドレス
  5.  *     mb        PIマネージャに送るI/Oメッセージブロックリクエスト
  6.  *     mq        PIマネージャからDMA完了通知を受け取るメッセージキュー
  7.  *  
  8.  * 説明:
  9.  *     ROM内のHVQM2データアドレス stream から、次の type 型のレコードを
  10.  *     見つけて、そのレコードヘッダを headerbuf に、データ本体を bodybuf
  11.  *     に読み込みます。type には、音声レコードを読み込むには HVQM2_AUDIO
  12.  *     を、画像レコードを読み込むには HVQM2_VIDEO を指定してください。
  13.  *
  14.  *     このファンクションは、音声レコードの読み込みと画像レコードの読
  15.  *     み込みをそれぞれ別スレッドで並列に行うことを想定しています。し
  16.  *     たがって、PIマネージャに送るI/Oメッセージブロックリクエスト mb
  17.  *     と、このファンクション内でDMA完了メッセージを受け取るためのメッ
  18.  *     セージキュー mq は、音声レコード読み込み用のものと画像レコード
  19.  *     読み込み用のものをそれぞれ別個に予め準備しておく必要があります。
  20.  *
  21.  *     音声レコードの読み込みは、画像レコードの読み込みに優先して行わ
  22.  *     れます。
  23.  *
  24.  *     stream は2バイト整列でなければなりません。headerbuf および
  25.  *     bodybuf はR4300データキャッシュラインサイズに合わせて16バイト整
  26.  *     列にしてください。
  27.  *
  28.  *     bodybuf は必要十分な容量を確保してください。
  29.  *
  30.  * 戻り値:
  31.  *     次のレコードアドレス
  32.  */
  33. u8 *
  34. get_record( HVQM2Record *headerbuf, void *bodybuf, u16 type, u8 *stream, OSIoMesg *mb, OSMesgQueue *mq )
  35. {
  36.   u16 record_type;
  37.   u32 record_size;
  38.   s32 pri;
  39.  
  40.   pri = (type == HVQM2_AUDIO) ? OS_MESG_PRI_HIGH : OS_MESG_PRI_NORMAL;
  41.   for ( ; ; ) {
  42.     romcpy( headerbuf, stream, sizeof(HVQM2Record), pri, mb, mq );
  43.     stream += sizeof(HVQM2Record);
  44.     record_type = load16( headerbuf->type );
  45.     record_size = load32( headerbuf->size );
  46.     if ( record_type == type ) break;
  47.     stream += record_size;
  48.   }
  49.  
  50.   if ( record_size > 0 ) {
  51.     romcpy( bodybuf, stream, record_size, pri, mb, mq );
  52.     stream += record_size;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement