CODINGSOURCES ★ Source &001 ★

FADEIN pour CPC+|hERMOL)Coding Sources

Voila 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

HERMOL, 25 mai 2003 pour http://cpcrulez.fr

[next=coding_src]

★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tool:
» HERMOL  fadeinDATE: 2013-08-28
DL: 100 fois
TYPE: text
SIZE: 5Ko

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Rsx - Fast Disc Formatter
» Coding Src's » Screen Dump (CPC Attack)
» Coding Src's » Squeeze (Amstrad Action)
» Coding Src's » Graphic - David Hall - Character Set
» Coding Src's » Dirstart (CPC Amstrad International)
» Coding Src's » Raindown (CPC Amstrad International)

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 070 millisecondes et consultée 774 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.