/*
 *	work.h
 *
 *	P/ECEアプリケーションの雛型（CLiPライブラリ版）
 *
 *	* Tue Jul 23 21:01:00 JST 2002 Naoyuki Sawa
 *	- 作成開始。
 */

extern unsigned char			vbuff[DISP_X * DISP_Y];			//仮想VRAM

#if     (defined(USE_3D)||defined(USE_RENDF))
extern unsigned char			zbuff[DISP_X * DISP_Y];			//Ｚバッファ
#endif//(defined(USE_3D)||defined(USE_RENDF))

extern SURFACE				surface;				//仮想VRAMのサーフェイス情報
extern RENDER				render;					//仮想VRAMへの描画環境

//{{2017/08/28追加:タイマ管理を用いて周期処理の呼び出しを一元管理するように変更しました。
extern ST_TimMgr			stTimMgr;				//タイマ管理
extern int				TimMgr_timerId;				//タイマ管理を駆動している拡張タイマID
//}}2017/08/28追加:タイマ管理を用いて周期処理の呼び出しを一元管理するように変更しました。

//{{2017/08/26追加:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
#ifdef  USE_TEXTURE
extern TEXTURE				texture_table[(TexNo_Max+1)];		//テクスチャリスト
#endif//USE_TEXTURE
#ifdef  USE_SOUND
extern const void*			sound_table[(PhrNo_Max+1)];		//サウンドリスト
#endif//USE_SOUND
#ifdef  USE_MUSIC
extern /*const*/ void*			music_table[(MusNo_Max+1)];		//音楽リスト
#endif//USE_MUSIC
//}}2017/08/26追加:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。

//{{2018/05/11追加:メッシュ定義の生成規則を追加しました。
#ifdef  USE_MESH
extern const MESH*			mesh_table[(MeshNo_Max+1)];		//メッシュリスト
extern TEXTURE*				mesh_texture_table[(MeshNo_Max+1)];	//メッシュテクスチャリスト
#endif//USE_MESH
//}}2018/05/11追加:メッシュ定義の生成規則を追加しました。

//{{2017/08/25削除:常にリソースを使用するように変更しました。
//#ifdef  USE_RESOURCE
//}}2017/08/25削除:常にリソースを使用するように変更しました。
extern const void*			resource;				//pexファイル添付リソース
//{{2017/08/25削除:常にリソースを使用するように変更しました。
//#endif//USE_RESOURCE
//}}2017/08/25削除:常にリソースを使用するように変更しました。

//{{2017/08/25追加:常にリソースを使用するように変更しました。

#ifdef  USE_LOT
extern const int*			TBL_LotTblNo;				//抽選テーブル
#endif//USE_LOT

#ifdef  USE_SNR
extern ST_SnrSeq*			pSnrSeq;				//シナリオシーケンサ
extern const int*			TBL_SnrTblNo;
#endif//USE_SNR

#ifdef  USE_ANM
extern const int*			TBL_AnmSeqNo;				//アニメーションシーケンサ
#endif//USE_ANM

#ifdef  USE_NCS
extern const int*			TBL_NcsSeqNo;				//NCS補間シーケンサ
#endif//USE_NCS

#ifdef  USE_REG
extern const unsigned char*		TBL_RegTbl;				//レジストリテーブル
#endif//USE_REG

#ifdef  USE_SOUND_SEQUENCER
extern const int*			TBL_TapSeqNo;				//サウンドシーケンサ
#endif//USE_SOUND_SEQUENCER

#ifdef  USE_EVENT_TIMER
extern const int*			TBL_EvtTmrNo;				//イベントタイマ
#endif//USE_EVENT_TIMER

//}}2017/08/25追加:常にリソースを使用するように変更しました。

#ifdef  USE_RENDF
extern RENDF				rendf;					//浮動小数点3D描画環境
#endif//USE_RENDF

#ifdef  USE_CBKQUE
extern ST_CbkQue*			pCbkQue;				//コールバックキュー
#endif//USE_CBKQUE

#ifdef  USE_DLYQUE
extern ST_DlyQue*			pDlyQue;				//遅延コールバックキュー
#endif//USE_DLYQUE

#ifdef  USE_SOUND_MANAGER
extern ST_SndMgr*			pSndMgrBgm;				//BGM Sound Manager
extern ST_SndMgr*			pSndMgrSe1;				//SE1 Sound Manager
extern ST_SndMgr*			pSndMgrSe2;				//SE2 Sound Manager
#endif//USE_SOUND_MANAGER

#ifdef  USE_SOUND_MIXER
extern ST_TapMxr*			pTapMxr;				//TAPミキサー
#endif//USE_SOUND_MIXER

#ifdef  USE_SOUND_SEQUENCER
extern ST_TapSeq*			pTapSeq;				//TAPシーケンサ
#endif//USE_SOUND_SEQUENCER

#ifdef  USE_EVENT_TIMER
extern ST_EvtTmr*			pEvtTmr;				//イベントタイマ
#endif//USE_EVENT_TIMER

#ifdef  USE_COUNTER_MANAGER
extern ST_CntMgr*			pCntMgr;				//汎用カウンタ管理
#endif//USE_COUNTER_MANAGER

#ifdef  USE_DURATION_COUNTER
extern ST_DurCnt*			pDurCnt;				//存続カウンタ
#endif//USE_DURATION_COUNTER

#ifdef  USE_LOG_BUFFER
extern ST_LogBuf*			pLogBuf;				//ログバッファ
#endif//USE_LOG_BUFFER

#ifdef  USE_NVLOG
extern unsigned char			nvlog[NVLOG_SIZE];			//不揮発性ログバッファ
extern FILEACC				faNvLog;				//nvlog.bin
#endif//USE_NVLOG

#ifdef  USE_TCL
extern Tcl_Interp*			iPtr;					//Tclインタプリタ
#endif//USE_TCL

#ifdef  USE_LED
extern ST_LedSeq*			pLedSeq;				//LEDシーケンサ
//{{2017/08/25追加:常にリソースを使用するように変更しました。
extern const int*			TBL_LedSeqNo;
//}}2017/08/25追加:常にリソースを使用するように変更しました。
#endif//USE_LED

#if     (defined(USE_ENM)&&defined(USE_REG))
extern const void*			pEnmKey;				//列挙定義キー
#endif//(defined(USE_ENM)&&defined(USE_REG))

#ifdef  USE_PRP
extern const void*			pPrpKey;				//プロパティテーブルキー
#ifdef  PrpTbl_App
extern					PrpHdr_def(App,phApp);			//プロパティヘッダ		//ﾃﾝﾌﾟﾚｰﾄとして1個だけ定義しました｡必要に応じて定義を追加して下さい｡
#endif//PrpTbl_App
#endif//USE_PRP

#ifdef  USE_FSM
extern const void*			pFsmKey;				//有限状態機械マップキー
#ifdef  FsmMap_App
extern ST_FsmObj			foApp;					//有限状態機械		//ﾃﾝﾌﾟﾚｰﾄとして1個だけ定義しました｡必要に応じて定義を追加して下さい｡
#endif//FsmMap_App
#endif//USE_FSM

#ifdef  USE_ACT
extern ST_ActObj*			aoRoot;					//アクターオブジェクト	//ﾙｰﾄﾉｰﾄﾞとして1個だけ定義しました｡必要に応じて定義を追加して下さい｡
#endif//USE_ACT

#ifdef  USE_RRS
extern ST_RRS*				pRRS;					//Round Robin Scheduler (RRS)
#endif//USE_RRS

#ifdef  USE_MSGHSK
extern ST_MsgHsk			stMsgHsk;				//メッセージハンドシェイク
#endif//USE_MSGHSK

#ifdef  USE_NUKLEAR
extern struct nk_context*		ctx;					//Nuklearコンテキスト
#endif//USE_NUKLEAR

extern int				now;					//グローバルタイマ
extern int				joy;					//パッド状態
