#pragma once

struct kbvgm_Settings
{
    int nSampleRate;
    double dVolume;
    DWORD dwPlaybackRate;
    DWORD dwResamplMode;
    DWORD dwChipSmplMode;
    DWORD dwChipSmplRate;
    bool  bSurroundSnd;
    //bool  bDoubleSSGVol;
    DWORD dwEmuCore[42];//42=CHIP_LIST_COUNT
    wchar_t szYRW801_ROM[MAX_PATH];
    int   nChipInstance;
};
struct tagCHIP  //in_vgm と VGMPlay の playcfg.cpp, ChipCfgSectDef に相当
{
    int chip_type;
    const wchar_t* chip_name;//保存時のキー名にもする
    const wchar_t* key_desc; //キーの表示名(NULL のときは chip_name と同じ)
};
extern const tagCHIP CHIP_LIST[];
extern const int CHIP_LIST_COUNT;

class IKpiConfig;
class IKpiConfigEnumerator;

BOOL  __fastcall kbvgm_EnumConfig(IKpiConfig *pConfig, IKpiConfigEnumerator *pEnumerator);
DWORD __fastcall kbvgm_ApplyConfig(IKpiConfig *pConfig,
                              const wchar_t *cszSection, //セクション名
                              const wchar_t *cszKey, //キー名
                              INT64  nValue, //変更後の値(BOOL/INT の場合)
                              double dValue, //変更後の値(FLOAT の場合)
                              const wchar_t *cszValue);//変更後の値(文字列)
void __fastcall kbvgm_GetSettings(IKpiConfig *pConfig, kbvgm_Settings *pSettings);
