otta777さんの説明でほとんどですが、こう認識するとしっくり来ると思います、と言うのを少し補足させて頂きます。 BUTTON(2)の機能は「押された瞬間」ですが、これはもう少し厳密に表現すると「前回は押していなくて今回は押していたら」となります。 で、ここで「前回」と「今回」の定義は具体的になんぞや?ということになります。 連続的な時間をどこかで区切って定義してやる必要がありますが、ゲームだと時間はフレームで管理するのが一般的なので、プチコンでは「前のフレーム」「今のフレーム」で区切られています。言い換えると垂直同期のタイミングです。 なので、BUTON(2)は「前のフレームで押していなくて今のフレームで押していたら」になります。 垂直同期を待たずにボタン判定を取得すると結果が同じなのはこのためです。 ちなみに、これはBUTTON(0)でも同じそうです。