Toujours eu envie d'apprendre l'assembleur Z80 et réaliser des programmes sur votre Amstrad CPC ? Vous êtes au bon endroit!
Ce site est en développement intensif, n'hésitez pas à remonter toute remarque ou suggestion d'article sur le
discord Praline
Présentation de la machine
Présentation de l'assembleur Z80
Description du jeu d'instructions
Environnement de travail
Premiers programmes
Des effets simples
Réalisation d'un premier jeu
Réalisation d'une première intro
Sprites en folie (on creuse le sujet)
Scrolling en folie (on creuse le sujet)
Utilisation des spécificités des modèles Plus/GX
Outils de conversion de données PC vers CPC
Collection de routines utiles et techniques
Annexe hardware de la machine, documentation
Liens
Présentation de l'Amstrad CPC/Plus
-
Les différents composants de l'ordinateur
-
Fonctionnement d'un Amstrad au démarrage
-
Organisation de la mémoire d'un CPC au démarrage
-
Comparaison d'affichages de caractères (système VS hardware)
-
Comparaison de chargements disquettes (système VS hardware) et conclusion
-
Principes généraux d'un programme
Présentation de l'Assembleur Z80
-
Vous n'avez pas les bases?
-
Introduction au langage machine
-
Description des registres du Z80
-
Convention de lecture pour le jeu d'instructions
Jeu d'instructions du Z80
Chargement de données, écritures mémoire (
LD
)
Échange de registres ou mémoire (
EX, EXX
)
Comparaison (
CP, SBC, CPI, CPIR, CPD, CPDR
)
Sauts non conditionnels (
JR, JP, CALL, RET, RST
)
Sauts conditionnels (
JR, JP, DJNZ, CALL, RET, RST
)
Sauvegarde et restoration des registres dans la pile (
PUSH and POP
)
Manipulation de bits (
SET, RES, BIT
)
Décalage et rotations de bits (
SRL, SRA, RR, RRA, RRC, RRCA, SLL, SLA, RL, RLA, RLC, RLCA, RLD, RRD
)
Opérateurs logiques (
AND, OR, XOR, CPL, NEG, SCF, CCF
)
Instruction d'ajustement pour nombres BCD (
DAA
)
Opérations mathématiques (
INC, DEC, ADD, SUB, ADC, SBC
)
Opérations de copie mémoire (
LDI, LDIR, LDD, LDDR
)
Ports entrée/sortie (
OUT, OUTI, OTIR, OUTD, OTDR, IN, INI, INIR, IND, INDR
)
Gestion des interruptions (
DI, EI, IM, HALT, RETI, RETN, LD I,A
)
Instruction qui ne fait rien (
NOP
)
Préparer son environnement de travail
-
Comment assembler un programme pour Amstrad CPC?
-
Comment utiliser notre programme dans ACE?
-
Programme squelette de base utilisé pour les tutos
-
Les rudiments d'assembleur à connaitre avant de démarrer
-
Les ports I/O (ou entrée/sortie) sur le CPC
Premiers programmes (briques indispensables)
-
Déplacer des données dans la mémoire
-
Multiplier des valeurs
-
Structure de l'écran du CPC / Afficher un point
-
Changer le mode graphique / Amélioration de la routine de point
-
Changer les couleurs, chargement d'une palette
-
Afficher un sprite soft
-
Déplacer notre sprite soft
-
Se synchroniser avec le balayage, pourquoi?
-
Animer notre sprite (afficher une séquence de sprites)
-
Se synchroniser avec les interruptions (multi-mode et rasters)
-
Accéder au clavier
-
Évitez les conflits de touches!
-
Jouer une musique Arkos Tracker 3
-
Écrire du texte avec sa propre fonte
-
Utilisation des ROM (CPC/Plus)
-
Utilisation des structures pour une gestion de menu
Quelques effets simples
-
Fondu de couleurs
-
Un nombre illimité de sprites?
-
Un effet démo, les shadeBobs!
-
Un fondu entre images avec le tramage de Bayer
-
Un effet démo, les interférences
-
L'effet de bulle déformante
Fusion de quelques briques élémentaires pour créer un petit jeu
-
Le jeu du Télécran partie 1 (assemblage de briques)
-
Le jeu du Télécran partie 2 (corrections des défauts)
-
Le jeu du Télécran partie 3 (gestion des diagonales)
-
Du Télécran au jeu TRON
-
Exporter notre jeu TRON sur DSK,CDT et CPR (respectivement disquette, cassette et cartouche)
Création de quelques briques élémentaires pour créer une intro
-
Petite Intro 1/3 - Gestionnaire d'animations
-
Petite Intro 2/3 - ScrollText vertical
-
Petite Intro 3/3 - Compression et création de fichiers DSK et K7
Sprites en folie!
-
Introduction à la série d'articles sur les sprites
-
Affichage au XOR
-
Le double buffer (en finir avec les glitchs!)
-
Exemple d'utilisation de double buffer
-
Restituer le fond après le déplacement d'un sprite
-
Comment gérer la transparence d'un sprite logiciel?
-
Techniques de clipping - Que faire quand un sprite déborde de l'écran?
-
Techniques de clipping - Un clipping complet 1/2
-
Techniques de clipping - Un clipping complet 2/2
-
Techniques de clipping - Sauvegarde et Restitution du fond en double buffer
Scrollings en folie!
-
Introduction à la série d'articles sur les scrollings
-
Un premier scrolling hardware horizontal
-
Un scrolling horizontal à l'octet avec le registre 3
-
Utiliser une carte de tuiles (ou Atlas ou TileMap) pour gagner en mémoire
(NOTE : Pas d'article sur le scrolling vertical avant d'avoir parcouru les possibilités de la gamme Plus/GX-4000)
Premiers programmes avec la gamme Amstrad Plus et GX-4000
-
Utiliser la palette de 4096 couleurs
-
Les interruptions à la ligne (RasterInt)
-
Les sprites hard - Aperçu
-
Un scrolling horizontal au pixel
-
Un scrolling vertical facile!
-
Scroller dans toutes les directions 1/4 (préparation, structures, macros)
-
Scroller dans toutes les directions 2/4 (scrolling effectif, affichage)
-
Scroller dans toutes les directions 3/4 (profiling et optimisations)
-
Scroller dans toutes les directions 4/4 (mise en place du double buffer)
-
Les sprites hard - Animation
-
Les sprites hard - Positionnement rapport au scrolling
-
Scroller avec un suivi automatique
...
Des outils pour importer VOS données
-
Convertisseur PNG vers écran, sprites soft, sprites hard, tuiles et tileMap
Programmation avancée, routines utiles
-
Super instructions
-
Optimisations en vrac
-
Routines écran (passages de ligne/rebouclage)
-
Routines de multiplication
-
Routines de division
-
Routines en vrac (Neg 16 bits, Cp 16 bits, valeurs absolues, ...)
-
Routines de gestion de chaines de caractères
Annexe hardware de la machine
-
Clavier / Schéma de référence du PPI
-
Connexions ROM / Couleurs / Mémoire étendue
-
CRTC / Dimensions écran, scrollings
-
Fonctionnalités étendues de la gamme Plus
Du lien, des liens
-
Liens vers sites de programmation, émulateurs, etc.