/*
 * $Id: m_bgm.h,v 1.1 2003/06/06 00:15:12 tong Exp $
 *
 *	BGM 設定処理
 *
 * $Log: m_bgm.h,v $
 * Revision 1.1  2003/06/06 00:15:12  tong
 * source files for localization from Nintendo.
 *
 * Revision 1.34  2001-02-02 20:22:07+09  sakakibara
 * コメント修正
 *
 * Revision 1.33  2001-01-25 21:06:53+09  sakakibara
 * ＭＤプレイヤの設定関数変更
 *
 * Revision 1.32  2000-12-23 20:36:09+09  sakakibara
 * シーンモード
 *
 * Revision 1.31  2000-12-23 14:17:37+09  sakakibara
 * コメント修正
 *
 * Revision 1.30  2000-12-23 00:12:00+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.29  2000-12-23 00:09:29+09  sakakibara
 * ＭＤプレイヤ位置
 *
 * Revision 1.28  2000-12-19 22:43:30+09  sakakibara
 * 自然消滅
 *
 * Revision 1.27  2000-12-06 23:43:17+09  sakakibara
 * ポーズ連絡修正
 *
 * Revision 1.26  2000-12-04 20:05:16+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.25  2000-12-04 16:23:18+09  sakakibara
 * QuietField
 *
 * Revision 1.24  2000-11-18 01:19:56+09  sakakibara
 * stop が u16 に。
 *
 * Revision 1.23  2000-11-15 15:50:25+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.22  2000-11-14 20:22:53+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.21  2000-11-13 17:31:29+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.20  2000-11-13 13:01:22+09  sakakibara
 * Room Nonstop
 *
 * Revision 1.19  2000-10-31 23:22:38+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.18  2000-10-31 21:00:04+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.17  2000-10-31 16:23:52+09  sakakibara
 * コメント修正
 *
 * Revision 1.16  2000-10-31 15:15:02+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.15  2000-10-31 15:02:40+09  sakakibara
 * ハプニング
 *
 * Revision 1.14  2000-10-31 14:06:30+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.13  2000-10-30 15:34:29+09  sakakibara
 * コメント修正
 *
 * Revision 1.12  2000-10-28 23:45:20+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.11  2000-10-28 17:41:16+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.10  2000-10-28 17:35:45+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.9  2000-10-28 17:34:33+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.8  2000-10-27 23:14:17+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.7  2000-10-04 18:02:49+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.6  2000-09-28 21:57:25+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.5  2000-09-27 21:01:30+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.4  2000-09-26 23:08:34+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.3  2000-09-25 19:40:09+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.2  2000-09-25 14:49:44+09  sakakibara
 * *** empty log message ***
 *
 * Revision 1.1  2000-09-21 15:14:40+09  sakakibara
 * Initial revision
 *
 */
#ifndef INCLUDE_M_BGM_H
#define INCLUDE_M_BGM_H

#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif

#include "m_basic.h"
#include "game.h"

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	ＢＧＭプロセス生成関数宣言
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	【カテゴリーファンファーレ】プロセスを生成する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_GET_MUSHI)
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_fanfare_DEBUG(u8 bgm_num, u16 stop_type_ex,
					     const char *file, int line);
#define mBGMPsComp_make_ps_fanfare(arg0, arg1)	mBGMPsComp_make_ps_fanfare_DEBUG((arg0), (arg1), __FILE__, __LINE__)  
#else
extern void mBGMPsComp_make_ps_fanfare(u8 bgm_num, u16 stop_type_ex);
#endif

/*
 *	【カテゴリーファンファーレ】プロセスを生成する
 *	(ＢＧＭ, 停止方法指定)(自然消滅タイプ)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_GET_MUSHI)
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_lost_fanfare_DEBUG(u8 bgm_num, u16 stop_type_ex,
						  const char *file, int line);
#define mBGMPsComp_make_ps_lost_fanfare(arg0, arg1)	mBGMPsComp_make_ps_lost_fanfare_DEBUG((arg0), (arg1), __FILE__, __LINE__)  
#else
extern void mBGMPsComp_make_ps_lost_fanfare(u8 bgm_num, u16 stop_type_ex);
#endif

/*
 *	【カテゴリーワイプ】プロセスを生成する
 *	(停止方法指定)
 *
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_wipe_DEBUG(u16 stop_type_ex,
					  const char *file, int line);
#define mBGMPsComp_make_ps_wipe(arg0)	mBGMPsComp_make_ps_wipe_DEBUG((arg0), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_wipe(u16 stop_type_ex);
#endif

/*
 *	【カテゴリー無音】プロセスを生成する
 *	(停止方法指定)
 *
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_quiet_DEBUG(u16 stop_type_ex,
					   const char *file, int line);
#define mBGMPsComp_make_ps_quiet(arg0)	mBGMPsComp_make_ps_quiet_DEBUG((arg0), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_quiet(u16 stop_type_ex);
#endif

/*
 *	【カテゴリー無音】プロセスを生成する
 *	(停止方法指定, カウンタ)
 *
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 *	counter		: カウンタ(frame)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_co_quiet_DEBUG(u16 stop_type_ex, short counter,
					      const char *file, int line);
#define mBGMPsComp_make_ps_co_quiet(arg0, arg1)	mBGMPsComp_make_ps_co_quiet_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_co_quiet(u16 stop_type_ex, short counter);
#endif

/*
 *	【カテゴリーデモ】プロセスを生成する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_GAMETITLE)
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_demo_DEBUG(u8 bgm_num, u16 stop_type_ex,
					  const char *file, int line);
#define mBGMPsComp_make_ps_demo(arg0, arg1)	mBGMPsComp_make_ps_demo_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_demo(u8 bgm_num, u16 stop_type_ex);
#endif

/*
 *	【カテゴリーハプニング】プロセスを生成する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_happening_DEBUG(u8 bgm_num, u16 stop_type_ex,
					       const char *file, int line);
#define mBGMPsComp_make_ps_happening(arg0, arg1)	mBGMPsComp_make_ps_happening_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_happening(u8 bgm_num, u16 stop_type_ex);
#endif

/*
 *	【カテゴリー室内】プロセスを生成する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_POSTOFFICE)
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_room_DEBUG(u8 bgm_num, u16 stop_type_ex,
					  const char *file, int line);
#define mBGMPsComp_make_ps_room(arg0, arg1)	mBGMPsComp_make_ps_room_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_room(u8 bgm_num, u16 stop_type_ex);
#endif

/*
 *	【カテゴリー無音(Field)】プロセスを生成する
 *	(停止方法指定)
 *
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_quietField_DEBUG(u16 stop_type_ex,
						   const char *file, int line);
#define mBGMPsComp_make_ps_quietField(arg0)	mBGMPsComp_make_ps_quietField_DEBUG((arg0), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_quietField(u16 stop_type_ex);
#endif

/*
 *	【カテゴリー無音(Field)】プロセスを生成する
 *	(停止方法指定, フェイドアウトチェック)
 *
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_make_ps_fc_quietField_DEBUG(u16 stop_type_ex,
						   const char *file, int line);
#define mBGMPsComp_make_ps_fc_quietField(arg0)	mBGMPsComp_make_ps_fc_quietField_DEBUG((arg0), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_fc_quietField(u16 stop_type_ex);
#endif

/*
 *	【カテゴリーフィールド(突発的イベント)】プロセスを生成する
 *	(ＢＧＭ, 停止方法, Sub Priority 指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_FIELD_00)
 *	stop_type_ex	: このプロセスが起動するときに実行状態の
 *			  プロセスのＢＧＭを停止させる方法。(例:BGM_STOP_NORMAL)
 *	sub_prio	: Sub Priority
 */
#if DEBUG
extern void mBGMPsComp_make_ps_fieldSuddenEv_DEBUG(u8 bgm_num, u16 stop_type_ex,
						   unchar sub_prio,
						   const char *file, int line);
#define mBGMPsComp_make_ps_fieldSuddenEv(arg0, arg1, arg2)	mBGMPsComp_make_ps_fieldSuddenEv_DEBUG((arg0), (arg1), (arg2), __FILE__, __LINE__)
#else
extern void mBGMPsComp_make_ps_fieldSuddenEv(u8 bgm_num, u16 stop_type_ex,
					     unchar sub_prio);
#endif
#define MBGM_FIELDSUDDENEV_SUB_PRIO_FIRSTFIELD	0	/*  */

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	ＢＧＭプロセス削除予約関数宣言
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	【カテゴリーファンファーレ】プロセスを削除予約する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_GET_MUSHI)
 *	stop_type_my	: このプロセスのＢＧＭを停止させる方法。
 *			  (例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_delete_ps_fanfare_DEBUG(u8 bgm_num, u16 stop_type_my,
					       const char *file, int line);
#define mBGMPsComp_delete_ps_fanfare(arg0, arg1)	mBGMPsComp_delete_ps_fanfare_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_delete_ps_fanfare(u8 bgm_num, u16 stop_type_my);
#endif

/*
 *	【カテゴリー無音】プロセスを削除予約する
 */
#if DEBUG
extern void mBGMPsComp_delete_ps_quiet_DEBUG(const char *file, int line);
#define mBGMPsComp_delete_ps_quiet()	mBGMPsComp_delete_ps_quiet_DEBUG(__FILE__, __LINE__)
#else
extern void mBGMPsComp_delete_ps_quiet(void);
#endif

/*
 *	【カテゴリーデモ】プロセスを削除予約する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_GAMETITLE)
 *	stop_type_my	: このプロセスのＢＧＭを停止させる方法。
 *			  (例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_delete_ps_demo_DEBUG(u8 bgm_num, u16 stop_type_my,
					    const char *file, int line);
#define mBGMPsComp_delete_ps_demo(arg0, arg1)	mBGMPsComp_delete_ps_demo_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_delete_ps_demo(u8 bgm_num, u16 stop_type_my);
#endif

/*
 *	【カテゴリーハプニング】プロセスを削除予約する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:.........)
 *	stop_type_my	: このプロセスのＢＧＭを停止させる方法。
 *			  (例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_delete_ps_happening_DEBUG(u8 bgm_num, u16 stop_type_my,
					    const char *file, int line);
#define mBGMPsComp_delete_ps_happening(arg0, arg1)	mBGMPsComp_delete_ps_happening_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_delete_ps_happening(u8 bgm_num, u16 stop_type_my);
#endif

/*
 *	【カテゴリー室内】プロセスを削除予約する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_POSTOFFICE)
 *	stop_type_my	: このプロセスのＢＧＭを停止させる方法。
 *			  (例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_delete_ps_room_DEBUG(u8 bgm_num, u16 stop_type_my,
					    const char *file, int line);
#define mBGMPsComp_delete_ps_room(arg0, arg1)	mBGMPsComp_delete_ps_room_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_delete_ps_room(u8 bgm_num, u16 stop_type_my);
#endif

/*
 *	【カテゴリー無音(Field)】プロセスを削除予約する
 */
#if DEBUG
extern void mBGMPsComp_delete_ps_quietField_DEBUG(const char *file, int line);
#define mBGMPsComp_delete_ps_quietField()	mBGMPsComp_delete_ps_quietField_DEBUG(__FILE__, __LINE__)
#else
extern void mBGMPsComp_delete_ps_quietField(void);
#endif

/*
 *	【カテゴリーフィールド(突発的イベント)】プロセスを削除予約する
 *	(ＢＧＭ, 停止方法指定)
 *
 *	bgm_num		: ＢＧＭ number	(例:BGM_FIELD_00)
 *	stop_type_my	: このプロセスのＢＧＭを停止させる方法。
 *			  (例:BGM_STOP_NORMAL)
 */
#if DEBUG
extern void mBGMPsComp_delete_ps_fieldSuddenEv_DEBUG(u8 bgm_num, u16 stop_type_my,
						     const char *file, int line);
#define mBGMPsComp_delete_ps_fieldSuddenEv(arg0, arg1)	mBGMPsComp_delete_ps_fieldSuddenEv_DEBUG((arg0), (arg1), __FILE__, __LINE__)
#else
extern void mBGMPsComp_delete_ps_fieldSuddenEv(u8 bgm_num, u16 stop_type_my);
#endif

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	会話状態連絡関数宣言
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	会話開始連絡 (会話用ボリュームセット)
 */
extern void mBGMPsComp_volume_talk_start(void);

/*
 *	会話終了連絡 (会話用ボリュームリセット)
 */
extern void mBGMPsComp_volume_talk_end(void);


/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	ポーズ状態連絡関数宣言
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	ＢＧＭポーズ状態列挙
 */
typedef enum {
    mBGM_Pause_Wait,		/* 待ち */
    
    mBGM_Pause_Start_Normal,	/* ポーズ開始瞬間 (通常 Pause) */
    mBGM_Pause_Start_Zero,	/* ポーズ開始瞬間 (Zero Pause) */
    mBGM_Pause_Start_BBS,	/* ポーズ開始瞬間 (BBS Pause) */
    
    mBGM_Pause_Now,		/* ポーズ中 */
    
    mBGM_Pause_End,		/* ポーズ終了瞬間 */
    
    mBGM_Pause_Max
} mBGM_Pause;


/*
 *	ポーズ連絡 (ポーズ用ボリューム設定)
 */
extern void mBGMPsComp_pause(mBGM_Pause pause_mode);


/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	昆虫採集状態連絡関数宣言
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	昆虫採集開始連絡 (昆虫採集ボリュームセット)
 */
extern void mBGMPsComp_volume_collect_insects_start(void);

/*
 *	昆虫採集終了連絡 (昆虫採集ボリュームリセット)
 */
extern void mBGMPsComp_volume_collect_insects_end(void);


/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	ＭＤプレイヤ位置設定関数 宣言
 *
 *	【イメージ】
 *
 *　　　　　　　再生開始　　　　　　　　ＭＤ入替　　再生終了
 *╂─────╂────╂──────╂─────╂──────╂────╂
 *　　　　　　　　　　　　MDPlayerPos　MDPlayerPos　MDPlayerPos　・・・
 *　　　　　　　　　　　　　　　　　 　BgmStop　　　BgmStop
 *　　　　　　 BgmStart　　　　　　　　BgmStart
 *　GameFrame　GameFrame　GameFrame　　GameFrame　　GameFrame　　GameFrame
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	ＭＤプレイヤ位置設定 登録
 *
 *	・登録した次のフレームから設定されます。
 */
extern void mBGMPsComp_MDPlayerPos_make(void);

/*
 *	ＭＤプレイヤ位置設定 削除
 *
 *	・これを呼んだフレームまで設定されます。
 */
extern void mBGMPsComp_MDPlayerPos_delete(void);

/*
 *	ＭＤプレイヤ位置パラメータ設定
 *
 *	pos		: 座標値
 *	objangle	: 角度
 *	kagunum		: 家具番号
 *	ongennum	: オブジェクト（音の発生源）の固有値
 */
extern void mBGMPsComp_MDPlayerPos_param_set(const xyz_t *pos, u16 objangle,
					     u16 kagunum, u32 ongennum);


/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	シーンモード切替
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	シーンモード切替
 *
 *	status	: シーンモード値
 */
#if DEBUG
extern void mBGMPsComp_scene_mode_DEBUG(u8 status, const char *file, int line);
#define mBGMPsComp_scene_mode(arg0)	mBGMPsComp_scene_mode_DEBUG((arg0), __FILE__, __LINE__)
#else
extern void mBGMPsComp_scene_mode(u8 status);
#endif


/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	ＢＧＭプロセス構成クラス情報取得
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	現在実行中のプロセスのＢＧＭ番号を取得する
 *	未登録時や実体が無い場合は ─１ が返る
 */
extern int mBGMPsComp_execute_bgm_num_get(void);

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	イベント告知連絡
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	イベント告知 開始決定連絡
 *	(告知シーンに切替が決定した瞬間に呼ばれる。)
 */
extern void mBGMForce_inform_start(void);

/*
 *	イベント告知 終了決定連絡
 *	(元のシーンに切替が決定した瞬間に呼ばれる。)
 */
extern void mBGMForce_inform_end(void);

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	標準非停止連絡
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*
 *	【部屋カテゴリーのＢＧＭがシーン切替により停止しないことを連絡する。】
 *
 *	・シーンに切替が決定した瞬間に、ワイプ生成が呼ばれる以前に呼ぶ。
 *	・ワイプ生成と同じフレームで呼ぶときは、先にこの関数を呼ぶ。
 *	・ゲームのメインから呼ぶこと。
 */
#if DEBUG
extern void mBGMForce_room_nonstop_start_DEBUG(const char *file, int line);
#define mBGMForce_room_nonstop_start()	mBGMForce_room_nonstop_start_DEBUG(__FILE__, __LINE__)
#else
extern void mBGMForce_room_nonstop_start(void);
#endif

#if 0	/* 削除 */
/*
 *	【部屋カテゴリーのＢＧＭがシーン切替により停止しないことを
 *	  連絡したのを取り止める。】
 *
 *	・ワイプ生成が呼ばれる以前に呼ぶ。
 *	・ワイプ生成と同じフレームで呼ぶときは、先にこの関数を呼ぶ。
 *	・ゲームのメインから呼ぶこと。
 */
extern void mBGMForce_room_nonstop_cancel(void);
#endif

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	メイン処理
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
/*--------------------------------------------*
 *	メイン処理
 *--------------------------------------------*/
extern void mBGM_main(GAME *game);

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	コンストラクト
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
extern void mBGM_ct(void);

#if 0
/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	デストラクト
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
extern void mBGM_dt(void);
#endif

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	イニシャル
 *	game_ct の init 以降 (play の場合 Field の ct 以降)
 *	に呼ばれる。
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
extern void mBGM_init(void);

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	Clean Up
 *	game_dt の cleanup 以前 (play の場合 Field の dt 以前)
 *	に呼ばれる。
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
extern void mBGM_cleanup(void);

/*━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*
 *
 *	ソフトリセット処理
 *
 *━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━*/
extern void mBGM_reset(void);


#ifdef _LANGUAGE_C_PLUS_PLUS
} /* extern "C" */
#endif

#endif
