MAX7219 in daisy chain. How many decop capacitors I need?

"does anyone have an idea about why the scroll letters would be backwards? "
Easy to fix: change these to count from 8 to 1 instead of 1 to 8:

    digitRegister = 0x01;  // digit0, up to 0x08 for digit7
    digitalWrite (ss3, LOW);
    for (x = displayStart; x<(displayStart +8); x=x+1){  
      SPI.transfer (digitRegister);
      SPI.transfer(displayArray[x]);
      digitRegister = digitRegister+1;
    }
    digitalWrite (ss3, HIGH);

Here's how I did it:

  //Serial.print ("digit 0: ");
  startX = displayStart + 7;
  endX = displayStart-1;
  digitRegister = 0x01;  // digit0, up to 0x08 for digit7
  for (x = startX; x>endX; x=x-1){  
    digitalWrite (ss0, LOW);
    SPI.transfer (digitRegister);
    SPI.transfer(displayArray[x]);
    digitalWrite (ss0, HIGH);
    /*
    Serial.print (" R");
    Serial.print (digitRegister);
    Serial.print (" ");
    Serial.print (displayArray[x],HEX);
    */
    digitRegister = digitRegister+1;
  }
  //Serial.println(";");

  // next digit
  //Serial.print ("digit 1: ");
  startX = displayStart + 15;
  endX = displayStart + 7 ;
  digitRegister = 0x01;  // digit0, up to 0x08 for digit7
  for (x = startX; x>endX; x=x-1){  
    digitalWrite (ss1, LOW);
    SPI.transfer (digitRegister);
    SPI.transfer(displayArray[x]);
    digitalWrite (ss1, HIGH);
    /*
    Serial.print (" R");
    Serial.print (digitRegister);
    Serial.print (" ");
    Serial.print (displayArray[x],HEX);
    */
    digitRegister = digitRegister+1;
  }
  //Serial.println(";");

  // next digit
  //Serial.print ("digit 2: ");
  startX = displayStart + 23;
  endX = displayStart + 15;
  digitRegister = 0x01;  // digit0, up to 0x80 for digit7
  for (x = startX; x>endX; x=x-1){  
    digitalWrite (ss2, LOW);
    SPI.transfer (digitRegister);
    SPI.transfer (displayArray[x]);
    digitalWrite (ss2, HIGH);
    /*
    Serial.print (" R");
    Serial.print (digitRegister);
    Serial.print (" ");
    Serial.print (displayArray[x],HEX);
    */
    digitRegister = digitRegister+1;
  }
  //Serial.println(";");

  // next digit
  //Serial.print ("digit 3: ");
  startX = displayStart + 31;
  endX = displayStart +23;
  digitRegister = 0x01;  // digit0, up to 0x80 for digit7
  for (x = startX; x>endX; x=x-1){  
    digitalWrite (ss3, LOW);
    SPI.transfer (digitRegister);
    SPI.transfer(displayArray[x]);
    digitalWrite (ss3, HIGH);
    /*
    Serial.print (" R");
    Serial.print (digitRegister);
    Serial.print (" ");
    Serial.print (displayArray[x], HEX);
    */
    digitRegister = digitRegister+1;
  }