; ********** DIX NEUVIEME : LES PUCES N°31 ********** ; ************* AFFICHAGE DISSYMETRIQUE ************ ; ***** Copyright Igor Barzilai - Janvier 2001 ****** include vcs2600.h org $F000 g0 BYTE. $00,$00,$00,$10,$10,$70,$50,$70 g1 BYTE. $00,$00,$00,$EE,$A8,$A8,$A8,$AE g2 BYTE. $00,$00,$00,$77,$41,$73,$11,$77 d0 BYTE. $00,$00,$00,$40,$40,$40,$40,$40 d1 BYTE. $00,$00,$00,$94,$94,$B6,$D4,$97 d2 BYTE. $00,$00,$00,$EE,$8A,$EA,$2A,$EE ; ************ INITIALIZATION DU SYSTEME ************ Start SEI ; Ne modifiez rien à ces CLD ; lignes car elles LDX #255 ; initialisent le système TXS ; Transfert de X dans S LDA #0 ; Charge 0 dans A B1 STA 0,X ; Effacement de la RAM DEX ; en utilisant X comme compteur BNE B1 ; Boucle ; *********** INITIALISATION DE L'AFFICHAGE ********* MainLoop VerticalBlank ; LDA #2 ; VBLANK was set at the beginning of overscan. STA WSYNC STA WSYNC STA WSYNC STA VSYNC ; Begin vertical sync. STA WSYNC ; First line of VSYNC STA WSYNC ; Second line of VSYNC. LDX #44 ; Ntsc value NTSC1 STX TIM64T ; Set timer to activate during the last line of VBLANK. LDA #0 STA WSYNC ; Third line of VSYNC. STA VSYNC ; Writing zero to VSYNC ends vertical sync period. LDA #2 ; Met 0 STA CTRLPF ; Pour copier la partie gauche LDA #140 ; Met 140 (bleu) STA COLUP0 ; Dans COLUP0 (Couleur du Playfield gauche) LDA #54 ; Met 54 (rouge) STA COLUP1 ; Dans COLUP1 (Couleur du Playfield droite) DrawScreen LDA INTIM BNE DrawScreen ; STA WSYNC ; End the current scanline, the last line of VBLANK. STA VBLANK ; End the VBLANK period ; **************** DEBUT D'AFFICHAGE ***************** LDX #7 ; Charge 7 dans X LDY #191 ; Charge 191 dans le compteur de ligne Affiche STA WSYNC ; Attend la fin du balayage LDA g0,X ; Charge g0+X dans A... STA PF0 ; ...et le met dans PF0 LDA g1,X ; Charge g1+X dans A... STA PF1 ; ...et le met dans PF1 LDA g2,X ; Charge g2+X dans A... STA PF2 ; ...et le met dans PF2 NOP ; Attends 2 cycles NOP ; Attends 2 cycles NOP ; Attends 2 cycles NOP ; Attends 2 cycles NOP ; Attends 2 cycles NOP ; Attends 2 cycles NOP ; Attends 2 cycles NOP ; Attends 2 cycles NOP ; Attends 2 cycles LDA d0,X ; Charge d0+X dans A... STA PF0 ; ...et le met dans PF0 LDA d1,X ; Charge d1+X dans A... STA PF1 ; ...et le met dans PF0 LDA d2,X ; Charge d2+X dans A... STA PF2 ; ...et le met dans PF0 TYA ; transfert Y dans A AND #15 ; Filtre les 4 premiers bits BNE Suite ; Si différent de 0 branche à Suite DEX ; Décrémente X Suite DEY ; Décrémente Y BNE Affiche ; Si X=0 alors branche à Affiche ; ********************** OVERSCAN *********************** LDX #30 ; On compte les 36 lignes d'overscan Overscan ; Etiquette STA WSYNC ; Attend la fin de la ligne DEX ; Décrémente X BNE Overscan ; 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.