.nolist #include "ti84pce.inc" .list .org userMem-2 .db tExtTok,tAsm84CeCmp .assume ADL=1 PALETTE: ld hl, $E00105 ld (hl),h ld hl,defspr ld de,$e30800 ld bc,$1c6 ldir ld hl,$e30a00 ld bc,$d031f6 ld (hl),bc ld ($e309fd),hl ; contient $e30a00 = adr qui contient adr.Sprite 0 ld hl,$007200 ; inscrit la variable Ans ld (OP1+1),hl ; dans OP1 ld (OP1),hl ; (correspond au call _AnsName) call _RclVarSym ; Que contient Ans ?.. ld bc,36 ld hl,PalDat dec a jr z,Defini cp 3 jr z,AffPal ld de,$e309d0 ; adresse de la palette ldir ld hl, $E00205 ld (hl),h ret AffPal: ld hl,$d40000 ld de,$d40001 ld (hl),255 ld bc,153599 ldir ld hl,$d40000+14+(5*640) ld de,$e309d0 ld ixh,3 kont: push hl ld ixl,12 douze: ld a,(de) inc de push de push hl ld de,592 ld c,32 jup: ld b,48 lop: ld (hl),a inc hl djnz lop add hl,de dec c jr nz,jup pop hl ld bc,48 add hl,bc pop de dec ixl jr nz,douze pop hl ld bc,640*60 add hl,bc dec ixh jr nz,kont ld hl, $E00205 ld (hl),h ret Defini: push de ld de,$e309d0 ; adresse de la palette ldir pop de or a sbc hl,hl ld a,(de) cp 36 jr c,infeg ld a,36 infeg: ld bc,$e309d0 Pal0Op: push af inc hl push hl push de Push bc call _GetLToOP1 call _ConvOP1 pop bc ld (bc),a inc bc pop de pop hl pop af dec a jr nz,Pal0Op ld hl, $E00205 ld (hl),h ret PalDat: .db $0a,$12,$1d,$1e,$03,$04,$e2,$80 .db $eb,$f6,$fc,$31,$8b,$4a,$b5,$ac .db $c6,$36,$0d,$0c,$6d,$ef,$e7,$ec .db $11,$00,$41,$ff,$f5,$6b,$d8,$98 .db $e6,$e5,$9c,$e4 ;//////////////////////////////////////////////////////// defspr: cp c jp nz,$e308af ; Retour ld a,(de) or a,a jp z,$e308af ; Retour inc de inc de inc de ld a,(de) sub a,48 cp a,17 jr c,okLarg sub a,7 okLarg: ld h,a ld ($e30864),a ; flarg+1 add a,a ld ($e3088e),a ; flargg+1 inc de ld a,(de) sub a,48 cp a,17 jr c,okHaut sub a,7 okHaut: ld b,a ld ($e30861),a ; fhaut+1 inc de ld a,(de) cp 49 jr nc,piks ld a,49 piks: cp 52 jr c,oiks ld a,51 oiks: sub 48 ld l,a ld ($e30886),a ; eldir+1 ld ($e3087b),a ; z00m+1 mlt hl ld c,l ld hl,($e309fd) ld hl,(hl) sla c ld (hl),c inc hl ld c,a mlt bc ld (hl),c inc hl ld ix,$e309d0 fhaut: ld b,0 bbouk: push bc flarg: ld b,0 ld ($e30892),hl ; arrhl+1 CodHex: inc de ld a,(de) sub a,48 cp a,17 jr c,bon sub a,7 bon: ld ($e30879),a ; OffsC+2 OffsC: ld c,(ix+0) z00m: ld a,1 cdf: ld (hl),c inc hl ld (hl),c inc hl dec a jr nz,cdf djnz CodHex eldir: ld a,0 ld c,a dec a jr z,passld push de ex de,hl flargg: ld b,0 mlt bc arrhl: ld hl,0 kbk: push bc ldir pop bc dec a jr nz,kbk ex de,hl pop de passld: pop bc djnz bbouk ex de,hl ld hl,($e309fd) inc hl inc hl inc hl ld ($e309fd),hl ld (hl),de Retour: ld hl,$e00205 ld (hl),h ret ;------------------------------------------------------------------------- SPRITE: ld hl,$E00105 ; SPRITE est en adresse $e308b5 !!! () ld (hl),h ld hl,$007200 ; adresse $e308ba ld (OP1+1),hl ; dans OP1 ld (OP1),hl ; (correspond au call _AnsName) call _RclVarSym ; Que contient Ans ?.. ld bc,3 dec a ; c'est une liste? (a=1) jp nz,$e30800 ; defspr affspr: ld a,(de) ; nb d'éléments cp c jr c,Retour sub c ex de,hl ld ixl,b add hl,bc ElLoop: ld ixh,a bit 0,(hl) inc hl ld de,$e30a00 ld a,e jr z,UnChif rld ld b,d ld c,a mlt bc ld e,c UnChif: rld add a,e ld c,a add a,a add a,c ld e,a push de ElemX: ld c,8 add hl,bc bit 1,(hl) ld a,b jr nz,TroisC bit 0,(hl) inc hl jr z,Chiff rld ld b,d ;ld b,10 ld c,a mlt bc rld ex de,hl sbc hl,hl ld l,a add hl,bc push hl ex de,hl jr RaTTr Chiff: rld ld c,a push bc jr RaTTr TroisC: inc hl rld ld b,d ; ld b,10 ld d,100 ld e,a mlt de rld ld c,a mlt bc push hl inc hl rld sbc hl,hl ld l,a add hl,de add hl,bc ex (sp),hl RaTTr: ld c,8 add hl,bc ElemY: bit 1,(hl) ld a,b jr nz,Trois2 bit 0,(hl) inc hl jr z,Chif2 rld ld b,10 ld c,a mlt bc rld ex de,hl sbc hl,hl ld l,a add hl,bc push hl ex de,hl jr RaTT2 Chif2: rld ld c,a push bc jr RaTT2 Trois2: inc hl rld ld d,100 ld e,a mlt de rld ld b,10 ld c,a mlt bc push hl inc hl rld sbc hl,hl ld l,a add hl,de add hl,bc ex (sp),hl RaTT2: ld c,8 add hl,bc inc ixl ld a,ixh sub a,3 jp nc,$e308dc ; ElLoop Bukl: pop hl ; coordonnée Y ld h,160 mlt hl add hl,hl pop de ; coordonnée X add hl,de add hl,hl ld de,$d40000 add hl,de ld ($e309aa),hl ; =(AdrEc+1) , hl=adr.Ecran pop hl ; Adr.Sprite ld de,(hl) ld a,(de) ; width inc de ld ($e309ae),a ; = (SpL00p+1) ld hl,640 ld c,a sbc hl,bc ld a,(de) inc de di ld ($e309b8),sp ; = (OldSP+1) ld sp,hl AdrEc: ld hl,0 SpL00p: ld c,0 ex de,hl ldir ex de,hl add hl,sp dec a jr nz,SpL00p OldSP: ld sp,0 ei dec ixl jr nz,Bukl Fini: ld hl,$E00205 ld (hl),h ret