diff --git a/stepmania/src/Background.cpp b/stepmania/src/Background.cpp index c437d92713..4b9465570f 100644 --- a/stepmania/src/Background.cpp +++ b/stepmania/src/Background.cpp @@ -237,11 +237,19 @@ void Background::LoadFromSong( Song* pSong ) GetDirListing( VISUALIZATIONS_DIR + "*.mpg", arrayPossibleMovies, false, true ); GetDirListing( VISUALIZATIONS_DIR + "*.mpeg", arrayPossibleMovies, false, true ); - int index = rand() % arrayPossibleMovies.GetSize(); - pTempBGA = new BGAnimation; - pTempBGA->LoadFromVisualization( arrayPossibleMovies[index], sSongBackgroundPath ); - m_BGAnimations.Add( pTempBGA ); - arrayPossibleMovies.RemoveAt( index ); + if( arrayPossibleMovies.GetSize() > 0 ) + { + int index = rand() % arrayPossibleMovies.GetSize(); + pTempBGA = new BGAnimation; + pTempBGA->LoadFromVisualization( arrayPossibleMovies[index], sSongBackgroundPath ); + m_BGAnimations.Add( pTempBGA ); + } + else + { + pTempBGA = new BGAnimation; + pTempBGA->LoadFromStaticGraphic( sSongBackgroundPath ); + m_BGAnimations.Add( pTempBGA ); + } } break; case MODE_ANIMATIONS: diff --git a/stepmania/src/NoteTypes.h b/stepmania/src/NoteTypes.h index 4b051ab5f9..f758f976de 100644 --- a/stepmania/src/NoteTypes.h +++ b/stepmania/src/NoteTypes.h @@ -33,6 +33,9 @@ enum TRACK_8, TRACK_9, TRACK_10, + TRACK_11, + TRACK_12, + TRACK_13, // BMS reader needs 13 tracks MAX_NOTE_TRACKS // leave this at the end }; diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index b42673219f..231d52a35b 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -970,28 +970,48 @@ void ApplyGraphicOptions() if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) goto success; - // We failed. Using default refresh rate. + LOG->Trace( "We failed. Using default refresh rate." ); iRefreshRate = RageDisplay::REFRESH_DEFAULT; if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) goto success; - // We failed. Try full screen with same params. + LOG->Trace( "We failed. Try full screen with same params." ); bWindowed = false; if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) goto success; - // Failed again. Try 16 BPP + LOG->Trace( "Failed again. Try 16 BPP." ); iDisplayBPP = 16; if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) goto success; - // Failed again. Try 640x480 + LOG->Trace( "Failed again. Try 32 BPP." ); + iDisplayBPP = 32; + if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) + goto success; + + LOG->Trace( "We failed. Try windowed with same params." ); + bWindowed = false; + if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) + goto success; + + LOG->Trace( "Failed again. Try 16 BPP." ); + iDisplayBPP = 16; + if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) + goto success; + + LOG->Trace( "Failed again. Try 32 BPP." ); + iDisplayBPP = 32; + if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) + goto success; + + LOG->Trace( "Failed again. Try 640x480." ); iDisplayWidth = 640; iDisplayHeight = 480; if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) ) goto success; - // Failed again. Try 320x240 + LOG->Trace( "Failed again. Try 320x240." ); iDisplayWidth = 320; iDisplayHeight = 240; if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) )