Hallo Besucher, der Thread wurde 17k mal aufgerufen und enthält 84 Antworten
letzter Beitrag von sauhund am
Klein anfangen: ESI-artiges Cracktro in ASM nachcoden
- TheRyk
- Erledigt
-
-
was noch fehlt... du musst d012 und d011 auf definiert werte setzen am anfang, damit dein raster irq auch an der stelle ausgelöst wird wo du willst und nicht irgendwo
um das zu über prüfen mach am anfang der irq routine ein lda#1;sta$d020 und am ende lda#0;sta$d020 ... dann siehst du wo die irq routine läuft
-
Versuch mal in Zeile 92 anstatt "rts" ein "jmp soft"
Ahhh! Das konnte ja so gar nicht gehen.
Vielen, vielen Dank!
EDIT: Danke auch Dir, Sauhund, das wird ebenfalls in Angriff genommen, nachdem nun Zeilenverlegung und Ruckel-Bug gemeistert sind.
-
Bin ich jetzt gerade blind oder wo ist eigentlich der "echte Softscroller" (d016?!?) in Deinem Code?
oder geht das auch bei $35... -
er speichert den wert nur in $35 zwischen
-
er speichert den wert nur in $35 zwischen
Okay, vielleicht ist Nachts, wenn man gerade von ner Party nach Hause kommt nicht der beste Augenblick noch fremden Code zu lesen ...
-
-
Hmh. Nun denn, das Verbinden von Scroll und dem vorherigen Teil macht ein wenig Probleme.
Erstmal gute Nachrichten:
Positiv ist schon mal, dass genug Schwarz am unteren Bildrand vorhanden ist, um einen Scroll problemlos unten laufen zu lassen. Gelungen ist mir (wenn auch vielleicht nach programmier-ästhetischen Maßstäben nicht schön), die Sound-Abspiel IRQ in die Scroll-Textroutine einzuflechten.Musik läuft also. Aber die Optik...
<-- KEINE kaputte PLA/Char-ROM, VICE-Screenshot
Es scrollen nur farbige inverse Spacezeichen (beabsichtigt ist eine weiße Schrift), und eine zerschossene Ruckelgrafik ist zu sehen. Ein Problem könnte sein, dass ich jetzt erstmal den Scrolltext mangels Platz und Plan bei $5000 (über ökonomische Verlegung von Koala - falls möglich - und straffe Nutzung des Speicher-Beginns reden wir besser später nochmal) abgelegt habe und dementsprechend noch irgendwo was anpassen muss, was ich noch nicht gefunden habe. Der Scrolltext landet scheinbar im Farbram und nicht im Bildschirmram... oder? Ggf. warum tut er das, der Hühnerschrecker?Ich vermute den Fehler irgendwo zwischen Zeile 40 und 60 oder in der nachfolgenden IRQ, kann aber auch die Scroll-Schleifen nicht ganz ausschließen. Vielleicht sind es auch wirklich trotz Verlegung Speicher-Konflikte zwischen Grafik und Scroll, weil irgendwo noch nicht um plus $2000 umgerechnet wurde nach Verlegung des Textes Oder müssen Zeilen gelöscht werden?
Code- !to "cracktro.prg"
- *= $2000
- !bin "flandertm.prg",,2 ; Koala-Bild nach $2000 laden
- *= $0cf6
- !bin "Humpa3.bin"; Musik nach laden
- *= $0804 ;also später sys 2052
- .koala:
- lda $3f40,x ; FARBEN IN BILDSCHIRM RAM
- sta $0400,x
- lda $4040,x
- sta $0500,x
- lda $4140,x
- sta $0600,x
- lda $4240,x
- sta $0700,x
- lda $4328,x ; FARBEN IN FARB-RAM
- sta $d800,x
- lda $4428,x
- sta $d900,x
- lda $4528,x
- sta $da00,x
- lda $4628,x
- sta $db00,x
- dex
- bne .koala
- lda #$3b ; BITMAP
- ldx #$18 ; MULTI-COLOR
- ldy #$18 ; SCREEN $0400, BITMAP $2000
- sta $d011
- stx $d016
- sty $d018
- jsr $0cf6
- tax
- sei ; interrupts stoppen
- lda #$00
- sta $d020 ; border Farbe
- ; lda #$00 ; optional: Screenfarbe ungleich Border
- sta $d021 ; screen schwarz
- lda #$01
- sta $0286 ; Schriftfarbe weiß
- ; jsr clrscr ; <-- WENN hier gebraucht, dann anders
- lda #$7f
- sta $dc0d
- lda $dc0d
- lda #$01
- sta $d01a
- lda #<irq
- ldx #>irq
- sta $0314
- stx $0315
- cli ; interrupts wieder erlaubt
- jmp *
- irq
- asl $d019
- lda #$E3
- cmp $d012
- bne *-3
- lda $35
- sta $d016
- lda #$ff
- cmp $d012
- lda #$80
- cmp $d012
- bne *-3
- jsr $0d0b
- lda #$c8
- sta $d016
- jsr hardscroll
- jmp $ea81
- hardscroll
- lda $35
- sec
- sbc #$01
- and #$07
- sta $35
- bcc soft
- rts
- soft
- lda $5000 ; Zugriff auf Text (s.u.)
- cmp #$ff
- beq endscroll
- sta $0427+960
- ldx #$00
- scrollloop
- lda $0401+960,x
- sta $0400+960,x
- inx
- cpx #$27
- bne scrollloop
- inc soft+1
- bne sk2
- inc soft+2
- sk2
- rts
- endscroll
- lda #$00
- ldx #$30
- sta soft+1
- stx soft+2
- jmp soft
- *=$5000 ; Textinhalt
- !ct scr
- !tx " hallo forum "
- !byte $FF ; Textende
Für Hilfen bin ich wie immer dankbar.N8 und
-
Versuchs mal in Zeile 73 mit LDA #$18 statt #$c8.
Damit müsste zumindest Multicolor wieder funzen...EDIT: Achso und versuch den IRQ mal so zu ändern. Bin gerade aufm Sprung, deswegen kanns auch falsch sein. Guck einfach mal:
-
Ein Teil des Koalas wird wieder korrekt im Multicolor-Modus dargestellt, Danke für den Tipp.
Der Rest ist immer noch garbled, ruckelt (oben) und flackert (an der Grenze zwischen zerhackter und heiler Grafik). -
-
Danke Spider!
Zumindest Multi-Color wird wieder korrekt angezeigt. Warum bzw. wo mein Pfusch lag, muss ich noch mal verstehen gelegentlich.
Bleibt das Problem mit dem Scroll und mein Verdacht, dass er nicht im Bildschirm-RAM, sondern im Farb-RAM landet.
EDIT: Der Verdacht ist hiermit bestätigt: Der Text lautet " HALLO FORUM " und die inversen Spaces ziehen sich z.B. für das "A" den Farbwert 1/weiß und für das "L" den Farbwert ASC("L")-->grau. Weshalb der Text nur einmal ausgeführt wird und danach nur noch graue inverse Spaces kommen, wird auch noch zu klären sein.
-
Du musst halt "vor" dem Scroller auf Textmodus schalten und "danach" wieder auf Multicolor (Das war ja der "Trick").
-
@Spider: Ahh! Okay, ich versuch's.
EDIT: Hmh. Auf Textmodus umschalten kriege ich zwar prinzipiell hin, aber leider wird bei meinen bisherigen Versuchen auch das Bild in Zeichensatz zerhackt, scrollen tut trotzdem nix. Wie und an welcher Stelle (in der IRQ oder besser in einer der Scroll-Schleifen) schalte ich den Textmodus nur für den Scrolltext an, ohne dass auch die Grafik umgeschaltet wird?
-
Hmh. Ich habe in IRQ die Ausführung "Multi-Colour AN" verlegt auf nach Ausführung von Hardscroll, erschien mir logischer, Bild wird auch angezeigt. Und der Textmodus sollte eigentlich vorher in der IRQ eingeschaltet worden sein. Trotzdem muss noch was im Argen sein, denn der Scrolltext enthält statt Zeichen weiterhin nur farbige inverse Spaces.
Code- irq
- asl $d019
- lda #$E3
- cmp $d012
- bne *-3
- lda $35
- sta $d016
- lda #$ff
- cmp $d012
- bne *-3
- lda $1b ; Wunsch: TEXT-Modus wird vor Hardscroll
- sta $d011 ; Zeilen angeknipst, leider bringt's nix
- jsr hardscroll
- ; danach müsste doch die richtige Position sein,
- ; um MultiColor wieder anzuknipsen, oder? Also los:
- lda #$3b ; BITMAP
- ldx #$18 ; MULTI-COLOR
- ldy #$18 ; SCREEN $0400, BITMAP $2000
- sta $d011 ;
- stx $d016 ;
- sty $d018 ;
- lda #$80 ;
- cmp $d012
- bne *-3
- jsr $0d0b
- jmp $ea81
-
ich wiederhole mich wie immer mal selber
"um das zu über prüfen mach am anfang der irq routine ein lda#1;sta$d020 und am ende lda#0;sta$d020 ... dann siehst du wo die irq routine läuft"
mach das mal, verschiedene farben nach d020 schreiben, vor und nach jedem warten auf d012.... dann siehst du ganz genau wann wo was umgeschaltet wird, und kommst schnell drauf warum das jetzt nich geht. (du schaltest d011 an der falschen stelle um)
-
Okay, mach ich, versprochen.
Danke für den Zaun-Wink, wenn er nicht hilft, weine ich nochmal
Leider ruft real life gerade. Aber hoffe, den Fehler dann heute Abend zu beheben. -
Ein INC $D020 -> CODE -> DEC $D020 sollte s doch auch tun oder ?
Bei mir beginnt der Scroller bei zeile 242 ($d012)Code- l1: lda $d012 ; raster lesen
- cmp #242 ; letzte grafik zeile
- bne l1 ; abwarten
- nop ; etwas Timing, damit die Umschaltung
- nop ; im unsichtbaren Bereich stattfindet.
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- lda #$1b ; textmode an
- ldx #$c8 ; (200) multi-colour mode aus
- ldy #$12 ; Screen 4400 , char 4800
- stx $d016 ;
- sty $d018
- sta $d011
- scroller: ; ab hier ist Textmode
- unsw.
-
Zitat
Ein INC $D020 -> CODE -> DEC $D020 sollte s doch auch tun oder ?
na klar
-
Das ist echt sehr gebrauchbar um zu sehen wieviel Zeit ein bestimmter Programmteil pro Frame verbraucht.
Ich benutze das auch öfters.
Mal 'ne kurze Zwischenfrage: Wie kann man eigentlich am elegantesten die ollen Nop's aus meinem Code herausbekommen ?