Hallo liebe Retrocoder,
ich bin relativ neu im Forum und beschäftige mich erst seit ca. 3 Monaten mit der Assemblerprogrammierung.
Allerdings immer nur abends oder wenn mal Luft ist. Aber ich komme ganz gut voran.
Endlich das nachholen, was ich mit 14 versäumt habe .
Jetzt hänge ich allerdings fest und habe keine Idee mehr und auch google liefert nix.
Also: Mein Ziel ist, den oberen Bereich des BS über $d016 und $d011 durchzuscrollen und den unteren Bereich statisch zu lassen um Text und weitere Infos darauf auszugeben.
Das 4-Wege-Scrolling habe ich gem. diesem codebase64-Beispiel realisiert. Es zuckt noch ein bisschen aber funktioniert schonmal.
Aber mit dem Aufteilen des Bildschims habe ich keine Idee wie ich das überhaupt angehen sollte.
Ich habe testweise einen Rastenzeileninterrupt erstellt und um sicherzustellen das er funktioniert den Rahmen im nicht-scrollbaren Bereich blau eingefärbt (siehe Bild).
Dann habe ich mal testweise im unteren Bereich die Register $d016 und $d011 initialisiert (siehe auskommentierter Bereich). Bringt aber nix bzw. alles durcheiander .
Alles flackert und zuckt nur und scrollt lustig weiter bis zur letzten Zeile.
Meine Interrupt-Routine habe ich hier mal angefügt, auch wenn nichts bedeutendes drinsteht:
- ; ##############################################################################
- ; # Rasterzeileninterrupt
- ; ##############################################################################
- rasterIRQ
- lda $d019
- cmp #RASTER_IRQ
- bpl rasterIRQ_scroll
- lda $dc0d
- cli
- jmp $ea31
- rasterIRQ_scroll asl $d019 ;IRQ bestätigen
- lda $d012 ;aktuelle Rasterzeile
- cmp #RASTER_IRQ_END ;im schwarzen Bereich?
- bcc rasterIRQ_normal ;nein -> dann blau
- lda #$00 ;schwarz
- sta $d020 ;als Rahmenfarbe setzen
- lda #RASTER_IRQ ;nächsten IRQ
- sta $d012 ;schreiben
- jmp rasterIRQ_end
- rasterIRQ_normal lda #$fe ;blau
- sta $d020 ;als Rahmenfarbe setzen
- ;lda #%11001000 ;vertikales Scrollen aus
- ;sta $d016
- ;lda #%11011000 ;horizontales Scrollen aus
- ;sta $d011
- lda #RASTER_IRQ_END ;nächste Zeile für
- sta $d012 ;IRQ wegschreiben
- rasterIRQ_end pla
- tay
- pla
- tax
- pla
- rti
Wo muss ich jetzt ansetzen? Innerhalb des blauen Streifens soll kein Scrolling stattfinden, darüber lässt sich der Text schon in alle Richtungen scrollen.
Gibt es Beispielcode für sowas?
Ich wäre echt froh, wenn ihr mir weiterhelfen könntet.
Viele Grüße
aitsch