Como parte de mi fase de aprendizaje programando FPGAs, he llevado a cabo una modificación en el core de Spectrum para permitir la selección de diferentes salidas de video monocromáticas, característica que siempre me ha gustado porque proporciona otra experiencia retro y puede traer recuerdos con monitores CRT monocromáticos antiguos:
Las opciones disponibles son verde, ámbar y blanco y negro, aparte de color, que sería la salida de vídeo por defecto al arrancar el core, y se intercambia de uno a otro con la tecla END. Para llevar a cabo la implementación, he estudiado el módulo que desarrolló @mcleod_ideafix en el core de Amstrad CPC para salida monocromática verde, fuentes que muy generosamente me ha facilitado en privado, y del cual he aprendido mucho, gracias!.
Dadas las limitaciones que se nos presenta en el zxuno original, con 3 bits de profundidad por color de RGB, no es posible más que ofrecer 7 intensidades de un color diferentes. Esto plantea un verdadero reto en la representación gráfica de sistemas cuya paleta de colores es mayor, en los cuales dicha carencia puede ser más o menos fácil disimular.
Concretamente en el Spectrum, sin entrar en modos especiales como el ULA plus, disponemos de la siguiente paleta de colores:

15 colores contando el color negro, y de los cuales, la mitad son los mismos pero de mayor intensidad. Además en la imagen se muestran ordenados de menor a mayor luminancia. El cálculo de la luminancia se obtiene a partir de una simple formula que pondera los valores de RGB:
0.2126*R + 0.7152*G + 0.0722*B
Con tan pocos niveles de intensidad disponibles, no merece la pena, ni creo que sea posible implementar este cálculo. Por ese motivo, la mejor opción es hacer una conversión directa según su luminancia. He optado por no hacer distinción entre un mismo color y su correspondiente de mayor intensidad, entre otras cosas porque no se pueden representar por la limitación comentada, y representar paletas como la del ULA plus es impensable. Los fuentes los he dejado disponibles en el siguiente repositorio de mi cuenta de GitHub.
He pensado que, tal vez, de alguna forma ingeniosa mediante la implementación de un framebuffer, sea posible crear algún tipo de efecto intercambiando rápidamente diferentes tipos de colores que pueda engañar al ojo humano... es una opción que podría ser interesante investigar, aunque de haberlo, este tipo de efectos podrían tener más sentido en monitores CRT, dudo mucho que en TFT/LCD tengan efecto.
Si alguien está interesado en el mismo, puede obtenerlo directamente del repositorio de GitHub facilitado.