18083
DEMO -> Graphics
© _Public_Domain_ (2021)
 
 
 
Pixel Nation 3
cpc
 
 

Last Update : Sunday 18 July 2021 at 15 h 29

Manual n° 1

Real size : 462 * 794 px = 299.51 Ko

Manual n° 2

Real size : 697 * 842 px = 127.27 Ko

Manual n° 3

; parametres AREA_ADR_MEMOIRE EQU &1000 ;adresse où les donnees seront chargees en memoire TAILLE_ZONE_A_VIDER EQU &5000 SECTEUR_ID_FIRST EQU &C1 ;On va creer un formatage de 10 secteurs entrelaces (lecture plus rapide) SECTEUR_ID_LAST EQU &CA ;Avec IDs &C1 &C2 &C3 &C4 &C5 &C6 &C7 &C8 &C9 &CA SECTEUR_SIZE EQU &200 ;512 octets ORG &A504 ;-----[Affichage style Moon Cresta]----- affscreen LD HL,&4000 ;adresse de debut de notre image LD DE,&0FA1 ;incrementation LD BC,&4000 ;taille de l'image AffEffetMoonCresta LD A,(HL) ;lire en &4000 SET 6,H ;bit 6 a 1 = &4000 en &C000 SET 7,H ;bit 7 a 1 LD (HL),A ;ecrire a l'ecran ADD HL,DE ;adresse suivante LD A,H ;charger le &C0 AND %01111111 ;&C0 en &40 - part 1 OR %1000000 ;&C0 en &40 - part 2 LD H,A ;&C000 de nouveau en &4000 LD A,C RRA DEC BC ;taille de l'image -1 LD A,B OR C JR NZ,AffEffetMoonCresta RET ORG &A340 loop CALL MODULE_INIT ;charger le fichier en &1000 (max &3000 - 12 Ko) CALL chargement_fichier CALL CLS2 ;decomp (de &1000 vers &4000) CALL DECOMPDATA CALL &47D0 ;palette dans l'image CALL affscreen ;affichage style Moon Cresta CALL &BB03 CALL &BB06 CALL MEMORY_AREA_CLEAN JR loop ;-----[Chargement fichier]----- chargement_fichier LD HL,(adresse_positions) LD D,(HL) ; Numero de la piste INC HL LD C,(HL) ; ID du secteur INC HL LD B,(HL) ; nb de secteurs a lire INC HL LD (adresse_positions),HL LD HL,AREA_ADR_MEMOIRE ; HL adresse en memoire CALL MODULE_READ LD A,(fichier_numero) INC A LD (fichier_numero),A CP 32 CALL Z,onRemetAuDebut RET onRemetAuDebut XOR A LD (fichier_numero),A LD HL,POSITION_DISC_IMAGES LD (adresse_positions),HL RET fichier_numero DB 0 adresse_positions defw POSITION_DISC_IMAGES POSITION_DISC_IMAGES ;piste, secteur_debut, nb_block DB 1,&C3,6 DB 1,&C9,6 DB 2,&C5,7 DB 3,&C2,19 DB 5,&C1,18 DB 6,&C9,17 DB 8,&C6,15 DB 10,&C1,19 DB 11,&CA,24 DB 14,&C4,6 DB 14,&CA,13 DB 16,&C3,12 DB 17,&C5,14 DB 18,&C9,14 DB 20,&C3,11 DB 21,&C4,17 DB 23,&C1,8 DB 23,&C9,12 DB 25,&C1,10 DB 26,&C1,11 DB 27,&C2,10 DB 28,&C2,6 DB 28,&C8,13 DB 30,&C1,10 DB 31,&C1,12 DB 32,&C3,15 DB 33,&C8,11 DB 34,&C9,14 DB 36,&C3,14 DB 37,&C7,14 DB 39,&C1,14 DB 40,&C5,16 DB 0,0,0 ;on boucle ; ----------------------------------------------------------------------------- ; EFFACER LA ZONE POUR RECEVOIR DE NOUVELLE DONNEES ; ----------------------------------------------------------------------------- MEMORY_AREA_CLEAN LD HL,AREA_ADR_MEMOIRE LD DE,AREA_ADR_MEMOIRE+1 LD BC,TAILLE_ZONE_A_VIDER-1 LD (HL),0 LDIR RET ; Identification of the function to read a sector READ_ADDR DW &C03C ; Function address in ROM. Default = &C03C READ_NBR DB 7 ; ROM number. Default = ROM 7 ; Commands KL_COMMAND4 DB &84 ; Command number to read a sector ; ----------------------------------------------------------------------------- ; Routine to initialize the module management functions ; ----------------------------------------------------------------------------- MODULE_INIT LD HL,KL_COMMAND4 ; Command to read a sector CALL &BCD4 ; Finds the function in ROM JR NC,MODULE_INIT_2 ; If vector fails, default values are kept LD (READ_ADDR),HL ; Function ROM address saved LD A,C LD (READ_NBR),A ; ROM number saved MODULE_INIT_2 RET ; ----------------------------------------------------------------------------- ; Reads a module of B sectors in memory pointed by HL ; INPUT ; C = sector, D = track, HL = buffer pointer ; ----------------------------------------------------------------------------- MODULE_READ PUSH BC PUSH DE PUSH HL LD A,(&A700) ; Lecteur courant LD E,A ; E = lecteur RST &18 ; LIRE SECTEUR DW READ_ADDR POP HL LD DE,SECTEUR_SIZE ADD HL,DE ; HL = HL + 512 octets POP DE POP BC LD A,SECTEUR_ID_LAST+1 INC C ; Secteur suivant CP C ; SI dernier secteur +1 alors premier secteur JR NZ,MODULE_READ2 ; secteur = secteur + 1 LD C,SECTEUR_ID_FIRST INC D MODULE_READ2 DJNZ MODULE_READ RET ;------------------------------------------------------------------------------ ;Vider l'ecran ;------------------------------------------------------------------------------ CLS2 LD HL,&C000 LD BC,&4000 clsloop2: LD (HL),0;remplir avec l'encre 0 (noire) LD DE,&0059 ADD HL,DE JR NC,clsloop1 ;CALL &BD19 LD DE,&C000 ADD HL,DE clsloop1: DEC BC LD A,B OR C JR NZ,clsloop2 RET ;------------[APLIB]---------------------------------------------------------- ; Aplib decrunching routine (c) CNGSOFT ; HL = implantation du code compacte ; DE = implantation du code decompacte ;------------------------------------------------------------------------------ ; Maxam source by T&J/GPA - 01/18/2008 ; Nothing changed, except thy damned hidden opcodes ; and a new variable for Maxam ( 13+8*0 = 0 for Maxam ) ; Attention, cette routine contient un assemblage conditionnel. ; Si Aplib8flag = 0, le code decompacte est ecrite du bas de la ; memoire vers le haut de la memoire. C est ce que font par defaut ; les programmes modifies par Dadman/CEZ - Team (APPACK.EXE et ; aPPackWin.exe. ; Si Aplib8flag = 1, le code decompacte est ecrit du haut de la ; memoire vers le bas de la memoire. Le code compacte doit bien ; evidemment etre organise en consequence. DECOMPDATA LD HL,&1000 LD DE,&4000 CALL Boot JP &000F aplib8flag equ &0 ; = DEC &00 pour INC flagdecde equ aplib8flag*8 ; for Maxam compatibility Boot PUSH HL ; used for EX HL,(SP) PUSH HL POP IX DB &FD,&26,&80 ; LD IYh,&80 aplib8literal LD A,(IX+ &00) DB &DD,&23 + flagdecde ; INC IX/DEC IX LD (DE),A DB &13 + flagdecde ; INC DE/DEC DE DB &FD,&2E,&02 ; LD IYl,&2 aplib8nexttag CALL aplib8getbit JR NC, aplib8literal LD BC,&0000 CALL aplib8getbit JR NC, aplib8codepair LD H,B CALL aplib8getbit JR NC, aplib8shortmatch DB &FD,&2E,&02 ; LD IYl,2 INC C ; bc LD L,&10 aplib8getmorebits CALL aplib8getbit RL L JR NC, aplib8getmorebits JR NZ, aplib8domatch LD A,L LD (DE),A DB &13+ flagdecde ; INC DE/DEC DE JR aplib8nexttag aplib8codepair CALL aplib8getgamma DB &FD,&4D ; LD C,IYl SBC HL,BC JR NZ, aplib8normalcodepair CALL aplib8getgamma LD B,H JR aplib8domatch_lastpos aplib8normalcodepair DEC L LD H,L LD L,(IX + &00) DB &DD,&23+ flagdecde ; INC IX/DEC IX PUSH HL CALL aplib8getgamma LD B,H POP HL LD A,H CP 125 ; cmp eax,32000 JR NC, aplib8domatch_with_2inc CP &05 JR NC, aplib8domatch_with_inc AND A JR NZ, aplib8domatch_new_lastpos LD A,L ADD A,A JR C, aplib8domatch_new_lastpos aplib8domatch_with_2inc INC BC aplib8domatch_with_inc INC BC aplib8domatch_new_lastpos EX (SP),HL aplib8domatch_lastpos POP HL PUSH HL DB &FD,&2E,&01 ; LD IYl,1 aplib8domatch if aplib8flag ; LDIR/LDDR ADD HL,DE LDDR else AND A EX DE,HL SBC HL,DE EX DE,HL ADD HL,DE EX DE,HL LDIR endif JR aplib8nexttag aplib8shortmatch LD L,(IX+&00) DB &DD,&23+ flagdecde ; INC IX/DEC IX SRL L JR Z, aplib8donedepacking RL C JR aplib8domatch_with_2inc aplib8getbit DB &FD,&7C ; LD A,IYh ADD A,A JR NZ,aplib8getbit_ LD A,(IX + &00) DB &DD,&23+ flagdecde ; INC IX/DEC IX ADC A,A aplib8getbit_ DB &FD,&67 ; LD IYh,A RET aplib8getgamma LD HL,&0001 aplib8getgamma_ CALL aplib8getbit ADC HL,HL CALL aplib8getbit JR C, aplib8getgamma_ LD C,L RET aplib8donedepacking POP HL ; used for EX HL,(SP) PUSH IX POP HL RET ; Warning, A might not be 0!


Goto Top
CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2021 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