       {
         cannonX = cannonX - step;
       }
-      if ((*fireport & firepin) == 0
+      if (((*fireport & firepin) == 0 || (*fire2port & fire2pin) == 0)
         && curTime - shootTime >= 500) // shoot
       {
         shootTime = curTime;


volatile uint8_t
    *latport, *oeport, *addraport, *addrbport, *addrcport, *addrdport,
    *leftport, *rightport, *fireport;
uint8_t
    sclkpin, latpin, oepin, addrapin, addrbpin, addrcpin, addrdpin,
    leftpin, rightpin, firepin;

int16_t hiscore;
int16_t score;


#define MAX_LIVES 3
int lives;
bool started;

void render_digits(uint16_t num, int len, int x, int y, uint8_t *buf, int line, uint8_t color)
{
