L'objectif est de créer un morceau de code qui génère exactement cette forme, et le défi est probablement de le rendre aussi petit/optimisé que possible. Quelqu'un relève le défi en assembleur Z80 ?
Bonjour, Je suis tombé sur ce topic par hasard et le hasard fait bien les choses car j'aime bien ce genre de concours.
J'ai voulu aussi m'amuser un peu même si ce n'est pas le motif du concours, cela pourra peut-être être utile pour certains ! Voici mon code : (78 Octets)
Code :
ORG #A000 ; INITIALISER LE MODE, LES COULEURS CALL #BBFF ; MODE 1 'INITIALISATION PRINCIPALE DU GESTIONNAIRE' LD BC, #0000 CALL #BC38 ; BORDER 00, 00 XOR A LD B, A LD C, A CALL #BC32 ; INK 1, 00, 00 LD A, 1 LD BC, #1A1A CALL #BC32 ; INK 1, 26, 26
; AFFICHER LES CARACTERES UN PAR UN EN TOURNANT LES CHIFFRES LD HL, DATA ; 'HL' POINTE SUR LA TABLE DE LA MATRICE 10x13 LD C, 17 ; NOMBRE DE CHIFFRE A TOURNER
AFF_MATRICE LD E, (HL) INC HL LD B, 8 ; UN CHIFFRE TOURNE 8 FOIS
FAIRE_CHIFFRE LD A, 32 SLA E ; PLACE LE BIT DE GAUCHE DE 'E' DANS LE CARRY JR NC, AFF_CARACTERE LD A, 42 ; CARACTERE MULTIPLIE
AFF_CARACTERE CALL #BB5A DJNZ, FAIRE_CHIFFRE DEC C JR NZ, AFF_MATRICE
; ATTENDRE L'APPUIE D'UNE TOUCHE POUR RENDRE LA MAIN CALL #BB06 RET ; RETOURNE AU BASIC
DATA DB #7F, #BF, #FC, #0C, #03, #7F, #FF, #EC, #03, #03, #FF, #DF, #E0, #00, #30, #0C, #00 FIN ; LONGUEUR > 78 OCTETS
Bonjour,... ... Tu peux aussi réduire par deux la taille du logo encodé, car les caractères vont par paire.
OK pour les couleurs, j'ai en effet mangé 1 octet mais je n'ai pas encore bien étudié pour en gagner plus.
Pour réduire la taille de la matrice par deux, j'ai voulu essayer, mais les espaces ne sont pas par paire, sur la matrice de 10x13 quand une étoile commence qu 2ème caractère cela n'est pas faisable, hélas.
Il y a d'autres moyens que d'utiliser une matrice, et je vais voir si je peux grignoter qq octets. En tous cas, merci d'avoir éxaminé mon programme!
Faire un 'JR $', ne rend pas la main au basic, mais faut'il rendre la main dans ce concours ? C'est sur que faire un 'JP #BB06' est plus judicieux et ça fait gagner 1 octet ! Merci
j'ai voulu essayer, mais les espaces ne sont pas par paire, sur la matrice de 10x13 quand une étoile commence qu 2ème caractère cela n'est pas faisable, hélas.
Aie, oui, désolé, je ne suis un peu emballé . Par contre pour les couleurs, il y a moyen de gratter, en analysant les valeurs de retour des registres quand on utilise un vecteur. Le CALL &BBFF retourne opportunément le registre A à 0 (testé sur 464 et 6128). Du coup, on peut bricoler :
CALL #BBFF ; MODE 1 'INITIALISATION PRINCIPALE DU GESTIONNAIRE' ; A est a 0 en retour LD B, A LD C, A PUSH BC CALL #BC32 ; INK 1, 00, 00 POP BC
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum