Photochrome used a bunch of tricks combined - each having a small impact - to try to match the original colour at that pixel. Some of it is obvious but some a bit less so.
* Reload the entire palette as many times as possible, per scanline. This gets you pretty far but is just an optimised version of what Spectrum512 always did.
* Render 2 images and strobe them. On interlaced displays you get some benefit from the fact that scanlines are blurred both positionally (vertical blurring) and temporally (persistence) so scanlines aren't really completely separate between half-frames. There's some inherent flicker but the blurring effects help average colours from multiple images.
* Allocate pixels using error distribution, and distribute the error across the 2 images (as well as outwards in 2D as usual) so the strobing will turn 'colour error' into 'flicker error' which gets absorbed by the TV to an extent.
* Allocate new palette values as part of the error distribution as much as possible, so the 'wrong' colour used in one field is compensated by an opposite colour on the next field.
* Use a different error size for different machine specs. Colour error on STE is half that of an ST.
The rest is down to using a good dithering/error distribution method and rock solid palette loader.
There was a fullscreen version of this stuff, but it couldn't manage so many colours. I can't really remember why - maybe just older code. I think it was used in the 'Tobias Richter' slideshow disc... (??)
There was another issue with PCS - some machines (like my Mega4) had a strange problem where the shifter loaded the palette a cycle 'late' and it produced noisy 1-pixel vertical lines sometimes, depending on luck when you booted the machine. This couldn't be compensated by the CPU in the usual way (for Timer-B rasters) so PCS delayed using newly loaded palette indexes for 1 pixel to hide the artifact.
I remember trying an STE blitter version of the palette reloader but i don't remember the outcome now. Probably caused some issue or other or I would have used it.
(I suspect the error diffusion stuff in PCS could have been improved further given a bit more effort - I'm scared to look
