logo

Session #5

Résumé du stream

Nous avons défini quelques tuiles pour les placer sur notre écran. Le code n’est pas optimisé pour le chargement, l’essentiel était de comprendre comment charger une tuile dans la mémoire vidéo et comment la positionner à l’écran.

Le jeu a basculé en SCREEN 1 car le décor sera toujours monochrome et la gestion du SCREEN 1 est plus simple. Il faudra trouver un autre moyen pour créer notre niveau sans avoir à répéter des lignes.

Nous avons posé quelques interrogations sur la suite, notamment comment économiser des sprites pour animer notre personnage.

— Kazerlelutin

100 REM ____________________________________ MSX-Project
105 COLOR 5,1,1:SCREEN 1,0,0 'Définition écran
110 GOSUB 2000 'Appel définition Sprite
120 GOSUB 3000 'Appel définition TUILES
130 GOSUB 5100 'Couleurs des tuiles
135 GOSUB 7000 'PLACEMENT DES TUILES

290 VITESSE = 2 : X=70+VITESSE : Y=117+VITESSE : S=0 : J=0 'Initialisation variables de départ

295 REM ____________________________________Début de la boucle principale
300 A=X : B=Y :C=STICK(0) 'Variables, on sauve X,Y et on sauve STICK(0)
305 IF C <> 0 THEN J=1-J
310 X=X+ VITESSE*(C>5 AND C<9) - VITESSE*(C>1 AND C<5): Y=Y+ VITESSE*(C=8 OR C=1 OR C=2) - VITESSE*(C>3 AND C<7)'Calcul Déplacement Joueur

700 PUT SPRITE 0,(X,Y),8,S
710 PUT SPRITE 1,(X + 8,Y ),8,S + 1
720 PUT SPRITE 2,(X,Y + 8),15,S + 2
730 PUT SPRITE 3,(X + 8,Y + 8),15,S + 3
740 PUT SPRITE 4,(X,Y + 16),15,S + 4
750 PUT SPRITE 5,(X + 8,Y + 16),15,S + 5
760 PUT SPRITE 6,(X,Y + 24),15,(J * 2) + 6
770 PUT SPRITE 7,(X + 8,Y + 24),15,(J * 2)  + 7 

800 GOTO 300 ' Fin de la boucle

1000 Rem ____________________________________ Data Sprites
1005 DATA 00,00,11,A7,7F,3F,7F,FF
1006 DATA 00,8A,9B,FF,FF,FF,FF,FF

1007 DATA FF,FE,FD,7B,07,3F,3F,3F
1008 DATA FF,00,FE,FE,CC,FE,FE, FE

1010 DATA 3F,3F,1F,0F,1C,1D,1D,1D
1011 DATA E2,FE,FC,F8,04,F4,F4,F4

1012 DATA 1D,1D,1D,0D,01,07,07,07
1013 DATA F4,F4,F4,F0,F8,38,38,BC

1014 Rem ____________________________________ Anim jambes qui bougent
1015 DATA 1D,1D,1D,0D,03,07,0E,0F
1016 DATA F4,F4,F4,F4,F0,3A,1E,0C


1100 DATA *
2000 Rem ____________________________________ Définition Sprites
2005 S=BASE(9)
2010 RESTORE 1005
2020 READ R$
2030 IF R$="*" THEN RETURN ELSE VPOKE S,VAL("&H"+R$):S=S+1
2040 GOTO 2020


3000 REM ____________________________________COMMODE_TEL

3010 DATA 00,00,00,00,00,00,00,00
3020 DATA 07,09,03,0F,00,FF,FF,00
3030 DATA E0,90,C0,E0,00,FF,FF,00
3040 DATA 7F,40,5F,5F,5D,5F,5F,5F
3050 DATA FE,02,FA,FA,BA,FA,FA,FA
3055 REM ___________________________SOL
3060 DATA FF,FF,00,7F,7F,7F,7F,7F
3070 DATA FF,FF,00,FF,FF,FF,FF,FF
3080 DATA FF,FF,00,FE,FE,FE,FE,FE
3090 REM ___________________________PLAFOND
3100 DATA FF,FF,FF,FF,FF,00,7F,00
3110 DATA FF,FF,FF,FF,FF,00,FF,00
3120 DATA FE,FE,FE,FE,FE,00,FC,00

4990 DATA *

5000 S=BASE(7)
5010 RESTORE 3010
5020 READ R$
5030 IF R$="*" THEN RETURN ELSE VPOKE S,VAL("&H"+R$):S=S+1
5040 GOTO 5020

5100 S=BASE(6)
5110 FOR I=0 TO 31: VPOKE S+I, &H50: NEXT I 'TODO aoineko doit expliquer
5120 RETURN


6000 REM ____________________________________COORD TUILES

6005 REM ___________________TELEPHONE
6010 DATA 5,17,1
6020 DATA 6,17,2
6030 DATA 5,18,3
6040 DATA 6,18,4
6045 REM ___________________SOL
6050 DATA 2,19,5
6060 DATA 3,19,6
6070 DATA 4,19,6
6080 DATA 5,19,6
6090 DATA 6,19,6
6100 DATA 7,19,6
6110 DATA 8,19,6
6120 DATA 9,19,6
6130 DATA 10,19,6
6140 DATA 11,19,6
6150 DATA 12,19,6
6160 DATA 13,19,6
6170 DATA 14,19,6
6180 DATA 15,19,6
6190 DATA 16,19,7
6300 REM ___________________PLAFOND
6310 DATA 2,10,8
6320 DATA 3,10,9
6330 DATA 4,10,9
6340 DATA 5,10,9
6350 DATA 6,10,9
6360 DATA 7,10,9
6370 DATA 8,10,9
6380 DATA 9,10,9
6390 DATA 10,10,9
6400 DATA 11,10,9
6410 DATA 12,10,9
6420 DATA 13,10,9
6430 DATA 14,10,9
6440 DATA 15,10,9
6450 DATA 16,10,10

6990 DATA *,*,* 

7000 S=BASE(5)
7010 RESTORE 6010
7020 READ X$,Y$,T$
7030 IF X$ = "*" THEN RETURN ELSE VPOKE S+VAL(X$)+VAL(Y$)*32, VAL(T$)
7040 GOTO 7020