Mr ToutLeMonde et la programmation NES...

Page 32 sur 32 Précédent  1 ... 17 ... 30, 31, 32

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

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Ven 4 Aoû 2017 - 22:17

Je pense que c'est bon, j'ai fait pas mal de vérifications, tout semble ok... Et il serait même facile de rajouter une unique issue. 

Du coup, je sais pas si je continue, le challenge était intéressant, mais de la à essayer d'en faire un jeu...

vincent2105
Patient contaminé

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

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Sam 5 Aoû 2017 - 13:38

Nouvel exercice : un "snakelike". L'idée m'est venue en voyant mon fils y jouer sur tablette ces jours ci.
Un mode 2 joueurs serait bien sympa... voir 3 ou 4 joueurs, puisque la NES peut profiter du "NES four score". joueur fou joueur fou joueur fou joueur fou
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 Vetea le Sam 5 Aoû 2017 - 14:15

Un projet plutot sympa et classique indémodable!
En multi, ca serait super sympa. amoureux
Allez au boulot ! rambo
avatar
Vetea
Docteur *
Docteur *

Masculin Nombre de messages : 4105
Age : 46
Localisation : Baillargues
Date d'inscription : 22/06/2012

http://www.rolango.fr/

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Sam 5 Aoû 2017 - 14:21

Merci pour tes encouragements Vetea Wink
Ca va être un bon petit casse-tête.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 Vetea le Sam 5 Aoû 2017 - 14:23

C'est le genre de jeu que l'on faisait en Basic sur nos 8 bits chéris! amoureux
avatar
Vetea
Docteur *
Docteur *

Masculin Nombre de messages : 4105
Age : 46
Localisation : Baillargues
Date d'inscription : 22/06/2012

http://www.rolango.fr/

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Mar 8 Aoû 2017 - 16:47

Il me donne du fil à retordre le "snake".
A partir de 40 maillons, ça glitche sur emu en NTSC alors que je monte jusqu'à 150 maillons en PAL. Bizarre  scratch
(Pour l'instant le serpent à une taille fixe définie au "RESET", il ne grandit pas).

avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 11 Aoû 2017 - 10:40

Je reviens sur ce bug après quelques jours de pause. Il m'a mis un p'tit coup au moral celui là A MORT LES CONSOLES
A priori, je tape dans le registre de scroll.
On va reprendre ça calmement.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 Stef le Ven 11 Aoû 2017 - 11:17

Y'a de bonne chances que tu accèdes au PPU en dehors du VBlank quand tu dépasses les 40 maillons, d'où la différence observée avec le PAL (ou le VBlank est plus long).
avatar
Stef
Infirmier

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

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Ven 11 Aoû 2017 - 11:51

Merci de te pencher sur le problème Stef Very Happy

La différence est quand même énorme non ? (40 maillons NTSC / 150 PAL) scratch
J'ai remarqué qu'avec ne serait ce que 5 maillons, si je ne force pas le registre de scroll à 0 à la fin de ma NMI, j'ai le même souci. Mais ça, c'est peut-être un autre problème.

Je vais voir si en travaillant sur plusieurs frames ça passe. Mais d'abord, faut je relise mes quelques routines, au cas où.


avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 kaot le Ven 11 Aoû 2017 - 12:38

tres interessant tes experimentations sur ce vieux dino qu'est la NES.
je suis ca avec interet même si je poste peu
avatar
kaot
Guéri miraculeux

Masculin Nombre de messages : 2231
Age : 39
Localisation : la bas
Date d'inscription : 12/02/2015

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 le Ven 11 Aoû 2017 - 12:54

Ah ça fait plaisir à lire ça ! Merci kaot Wink
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 Lun 14 Aoû 2017 - 9:45

Bon, avant de partir 2 jours, une petite ROM pour montrer où j'en suis :)
https://drive.google.com/open?id=0B0HKOrG7iEpfbEFXZUhncGhFdGM

Au passage, j'ai un pb avec un pointeur qui ne retourne pas la valeur que j'attends... En $0000 et $0001 l'adresse low et high de la tête du serpent dans le ppu. en $0002, j'attends la valeur contenue à cette adresse, or je recupère des valeurs inattendues. Si ça amuse Upsilandre ou un autre Wink

avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 Mar 15 Aoû 2017 - 11:20

@vincent2105 a écrit:Merci de te pencher sur le problème Stef Very Happy

La différence est quand même énorme non ? (40 maillons NTSC / 150 PAL)  scratch
Le Vblank en PAL dure 3.5 fois plus longtemps qu'en NTSC, c'est BEAUCOUP plus.
Tu vas me dire que 150/40 = 3.75 mais tu n'utilise pas le Vblank seulement pour les maillons, suffit que tu utilise 10% du Vblank pour autre chose que tes maillons ce qui est forcement le cas et ca suffit pour atteindre les x3.75 (et si c'etait 50% du Vblank alors t'aurais meme un facteur x6 entre PAL et NTSC)


J'ai remarqué qu'avec ne serait ce que 5 maillons, si je ne force pas le registre de scroll à 0 à la fin de ma NMI, j'ai le même souci. Mais ça,  c'est peut-être un autre problème.
N'oublie pas qu'utiliser le registre $2006 modifie aussi les 2 premiers bit du registre $2000 qu'il faut donc réinitialiser apres, je sais pas si ca a un rapport avec ton probleme.


Dernière édition par upsilandre le Mar 15 Aoû 2017 - 11:46, édité 1 fois
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1428
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 upsilandre le Mar 15 Aoû 2017 - 11:29

@vincent2105 a écrit:Bon, avant de partir 2 jours, une petite ROM pour montrer où j'en suis :)
https://drive.google.com/open?id=0B0HKOrG7iEpfbEFXZUhncGhFdGM

Au passage, j'ai un pb avec un pointeur qui ne retourne pas la valeur que j'attends... En $0000 et $0001 l'adresse low et high de la tête du serpent dans le ppu. en $0002, j'attends la valeur contenue à cette adresse, or je recupère des valeurs inattendues. Si ça amuse Upsilandre ou un autre Wink


J'ai regardé vite fais et je pense que tu va rigoler quand tu vas voir l'erreur que t'as fais.  coquin

Pour récuperer l'ID de la tuile qui se trouve sous la tete du serpent tu utilise ton pointeur a $00 et tu fais:
Code:
LDY #$00
LDA ($00),Y

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
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1428
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 Mar 15 Aoû 2017 - 21:45

Merci pour toutes ces explications et effectivement avec ton bout de code, ça va mieux maintenant  What a Face
En fait, si j'ai bien compris, avec mon pointeur qui était sensé récupérer la valeur à un endroit précis dans la nametable à l'adresse de départ $2000,  j'allais chercher des valeurs dans les miroirs des adresses des registres PPU ($2000-$2007 / $2008- $3fff)
Les affaires reprennent  cheers
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 lincruste le Mar 15 Aoû 2017 - 21:48

Je ne comprends pas tout mais c'est génial, continuez surtout.
avatar
lincruste
Patient contaminé

Masculin Nombre de messages : 434
Age : 38
Localisation : RP
Date d'inscription : 07/06/2014

Revenir en haut Aller en bas

Re: Mr ToutLeMonde et la programmation NES...

Message par upsilandre le Mar 15 Aoû 2017 - 22:09

@vincent2105 a écrit:Merci pour toutes ces explications et effectivement avec ton bout de code, ça va mieux maintenant  What a Face
En fait, si j'ai bien compris, avec mon pointeur qui était sensé récupérer la valeur à un endroit précis dans la nametable à l'adresse de départ $2000,  j'allais chercher des valeurs dans les miroirs des adresses des registres PPU ($2000-$2007 / $2008- $3fff)
Les affaires reprennent  cheers
Oui ces ca, les registres PPU et tout le mirroring est dans l'espace memoire CPU alors que ta nametable est dans l'espace memoire PPU. Forcement tu trouve les meme adresse dans les 2 espaces mais c'est pas du tout la meme chose  smile
On peut vite s’emmêler les pinceaux dans les acces memoires.
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1428
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 Mar 15 Aoû 2017 - 22:39

@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 ?

@lincruste : Merci  smile
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 Mar 15 Aoû 2017 - 23:05

@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 .
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1428
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 upsilandre Hier à 10:09

Ouai c'est pas claire je te sent sceptique MDR
Mais c'est vrai que c'est tordu

Pour synthétiser:
Quand tu fais "LDA $2007" le PPU charge dans l'accumulateur du CPU le contenu d'un registre tampon qui se trouve dans le PPU et ensuite charge dans ce registre tampon le contenu VRAM de l'adresse qui se trouve en $2006 (et incrémente ensuite cette adresse)...

...sauf quand t'accede aux palettes, la c'est encore different car les palettes ne sont pas en VRAM mais directement dans le PPU donc cette fois y a bien un acces direct sans intermediaire.
avatar
upsilandre
Patient incurable

Masculin Nombre de messages : 1428
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 Hier à 10:58

Je pense avoir compris. Et d'ailleurs on va pouvoir vérifier ça quand j'ajouterai d'autres serpents d'ici peu Wink

Mais en premier lieu, faut que je réussisse a gaspiller moins de vblank, parce qu'en fin de compte, je n'ai que 2 malheureux octets à écrire  Mr. Green (1 pour la nouvelle position de la tête du serpent, et un autre pour effacer le dernier maillon).  
Pour l'instant, je pense traiter leurs déplacements respectifs alternativement (pas dans la même frame).
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 Aujourd'hui à 22:27

Bon j'ai choisi la facilité, ne me jetez pas de cailloux Mr. Green ... 
Une frame pour la maj du tableau de coordonnées et une pour l'affichage de la tête et de la queue et la collision du serpent. Ca fonctionne, apparemment  clown 

Next, l'ajout de serpents concurrents. C'est à mes yeux la partie la plus sympa du projet.
avatar
vincent2105
Patient contaminé

Masculin Nombre de messages : 761
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 32 sur 32 Précédent  1 ... 17 ... 30, 31, 32

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