nuauseqplayerplay.c
1.54 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
/*======================================================================*/
/* NuSYS */
/* nuauseqplayerplay.c */
/* */
/* Copyright (C) 1997, NINTENDO Co,Ltd. */
/* */
/*======================================================================*/
/* $Id: nuauseqplayerplay.c,v 1.1.1.1 2002/10/30 02:07:09 blythe Exp $ */
/*======================================================================*/
#include <nusys.h>
#include <nualsgi.h>
/*----------------------------------------------------------------------*/
/* nuAuSeqPlayerPlay -シーケンスプレイヤーのシーケンス再生 */
/* IN: player_no シーケンスプレイヤーの番号 */
/* NU_AU_SEQ_PLAYER0 or NU_AU_SEQ_PLAYER1 */
/* RET: 無し */
/*----------------------------------------------------------------------*/
void nuAuSeqPlayerPlay(u32 player_no)
{
if(nuAuSeqPlayerGetState(player_no) == AL_STOPPED)
{
alCSeqNew(&nuAuSeqPlayer[player_no].sequence,
nuAuSeqPlayer[player_no].data_ptr);
alCSPSetSeq(&nuAuSeqPlayer[player_no].player,
&nuAuSeqPlayer[player_no].sequence);
alCSPPlay(&nuAuSeqPlayer[player_no].player);
}
else
{
nuAuSeqPlayerStop(player_no);
/*
リリース中に、再生スタートするとテンポがおかしくなるため
完全にプレーヤが停止するのを待ってから再生するように、
NU_AU_SEQ_MODE_PLAYPENDING フラグをセットします。
再生待ち処理は リトレース毎に auSeqPlayerControl() で行われ、
AL_STOPPED になった時、再度 nuAuSeqPlayerPlay() が呼ばれます。
*/
nuAuSeqPlayer[player_no].mode |= NU_AU_SEQ_MODE_PLAYPENDING;
}
}