In the Grid Evalutaion section, precalculating the Array index values and replacing the AND-logic with nested IF/THEN saves Another bunch of cyclesIt's not nearly as elegant but it does increase the performance a bit. All in all that 1024 iteration FOR/NEXT loop took 265ms to execute on my test board, now it's 67. Obviously I don't know if it still WORKS so it might all be for nothing :-)Code:'Grid Evaluation CntPlus33 VAR WORD CntPlus32 VAR WORD CntPlus31 VAR WORD CntPlus1 VAR WORD CntMinus33 VAR WORD CntMinus32 VAR WORD CntMinus31 VAR WORD CntMinus1 VAR WORD CntPlus33 = Counter + 33 CntPlus32 = Counter + 32 CntPlus31 = Counter + 31 CntPlus1 = Counter +1 CntMinus33 = Counter - 33 CntMinus32 = Counter - 32 CntMinus31 = Counter - 31 CntMinus1 = Counter - 1 IF led[CntMinus1] > 0 THEN IF counter > 0 THEN Colour[population] = led[CntMinus1] population = population + 1 ENDIF ENDIF IF led[CntPlus1] > 0 THEN IF counter < 1023 THEN Colour[population] = led[CntPlus1] population = population + 1 ENDIF ENDIF IF botedge = 0 THEN IF led [CntMinus33] > 0 THEN Colour[population] = led[CntMinus33] population = population + 1 ENDIF IF led [CntMinus32] > 0 THEN Colour[population] = led[CntMinus32] population = population + 1 ENDIF IF rigedge = 0 and led [CntMinus33] > 0 THEN Colour[population] = led[CntMinus33] population = population + 1 ENDIF ENDIF IF topedge = 0 THEN IF led [CntPlus31] > 0 THEN Colour[population] = led[CntPlus31] population = population + 1 ENDIF IF led [CntPlus32] > 0 THEN Colour[population] = led[CntPlus32] population = population + 1 ENDIF IF rigedge = 0 and led [CntPlus33] > 0 THEN Colour[population] = led[CntPlus33] population = population + 1 ENDIF ENDIF
/Henrik.
Bookmarks