La Place des Développeurs moteur de jeu en basic création, optimisation
Reprise du message précédent
je vais essayer de répondre aux questions de Igal1) à 2 ça risque de ramer... Mais en X-basic, pourquoi pas

2) Pour revenir au premier niveau (zéro) quand on dépasse le dernier niveau (15), il suffit d'appliquer la solution déjà citée c'est à dire remettre à zéro par un AND bien ajusté à chaque passage de niveau: N=(N+1)AND15.
3) Toujours le problème de ramage mais mins que pour le 1
4) pour celui là à toi de voir ce que tu veux en faire après....
Pour conserver l'agencement des tableaux il suffit de charger le fichier de tableaux de création des décors du fond sur une page libre et de faire le COPY ad hoc

Le MSXien le plus à l'ouest



igal :
Il me semble avoir un jour activé une fonction que je ne retrouve pas et qui permet grâce à une sorte de petit stylo virtuel d'appliquer telle ou telle Couleur du .BMP à tel ou tel élément graphique du SC5!
Ca pourrait être une solution intermédiaire puisque cela permet de trouver en quelques secondes la bonne valeur R,G,B de l'élément voulu sans modifier l'ordre des couleurs!
Ca pourrait être une solution intermédiaire puisque cela permet de trouver en quelques secondes la bonne valeur R,G,B de l'élément voulu sans modifier l'ordre des couleurs!
Je pense que la fonction dont tu parles n'existe que pour définir la couleur 0 dans BMP2MSX, où on peut spécifier les coordonnées d'un point qui la défini. En tout cas je ne la connais pas pour les autres couleurs ...
Sinon, il y a une autre solution, mais elle est un peu contraignante ... Etant donné que BMP2MSX analyse certainement l'image BMP de gauche à droite et de haut en bas, il suffit que les 16 premiers pixels de ton image contiennent les couleurs que tu souhaites dans l'ordre que tu veux ... (à confirmer cependant).
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)

Salut à tous.
@MsxOsaure: Merci pour tes réponses.
1) Est ce bien le X-Basic qui ne supporte pas la musique! Si c'est le cas alors c'est pas intéressant du tout!
2) J'ai testé la solution N=(N+1)AND15. Malhereusement, cela génère un bug d'affichage aux alentours de la 13ème page!
Aux alentours, puisque le la progression de fait par 14 Blocs, alors que chaque pas en contient 16!
Le Bug n'est pas aléatoire, il se produit toujours au même endroit (Blocs 15 et 16 de la page [13 env]) , et produit toujours les artéfacts.
3) Je suis pas sûre d'avoir tout compris ton explication!
4) Le but est de rendre les décors plus riches ou alors augmenter le nombre d'actions possibles! Collecte d'item, action sur un bouton etc..

Le problème est d'arriver à exploiter ça sans trop s'arracher les cheveux de la tête!
5) Concernant l'agencement des tableaux. (Peux tu créer le code STP?
)
On peut se servir simplement de la page FONDW.SC5 et transplanter la partie qui nous intéresse?
Verticalement: 200 à 211 inclus (12 pixels) (La ligne 199 n'étant pas nécessaire!)
horizontalement: 0 à 255 inclus (256 pixels)
L'implant devant prendre les coordonnées suivantes:
Verticalement: 184 à 195 inclus (12 pixels)
Horizontalement: 0 à 255 inclus (256 pixels)
@Metalion: Ton idée est trouvée mais malheureusement, ça ne fonctionne pas
Merci d'avoir essayé
@MsxOsaure: Merci pour tes réponses.
1) Est ce bien le X-Basic qui ne supporte pas la musique! Si c'est le cas alors c'est pas intéressant du tout!
2) J'ai testé la solution N=(N+1)AND15. Malhereusement, cela génère un bug d'affichage aux alentours de la 13ème page!
Aux alentours, puisque le la progression de fait par 14 Blocs, alors que chaque pas en contient 16!
Le Bug n'est pas aléatoire, il se produit toujours au même endroit (Blocs 15 et 16 de la page [13 env]) , et produit toujours les artéfacts.
3) Je suis pas sûre d'avoir tout compris ton explication!



4) Le but est de rendre les décors plus riches ou alors augmenter le nombre d'actions possibles! Collecte d'item, action sur un bouton etc..

Le problème est d'arriver à exploiter ça sans trop s'arracher les cheveux de la tête!
5) Concernant l'agencement des tableaux. (Peux tu créer le code STP?

On peut se servir simplement de la page FONDW.SC5 et transplanter la partie qui nous intéresse?
Verticalement: 200 à 211 inclus (12 pixels) (La ligne 199 n'étant pas nécessaire!)
horizontalement: 0 à 255 inclus (256 pixels)
L'implant devant prendre les coordonnées suivantes:
Verticalement: 184 à 195 inclus (12 pixels)
Horizontalement: 0 à 255 inclus (256 pixels)
@Metalion: Ton idée est trouvée mais malheureusement, ça ne fonctionne pas

Merci d'avoir essayé


J'ai besoin d'aide pour résoudre un Bug qui me tient tête depuis 3 jours (et quelques nuits
)
J'ai repris l'ancien Moteur Graphique de MsxOsaure (celui qui animait Winnie sans le XBASIC).
J'ai donc modifié pas mal de paramètres, et j'ai implanté le changement de Niveaux verticalement.
Concrètement, on peut accéder à des salles au dessus ou au dessous alors qu'avant, on pouvait aller qu'à droite ou gauche
J'ai l'intention d'incrémenter un maximum de choses mais pour le moment, je fait face à un bug dont voici l'explication.
1) J'ai signalé les niveaux (étages) de 1 à 6.
2) Je peux me déplacer jusqu'au 6ième étage et redescendre à ma guise.
3) La descente du niveau 2 vers le niveau 1 bug en affichant sans cesse le niveau 2 au lieu du 1
J'ai beau chercher, je trouve pas la solution.
J'ai enregistré une séquence de sorte à vous montrer le BUG!
Le Bug se trouve après 3 minutes. On voit l'étage 2 s'afficher au lieu du niveau 1
Voici le code:
Selon moi, le Problème vient de la Variable [H] que j'ai ajouté au programme.

J'ai repris l'ancien Moteur Graphique de MsxOsaure (celui qui animait Winnie sans le XBASIC).
J'ai donc modifié pas mal de paramètres, et j'ai implanté le changement de Niveaux verticalement.
Concrètement, on peut accéder à des salles au dessus ou au dessous alors qu'avant, on pouvait aller qu'à droite ou gauche

J'ai l'intention d'incrémenter un maximum de choses mais pour le moment, je fait face à un bug dont voici l'explication.
1) J'ai signalé les niveaux (étages) de 1 à 6.
2) Je peux me déplacer jusqu'au 6ième étage et redescendre à ma guise.
3) La descente du niveau 2 vers le niveau 1 bug en affichant sans cesse le niveau 2 au lieu du 1
J'ai beau chercher, je trouve pas la solution.
J'ai enregistré une séquence de sorte à vous montrer le BUG!
Le Bug se trouve après 3 minutes. On voit l'étage 2 s'afficher au lieu du niveau 1

Voici le code:
Code TEXT :
10 'SAVE"ZELDAVE.ASC",A 20 GOTO 40 30 DEFUSR=&HD000:A=USR(0):FORP=0TO10:NEXTP:POKE&HFD9F,201 40 VDP(10)=(0):WIDTH80 50 SCREEN5,2:COLOR 15,1,1:SETPAGE0,0:CLS:DEFINTA-Z 60 ' 70 ' Chargement ecran des niveaux en page 3 80 ' 90 SETPAGE0,3:BLOAD"fondw.sc5",S 100 ' 110 ' Chargement ecran des "sprites" en page 2 120 ' 130 SETPAGE0,1:BLOAD"winnie.sc5",S 140 COLOR=RESTORE 150 ' 160 ' -----------INSERTION DES MUSIQUES ET SONS---------- 170 GOTO 1500 180 'DEFUSR=&HD000:A=USR(0):'STOP LA MUSIQUE 190 DEFUSR=&HD000:A=USR(0):POKE&HCFFF,49:A=USR2(0):' MUSIQUE STAGE 6 200 ' 210 ' Cr‚ation d'un sprite pour masque en page 0 220 ' 230 SETPAGE0,0 240 FORI=&H7800TO&H781F:VPOKEI,255:NEXTI 250 PUTSPRITE0,(0,200),1,0 260 ' 270 ' Initialisation des varibles et mise en place niveau 1 280 ' 290 C=0:X=8:Y=132:D=52:A=0:N=0:M=0:H=200 300 GOSUB 1410 310 ' 320 ' Boucle Principale:variable D pour animation du heros 330 ' 340 ' 350 ' 360 S=STICK(0):D=D+26:IFD=208THEND=52 370 ONS+1GOSUB490,540,600,690,760,840,900,980,1050 380 COPY(X,Y)-(X+34,Y+50),2TO(0,0),3:COPY(D,A)-(D+25,A+37),1TO(4,4),3,TPSET:COPY(0,0)-(34,50),3TO(X,Y),0:P=POINT(INT((X+15)/16),202+INT((Y+4)/16)):IFP<11THEN1140 390 IF X>223ORX<1THEN440 400 IF Y>147ORY<1THEN420 410 GOTO 360 420 IF Y=148THENY=4:H=H+12:GOSUB1370 430 IF Y=0THENY=144:H=H-12:GOSUB1370 440 IF X=224THENX=4:N=N+1:GOSUB1370 450 IF X=0THENX=220:N=N-1:GOSUB1370 460 GOTO 360 470 ' SP gestion mouvement: statique! 480 ' 490 IFSTRIG(0)THEND=0:POKE&HCFFF,21:A=USR2(0) 500 A=0:FORI=0TO70:NEXTI:RETURN 510 ' 520 ' SP gestion mouvement: HAUT 530 ' 540 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0):P=POINT(INT((X+8)/16),202+INT(Y/16)) 550 Q=POINT(INT((X+20)/16),202+INT(Y/16)) 560 Y=Y+4*(P>6)*(Q>6)*(Y>0):A=76:RETURN 570 ' 580 ' SP gestion mouvement: HAUT/DROITE 590 ' 600 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0) 610 P=POINT(INT((X+8)/16),202+INT(Y/16)) 620 Q=POINT(INT((X+20)/16),202+INT(Y/16)) 630 Y=Y+4*(P>6)*(Q>6)*(Y>0) 640 P=POINT(INT((X+8)/16)+1,202+INT((Y+8)/16)) 650 X=X-4*(P>6):A=38:RETURN 660 ' 670 ' SP gestion mouvement: DROITE 680 ' 690 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0) 700 P=POINT(INT((X+8)/16),202+INT(Y/16)) 710 P=POINT(INT((X+8)/16)+1,202+INT((Y+8)/16)) 720 X=X-4*(P>6):A=38:RETURN 730 ' 740 ' SP gestion mouvement: DROITE/BAS 750 ' 760 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0):P=POINT(INT((X+8)/16),203+INT((Y-4)/16)) 770 Q=POINT(INT((X+20)/16),203+INT((Y-4)/16)) 780 Y=Y+4*(P>6)*(Q>6) 790 P=POINT(INT((X+8)/16)+1,202+INT((Y+8)/16)) 800 X=X-4*(P>6):A=38:RETURN 810 ' 820 ' SP gestion mouvement: BAS 830 ' 840 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0):P=POINT(INT((X+8)/16),203+INT((Y-4)/16)) 850 Q=POINT(INT((X+20)/16),203+INT((Y-4)/16)) 860 Y=Y+4*(P>6)*(Q>6):A=152:RETURN 870 ' 880 ' SP gestion mouvement: BAS/GAUCHE 890 ' 900 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0):P=POINT(INT((X+8)/16),203+INT((Y-4)/16)) 910 Q=POINT(INT((X+20)/16),203+INT((Y-4)/16)) 920 Y=Y+4*(P>6)*(Q>6) 930 P=POINT(INT((X+20)/16)-1,202+INT((Y+8)/16)) 940 X=X+4*(P>6):A=114:RETURN 950 ' 960 ' SP gestion mouvement: GAUCHE 970 ' 980 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0) 990 P=POINT(INT((X+8)/16),202+INT(Y/16)) 1000 P=POINT(INT((X+20)/16)-1,202+INT((Y+8)/16)) 1010 X=X+4*(P>6):A=114:RETURN 1020 ' 1030 ' SP gestion mouvement: GAUCHE/HAUT 1040 ' 1050 IFSTRIG(0)THEND=0:POKE&HCFFF,3:A=USR2(0) 1060 P=POINT(INT((X+8)/16),202+INT(Y/16)) 1070 Q=POINT(INT((X+20)/16),202+INT(Y/16)) 1080 Y=Y+4*(P>6)*(Q>6)*(Y>0) 1090 P=POINT(INT((X+20)/16)-1,202+INT((Y+8)/16)) 1100 X=X+4*(P>6):A=114:RETURN 1110 ' 1120 ' SP gestion rencontre avec objet 1130 ' 1140 IF P=10THEN1260 ' si trou -> SP tombe 1150 POKE&HFD9F,201 1160 PSET(INT((X+15)/16),202+INT((Y+4)/16)),15:B=P*6:F=P*5 1170 COPY(240,191)-(255,206),1TO((INT((X+15)/16))*16,(INT((Y+36)/16))*16),2 1180 COPY(208,P*16-112)-(223,P*16-97),1TO(C*16+32,196),0 1190 POKE&HFD9F,201:POKE&HFDA0,&H6:POKE&HFDA1,&HD0:POKE&HFD9F,&HC3 1200 POKE&HCFFF,82:A=USR2(0) 1210 C=C+1 1220 GOTO 350 1230 ' 1240 ' SP chute dans le trou 1250 ' 1260 FORI=0TO36STEP2 1270 COPY(X,Y)-(X+34,Y+50),2TO(0,0),3 1280 COPY(D,A)-(D+25,A+37-I),1TO(4,4+I),3,TPSET 1290 COPY(0,0)-(34,50),3TO(X,Y),0 1300 A=A+38:IFA=190THENA=38 1310 B=I+40:POKE&HCFFF,57:A=USR2(0) 1320 IFPLAY(0)=-1THEN1320 1330 NEXT 1340 M=0:N=0 1350 LINE(32,196)-(255,212),1,BF 1360 GOTO 290 1370 ' 1380 ' SP Mise en place du d‚cor 1390 ' 1400 COPY(0,H)-(15,H+11),0TO(M*16,200),3 1410 COPY(N*16,H)-(15+N*16,H+11),3TO(0,200),0 1420 FORI=0TO15:FORJ=0TO11:P=POINT(I,J+200):POKE&HCFFF,62:A=USR2(0):COPY(P*16,191)-(15+P*16,206),1TO(I*16,J*16),0 1430 NEXTJ:NEXTI 1440 COPY(0,0)-(256,192),0TO(0,0),2 1450 M=N 1460 POKE&HCFFF,23:A=USR2(0) 1470 'BEEP 1480 RETURN 1490 GOTO 1490 1500 '---------DEBUT DE SALAMANDER DEMO MODIFIE---------------- 1510 'POKE&HFBB1,1: 'EMPECHE CONTROL+STOP 1520 BLOAD"1.006":DEFUSR4=&HD600:' CHARGE LE PLAYER ? 1530 BLOAD"1.007":U=USR4(1):' CHARGE SONS ET MUSIQUES 1540 BLOAD"1.008":U=USR4(2):' CHARGE SONS ET MUSIQUES 1550 BLOAD"1.009":U=USR4(3):' CHARGE SONS ET MUSIQUES 1560 BLOAD"1.010":U=USR4(4):' CHARGE SONS ET MUSIQUES 1570 BLOAD"1.011":FORT=0TO2000:NEXT 1580 DEFUSR=&HD000:A=USR(0): 'PREREQUIS ARRET LA MUSIQUE 1590 DEFUSR2=&HD003:' PREREQUIS FONCTION INCONNUE 1600 POKE&HFD9F,201 1610 POKE&HFDA0,&H6:POKE&HFDA1,&HD0:POKE&HFD9F,&HC3 1620 ' LISTE COMPLETE DES MUSIQUES ET SONS DANS POKE SALAMANDER 1630 ' 1640 DEFUSR=&HD000:A=USR(0):POKE&HCFFF,31:A=USR2(0):' MUSIQUE STAGE 6 1650 'POKE&HCFFF,67:A=USR2(0):' EXPLOSION D'ENNEMI MOYENNE 1660 ' 1670 'DEFUSR=&HD000:A=USR(0):FORP=0TO10:NEXT:POKE&HFD9F,201:'PERMET ACCES DISK MAIS ARRETER MUSIQUE AVANT 1680 GOTO 190:' RETOUR A L ANIMATION 1690 ' 1700 '---------FIN DE SALAMANDER DEMO MODIFIE-------------------
Selon moi, le Problème vient de la Variable [H] que j'ai ajouté au programme.


Désolé, j'ai oublié le principal
FONDW.BMP qui sert de MAP et SPRITE:

WINNIE.BMP qui contient les l'Animations, décors et Items:

La disquette:
ZELDAVE.rar
Nb: Il faut lancer => LOAD"ZELDAVE.ASC
@TurboSeb:
H est bien la variable qui dit à quelle hauteur il faut lire la MAP qui se trouve sur FONDW.SC5.
La Hauteur original est de 200 et va à 211 soit 12 Pixels de hauteur pour chaque SALLE.
J'ai donc Attribué la Valeur 200 à H.
Pour lire la MAP qui se trouve au dessus du Pixel 200, il suffit de retirer à la Hauteur 12 Pixels.
Je retire les 12 Pixels à H lorsque je passe à un étage supérieur.
430 IF Y=0THENY=144:H=H-12:GOSUB1370
J'incrémente 12 Pixels à H lorsque je passe à un étage inférieur.
420 IF Y=148THENY=4:H=H+12:GOSUB1370
Ce qui à pour effet de lire la MAP en commençant 12 Pixels en dessous sa position précédente.
Tout ce passe bien sauf que:
Lorsque je redescend de l'étage 2 à l'étage 1, la MAP lue reste la 2!
Comme si la Variable H n'arrivait pas à Ajouter 12 Pixel pour redescendre la lecture de la MAP à 200 comme au tout début du jeu!
Nb: Les Pixels 200 à 211 contiennent la MAP qui est correctement lue au tout début du jeu.
Je sais pas si j'ai été très clair, mais j'essais.
On sait jamais si vous voyez un truc louche, n'hésitez pas.
EDIT: Une précision au cas ou cela à son importance.
Lorsque je meurt à l'étage ZERO, les niveaux s'affichent correctement.
Lorsque je meurt dans un étage autre que ZERO, les niveaux sont complètement buggés et incohérents.
La seule solution que j'ai trouvé est de recharger le jeu entièrement
Edité par
igal
Le 09/04/2013 à 22h11

FONDW.BMP qui sert de MAP et SPRITE:

WINNIE.BMP qui contient les l'Animations, décors et Items:

La disquette:
ZELDAVE.rar
Nb: Il faut lancer => LOAD"ZELDAVE.ASC
@TurboSeb:
H est bien la variable qui dit à quelle hauteur il faut lire la MAP qui se trouve sur FONDW.SC5.
La Hauteur original est de 200 et va à 211 soit 12 Pixels de hauteur pour chaque SALLE.
J'ai donc Attribué la Valeur 200 à H.
Code TEXT :
290 C=0:X=8:Y=132:D=52:A=0:N=0:M=0:H=200
Pour lire la MAP qui se trouve au dessus du Pixel 200, il suffit de retirer à la Hauteur 12 Pixels.
Je retire les 12 Pixels à H lorsque je passe à un étage supérieur.
430 IF Y=0THENY=144:H=H-12:GOSUB1370
J'incrémente 12 Pixels à H lorsque je passe à un étage inférieur.
420 IF Y=148THENY=4:H=H+12:GOSUB1370
Ce qui à pour effet de lire la MAP en commençant 12 Pixels en dessous sa position précédente.
Tout ce passe bien sauf que:
Lorsque je redescend de l'étage 2 à l'étage 1, la MAP lue reste la 2!
Comme si la Variable H n'arrivait pas à Ajouter 12 Pixel pour redescendre la lecture de la MAP à 200 comme au tout début du jeu!
Nb: Les Pixels 200 à 211 contiennent la MAP qui est correctement lue au tout début du jeu.
Je sais pas si j'ai été très clair, mais j'essais.
On sait jamais si vous voyez un truc louche, n'hésitez pas.
EDIT: Une précision au cas ou cela à son importance.
Lorsque je meurt à l'étage ZERO, les niveaux s'affichent correctement.
Lorsque je meurt dans un étage autre que ZERO, les niveaux sont complètement buggés et incohérents.
La seule solution que j'ai trouvé est de recharger le jeu entièrement


Question bete (a la TurboSEB donc
)
Pourquoi, H+12 ou H-12 au ligne 430 et 420 et H+11 au niveau du lecteur de Decors lignes 1400?
sinon ca serait pas la maps qui serait modifiées pendant la lecture , j'ai pas trop étudier! Edité par TurboSEB Le 09/04/2013 à 22h38

Pourquoi, H+12 ou H-12 au ligne 430 et 420 et H+11 au niveau du lecteur de Decors lignes 1400?
sinon ca serait pas la maps qui serait modifiées pendant la lecture , j'ai pas trop étudier! Edité par TurboSEB Le 09/04/2013 à 22h38

MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)






Y a pas de questions bêtes.
A l'origine, cette ligne se présentait comme suit:
1400 COPY(0,200)-(15,211),0TO(M*16,200),3
1410 COPY(N*16,200)-(15+N*16,211),3TO(0,200),0
Avec ces formules, la MAP affichée reste celle tout en bas (l'étage No 1) c'est à dire de 200 à 211 ce qui fait 12 Pixels.
Les décors sont composés de 12 Blocs de Hauteurs sur 16 Blocs de largeur. (Chaque Bloc fait 16X16 Pixels)
Pour déplacer "le curseur de lecture de la MAP" vers le HAUT (étage 2), il faut déplacer "le Curseur de lecture de MAP" de 12 Pixels vers le haut
J'ai donc remplacé la VALEUR FIXE 200 par la Variable H qui fait bien 200 au départ.
Pour rester Cohérent, on remplace 200 par H, mais on remplace 211 par H+11
Ce qui donne:
1400 COPY(0,H)-(15,H+11),0TO(M*16,200),3
1410 COPY(N*16,H)-(15+N*16,H+11),3TO(0,200),0
N'hésite pas si t'as d'autres remarques. J'ai besoin d'un regard extérieur.
A l'origine, cette ligne se présentait comme suit:
1400 COPY(0,200)-(15,211),0TO(M*16,200),3
1410 COPY(N*16,200)-(15+N*16,211),3TO(0,200),0
Avec ces formules, la MAP affichée reste celle tout en bas (l'étage No 1) c'est à dire de 200 à 211 ce qui fait 12 Pixels.
Les décors sont composés de 12 Blocs de Hauteurs sur 16 Blocs de largeur. (Chaque Bloc fait 16X16 Pixels)
Pour déplacer "le curseur de lecture de la MAP" vers le HAUT (étage 2), il faut déplacer "le Curseur de lecture de MAP" de 12 Pixels vers le haut

J'ai donc remplacé la VALEUR FIXE 200 par la Variable H qui fait bien 200 au départ.
Pour rester Cohérent, on remplace 200 par H, mais on remplace 211 par H+11

Ce qui donne:
1400 COPY(0,H)-(15,H+11),0TO(M*16,200),3
1410 COPY(N*16,H)-(15+N*16,H+11),3TO(0,200),0
N'hésite pas si t'as d'autres remarques. J'ai besoin d'un regard extérieur.


Je ne vais pas pouvoir t'aider par manque de temps, j'avais commencé a etudier le moteur de msxosaure, mais finalement, je compte me faire mon propre moteur dont les codes des map seront généré sur Pc. Il me restera plus qu'a rentrer les code sur msx
(si tout va bien
)


Tous mes PCB -> github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter

Eh bé...
C'est ma journée aujourd’hui. J'aurai du jouer au LOTO
J'ai pu fixer le Bug de la façon suivante:
Ces lignes contiennent les Variables permettant de changer de SALLE.
Ces Variables renvoient vers le Sous programme qui génère la page selon les Valeurs H et N.
Voici le Sous programme:
En réalité, ce sous programme s'exécute ENTIEREMENT (depuis la ligne 1370) lors du tout premier affichage. (Salle de départ ligne 1400)
Lorsque l'on change de salle, il ne faut pas lancer le sous programme dans son entier, mais aller directement à la ligne 1410 qui permettre l'affichage de la bonne salle au bon endroit et sans BUG.
Le seul petit HIC maintenant, est que les ITEMS déjà récoltés réapparaissent dès qu'on retourne dans la salle précédemment visité.
Me reste à voir le fonctionnement de M et essayer de trouver une Solution
C'est ma journée aujourd’hui. J'aurai du jouer au LOTO

J'ai pu fixer le Bug de la façon suivante:
Code TEXT :
420 IF Y=148THENY=4:H=H+12:GOSUB1370 430 IF Y=0THENY=144:H=H-12:GOSUB1370 440 IF X=224THENX=4:N=N+1:GOSUB1370 450 IF X=0THENX=220:N=N-1:GOSUB1370
Ces lignes contiennent les Variables permettant de changer de SALLE.
Ces Variables renvoient vers le Sous programme qui génère la page selon les Valeurs H et N.
Voici le Sous programme:
Code TEXT :
1370 ' 1380 ' SP Mise en place du d‚cor 1390 ' 1400 COPY(0,H)-(15,H+11),0TO(M*16,200),3 1410 COPY(N*16,H)-(15+N*16,H+11),3TO(0,200),0 1420 FORI=0TO15:FORJ=0TO11:P=POINT(I,J+200):POKE&HCFFF,62:A=USR2(0):COPY(P*16,191)-(15+P*16,206),1TO(I*16,J*16),0 1430 NEXTJ:NEXTI 1440 COPY(0,0)-(256,192),0TO(0,0),2 1450 M=N 1460 POKE&HCFFF,23:A=USR2(0) 1470 'BEEP 1480 RETURN 1490 GOTO 1490
En réalité, ce sous programme s'exécute ENTIEREMENT (depuis la ligne 1370) lors du tout premier affichage. (Salle de départ ligne 1400)
Lorsque l'on change de salle, il ne faut pas lancer le sous programme dans son entier, mais aller directement à la ligne 1410 qui permettre l'affichage de la bonne salle au bon endroit et sans BUG.
Le seul petit HIC maintenant, est que les ITEMS déjà récoltés réapparaissent dès qu'on retourne dans la salle précédemment visité.
Me reste à voir le fonctionnement de M et essayer de trouver une Solution



Voici une version sur laquelle je travaille depuis un moment.
Le but étant de ne travailler que sur 2 pages.
Le processus de superposition sur une autre page pour ensuite être collée sur la page visible est remplacé par une copie directe depuis la source vers la page visible.
L'astuce consiste à Re-coller le décors à l'extrémité opposée du sens vers lequel se dirige le personnage.
Nb: J'ai pas terminé la création des Pseudo Sprite. Ce qui explique que selon lles circonstance, le Héro est invisible. (montée, descente)
http://youtu.be/Lw3a4u2D-Tw
En libérant la page ou se faisait les copies, on peut y stocker de nombreux tiles et dans le meilleur des cas on aurait des décors riche de 16 lignes de 16 bloc en plus de la seule ligne de 16 actuellement disponible.
D'autant, que la "qualité" des bloc n'a même pas besoin d'être changée, il suffit de tenir compte des caractéristiques établis pour la ligne de tiles de départ et s'y tenir.
Par exemple, Si le Tile 4 est un TROU, alors sur chaque ligne de Tiles, on y mettra un TROU avec les décors que l'on souhaite, mais ce sera toujours un TROU.
Edit: J'ai pas implanté la pesanteur non plus
Edité par
igal
Le 18/03/2014 à 07h39
Le but étant de ne travailler que sur 2 pages.
Le processus de superposition sur une autre page pour ensuite être collée sur la page visible est remplacé par une copie directe depuis la source vers la page visible.
L'astuce consiste à Re-coller le décors à l'extrémité opposée du sens vers lequel se dirige le personnage.
Nb: J'ai pas terminé la création des Pseudo Sprite. Ce qui explique que selon lles circonstance, le Héro est invisible. (montée, descente)
http://youtu.be/Lw3a4u2D-Tw
En libérant la page ou se faisait les copies, on peut y stocker de nombreux tiles et dans le meilleur des cas on aurait des décors riche de 16 lignes de 16 bloc en plus de la seule ligne de 16 actuellement disponible.
D'autant, que la "qualité" des bloc n'a même pas besoin d'être changée, il suffit de tenir compte des caractéristiques établis pour la ligne de tiles de départ et s'y tenir.
Par exemple, Si le Tile 4 est un TROU, alors sur chaque ligne de Tiles, on y mettra un TROU avec les décors que l'on souhaite, mais ce sera toujours un TROU.
Edit: J'ai pas implanté la pesanteur non plus

Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie