/***********************************

		パズル「石狩」

					サウンド

 ***********************************/

#include	"common.h"
#include	"sound.h"


SoundIL		soundIL;				/* サウンド関数テーブル */

static Bool			sound_flag;					/* ドライバがあるか */
static void far*	sound_data[SOUND_MAX];		/* サウンドデータ */


/***********************************
    ＢＧＭ再生
		引数	 num = BGM番号
				mode = モード
 ***********************************/
void	play_music(int num, WORD mode)
{
	if ( sound_flag ) {
		bgm_play(sound_data[num], mode);	/* BGM再生 */
	}
}

/****************
    ＢＧＭ停止
 ****************/
void	stop_music(void)
{
	if ( sound_flag ) {
		bgm_stop();							/* BGM停止 */
	}
}

/**************************
    ＢＧＭフェードアウト
 **************************/
void	fadeout_music(void)
{
	if ( sound_flag ) {
		bgm_fadeout();						/* BGMフェードアウト */
	}
}

/******************************
    効果音再生
		引数	num = 音番号
 ******************************/
void	play_se(int num)
{
	if ( sound_flag ) {
		se_play_n(num);						/* 効果音再生 */
	}
}


/********************************
    サウンド初期化
		引数	res = リソース
		戻り値	次のリソース
 ********************************/
res_t far*	init_sound(res_t far* res)
{
	int		i;

	sound_flag = FALSE;
	if ( open_sound_il(&soundIL) == E_FS_SUCCESS ) {	/* ドライバオープン */
		sound_flag = TRUE;
		sounddrv_init();					/* ドライバ用ワークの確保 */
		sound_open();						/* HBLANK割り込み開始 */
	}

	for (i = 0; i < SOUND_MAX; i++) {
		sound_data[i] = (void far*)res;				/* サウンドデータ */
		res = (res_t far*)((char far*)res + (res->size << 4));
	}
	if ( sound_flag ) {
		se_play(sound_data[SOUND_EFFECT], -1);		/* 効果音設定 */
	}
	return	res;
}

/******************
    サウンド終了
 ******************/
void	end_sound(void)
{
	if ( sound_flag ) {
		sound_close();						/* HBLANK割り込み停止 */
		sounddrv_release();					/* ドライバ用ワークの開放 */
	}
}

/***************** End of Fle *******************************************/