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

letzter Beitrag von cbmhardware am

V-Scroll Problem

  • Ich spiele im Moment mit einem Listing aus dem 64-Intern rum. Ich habe das mal etwas umgebaut und die dollsten Kloepse ausgelassen.


    Nun kann ich am Ende aber nicht das Hi-Byte erhoehen, damit auch mal mehr als 256 Byte reingescrollt werden.



    Was mache ich falsch ?





  • Ja. Dann wird aus $1200 irgendetwas mit $3A.. . Koennte auch etwas weniger sein. War der erste Wert nach Griff auf ALT+M im Vice.


    Ich muss mal einen komplett anderen Ansatz versuchen. Nochmal. :roll:


    Ist zum Verzweifeln. Bin heute scheinbar zu bloede..


    Michael

  • Jou, Problem geloest. Das mit ADC und Uebertrag hatte mir gefehlt. Daher habe ich in der Schleife rumgewurschtelt.



    Danke !,
    Michael


  • Ich moechte das nun noch "enthampeln".


    Duerfte doch mit Double Buffering gehen ? :


    1. Pixel scrollen im sichtbaren Screen
    2. heimlich den hardscroll im unsichtbaren Speicher
    3. einschalten und wieder zurueck zum ersten Screen
    4. loop zu 1.


    Wuerde ich das so richtig machen ?



    Michael

  • ehmm...


    würde das folgendermassen beschreiben:


    1. pixel scrollen/anzeigen in screen 1
    2. wärenddessen hardscrollen in screen 2
    3. wenn 8 pixel in screen 1 gescrollt sind (und der hardscroll in screen 2 fertig ist) -> umschalten auf screen 2
    4. pixel scrollen/anzeigen in screen 2
    5. wärenddessen hardscrollen in screen 1
    6. wenn 8 pixel in screen 2 gescrollt sind (und der hardscroll in screen 1 fertig ist) -> umschalten auf screen 1
    7 goto 1

  • Prima, danke, so hatte ich das auch gemeint. Im Prinzip wird dann immer im nicht sichtbaren Bereich der hardscroll ausgefuehrt.


    Habe noch keine Idee wie ich das machen soll. Bevor ich ergraut bin, moechte ich aber mal ruckelfrei in beide Richtungen scrollen koennen. :)


    Michael

  • naja... ist relativ einfach, wenn es eine kontinuierliche bewegung in eine richtung ist.
    da kann man den hardscroll ja auch einfach über mehrere frames verteilen (wenn nicht all zu schnell gescroll wird).


    wenn allerdings noch nicht klar ist, wohin die reise geht, oder mitten in der bewegung umgedreht wird braucht es halt ein bissle mehr inteligenz :)


    wenn man dann allerdings noch die farben mitscrollen will, muss man aufpassen, da das ja nicht mit doublebuffering gemacht werden kann (gibt ja nur ein color-ram).

  • Farbe muss ich mir nicht antun.;) Wenn ich erstmal etwas Text scrollen kann ist das ok.
    Habe es nicht so mit diesen "Haken und Oesen"-Grafikchips.


    Ich habe mal "double-buffering" eingebaut. Beim Start scrollt manchmal noch Gruetze raus, obwohl beide Screenrams geloescht wurden.
    In der linken oberen Ecke hampelt $0400 , bzw. $3c00 etwas rum, aber gesamt sieht das schon viel besser aus. :]


    Vieleicht hat jemand eine Idee zu den bugs ?


    Source passte nicht mehr in einen Beitrag, daher als Link : http://www.cbmhardware.de/test/softi.txt


    Michael

  • Zitat

    Original von Roland
    man kann (fast) alles optimieren...


    kommt halt auch darauf an, auf was?
    speed? grösse? lesbarkeit?, witzige labels? :)


    Ja, ich nehme alles. ;)


    Speziell dachte ich Groesse und ruckelfreies (sehr) langsames scrollen.


    Michael

  • ehm... hab mir die routine eben nochmal angeschaut...


    wieso hat das ding eigentlich eine irq routine???
    vorallem wird die nicht wirklich im sinne einer irq routine verwendet.


    da wird EINMAL der irq aufgerufen und dann NIE WIEDER verlassen!!!
    (ist wirklich ein komisches gewurschtel mit dem wait for raster..usw..)


    Da kannst du das mit dem irq gleich sein lassen :)



    Vielleicht sollte da mal zuerst eine saubere kleine irq-routine her, damit
    du das prinzip eines irqs verstehst...oder?


  • Das war nur ein Versuchballon. Hatte ich nicht wieder rausgenommen. Ist so natuerlich Kaese.


    Das mit dem Warten auf den Rasterstrahl muss aber sein. Wenn der sich in der Mitte befindet, man dann den Scroll durchfuehrt, kannst Du Dir den Rest sicher denken. Das habe ich so aus dem 64er-Intern uebernommen.


    Zitat


    Vielleicht sollte da mal zuerst eine saubere kleine irq-routine her, damit
    du das prinzip eines irqs verstehst...oder?


    Ich wollte das mal mit einem SID zugleich ablaufen lassen, um zu sehen, wie sich das Ganze dann verhaelt.


    Es gibt keine vernuenftige Doku zu diesem Thema fuer einen fast 25 Jahre alten Rechner. Da muss man sich etwas zusammenwurschteln. :)


    Michael

  • naja.... genau dafür ist ein raster-irq ja da, damit du eben nicht auf einen bestimmten wert im rasterregister rumwarten musst um nicht in der mitte des screens ein scroll durchzuführen...


    ...du sagst dem irq: "starte bitte in rasterzeile x" ...und der ruft dann in zeile x dein programm auf :)


    und das es für diesen 25 jahre alten computer keine doku geben soll... =)

  • Zitat

    Original von Roland
    und das es für diesen 25 jahre alten computer keine doku geben soll... =)


    Ich besitze bestimmt 2-300 Buecher fuer den C64. Davon sind vieleicht 10 zum Thema Assembler.
    Da stehen dann auch die ganz banalen Sachen drin. Die Sources sind nach heutigem Stand mehr als ueberholt. Grafikmodis und andere Spielereien nach 1990 gab es damals natuerlich noch nicht.
    Wenn man damit anfangen moechte, kann man die paar Buecher nur noch zum Nachschlagen von Tokens verwenden, oder damit nebenbei die Bude heizen. ;)


    Da bleiben dann noch die Schnipsel und wenigen brauchbaren Seiten im Web. Und dann faengt man an zu wurschteln. ;)



    Michael

  • ich hau hier mal kurz ein schmipsel hin, wie es auch gehen kann (ohne double buffering und nicht sehr optimiert... aber es geht)



    so.... kann man in hinsicht von speed natürlich noch optimieren...
    ...geht ja nur darum, dass es mal bugfree läuft.
    text ist quasi auf $e000 eingestellt (damit man halt was sieht :) )
    ansonsten erklährt sich hoffentlich alles von selbst...


    ich hoffe mal bloss, dass kein tipp/denkfehler drin ist, da ich das einfach mal aus dem kopf gemacht habe.... :baby: