shift registers and rgb leds

im using this code. and its supposed to scroll the leds but my scroll is retarded.
it seems the on leds are off and the off leds are on. how do i fix this?

int DS_pin = 11;
int STCP_pin = 8;
int SHCP_pin = 12;
void setup()
{
pinMode(DS_pin,OUTPUT);
pinMode(STCP_pin,OUTPUT);
pinMode(SHCP_pin,OUTPUT);
writereg();
}

boolean registers[8];

void writereg()
{
digitalWrite(STCP_pin, LOW);
for (int i = 7; i>=0; i--)
{
digitalWrite(SHCP_pin, LOW);
digitalWrite(DS_pin, registers[i] );
digitalWrite(SHCP_pin, HIGH);
}
digitalWrite(STCP_pin, HIGH);
}

void loop()
{
for(int i = 0; i<8; i++)
{ 
  registers[i] = HIGH;
  delay(100);
  writereg();
  }
  
  for(int i = 7; i>0; i--)
{

  registers[i] = LOW;
  delay(100);
  writereg();

}
}

Please read:- How to use this forum It will tell you that posting code without a schematic is a bit useless, although it uses more contrite words.

and its supposed to scroll the leds but my scroll is retarded.

Do you mean retarded in the correct sense of the word as backwards, or in the slang sense of the word as not functional as you require?