German Amiga Community Foren-Übersicht German Amiga Community
The new home for all Amiga Users out there !
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin   Chat 

BOB in Assembler setzen

 
Neues Thema eröffnen   Neue Antwort erstellen    German Amiga Community Foren-Übersicht -> Amiga Programmierung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
geldo79



Anmeldedatum: 09.08.2017
Beiträge: 5

BeitragVerfasst am: Mi, 09.10.2019 14:24    Titel: BOB in Assembler setzen Antworten mit Zitat

Moin,

ich versuche momentan, einen 16x16 Pixel großen BOB mit 4 Bitplanes (16 Farben, RAW-Normal) in eine 320x256 Bitplane zu blitten (ebenfalls 4 Bitplanes). Verwendet werden alle DMA Kanäle des Blitters (A = Maske, B = BOB, C = Hintergrund, D = Ziel-Bitplane). Irgendwie passt das noch nicht so. Evtl. kann mir jemand sagen woran es hier hakt? Ich benutze bisher keine verschachtelten Planes. Die Einstellungen die ich für richtig halte, produzieren gar kein Ergebnis. Wenn ich aber z.B. die BLTSIZE auf (16*64)+2 erhöhe, sehe ich etwas, aber auch nicht das Korrekte.

Es wird eine cookie-cut Funktion für den Blitter verwendet ( $ca ). Ich hätte nun gedacht, es müssten folgende Werte eingestellt werden:

A-Modulo = 0, da hier für jede Ziel-Bitplane ein Blit erfolgt, und die Daten des Bob bzw. der Maske pro Bitplane nacheinander im Speicher stehen

B-Modulo = 0, aus denselben Gründen

C-Modulo = $40-2, da der BOB 16 Bit, also 2 Byte pro Zeile beträgt

D-Modulo = $40-2, aus denselben Gründen

BLTSIZE = #(16*64)+1, da 16 Zeilen a 1 Wort.

Hier der ganze Code, vielleicht weiss jemand was ich hier komplett falsch verstehe:

Set_Bob:

move.l BITPLANE,a0
move.w d3,d0
mulu.w #40,d0
add.w d0,a0

move.w d1,d0
move.w d0,d1
and.w #$000f,d0
lsl.w #8,d0
lsl.w #4,d0
move.w d0,d2

or.w #$0FCA,d0
lsr.w #3,d1

and.w #$fffe,d1
add.w d1,a0

lea BOB,a1
moveq #4-1,d7
PlaneLoop:
btst #6,2(a5)
WBlit2:
btst #6,2(a5)
bne.s WBlit2

move.l #$ffff0000,$44(a5)


move.w d0,$40(a5) ; BLTCON0
move.w d2,$42(a5) ; BLTCON1
move.w #40-2,$60(a5) ; BLTCMOD
move.w #0,$64(a5) ; BLTAMOD
move.w #40-2,$66(a5)

move.l #Maske,$50(a5) ; BLTAPT (Maske)
move.l a0,$54(a5) ; BLTDPT (Ziel)
move.l a0,$48(a5) ; BLTCPT (Hintergrund)
move.l a1,$4c(a5) ; BLTBPT (BOB)
move.w #(16*64)+1,$58(a5) ; BLTSIZE

lea 2*16(a1),a1

lea 40*256(a0),a0
dbra d7,PlaneLoop

rts


Gruß Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    German Amiga Community Foren-Übersicht -> Amiga Programmierung Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de