Hallo Besucher, der Thread wurde 3,3k mal aufgerufen und enthält 30 Antworten

letzter Beitrag von cbmhardware am

CBM 8000 Gamescroll geschmeidiger ?

  • Ob das noch etwas geschmeidiger werden kann ? - Beim CBM 8000 wird es wohl nur Hardscroll werden, aber vielleicht kennt jemand einen Trick ? Dieser Abstand zwischen den einzelnen Zeilen nervt auch,


    gamescroll.prg

  • Die Hardware des PET erlaubt nur zeichenweisen Verschub.

    Da wird nix "weich".


    Der Abstand zwischen den Zeilen, der geht schon weg.


    Es gibt einen chr$ Wert dafür der mit PRINT ausgegeben wird.

    Und bei den Business PET gibt es auch eine Tastenkombination.

  • Die Hardware des PET erlaubt nur zeichenweisen Verschub.

    Da wird nix "weich".

    Man könnte ja auch charscrollen...dann wirds weich

    Beim PET? ?(

  • Je nachdem was da sonst noch auf Screen soll, könntest du höchstens noch "Halbschritte" machen, wenn du die Grafikzeichen nutzt. Es gibt ja die vier "Viertelpunkte", mit denen du theoretisch in einer "Grafik"-Auflösung von 160x50 "pixeln" kannst. Mit denen liessen sich auch Schritte in der halben Breite eines Characters realisieren, was zumindest etwas weicher wäre.

  • Dann muss ich mich mal auf die Suche nach der Umschaltung machen. Ich hatte mal ein bisschen an den Registern des CRTC gepfuscht, da kam schon eine kleine Verbesserung heraus:

    Code
    1. sei
    2. lda #50
    3. sta $e885


    Ist in der Emulation nicht ganz perfekt und man müsste es mal auf echter Hardware sehen.


    Man könnte ja auch charscrollen...dann wirds weich

    Da werden einzelne Chars gescrollt. Der 6545 CRTC ist ein einfacher Chip zur Textausgabe, da wird Soft-Scrolling per Register nicht unterstützt.

  • Rein theoretisch hat der 6x45 doch Register für die Zeilentimings - also den ganzen Screen kann man möglicherweise schon pixelweise schieben. Er löst keine Interrupts aus, deswegen dürfte es unmöglich sein, wie beim VIC, unterschiedliche Screenareas mit unterschiedlichen Timings zu definieren...


    -> CRTC bei 6502.org


    Theoretisch.

    Praktisch ist jedes schreiben in Register mit unschönen Effekten am Bildschirm verbunden.



    Zweitens, angenommen man könnte Pixelweise verschieben ...

    Dann wäre es zwar 7 Steps lang "smooth", aber danach würde ein harter Ruck kommen.

    Außer man verzichtet auf eine Spalte (eine Zeile) in jeder Richtung die man scrollen will.

  • Diese Technik wurde scheinbar bei der CBM 4000-Demo "No Pets Allowed" verwendet.


    Ich hatte nun das Ausschalten dieser Dunkelzeile im Handbuch gefunden:

    Code
    1. lda #$8e
    2. jsr $ffd2


    Eigentlich sollte es Moonbuggy werden, ich werde es jetzt doch lieber zuerst mit einer Kikstart-Version versuchen. Mal sehen was man sich aus den paar Grafikzeichen zusammenbauen kann.

  • 1. Dafür schreibt man in der Austastlücke, weil's der 6845 wohl auch nur immer für den ganzen Screen kann... Die Frage ist, ob man rauskriegt, wann die Austastlücke ist... Zur Not kann man vielleicht die Interrupts auszählen


    2. Jeder Smoothscroller funktioniert so. Aber da käme auch kein harter Ruck, sondern schlimmstenfalls ein Microruckler - denn wenn die Verschiebung von +7 Pixel auf 0 zurückgesetzt wird, wird gleichzeitig die Verschiebung des Screens um einen Character gemacht. Der VIC kann halt diese Randzeilen/-spalten besser verstecken bzw. achtet man beim Programmieren eines Demos darauf, dass in dem Randbereich ohnehin nur Spaces sind.


    Man müsste sich da mehr mit dem CPC auseinandersetzen, denn die Jungs haben den CRTC wirklich ausgereizt - klar, mit einer anderen Infrastruktur, dennoch...


    Dann gibt's da noch den Unterschied zwischen 80-Zeichen- und 40-Zeichen-Pet. Ersterer trickst ganz schön 'rum, um die Pixelclock zusammenzukriegen; der 40-Zeichen-Pet hängt - wie der VIC - direkt an den CPU-Signalen. Da müssten die Chancen viel größer sein...


    Aber ich bin da auch Eunuch.. also ich weiß von vielem, wie's theoretisch geht... ;)

  • Der 6545 CRTC ist ein einfacher Chip zur Textausgabe, da wird Soft-Scrolling per Register nicht unterstützt.

    Der 6545 ist, wie der 6845, effektiv ein Adresszähler und Timingenerator für Video. Achja, Lightpen könnte er auch noch. Du brauchst noch eine ganze Menge zsätzliche Hardware damit hinten ein Bild rauskommt. Und wie der 6845 (z.B. auf einer CGA oder Herkuleskarte) könnte er auch Grafik, nur eben nicht so wie er im CBM verwendet wird.


    Ich erinnere mich noch an ein hübsches Programm namens '80to40' mit dem ich auf einem CBM8000 viele für CBM4000/3000 geschriebene Spiele wie PacMan oder Space Invaders spielen konnte. Das hat einige Änderungen im 6545 durchgeführt. Leider nicht perfekt, das Bild waberte leicht.

  • Ich hatte es eben mit einem echten CBM 8296 versucht und das ist wirklich nicht erträglich. Das ruckelt und zuckelt vor sich hin. Dann werde ich es doch besser mal mit meinem alten CBM 2001 versuchen. Hätte es zu gern mit 80Z umgesetzt.

  • Ich hatte es eben mit einem echten CBM 8296 versucht und das ist wirklich nicht erträglich. Das ruckelt und zuckelt vor sich hin. Dann werde ich es doch besser mal mit meinem alten CBM 2001 versuchen. Hätte es zu gern mit 80Z umgesetzt.

    Der hat aber keinen CRTC. ;)

  • Der hat aber keinen CRTC. ;)

    Eben, da könnte das Tricksen beim Scrolling einfacher und erfolgreicher werden. Ich hätte gern den CB8296 genommen, wegen 80Z (CRTC) und den zusätzlichen 16kB-Blöcken.

  • Und wie willst du beim PET 2001 tricksen? Da kannst du doch das Videotiming gar nicht beienflussen.

  • Und wie willst du beim PET 2001 tricksen? Da kannst du doch das Videotiming gar nicht beienflussen.

    Ich muss es mir selbst erst anschauen. Ich hatte kürzlich Space Invaders reassembliert und auch einen Breakout Klon gesehen, beide scheinbar vom gleichen Programmierer, die einigermassen gut animiert waren.


    Ich hätte auch noch einen CBM 4032, ganz tief unten im Lager, ohne Ahnung ob der funktioniert. Der ist dann vielleicht danach dran.

  • Und wie willst du beim PET 2001 tricksen? Da kannst du doch das Videotiming gar nicht beienflussen.

    Ich muss es mir selbst erst anschauen. Ich hatte kürzlich Space Invaders reassembliert und auch einen Breakout Klon gesehen, beide scheinbar vom gleichen Programmierer, die einigermassen gut animiert waren.

    Mit dem Zeichensatz kann man natürlich tricksen. Es gibt ein Space-Invaders, das die vertikalen Grafikblöcke variabler Breite für horizontales Scrolling verwendet. Ich hatte damals in der Schule eine Pendelsimulation geschrieben, die auch ganz smooth läuft. Mit vollen 320 Pixel horizontale Auflösung.


    Aber an's Timing kommt man ohne CRTC nicht ran.

  • Geh mal nach dem 80to40-Programm suchen und schau dir an was das tut. Ich hab es nicht mehr, aber ich weiss, daß man damit das für einen 3032 bzw. 4032 programmierte Space Invaders sehr gut auf einem 8032 spielen konnte.

    Ich habe eben alle denkbaren Quellen versucht: nichts. Das Programm (Basic ?) war auch wohl unter dem Namen "cbm4032emu" im Umlauf.


    http://petlibrary.tripod.com/index-5.html


  • Nein, 80to40 ist kein BASIC-Programm. Es hat maximal einen BASIC-Lader. Es lädt sich in das zweite Kilobyte des Bilschirmspeichers und tut dann beim Start schräge Dinge mit dem CRTC. Ausserdem hängt es sich in den IRQ ein. Du hast danach einen Bildschirm der 40 Zeichen breit ist und mittig angeordnet. Die Zeichenbreite bleibt, die ist wohl von der Hardware vorgegeben.


    Es ist allerdings nicht perfekt, der Rechner crasht wenn du den Bildschirm scrollst weil die Routine im ROM auch das laufende Programm verschiebt. Ich hab es nur für Spiele wie PacMac und Space Invaders benutzt.


    Hier könnte es drin sein: http://www.zimmers.net/anonftp…tilities/utils8032.d64.gz