/* ＲＯＭ内部の謎の音声データプレイヤー */

#include <stdio.h>
#include <snd.h>
#include <stdlib.h>
#include <time.h>

char	swork[16384];			/* SNDﾄﾞﾗｲﾊﾞのワーク */

int		greeting();
int		sndinit();
int		pcmWait();

/* いきなりメイン関数 */
int		main(int argc,char *argv[])
{
	if (sndinit()!=0)				/* SNDﾄﾞﾗｲﾊﾞの初期化 */
	{
		return(1);					/* メッセージ出すとexpのサイズが増える！ */
	}
	
	/* パラメータが三つでは無い時 */
	if	(argc!=4)
	{
		greeting();					/* 時間に応じた挨拶をする */
		pcmWait();					/* 再生され終わるまで待つ */
		SND_end();					/* ドライバの終了*/
		return(0);
	}

	/* パラメータが三つある時 */
	/* 音程は６２or６１、音量は１２７がお勧め */

	char	*endptr;				/* strtol関数用ダミー　*/
	int		dat[3];					/* 0から番号,音量,音程 */
	int		i;						/* ループ用 */
	
	for (i=0;i<3;i++)
		dat[i]=strtol(argv[i+1],&endptr,10);

	SND_pcm_play_rom(71,dat[2],dat[1],dat[0]);

	pcmWait();
	SND_end();
	return(0);
}


/* 音源初期化 */
int		sndinit()
{
	int ret;
	ret=SND_init(swork);
    ret+=SND_elevol_mute(3);			/* 内蔵音源以外はミュート */
	ret+=SND_pcm_mode_set(1);			/* 音声モードに使うのは1音だけ */
	return (ret);
}


/* あいさつ関数 */
int		greeting()
{
	int		t;
	int		s;						/* s...PCMの種類代入用 */
	t=clock()/CLK_TCK;				/* t...今は今日の何秒目か */

	if ( (12*60*60>t)&&(t>5*60*60) )			/* 12:00より前,5:00より後*/
		s=1;						/* おはよお！ */
	else if ( (t<18*60*60)&&(t>=12*60*60) )		/* 18:00より前,12:00以降 */
		s=2;						/* こんにちは */
	else										/* それ以外 */
		s=3;						/* こんばんは */
		
	SND_pcm_play_rom(71,62,127,s);
	return(0);
}


/* ｐｃｍの再生終了まで待つ */
int		pcmWait()
{
	for(;;)
	{
		if ( SND_pcm_status(71)==0 )
			break;
	}
	return(0);
}
