Non mais je l'abandonne pas
.nolist
#include "ion.inc"
.list
#ifdef TI83P
.org progstart-2
.db $bb,$6d
#else
.org progstart
#endif
ret
jr nc,start
.db "flip a sprite",0
start:
ld ix,sprite
ld bc,$0803
push bc
xor a
ld l,a
call ionLargeSprite
pop bc
push bc
ld ix,sprite
call flipsprite
ld a,25
ld l,0
pop bc
call ionLargeSprite
call ionFastCopy
bcall _getkey
ret
; INPUT :
; ix:sprite; b:height; c:width/8
; OUTPUT :
; ix=flipped sprite
; /!\ saferam2 is used
flipsprite:
push ix
pop hl
ld de,saferam2
flipsprite_loop:
push bc
push hl
ld h,d
ld l,e
ld b,0
add hl,bc
ld d,h
ld e,l
pop hl
push de
ld b,c
flipsprite_loop2:
push bc
ld a,(hl)
call reverse_a
ld (de),a
inc hl
dec de
pop bc
djnz flipsprite_loop2
pop de
pop bc
djnz flipsprite_loop
ld de,saferam2
push de
pop ix
ret
;- Reverse a
;input: Byte in A
;output: Reversed byte in A
;destroys B
;Clock cycles: 66
;Bytes: 18
;author: calcmaniac84
reverse_a:
ld b,a
rrca
rrca
xor b
and %10101010
xor b
ld b,a
rrca
rrca
rrca
rrca
xor b
and %01100110
xor b
rrca
ret
sprite:
.db %11111111,%11111111,%11111111
.db %10001000,%10001010,%00100011
.db %10111010,%10101111,%01101111
.db %10001000,%10011011,%01100011
.db %11101011,%10101011,%01101111
.db %11101011,%10101011,%01101111
.db %10001011,%10101011,%01100011
.db %11111111,%11111111,%11111111
.end
Ça me gave ça bug :
En gros ce que je fait (ou voudrait faire) c'est mettre l'adresse du buffer (saferam2) à y*largeur du sprite et y coller "à reculons" (du côté droit du sprite vers la gauche) l'inverse de l'octet du sprite...
Quelqu'un voit où ça merde ?