diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml index 22f33e2bae..35de791cc1 100644 --- a/Docs/Luadoc/Lua.xml +++ b/Docs/Luadoc/Lua.xml @@ -2895,6 +2895,10 @@ + + + + diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index 11a6ad782e..1dfeb0accb 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -535,7 +535,7 @@ Transfer Edits to USB=Transfer Edits to USB Transfer Edits from USB=Transfer Edits from USB UseUnlockSystem=Enable or disable the unlock system. VisualDelaySeconds=Calibrate display lag. -MachineSyncBias=Set the default Sync Bias for content on this machine. \nITG = +9ms.\n NULL = 0ms. +MachineSyncBias=Set the default Sync Bias for content on this machine.\n\nNOTE: Changing this setting will trigger a Song Reload \n\nITG = +9ms.\n NULL = 0ms. Vsync=Cap your frame rate your display's refresh rate. This option only has an effect when the Display Mode is set to &oq;Full Screen&cq;. WideScreen16_9=Enable widescreen display. WideScreen16_10=Enable widescreen display. diff --git a/Themes/_fallback/Languages/es.ini b/Themes/_fallback/Languages/es.ini index 4ad4e667d3..76490a1a42 100644 --- a/Themes/_fallback/Languages/es.ini +++ b/Themes/_fallback/Languages/es.ini @@ -1214,7 +1214,7 @@ Undo=Deshacer UseUnlockSystem=Sistema de desbloqueo View steps data=Ver datos de pasos VisualDelaySeconds=Latencia visual -MachineSyncBias=Establezca el sesgo de sincronización predeterminado para el contenido en esta máquina. \nITG = +9ms.\n Null = 0ms. +MachineSyncBias=Establezca el sesgo de sincronización predeterminado para el contenido en esta máquina.\nNOTA: Cambiar esta configuración activará una recarga de canción.\n\nITG = +9ms.\n Null = 0ms. Voltage=Voltaje Vsync=Esperar a VSync WideScreen16_9=Panorámica 16:9 diff --git a/Themes/_fallback/Languages/fr.ini b/Themes/_fallback/Languages/fr.ini index f6fac4c205..91d400b020 100644 --- a/Themes/_fallback/Languages/fr.ini +++ b/Themes/_fallback/Languages/fr.ini @@ -517,7 +517,7 @@ Transfer Edits to USB=Transfère les Modifications vers une clé USB Transfer Edits from USB=Transfère les Modifications depuis une clé USB UseUnlockSystem=Active ou non le système de déblocage de chansons. VisualDelaySeconds=Calibre le délai d'affichage. -MachineSyncBias=Définissez le biais de synchronisation par défaut pour le contenu sur cette machine. \nITG = +9 ms.\n Null = 0 ms. +MachineSyncBias=Définissez le biais de synchronisation par défaut pour le contenu sur cette machine.\n\nREMARQUE : la modification de ce paramètre déclenchera un rechargement de morceau\n\nITG = +9 ms.\n Null = 0 ms. Vsync=Limite le taux de rafraîchissement à celui de votre écran. Cette option affecte seulement le mode &oq;Plein Écran&cq;. WideScreen16_9=Enable widescreen display. WideScreen16_10=Enable widescreen display. diff --git a/Themes/_fallback/Languages/ja.ini b/Themes/_fallback/Languages/ja.ini index 4fa258da4b..3f1bdb0e54 100644 --- a/Themes/_fallback/Languages/ja.ini +++ b/Themes/_fallback/Languages/ja.ini @@ -506,7 +506,7 @@ SmoothLines=グルーブレーダーの線を滑らかにするかどうかを SoundVolume=ゲーム中の音量を変更します。 TextureColorDepth=テクスチャの色深度を選択します。\n32bitにするとメモリ消費が激しくなりますが、表示が綺麗になります。 VisualDelaySeconds=画面の表示遅れを調整します。 -MachineSyncBias=このマシン上のコンテンツのデフォルトの同期バイアスを設定します。\nITG = +9ms。\n Null = 0ms。 +MachineSyncBias=このマシン上のコンテンツのデフォルトの同期バイアスを設定します。\n注意: この設定を変更すると、曲の再読み込みがトリガーされます\n\nITG = +9ms。\n Null = 0ms。 Vsync=フレームレートを使用するディスプレイのリフレッシュレートまでに制限します。\nこのオプションはフルスクリーンモードでのみ有効です。 Windowed=ウインドウモード、またはフルスクリーンモードの\nどちらで起動するかを設定します。 diff --git a/Themes/_fallback/Languages/ko.ini b/Themes/_fallback/Languages/ko.ini index 0266da9631..c2a84ce822 100644 --- a/Themes/_fallback/Languages/ko.ini +++ b/Themes/_fallback/Languages/ko.ini @@ -144,7 +144,7 @@ FlashyCombo=50련타마다 련타수를 번쩍일지 결정합니다。 GameplayFooter=게임속점수틀을 표시할지 설정합니다 FancyUIBG=화려한 바탕을 켰다껐다합니다。사양낮은 옛날콤퓨터에는 끄는것을 추천합니다。\n바뀜은 제목화면에 적용될것입니다。 TimingDisplay=게임속노래재생시간을 경과표에 번쩍입니다。 -MachineSyncBias=이 컴퓨터의 콘텐츠에 대한 기본 동기화 바이어스를 설정합니다. \nITG = +9ms.\n Null = 0ms. +MachineSyncBias=이 컴퓨터의 콘텐츠에 대한 기본 동기화 바이어스를 설정합니다.\n\n참고: 이 설정을 변경하면 노래 다시 로드가 트리거됩니다.\n\nITG = +9ms.\n Null = 0ms. ScoringType=득점방식을 설정합니다。\n『특별』을 고르면, 주제선택지에서 특별득점모드를 고르실수 있습니다。 diff --git a/Themes/_fallback/Languages/nl.ini b/Themes/_fallback/Languages/nl.ini index 3b20a53ffa..83dff1d655 100644 --- a/Themes/_fallback/Languages/nl.ini +++ b/Themes/_fallback/Languages/nl.ini @@ -516,7 +516,7 @@ Transfer Edits to USB=Verplaats Wijzigingen naar de USB Turn=Draai UseUnlockSystem=Zet het vrijspeelsysteem aan of uit. VisualDelaySeconds=Kalibreer schermvertraging. -MachineSyncBias=Stel de standaard synchronisatie-bias in voor inhoud op deze machine. \nITG = +9ms.\nNull = 0ms. +MachineSyncBias=Stel de standaard synchronisatie-bias in voor inhoud op deze machine. \n\nLET OP: Als u deze instelling wijzigt, wordt het nummer opnieuw geladen\n\nITG = +9ms.\nNull = 0ms. Vsync=Limiteer je FPS aan je beeldvernieuwingssnelheid. Deze optie heeft alleen effect als het spel in oq;Volledig Scherm&cq; mode staat. WideScreen16_10=Laat breedbeeld toe. WideScreen16_9=Laat breedbeeld toe. diff --git a/Themes/_fallback/Languages/pl.ini b/Themes/_fallback/Languages/pl.ini index 40afadef67..9871b1a8d2 100644 --- a/Themes/_fallback/Languages/pl.ini +++ b/Themes/_fallback/Languages/pl.ini @@ -512,7 +512,7 @@ Transfer Edits to USB=Transfer Zmodyfikowanych Układów Kroków do pamięci USB Transfer Edits from USB=Transfer Zmodyfikowanych Układów Kroków z pamięci USB UseUnlockSystem=Włączenie systemu odblokowywania piosenek. VisualDelaySeconds=Kalibracja opóźnienia ekranu. -MachineSyncBias=Ustaw domyślne odchylenie synchronizacji dla zawartości na tym komputerze. \nITG = +9 ms.\n Null = 0 ms. +MachineSyncBias=Ustaw domyślne odchylenie synchronizacji dla zawartości na tym komputerze. \nUWAGA: Zmiana tego ustawienia spowoduje ponowne wczytanie utworu\n\nITG = +9 ms.\n Null = 0 ms. Vsync=Blokowanie klatek do czasu odświeżania ekranu, w celu uzyskania płynniejszego obrazu. Działa tylko w trybie pełnoekranowym. WideScreen16_9=Włączenie obsługi ekranów panoramicznych. WideScreen16_10=Włączenie obsługi ekranów panoramicznych. diff --git a/Themes/_fallback/Languages/sk.ini b/Themes/_fallback/Languages/sk.ini index 6761b1e84a..9091156b2e 100644 --- a/Themes/_fallback/Languages/sk.ini +++ b/Themes/_fallback/Languages/sk.ini @@ -522,7 +522,7 @@ Transfer Edits to USB=Preniesť úpravy na USB Transfer Edits from USB=Preniesť úpravy z USB UseUnlockSystem=Povoliť alebo zakázať systém odomykania skladieb. VisualDelaySeconds=Kalibrovať oneskorenie zobrazenia. -MachineSyncBias=Nastavte predvolené nastavenie synchronizácie pre obsah na tomto počítači. \nITG = +9 ms.\n Null = 0 ms. +MachineSyncBias=Nastavte predvolené nastavenie synchronizácie pre obsah na tomto počítači. \n\nPOZNÁMKA: Zmena tohto nastavenia spustí opätovné načítanie skladby\nITG = +9 ms.\n Null = 0 ms. Vsync=Prispôsobiť frekvenciu snímok obnovovacej frekvencii Vášho monitora. Táto voľba je aktívna pri v režime zobrazenia na &oq;celú obrazovku&cq;. WideScreen16_9=Zapnúť zobrazenie na širokouhlú obrazovku. WideScreen16_10=Zapnúť zobrazenie na širokouhlú obrazovku. diff --git a/Themes/_fallback/Languages/zh-Hant.ini b/Themes/_fallback/Languages/zh-Hant.ini index 8ab64a2604..2e5adc7b4f 100644 --- a/Themes/_fallback/Languages/zh-Hant.ini +++ b/Themes/_fallback/Languages/zh-Hant.ini @@ -522,7 +522,7 @@ Transfer Edits to USB=轉移自定義譜面到USB Transfer Edits from USB=從USB轉移自定義譜面 UseUnlockSystem=使用解禁系統, 一般情況為關. VisualDelaySeconds=校準畫面顯示延遲. -MachineSyncBias=设置此机器上内容的默认同步偏差。\nITG = +9ms。\n Null = 0ms。 +MachineSyncBias=设置此机器上内容的默认同步偏差。\n注意:更改此設定將觸發歌曲重新加載 \nITG = +9ms。\n Null = 0ms。 Vsync=選擇是否垂直同步, 只在全螢幕模式有效. WideScreen16_9=16:9寬螢幕顯示. WideScreen16_10=16:10寬螢幕顯示. diff --git a/src/Group.cpp b/src/Group.cpp index 30cf4a7419..0c51a36056 100644 --- a/src/Group.cpp +++ b/src/Group.cpp @@ -49,7 +49,7 @@ Group::Group(const RString& sDir, const RString& sGroupDirName) { m_sSortTitle = m_sGroupName; m_sTranslitTitle = m_sGroupName; m_sSeries = ""; - m_fSyncOffset = PREFSMAN->m_fMachineSyncBias; + m_fSyncOffset = PREFSMAN->m_MachineSyncBias == SyncBias_NULL ? 0 : -0.009; m_bHasPackIni = false; m_iYearReleased = 0; m_sBannerPath = ""; diff --git a/src/PrefsManager.cpp b/src/PrefsManager.cpp index bd638e1ad8..cd8d11ffbf 100644 --- a/src/PrefsManager.cpp +++ b/src/PrefsManager.cpp @@ -134,6 +134,14 @@ XToString(ProfileSortOrder); StringToX(ProfileSortOrder); LuaXType(ProfileSortOrder); +static const char* SyncBiasNames[] = { + "NULL", + "ITG" +}; +XToString(SyncBias); +StringToX(SyncBias); +LuaXType(SyncBias); + bool g_bAutoRestart = false; #ifdef DEBUG # define TRUE_IF_DEBUG true @@ -237,7 +245,7 @@ PrefsManager::PrefsManager() : m_ShowDancingCharacters ( "ShowDancingCharacters", SDC_Random ), m_bUseUnlockSystem ( "UseUnlockSystem", false ), m_fGlobalOffsetSeconds ( "GlobalOffsetSeconds", -0.008f ), - m_fMachineSyncBias ( "MachineSyncBias", -0.009f ), + m_MachineSyncBias ( "MachineSyncBias", SyncBias_ITG ), m_iProgressiveLifebar ( "ProgressiveLifebar", 0 ), m_iProgressiveStageLifebar ( "ProgressiveStageLifebar", 0 ), m_iProgressiveNonstopLifebar ( "ProgressiveNonstopLifebar", 0 ), diff --git a/src/PrefsManager.h b/src/PrefsManager.h index 354703c4ad..5134adc1f9 100644 --- a/src/PrefsManager.h +++ b/src/PrefsManager.h @@ -124,6 +124,14 @@ enum ProfileSortOrder ProfileSortOrder_Invalid }; +enum SyncBias +{ + SyncBias_NULL, + SyncBias_ITG, + NUM_SyncBias, + SyncBias_Invalid +}; + /** @brief Holds user-chosen preferences that are saved between sessions. */ class PrefsManager { @@ -240,7 +248,7 @@ public: Preference m_ShowDancingCharacters; Preference m_bUseUnlockSystem; Preference m_fGlobalOffsetSeconds; - Preference m_fMachineSyncBias; + Preference m_MachineSyncBias; Preference m_iProgressiveLifebar; Preference m_iProgressiveStageLifebar; Preference m_iProgressiveNonstopLifebar; diff --git a/src/ScreenOptionsMaster.cpp b/src/ScreenOptionsMaster.cpp index 581922ece5..5b07209d0c 100644 --- a/src/ScreenOptionsMaster.cpp +++ b/src/ScreenOptionsMaster.cpp @@ -161,6 +161,12 @@ void ScreenOptionsMaster::HandleScreenMessage( const ScreenMessage SM ) if( m_iChangeMask & OPT_APPLY_SONG ) SONGMAN->SetPreferences(); + if( m_iChangeMask & OPT_RELOAD_SONGS ) + { + SCREENMAN->GetTopScreen()->SetNextScreenName("ScreenReloadSongs"); + StartTransitioningScreen( SM_GoToNextScreen ); + } + CHECKPOINT_M("Transferring to the next screen now."); this->HandleScreenMessage( SM_GoToNextScreen ); return; diff --git a/src/ScreenOptionsMasterPrefs.cpp b/src/ScreenOptionsMasterPrefs.cpp index 7ab382a3cb..39f7e04abe 100644 --- a/src/ScreenOptionsMasterPrefs.cpp +++ b/src/ScreenOptionsMasterPrefs.cpp @@ -710,12 +710,6 @@ static void GlobalOffsetSeconds( int &sel, bool ToSel, const ConfOption *pConfOp MoveMap( sel, pConfOption, ToSel, mapping, ARRAYLEN(mapping) ); } -static void MachineSyncBias( int &sel, bool ToSel, const ConfOption *pConfOption ) -{ - constexpr std::array mapping = { 0.0f, -0.009f }; - MoveMap( sel, pConfOption, ToSel, mapping.data(), mapping.size() ); -} - static void EditRecordModeLeadIn(int &sel, bool to_sel, const ConfOption* conf_option) { float mapping[32]; @@ -947,7 +941,9 @@ static void InitializeConfOptions() c.AddOption( ssprintf("%+i ms", i) ); ADD( c ); } - ADD( ConfOption( "MachineSyncBias", MachineSyncBias, "NULL","|ITG" ) ); + ADD( ConfOption( "MachineSyncBias", MovePref, "NULL","|ITG" ) ); + g_ConfOptions.back().m_iEffects = OPT_RELOAD_SONGS; + ADD( ConfOption( "EnableAttackSounds", MovePref, "No","Yes" ) ); ADD( ConfOption( "EnableMineHitSound", MovePref, "No","Yes" ) ); ADD( ConfOption( "RateModPreservesPitch", MovePref, "No","Yes") ); @@ -1001,7 +997,8 @@ static const char *OptEffectNames[] = { "ApplySound", "ApplySong", "ApplyAspectRatio", - "ApplyProfiles" + "ApplyProfiles", + "ReloadSongs" }; XToString( OptEffect ); StringToX( OptEffect ); diff --git a/src/ScreenOptionsMasterPrefs.h b/src/ScreenOptionsMasterPrefs.h index 6e9b5679c3..3b87fdd324 100644 --- a/src/ScreenOptionsMasterPrefs.h +++ b/src/ScreenOptionsMasterPrefs.h @@ -17,7 +17,8 @@ enum OptEffect OPT_APPLY_SONG = (1<<5), OPT_APPLY_ASPECT_RATIO = (1<<6), OPT_APPLY_PROFILES = (1<<7), - NUM_OptEffect = 8, + OPT_RELOAD_SONGS = (1<<8), + NUM_OptEffect = 9, OptEffect_Invalid = MAX_OPTIONS+1 }; const RString& OptEffectToString( OptEffect e ); diff --git a/src/Song.cpp b/src/Song.cpp index 5f84886768..88cb6016b4 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -481,7 +481,7 @@ bool Song::ReloadFromSongDir( RString sDir ) if (SONGMAN->GetGroup(this) != nullptr) { m_SongTiming.m_fBeat0GroupOffsetInSeconds = SONGMAN->GetGroup(this)->GetSyncOffset(); } else { - m_SongTiming.m_fBeat0GroupOffsetInSeconds = PREFSMAN->m_fMachineSyncBias; + m_SongTiming.m_fBeat0GroupOffsetInSeconds = PREFSMAN->m_MachineSyncBias == SyncBias_NULL ? 0 : -0.009; LOG->Warn("Song %s has no group, using machine sync bias.", m_sMainTitle.c_str()); } @@ -507,7 +507,7 @@ bool Song::ReloadFromSongDir( RString sDir ) } else { - m_SongTiming.m_fBeat0GroupOffsetInSeconds = PREFSMAN->m_fMachineSyncBias; + m_SongTiming.m_fBeat0GroupOffsetInSeconds = PREFSMAN->m_MachineSyncBias == SyncBias_NULL ? 0 : -0.009; LOG->Warn("Song %s has no group, using machine sync bias.", m_sMainTitle.c_str()); } } @@ -672,7 +672,7 @@ void Song::TidyUpData( bool from_cache, bool /* duringCache */ ) m_SongTiming.TidyUpData(false); // Apply the group offset to the song timing before we do anything else. - float fOffset = PREFSMAN->m_fMachineSyncBias; + float fOffset = PREFSMAN->m_MachineSyncBias == SyncBias_NULL ? 0 : -0.009; if (SONGMAN->GetGroupFromName(m_sGroupName) != nullptr) { fOffset = SONGMAN->GetGroupFromName(m_sGroupName)->GetSyncOffset();