; *** 25e PROGRAMME : LE PLAYFIELD DYNAMIQUE **** ; ; Voici le code source entier ; les point-virgules sont pour les commentaires ; qui ne sont pas pris en compte par l'assembleur. ; N'utilisez jamais de tabulation pour créer ; des espaces car l'assembleur les refuse. include vcs2600.h org $F000 ; ************ DECLARATION DES ETIQUETTES ************ ; ***** DES ADRESSES MEMOIRE POUR LES VARIABLES ****** Video = 128 ; Adresse la mémoire vidéo Vid = Video - 5 ; sert de pointeur pour la vidéo Compteur1 = 255 ; 2 Compteurs utilisés pour écrire ... Compteur2 = 254 ; ... dynamiquement dans la mémoire vidéo ; ************ LIGNES DE BYTE ************* Pict BYTE. %01100000,%00000000,%00000000,%00000000,%01100000 BYTE. %10000000,%00000000,%00000000,%00000000,%00010000 BYTE. %00000000,%11000000,%00000000,%00000000,%00001100 BYTE. %00000000,%00100000,%00000000,%00000000,%00000010 BYTE. %00000000,%00011000,%00000000,%00000001,%00000001 BYTE. %00000000,%00000100,%00000000,%00000010,%00000000 BYTE. %00000000,%00000011,%00000000,%00001100,%00000000 BYTE. %00000000,%00000000,%00000001,%00010000,%00000000 BYTE. %00000000,%00000000,%00000110,%01100000,%00000000 BYTE. %00000000,%00000000,%00001000,%10000000,%00000000 BYTE. %00001100,%00000000,%00110000,%00000000,%00000000 BYTE. %00000011,%00000000,%11000000,%00000000,%00000000 BYTE. %00000011,%00000000,%11000000,%00000000,%00000000 BYTE. %00001100,%00000000,%00110000,%00000000,%00000000 BYTE. %00000000,%00000000,%00001000,%10000000,%00000000 BYTE. %00000000,%00000000,%00000110,%01100000,%00000000 BYTE. %00000000,%00000000,%00000001,%00010000,%00000000 BYTE. %00000000,%00000011,%00000000,%00001100,%00000000 BYTE. %00000000,%00000100,%00000000,%00000010,%00000000 BYTE. %00000000,%00011000,%00000000,%00000001,%00000001 BYTE. %00000000,%00100000,%00000000,%00000000,%00000010 BYTE. %00000000,%11000000,%00000000,%00000000,%00001100 BYTE. %10000000,%00000000,%00000000,%00000000,%00010000 BYTE. %01100000,%00000000,%00000000,%00000000,%01100000 ; ************** ZONE D'INITIALIZATION *************** Start SEI ; Ne modifiez rien à ces CLD ; lignes car elles LDX #255 ; initialisent le système TXS ; LDA #0 ; B1 STA 0,X ; effacement de la RAM DEX ; BNE B1 ; Initialisation ; LDY #0 ; Copyvid ; Copie le contenu de l'image LDA Pict,Y ; codé à l'adresse Pict STA Video,Y ; dans la mémoire Vidéo INY ; CPY #120 ; BNE Copyvid ; MainLoop ; LDA #2 ; Ne changez rien à ces STA WSYNC ; lignes car elles STA WSYNC ; initialisent l'affichage STA WSYNC ; STA VSYNC ; STA WSYNC ; STA WSYNC ; LDX #53 ; STX TIM64T ; LDA #0 ; STA WSYNC ; STA VSYNC ; DrawScreen ; LDA INTIM ; BNE DrawScreen STA WSYNC ; STA VBLANK ; ; **************** DEBUT D'AFFICHAGE ***************** LDA #136 ; On met du bleu STA COLUPF ; dans le playfield LDA #0 ; Cette valeur STA CTRLPF ; définit un Playfield disymétrique LDY #120 ; Compteur de lignes graphiques BoucleY LDX #7 ; Compteur de lignes écran BoucleX ; début de la boucle d'affichage STA WSYNC ; Attend la fin du balayage ; PARTIE GAUCHE DE L'ECRAN LDA Vid,Y ; Charge l'octet de la ligne STA PF0 ; pour le registre de Playfield PF0 LDA Vid+1,Y ; Charge l'octet de la ligne + 1 STA PF1 ; pour le registre de Playfield PF1 LDA Vid+2,Y ; Charge l'octet de la ligne + 2 STA PF2 ; pour le registre de Playfield PF2 ; PARTIE DROITE DE L'ECRAN LDA Vid,Y ; Charge l'octet de la ligne ASL ; mais décale quatre fois ASL ; les bits vers la gauche ASL ; pour décaler les bits 0123 ASL ; vers 4567 STA PF0 ; pour le registre de Playfield PF0 LDA Vid+3,Y ; Charge l'octet de la ligne + 3 STA PF1 ; pour le registre de Playfield PF1 LDA Vid+4,Y ; Charge l'octet de la ligne + 4 STA PF2 ; pour le registre de Playfield PF2 ; FIN DES BOUCLE DEX ; Décrémente X BNE BoucleX ; Si différent de 0 alors boucle DEY ; sinon décrémente Y de 5 DEY ; DEY ; DEY ; DEY ; BNE BoucleY ; Si Y est différent de 0 alors boucle ; ************** FIN DE L'AFFICHAGE ECRAN ************* STA WSYNC ; Attend la fin de balayage de la dernière ligne LDA #0 ; puis met à 0 : STA COLUPF ; la couleur du playfield, STA PF0 ; et les trois STA PF1 ; registres STA PF2 ; graphiques du Playfield. INC Compteur1 BNE Suite LDA #200 STA Compteur1 LDX Compteur2 LDA #255 STA Video,X INC Compteur2 Suite LDX #34 ; On compte les 36 lignes d'overscan Boucle4 ; Etiquette STA WSYNC ; Attend la fin de la ligne DEX ; Décrémente X CPX #0 ; Si X est diffférent à 0 BNE Boucle4 ; On branche à Boucle4 JMP MainLoop ; Saute à Mainloop org $FFFC ; Ces trois lignes servent à .word Start ; déclarer à la VCS à quelle adresse .word Start ; commence le programme.