Mr ToutLeMonde et la programmation NES...
+23
brokestudio
F.L
grostonton
Ned_Flanders
Tryphon
philip
fanoplusplus64K
tfdi
Ricco59_59
Top l'âne
tetsuro
upsilandre
nemokantio
Stef
pckid
ichigobankai
suisseretrogaming
patapouf31
vingazole
koan75
joelabroc
drfloyd
vincent2105
27 participants
Page 3 sur 34
Page 3 sur 34 • 1, 2, 3, 4 ... 18 ... 34
Re: Mr ToutLeMonde et la programmation NES...
Oui c'est ça .J'en déduis qu'on parle de largeur du bus de données. C'est ça ?
intéressant merci .Tiens je viens de trouver un lien intéressant :http://traf.romhack.org/WikiTraf/index.php/Adressage_m%C3%A9moire_sur_NES_et_utilisation_des_mappers
Oui, le but est d'avoir un nombre le plus aléatoire possible avec le moins de cycles possible .Je vois que tu charges "_rndseed + 2" dans l'Accumulateur, j'ai l'impression que c'est pour "triturer" _rndseed qui servira à son tour de base pour triturer _rndseed+1 ? Grossièrement est-ce que c'est le principe ?
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
TOUKO a écrit:Je soupçonne vingazole d'entretenir, en toute discrétion, un amour passionnel avec le 6502
Le premier microprocesseur que j'ai appris à utiliser était un 6809E sur mon TRS-80 Color Computer 2, uniquement en langage-machine (j'utilisais les opcodes sous leur forme numérique, je calculais les sauts relatifs moi-même, etc...), c'est un microprocesseur très proche du 6502.
Par la suite je suis passé sur PC et je me suis donc mis à l'assembleur 8086.
Je ne me suis intéressé au z80 qu'il y environ 6 ans, dans le but de programmer la Master System de mon enfance
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Mr ToutLeMonde et la programmation NES...
@vingazole y'a moyen de voir quelquechose sur SMS ou autre ?
Tant qu'on parle "intimité, et toi Touko, comment t'est venu le virus ?
Je sais que tu es sur le projet de "chuck" sur PC-Engine depuis un moment et vu le soin apporté à l'intro je me doute bien que tu ne fais pas le reste comme un sagouin. Je me permets de la poster ici à titre d'exemple. CA CLAQUE ! Je suis vraiment impressionné
La PCE, j'en avais entendu parlé une fois ou 2 au collège, mais personne ne l'avait.
Vraiment les mecs, vous avez tout mon respect !
Je reviens à la routine de Touko... ENCORE...
J'ai "joué" un peu avec l'opcode AND pour ne boucler que sur 4, 8 ou 16 trajectoires ça fonctionne.
Par contre pour la routine srand, problème.
j'ai déclaré _rndseed comme mes autres variables, et vu qu'il s'agit d'un nombre sur 16 bits j'ai tenté au pif plusieurs valeurs
_rndseed rs .1
_rndseed rs .2
_rndseed rs .3
Je ne l'initialise pas.
Jai appelé la routine "srand" entre NMI et RTI, au sein de la routine controller, de l'appel de tir... Rien à faire, _rndseed semble "bloqué" sur la valeur 0.
Ensuite j'appelle une trajectoire de cette façon (je pense que c'est correct puisque si je remplace _rndseed par NumeroTrajectoireAleatoire, ça fait ce que j'attends):
Ce soir je m'y remets
Tant qu'on parle "intimité, et toi Touko, comment t'est venu le virus ?
Je sais que tu es sur le projet de "chuck" sur PC-Engine depuis un moment et vu le soin apporté à l'intro je me doute bien que tu ne fais pas le reste comme un sagouin. Je me permets de la poster ici à titre d'exemple. CA CLAQUE ! Je suis vraiment impressionné
La PCE, j'en avais entendu parlé une fois ou 2 au collège, mais personne ne l'avait.
Vraiment les mecs, vous avez tout mon respect !
Je reviens à la routine de Touko... ENCORE...
J'ai "joué" un peu avec l'opcode AND pour ne boucler que sur 4, 8 ou 16 trajectoires ça fonctionne.
Par contre pour la routine srand, problème.
j'ai déclaré _rndseed comme mes autres variables, et vu qu'il s'agit d'un nombre sur 16 bits j'ai tenté au pif plusieurs valeurs
_rndseed rs .1
_rndseed rs .2
_rndseed rs .3
Je ne l'initialise pas.
Jai appelé la routine "srand" entre NMI et RTI, au sein de la routine controller, de l'appel de tir... Rien à faire, _rndseed semble "bloqué" sur la valeur 0.
Ensuite j'appelle une trajectoire de cette façon (je pense que c'est correct puisque si je remplace _rndseed par NumeroTrajectoireAleatoire, ça fait ce que j'attends):
- Code:
AppelTrajectoire:
LDA _rndseed
AND #$03
CMP #$00
BEQ Tir0
CMP #$01
BNE sauteTir1
JMP Tir1
sauteTir1:
CMP #$02
BNE sauteTir2
JMP Tir2
sauteTir2:
CMP #$03
BNE sauteTir3
JMP Tir3
sauteTir3:
RTS
Ce soir je m'y remets
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Merci pour les compliments pour l'intro de chuck, mais mon compère graphiste grostonton y est pour bcp .
Dans ton code y'a un truc qui n'est pas nécessaire .
Lors d'un operation pas besoin de faire de CMP #$00
Un BNE ou BEQ suffit .
Tu utilises quel compilateur ??
Dans ton code y'a un truc qui n'est pas nécessaire .
Lors d'un operation pas besoin de faire de CMP #$00
Un BNE ou BEQ suffit .
Tu utilises quel compilateur ??
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Oui, mes compliments à grostonton aussi s'il passe par là Les animations, les effets sur le texte, les scrollings, le choix des couleurs... vous avez fait un boulot génial !
OkDans ton code y'a un truc qui n'est pas nécessaire .
Lors d'un operation pas besoin de faire de CMP #$00
Un BNE ou BEQ suffit .
NESASM3... Tu penses à un problème de "compatibilité de syntaxe" dans ta routine ?Tu utilises quel compilateur ??
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Non, mais pour voir comment se déclare les variables, je pense que le soucis vient de là .
_rndseed doit être déclaré en ram (ou en ZP) sur 2 octets .
je pense que c'est comme ça
_rndseed WORD
Ou
.bss
_rdnseed: .ds 2
.code
_rndseed doit être déclaré en ram (ou en ZP) sur 2 octets .
je pense que c'est comme ça
_rndseed WORD
Ou
.bss
_rdnseed: .ds 2
.code
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
vincent2105 a écrit:@vingazole y'a moyen de voir quelquechose sur SMS ou autre ?
Voilà deux vidéos de nos projets en cours avec ichigobankai :
lost raider :
BOoM :
J'ai programmé lost raider en asm pur; ichigo a codé BOoM en C, j'ai du convertir pas mal de routines en asm une fois qu'elles avaient été mises au point (il faut dire qu'on utilisait le compilateur z88dk qui n'est pas vraiment un cheval de course ).
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Mr ToutLeMonde et la programmation NES...
Ah oui quand même ! Y'a 20 ans ça vous aurait rapporté un max, on aurait eu les pubs à la TV, les articles dans Player One et tout ! Génial là aussi !
Les chutes d'eau dans LostRaider, ce sont des tiles de background c'est ça ? En terme de difficulté c'est plus compliqué que de faire un "scrolling normal" ou pas ?
La première fois que j'ai vu ça c'était sur Super Mario Bros 2, j'arrêtais pas de repasser devant tellement je trouvais ça vivant !
Les chutes d'eau dans LostRaider, ce sont des tiles de background c'est ça ? En terme de difficulté c'est plus compliqué que de faire un "scrolling normal" ou pas ?
La première fois que j'ai vu ça c'était sur Super Mario Bros 2, j'arrêtais pas de repasser devant tellement je trouvais ça vivant !
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Je réponds un peu sur le tard .Tant qu'on parle "intimité, et toi Touko, comment t'est venu le virus ?
Un peu par hasard, je comptait faire du homebrew mais sur Md ou snes, j'ai rencontré par hasard l'ex gourou de l'assos retrotaku fan devant l'éternel de la pc-engine, et tout est parti de là .
Je dirai plus un cyclage de couleur qu'une anim à base de tile, très simple à faire .Les chutes d'eau dans LostRaider, ce sont des tiles de background c'est ça ? En terme de difficulté c'est plus compliqué que de faire un "scrolling normal" ou pas ?
c'est juste une rotation de X couleurs (celles de ta chute d'eau) dans la palette, on fait de superbes effets avec cette technique simple .
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Oui, c'est bien la bonne vieille méthode de la "rotation de palette"Je dirai plus un cyclage de couleur qu'une anim à base de tile, très simple à faire .Les chutes d'eau dans LostRaider, ce sont des tiles de background c'est ça ? En terme de difficulté c'est plus compliqué que de faire un "scrolling normal" ou pas ?
c'est juste une rotation de X couleurs (celles de ta chute d'eau) dans la palette, on fait de superbes effets avec cette technique simple .
J'ai bien fait de l'animation de tiles sur LOST RAiDER (pour animer les torches) mais c'est dans une version plus aboutie du programme que celle de la vidéo, par contre c'est un processus bien plus lourd à gérer (un changement de palette c'est un octet à modifier en VRAM alors qu'une simple tile de 8x8 pixels c'est 32 octets de VRAM à changer) !
Je précise que pour le clone de Bomberman mon binôme ichigobankai à créé (d'après des plans de furrtek) un multitap permettant de jouer à 4 joueurs simultanément
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Mr ToutLeMonde et la programmation NES...
Eh,eh, bah oui ..alors qu'une simple tile de 8x8 pixels c'est 32 octets de VRAM à changer) !
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Ca c'est le color cyling "actuel" des cascades visibles dans la vieille vidéo
et perso j'aime bcp cette technique, c'est léger et ca rend vivant un environnement :)
Ca c'est le proto du multitap sms (qui fonctionne évidemment) dont parlait Vingazole
j'ai modifié 2 petits trucs dans le code(asm) et plan de furrtek pour que ca fonctionne sur le hard
et perso j'aime bcp cette technique, c'est léger et ca rend vivant un environnement :)
Ca c'est le proto du multitap sms (qui fonctionne évidemment) dont parlait Vingazole
j'ai modifié 2 petits trucs dans le code(asm) et plan de furrtek pour que ca fonctionne sur le hard
Re: Mr ToutLeMonde et la programmation NES...
Ca claque bien qd même ..Ca c'est le color cyling "actuel" des cascades visibles dans la vieille vidéo
Pareil, tu peux faire bcp de trucs avec cette technique simple et peu consommatrice en CPU ...et perso j'aime bcp cette technique, c'est léger et ca rend vivant un environnement :)
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Je crois que le color cycling aurait sa place dans le topic https://www.gamopat-forum.com/t68638-le-genie-des-graphistes-des-annees-80
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Mr ToutLeMonde et la programmation NES...
vingazole a écrit:Je crois que le color cycling aurait sa place dans le topic https://www.gamopat-forum.com/t68638-le-genie-des-graphistes-des-annees-80
Quelqu'un pourrait nous faire un topo technique ?
Je précise que pour le clone de Bomberman mon binôme ichigobankai à créé (d'après des plans de furrtek) un multitap permettant de jouer à 4 joueurs simultanément
Quand je vois ce que vous êtes faites, ça me donne un bon coup de pied au cul, moi qui commence à m'endormir sur mon petit problème.
Vu la différence de compétences entre vous et moi, que mon métier n'a strictement rien à voir avec tout ça et que je découvre tout ça sur le tard, vous vous en rendez peut-être pas compte, mais je suis parfois vraiment largué.
Alors, faut que je me surpasse. C'est un peu "marche ou crève ! " , mais c'est ce qu'il faut pour réussir ! Au final, ça me donne l'envie de continuer, et je me rends compte que ça m'est bénéfique !
Dans la vie de tous les jours, j'ai pas l'occasion de de côtoyer des férus de programmation (asm qui plus est), alors merci d'être là et d'avoir partagé vos expériences !
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Super , ce post ! ultra novateur,
pckid- Infirmier
- Nombre de messages : 3753
Age : 47
Localisation : ile de france (94)
Date d'inscription : 29/09/2011
Re: Mr ToutLeMonde et la programmation NES...
vingazole a écrit:vincent2105 a écrit:@vingazole y'a moyen de voir quelquechose sur SMS ou autre ?
Voilà deux vidéos de nos projets en cours avec ichigobankai :
lost raider :
BOoM :
J'ai programmé lost raider en asm pur; ichigo a codé BOoM en C, j'ai du convertir pas mal de routines en asm une fois qu'elles avaient été mises au point (il faut dire qu'on utilisait le compilateur z88dk qui n'est pas vraiment un cheval de course ).
Hello Vingazole,
Quel est le meilleur compilateur pour la master system en C ? un Compilateur en C , permet il aussi d'ecrire en Asm ?
J'aime beaucoup les graphismes de Boom, on dirait ceux de la pc engine, c'est fou beaucoup plus beau que la version Nes.
pckid- Infirmier
- Nombre de messages : 3753
Age : 47
Localisation : ile de france (94)
Date d'inscription : 29/09/2011
Re: Mr ToutLeMonde et la programmation NES...
Là, pour une fois, je peux répondre pour mon cher binôme Vingazole ^^
donc en compilo C pour SMS, pour le moment il n'existe "officiellement" que Z88dk,
mais Vingazole a modifié SDCC (un compilo C Z80) pour qu'il prenne en charge notre bonne vieille Master System.
Et ce dernier est, d'après ces dires, vraiment bien. (niveau optimisation/génération de code en asm j'entends). Il est par contre beaucoup plus stricte au niveau du code en C que Z88 qui lui est assez permissif.
Quand Vin aura terminé de modifier/ajouter des choses dans cette lib, il la rendra publique.
Ensuite que ce soit dans Z88dk ou SDCC, tu peux mettre des blocs en ASM pure
(avec une petite variante au niveau de la déclaration néanmoins)
Pour BOoM que je l'ai codé initialement via Z88dk, Vingazole m'a converti certaines routines en ASM (z-order, transfert vram,...) car ce compilo, bien que sympa et accessible, est plutôt lourd/pas optimisé...
et sinon oui, j'ai pioché dans les versions pcengine pour recup des tiles, édités et modifiés pour qu'ils passent dans la Master System, que ce soit en taille de sprites ou nombre de couleurs.
Ces tiles là sont pour l'arène que j'ai baptisé "classic", et il y aura 5 autres arènes thématiques, basées sur l'univers SMS (que suis en train de faire)
donc en compilo C pour SMS, pour le moment il n'existe "officiellement" que Z88dk,
mais Vingazole a modifié SDCC (un compilo C Z80) pour qu'il prenne en charge notre bonne vieille Master System.
Et ce dernier est, d'après ces dires, vraiment bien. (niveau optimisation/génération de code en asm j'entends). Il est par contre beaucoup plus stricte au niveau du code en C que Z88 qui lui est assez permissif.
Quand Vin aura terminé de modifier/ajouter des choses dans cette lib, il la rendra publique.
Ensuite que ce soit dans Z88dk ou SDCC, tu peux mettre des blocs en ASM pure
(avec une petite variante au niveau de la déclaration néanmoins)
Pour BOoM que je l'ai codé initialement via Z88dk, Vingazole m'a converti certaines routines en ASM (z-order, transfert vram,...) car ce compilo, bien que sympa et accessible, est plutôt lourd/pas optimisé...
et sinon oui, j'ai pioché dans les versions pcengine pour recup des tiles, édités et modifiés pour qu'ils passent dans la Master System, que ce soit en taille de sprites ou nombre de couleurs.
Ces tiles là sont pour l'arène que j'ai baptisé "classic", et il y aura 5 autres arènes thématiques, basées sur l'univers SMS (que suis en train de faire)
Dernière édition par ichigobankai le Jeu 26 Juin 2014 - 8:55, édité 1 fois
Re: Mr ToutLeMonde et la programmation NES...
Super Ichigo, il faudrait que Vingazole , se rapproche de stef , afin de lui apporter la librairie sms, à mettre dans google code.
Bravo ! je vais tester tout cela.
Bravo ! je vais tester tout cela.
pckid- Infirmier
- Nombre de messages : 3753
Age : 47
Localisation : ile de france (94)
Date d'inscription : 29/09/2011
Re: Mr ToutLeMonde et la programmation NES...
Du bon boulot, car le résultat à l'écran est vraiment bluffant .et sinon oui, j'ai pioché dans les versions pcengine pour recup des tiles, édités et modifiés pour qu'ils passent dans la Master System, que ce soit en taille de sprites ou nombre de couleurs.
Ces tiles là sont pour l'arène que j'ai baptisé "classic", et il y aura 5 autres arènes thématiques, basées sur l'univers SMS (que suis en train de faire)
Je reviens au _rndseed .
_rndseed a une réservation mémoire pour 2 octets, mais rien ne t'empêche de lire _rndseed + 30 si tu veux .
Ca va taper dans un espace réservé (ou pas) d'une variable utilisée dans ton jeu, et donc avoir un certains côté aléatoire .
Tant que tu n'écris rien au dessus de _rndseed + 1 , tu n'as aucun soucis à te faire .
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
TOUKO a écrit:_rndseed a une réservation mémoire pour 2 octets, mais rien ne t'empêche de lire _rndseed + 30 si tu veux .
Ca va taper dans un espace réservé (ou pas) d'une variable utilisée dans ton jeu, et donc avoir un certains côté aléatoire .
Tant que tu n'écris rien au dessus de _rndseed + 1 , tu n'as aucun soucis à te faire .
Ok, j'ai une vision plus large sur la chose maintenant. Merci Pour la déclaration, j'ai parcouru nesdev, on peut faire de cette facon :
_rndseed . rs 2
Je sèche vraiment pour la routine srand...
A tout hasard, tu n'aurais pas une autre routine pour générer un nombre aléatoire (de 1 à 4 ou de 1 à 7 ou de 1 à 9 ou n'importe quoi mais que je puisse essayer autre chose), cette routine commence à me démoraliser.
Je ne dis pas que c'est la routine qui ne fonctionne pas, j'ai surement fait un truc de travers
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
je comprends pas ce qui te bloque dans la routine ???
Edit: tu peux essayer un inc _rndseed dans le NMI, et n'appeler la routine srand que dans ta boucle principale, qd tu en as besoins .
Ou sinon essayes ça :
http://codebase64.org/doku.php?id=base:6502_6510_maths
quasiment à la fin .
Oui elle marche, je l'utilise sur PCEJe ne dis pas que c'est la routine qui ne fonctionne pas, j'ai surement fait un truc de travers
Edit: tu peux essayer un inc _rndseed dans le NMI, et n'appeler la routine srand que dans ta boucle principale, qd tu en as besoins .
Ou sinon essayes ça :
http://codebase64.org/doku.php?id=base:6502_6510_maths
quasiment à la fin .
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Touko a écrit:Je comprends pas ce qui te bloque dans la routine ???
"Elle" me retourne systématiquement la trajectoire 0. (Je sais que c'est de ma faute hein )
J'ai essayé ça ne change rien, mais je confirme, j'ai trouvé un truc qui cloche dans mon codetu peux essayer un inc _rndseed dans le NMI, et n'appeler la routine srand que dans ta boucle principale, qd tu en as besoins .
Dans ton lien, j'ai pris cette routine (en rajoutant "A" après ASL sinon ça ne compilait pas):
- Code:
srand:
lda seed
beq doEor ;added this
asl A
bcc noEor
doEor: eor #$1d
noEor: sta seed
RTS
Et là, le ballon semble prendre à chaque frame une nouvelle trajectoire. (il part 2px à gauche, puis 2 à droite...)
Petite précision, pour l'instant, je n'appelle "srand" qu'à un seul endroit et je charge "seed" juste après (au début de ma routine TrajectoireAleatoire voir ci dessous)
- Code:
AppelTrajectoire:
JSR srand
LDA seed;
AND #$07
BNE sauteTir0
JMP Tir1
sauteTir0:
CMP #$01
BNE sauteTir1
JMP Tir1
sauteTir1:
CMP #$02
BNE sauteTir2
JMP Tir2
sauteTir2:
CMP #$03
BNE sauteTir3
JMP Tir3
sauteTir3:
CMP #$04
BNE sauteTir4
JMP Tir4
sauteTir4:
CMP #$05
BNE sauteTir5
JMP Tir5
sauteTir5:
CMP #$06
BNE sauteTir6
JMP Tir6
sauteTir6:
CMP #$07
BNE sauteTir7
JMP Tir7
RTS
Ma routine AppelTrajectoire est appelée dans la boucle principale. J'imagine qu'il faut que je ne l'appelle que soit au démarrage, soit lorsque le ballon arrive dans les bras du gardien. Faut que je créé une nouvelle routine que je placerai dans la boucle principale et qui branchera vers AppelTrajectoire qu'a certaines conditions . Je suis pas sur de mon coup, mais ça m'a l'air pas mal
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Aucune importance, il faut juste que les nombres soient les plus variés possible à chaque parties, si ça marche bien comme ça, changes pas .Ma routine AppelTrajectoire est appelée dans la boucle principale. J'imagine qu'il faut que je ne l'appelle que soit au démarrage, soit lorsque le ballon arrive dans les bras du gardien. Faut que je créé une nouvelle routine que je placerai dans la boucle principale et qui branchera vers AppelTrajectoire qu'a certaines conditions . Je suis pas sur de mon coup, mais ça m'a l'air pas mal
Non, juste que surement _rndseed n'est pas incrémenté à chaque frame ."Elle" me retourne systématiquement la trajectoire 0. (Je sais que c'est de ma faute hein )
Ou alors il est mis à zero à chaque fois quelque part .
Faut essayer de faire dans le NMI
inc _rndseed
bne pas_increm_high
inc _rndseed + 1
pas_increm_high:
Tu devrais essayer juste la routine seule sans rien d'autre dans ta boucle principale pour voir ce que ça donne.
EDIT: je pense avoir compris .
Donc faut que tu fasses le inc _rndseed dans le NMI, ensuite il faut appeler srand en début de la boucle du jeu, et tu stockes le reg A dans une variable style _Randm, car au retour de la fonction, il n'est pas stocké dans _rndseed, mais renvoyé dans le reg A .
Et c'est la variable _Randm que tu liras quand tu en auras besoin, ce qui permettra des nombre bcp plus aléatoire que d'appeler la fonction qd tu en as besoin .
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Touko a écrit:le ballon semble prendre à chaque frame une nouvelle trajectoire. (il part 2px à gauche, puis 2 à droite...)Aucune importance, il faut juste que les nombres soient les plus variés possible à chaque parties, si ça marche bien comme ça, changes pas .Ma routine AppelTrajectoire est appelée dans la boucle principale. J'imagine qu'il faut que je ne l'appelle que soit au démarrage, soit lorsque le ballon arrive dans les bras du gardien. Je suis pas sur de mon coup, mais ça m'a l'air pas mal
Le souci, c'est qu'en l'état, ça ne marche pas.
En fait le ballon se déplace verticalement en oscillant d'environ 2 px un coup à droite puis un coup à gauche au lieu de prendre une trajectoire complète.. Cela me fait penser que la routine "srand" fait bien ce qu'on attend d'elle mais que ma facon d'appeler une trajectoire puis de réinitialiser la position du ballon est foireuse. C'est pourquoi je disais :
Faut que je créé une nouvelle routine que je placerai dans la boucle principale et qui branchera vers AppelTrajectoire qu'a certaines conditions
Du coup, c'est un problème à ma portée je pense.
Là , en effet, la variable ne semble plus bloquée à 0. Je me retrouve dans la même situation que ci dessus(le ballon monte en "zigzaguant" de 2 px), comme si elle prenait une nouvelle trajectoire sans revenir à la position de départ.Touko a écrit:EDIT: je pense avoir compris .
Donc faut que tu fasses le inc _rndseed dans le NMI, ensuite il faut appeler srand en début de la boucle du jeu, et tu stockes le reg A dans une variable style _Randm, car au retour de la fonction, il n'est pas stocké dans _rndseed, mais renvoyé dans le reg A .
Et c'est la variable _Randm que tu liras quand tu en auras besoin, ce qui permettra des nombre bcp plus aléatoire que d'appeler la fonction qd tu en as besoin .
C'est sympa de ta part de venir à mon secours :)
Avec un petit effort de concentration, ça devrait aller ! Ne te dérange plus pour ce problème, j'aurais surement besoin de toi plus tard
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Pas de soucis, l'essentiel est que tu trouve une solution qui te convienne
oui c'est ce que je pense, il faut mettre un flag une foi que le choix de la trajectoire est fait ..En fait le ballon se déplace verticalement en oscillant d'environ 2 px un coup à droite puis un coup à gauche au lieu de prendre une trajectoire complète.. Cela me fait penser que la routine "srand" fait bien ce qu'on attend d'elle mais que ma facon d'appeler une trajectoire puis de réinitialiser la position du ballon est foireuse. C'est pourquoi je disais :
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Après une pause d'un mois et demi due à la reprise du boulot et d'un manque de temps libre (je suis buraliste), j'ai enfin pu trouver un moment pour me replonger dedans :)
Ca m'a fait du bien, j'ai résolu mon problème de "tirage aléatoire" avec une technique régulièrement employée sur NES (basée sur les inputs du joueur). On y voit que du feu.
J'ai pris la décision de ne garder que 3 trajectoires ou "tirs" : gauche, milieu, droite.
D'une part, les autres trajectoires ne paraissaient vraiment pas "naturelles", et la mise en place des différentes cadences me semblait bien plus laborieuses.
Du coup, je compte inclure 4 cadences de tir.
VitesseVerticale du ballon : 2,4,6 ou 8 pixels/frame
VitesseHorizont du ballon : 1,2,3 ou 4 pixels/frame pour les trajectoires "gauche" et "droite"
Et me voilà avec une nouvelle curiosité...
Concernant la variable "VitesseHorizontale" que j'utilise dans mes routines de tir ; lui attribuer une valeur autre que 1 ou qu'un multiple de 4 fait planter le jeu (seul le background s'affiche). Je précise que je n'ai pas ce problème avec la variable "VitesseVerticale". Je n'ai donc que les cadences 1 et 4.
Pour l'instant, je cherche et ça m'amuse
Ca m'a fait du bien, j'ai résolu mon problème de "tirage aléatoire" avec une technique régulièrement employée sur NES (basée sur les inputs du joueur). On y voit que du feu.
J'ai pris la décision de ne garder que 3 trajectoires ou "tirs" : gauche, milieu, droite.
D'une part, les autres trajectoires ne paraissaient vraiment pas "naturelles", et la mise en place des différentes cadences me semblait bien plus laborieuses.
Du coup, je compte inclure 4 cadences de tir.
VitesseVerticale du ballon : 2,4,6 ou 8 pixels/frame
VitesseHorizont du ballon : 1,2,3 ou 4 pixels/frame pour les trajectoires "gauche" et "droite"
Et me voilà avec une nouvelle curiosité...
Concernant la variable "VitesseHorizontale" que j'utilise dans mes routines de tir ; lui attribuer une valeur autre que 1 ou qu'un multiple de 4 fait planter le jeu (seul le background s'affiche). Je précise que je n'ai pas ce problème avec la variable "VitesseVerticale". Je n'ai donc que les cadences 1 et 4.
Pour l'instant, je cherche et ça m'amuse
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Raah c'est cool que tu continues .
Si tu veux poster le code de ta variable horizontale, on pourrait essayer de voir ce qui cloche .
tu as peut être une boucle infinie, ou un truc du genre .
Si tu veux poster le code de ta variable horizontale, on pourrait essayer de voir ce qui cloche .
tu as peut être une boucle infinie, ou un truc du genre .
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Me revoilà pour ma piqûre mensuelle
Bien qu'ayant toujours aussi peu de temps à consacrer, j'essaie de garder le cap.
Merci Touko d'être fidèle au poste J'ai réussi il y a quelque temps à résoudre le problème.
J'ai décidé de laisser tomber le foot pour le tennis.
Cela va me permettre de faire un jeu aussi "amusant" seul qu'à deux.
Par pure flemme, je n'ai pas encore créé les sprites des tennismen, mais y'aura bien des raquettes...
Donc 3 positions possibles pour chaque joueur (gauche, milieu, droite), et autant de trajectoires possibles à partir de chacune de ces positions.
Du coup, la "gestion des collisions" est des plus simples.
Actuellement, je me creuse la tête sur la routine permettant de choisir quelle trajectoire choisir en fonction de la position du joueur. Je posterai le code si je coince vraiment
Merci pour votre intérêt
Bien qu'ayant toujours aussi peu de temps à consacrer, j'essaie de garder le cap.
Merci Touko d'être fidèle au poste J'ai réussi il y a quelque temps à résoudre le problème.
J'ai décidé de laisser tomber le foot pour le tennis.
Cela va me permettre de faire un jeu aussi "amusant" seul qu'à deux.
Par pure flemme, je n'ai pas encore créé les sprites des tennismen, mais y'aura bien des raquettes...
Donc 3 positions possibles pour chaque joueur (gauche, milieu, droite), et autant de trajectoires possibles à partir de chacune de ces positions.
Du coup, la "gestion des collisions" est des plus simples.
Actuellement, je me creuse la tête sur la routine permettant de choisir quelle trajectoire choisir en fonction de la position du joueur. Je posterai le code si je coince vraiment
Merci pour votre intérêt
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Mission accomplie ! Faudra quand même que je vérifie que ça fonctionne sur ma NES.
Vu que je suis reparti de zéro, j'ai quelques trucs à rajouter (menu, tirage aléatoire, affichage du score avec des tiles de background etc) avant d'attaquer les 2 modes de jeu (1 ou 2 joueurs).
J'ouvre une grosse parenthèse concernant l'aspect graphique. C'est un peu prématuré, mais parfois j'aime bien laisser le code de côté pour me pencher sur autre chose.
Il y a quelques jours, je me suis aperçu que l'on pouvait utiliser des sprites de taille 8x16. Il s'agirait de la combinaison de 2 tiles 8x8 (Leur position dans la bank de tiles ayant une certaine importance).
Quel intérêt ? La surface des objets animés passe du simple au double !
Bref, j'ai trouvé ce qui suit, malgré tout cela reste flou... Je poursuis mes recherches.
Edit : Je pense avoir trouvé la réponse. A vérifier...
Vu que je suis reparti de zéro, j'ai quelques trucs à rajouter (menu, tirage aléatoire, affichage du score avec des tiles de background etc) avant d'attaquer les 2 modes de jeu (1 ou 2 joueurs).
J'ouvre une grosse parenthèse concernant l'aspect graphique. C'est un peu prématuré, mais parfois j'aime bien laisser le code de côté pour me pencher sur autre chose.
Il y a quelques jours, je me suis aperçu que l'on pouvait utiliser des sprites de taille 8x16. Il s'agirait de la combinaison de 2 tiles 8x8 (Leur position dans la bank de tiles ayant une certaine importance).
Quel intérêt ? La surface des objets animés passe du simple au double !
Bref, j'ai trouvé ce qui suit, malgré tout cela reste flou... Je poursuis mes recherches.
The NES has two different sprite modes:
8x8 Sprites - These use only the set of 8x8 tiles that are designated for use with sprites in the program.
8x16 Sprites - Each one of these is drawn using two tiles from one set above, and are described a bit more below. One only needs to worry about it if there are more than 64 8x8 sprites on screen in one's mockup.
8x16 Sprites Continued:
Sprites with an even tile number use the first set of tiles in memory. The top half (8x8) of the sprite uses the tile specified from the first set. The bottom half (8x8) of the sprite uses the tile whose number is one greater than the tile specified from the first set.
Sprites with an odd tile number use the second set of tiles in memory. The top half (8x8) of the sprites uses the tile specified from the second set (technically one less than the tile specified). The bottom half (8x8) of the sprite uses the tile whose number is one greater than the tile specified from the second set.
What does this mean? One HAS to dedicate two tiles to every sprite when using 8x16 sprites. So each time you want a different 8x8 projectile in a game that uses 8x16 sprites, you have to waste the tile next to it by making it entirely transparent.
Edit : Je pense avoir trouvé la réponse. A vérifier...
sprites are either 8x8 or 8x16 (this depends on bit 6 of the PPU control register mapped to memory address 0x2000 in the CPU's address space)
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Bah ça avance, bon j'ai pété de rire quand j'ai vu le changement de sport, mais ça reste du tout bon
Invité- Invité
Page 3 sur 34 • 1, 2, 3, 4 ... 18 ... 34
Sujets similaires
» Programmation CPS-1
» Programmation sur Saturn
» La programmation Megadrive
» LES COURS DE PROGRAMMATION DE GAMOPAT
» Mr ToutLeMonde et la programmation NES...
» Programmation sur Saturn
» La programmation Megadrive
» LES COURS DE PROGRAMMATION DE GAMOPAT
» Mr ToutLeMonde et la programmation NES...
Page 3 sur 34
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum