★ CODING ★ SOURCES ★ Source &001 ★ |
FADEIN pour CPC+ (hERMOL) | Coding Sources |
Voilà la 1ere routine, ( premiere d'une longue serie ? ca c'est à vous de me le dire ...), un petit effet de "FADEIN" utilisant les couleurs du CPC+; Source pour MAXAM ? et l'assembleur de WinAPE par hERMOL ; ;org 10000 call CPCplusUnlock ; ; ld bc,&7fb8 ; l'ASIC -> &4000-&7fff out (c),c ; ; call fadein ; routine ; ld bc,&7fa0 ; ferme l'axc a l'ASIC out (c),c ; ret ; FINISH !!! fadein: ld hl,&6400 ; copie les couleurs -> ld de,paletteINIT ; le buffer de travail ld bc,&20 ; 16 + le border ldir ; ld b,16 ; travail avec 16 teintes okaich: push bc ; ; ld b,16 ; travail avec les 15 couleurs + le border ld hl,paletteINIT ; loopall: xor a ; le bas cp (hl) ; poids ford + poids faible jr z,deja0 ; a 0 ? ld a,(hl) ; non, alors isole and %00001111 ; les 4 bits droit cp 0 ; jr z,deja01 ; a 0 ? dec a ; -1 ld c,a ; deja01: ld a,(hl) ; le haut (4 bits de gauche) and %11110000 ; cp 0 ; a 0 ? jr z,deja02 ; oui ... rra ; non, rra ; rotation de 4 bits rra ; vers la droite rra ; (thx to Targhan & Offset) dec a ; -1 rla ; rotation de 4 bits rla ; vers la gauche rla ; rla ; deja02: add a,c ; poids fort + poids faible ld (hl),a ; pose la modif xor a ; a = 0 deja0: inc hl ; 2 eme octet de couleur cp (hl) ; jr z,deja1 ; a 0 ? ; ld a,(hl) ; non dec a ; -1 ld (hl),a ; pose la modif ; xor a ; a = 0 ; deja1: inc hl ; prochaine couleur ; djnz loopall ; loop si b>0 ; push hl ; push bc ; ; ld hl,paletteINIT ; modif la palette call FixPalette ; ; pop bc ; pop hl ; ; frame: LD B,#F5 ; call &bd19 IN A,(C) ; RRA ; JR NC,frame ; ; pop bc ; ; djnz okaich ; loop si b>0 ; ret ; finish ;;;;; HL = palette datas FixPalette: di ; push hl ; ld de,&6420 ; le border = ink 0,x ld bc,2 ; ldir ; ; pop hl ; ld de,&6400 ; les 15 encres ld bc,15*2 ; ldir ; ei ; ret ; return ;;; CPC Plus - debloque l'ASIC CPCplusUnlock: di ld b,&BC ld hl,Sequence ld e,17 SeqLoop: ld a,(hl) out (c),a inc hl dec e jr nz,SeqLoop ei ret Sequence db &FF,&00,&FF,&77,&B3,&51,&A8,&D4,&62,&39,&9C,&46,&2B db &15,&8A,&CD,&EE ;;; Datas paletteINIT dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
Page précédente : Equalisers horizontal et vertical |
|