12900
DEMO -> Graphics
© cpc-power.com (2016)
 
 
 
Amstrad.eu Compo Croco Ou Dragon - Kukulcan [CPC+]
cpc+
 
 

Last Update : Tuesday 19 July 2016 at 00 h 17

Manual n° 1

ORG #A000 CALL UNLOCK_ASIC RET CALL SCROLL_TEXT RET CALL MUSIQUEON RET CALL MUSIQUEOFF RET CALL SPRITE_XY RET CALL SPRITE_ZOOM RET CALL CLS3 RET LD A,164:LD (spr_out_y+1),A LD HL,21:LD (spr_out_x+1),HL LD HL,&2C20 LD DE,&C02B CALL spr_out_aff ;affichage corps RET LD A,146:LD (spr_out_y+1),A LD HL,49:LD (spr_out_x+1),HL LD HL,&2C20 LD DE,&C343 CALL spr_out_aff ;affichage tete 1 RET LD A,146:LD (spr_out_y+1),A LD HL,49:LD (spr_out_x+1),HL LD HL,&4812 LD DE,&C343 CALL spr_out_aff ;affichage tete 2 RET LD A,146:LD (spr_out_y+1),A LD HL,49:LD (spr_out_x+1),HL LD HL,&6404 LD DE,&C343 CALL spr_out_aff ;affichage tete 3 RET CALL ASIC_ON RET CALL ASIC_OFF RET CALL SPRITE_XY_dragon RET CALL FINAL RET ;Debloquer l'acces a l'ASIC .UNLOCK_ASIC : DI LD A,17 LD HL,Sequence_Asic_unlock .asic_loop: LD B,&BD OUTI DEC A JR NZ,asic_loop EI CALL ASIC_ON CALL REFRESH_OFF CALL ECRAN_COULEURS RET .Sequence_Asic_unlock: DB 255, 0, 255, 119, 179, 81, 168, 212, 98, 57, 156, 70, 43, 21, 138, 205, 238 ; Connexion page Asic (&4000-&7fff) .ASIC_ON LD BC,&7FB8 OUT (C),C RET ; Deconnexion page Asic (&4000-&7fff) .ASIC_OFF LD BC,&7FA0 OUT (C),C RET ;Desactiver le bloc evenement du REFRESH des couleurs (Reviendra avec un changement de MODE) .REFRESH_OFF LD HL,&B7F9 ; Bloc evenement CALL &BCDD RET .ECRAN_COULEURS : ;Transfert couleur image vers asic LD A,(&FFDD) CALL &BD1C LD A,(&FFDE) LD (&6420),a LD A,(&FFDF) LD (&6421),a LD HL,&FFE0 LD DE,&6400 LD BC,&0020 LDIR EI RET .SCROLL_VALUE DB 00 .SUB_SCROLL_TEXT LD a,(HL) ;LD a,(&D690) LD (SCROLL_VALUE),a PUSH HL POP DE INC HL ;LD HL,&D691 ;LD DE,&D690 LD BC,79 LDIR DEC HL LD a,(SCROLL_VALUE) LD (HL),a ;LD (&D690+79), a RET .SCROLL_TEXT LD HL,&D690:CALL SUB_SCROLL_TEXT LD HL,&DE90:CALL SUB_SCROLL_TEXT LD HL,&E690:CALL SUB_SCROLL_TEXT LD HL,&EE90:CALL SUB_SCROLL_TEXT LD HL,&F690:CALL SUB_SCROLL_TEXT LD HL,&FE90:CALL SUB_SCROLL_TEXT LD HL,&C6E0:CALL SUB_SCROLL_TEXT LD HL,&CEE0:CALL SUB_SCROLL_TEXT LD HL,&D6E0:CALL SUB_SCROLL_TEXT LD HL,&DEE0:CALL SUB_SCROLL_TEXT LD HL,&E6E0:CALL SUB_SCROLL_TEXT LD HL,&EEE0:CALL SUB_SCROLL_TEXT LD HL,&F6E0:CALL SUB_SCROLL_TEXT LD HL,&FEE0:CALL SUB_SCROLL_TEXT LD HL,&C730:CALL SUB_SCROLL_TEXT LD HL,&CF30:CALL SUB_SCROLL_TEXT LD HL,&D730:CALL SUB_SCROLL_TEXT LD HL,&DF30:CALL SUB_SCROLL_TEXT LD HL,&E730:CALL SUB_SCROLL_TEXT LD HL,&EF30:CALL SUB_SCROLL_TEXT LD HL,&F730:CALL SUB_SCROLL_TEXT LD HL,&FF30:CALL SUB_SCROLL_TEXT LD HL,&C780:CALL SUB_SCROLL_TEXT LD HL,&CF80:CALL SUB_SCROLL_TEXT LD HL,&D780:CALL SUB_SCROLL_TEXT RET ; Musique Fabien FESSARD, conversion Atari ST ;play = &804B .MUSIQUEON LD a,1 CALL &8042 RET .MUSIQUEOFF XOR A CALL &8042 RET ;syntax CALL &A010,position X (0 a 639), position Y (0 a 399) .SPRITENUM : DEFS 1 .SPRITEZOOM : DEFS 1 .SPRITE_XY : ;lecture valeur Y et stockage LD H,(IX+1) LD L,(IX+0) LD (&6002),HL;sprite 0 Y LD (&600A),HL;sprite 1 Y ;lecture valeur X et stockage LD H,(IX+3) LD L,(IX+2) LD (&6000),HL;sprite 0 X LD BC,32 ADD HL,BC LD (&6008),HL;sprite 1 X RET .SPRITE_XY_dragon : ;lecture valeur Y et stockage LD H,(IX+1) LD L,(IX+0) LD (&6002),HL;sprite 0 Y LD (&600A),HL;sprite 1 Y ;lecture valeur X et stockage LD H,(IX+3) LD L,(IX+2) LD (&6000),HL;sprite 0 X LD BC,64 ADD HL,BC LD (&6008),HL;sprite 1 X RET .additionner_plus_huit LD BC,8 ADD HL,BC DEC A RET ;syntax CALL &A014,num_sprite(0 a 15),ZOOM = 0000XXYY en basic ex &X00001111 ;00 = non visible ;01 = 1 pixel (equivalent MODE 2) ;10 = 2 pixels (equivalent MODE 1) ;11 = 4 pixels (equivalent MODE 0) .SPRITE_ZOOM : DI ;lecture valeur ZOOM LD A,(IX+0) LD (SPRITEZOOM),A ;lecture valeur sprite numero LD A,(IX+2) LD (SPRITENUM),A ;adresse ecriture dans ASIC (&6004 + (sprite_num * 8)) LD HL,&6004 ;num du sprite * 8 LD A,(SPRITENUM) .sprite_ZOOM_boucle CP 0 jp z, sprite_ZOOM_ecrire CALL additionner_plus_huit jp nz,sprite_ZOOM_boucle .sprite_ZOOM_ecrire : ;ecrire les donnees pour le ZOOM LD A,(SPRITEZOOM) LD (HL),A EI RET ;petit effet pour vider l'ecran .CLS3 LD HL,&C000 LD BC,&4000 clsloop2: LD (HL),0;remplissage LD DE,&0059 ADD HL,DE JR NC,clsloop1 LD DE,&C000 ADD HL,DE clsloop1: DEC BC LD A,B OR C JR NZ,clsloop2 RET ;affichage sprite suivant valeur R1 du crtc spr_out_aff: spr_out_y: LD A,0 ;nombre de lignes spr_loop: PUSH AF PUSH DE spr_out_x: LD BC,0 ;largeur du sprite LDIR POP DE CALL spr_calculs POP AF DEC A JR NZ,spr_loop RET spr_calculs: ld a,d add a,8 ld d,a and &38 ret nz ld a,d sub &40 ld d,a ld a,e add a,&40 ;suivant la valeur de R1, (R1*2) ld e,a ret nc inc d ld a,d and 7 ret nz ld a,d sub 8 ld d,a ret couleur_overscan: DB &00,&00,&05,&00,&50,&00,&55,&00 DB &A0,&00,&F0,&00,&00,&05,&05,&05 DB &50,&05,&55,&05,&A0,&05,&A5,&05 DB &F0,&05,&F0,&0A,&FA,&0A,&F5,&0F FINAL: CALL ASIC_ON ;Transfert des couleurs LD HL,couleur_overscan LD DE,&6400 LD BC,32 LDIR CALL ASIC_OFF ;chargement du fichier LD B,&0C LD HL,fichier_overscan LD DE,&C000 CALL &BC77 LD HL,&01FE ;normal CALL &BC83 ;OUT overscan ;largeur LD BC,&BC01 OUT (C),C LD BC,&BD30 OUT (C),C ;hauteur LD BC,&BC06 OUT (C),C ;LD BC,&BD22 LD BC,&BD00 OUT (C),C ;decalage horizontal LD BC,&BC02 OUT (C),C LD BC,&BD32 OUT (C),C ;decalage vertical LD BC,&BC07 OUT (C),C LD BC,&BD23 OUT (C),C ;ecran 32 ko (&000 a &7FFF) LD BC,&BC0C OUT (C),C LD BC,&BD0C OUT (C),C ;debut offset (en &01FE) LD BC,&BC0D OUT (C),C LD BC,&BDFF OUT (C),C ;animation sur la hauteur R6 = 0 a 34 LD BC,&BC06 OUT (C),C LD B,&BD LD A,34 LD C,0 OUT (C),C .anim2 INC C OUT (C),C ;ralentissement CALL &BD19 CALL &BD19 CALL &BD19 CALL &BD19 CALL &BD19 CALL &BD19 CALL &BD19 CALL &BD19 DEC A CP 0 JP NZ,anim2 loopinfini: JP loopinfini fichier_overscan : DEFM "FINAL .OVR" ;normal 32 ko


Goto Top
CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2019 all rights reserved.
Reproduction forbidden without any express authorization. All the game titles used belong to their respective owners.
Hébergement Web, Mail et serveurs de jeux haute performance