diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 22314d457d..1c3e989400 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -209,8 +209,8 @@ TryExtraStageY=420 TimerSeconds=40 [Other] -FPSX=616 -FPSY=10 +StatsX=632 +StatsY=10 CreditsP1X=100 CreditsP1Y=470 CreditsP2X=540 diff --git a/stepmania/src/BitmapText.cpp b/stepmania/src/BitmapText.cpp index 7f0aa7cfeb..ce90758dee 100644 --- a/stepmania/src/BitmapText.cpp +++ b/stepmania/src/BitmapText.cpp @@ -158,9 +158,9 @@ void BitmapText::DrawPrimitives() int iY; // the center position of the first row of characters switch( m_VertAlign ) { - case align_top: iY = -(m_iNumLines-1) * iHeight; break; + case align_bottom: iY = -(m_iNumLines-1) * iHeight; break; case align_middle: iY = -(m_iNumLines-1) * iHeight/2; break; - case align_bottom: iY = 0; break; + case align_top: iY = 0; break; default: ASSERT( false ); } diff --git a/stepmania/src/GameManager.cpp b/stepmania/src/GameManager.cpp index eb506fbe66..eea014fac5 100644 --- a/stepmania/src/GameManager.cpp +++ b/stepmania/src/GameManager.cpp @@ -491,8 +491,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, */ { // PUMP_STYLE_SINGLE GAME_PUMP, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "pump-single", // m_szName NOTES_TYPE_PUMP_SINGLE, // m_NotesType StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType @@ -520,7 +520,7 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // PUMP_STYLE_VERSUS GAME_PUMP, // m_Game - false, // m_bUsedForGameplay + true, // m_bUsedForGameplay false, // m_bUsedForEdit "pump-versus", // m_szName NOTES_TYPE_PUMP_SINGLE, // m_NotesType @@ -549,8 +549,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // PUMP_STYLE_DOUBLE GAME_PUMP, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "pump-double", // m_szName NOTES_TYPE_PUMP_DOUBLE, // m_NotesType StyleDef::ONE_PLAYER_TWO_CREDITS, // m_StyleType @@ -590,8 +590,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = { // EZ2_STYLE_SINGLE GAME_EZ2, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "ez2-single", // m_szName NOTES_TYPE_EZ2_SINGLE, // m_NotesType StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType @@ -619,8 +619,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // EZ2_STYLE_SINGLE_HARD GAME_EZ2, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "ez2-single-hard", // m_szName NOTES_TYPE_EZ2_SINGLE_HARD, // m_NotesType StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType @@ -648,8 +648,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // EZ2_STYLE_DOUBLE GAME_EZ2, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "ez2-double", // m_szName NOTES_TYPE_EZ2_DOUBLE, // m_NotesType StyleDef::ONE_PLAYER_TWO_CREDITS, // m_StyleType @@ -687,8 +687,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // EZ2_STYLE_REAL GAME_EZ2, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "ez2-real", // m_szName NOTES_TYPE_EZ2_REAL, // m_NotesType StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType @@ -720,8 +720,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // EZ2_STYLE_SINGLE_VERSUS GAME_EZ2, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "ez2-single-versus", // m_szName NOTES_TYPE_EZ2_SINGLE, // m_NotesType StyleDef::TWO_PLAYERS_TWO_CREDITS, // m_StyleType @@ -749,8 +749,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // EZ2_STYLE_SINGLE_VERSUS GAME_EZ2, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "ez2-single-hard-versus", // m_szName NOTES_TYPE_EZ2_SINGLE_HARD, // m_NotesType StyleDef::TWO_PLAYERS_TWO_CREDITS, // m_StyleType @@ -778,8 +778,8 @@ StyleDef g_StyleDefs[NUM_STYLES] = }, { // EZ2_STYLE_REAL_VERSUS GAME_EZ2, // m_Game - false, // m_bUsedForGameplay - false, // m_bUsedForEdit + true, // m_bUsedForGameplay + true, // m_bUsedForEdit "ez2-real-versus", // m_szName NOTES_TYPE_EZ2_REAL, // m_NotesType StyleDef::TWO_PLAYERS_TWO_CREDITS, // m_StyleType diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 64d189cb4b..6f6c80f3f9 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -32,7 +32,7 @@ PrefsManager::PrefsManager() m_iRefreshRate = 0; m_bIgnoreJoyAxes = false; m_bOnlyDedicatedMenuButtons = false; - m_bShowFPS = false; + m_bShowStats = false; m_BackgroundMode = BGMODE_ANIMATIONS; m_bShowDanger = true; m_fBGBrightness = 0.8f; @@ -66,7 +66,7 @@ void PrefsManager::ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame ) ini.GetValueI( "Options", "RefreshRate", m_iRefreshRate ); ini.GetValueB( "Options", "IgnoreJoyAxes", m_bIgnoreJoyAxes ); ini.GetValueB( "Options", "UseDedicatedMenuButtons",m_bOnlyDedicatedMenuButtons ); - ini.GetValueB( "Options", "ShowFPS", m_bShowFPS ); + ini.GetValueB( "Options", "ShowStats", m_bShowStats ); ini.GetValueI( "Options", "BackgroundMode", (int&)m_BackgroundMode ); ini.GetValueB( "Options", "ShowDanger", m_bShowDanger ); ini.GetValueF( "Options", "BGBrightness", m_fBGBrightness ); @@ -103,7 +103,7 @@ void PrefsManager::SaveGlobalPrefsToDisk() ini.SetValueI( "Options", "RefreshRate", m_iRefreshRate ); ini.SetValueB( "Options", "IgnoreJoyAxes", m_bIgnoreJoyAxes ); ini.GetValueB( "Options", "UseDedicatedMenuButtons",m_bOnlyDedicatedMenuButtons ); - ini.SetValueB( "Options", "ShowFPS", m_bShowFPS ); + ini.SetValueB( "Options", "ShowStats", m_bShowStats ); ini.SetValueI( "Options", "BackgroundMode", m_BackgroundMode); ini.SetValueB( "Options", "ShowDanger", m_bShowDanger ); ini.SetValueF( "Options", "BGBrightness", m_fBGBrightness ); diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 8fbf71020a..369e3a6058 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -33,7 +33,7 @@ public: int m_iRefreshRate; // 0 means 'default' bool m_bIgnoreJoyAxes; bool m_bOnlyDedicatedMenuButtons; - bool m_bShowFPS; + bool m_bShowStats; BackgroundMode m_BackgroundMode; bool m_bShowDanger; float m_fBGBrightness; diff --git a/stepmania/src/RageDisplay.cpp b/stepmania/src/RageDisplay.cpp index 05c5f9ff6a..28a0333ef2 100644 --- a/stepmania/src/RageDisplay.cpp +++ b/stepmania/src/RageDisplay.cpp @@ -32,9 +32,13 @@ RageDisplay::RageDisplay( HWND hWnd ) m_pd3dDevice = NULL; m_pVB = NULL; - m_fLastUpdateTime = TIMER->GetTimeSinceStart(); + m_fLastCheckTime = TIMER->GetTimeSinceStart(); m_iFramesRenderedSinceLastCheck = 0; - m_fFPS = 0; + m_iTrianglesRenderedSinceLastCheck = 0; + m_iDrawsSinceLastCheck = 0; + m_iFPS = 0; + m_iTPF = 0; + m_iDPF = 0; m_iNumVerts = 0; @@ -381,13 +385,17 @@ HRESULT RageDisplay::EndFrame() m_iFramesRenderedSinceLastCheck++; float fTimeNow = TIMER->GetTimeSinceStart(); - if( fTimeNow - m_fLastUpdateTime > 1.0f ) // update stats every 1 sec. + if( fTimeNow - m_fLastCheckTime > 1.0f ) // update stats every 1 sec. { - m_fFPS = (float)m_iFramesRenderedSinceLastCheck; + m_iFPS = m_iFramesRenderedSinceLastCheck; m_iFramesRenderedSinceLastCheck = 0; - m_fLastUpdateTime = fTimeNow; + m_iTPF = m_iTrianglesRenderedSinceLastCheck / m_iFPS; + m_iTrianglesRenderedSinceLastCheck = 0; + m_iDPF = m_iDrawsSinceLastCheck / m_iFPS; + m_iDrawsSinceLastCheck = 0; + m_fLastCheckTime = fTimeNow; - LOG->Trace( "FPS: %.0f", m_fFPS ); + LOG->Trace( "FPS: %d, TPF: %d, DPF: %d", m_iFPS, m_iTPF, m_iDPF ); } @@ -497,6 +505,8 @@ void RageDisplay::AddTriangle( if( m_iNumVerts > MAX_NUM_VERTICIES-4 ) FlushQueue(); + + m_iTrianglesRenderedSinceLastCheck++; } void RageDisplay::AddQuad( @@ -527,8 +537,9 @@ void RageDisplay::FlushQueue() memcpy( v, m_vertQueue, sizeof(RAGEVERTEX)*m_iNumVerts ); m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, m_iNumVerts/3 ); m_pVB->Unlock(); - m_iNumVerts = 0; + + m_iDrawsSinceLastCheck++; } void RageDisplay::SetViewTransform( D3DXMATRIX* pMatrix ) diff --git a/stepmania/src/RageDisplay.h b/stepmania/src/RageDisplay.h index 1266fc421f..38f884e3fc 100644 --- a/stepmania/src/RageDisplay.h +++ b/stepmania/src/RageDisplay.h @@ -97,7 +97,9 @@ public: void RotateZ( const float r ); // void RotateYawPitchRoll( const float x, const float y, const float z ); - float GetFPS() { return m_fFPS; }; + int GetFPS() { return m_iFPS; }; + int GetTPF() { return m_iTPF; }; + int GetDPF() { return m_iDPF; }; private: D3DXMATRIX& GetTopMatrix() { return m_MatrixStack.ElementAt( m_MatrixStack.GetSize()-1 ); }; @@ -122,9 +124,13 @@ private: CArray m_MatrixStack; // for performance stats - float m_fLastUpdateTime; - int m_iFramesRenderedSinceLastCheck; - float m_fFPS; + float m_fLastCheckTime; + int m_iFramesRenderedSinceLastCheck; + int m_iTrianglesRenderedSinceLastCheck; + int m_iDrawsSinceLastCheck; + int m_iFPS; + int m_iTPF; + int m_iDPF; // diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 9945cd3cd0..93cc959de0 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -236,7 +236,7 @@ ScreenEdit::ScreenEdit() m_textHelp.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); m_textHelp.SetXY( HELP_X, HELP_Y ); m_textHelp.SetHorizAlign( Actor::align_left ); - m_textHelp.SetVertAlign( Actor::align_top ); + m_textHelp.SetVertAlign( Actor::align_bottom ); m_textHelp.SetZoom( 0.5f ); m_textHelp.SetShadowLength( 2 ); m_textHelp.SetText( HELP_TEXT ); @@ -244,7 +244,7 @@ ScreenEdit::ScreenEdit() m_textShortcuts.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); m_textShortcuts.SetXY( SHORTCUTS_X, SHORTCUTS_Y ); m_textShortcuts.SetHorizAlign( Actor::align_left ); - m_textShortcuts.SetVertAlign( Actor::align_bottom ); + m_textShortcuts.SetVertAlign( Actor::align_top ); m_textShortcuts.SetZoom( 0.5f ); m_textShortcuts.SetShadowLength( 2 ); m_textShortcuts.SetText( SHORTCUT_TEXT ); diff --git a/stepmania/src/ScreenGraphicOptions.cpp b/stepmania/src/ScreenGraphicOptions.cpp index fee97d55e1..0cdb457e26 100644 --- a/stepmania/src/ScreenGraphicOptions.cpp +++ b/stepmania/src/ScreenGraphicOptions.cpp @@ -31,21 +31,21 @@ enum { GO_DISPLAY_RESOLUTION, GO_TEXTURE_RESOLUTION, GO_REFRESH_RATE, - GO_SHOWFPS, + GO_SHOWSTATS, GO_BGMODE, GO_BGBRIGHTNESS, GO_MOVIEDECODEMS, NUM_GRAPHIC_OPTIONS_LINES }; OptionLineData g_GraphicOptionsLines[NUM_GRAPHIC_OPTIONS_LINES] = { - { "Display", 2, {"FULLSCREEN", "WINDOWED"} }, - { "Display Res", 7, {"320","400","512","640","800","1024","1280"} }, - { "Texture Res", 3, {"256","512","1024"} }, - { "Refresh Rate", 10, {"DEFAULT","60","70","72","75","80","85","90","100","120"} }, - { "Show FPS", 2, {"OFF","ON"} }, - { "BG Mode", 4, {"OFF","ANIMATIONS","VISUALIZATIONS","RANDOM MOVIES"} }, - { "BG Brightness", 5, {"20%","40%","60%","80%","100%"} }, - { "Movie Decode MS", 5, {"1ms","2ms","3ms","4ms","5ms"} }, + { "Display", 2, {"FULLSCREEN", "WINDOWED"} }, + { "Display Res", 7, {"320","400","512","640","800","1024","1280"} }, + { "Texture Res", 3, {"256","512","1024"} }, + { "Refresh Rate", 10, {"DEFAULT","60","70","72","75","80","85","90","100","120"} }, + { "Show Stats", 2, {"OFF","ON"} }, + { "BG Mode", 4, {"OFF","ANIMATIONS","VISUALIZATIONS","RANDOM MOVIES"} }, + { "BG Brightness", 5, {"20%","40%","60%","80%","100%"} }, + { "Movie Decode", 5, {"1ms","2ms","3ms","4ms","5ms"} }, }; ScreenGraphicOptions::ScreenGraphicOptions() : @@ -104,7 +104,7 @@ void ScreenGraphicOptions::ImportOptions() default: m_iSelectedOption[0][GO_REFRESH_RATE] = 0; break; } - m_iSelectedOption[0][GO_SHOWFPS] = PREFSMAN->m_bShowFPS ? 1:0; + m_iSelectedOption[0][GO_SHOWSTATS] = PREFSMAN->m_bShowStats ? 1:0; m_iSelectedOption[0][GO_BGMODE] = PREFSMAN->m_BackgroundMode; if( PREFSMAN->m_fBGBrightness == 0.2f ) m_iSelectedOption[0][GO_BGBRIGHTNESS] = 0; @@ -156,7 +156,7 @@ void ScreenGraphicOptions::ExportOptions() default: ASSERT(0); PREFSMAN->m_iRefreshRate = 0; break; } - PREFSMAN->m_bShowFPS = m_iSelectedOption[0][GO_SHOWFPS] == 1; + PREFSMAN->m_bShowStats = m_iSelectedOption[0][GO_SHOWSTATS] == 1; PREFSMAN->m_BackgroundMode = PrefsManager::BackgroundMode( m_iSelectedOption[0][GO_BGMODE] ); switch( m_iSelectedOption[0][GO_BGBRIGHTNESS] ) diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 1df429c8f2..69159a530a 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -21,8 +21,8 @@ ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program -#define FPS_X THEME->GetMetricF("Other","FPSX") -#define FPS_Y THEME->GetMetricF("Other","FPSY") +#define STATS_X THEME->GetMetricF("Other","StatsX") +#define STATS_Y THEME->GetMetricF("Other","StatsY") #define CREDITS_P1_X THEME->GetMetricF("Other","CreditsP1X") #define CREDITS_P1_Y THEME->GetMetricF("Other","CreditsP1Y") #define CREDITS_P2_X THEME->GetMetricF("Other","CreditsP2X") @@ -47,11 +47,12 @@ float CREDITS_Y( int p ) { ScreenManager::ScreenManager() { - m_textFPS.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); - m_textFPS.SetXY( FPS_X, FPS_Y ); - m_textFPS.SetZ( -2 ); - m_textFPS.SetZoom( 0.5f ); - m_textFPS.SetShadowLength( 2 ); + m_textStats.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); + m_textStats.SetXY( STATS_X, STATS_Y ); + m_textStats.SetHorizAlign( Actor::align_right ); + m_textStats.SetVertAlign( Actor::align_top ); + m_textStats.SetZoom( 0.5f ); + m_textStats.SetShadowLength( 2 ); for( int p=0; pm_bShowFPS ) + if( PREFSMAN && PREFSMAN->m_bShowStats ) { - m_textFPS.SetText( ssprintf("%3.0f FPS", DISPLAY->GetFPS()) ); - m_textFPS.Draw(); + m_textStats.SetText( ssprintf("%d FPS\n%d TPF\n%d DPF", DISPLAY->GetFPS(),DISPLAY->GetTPF(),DISPLAY->GetDPF()) ); + m_textStats.Draw(); } for( int p=0; p m_ScreenStack; CArray m_ScreensToDelete; - BitmapText m_textFPS; + BitmapText m_textStats; BitmapText m_textSystemMessage; BitmapText m_textCreditInfo[NUM_PLAYERS]; }; diff --git a/stepmania/src/ScreenSelectGroup.cpp b/stepmania/src/ScreenSelectGroup.cpp index 604d18b72f..ab1165bc60 100644 --- a/stepmania/src/ScreenSelectGroup.cpp +++ b/stepmania/src/ScreenSelectGroup.cpp @@ -229,7 +229,7 @@ ScreenSelectGroup::ScreenSelectGroup() m_textTitles[i].LoadFromFont( THEME->GetPathTo("Fonts","normal") ); m_textTitles[i].SetXY( TITLES_START_X + i*TITLES_SPACING_X, TITLES_START_Y ); m_textTitles[i].SetHorizAlign( Actor::align_left ); - m_textTitles[i].SetVertAlign( Actor::align_bottom ); + m_textTitles[i].SetVertAlign( Actor::align_top ); m_textTitles[i].SetZoom( 0.5f ); m_textTitles[i].SetShadowLength( 2 ); this->AddSubActor( &m_textTitles[i] ); diff --git a/stepmania/src/ScreenSelectStyle.cpp b/stepmania/src/ScreenSelectStyle.cpp index 6d6cf32a2d..30e85c9d76 100644 --- a/stepmania/src/ScreenSelectStyle.cpp +++ b/stepmania/src/ScreenSelectStyle.cpp @@ -54,6 +54,7 @@ ScreenSelectStyle::ScreenSelectStyle() GAMESTATE->m_bPlayersCanJoin = true; GAMEMAN->GetGameplayStylesForGame( GAMESTATE->m_CurGame, m_aPossibleStyles ); + ASSERT( m_aPossibleStyles.GetSize() > 0 ); // every game should have at least one Style, or else why have the Game? :-) m_iSelection = 0; for( int i=0; iDisableZBuffer(); + m_Fade.Draw(); if ( STAGE_SCREEN_TYPE == SCREENTYPE_PUMP) // only PUMP uses the song background on the stage screen