diff --git a/Source/Project64/Settings/Settings Class.cpp b/Source/Project64/Settings/Settings Class.cpp index c434adf3a..4609ae90a 100644 --- a/Source/Project64/Settings/Settings Class.cpp +++ b/Source/Project64/Settings/Settings Class.cpp @@ -31,7 +31,8 @@ CSettings * g_Settings = NULL; -CSettings::CSettings() +CSettings::CSettings() : + m_NextAutoSettingId(0x200000) { } @@ -416,7 +417,10 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def case Data_DWORD: if (DefaultID == Default_None) { - _this->AddHandler(ID,new CSettingTypeGame(Name.c_str(),Value)); + SettingID RdbSetting = (SettingID)_this->m_NextAutoSettingId; + _this->m_NextAutoSettingId += 1; + _this->AddHandler(RdbSetting,new CSettingTypeRomDatabase(Name.c_str(),(int)Value)); + _this->AddHandler(ID,new CSettingTypeGame(Name.c_str(),RdbSetting)); } else { _this->AddHandler(ID,new CSettingTypeGame(Name.c_str(),DefaultID)); } diff --git a/Source/Project64/Settings/Settings Class.h b/Source/Project64/Settings/Settings Class.h index e0bfc507f..73b52a64d 100644 --- a/Source/Project64/Settings/Settings Class.h +++ b/Source/Project64/Settings/Settings Class.h @@ -118,6 +118,7 @@ private: SETTING_MAP m_SettingInfo; SETTING_CALLBACK m_Callback; + int m_NextAutoSettingId; }; extern CSettings * g_Settings; diff --git a/Source/Settings/Settings.cpp b/Source/Settings/Settings.cpp index 383277c14..8c7b2b141 100644 --- a/Source/Settings/Settings.cpp +++ b/Source/Settings/Settings.cpp @@ -92,8 +92,11 @@ void RegisterSetting ( short SettingID, SETTING_DATA_TYPE Type, const char * switch (Type) { - case Data_DWORD_General: case Data_DWORD_Game: + g_PluginSettings.RegisterSetting(g_PluginSettings.handle,SettingID + g_PluginSettings.SettingStartRange, + g_PluginSettings.NoDefault,Data_DWORD,Location,FullCategory,Name,DefaultDW); + break; + case Data_DWORD_General: case Data_DWORD_RDB: if (DefaultDW != 0) {