The array transform routine, as posted above executes in 4.66ms on my test hardware (18F46K42 @64MHz).
It's a small improvement but I managed to reduce that to 4.28ms by changing it into two FOR/NEXT loops, one for odd, one for even rows.I must point out though that I don't have the arrays populated with anything so their values are always zero which obviously will have an effect.Code:FOR Col = 0 To 30 Step 2 InPtr = (TempW + Col) led[InPtr] = lednew[InPtr] OutPtr = InPtr IF led[InPtr] > 0 THEN NeoLed(OutPtr) = Led[InPtr] alive = alive + 1 dead = dead + InPtr ELSE NeoLED(OutPtr) = 0 ENDIF NEXT FOR Col = 1 To 31 Step 2 ' Odd rows InPtr = (TempW + Col) led[InPtr] = lednew[InPtr] OutPtr = (TempW) + (31-Col) 'Reversed order IF led[InPtr] > 0 THEN NeoLed(OutPtr) = Led[InPtr] alive = alive + 1 dead = dead + InPtr ELSE NeoLED(OutPtr) = 0 ENDIF NEXT
Bookmarks