Mr ToutLeMonde et la programmation NES...

Page 35 sur 35 Précédent  1 ... 19 ... 33, 34, 35

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mar 5 Sep 2017 - 20:54

upsilandre a écrit:
vincent2105 a écrit:
upsilandre a écrit:Sauf que la tu vas chercher dans la mémoire CPU (et un endroit ou y a pas de RAM donc effectivement ca va etre random) et pas dans la mémoire GPU ou se trouve tes tuiles.  Razz
En remplacant ton bout de code par celui la ca devrait beaucoup mieux marcher  Mr. Green
Code:
LDA $0001
STA $2006
LDA $0000
STA $2006
LDA $2007
LDA $2007
Par curiosité, j'ai supprimé un "LDA $2007", et je me suis retrouvé avec un comportement du programme en apparence identique (suite à tes explications, je JMP sur RESET si la valeur est égale à 1).
Tu déconseilles ou non ?
nan faut pas l'enlever. Quand tu lis $2007 tu ne charge pas le contenu de l'adresse que tu viens de mettre mais un buffer interne au PPU qui contient une precedente data mais en meme temps le PPU va mettre a jour ce buffer interne avec le contenu de l'adresse que tu as donné pour la prochaine lecture. Y a un décalage a cause de cette etape intermediaire qui passe par ce buffer (car le CPU n'accede pas directement a la VRAM, faut passer par le PPU, c'est pas un acces immediat)
Donc apres avoir initialisé une nouvelle adresse faut toujours lire une fois pour rien. Si tu veux charger 10 octets alors faut enchainer 11 LDA $2007 et ne pas garder le premier. Si tu veux lire juste 1 octet alors faut mettre 2 LDA $2007.
Dans ton cas c'est normale que t'es l'impression que ca marche car pour l'instant tu n'utilise probablement pas la lecture $2007 pour autre chose du coup quand tu fais ton LDA $2007 tu va pas acceder a l'adresse que tu viens de mettre mais a celle que t'as mis la frame précédente qui est maintenant dans le buffer donc ca va juste te faire un retard d'une frame dans ton test de collision ce qui est pas grave sauf que dès que tu utilisera la lecture $2007 pour autre chose que ce test de collision ca va buger et tu saura pas pourquoi et rebelote
 Very Happy .

J'ai justement plusieurs cas a traiter maintenant.
Par exemple, dans la routine suivante, j'initialise 4  adresses, puis je souhaite recuperer les valeurs. Pour la première, si j'ai bien compris, 2 "LDA $2007" sont nécessaires, mais pour les suivantes ? J'aurais tendance à dire qu'il faut un "LDA $2007" (à la place de mes ???). Tu confirmes ? ( En espérant être clair, je patauge un peu)
Code:
 LDA $2002
  ;------------------------------
  LDA serpent_B_tile_haut_PPU_HIGH (A)
  STA $2006
  LDA serpent_B_tile_haut_PPU_LOW (A)
  STA $2006
  ;-----
  LDA serpent_B_tile_bas_PPU_HIGH (B)
  STA $2006
  LDA serpent_B_tile_bas_PPU_LOW (B)
  STA $2006
  ;-----
  LDA serpent_B_tile_droite_PPU_HIGH        (C)
  STA $2006
  LDA serpent_B_tile_droite_PPU_LOW (C)
  STA $2006
  ;-----
  LDA serpent_B_tile_gauche_PPU_HIGH        (D)
  STA $2006
  LDA serpent_B_tile_gauche_PPU_LOW (D)
  STA $2006
  ;------------------------------
  LDA $2007
  LDA $2007  
  STA serpent_B_tile_haut (A)
  ;-----
  ???
  STA serpent_B_tile_bas (B)
  ;-----
  ???
  STA serpent_B_tile_droite   (C)
  ;-----
  ???
  STA serpent_B_tile_gauche (D)
  
  RTS


Vetea a écrit:Toujours plaisant à lire tes posts ! 
Courage ! 


Merci @Vetea Wink

vincent2105
Patient contaminé

Nombre de messages : 824
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par brokestudio le Mar 5 Sep 2017 - 21:15

De mémoire, après chargé une adresse avec $2006, il faut lire 2 fois $2007 pour la première lecture, mais une seule fois pour les autres. Sauf si tu change d'adresse avec $2006.
En espérant être clair, c'est visiblement pas mon fort ce soir :)
avatar
brokestudio
Patient en incubation

Masculin Nombre de messages : 54
Age : 35
Localisation : Clermont Ferrand
Date d'inscription : 01/05/2017

http://www.brokestudio.fr

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par upsilandre le Mar 5 Sep 2017 - 22:35

ah non tu ne peux pas intialiser des adresse PPU de facon successive comme ca.  La dernière adresse ecrase forcement la précedente.
Dans ton cas ou tu ne veux accéder qu'a un seul octet de data a chaque fois t'es dans le pire cas et t'es donc obligé de faire comme ca si je ne m'abuse.

Code:
LDA $2002
  ;------------------------------
  LDA serpent_B_tile_haut_PPU_HIGH (A)
  STA $2006
  LDA serpent_B_tile_haut_PPU_LOW (A)
  STA $2006
  LDA $2007
  LDA $2007  
  STA serpent_B_tile_haut (A)
 
  LDA serpent_B_tile_bas_PPU_HIGH (B)
  STA $2006
  LDA serpent_B_tile_bas_PPU_LOW (B)
  STA $2006
  LDA $2007
  LDA $2007  
  STA serpent_B_tile_bas (B)
  .
  .
  .  
  RTS

Les acces aléatoire dans la VRAM c'est le pire, c'est plutot concu pour des acces en série mais parfois on a pas le choix effectivement. Mais si c'est trop lent tu peux toujours te faire une table en RAM ce qui permettra aussi d'y acceder hors du Vblank.
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1559
Age : 42
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par brokestudio le Mer 6 Sep 2017 - 7:14

Effectivement c'est bien mieux expliqué et je confirme, c'est correct ! :)
L'option de faire une table en RAM est peut bien la solution la plus souple. A réfléchir.
avatar
brokestudio
Patient en incubation

Masculin Nombre de messages : 54
Age : 35
Localisation : Clermont Ferrand
Date d'inscription : 01/05/2017

http://www.brokestudio.fr

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mer 6 Sep 2017 - 9:03

C'est bon j'ai pigé, merci à vous 2 :)

Concernant la table en RAM, j'y avais pensé à un moment et je trouvais que ça faisait pas mal de gachis, ou sinon pas mal d'opérations supplémentaires. Mais c'est vrai qu'on a bcp de RAM à disposition... Avec un tableau d'environ 700 cases, il nous faut 700 octets ou 700 bits si on optimise (puisqu'on veut juste verifier si la case est libre ou non, mais ça fait des calculs en plus). Après,  je reserve pas mal de RAM pour les coordonnees des maillons quand meme... Bref, c'est une piste  smile .

Mais là, je pense que je suis près du but. Je vais tenter le coup comme ça, et je verrai plus tard pour la table en ram.
En fait dans le vblank, je n'ai qu'a ecrire les 4  tetes de serpents et effacer les 4 queues à chaque frame. La je rajoute juste la lecture des 4 tiles autour de chaque serpent.  Donc 16 lectures. Et après on tapera encore dans le vblank pour l'affichage des scores des 4 joueurs et d'un eventuel chrono, et ça devrait être tout. Donc je pense que j'aurai encore de la marge.

Désolé si c'est un peu décousu, j'écris ce post entre 2 clients, ça fait un peu plus de 2 heures maintenant Razz
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mer 6 Sep 2017 - 12:40

C'est pas bon.
Je vais repartir d'une page blanche, mais pas tout de suite. Je commence a saturer.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par brokestudio le Mer 6 Sep 2017 - 13:23

Courage :) ça va le faire !
avatar
brokestudio
Patient en incubation

Masculin Nombre de messages : 54
Age : 35
Localisation : Clermont Ferrand
Date d'inscription : 01/05/2017

http://www.brokestudio.fr

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par upsilandre le Mer 6 Sep 2017 - 15:50

Te force pas, fait ca qu'en t'en a envie comme d'hab.
En ce moment j'avais un peu envie de programmer du coup je me suis mis a la coleco mais je sais que dans une ou deux semaine j'en aurais deja marre et je passerais a autre chose  Razz
Bon par contre si t'achetes un accessoire a chaque fois ca va devenir couteux Mr. Green
Du coup je retire ce que j'ai dis, retourne au charbon et rentabilise ce foutu multitap smile
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1559
Age : 42
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mer 6 Sep 2017 - 16:34

Pour les accessoires, c'est bon, j'ai tout ce qu'il faut maintenant Mr. Green
Allez, ce soir, je m'y remets, j'ai quand même bien envie de les voir bouger tout seuls mes serpents.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Sam 9 Sep 2017 - 8:02

Je ne regrette pas d'avoir tout repris depuis le début.
Je ne me suis pas occupé des items pour l'instant, ni des 4 serpents, puisque  ma priorité est de rendre les serpents autonomes, et la première étape était la détection des tiles qui sont autour de leur tête.
Je peux continuer sur une bonne base.
Je ne garderai pas le quadrillage Wink
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Sam 9 Sep 2017 - 13:42

J'ai réussi ! Cool  J'suis heureux comme un pape ! Razz
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par upsilandre le Sam 9 Sep 2017 - 18:43

Mytho, on a pas de preuve sunglass
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1559
Age : 42
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Sam 9 Sep 2017 - 19:32

Ouais, enfin quand je dis que j'ai réussi, c'est juste à avoir un serpent myope autonome Razz  Je me suis peut-être mal fait comprendre, c'était ça le défi du jour  Mr. Green
Maintenant, faut que je m'occupe de tout le reste (aléatoire, item, 4 joueurs, etc).
D'ailleurs, concernant le vblank, et vu que je n'ai pas de table en ram, j'ai oublié qu'il fallait vérifier que l'item n'était pas repositionné sur une case occupée.
Voilà le chantier : https://drive.google.com/open?id=0B0HKOrG7iEpfNWZGbFhzcWZ1aUk
Start : ajouter des maillons (120 max)
Haut, Bas, Gauche, Droite : forcer le serpent à aller dans une direction.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par upsilandre le Dim 10 Sep 2017 - 16:36

Effectivement ca fonctionne!
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1559
Age : 42
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Dim 10 Sep 2017 - 20:21

ouaip.
Ce soir, j'ai rajouté les routines que j'avais déjà écrites : effacement du serpent lorsqu'il meurt, repositionnement de l'item, et IA du serpent.
Mais c'est sur ce dernier point que le bât blesse :/ 
Y'a bcp à faire : d'une part on s'apercoit que le serpent peut se coincer bêtement, et d'autre part, il prend parfois des itinéraires à rallonge pour chercher l'item (ca je dois pouvoir y remedier).
C'est mon nouveau défi, le rendre un peu moins concon. Et ça risque d'être ardu, parce qu'il y a bcp de cas de figures qui nous sautent aux yeux, mais je vois mal comment régler tous les pb. 
https://drive.google.com/open?id=0B0HKOrG7iEpfbHpnbDlpR1FSS1k
On ne peut plus forcer une direction, mais on peut toujours ajouter des maillons (start)
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mer 13 Sep 2017 - 9:52

Bon j'up le topic pour pas grand chose puisque rien n'avance, j'ai une migraine depuis 3 jours
Mais faut que je m'occupe l'esprit, alors je réfléchis à une autre idée de mini-jeu que j'attaquerai quand j'aurai fini ce snake...
bref je cherche un concept sympa, jouable à 4 (ou moins).
Je pensais à un jeu de tanks, mais si vous avez des idées, je suis tout ouie :)
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par upsilandre le Mer 13 Sep 2017 - 10:04

Merde c'est pas bon, vincent pense deja au prochain jeu, c'est foutu pour le snake Mr. Green
L'aire de rien l'IA du serpent a mon avis c'est un probleme tres complexe.
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1559
Age : 42
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par TotOOntHeMooN le Mer 13 Sep 2017 - 10:11

Toujours pareil ces programmeurs ; Ca ne termine jamais rien, pour ça que le concept de démo a eu du succès ! Mr. Green
avatar
TotOOntHeMooN
Docteur *
Docteur *

Masculin Nombre de messages : 4853
Age : 42
Localisation : France
Date d'inscription : 18/04/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par TOUKO le Mer 13 Sep 2017 - 10:19

Mr. Green
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 11867
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par Tryphon le Mer 13 Sep 2017 - 10:32

upsilandre a écrit:Merde c'est pas bon, vincent pense deja au prochain jeu, c'est foutu pour le snake Mr. Green
L'aire de rien l'IA du serpent a mon avis c'est un probleme tres complexe.

Il me semble que ça avait été un sujet proposé à un concours d'informatique pour lycéens et étudiants, l'astuce étant qu'il n'y a pas de solution et que pleins d'approches différentes peuvent être testées, qui marchent bien contre d'autres approches et mal contre encore d'autres.

Tryphon
Infirmier

Masculin Nombre de messages : 4001
Age : 40
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mer 13 Sep 2017 - 11:00

Merci à vous de m'avoir remis dans le droit chemin Mr. Green
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par upsilandre le Mer 13 Sep 2017 - 11:07

moi je démarre rien du coup je termine tout Cool
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1559
Age : 42
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mer 13 Sep 2017 - 11:13

avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par TOUKO le Mer 13 Sep 2017 - 14:43

upsilandre a écrit:moi je démarre rien du coup je termine tout Cool
MDR
Tiens j'y avais pas pensé à ça !!
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 11867
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par Stef le Mer 13 Sep 2017 - 16:31

Tryphon a écrit:
upsilandre a écrit:Merde c'est pas bon, vincent pense deja au prochain jeu, c'est foutu pour le snake Mr. Green
L'aire de rien l'IA du serpent a mon avis c'est un probleme tres complexe.

Il me semble que ça avait été un sujet proposé à un concours d'informatique pour lycéens et étudiants, l'astuce étant qu'il n'y a pas de solution et que pleins d'approches différentes peuvent être testées, qui marchent bien contre d'autres approches et mal contre encore d'autres.

Oui c'est un sujet complexe, il y a un challenge sur coding game où tu dois coder une IA pour ce genre de jeu et ensuite les IA s'affrontent entre elle. Je m'étais un peu amuser avec ça :)
avatar
Stef
Infirmier

Masculin Nombre de messages : 3539
Age : 38
Localisation : Sevres
Date d'inscription : 03/04/2007

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par Tryphon le Mer 13 Sep 2017 - 16:53

Ça doit être à ça que je pensais. Ça date d'il y a quelques années non ?

Tryphon
Infirmier

Masculin Nombre de messages : 4001
Age : 40
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par Stef le Jeu 14 Sep 2017 - 9:11

Ca existe toujours :
https://www.codingame.com/start

Je n'ai pas vraiment le temps de m'amuser avec et c'est dommage car c'est vraiment très bien fichu... Un bon moyen d'apprendre l'algorithmie et la programmation en général :)
avatar
Stef
Infirmier

Masculin Nombre de messages : 3539
Age : 38
Localisation : Sevres
Date d'inscription : 03/04/2007

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Ven 15 Sep 2017 - 8:26

Oui, ça à l'air d'être un moyen ludique de découvrir pas mal de langages, j'y regarderai qd j'aurai du temps. :)

Coté serpent, ca coince de nouveau.
A partir de 3 serpents autonomes, apparemment ça tape encore dans le registre de scroll.
Je pense pourtant appeler toutes mes routines faisant appel au PPU pendant le vblank, mais je vais devoir relire tout le code au cas ou... Mais je suis assez sur de moi de ce coté là et c'est pourquoi je commence à me demander si je dépasse pas le nombre de cycles impartis dans une frame, ça m'étonnerait aussi, mais bon jusque là, j'ai dépensé sans jamais compter  Razz ... J'ai lu qu'on avait 89342 cycles/frame (en 60Hz). Ca promet d'être bien rébarbatif.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Ven 15 Sep 2017 - 9:40

Bah, j'ai fait un très grossier calcul, et j'étais encore loin de la limite.
Par contre,  je forcais le registre de scroll à 0 en fin de frame. En le forçant à 0 immédiatement après mes routines executées dans le vblank, ça marche ! :)
Mais en fait, je perds pas au change, j'ai des soucis de collision Mr. Green (les serpents se chevauchent parfois)
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Ven 15 Sep 2017 - 20:37

upsilandre a écrit:Merde c'est pas bon, vincent pense deja au prochain jeu, c'est foutu pour le snake Mr. Green
L'aire de rien l'IA du serpent a mon avis c'est un probleme tres complexe.
C'est officiel... ça me saoule !  MDR
Mais c'est pas grave, j'y reviendrai peut-être plus tard. Au moins, j'aurais appris quelques trucs. Wink
Là, j'ai besoin de changement.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 824
Age : 37
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 35 sur 35 Précédent  1 ... 19 ... 33, 34, 35

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum