/******************************************************************************
	[App.h]
		アプリケーションのインタフェイスを定義します．

	Copyright (C) 2004 Ki

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
******************************************************************************/
#ifndef APP_H_INCLUDED
#define APP_H_INCLUDED

#include "TypeDefs.h"
#include "Input.h"

#define	APP_CONFIG_FILENAME	"Ootake.dat" //Kitao更新

//Kitao追加
#ifndef SPI_GETFOREGROUNDLOCKTIMEOUT
#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
#endif
#ifndef SPI_SETFOREGROUNDLOCKTIMEOUT
#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
#endif


enum AppEvent
{
	APP_IDLE,
	APP_QUIT,
};

BOOL
APP_Init(
	int		argc,
	char**	argv);

Sint32
APP_ProcessEvents();

BOOL
APP_Deinit();

//Kitao追加
void
APP_RunEmulator(
	BOOL	bRun);

//Kitao追加
BOOL
APP_GetCDGame();

//Kitao追加
void
APP_SetCDGame();

//Kitao追加
void
APP_SetGameFileNameBuf();

//Kitao追加。ウィンドウの位置を保存。WinMain.cからも使用。
void
APP_SaveWindowPosition();

//Kitao追加。V-SyncメニューをEnableまたは灰色に。
void
APP_EnableVSyncMenu(
	BOOL screen60hz);

//Kitao追加。メニューを表示中かどうかを返す
BOOL
APP_GetRunning();

//Kitao追加。アプリケーション(Ootake)のパスを返す。
char*
APP_GetAppPath();

//Kitao追加。CDインストール用のフルパスを返す。v2.81
char*
APP_GetCDInstallPath();

//Kitao追加。使用するCDドライブのナンバーを返す。※0なら１台目。1なら２台目。
Sint32
APP_GetCurrentCdDrive();

//Kitao追加。PSGのボリュームを返す。
Uint32
APP_GetPsgVolume();

//Kitao追加。ADPCMのボリュームを返す。
Uint32
APP_GetAdpcmVolume();

//Kitao追加。CDのボリュームを返す。
Uint32
APP_GetCdVolume();

//Kitao追加
void
APP_SetStretched(
	BOOL	bStretched,
	BOOL	bVStretched,
	BOOL	bFullStretched,
	Sint32	ArcadeStretched,
	BOOL	bUpdate);

//Kitao追加
void
APP_SetStartStretchMode(
	Sint32	startStretchMode);

//v2.64追加
Sint32
APP_GetStartStretchMode();

//Kitao追加。v2.95
void
APP_SetOverscanTV(
	BOOL	bOverscanTV);

//Kitao追加。v2.95
BOOL
APP_GetOverscanTV();

//Kitao追加。v2.95
void
APP_SetOverscanTvShift(
	Sint32	overscanTvShift);

//Kitao追加。v2.95
Sint32
APP_GetOverscanTvShift();

//Kitao追加
void
APP_TurboCycleMenu(
	BOOL	bAuto);

//Kitao追加
void
APP_SetAutoOverClock(
	Sint32	n);

//Kitao追加
void
APP_SetSpeedNormal();

//Kitao追加
Sint32
APP_GetRenshaSpeedSel();

//Kitao追加
void
APP_SetRenshaSpeedSel(
	Sint32	renshaSpeedSel);

//Kitao追加
void
APP_EndRecording();

//Kitao追加
void
APP_EndPlayRecord();

//Kitao追加
void
APP_SetFullScreen(
	BOOL	bFullScreen);

//Kitao追加
BOOL
APP_GetFullScreen();

//Kitao追加
BOOL
APP_GetHideMessage();

//Kitao追加
BOOL
APP_GetFullHideMessage();

//Kitao追加
void
APP_SetHideMessage(
	BOOL	bHideMessage);

//Kitao追加
void
APP_SetFullHideMessage(
	BOOL	bFullHideMessage);

//Kitao追加
BOOL
APP_GetDefaultFastCD();

//Kitao追加
BOOL
APP_GetDefaultFastSeek();

//Kitao追加
BOOL
APP_GetDefaultSpriteLimit();

//Kitao追加
void
APP_SetInputConfiguration();

//Kitao追加
char*
APP_GetGameFileNameBuf();

//Kitao追加
char*
APP_GetGameFilePathName();

//Kitao追加
void
APP_SetAppName(
	char*	pAppName);

//Kitao追加
char*
APP_GetAppName();

//Kitao追加
BOOL
APP_GetStretched();

//Kitao追加
BOOL
APP_GetStartStretched();

//Kitao追加
BOOL
APP_GetVStretched();

//ｖ3.05追加
Sint32
APP_GetArcadeStretched();

//Kitao追加
BOOL
APP_GetFullStretched(
	BOOL	bFilter);

//Kitao追加
BOOL
APP_GetVSyncScreen();

//Kitao追加
void
APP_SetVSyncScreen(
	BOOL	bVSyncScreen);

//Kitao追加
Sint32
APP_GetScanlineType();

//Kitao追加
void
APP_SetScanlineType(
	Sint32	scanlineType,
	BOOL	configWrite);

//Kitao追加
Sint32
APP_GetScanlineDensity();

//Kitao追加
BOOL
APP_GetOptimizeGamma();

//Kitao追加
double
APP_GetGammaValue();

//Kitao追加
Sint32
APP_GetBrightValue();

//Kitao追加
BOOL
APP_GetHalfMode();

//Kitao追加
Sint32
APP_GetMonoColorMode();

//Kitao追加
void
APP_SetUseVideoSpeedUpButton(
	BOOL	bUseVideoSpeedUpButton);

//Kitao追加
BOOL
APP_GetUseVideoSpeedUpButton();

//Kitao追加
void
APP_ToggleUseVideoSpeedUpButton();

//Kitao追加
void
APP_MenuShow(
	BOOL	bShow);

//Kitao追加
void
APP_SetForegroundWindowOotake();

//Kitao追加
BOOL
APP_GetWindows9x();

//Kitao追加
BOOL
APP_GetWindowsVista();

//Kitao追加
BOOL
APP_GetWindows7();

//Kitao追加
BOOL
APP_GetWindows10();

//Kitao追加
BOOL
APP_GetPauseNoRelease();

//Kitao追加
void
APP_ResetMouseStopCount();

//Kitao追加
void
APP_SetF1NoReset(
	BOOL	bF1NoReset);

//Kitao追加
BOOL
APP_GetF1NoReset();

//Kitao追加
void
APP_UpdateMenu();

//Kitao追加
void
APP_OpenInstallFolder();

//Kitao追加
void
APP_OpenSaveFolder();

//Kitao追加
void
APP_OpenMB128Folder();

//Kitao追加
void
APP_SetStartFullScreen(
	BOOL	bStartFullScreen);

//Kitao追加
BOOL
APP_GetStartFullScreen();

//Kitao追加
void
APP_SetSoundMethod(
	Sint32	soundMethod);

//Kitao追加
Sint32
APP_GetSoundMethod();

//Kitao追加
void
APP_SetSoundType(
	Sint32	soundType);

//Kitao追加
Sint32
APP_GetSoundType();

//Kitao追加
BOOL
APP_GetAutoStereo();

//Kitao追加
BOOL
APP_GetAutoGradiusII();

//Kitao追加
BOOL
APP_GetSorcerianOpSkip();

//Kitao追加
BOOL
APP_GetSorcerianBgmAdjust();

//Kitao追加
BOOL
APP_GetShinMegamiTenseiFix();

//Kitao追加
BOOL
APP_GetTokimemoLeftClick();

//Kitao追加
BOOL
APP_GetTenka1552Mouse();

//Kitao追加
BOOL
APP_GetDariusOldCDROM2();

//Kitao追加
BOOL
APP_GetDarius26Tai();

//Kitao追加
BOOL
APP_GetRTypeCDDemoSkip();

//Kitao追加
BOOL
APP_OutputWavEnd();

//Kitao追加
BOOL
APP_GetOutputWavNext();

//Kitao追加
char*
APP_GetWavFileName();

//Kitao追加
BOOL
APP_GetUseVideoCardMemory();

//Kitao追加
BOOL
APP_GetWindowTopMost();

//Kitao追加。v2.48
void
APP_SetWindowTopMostTemp(
	BOOL	bWindowTopMost);

//Kitao追加
Sint32
APP_GetCustomWidth1();
Sint32
APP_GetCustomHeight1();
Sint32
APP_GetCustomWidth2();
Sint32
APP_GetCustomHeight2();
Sint32
APP_GetCustomWidth3();
Sint32
APP_GetCustomHeight3();

//Kitao追加
BOOL
APP_GetResolutionAutoChange();

//Kitao追加
BOOL
APP_AutoChangeScreenMode(
	Sint32	magnification);

//Kitao追加
Sint32
APP_GetSoundBufferSize();

//Kitao追加
void
APP_SetSoundBufferSize(
	Sint32	bufSize);

//Kitao追加
Sint32
APP_GetPsgQuality();

//Kitao追加
void
APP_SetPsgQuality(
	Sint32	psgQuality);

//Kitao追加
void
APP_SetRemoveDisplayLagFrame(
	Sint32	removeDisplayLagFrame);

//Kitao追加。v2.88
Sint32
APP_GetRemoveDisplayLagFrame();

//Kitao追加
BOOL
APP_GetJoypadBackground();

//Kitao追加。v2.48
void
APP_SetJoypadBackgroundTemp(
	BOOL	bJoypadBackground);

//Kitao追加
BOOL
APP_GetKeyboardBackground();

//Kitao追加
BOOL
APP_UpdateScreenMode(
	BOOL	bWindowCenter,
	BOOL	bToggleToWindow);

//Kitao追加
BOOL
APP_GetInit();

//Kitao追加
void
APP_SetShowOverscanTop(
	Sint32	showOverscanTop);

//Kitao追加
void
APP_SetShowOverscanBottom(
	Sint32	showOverscanBottom);

//Kitao追加
void
APP_SetShowOverscanLeft(
	Sint32	showOverscanLeft);

//Kitao追加
void
APP_SetShowOverscanRight(
	Sint32	showOverscanRight);

//Kitao追加
void
APP_SetShowOverscanHeight(
	Sint32	showOverscanHeight);

//Kitao追加
BOOL
APP_GetOverscanHideBlackBelt();

//Kitao追加
Sint32
APP_GetStartShowOverscanTop();

//Kitao追加
Sint32
APP_GetStartShowOverscanBottom();

//Kitao追加
Sint32
APP_GetStartShowOverscanLeft();

//Kitao追加
BOOL
APP_GetOverscanHideBlackTop();

//Kitao追加
BOOL
APP_GetOverscanHideBlackBottom();

//Kitao追加
BOOL
APP_GetOverscanHideBlackLR();

//Kitao追加
Sint32
APP_GetWindowsVolume();

//Kitao追加
void
APP_ResumeWindowsVolume(
	Sint32	windowsVolume);

//Kitao追加
Sint32
APP_GetMySetOverClockType();

//Kitao追加
Uint32
APP_GetVolumeEffect();

//Kitao追加
void
APP_ReturnCaption();

//Kitao追加
char*
APP_StrToLower(
	char*	pStr);

//Kitao追加
char*
APP_ExtractFileName(
	char*	p);

//Kitao追加
char*
APP_ExtractFileExt(
	char*	p);

//Kitao追加
BOOL
APP_GetShowFPS();

//Kitao追加
void
APP_SetShowFPS(
	BOOL	bShowFPS);

//Kitao追加
BOOL
APP_GetShowAudioGraph();

//Kitao追加
Sint32
APP_GetAudioGraphPos();

//Kitao追加
Sint32
APP_GetAudioGraphDelay();

//Kitao追加
Sint32
APP_GetDrawMethod();

//Kitao追加
Sint32
APP_GetDrawMethod();

//Kitao追加
void
APP_SetDrawMethod(
	Sint32	drawMethod);

//Kitao追加
Sint32
APP_GetD3DEffect();

//Kitao追加
Sint32
APP_GetScreenWidth();

//Kitao追加
Sint32
APP_GetScreenHeight();

//Kitao追加
void
APP_SetScreenWH(
	Sint32	screenW,
	Sint32	screenH);

//Kitao追加
void
APP_SetFullScreen800();

//Kitao追加
void
APP_SetMagnification(
	Sint32	magnification);

//Kitao追加
BOOL
APP_GetSpriteLayer();

//Kitao追加
BOOL
APP_GetSprite2Layer();

//Kitao追加
BOOL
APP_GetBGLayer();

//Kitao追加
BOOL
APP_GetBG2Layer();

//Kitao追加
BOOL
APP_GetInvalidateCdInstall();

//Kitao追加
char*
APP_ChangeToOtherSysCard1();

//Kitao追加
char*
APP_ChangeToOtherSysCard2();

//Kitao追加
void
APP_ClearOtherSysCard1();

//Kitao追加
void
APP_ClearOtherSysCard2();

//Kitao追加
Sint32
APP_GetNonstretchedWidth();

//Kitao追加
Sint32
APP_GetGameWidth(
	Sint32	magnification);

//Kitao追加
Sint32
APP_GetGameHeight(
	Sint32	magnification);

//Kitao追加
Sint32
APP_GetInputRecordMode();

//Kitao追加
Sint32
APP_GetInputPlayRecordNumber();

//Kitao追加
BOOL
APP_CheckRecordingNow();

//Kitao追加
Sint32
APP_GetSoftVersion();

//Kitao追加。v2.77
char*
APP_GetSoftVersionChar();

//Kitao追加
BOOL
APP_GetDisableWindowsAero();

//Kitao追加
BOOL
APP_DwmIsCompositionEnabled();

//Kitao追加
void
APP_WindowWithinScreen();

//Kitao追加
void
APP_ToggleFullscreen();

//Kitao追加
BOOL
APP_GetCueFile();

//Kitao追加
char*
APP_GetCueFilePathName();

//Kitao追加。v3.05
char*
APP_GetCueFileGameTitle();

//Kitao追加
BOOL
APP_GetInactivePause();

//Kitao追加
Sint32
APP_GetCddaAdjust();

//Kitao追加
double
APP_GetCddaAdjustHz();

//Kitao追加。v2.33
Sint32
APP_GetCddaDelayFrame();

//Kitao追加。v2.36
BOOL
APP_GetLoadStateSpeedSetting();

//Kitao追加。v2.38
Sint32
APP_GetFunctionButton();

//Kitao追加。v2.39
BOOL
APP_ShowWriteMemoryForm(
	HWND		hWnd,
	HINSTANCE	hInstance);

//Kitao追加。v2.42
BOOL
APP_GetHesFile();

//Kitao追加。v2.43
Sint32
APP_GetNonVSyncTiming();

//Kitao追加。v2.48
char*
APP_GetRecentRom(
	Sint32	n);

//Kitao追加。v2.48
BOOL
APP_CheckButtonState(
	Sint32	n);

//Kitao追加。v2.61
BOOL
APP_CheckFuncAndSelConflict();

//Kitao追加。v2.38,2.92
void
APP_ToggleInputTurbo1();

//Kitao追加。v2.38,2.92
void
APP_ToggleInputTurbo2();

//Kitao追加。v2.38,2.92
void
APP_ToggleInputTurboRun();

//Kitao追加。v2.98
void
APP_ToggleInputTurboSel();

//Kitao追加。v2.92
void
APP_SetRenshaSpeed(
	Sint32	speed);

//Kitao追加。2.92
void
APP_ToggleSwapSelRun();

//Kitao追加。2.92
void
APP_ToggleSwapIandII();

//Kitao追加。v2.50
BOOL
APP_GetCDSpeedDown();

//Kitao追加。v2.59
BOOL
APP_GetCheckSimultaneouslyPush();

//Kitao追加。v2.63
void
APP_CheckStateTime(
	Sint32	num,
	char*	pBufS,
	char*	pBufL);

//Kitao追加。v2.63
BOOL
APP_GetLoadingResumeFile();

//Kitao追加。v2.64
Sint32
APP_GetFullMagnification();

//Kitao追加。v2.64
Sint32
APP_GetShowOverscanTop();
//Kitao追加。v2.64
Sint32
APP_GetShowOverscanBottom();
//Kitao追加。v2.64
Sint32
APP_GetShowOverscanLeft();
//Kitao追加。v2.64
Sint32
APP_GetShowOverscanRight();

//Kitao追加。v2.65
BOOL
APP_GetWindowsAutoVSyncBool();

//Kitao追加。v2.65
Sint32
APP_GetVSyncAdjust();

//Kitao追加。v2.70
BOOL
APP_GetStrikeBallSwap();

//Kitao追加。v2.70
BOOL
APP_GetCutTrackHeadNoise();

//Kitao追加。v2.77
BOOL
APP_FileDialog(
	Sint32		type,
	HWND		hWnd,
	char*		openFilePathName,
	char*		gameFilePathName);

//Kitao追加。v2.77
void
APP_SetShortcutButton(
	HWND		hWnd,
	HINSTANCE	hInstance,
	Sint32		mode);

//Kitao追加。v2.77
BOOL
APP_CheckShortcutKey(
	int		button);

//Kitao追加。v2.77
BOOL
APP_ConfigurePad(
	HWND		hWnd,
	HINSTANCE	hInstance,
	Sint32		padID);

//Kitao追加。v2.95
void
APP_SetPadOrder(
	Sint32	padOrder);

//Kitao追加。v2.95
Sint32
APP_GetPadOrder();

//Kitao追加。v2.94
void
APP_SetPcePad2(
	Sint32	padID,
	PCEPAD	pcePad);

//Kitao追加。v2.94
void
APP_SetPcePad3(
	Sint32	padID,
	PCEPAD	pcePad);

//Kitao追加。v2.94
void
APP_SetPcePad6(
	Sint32	padID,
	PCEPAD	pcePad);

//Kitao追加。v2.94
void
APP_GetPcePad2(
	Sint32	padID,
	PCEPAD*	pPcePad);

//Kitao追加。v2.94
void
APP_GetPcePad3(
	Sint32	padID,
	PCEPAD*	pPcePad);

//Kitao追加。v2.94
void
APP_GetPcePad6(
	Sint32	padID,
	PCEPAD*	pPcePad);

//Kitao追加。v2.77
BOOL
APP_SetCddaTimingAuto(
	BOOL	bStartup);

//Kitao追加。v2.77
void
APP_SetAutoResumeMode(
	BOOL	bAutoResume);

//Kitao追加。v2.77
BOOL
APP_SaveConfig();

//Kitao追加。v2.79
double
APP_GetMessageTimePercent();

//Kitao追加。v2.94
Sint32
APP_GetFullVSyncHz();

//Kitao追加。v2.84
BOOL
APP_GetViewCDAccess();

//Kitao追加。v2.85
BOOL
APP_GetArcadeCardMenuChanging();

//Kitao追加。v2.86
Sint32
APP_GetOpenRomButton();

//Kitao追加。v2.86
Sint32
APP_GetOpenCueButton();

//Kitao追加。v2.87
void
APP_InitPadConfiguration(
	BOOL	bSave);

//Kitao追加。v2.94
void
APP_InitShortcutConfiguration();

//Kitao追加。v2.87
BOOL
APP_GetUseThreeButtonR();

//Kitao追加。v2.87
BOOL
APP_GetChange3to12R();

//Kitao追加
void
APP_SetCPUSpeed(
	Sint32	speed);

//Kitao追加。v2.96
Sint32
APP_GetStartOverscanTvShift();

//Kitao追加。v2.98
BOOL
APP_GetHideMenu();

//Kitao追加。v3.01
Sint32
APP_GetVideoCaptureMode();

//Kitao追加。v3.01
BOOL
APP_GetCustomizedBramFolder();

//Kitao追加。v3.01
char*
APP_GetSaveStatePath();

//Kitao追加。v3.05
BOOL
APP_GetUsePad0();

//Kitao追加。v3.05
BOOL
APP_GetFlashGuardSalamander();

//Kitao追加。v3.05
BOOL
APP_GetFlashGuardNecros();

//Kitao追加。v3.05
Sint64
APP_QPCtimeGetTime();

//Kitao追加。v3.05
Sint64
APP_QPCtimeGetTime1000();

//Kitao追加。v3.05
void
APP_QPCSleep(
	Sint64	sleepTime);

//Kitao追加。v3.05
void
APP_QPCSleep1000(
	Sint64	sleepTime);

#endif // APP_H_INCLUDED
