   }
 
   if (arduboy.pressed(A_BUTTON)) {
-    shouldPlayTone |= 1 << 0;
-
-    for (byte i = 0; i < MAX_PLAYER_BULLETS; i++) {
-      if (!playerBullets[i].isVisible()) {
-        playerBullets[i].set(spaceShip.x, (spaceShip.y + (16 / 2) - 1), true);
-        break;
+    if (inGameAButtonLastPress < (inGameFrame - 75)) {
+      inGameAButtonLastPress = inGameFrame;
+      // Fire A weapon (single fire)
+      for (byte i = 0; i < MAX_PLAYER_BULLETS; i++) {
+        if (!playerBullets[i].isVisible()) {
+          playerBullets[i].set(spaceShip.x, (spaceShip.y + (spaceShip.height / 2) - 1), true);
+        }
       }
     }
   }
 
   // Here to test out other SFX
   if (arduboy.pressed(B_BUTTON)) {
-    shouldPlayTone |= 1 << 1;
+    if (inGameBButtonLastPress < (inGameFrame - 15)) {
+      inGameBButtonLastPress = inGameFrame;
+      // Fire B weapon (rapid fire)
+      for (byte i = 0; i < MAX_PLAYER_BULLETS; i++) {
+        if (!playerBullets[i].isVisible()) {
+          playerBullets[i].set(spaceShip.x, (spaceShip.y + (spaceShip.height / 2) - 1), true);
+          break;
+        }
+      }
+    }
   }
 
   if (arduboy.notPressed(UP_BUTTON) && arduboy.notPressed(DOWN_BUTTON)) {


void drawEnemies() {
  for (byte i = 0; i < MAX_ENEMIES; i++) {
    if (enemies[i].health == 0) {
      byte enemyX = random(MIN_ENEMY_SHIP_X, MAX_ENEMY_SHIP_X);
      byte enemyY = random(MIN_SHIP_Y, MAX_SHIP_Y);
      enemies[i].set(enemyX, enemyY, (random(3) + 1));

}

void playGame() {
  inGameFrame = 0;
  inGameAButtonLastPress = 0;
  inGameBButtonLastPress = 0;
  score = 0;
  livesRemaining = MAX_LIVES;
  spaceShip.reset();
