     highScoreTable[currPos + (9 * newHiPos)] = textBuf[currPos];
   }
 
-  persistHighScoreTable();
-}
-
-void persistHighScoreTable() {
+  persistHighScoreTable(false);
+}
+
+void persistHighScoreTable(boolean firstTime) {  
   for (byte i = 0; i < 27; i++) {
     EEPROM.write(i + 2, highScoreTable[i]);
-  }
+    if (firstTime) {
+      // Also write to the reset location starting at 29
+      EEPROM.write(i + 29, highScoreTable[i]);
+    }
+  }
+}
+
+void resetHighScoreTable() {
+  // Read it back into memory and overwrite what's in EEPROM
+  // with data frem reset location
+  
+  for (byte i = 0; i < 27; i++) {
+    highScoreTable[i] = EEPROM.read(i + 29);
+  }
+
+  persistHighScoreTable(false);
 }
 
 void createStarFieldVals() {

      highScoreTable[i] = EEPROM.read(i + 2);
    }
  } else {
    persistHighScoreTable();

    // And write initial signature
    EEPROM.write(0, 254);

void setup() {
  arduboy.beginNoLogo();

  // Uncomment to test high score reset on device that
  // previously tested EEPROM high scores before high 
  // score reset code was added.  Then remove!
  //EEPROM.write(0, 0);
  //EEPROM.write(1, 0);
  
  // Check for hi scores in EEPROM
  if (EEPROM.read(0) == 254 && EEPROM.read(1) == 253) {
    // Scores were in EEPROM
