I don't know how a buffered display would work with the additional light & shadow layers, But it is still the typical approach that most tile-based engines use for performance reasons.
Happy Coding,
VaiN
Edit: Oh and not sure if anyone else had asked this, but any chance of enabling W,A,S,D to scroll the map?