Hi Leute
brauche mal wieder eure Hilfe bei meinen kleinen Problem.
Also ich habe eine kleine Animation, die besteht aus 2x4 Sprites mit insgesamt 21 Animationsschritte. Zusammen sind das 168 einzelne Sprites.
Die Sprites habe ich nach $a000 - $ca00 geparkt.
In meinen Programm sollen immer nur 8 Sprites nach z.B. $0e00 kopiert werden. Soweit habe ich es ja hin bekommen, mein Problem ist jetzt das er die nächsten 8 Sprites nach $0e00 kopiert.
Hier mal mein Code
Code
- ;------------------------------------------------------------
- ; Hauptroutine IRQ1
- ;------------------------------------------------------------
- irq01
- lda #$fa
- loop01 cmp raster
- bne loop01
- lda #$36 ; Rambereich bei $a000 einschalten
- sta $01
- ;--------------------------------------------------------------------
- ; jeweils 8 Sprites von $a000 nach $0e00 kopieren für die Animation
- ;--------------------------------------------------------------------
- lda #<Ablage_Spr ; Anfangsadresse des zu
- sta anflow ; verschiebenden Bereich
- lda #>Ablage_Spr ; Anfangsadresse des zu
- sta anfhigh ; verschiebenden Bereich
- lda #<Ziel_Spr ; Endadresse des
- sta ziellow ; Zielbereiches Lowbyte
- lda #>Ziel_Spr ; Endadresse des
- sta zielhigh ; Zielbereiches Highbyte
- ;------------------------------------------------------------
- ; Block an Zieladresse kopieren
- ;------------------------------------------------------------
- ldx #$03 ; Blockzähler 3 Blöcke kopieren
- ldy #$00 ; Innere Schleife
- bl01 lda (anflow),y ; Daten lesen
- sta (ziellow),y ; Daten kopieren
- dey
- bne bl01
- inc anfhigh ; Highbyte vom Zeiger Anfangsadresse um 1 erhöhen
- inc zielhigh ; Highbyte vom Zeiger Zieladresse um 1 erhöhen
- dex
- bne bl01
- lda #$37 ; Rom wieder einschalten
- sta $01
- lda #sprite_block ; Sprite 0 von Spriteblock holen
- sta $7f8
- lda #sprite_block+1 ; Sprite 1 von Spriteblock holen
- sta $7f9
- lda #sprite_block+2 ; Sprite 2 von Spriteblock holen
- sta $7fa
- lda #sprite_block+3 ; Sprite 3 von Spriteblock holen
- sta $7fb
- lda #sprite_block+4 ; Sprite 4 von Spriteblock holen
- sta $7fc
- lda #sprite_block+5 ; Sprite 5 von Spriteblock holen
- sta $7fd
- lda #sprite_block+6 ; Sprite 6 von Spriteblock holen
- sta $7fe
- lda #sprite_block+7 ; Sprite 7 von Spriteblock holen
- sta $7ff
- ldx zaehler ;an dieser Stelle ist mein Denkfehler
- lda frames,x
- sta >Ablage_Spr ; wie kann ich den High-Bytewert von Ablage_Spr ändern
- inc zaehler
- lda zaehler
- cmp #$15
- beq raus
- jmp $ea31
- raus lda #$00
- sta zaehler
- jmp $ea31
- ;------------------------------------------------------------
- ; Speicher für Daten
- ;------------------------------------------------------------
- zaehler !byte $00
- ;--- Highbyte-Werte des Zwischenspeicher der Sprites ----
- frames !byte $a0,$a2,$a4,$a6,$a8,$aa,$ac,$ae
- !byte $b0,$b2,$b4,$b6,$b8,$ba,$bc,$be
- !byte $c0,$c2,$c4,$c6,$c8,$ca
Bin für eure Denkanstösse schon im Voraus Dankbar
Gruss Drachen