GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

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 9 sur 34 Précédent  1 ... 6 ... 8, 9, 10 ... 21 ... 34  Suivant

Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Ven 8 Avr 2016 - 22:09

Ah ok donc il faut ajouter 32 octets à ton pointeur à chaque octets copié

Code:
LDX #$1E              ; copy 30 bytes[size=13][/size]
  
DrawColumnLoop:
  LDA [sourceLow]
  STA $2007

; On passe à l'octet suivant de la colonne
  lda  #32
  clc
  adc  sourceLow
  sta  sourceLow
  lda  sourceLow + 1
  adc  #00
  sta  sourceLow + 1
  
  dex
  bne DrawColumnLoop
 
  rts

L'idéal serrait d'avoir les octets de la colonne alignés dans ton fichier (je fais ça sur PCE) .

Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Ven 8 Avr 2016 - 22:46

t'as oublié ce qui concerne le registre Y non ? 

Et pour  :

 adc #00
 sta sourceLow + 1

tu veux dire adc #01 non ?

Après je trouve bizarre d'incrémenter sourceLow+1 à chaque tour de boucle... je pensais plutot qu'il fallait le faire qu'une fois sur 8 (256/32=8)



touko a écrit:L'idéal serrait d'avoir les octets de la colonne alignés dans ton fichier (je fais ça sur PCE) .
j'avais pas vu que t'avais édité... oui l'idéal ca serait que je puisse convertir les NT que je crée sur NES screen tool... mais je ne connais pas d'autre langage de prog, faudra surement que je m'y mette !
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Stef Sam 9 Avr 2016 - 11:15

C'est bien adc #0 qu'il faut, c'est justement pour gérer le fait que lorsqu'on a une retenue sur la première addition alors on augmente sourceLow+1 de 1 (et seulement dans ce cas là)
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Sam 9 Avr 2016 - 11:47

j'avais pas vu que t'avais édité... oui l'idéal ca serait que je puisse convertir les NT que je crée sur NES screen tool... mais je ne connais pas d'autre langage de prog, faudra surement que je m'y mette !

Je trouve ça incroyable , tu ne connais que l'asm 6502 ? eh ben si c'est le cas chapeau , parce que en général on connaît plein d'autre langage sauf l'asm  Mr. Green
D'un coter c'est un peu handicapant de connaître que l'asm , faire ces propre tool me semble indispensable quelque fois.
avatar
Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Sam 9 Avr 2016 - 12:58

Merci pour l'explication stef 😄

Kannagi, jusque là, j'ai jamais ressenti le besoin de créer des tools puisque tout ce que je fais reste très basique, et surtout très peu développé (donc peu de taches répétitives). Mais à moyen terme en effet, je pense que ça sera indispensable. Wink
Comme tu l'as relevé, je ne connais pas d'autres langages de prog, mais si je dois passer du temps sur un autre langage pour me créer des tools, alors je souhaiterai qu'il puisse aussi me servir à autre chose : programmer la gamecube par exemple  Mr. Green Mr ToutLeMonde et la programmation NES... - Page 9 517947 (en C j'imagine ?) Je précise que concevoir n'est pas une finalité pour moi, j'ai juste envie de découvrir.

Dans tous les cas, je n'attaquerai pas avant d'avoir fait ce que je voulais en matière de scrolling, je pense que je suis près du but...
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Sam 9 Avr 2016 - 15:29

Oui c est adc #00
J ai rien optimiser pourque tu comprennes ce que j ai fait.
Je mettrai une version un peut optimisée tu gagneras une dizaine de cycles par boucle.
avatar
Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Sam 9 Avr 2016 - 16:11

Bon je dois merder quelque part dans le tuto, mais je vais me retrousser les manches et t'épargner les 300 lignes de codes Mr. Green
Par contre, dans ton code, il y a un p'tit truc qui cloche non ? je suppose que les crochets sont de trop ?

Code:
DrawColumnLoop:
  LDA [sourceLow]    ; ???
  STA $2007
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Sam 9 Avr 2016 - 21:16

Non les crochets  sont bons.
avatar
Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Sam 9 Avr 2016 - 21:28

J'utilise NESASM3 comme assembleur et j'obtiens : "incorrect addressing mode"  Confused
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Sam 9 Avr 2016 - 21:42

Il prend  peut être des parenthèses  à la place  des crochets.
Si lda [sourceLow],y marche ça devrait  marcher aussi.
avatar
Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Sam 9 Avr 2016 - 22:09

LDA [sourceLow],y marche pourtant...

Avec LDA (sourceLow),  dans le debugger j'ai ca :
$C1EE:AD 06 00  LDA $0006 = #$10
tandis qu'avec LDA sourceLow ,  dans le debugger j'ai ca :
$C1EE:AD 06 00  LDA $0006 = #$B0

Le fait de rajouter des parenthèses a bien une incidence mais comment savoir si les parenthèses remplacent bien les crochets ? c'est difficile à dire, d'autant que je ne suis vraiment pas sûr qu'il n'y ait pas d'autres portions de codes à modifier dans le tuto Mr. Green

J'ai l'impression que le scrolling c'est pas pour ce soir  MDR
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Dim 10 Avr 2016 - 9:30

La je suis en vacances lol je ai pas mon pc à portée  de main donc c'est est pas facile  pour  écrire  de long messages. 
Peut  être  que ce mode de adressage  ne est pas supporté.
avatar
Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par nemokantio Dim 10 Avr 2016 - 10:10

Heu, je viens d'essayer de m'initier au 6502 avec ce petit site : http://skilldrick.github.io/easy6502/

J'ai essayé de comprendre les adressages LDA ($NN,X) et LDA ($NN),Y.
C'est peut être ça votre souci.
Il faut en page zero stocker un pointeur, par exemple en $0001 (poids faible) et $0002 (poids fort).
Exemple : $0001 : SourceLow, et $0002 : SourceHigh
Puis faut passer par LDA ou STA ($01),Y pour se servir du pointeur.
STA ($01),Y veut dire : stocker contenu registre A à l'adresse stockée en page zero en $0001 (qui est SourceHigh:SourceLow) et au déplacement Y par rapport à cette adresse.

Hum, je ne sais pas si je suis clair...
Mr. Green
avatar
nemokantio
Patient contaminé

Masculin Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Dim 10 Avr 2016 - 10:32

touko a écrit:je ai pas mon pc à portée  de main donc c'est est pas facile  pour  écrire
effectivement  MDR bonnes vacances Touko Wink
De toute facon, faut que je me penche sur autre chose là (ouvrir/lire le fichier bin du tuto, et le fichier nam de mon utilitaire pour voir les différences)
nemokantio a écrit:J'ai essayé de comprendre les adressages LDA ($NN,X) et LDA ($NN),Y.
C'est peut être ça votre souci.
Il faut en page zero stocker un pointeur, par exemple en $0001 (poids faible) et $0002 (poids fort).
Exemple : $0001 : SourceLow, et $0002 : SourceHigh
Puis faut passer par LDA ou STA ($01),Y pour se servir du pointeur.
STA ($01),Y veut dire : stocker contenu registre A à l'adresse stockée en page zero en $0001 (qui est SourceHigh:SourceLow) et au déplacement Y par rapport à cette adresse.

Hum, je ne sais pas si je suis clair...

Merci de te pencher sur le problème 😄 En fait la routine du tuto fonctionne parfaitement, je souhaite la modifier car le registre Y (8bits) ne me permet pas d'atteindre des adresses suffisamment éloignées. Grossièrement ca fonctionnerait si je pouvais faire LDY #$3A0, vu qu'on est limité à #$FF c'est pas possible, c'est pour cela qu'on ne ne peut utiliser ce mode d'adressage  Confused
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Dim 10 Avr 2016 - 10:38

J écris avec mon téléphone et j ai horreur de ça on voit rien.lol
Sinon tu peux utiliser 
lda [tabLow], Y
avec Y toujours egal a 0, tu fais un ldy =0 en dessous du ldx et tu y touches plus.
je pense que la syntaxe entre l indirect et l indirect indexé ne doit pas être la même sur ton assemleur.
avatar
Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par nemokantio Dim 10 Avr 2016 - 10:49

Dans ce cas, quand ton registre Y arrive à 255, tu dois le mettre à zéro et incrémenter le poids fort de ton pointeur en page zéro.
Celui qui est utilisé quand tu fais LDA (sourcelow),Y
Si ton pointeur en page zero vaut $0200.
Tu fais les 256 premiers octets avec LDA (sourcelow),Y
Y arrive au bout, il revient à zéro, tu passes le pointeur à $0300 et tu recommences.
Bon, si tu as a traiter un nombre d'octets qui n'est pas multiple de 256, faudra tester de manière plus fine pour l'arrêt des boucles.

Ou alors, tu gardes Y à zero, et tu incrementes systématiquement ton pointeur, d'abord le poids faible puis le poids fort si il y a une retenue...
Attends, je crois que c'est ce que fait ta routine à la base.
Donc tu dois mettre : LDA (sourcelow),Y
Et Y doit être à zéro.
sourcelow est bien une adresse en page zero, qui contient l'adresse 16 bits avec laquelle tu travailles.
sourcelow poids faible, et sourcelow+1 poids fort.
avatar
nemokantio
Patient contaminé

Masculin Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Dim 10 Avr 2016 - 11:16

touko a écrit:lda [tabLow], Y
avec Y toujours egal a 0, tu fais un ldy =0 en dessous du ldx et tu y touches plus.
oui j'avais essayé, et effectivement on chargeait encore une valeur différente (si on compare aux adressages (sourceLow) ou sourceLow... Je pense aussi que c'est la solution (et je viens de voir que nemokantio propose la même chose dans le second paragraphe de son dernier post Wink  )mais vu que  je n'obtenais pas le resultat escompté,  je préfère reprendre tout le tuto depuis le début...   
En page zero, j'ai : 
sourceLow  .rs 1  
sourceHigh .rs 1
Vu les modifs apporté par touko, je ne pense pas que le fait que sourceLow soit sur 8 bits soit un problème, je me trompe ? 

Merci à vous Wink faut vraiment que je décortique mieux le tuto je pense, j'ai voulu aller vite en besogne :p

Pour les curieux, le code du tuto:
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par nemokantio Dim 10 Avr 2016 - 11:43

vincent2105 a écrit:
touko a écrit:lda [tabLow], Y
avec Y toujours egal a 0, tu fais un ldy =0 en dessous du ldx et tu y touches plus.
oui j'avais essayé, et effectivement on chargeait encore une valeur différente (si on compare aux adressages (sourceLow) ou sourceLow... Je pense aussi que c'est la solution (et je viens de voir que nemokantio propose la même chose dans le second paragraphe de son dernier post Wink  )mais vu que  je n'obtenais pas le resultat escompté,  je préfère reprendre tout le tuto depuis le début...   
En page zero, j'ai : 
sourceLow  .rs 1  
sourceHigh .rs 1
Vu les modifs apporté par touko, je ne pense pas que le fait que sourceLow soit sur 8 bits soit un problème, je me trompe ?
C'est normal, tu prévois de stocker une adresse 16 bits en page zero, en deux parties poids faible et poids fort : sourcelow et sourcehigh (donc réservation de deux octets).
C'est pour pouvoir se servir de l'adressage (sourcelow),Y
(indexé indirect ou indirect indexé sais plus)
avatar
nemokantio
Patient contaminé

Masculin Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Dim 10 Avr 2016 - 11:58

Oui donc on est d'accord, y'a pas de boulette de ce coté la ! Me connaissant ça aurait pu  Mr. Green 
Je demandais juste confirmation vu que le plus souvent je déclare mes pointeurs directement sur 2 octets comme ça : 
zp_pointeur .rs 2  

Donc je récapitule...
en déclarant dans cet ordre : 
sourceLow  .rs 1  
sourceHigh .rs 1
le fait de faire :
STA sourceLow+1
revient bien à :
STA sourceHigh
C'est capital que je comprenne bien puisque sourceLow et sourceHigh sont appelés a divers endroits du programme
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par nemokantio Dim 10 Avr 2016 - 12:10

C'est tout aussi valable de les déclarer directement sur deux octets.
Oui sourcelow+1 et sourcehigh, c'est la même chose.
Et sourcehigh-1 c'est sourcelow !
Wink 

C'est une question de lisibilité après.
Par contre, faut bien penser au fait que d'abord c'est le poids faible, et ensuite le poids fort.
En Z80, moi même je me prends souvent les pieds dans le tapis la dessus !

Mais dans ton cas, c'est selon moi l'adressage indexé indirect/indirect indexé qui est le plus délicat, avec les adresses à stocker en page zéro.
avatar
nemokantio
Patient contaminé

Masculin Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vingazole Dim 10 Avr 2016 - 12:53

nemokantio a écrit:Par contre, faut bien penser au fait que d'abord c'est le poids faible, et ensuite le poids fort.
En Z80, moi même je me prends souvent les pieds dans le tapis la dessus !.
Eh oui, c'est du little endian Wink

vingazole
vingazole
Infirmier

Masculin Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par nemokantio Dim 10 Avr 2016 - 13:17

Mr. Green
Je préfère joe l'endian !
avatar
nemokantio
Patient contaminé

Masculin Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Dim 10 Avr 2016 - 15:06

Pour ceux qui chercheraient, je viens de m'apercevoir que l'algorithme est incomplet, c'est certain.  Mr. Green

Quand la boucle est terminée pour la copie des 30 tiles formant une colonne verticale, et donc pour copier la colonne suivante, il faut  incrémenter Y  puis récuperer la valeur initiale sourceLow pour ensuite pouvoir reprendre la boucle avec [sourceLow], y. 
Edit : en fait c'est encore plus compliqué que ca  pale
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par nemokantio Dim 10 Avr 2016 - 17:58

Si j'ai bien compris, tu veux scroller horizontalement en allant vers la droite (scrolling part à gauche), et alimenter ton scroll, injecter la colonne de tuiles sur la droite, en puisant dans un fichier/tableau qui représente un écran de 32x30 tiles.
Après avoir scrollé de 32 tuiles, ton nouvel écran devrait correspondre à ton fichier.
C'est bien ça ?

Le tableau est stocké en lignes.
La première colonne affichée à droite en scrollant de 8 pixels va être la première à gauche de ton tableau.
C'est à quoi sont initialisés sourcelow et sourcehigh.
Donc pour aller chercher la tuile en dessous, tu fais +32 dans une boucle de 30, jusque là ça va.
Une fois que tu a affiché une colonne, tu t'es bien décalé de 1.
La deuxième colonne à afficher à droite après avoir scrollé de 16 pixels va être la deuxième du tableau.
Donc à sourcelow+1 selon moi.
Effectivement, tu peux te servir du registre y et l'incrémenter pour aller chercher les autres colonnes.
Tu continues la même boucle de 30 (avec le +32).

Ca devrait fonctionner mais tu ne peux scroller que sur deux écrans comme ça.

EDIT : si sourcelow/sourcehigh ne sont pas alignés sur 256, il faut faire autrement pour aller pointer sur les autres colonnes du tableau de tiles.
Il faut oublier le registre Y (le laisser à zero), et incrémenter de 1 sourcelow, en veillant à transférer une éventuelle retenue sur sourcehigh.
avatar
nemokantio
Patient contaminé

Masculin Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Dim 10 Avr 2016 - 21:44

nemokantio a écrit:Si j'ai bien compris, tu veux scroller horizontalement en allant vers la droite (scrolling part à gauche), et alimenter ton scroll, injecter la colonne de tuiles sur la droite, en puisant dans un fichier/tableau qui représente un écran de 32x30 tiles.
Après avoir scrollé de 32 tuiles, ton nouvel écran devrait correspondre à ton fichier.
C'est bien ça ?

Le tableau est stocké en lignes.
La première colonne affichée à droite en scrollant de 8 pixels va être la première à gauche de ton tableau.
C'est à quoi sont initialisés sourcelow et sourcehigh.
Donc pour aller chercher la tuile en dessous, tu fais +32 dans une boucle de 30, jusque là ça va.

C'est tout à fait ça :)

nemokantio a écrit:Une fois que tu a affiché une colonne, tu t'es bien décalé de 1.
La deuxième colonne à afficher à droite après avoir scrollé de 16 pixels va être la deuxième du tableau.
Donc à sourcelow+1 selon moi.
Là par contre il me semble bien que sourceHigh a été incrémenté 3 fois après les 30 répétitions. Je pense donc qu'il faut que sourceHigh retrouve la valeur qu'il avait au départ, sinon au lancement de la boucle pour la seconde colonne, on ne récupèrerait pas la seconde valeur du tableau. Je me trompe ?
Nemokantio a écrit:Effectivement, tu peux te servir du registre y et l'incrémenter pour aller chercher les autres colonnes.
Tu continues la même boucle de 30 (avec le +32).

Ca devrait fonctionner mais tu ne peux scroller que sur deux écrans comme ça.
Je pense qu'avec sourceHigh, je peux aller bien plus loin non ? Mes nametables sont les unes à la suite des autres en mémoire. 
tab_0: (960 octets)   $0000
tab_1: (960 octets)   $03c0
tab_2: (960 octets)   $0780
tab_3: (960 octets)   $0b40
tab_4: (960 octets)   $0f00
tab_5: (960 octets)   $12c0
tab_6: (960 octets)   $1680
etc
Après je dis p'tet des aneries  Mr. Green
nemokantio a écrit:EDIT : si sourcelow/sourcehigh ne sont pas alignés sur 256, il faut faire autrement pour aller pointer sur les autres colonnes du tableau de tiles.
Il faut oublier le registre Y (le laisser à zero), et incrémenter de 1 sourcelow, en veillant à transférer une éventuelle retenue sur sourcehigh.

qu'entends tu par "si sourcelow/sourcehigh ne sont pas alignés sur 256"


Merci encore pour ton aide, ca fait plaisir de discuter Wink
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par nemokantio Dim 10 Avr 2016 - 22:21

A la fin d'une boucle d'affichage de colonne, tu devrais soustraire 960 (car tu as du ajouter 32 30 fois) à ton pointeur source.
(sur 6502 cela signifie une soustraction 16 bit décomposée en poids faible/poids fort)
sec
lda sourcelow
sbc 192 ; poids faible 960
sta sourcelow
lda sourcehigh
sbc 3 ; poids fort 960
sta sourcehigh
J'ai piquée la soustraction sur internet, suis pas habitué au 6502.
Mr. Green
Ou alors tu restitues le pointeur à partir d'une copie.
lda sauvesourcelow
sta sourcelow
lda sauvesourcehigh
sta sourcehigh

Comme ça tu peux passer à l'incrémentation pour la prochaine colonne.
Aligné à 256, cela signifierait que sourcelow est à zero.
Mais il vaut mieux je pense que tu incrémentes de façon classique:
clc
lda sourcelow
adc #1
sta sourcelow
lda sourcehigh
adc #0
sta sourcehigh
Cette addition j'y suis plus habitué même sur z80
Wink 

Donc là tu passes bien à la prochaine colonne.
Pour les autres écrans, ta méthode t'oblige à tester quand tu as scrollé d'un écran, pour modifier sourcelow et sourcehigh en ajoutant 960...
(cette décomposition systématique en deux octets me déstabilise un peu alors je suis pas très clair)


Dernière édition par nemokantio le Lun 11 Avr 2016 - 19:08, édité 1 fois
avatar
nemokantio
Patient contaminé

Masculin Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Dim 10 Avr 2016 - 22:54

"Restituer le pointeur à partir d'une copie", j'en étais aussi arrivé à cette solution sur le papier... 

nemokantio a écrit:Pour les autres écrans, ta méthode t'oblige à tester quand tu as scrollé d'un écran, pour modifier sourcelow et sourcehigh en ajoutant 960...
(cette décomposition systématique en deux octets me déstabilise un peu alors je suis pas très clair)



La aussi tu confirmes ce que j'avais dans l'idée, je mettrai tout ca en place dès que j'aurais un peu de temps, merci pour ton aide nemokantio  thumleft
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Mer 13 Avr 2016 - 14:25

Bonjour à tous,

Petite question : je souhaiterais lire le fichier .nam  généré par l'utilitaire Nes Screen Tools (qui me permet de créér des backgrounds).
Sous notepad++ par défaut si j'ouvre un fichier .nam, j'obtiens ça :
Spoiler:
Alors que je j'attends plutot quelquechose comme ça :
Spoiler:
La seule solution que j'ai pu trouver sur le net serait de télécharger un logiciel et vu la traduction des descriptifs, j'ai moyennement confiance...
Quelqu'un pourrait il me conseiller ? Merci Wink
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Mer 13 Avr 2016 - 14:47

Non a mon avis c'est un fichier binaire tout simplement Wink
A mon avis tu dois faire un .incbin pour l'inclure.
Editeur hexadécimale et normalement ton meilleur partenaire , surtout si tu prog en asm Razz
avatar
Invité
Invité


Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par vincent2105 Mer 13 Avr 2016 - 15:15

C'est exact, je fais un .incbin pour l'inclure

C'est bon, mon émulateur intègre un éditeur hexadecimal, j'ai retrouvé la nametable en question... j'ai plus qu'à me mettre au C pour réorganiser selon mes besoins ! Mr ToutLeMonde et la programmation NES... - Page 9 435303

Merci Kannagi Wink (et félicitations au passage pour ton utilisation du mode 7 Wink  )
vincent2105
vincent2105
Patient incurable

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

Revenir en haut Aller en bas

Mr ToutLeMonde et la programmation NES... - Page 9 Empty Re: Mr ToutLeMonde et la programmation NES...

Message par Invité Mer 13 Avr 2016 - 16:26

C'est cool que cela marche ^^
Surtout que incbin j'étais pas trop sur , cela ne marche pas avec tout les assembleurs , tu utilise quel assembleur d'ailleurs j'imagine CA65 ?
Le C ou un autre langage , j'ai l'impression que pas mal de monde font leur tools en python.

Merci pour le mode 7 Razz
avatar
Invité
Invité


Revenir en haut Aller en bas

Page 9 sur 34 Précédent  1 ... 6 ... 8, 9, 10 ... 21 ... 34  Suivant

Revenir en haut

- Sujets similaires

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