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

letzter Beitrag von gh23 am

Scroller und Rasterbars verbinden

  • Hallol Leute! :winke: Brauche eure Hilfe
    Habe endlich einen passenden Scroller gefunden, aber ich schaffe es nicht den mit meinem Intro zu kombinieren.
    Könnt Ihr mir helfen.


    und hier mein Intro Code


    Es geht mir auch darum wie ich das HI/LO Byte auf den richtigen Adressen finden kann.
    Habe ja erst mit dem coden unter asm begonnen, darum wäre ich euch wircklich dankbar für jede Hilfe.


    Es macht auf jeden Fall riesig Spaß wie sich mein Prg entwickelt


    Edit: Sorry für den ganzen Code aber so ist es für mich leichter :rotwerd:

  • @C64-CAMPER


    Auch wenn#s komisch kling, aber ich code auch noch nicht so lange herum wie Du denkst
    Das wird schon. Habe am Anfang auch gelaubt es ist sehr schwierig, aber je mir Code ich mir anschaue und selber schreibe, je einfacher wird's.
    Folgender Tipp: Befolge immer das 11. Gebot ( Gibt niemals auf ) *gg* und code weiter.


    Ich hoffe Du zeigst uns dann auch einmal ein schönes Demo

  • Wenn ich das richtig sehe, fehlt in intro-ls einfach nur der regelmässige Aufruf des Irq-Handlers, welcher die Rasterbars macht. $314/15 wird gleich beim Programmstart da draufgesetzt, da sind die auch einmal kurz zu sehen, danach wird der Irq-Vector noch wo anders hin verbogen, und kehrt ab da nie mehr zu der Rasterbar-Routine zurück :)
    Um alle Effekte anzuzeigen, musst den entsprechenden Irq-Handler noch in die Kette mit aufnehmen.


    Also, der Irq-Handler, der oberhalb der Rasterbars ablaufen soll, muss vor dem Verlassen noch die Adresse und Rasterzeile ($72 wars glaub ich) des Rasterbar-Irqs nach $d012 und $314/15 poken. Der Rasterbar-Irq vor dem Verlassen dann Zeile und Adresse des Irq-Handlers, der danach kommt, usw.


    Der allerletzte Irq stellt dann die Werte wieder auf den ersten ein. Dann sollte das eigentlich laufen. Evtl. solltest du noch den JMP ea31 auf ea7e bzw. ea81 abändern, um nicht unnötig Zeit mit Tastaturabfrage etc. zu verschwenden, aber vielleicht geht es auch so.

  • lda $72 ;die Rasterzeilen#)
    sta $d012 ;ins VIC-Register
    lda #<irq ;der rasterbarinterrupt aus dem 2. geposteten Listing
    sta $314 ;dorthin, wo das Betriebsystem den Interruptvektor hernimmt
    lda #>irq
    sta 315


    Im Prinzip so, wie du es schon mit Interrupt1 & 2 im 1. Listing machst, da muss nur noch der "irq" aus dem 2. Listing auf die gleiche Art dazwischengemogelt werden.

  • So in etwa:



    ...


    Wenns dann noch nicht geht ist irgendwo noch n anderer Fehler drin, daher am besten nochmal das upgedatete Listing+Prg anhängen.


    Edit: Huch, selbst völlig verwirrt! Interrupt3 muss natürlich wieder Interrupt1 aufrufen :)

  • Das Thema hatten wir doch letztens schonmal so ähnlich. Setz Dich am besten nochmal intensiv mit Interrupts auseinander. Sonst wirst Du immer mal wieder vor dem gleichen Problem stehen.


    Ganz grob gesagt:
    - in $d012 schreibst Du den Wert, an welcher Rasterzeile Dein 1. Interrupt [Adresse bei $0314/$0315 mit angeschaltetem ROM] aufgerufen wird
    - Nun wird jedesmal, wenn die in $d012 angegeben Rasterzeile erreicht wird die Interruptroutine aufgerufen


    Meist ist es aber so, das man ja mehrere Interrupts braucht. In Deinem Beispiel Rasterbars und Scroller.
    Das heisst Du veränderst dann am Ende des 1. Interrupts $d012, $0314/05 so, dass ab einer späteren Rasterzeile der Scrollercode [2. Interrupt] abläuft - und dann am Ende des 2. Interrupts änderst Du wieder alles [$d012, $0314/15] so, dass im nächsten Frame - also wenn der Rasterstrahl wieder oben angekommen ist - wieder Deine Rasterbars [IRQ 1] angezeigt werden.

  • Dank Dir, ist am Anfang nicht so einfach den Überblick zu bewahren

    Wem sagst Du das? ;) Mir wird selbst noch ganz schwindelig, wenn ich meine eigenen ersten Rasterirqversuche anschaue. Einfach dranbleiben. Irgendwann fällt der Groschen. Ist immer schwer das zu erklären. Ich hab einfach immer und immer wieder alle möglichen Tutorials [teilweise auch mehrfach die gleichen] durchgearbeitet... WeißderHenker warum man manches erst nach zehnmaligem Lesen wirklich rafft ;)