nuauseqplayercontrol.c
1.95 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
/*======================================================================*/
/* NuSystem */
/* nuauseqplayercontrol.c */
/* */
/* Copyright (C) 1998, NINTENDO Co,Ltd. *
/* */
/* 98/11/26 Created by K.Ohki(SLANP) */
/*======================================================================*/
/* $Id: nuauseqplayercontrol.c,v 1.1.1.1 2002/10/30 02:07:09 blythe Exp $*/
/*======================================================================*/
#include <nusys.h>
#include <nualsgi.h>
/*----------------------------------------------------------------------*/
/* nuAuSeqPlayerControl - シーケンスのコントロール */
/* */
/* シーケンスのコントロールを行います。 */
/* この関数は,nuAuInit()でコールバック関数登録をされ、オーディオ */
/* マネージャから一定周期で呼び出されます。 */
/* この関数では,シーケンスのフェードアウトや停止,ポーズの処理を */
/* 行っています。カスタムのコールバック作成時の参考にしてください */
/* IN: 無し */
/* RET: 無し */
/*----------------------------------------------------------------------*/
void nuAuSeqPlayerControl(void)
{
int cnt;
int vol;
for(cnt = 0; cnt <2 ;cnt++)
{
if(nuAuSeqPlayer[cnt].mode & NU_AU_SEQ_MODE_PLAYPENDING)
{
if(nuAuSeqPlayerGetState(cnt) == AL_STOPPED)
{
/* ペンディングになっていた シーケンスの再生処理 */
nuAuSeqPlayerPlay(cnt);
nuAuSeqPlayer[cnt].mode &= ~NU_AU_SEQ_MODE_PLAYPENDING;
}
}
if(nuAuSeqPlayer[cnt].mode & NU_AU_SEQ_MODE_FADEOUT)
{
/* シーケンスのフェードアウト処理 */
if(nuAuSeqPlayer[cnt].counter == 0){
/* カウンターが0ならフラグを落してボリュームを0にする */
nuAuSeqPlayerSetVol(cnt, 0);
nuAuSeqPlayerStop(cnt);
nuAuSeqPlayer[cnt].mode &=~NU_AU_SEQ_MODE_FADEOUT;
nuAuSeqPlayerSetVol(cnt, 0x7fff);
} else {
vol = nuAuSeqPlayerGetVol(cnt);
vol -= nuAuSeqPlayer[cnt].speed;
nuAuSeqPlayerSetVol(cnt, vol);
nuAuSeqPlayer[cnt].counter--;
}
}
}
}