Ob das der Performance gut tut?
Kommt auf die Emulationsmethode an. Eine Variante ist es, per Timerinterrupt die Daten vom CGA-Grafikspeicherbereich (B8000-BBFFF) in den aktiven Hercules-Framebuffer (ab B0000) umzukopieren, was natürlich viel CPU-Zeit kostet. Eine andere ist es, den CRTC so umzuprogrammieren, dass er immer noch ein zum Monitor kompatibles Timing erzeugt, aber die Grafikdaten aus dem CGA-Speicherbereich holt - was aber wegen der unterschiedlichen Zahl von aktiven Zeilen pro Bild selbiges gestaucht darstellt. Und dann gabs da noch einen CRTC-Programmier-Trick, mit dem immer zwei Zeilen aus dem CGA-Speicherbereich und eine dritte aus dem RAM dahinter dargestellt wurden, so dass die Bildhöhe wieder ungefähr passt - das lässt sich dann noch mit einem Timerinterrupt kombinieren, der eine der CGA-Bildzeilen in die dritte Zeile umkopiert.
Die Farbe-zu-Monochrom-Sache ist dabei das kleinste Problem, in den 4-Farb-CGA-Modi liegen die beiden Bits für die Farbe direkt hintereinander, so dass man auf der Hercules-Karte bei doppelter horizontaler Auflösung ein schlechtes "Dithering" kostenlos hinbekommt.