diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 95c20260a9..e062167212 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -16,12 +16,11 @@ ColorP2=1.0,0.5,0.2,1 // orange InitialScreen=ScreenCompany [Notes] - DefaultScrollDirection=0 [ScreenTitleMenu] ChoicesX=320 -ChoicesStartY=104 +ChoicesStartY=92 ChoicesSpacingY=48 ChoicesShadowLength=5 HelpX=320 diff --git a/stepmania/src/ScreenSoundOptions.cpp b/stepmania/src/ScreenSoundOptions.cpp index 845a3431ec..8b2e5fd1d1 100644 --- a/stepmania/src/ScreenSoundOptions.cpp +++ b/stepmania/src/ScreenSoundOptions.cpp @@ -29,7 +29,7 @@ enum { NUM_SOUND_OPTIONS_LINES }; OptionRowData g_SoundOptionsLines[NUM_SOUND_OPTIONS_LINES] = { - { "Master\nVolume", 10, {"0","1","2","3","4","5","6","7","8","9"} }, + { "Master\nVolume", 6, {"MUTE","20%","40%","60%","80%","100%"} }, }; ScreenSoundOptions::ScreenSoundOptions() : @@ -62,24 +62,15 @@ void ScreenSoundOptions::Input( const DeviceInput& DeviceI, const InputEventType void ScreenSoundOptions::ImportOptions() { - m_iSelectedOption[0][SO_MASTER_VOLUME] = PREFSMAN->m_fSoundVolume; + float fVolPercent = PREFSMAN->m_fSoundVolume; + m_iSelectedOption[0][SO_MASTER_VOLUME] = (int)(fVolPercent*5); } void ScreenSoundOptions::ExportOptions() { - switch( m_iSelectedOption[0][SO_MASTER_VOLUME] ) - { - case 0:SOUNDMAN->SetPrefs(0.10000f);PREFSMAN->m_fSoundVolume = 0.10000f;break; - case 1:SOUNDMAN->SetPrefs(0.20000f);PREFSMAN->m_fSoundVolume = 0.20000f;break; - case 2:SOUNDMAN->SetPrefs(0.30000f);PREFSMAN->m_fSoundVolume = 0.30000f;break; - case 3:SOUNDMAN->SetPrefs(0.40000f);PREFSMAN->m_fSoundVolume = 0.40000f;break; - case 4:SOUNDMAN->SetPrefs(0.50000f);PREFSMAN->m_fSoundVolume = 0.50000f;break; - case 5:SOUNDMAN->SetPrefs(0.60000f);PREFSMAN->m_fSoundVolume = 0.60000f;break; - case 6:SOUNDMAN->SetPrefs(0.70000f);PREFSMAN->m_fSoundVolume = 0.70000f;break; - case 7:SOUNDMAN->SetPrefs(0.80000f);PREFSMAN->m_fSoundVolume = 0.80000f;break; - case 8:SOUNDMAN->SetPrefs(0.90000f);PREFSMAN->m_fSoundVolume = 0.90000f;break; - case 9:SOUNDMAN->SetPrefs(1.00000f);PREFSMAN->m_fSoundVolume = 1.00000f;break; - } + float fVolPercent = m_iSelectedOption[0][SO_MASTER_VOLUME] / 5.f; + SOUNDMAN->SetPrefs(fVolPercent); + PREFSMAN->m_fSoundVolume = fVolPercent; } void ScreenSoundOptions::GoToPrevState() diff --git a/stepmania/src/Song.cpp b/stepmania/src/Song.cpp index ff07791995..4060b71b35 100644 --- a/stepmania/src/Song.cpp +++ b/stepmania/src/Song.cpp @@ -41,7 +41,9 @@ #include "SDL_image.h" -const int FILE_CACHE_VERSION = 109; // increment this when Song or Notes changes to invalidate cache +const int FILE_CACHE_VERSION = 111; // increment this when Song or Notes changes to invalidate cache + +const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f; static int CompareBPMSegments(const BPMSegment &seg1, const BPMSegment &seg2) @@ -83,7 +85,7 @@ Song::Song() m_bChangedSinceSave = false; m_fBeat0OffsetInSeconds = 0; m_fMusicSampleStartSeconds = 0; - m_fMusicSampleLengthSeconds = 12.0f; // start fading out at m_fMusicSampleLengthSeconds-1 seconds + m_fMusicSampleLengthSeconds = DEFAULT_MUSIC_SAMPLE_LENGTH; m_iMusicBytes = 0; m_fMusicLengthSeconds = 0; m_fFirstBeat = -1; @@ -447,13 +449,21 @@ void Song::TidyUpData() // We're going to try and do something intelligent here... // The MusicSampleStart always seems to be about 100-120 beats into // the song regardless of BPM. Let's take a shot-in-the dark guess. - if( m_fMusicSampleStartSeconds == 0 ) + if( m_fMusicSampleStartSeconds == 0 || m_fMusicSampleStartSeconds+m_fMusicSampleLengthSeconds > this->m_fMusicLengthSeconds ) + { m_fMusicSampleStartSeconds = this->GetElapsedTimeFromBeat( 100 ); + if( m_fMusicSampleStartSeconds+m_fMusicSampleLengthSeconds > this->m_fMusicLengthSeconds ) + { + int iBeat = (int)(m_fLastBeat/2); + iBeat = iBeat - iBeat%10; + m_fMusicSampleStartSeconds = this->GetElapsedTimeFromBeat( (float)iBeat ); // fix for BAG and other slow songs + } + } /* Some DWIs have lengths in ms when they meant seconds, eg. #SAMPLELENGTH:10;. * If the sample length is way too short, change it. */ - if( m_fMusicSampleLengthSeconds < 3 ) - m_fMusicSampleLengthSeconds = 10; + if( m_fMusicSampleLengthSeconds < 3 || m_fMusicSampleLengthSeconds > 30 ) + m_fMusicSampleLengthSeconds = DEFAULT_MUSIC_SAMPLE_LENGTH; // // Here's the problem: We have a directory full of images. We want to determine which diff --git a/stepmania/src/StepMania.vcproj b/stepmania/src/StepMania.vcproj index ebf3b45f4b..b25ffd00fc 100644 --- a/stepmania/src/StepMania.vcproj +++ b/stepmania/src/StepMania.vcproj @@ -429,6 +429,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ + + + + diff --git a/stepmania/src/arch/Sound/DSoundHelpers.cpp b/stepmania/src/arch/Sound/DSoundHelpers.cpp index 081e3f2fd5..d6d11b9628 100644 --- a/stepmania/src/arch/Sound/DSoundHelpers.cpp +++ b/stepmania/src/arch/Sound/DSoundHelpers.cpp @@ -126,7 +126,9 @@ void DSoundBuf::SetVolume(float vol) { ASSERT(vol >= 0); ASSERT(vol <= 1); - + + if( vol == 0 ) + vol = 0.001f; // fix log10f(0) == -INF float vl2 = log10f(vol) / log10f(2); /* vol log 2 */ /* Volume is a multiplier; SetVolume wants attenuation in thousands of a