Die Sache mit dem CRTC

  • Hallo,


    hier und da lese ich, dass einige Funktionen des CRTC, der im CPC als Grafikchip dient, erst sehr spät entdeckt wurden und offenbar nicht dokumentiert waren. Vor allem die erst nachträglich entdeckte Fähigkeit Hardware-Scrolling mit dem CPC zu verwirklichen, soll dazu geführt haben, dass er als Computer für Spiele nicht so populär wurde, wie er hätte sein können (und damit vielleicht sogar ein größerer Konkurrent des CPC).


    Gibt es irgendwo eine Übersicht, welche Funktionen da erst nachträglich entdeckt wurden? Und wann und wie man die entdeckt hat, interessiert mich auch. Vielleicht kann mir ja auch jemand von hier ein bisschen was darüber erzählen?


    Stefan

  • Die Seite kenne ich, danke!


    Ein paar Infos zu nachträglich gefundenen Funktionen gibt es hier: http://kundenserver.computroni…mstrad/amstradcpc664.html ... das ist allerdings etwas ungenau.

  • eventuell hilft ein Blick auf die Seite http://www.cpcwiki.eu/index.php/Games in der bestimmte Techniken (z.B. zum Hardware- Scrolling / Overscan in der Tabelle + Spiel + Jahr) zu einem bestimmten Zeitpunkt eingesetzt wurde, um bessere Rückschlüsse zu ziehen?


    Das ist ne gute - regelrecht medienarchäologische - Idee!!

  • Das gehört sozusagen indirekt zu meiner Ausgangsfrage: Kann mir jemand ein Tape-File (oder noch lieber ein WAV) von diesem Spiel machen:
    http://thegamearchives.com/?va…1_87564_0_9_21968_0_0_0_0

  • Kann es auch das Original-Tape sein? (Hat Speedlock-Kopierschutz)


    Ich schau es mir gleich mal an... Und mache eine Dateiversions-Kassette.
    Muss aber eben mal weg ;)


    Ich übertrag das dann mit JavaCPC als WAV auf eine richtige Kassette, damit ich es zur Original-Hardware rüber bekomme.

  • Wieder einmal danke ich dir gern!

  • Hier mal eine Zusammenfassung der "erweiterten" Fähigkeiten des CRTCs:
    - Fullscreen: Mittels Register 1,2,4 und 6 kann der Bildschirmbereich soweit vergrößert werden, daß er auch den kompletten Border ausfüllt
    - 32KB Overscan: Der Bildschirmspeicher kann von normal 16KB auf 32KB verdoppelt werden, das in einem Stück vom CRTC angezeigt wird; insgesamt schafft der CPC eine reguläre Auflösung von 832 x 288 (!) Pixel, im Interlace Modus sogar 832 x 576 Pixel; mir ist kein anderer 8bit Homecomputer der 80er Jahre bekannt, der eine dermaßen hohe Auflösung beherrschte
    - Hardwarescrolling: Dieses Feature wurde allerdings schon von Anfang an von der CPC-Firmware genutzt, hat aber mit folgendem Feature eine noch größere Bedeutung:
    - Screensplitting: Der Bildschirm besteht nicht aus einem einzigen 40x25 Zeichen Bereich (unter "Zeichen" versteht man immer einen 8x8 Pixelblock in Mode 1; in Mode 0 ist solch ein Zeichen nur 4x8 Pixel groß, in Mode 2 16x8), sondern wird von oben nach unten in beliebig viele unterteilt, die alle andere Startadressen haben können; hiermit kann man z.B. nur bestimmte Bereiche des Bildschirms scrollen, während andere stillstehen
    - 1/2 Char Scrolling: Mittels Register 3 kann das Hardwarescrolling, das normalerweise immer um 1 Zeichen scrollt, feiner auf 1/2 Zeichen gestellt werden; bei Screen-Splitting muß hier allerdings drauf geachtet werden, daß solche verschobenen Bildschirmbereiche sich erst nach einigen Zeilen anpassen und im Übergangsbereich verzerrt werden (siehe auch nächstes Feature)
    - Schwabbler: Mittels Register 3 kann auch ein Schwabbel-Effekt erzeigt werden
    - Vertikales Pixelscrolling: Mittels Register 5 kann vertikales Scrolling pixelgenau durchgeführt werden
    - Linesplitting: Mittels Register 9 kann eine Textzeile, die normalerweise 8 Pixel hoch ist, auf bis zu 1 Pixel verkürzt werden; damit ist dann Linesplitting mögliche, d.h. jede Bildschirmzeile startet mit einer anderen beliebigen Adresse (normalerweise geht das nur alle 8pixel); Problem ist hierdran, daß ohne weitere Tricks dann nur noch 1/8 des Bildschirmspeichers zur Verfügung steht
    - Inline-Splitting: Diese Technik ist wohl das extremste, was man mit dem CRTC auf dem CPC durchführen kann; es wird sogar innerhalb einer Pixelzeile die Bildschirmadresse mehrfach geändert; hierfür wird unter anderem sogar Register 0 manipuliert (von dem man eigentlich tunlichst die Finger lassen sollte); als Ergebnis ist hiermit vertikales, gesplittetes Hardware-Scrolling möglich; das erste Demo, das diese Technik eingeführt hatte, war die Overflow III Demo


    Die meisten der aufgezählten "Features" mit Ausnahme der ersten paar sind in Wirklichkeit keine (geheimen) Funktionen des CRTC sondern basieren auf Tricks, die man durch genau getimete Manipulation der CRTC-Register während eines Bildschirmaufbaus erzielt.
    Möglicherweise hab ich noch irgendwas vergessen?


    CU,
    Prodatron


    PS: Mehrere Auflösungen oder mehr als 2/4/16 Farben gleichzeitig auf einem Bildschirm sind übrigens keine CRTC-"Features", sondern basieren auf Manipulationen der Gate Array Register während eines Bildschirmaufbaus. Sind aber im Grunde die selbe Art von Tricks.

  • Herzlichen Dank!!!


    (Was die Maximalauflösung angeht, könnte ich mir vorstellen, dass dieser hier im Overscan-Modus noch etwas mehr Pixel anzeigt.)

  • Bei der vertikalen Auflösung gibt's keinen Unterschied: Wie beim CPC sind bis zu 312 Zeilen möglich, wobei der sichtbare Bereich ebenfalls bei ca. 288 Zeilen enden dürfte.
    Bei der horizontalen Auflösung sieht es folgendermaßen aus: Der Nick-Chip vom Enterprise kann nur maximal 46 "Slots" pro Zeile darstellen, da er während der anderen Slots aus der Line-Tabelle lesen muß bzw. Ram-Refresh durchführt.
    Von daher ist die maximale horizontale Auflösung auf 46*16=736 Pixel beschränkt, womit das Maximum von 832 Pixel beim CPC eben nicht erreicht werden kann ;)


    CU,
    Prodatron

  • Der CRTC2 ist wohl der "schlechteste", mit diesem laufen viele Demos (z.B. Batman Forever) und einige Spiele überhaupt nicht.
    Am "besten" soll der CRTC0 sein. Es gibt auch eine Software mit der man ganz leicht auslesen kann, welche Version verbaut ist.

  • Ja, kann man so sagen, mit dem CRTC0 ist man meistens am besten bedient.


    An zwei Unterschiede meine ich mich noch erinnern zu können:
    - Beim CRTC1 kommen die Interrupts etwas anders (1-2 Rasterzeilen versetzt?) als beim CRTC0 und CRTC2. Bei diesen beiden kommen sie an der selben Stelle. Dadurch kann das Timing bei manchen Demos durcheinandergeraten (Zeitpunkt an dem ein CRTC-Register geändert werden soll)
    - CRTC2 beherrscht kein Linesplitting. Register 9 darf auf maximal 1 gestellt werden, was 2 Pixelzeilen pro "Text"zeile entspricht. Batman forever arbeitet sehr viel mit 1pixel-Linesplitting, daher läuft's dann hier nicht.


    Eine CRTC-Erkennungsroutine hab ich (möglicherweise aber nur OldGen), bei Interesse kann ich die mal raussuchen.


    CU,
    Prodatron

  • Ich hab es mal assembliert und als WAV aufgezeichnet. So kann man es ohne Problem in den echten CPC 464 laden.


    Hier auf der Original-Hardware: