diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 211f58dfb1..8240aa406e 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -319,12 +319,13 @@ void Player::Load() m_bLoaded = true; m_LastTapNoteScore = TNS_None; - - m_iRowLastCrossed = -1; - m_iMineRowLastCrossed = -1; - m_iRowLastJudged = -1; - m_iMineRowLastJudged = -1; - m_JudgedRows.Reset(); + // The editor can start playing in the middle of the song. + const int iNoteRow = BeatToNoteRowNotRounded( GAMESTATE->m_fSongBeat ); + m_iRowLastCrossed = iNoteRow - 1; + m_iMineRowLastCrossed = iNoteRow - 1; + m_iRowLastJudged = iNoteRow - 1; + m_iMineRowLastJudged = iNoteRow - 1; + m_JudgedRows.Reset( iNoteRow ); // TODO: Remove use of PlayerNumber. PlayerNumber pn = m_pPlayerState->m_PlayerNumber; diff --git a/stepmania/src/Player.h b/stepmania/src/Player.h index a331207818..07b9a18128 100644 --- a/stepmania/src/Player.h +++ b/stepmania/src/Player.h @@ -12,6 +12,7 @@ #include "AttackDisplay.h" #include "NoteData.h" #include "ScreenMessage.h" +//#include "RageLog.h" class ScoreDisplay; class LifeMeter; @@ -48,6 +49,7 @@ class JudgedRows { char *p = m_pRows; int newSize = max( m_iLen*2, iMin ); + //LOG->Trace( "Old size %d, new size %d.", m_iLen, newSize ); m_pRows = new char[newSize]; int i = 0; if( p ) @@ -77,9 +79,10 @@ public: } return ret; } - void Reset() + void Reset( int iStart ) { - m_iStart = m_iOffset = 0; + m_iStart = iStart; + m_iOffset = 0; memset( m_pRows, 0, m_iLen ); } };