| ★ CODING ★ CHRONIQUE A100% DE RUBI ★ UN CORP RUBI HARD ★ |
Je vous vois, attendant comme chaque mois la parole divine. Prions mes frères, car nous sommes gâtés par les dieux. Qui n'a jamais rêvé de faire des scrollings hard d'écrans. Vous? Prosternez-vous mes frères, les dieux vous ont entendus.
J'explique, pour les petites têtes de linotte qui ne connaissent pas encore les scroll. hard, qu'il s'agit de faire scroller l'écran entier, sans toucher à quoi que ce soit en mémoire. Donc pas de LDIR ou de transfert mémoire. Je ne vous parle même pas du temps machine que cela prend ( que dalle). Mais passons aux choses sérieuses.
Vous pouvez choisir l'adresse à laquelle commencera votre écran (en général, on place l'écran en &C000), et la bank où l'on travaille. Pour l'écran en &C000, c'est la bank 00110000 ; pour l'écran en &8000, 00100000. De même pour &4000 (00010000) et pour 0 (00000000). OK ?
SPRI est l'adresse à laquelle est stocké l'écran. SPRIH est la hauteur en ligne de ce sprite (200 s'il s'agit d'un écran complet), SPRIL est sa longueur en octets (80 normalement). Essayez de modifier ces valeurs pour vous amuser. TAMP est un buffer ; vous avez intérêt à y garder une place correspondante au sprite.
Le programme réinitialise ces variables et trafique le sprite pour lui donner un aspect qui lui convient, . à
savoir, stocke deux par deux les octets en allant du haut vers le bas. Cela pour les réafficher sous forme de colonnes plus tard.
Dans BOUCL, on scrolle et on attend la frappe d'une touche.
Dans BASE, on calcule la prochaine valeur à envoyer au CRTC qui déterminera le début de l'écran. Dans BASE0, on teste le compteur pointeur du sprite, qui une fois arrivé à 40 (80/ 2), se remet à 0. Il reste BASE2, qui réajuste le calcul en fonction de la bank dans laquelle on travaille. La synchro genre &BD19, je n'en parle même pas, le test d'une touche non plus.
Pour les petits malins qui pensent que le père Rubi se fait c... pour le BC26, sa chez que sa routine est valide dans n'importe quelle zone de mémoire.
Le Corbillard
;-----------------RUBI, ACPC n°25 Avril 1990, p68-69
;- SCROLL HARD -
;-----------------
ORG #9800EBASE EQU #C000
BANK EQU %110000SPRI EQU #C000
SPRIH EQU 200
SPRIL EQU 80 ; Nb pair obligatoire
TAMP EQU #5000DI
;----------------------------------
;- INITIALISATION DES VARIABLES -
;----------------------------------
;
XOR A
LD HL,0
LD (BASE) ,HL
LD (BASE0+1),A
LD HL,TAMP
LD (ETAMP+1), HL
;--------------------------
;- STOCKAGE D'UN SPRITE -
;--------------------------
LD HL,SPRI
LD DE,TAMP
LD B,SPRIL/2
BOU1: LD C,SPRIH
PUSH HL
BOU2: LD A, (HL)
LD (DE),A
INC DE
INC HL
LD A, (HL)
LD (DE),A
DEC HL
INC DE
CALL RBC26
DEC C
JR NZ,BOU2
POP HL
INC HL
INC HL
DJNZ BOU1
;
LD HL,#C000 ;Efface ecran
LD DE,#C001
LD BC,#3FFF
LD (HL) , L
LDIR
;
BOUCLE:
BASE_0: LD HL,0
BASE EQU BASE_0+1
;
INC HL
LD A,%11
AND H
LD H,A
LD (BASE), HL
;
BASE0: LD A,0
INC A
LD (BASE0+1),A
CP 40
JR NZ,BASE_2
XOR A
LD (BASE0+1),A
LD DE,TAMP
LD (ETAMP+1) ,DE
BASE_2: LD A,H
OR BANK;--------------------
;- DEPLACEMENT HARD -
;--------------------LD BC,#BC0C
OUT ( C) , C
INC B
OUT ( C) , A
DEC B
INC C
OUT ( C) , C
INC B
OUT (C),L;----------------------------
;- AFFICHAGE A DROITE D'UNE -
;- PARTIE DU SPRITE -
;----------------------------ADD HL, HL
LD DE,EBASE
ADD HL, DE
LD DE,SPRIL-2
ADD HL, DE
LD B,SPRIH
ETAMP: LD DE,TAMP
BOU3 : LD A, (DE)
LD (HL),A
INC DE
INC HL
LD A, (DE)
LD ( HL) , A
INC DE
DEC HL
CALL RBC26
DJNZ BOU3
LD (ETAMP+1), DE;-----------------
;- ATTENDRE SYNC -
;-----------------LD B,#F5
SYNC: IN A, (C)
RRA
JR NC,SYNC;----------------------
;- TEST TOUCHE ESPACE -
;----------------------LD BC,#F40E
OUT ( C) , C
LD BC,#F6C0
OUT ( C) , C
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,#F609
OUT ( C) , C
RLA
JP C,BOUCLE
RET
;
RBC26: LD A,H
ADD A,#08
LD H,A
AND #38
RET NZ
LD A,H
SUB #40
LD H,A
LD A,L
ADD A,#50
LD L,A
RET NC
INC H
LD A,H
AND #07
RET NZ
LD A,H
SUB #08
LD H,A
RET
» Download la sources
» Download le programme basic (merci naPO)
» Download le programme basic (merci naPO)
| ![]() |
| Page précedente : Coding Rubi24 |
| A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser... |
» Coding Rubi20
» Coding Rubi18 - Overscan
» Coding Rubi26
» Coding Rubi24
» Coding Rubi23
» Coding Rubi22
» Coding Rubi19
CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ CPC RULEZ
Page créée en 379 millisecondes et consultée 166 fois |






