antic und displaylist

1, 2

antic und displaylist

von robbifan » So 8. Jul 2007, 16:09
hallo, könnte ihr nicht mal ein wettbewerb oder kurses hier reinbringen "antic und displaylist". ich bewundere diese beeinflussung
des bildschirmes/screens mit diesen befehlen. da kann man ja viele bewundernden grafikkdarstellungen/sprites erzeugen usw.

ich glaube das es eine interessante längerweilende sache wird.

ich bin ziemlich neu und habe es mal probiert, nur verstanden habe ich das immer noch nicht.

wie ist das interesse der anderen progger denn dazu?, die könner und nichtkönner, wie ich einer bin.

kann man so etwas mal in die gänge stossen?

von PacMan » So 8. Jul 2007, 16:55
Hallo robbifan,

Vor 3 Wochen habe ich angefangen Artikel zu dem Thema zu sammeln weil mich das auch interessiert. Im Abbuc Magazin war das auch mal Thema. Das suche ich noch raus. Ich könnte anbieten wenn noch weitere Tips oder Scanns kommen diese zu sammeln und dann komplett per Post zu verschicken. Das wären dann zwar Kosten für einen Großbrief aber besser als alles per 56k Modem zu versenden.

Gruß,
Steffen

Re: antic und displaylist

von HiassofT » So 8. Jul 2007, 17:07
robbifan hat geschrieben:ich bin ziemlich neu und habe es mal probiert, nur verstanden habe ich das immer noch nicht.

Ich persönlich finde ja die Erklärung im Profibuch (Seite 99-125) recht gut und sie deckt so ziemlich alles ab was man wissen kann/muss. Schreib einfach mal, welche Sachen Dir noch unklar sind, dann können wir Dir sicher weiterhelfen.

so long,

Hias

von robbifan » So 8. Jul 2007, 18:11
hallo pacman, ich würde dann einen grossbrief nehmen.

mfg

von pps » So 8. Jul 2007, 21:04
@Steffen: Ruf´doch einfach durch, wir können uns doch einfach mal treffen, dann klären wir das Thema auf ;)
So kompliziert ist das ja nicht.

Ansonsten kann man sicherlich auch einiges über´s Forum klären, nur ist dazu nötig, das "Ich habe da was nicht verstanden." etwas zu präzisieren.

von robbifan » So 8. Jul 2007, 21:50
Code: Alles auswählen
DLIST   .BYTE $70,$70,$70 ; 3*8 Leerzeilen
        .BYTE $47 ; ganz grosse schrift, 20 Zeichen + Bildschirmspeicher laden
        .WORD TEXT
        .BYTE $70 ; 8 Leerzeilen
        .BYTE $4F ; Graphics 8
        .WORD SCREEN
        .BYTE $F,$F,$F ; nochmal 3 Zeilen Gr.8
        .BYTE $70
        .BYTE $4E ; Graphics 15, der selbe Bildschirmspeicher
        .WORD SCREEN
        .BYTE $E,$E,$E
        .BYTE $41 ; Ende der Dlist, JMP VBI
        .WORD DLIST


diese 3 zeilen ".BYTE $F,$F,$F ; nochmal 3 Zeilen Gr.8" sind schwarz, wenn ich noch "$F,$F" dranhänge, erscheinen die zeilen mit muster, wie kommt das?

von pps » So 8. Jul 2007, 22:32
Code: Alles auswählen
 org $2000

main
 lda (low)dlist

;-- (low) ist durch das kleiner Zeichen zu ersetzen
 
sta 561

;-- (high) ist größer - thanks to php :(
 lda (high)dlist
 sta 561

loop
 jmp loop

dlist
 dta b($70,$70,$70)
 dta b($47)
 dta a(text)
 dta b($70)
 dta b($4F)
 dta a(screen)
 dta b($F,$F,$F)
 dta b($70)
 dta b($4E)
 dta a(screen)
 dta b($E,$E,$E)
 dta b($41)
 dta a(dlist)

;-- Ein paar Sachen, damit man was sieht...

text
 dta d' text text TEXT TEXT '

screen
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)
 dta b(50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50)

 run main


Das habe ich mal daraus in XASM erstellt...

Es tritt hier kein Fehler auf, egal, wieviele Gr.8 Zeilen da sind.

Was mir aufgefallen ist, ist daß Du auch in Gr. 15 den gleichen Bildschirm darstellst, da ja auch hier screen als Adresse geladen wird. Wenn Dort was anderes sein soll, muß das verändert werden.

Was (besonders) bei den Grafikmodes (also alles, außer 0,1,2,12,13) wichtig ist, ist daß der screen auf einer 4k Grenze beginnen sollte. Wenn diese Grenze nämlich überschritten wird muß an exakt dieser Bildschirmposition ein erneuter LMA sein.

Setze am besten vor das Screen mal ein .org $x000.
Vielleicht ist Dein Programm gerade mitten an solch einer Grenze, dann kommt es zu komischen Vorfällen...

von robbifan » So 8. Jul 2007, 23:15
welchen compiler hast du genommen?

mfg

von pps » Mo 9. Jul 2007, 08:47
Wie oben geschrieben, nutze ich den XASM als Assembler. Aber es ist nichts anders. Eins zu eins der atasm Code von oben so ergänzt, daß man was sehen kann. Für eine genaue Analyse des Fehlers, wäre der komplette Code von Dir nötig. Die DL alleine ist i.O.

von robbifan » Mo 9. Jul 2007, 08:49
hier ist der code, er ist von hier.

Code: Alles auswählen
.BANK

START   = $2000
SCREEN  = $3000

        * = START

        LDX #39 ; eine Zeile hat 40 Bytes
GLOOP   LDA #0
        STA SCREEN,X     ; Zeile 1
        LDA #$55
        STA SCREEN+40,X  ; Zeile 2
        LDA #$AA
        STA SCREEN+80,X  ; Zeile 3
        LDA #$FF
        STA SCREEN+120,X ; Zeile 4
        DEX
        BPL GLOOP
       
        LDA #<DLIST>DLIST
        STA 561

X       JMP X

DLIST   .BYTE $70,$70,$70 ; 3*8 Leerzeilen
        .BYTE $47 ; ganz grosse schrift, 20 Zeichen + Bildschirmspeicher laden
        .WORD TEXT
        .BYTE $70 ; 8 Leerzeilen
        .BYTE $4F ; Graphics 8
        .WORD SCREEN
        .BYTE $F,$F,$F ; nochmal 3 Zeilen Gr.8
        .BYTE $70
        .BYTE $4E ; Graphics 15, der selbe Bildschirmspeicher
        .WORD SCREEN
        .BYTE $E,$E,$E
        .BYTE $41 ; Ende der Dlist, JMP VBI
        .WORD DLIST

; 20 Zeichen text
TEXT    .SBYTE "       HALLO!       "

        .BANK
; startadresse für DOS .COM Files
        * = $02E0
        .WORD START

von mp-one » Mo 9. Jul 2007, 10:27
Zum Thema Display List könnt Ihr auch mal www.atariarchives.org durchforsten. Da steht so einiges in den Online-Büchern.

Gruß,

Michael

von HiassofT » Mo 9. Jul 2007, 12:46
robbifan hat geschrieben:diese 3 zeilen ".BYTE $F,$F,$F ; nochmal 3 Zeilen Gr.8" sind schwarz, wenn ich noch "$F,$F" dranhänge, erscheinen die zeilen mit muster, wie kommt das?

Die 3 Zeilen sollten nicht schwarz sein sondern 1 x Blau, 2 x Blau/Hellblau gerastert, 1 x Hellblau. So wie hier:
Bild
Wenn Du noch 2 weitere $F dranhängst, sollten noch 2 weitere Zeilen in Hell/Dunkelblau dazukommen. Da der Bildschirmspeicher dafür (Screen+160..199 bzw Screen+200..239) noch nicht initialisiert wurde, ist es Zufall was für ein Muster da angezeigt wird (Dunkelblau wenn der Speicher gelöscht war oder halt irgendwas anderes wenn der Speicher vorher von einem Programm belegt war).

so long,

Hias

von mp-one » Mo 9. Jul 2007, 13:43

von robbifan » Di 10. Jul 2007, 11:50
Da der Bildschirmspeicher dafür (Screen+160..199 bzw Screen+200..239) noch nicht initialisiert wurde, ist es Zufall was für ein Muster da angezeigt wird


das war es. ich wusste nicht den zusammenhang zum bildschirmspeicher. man könnte dann den gleichen bildschirmspeicher immer wiederholen, wenn man dieses muster beibehalten will, oder?
zum beispiel die 40zigste zeile mit dem gleichen bildschirmspeicher wie zu anfang dem antic sagen.

mfg

von HiassofT » Di 10. Jul 2007, 12:15
robbifan hat geschrieben:das war es. ich wusste nicht den zusammenhang zum bildschirmspeicher. man könnte dann den gleichen bildschirmspeicher immer wiederholen, wenn man dieses muster beibehalten will, oder?

Ja, genau. Wenn Du nur ein zB "$F" dazufügst, wird der aktuelle Bildschirmspeicher einfach weiter hochgezählt (um genau so viele Bytes wie eine Zeile braucht). Mit ".BYTE $4F", ".WORD SCREEN" kannst Du die Bildschirmspeicheradresse jederzeit wieder auf einen bestimmten Wert setzen. Wenn Du möchstest, kannst Du das sogar in jeder Bildschirmzeile machen.

BTW: Das ist zB dann sinnvoll wenn Du horizontales Scrolling machen möchtest. Baue Dir einen "breiten" Bildschirmspeicher auf, wo jede Zeile zB 128 Bytes sind. Dann kannst Du nur durch Ändern der Bildschirmspeicher-Adressen in der Display-List einfach den angezeigten Ausschnitt verschieben.

so long,

Hias

von PacMan » Di 10. Jul 2007, 16:58
Hallo robbifan,

Post ist unterwegs. Auch was zum Scrolling und Abbuc Demokurs ist dabei.
Displaylist Literatur: Your Atari Computer- Seite 294-306 und M&T Programmierhandbuch- S.264 ff.

Gruß,
Steffen

von mega-hz » Di 10. Jul 2007, 23:45
Hi,

ich finde das Thema DLI ein leckeres Thema!
Wie wäre es mit nem kleinen Wettberwerb, wer macht die schönste Displaylist mit Effekten?

Hias könnte ja mit dem Startscreen des Freezers schonmal anfangen ;-)

Ich hab da auch noch einiges, was in Arbeit war/ist...

Gruß,
Wolfram.

von pps » Mi 11. Jul 2007, 09:23
Da sollte aber ein limit gesetzt werden... Mann kann alles mögliche mit den sachen anstellen... Denke mal sowas, wie maximale programmlänge sollte festgelegt sein und auch die veröffentlichung eines quelltextes ohne verkrüptung von wesentlichen sachen sollte sein. Andere sollen ja was von den sachen haben.

ps: bitte nicht schimpfen über das ganze kleingeschreibe. Ich tippe gerade mit dem handy.

von robbifan » Mi 11. Jul 2007, 09:53
hallo, ich fände ein bildschirmscrolling ,zusätzliche sprites und mehr farben in der darstellung gut , natürlich sollte das flackerfreie/flimmerfreie dabei eine wesentliche rolle spielen.

mfg

von pps » Mi 11. Jul 2007, 14:11
Das ist dann ja schon eine komplette demo. Musik dazu und fertig... Denke mal, daß es schon was "kleineres" sein sollte.
Eher was mit maximal 256 bytes oder so.
1, 2