nuauseqplayerplay.c 1.54 KB
/*======================================================================*/
/*		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;
    }
}