Beiträge von flashback

    Zur c64.exe: Keine Ahnung, ich kenne einfach den genauen Unterschied zwischen den Verschiedenen Versionen da gar nicht. Habe zwar gesehen, daß es im Programmverzeichnis verschiedene exe-Dateien gibt, aber mir keine Gedanken darüber gemacht. Also sollte man, um auf Nummer sicher zu gehen, am besten die x64sc benutzen?

    Der letzte grüne Balken ist im Moment noch länger, da vor dem Zurücksetzen auf die Original-Bildschirmfarben noch $d016 zurückgesetzt wird. Aber das kann ich sicher auch tauschen.

    Tja... aber wieso sehen die Bars denn nun sauber aus, wenn doch die Zyklen eigentlich falsch sind? :böse

    Vielen Dank erstmal für die Tips, habe bisher zwar auch mit WinVice im Debug-Modus getestet, aber nur über die x64.exe. Habe jetzt mal das ganze Programm angehängt, es ist noch eine Menge mehr drin, aber die Rasterbars sehen meiner Meinung nach wirklich korrekt aus, die Schreibzugriffe untereinander ergeben eine graue Linie. Und bevor jemand meckert, die Farben für die Bars sind erstmal nur zum Testen.
    ;)

    Hallo zusammen,

    mit Hilfe der Seite retro-programming.de habe ich endlich einen stabilen Raster-IRQ hinbekommen und tatsächlich einige schöne Bars auf den Bildschirm gebracht. Soweit so gut, aber wie kann der Code funktionieren? Ich habe alle Taktzyklen mitgezählt und komme in der Schleife, die für Badlines zuständig ist, nur auf 19 Taktzyklen. Trotzdem sind die Bars gerade? Hier mal der Code-Teil, man "startet" in der stabilen Rasterzeile mit 3 verbrauchten Taktzyklen:


    Abgesehen davon, daß die Schleife für eine normale Rasterzeile auch zu lang ist, sehen die Bars korrekt aus, alle gleich lang und die Umschaltstellen alle direkt untereinander. Liegt es irgendwie daran, daß der Sprung in der Schleife quasi über 2 Rasterzeilen geht?

    Ist ja schön und gut, wenn man mehr oder weniger durch ausprobieren was hinbekommen hat, aber man will ja auch wissen, WARUM! ;)

    Hmm, wenn ich das Beispiel starte, passiert gar nichts, weder der Sprung in die IRQ-Routine, noch der Rücksprung ins Basic. Hab ich vergessen, vorher noch was zu initialisieren?

    Hallo,

    gibt es eine elegante Möglichkeit, innerhalb eines IRQs eine bestimmte Anzahl an Sekunden zu warten, bis eine bestimmte Routine ausgeführt werden soll? Bisher habe ich das mit Hilfe von zwei verschachtelnen Timern gemacht, die während des IRQs runtergezählt wurden. Der erste Timer wird mit dem Wert 50 initialisiert (Frames pro Sekunde), der zweite Timer dann mit der Anzahl Sekunden,die gewartet werden soll:

    Sorry, daß ich diesen alten Thread wieder rauskrame, aber ich bin auch gerade dabei, einen Upscroller zu basteln. Funktioniert auch prinzipiell ganz gut, Soft- und Hardscrolling klappen, auch neue Textzeilen werden eingelesen. Das Problem ist, daß ich am Ende des Scrolltexts ein Endbyte ($ff) eingebaut habe, bei dem der Text neu gestartet werden soll. Allerdings funktioniert das nicht richtig, die letzte Zeile vor dem Endbyte wird immer doppelt ausgegeben. Hier mal der entsprechende Codeschnipsel:


    Scrolltext:

    Code
    UPSCRTEXT:
    .text "1......................................1"
    .text "2......................................2"
    .text "3......................................3"
    .text "4......................................4"
    .text "5......................................5"
    .text "6......................................6"
    .text "7......................................7"
    .text "8......................................8"
    .byte $ff

    Ist die Reihenfolge vielleicht irgendwie falsch? Ich blicke nicht mehr durch... ?(

    Roland, vielen Dank! Das wäre mir nie aufgefallen, und ich sitze jetzt schon knapp zwei Wochen davor... aber manchmal sieht man den Wald vor lauter Bäumen nicht mehr.

    Vielen Dank auch für die anderen Antworten. Das X-Register wird in der Tat während der anderen IRQs genutzt, aber das "INC spr_pointer_x" ist ein guter Tipp.

    Es kann übrigens sein, daß ich euch in Zukunft noch öfter mit diversen Anfängerfragen auf die Nerven gehen werde. ;)

    Hallo zusammen,

    ich versuche gerade meine ersten Gehversuche in Assembler. Als "Übungsaufgabe" möchte ich ein Sprite einfach nur von links nach rechts über den Bildschirm bewegen. Die Routine wird im IRQ aufgerufen. Als Test-Koordinaten habe ich die Werte von $0041 bis $0140 gewählt, um zu sehen, ob die Sprite-Bewegung auch bei Koordinaten über $ff funktioniert.

    Beim "Sprung" von $00ff nach $0100 verschwindet das Sprite jedoch kurz, um danach weiter nach rechts bewegt zu werden. Die Koordinaten sehen für mich korrekt aus. Statt des "sta $d010" habe ich auch schon die Variante "lsr, rol $d010" versucht, das machte keinen Unterschied.

    Hier mal Ausschnitte aus dem Quellcode (Kick-Assembler-Format):

    Sprite-Routine:


    Koordinaten:

    Vielleicht hat ja jemand einen Denkanstoß.
    ;)