CODINGCHRONIQUE A100% DES LOGON SYSTEM ★ LOGON SYSTEM ACPC N°39 - FAITES ONDULER VOS ÉCRANS ★

Logon System ACPC n°39 - Faites onduler vos écransCoding Chronique A100% Des Logon System
Eh oui, enfin les vacances ! C'est super, et cela va vous permettre de consacrer plus de temps à votre CPC et, plus particulièrement dans notre cas, au Z-80. Je suis sûr qu'entre deux séances de bronzette vous trouverez bien le temps de vous amuser avec le listing Assembleur de ce numéro d'été.

Nous allons nous initier aux ondulations d'écran, appelées également «screen waggle» dans le jargon des démomakers (screen pour écran et waggle pour remuer, tortiller, agiter). Et vous allez voir que cette pratique qui semble être réservée à des machines plus puissantes est tout à fait réalisable sur un CPC.

A LA MANIERE D'UN RASTER

Le principe consiste en un changement successif des valeurs contenues dans le registre deux du CRIC, à la manière d'un raster. C'est-à-dire qu'à chaque ligne parcourue par le faisceau d'électrons de l'écran, nous allons modifier le contenu de ce registre. On a alors l'impression que l'écran se tord et ondule, suivant – par exemple – une table sinusoïdale, et on obtient les effets si fréquents sur ST ou Amiga... sur CPC Puisqu'un bon exemple vaut mieux qu'un long discours, nous allons commenter un listing source mettant en évidence le « screen waggle » avec un raster de couleur en prime.

Avant tout commentaire, tapez d'abord le listing source puis le programme Basic suivant

10 MEMORY &8FFF:LOAD "TRUC.BIN"
20 MODE 0:INK 0,0:BORDER 0
30 LOCATE 6,5:print ”VIVE L0G0N SYSTEM”
40 LOCATE 6,7:print ”VIVE AMSTRAD 100%”
50 CALL &9000:MODE 1:INK 1,26:RUN

LES COMMENTAIRES

Commençons par l'initialisation il faut d'abord déconnecter le système. Je rappelle pour les néophytes que cela permet un gain de temps machine et de précision non négligeable puisque le Z80 n'est plus interrompu pour la gestion des variables Basic, etc.

Puis, nous menons le border et le fond d'écran en noir (le numéro correspondant est &54). Nous attendons ensuite le début du balayage de l'écran par le faisceau d'électrons. Nous attendons maintenant trois < Halts» afin que le raster soit bien visible sur l'écran. Un peu de patience, nous attendons encore quelques cycles (étiquette «centre »), afin d'être synchronisé avec I'HBL.

Ensuite, faisons pointer HL sur la table de couleurs et DE sur la table des valeurs d'ondulation du registre deux. Chargeons B avec 40, car nous désirons un raster de 40 lignes. Sauvons alors BC (puisque B est le compteur des rasters), et sélectionnons l'encre 1 du Gate Array dans laquelle nous attribuons la couleur pointée par HL dans la table (cela grâce à l'instruction OUTI). Le contenu du registre 2 est alors changé par un OUT (C),C classique car OUTI fonctionne bizarrement avec le CRTC (je n'ai pas dit que ça ne marchait pas – il y a un moyen – mais c'est assez bizarre). Ensuite la boucle « tempo » temporise (d'où le nom ) un peu afin d'atteindre l'HBL. Puis nous recommençons jusqu'à épuisement du registre B.

A la fin du raster, nous ramenons l'encre 1 à sa couleur initiale (&4B est le numéro du blanc). Nous redonnons également sa valeur initiale au registre 2 du CRTC (46), et nous en avons terminé avec le raster et l'ondulation

A SCROLLE EN PLUS

Mais afin de donner l'impression que la vague « scrolle », nous utilisons la ruse du décalage de pointeur. Elle est bien plus rapide qu'un simple scrolling de données, en revanche, elle est deux fois plus gourmande en mémoire. Comme son nom l'indique, cette technique consiste à décaler un pointeur le long d'une table (ici la table des ondulations) et à le réinitialiser en fin de table. C'est pour cette raison que ladite table d'ondulation est doublée.

RETOUR AU SYSTEME

En fin de listing, nous faisons un test classique de la barre d'espacement. Nous revenons au système si celle-ci est enfoncée. Vous avez donc un petit programme qui, réuni avec les autres de la série, vous permettra de vous attaquer à l'élaboration d'une super démo. Question technique, vous pourrez la montrer sans honte à vos amis qui possèdent un Atari ST ou un Amiga, surtout si ceux-ci ne font qu'admirer les démos tournant sur leurs machines.

Il ne me reste plus qu'à vous souhaiter de bien bronzer et de bien programmer !

; (c) Logon System 1990
; Ecrit par Pict

ORG &9000
; Sauve System
DI
LD HL,(&38)
LD (INTER+1),HL
LD HL,&C9FB
LD (&38),HL
EI
; Border noir
LD BC,&7F10
OUT (C),C
LD A,&54
OUT (C),A
LD C,0
OUT (C),C
OUT (C),A
LOOP:
LD B,&F5
VSYNC: IN A,(C)
RRA
JP NC,VSYNC
; On attend que l'Úcran soit visible
HALT
HALT
HALT
; "Centrage" du raster
LD B,5
CENTRE:
DJNZ CENTRE
LD HL,COLOR
LD DE,ONDUL
LD B,40 ; Taille Raster
MLOOP:
PUSH BC
LD BC,&7F01
OUT (C),C
OUTI ; Change la couleur
LD BC,&BC02
OUTI
INC B
LD A,(DE)
INC DE
OUT (C),A ; Decale le border
LD B,6
; Synchronisation HBL
TEMPO: DJNZ TEMPO
POP BC
DJNZ MLOOP
LD BC,&7F01 ; Border noir
LD A,&4B
OUT (C),C
OUT (C),A
LD BC,&BC02 ; Recentre l'Úcran
oUT (C),C
LD BC,&BD00+46
OUT (C),C
; Gestion du dÚcalage de la vague
LD HL,(VAR+1)
INC HL
VARCOM: LD A,l
DEC A
JP NZ,NORESET
LD A,30
LD HL,ONDUL
NORESET:
LD (VARCOM+1),A
LD (VAR+1) ,HL
; Test de la barre espace
KEY: LD BC,&F40E
OUT (C),C
LD BC,&F6C0
OUT (C),C
XOR A
OUT (C),A
LD BC,&F792
OUT (C),C
LD BC,&F645
OUT (C),C
LD B,&F4
IN A,(C)
LD BC,&F782
OUT (C),C
LD BC,&F600
OUT (C),C
RLA
JP LOOP
INTER: LD HL,0
LD (&38),HL
RET
;

; Variables Registre 2 crtc

ONDUL:
DB 46,47,47,48,48,48
DB 49,49,49,49,48,48,48
DB 47,47,46,45,45,44
DB 44,44,43,43,43,43
DB 44,44,44,45,45
DB 46,47,47,48,48,48
DB 49,49,49,49,48,48,48
DB 47,47,46,45,45,44
DB 44,44,43,43,43,43
DB 44,44,44,45,45
DB 46,47,47,48,48,48
DB 49,49,49,49,48,48,48
DB 47,47,46,45,45,44
DB 44,44,43,43,43,43
DB 44,44,44,45,45
; Variables couleurs ink 0
color:
DB &5C,&4C,&5C,&4C,&4C
DB &4E,&4C,&4E,&48,&4A
DB &4E,&4A,&4A,&43,&43
DB &43,&43,&4B,&43,&4B
DB &4B,&43,&4B,&43,&43
DB &43,&43,&4A,&4A,&4E
DB &4A,&4E,&4E,&4C,&4E
DB &4C,&4C,&5c,&4C,&5C

Emmanuel, alias Pict, ACPC n°39 p34-35

★ ANNÉE: 1992
★ AUTEUR: PICT

Page précédente : Logon System ACPC n°38 - Overscan facile
★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tool:
» LOGON39-Screen  Waggle    LISTINGDATE: 2012-08-27
DL: 66 fois
TYPE: text
SIZE: 4Ko

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Logon System ACPC n°48 - Les scroll hard vertical
» Coding » Logon System ACPC n°33 - Les interruptions du Z80
» Coding » Logon System ACPC n°34 - Les usages détournés de la pile
» Coding » Logon System ACPC n°38 - Overscan facile
» Coding » Logon System ACPC n°46 - Une demo décortiquée
» Coding » Logon System ACPC n°36 - Rupture facile
Je participe au site:
» Vous avez des infos personnel» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 192 millisecondes et consultée 1653 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.