XNAガイドブック(135ページ)をやってるんですが、下のメソッドがどうして500ミリ秒ごとにtrueを返すのか
分かりやすく解説してくれる神様はいませんか?

ゲームクラスの変数宣言部

private double mDblPreviousFrame = 0; //直前のフレームでの経過時間
private double mDblCurrentFrame = 0;

メソッド

bool Timer(GameTime gameTime)
{
   bool bNewInterval;
    double dblMS = (double)gameTime.ElapsedRealTime.Milliseconds;

   //フレーム間の経過時間の加算と、変数のオーバーフロー回避
    mDblCurrentFrame += dblMS;
   mDblCurrentFrame = mDblCurrentFrame % 500;

    //経過時間が増えているのでインターバル未完了
    if (mDblCurrentFrame >= mDblPreviousFrame)
      bNewInterval = false;
   //インターバル完了で現在の時間を0にリセット
    else
     bNewInterval = true;
    mDblPreviousFrame = mDblCurrentFrame;

   return bNewInterval;
}