I have been reviewing the schematic and code from
https://github.com/funnypolynomial/Kenbakuino
I like the use of higher efficiency LEDs compared to the original, that saves some current compared to the original text schematic.
I see that the SPI is bit banged. The micro spends much of its time twiddling bits when it could be in sleep mode instead.
Any idea why the the hardware SPI peripheral was not used to drive the shift registers?
The Atmel app notes provide work arounds for the ISP programming.
Why are the Output LEDs not just driven by the PORTD directly eliminating the 74HC595?
The max output current of the 74HC595 is lower that of the mega.
Another mode would be to drive the LED's with lower value series resistors but with a duty cycle. This can usually result with the same visible intensity but lower average current draw.
Use of the Arduino delay function instead of a timer interrupt and use of the micros sleep state could also reduce current.
It seems that a new layout could reduce parts count and really reduce current draw.