The problem with retro graphics these days is that the shading resolution is
much higher than the texture resolution. So you have all these fine lowres
textures but with the shades (stemming from the illumination) being hires,
that is to say you get different shades across a texel. That's never going to
work.
Roughly speaking, the shading needs to be quantized artificially making it
appear of lower resolution, i.e making it the resolution of the texture. How?
Well, if you think about it, given phong shading, you get an interpolated
normal for each pixel (per-pixel lighting), which is fine, but way too good,
because a texel of your lowres texture may cover multiple pixel on the screen
and with the normal slightly changing across it due to the geometry of the
model. Hence, your texel receives multiple shades yet the texel should be flat
shaded to match up. You can achieve this if you record just one interpolated
normal for the whole texel in question. Hence, for all the pixels making up
the texel on the screen you use just one interpolated normal.
I did something like that ages ago (software rendering);
Was sort of a test-bed for my own retro stuff I'm working on. As you can see
in the animation, the shades match the resolution of the texture quite nicely.