Logicielsmoto.com
http://www.logicielsmoto.com/phpBB/

Debut en asm sur TO8
http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=571
Page 6 sur 19

Auteur:  Samuel Devulder [ 16 Jan 2020, 00:54 ]
Sujet du message:  Re: Debut en asm sur TO8

Il faut faire plusieurs binaires. Un par bank. Débutant en $A000. Ensuite en basic tu fais "BANK no:LOADM "binaire-no.bin" (no un nombre indiquant le numéro de bank).

En gros du as des binaires de data. Un par bank, et un binaire de code. Le basic charge tout ca et saute via EXE dans le point d'entrée du binaire de code. Ensuite en ASM c'est à toi de faire les commutations pour récupérer les data.

Attention toute fois, perso j'ai toujours trouvé cet exercice assez casse-gueule car il n'y a pas grand chose pour débugger quand ca marche mal, et que finalement c'est vachement plus lent. Mieux vaut dans un 1er temps avoir le max de chose qui n'ont pas besoin des bank et les réserver aux choses qu'on utilise pas souvent comme l'intro par exemple.

Auteur:  adnz [ 16 Jan 2020, 01:22 ]
Sujet du message:  Re: Debut en asm sur TO8

bon j'ai trouvé ce moyen apparement, faut que je test

ORG $7300
...
big_pac_1 EQU $B000
...
END


ORG $B000 *debut table big_pac_1
FCB $00,$00,$00,$00,$00,$00,$00,$02
FCB $02,$02,$02,$02,$22,$22,$22,$22

Auteur:  adnz [ 16 Jan 2020, 04:11 ]
Sujet du message:  Re: Debut en asm sur TO8

arrg ! impossible de lire le 2eme FDB ! le premier je le lie, mais j'arrive pas a faire un +1, +2 !

Code:
LDY big_pac_anim         * ici ç'a pointe bien sur le bon graphisme big_pac_1
LDY big_pac_anim+1    * ici ça foire !?

...

big_pac_anim
            FDB big_pac_1
            FDB big_pac_2
            FDB big_pac_3
            FDB big_pac_2

Auteur:  Samuel Devulder [ 16 Jan 2020, 08:51 ]
Sujet du message:  Re: Debut en asm sur TO8

Tu veux dire quoi par "ca foire" ? déjà ton LDY label+1 est étrange. "Y" étant 16bits, je comprends que par LDY label tu veux charger les valeurs aux adresses label et lable+1 dans Y, mais que veux tu faire alors avec label+1 ? label+2 je comprendrais, mais label+1 me semble étrange. A moins que tu ne voulais faire LDY #label+1.

L'intention de ton code n'est pas assez claire pour que je te réponde.

Auteur:  adnz [ 16 Jan 2020, 11:45 ]
Sujet du message:  Re: Debut en asm sur TO8

ok dac, désolé c'été pas très clair !

Avant d'appeler la routine d'affichage de sprite (JSR display_sprite), je dois charger Y : LDY #debut_du_tableau_FCB_du_sprite

exemple : LDY #big_pac_1 ;ecrit comme cela ça marche, je vois bien mon sprite big_pac_1
ou : LDY #big_pac_2 ;ecrit comme cela ça marche, je vois bien mon sprite big_pac_2

Donc, je me suis dis je vais faire un tableau contenant l'ordre des sprites sur lequel je boucle.
Code:
big_pac_anim
            FDB big_pac_1
            FDB big_pac_2
            FDB big_pac_3
            FDB big_pac_2


pour pouvoir faire :

LDY #big_pac_anim (ici je pensais que c'été comme si LDY #big_pac_1)
puis
LDY #big_pac_anim+1 (et ici je pensais que c'été comme si LDY #big_pac_2)

Auteur:  Samuel Devulder [ 16 Jan 2020, 11:56 ]
Sujet du message:  Re: Debut en asm sur TO8

Non il faut faire "LDY big_pac_anim" pour avoir big_pac_1 dans Y. Il n'y a pas de # là dedans.

Ensuite la 2eme valeur n'est pas à big_pac_anim+1, mais big_pac_anim+2 puisque les adresses sont sur 16bits (FDB).

Ce que tu veux probablement faire c'est un truc genre:
Code:
init:
  LDU #big_pac_anim
  ...
  ...plus loin dans la boucle principale...
  LDY ,U++
  CMPU #big_pac_anim_fin
  BNE suite
  LDU #big_pac_anim
suite:
  ..suite du programme..
  ...
big_pac_anim:
  FDB big_pac_1
  FDB big_pac_2
  FDB big_pac_3
  FDB big_pac_2
big_pac_anim_fin:

Auteur:  adnz [ 16 Jan 2020, 11:58 ]
Sujet du message:  Re: Debut en asm sur TO8

ha oui désolé faute de frappe
je fais bien LDY big_pac_anim
sans le #
-------------------------

donc si en dur je mets LDY big_pac_anim+2

ça devrais être comme si LDY #big_pac_2

?

Auteur:  adnz [ 16 Jan 2020, 12:13 ]
Sujet du message:  Re: Debut en asm sur TO8

bon bah, ça marche là.
fallait faire +2 , +4 etc...

j'men doutais un peu car dans la doc vu que j'ai vu FDB 16bit donc 2 octets. !

Auteur:  adnz [ 16 Jan 2020, 13:37 ]
Sujet du message:  Re: Debut en asm sur TO8

juste que je comprennent bien !

si on defini U (LDU #qqchose)
et ensuite on touche à A ou B (LDA #2 ou LDB #2 pour faire des CMPA etc...)
U n'est plus le même ?

Donc on dois PSHS U
faire les manip avec A, B
puis pour récupérer mon U d'origine
je PULS U ?

est ce que le raisonnement est correct ?

Auteur:  Samuel Devulder [ 16 Jan 2020, 14:08 ]
Sujet du message:  Re: Debut en asm sur TO8

adnz a écrit:
juste que je comprennent bien !

si on defini U (LDU #qqchose)
et ensuite on touche à A ou B (LDA #2 ou LDB #2 pour faire des CMPA etc...)
U n'est plus le même ?

Ben non, pourquoi? Si on ne touche pas un registre, il garde sa valeur.

Auteur:  adnz [ 16 Jan 2020, 15:26 ]
Sujet du message:  Re: Debut en asm sur TO8

ha zut, ok j'ai cafouillé avec le registre D !!
c'est pour ça que je parlais de A et B !

désolé, c'est que l'assembleur fait chauffer le cerveau :tourne:

Auteur:  Samuel Devulder [ 16 Jan 2020, 17:04 ]
Sujet du message:  Re: Debut en asm sur TO8

D n'est pas un registre, c'est A et B ensembles. Quand tu touches à D, tu touches à A et B. Quand tu touches A, tu ne touches pas B, mais tu affectes la valeur dans D, idem si tu touche B, La valeur de D est modifié, mais pas celle de A.

Auteur:  adnz [ 16 Jan 2020, 17:26 ]
Sujet du message:  Re: Debut en asm sur TO8

ok merci.

si bigpac_n = 2

est ce que LDY ,U++

c'est pareil que LDY ,U>bigpac_n
ou
LEAU bigpac_n,U

?

il me manque plus que remplacer LDY ,U++ par quelquechose (LDY ,U+bigpac_n) vue que j'incrémente de 2 bigpac_n à chaque boule.

si bigpac_n=2 alors LDY ,U+ 0fois
si bigpac_n=2 alors LDY ,U+ 2fois
si bigpac_n=4 alors LDY ,U+ 4fois
si bigpac_n=6 alors LDY ,U+ 6fois

mais je pense trop compliqué par rapport au simple instruction à faire en asm.
c'est pour ça que je galère je pense. Faut que je prennent l'habitude de plein d'opération simple !
pas évident ! :voyons:

Auteur:  Samuel Devulder [ 16 Jan 2020, 23:15 ]
Sujet du message:  Re: Debut en asm sur TO8

Si tu connais le C, "LDY ,U++" est exactement la même sémantique que: "Y = *U++;" avec Y un short et U un pointeur sur short (et oui le C et l'assembleur 6809 ont quelques points communs.)

Auteur:  adnz [ 17 Jan 2020, 01:20 ]
Sujet du message:  Re: Debut en asm sur TO8

bon j'ai pas trouvé comme je voulais, mais j'ai fais un truc qui fonctionne.

Image Image

PS:
la 1er capture : c'est un peu lent à cause la routine d'effacement <- bon j'ai résolu ce soucis là je vais mettre à jour !
car le fond est pas noir (0), j'efface avec une couleur ! faut que j'optimise !
et pour le moment j'efface et redessine tous les elements de l'écran ça ralenti un peu aussi ça !

la 2eme capture j'efface en mettant tout à 0 (noir numero de palette 0)
cette routine va plus vite (c'est ta technique de mettre 7bits à 0 d'un coup !). mais je sais pas mettre la couleur !
J'aurais pu me démerder pour gérer la palette 0 en bleu mais j'utilise la meme palette pour tous les screens dont la palette 0 c'est noir !.

Page 6 sur 19 Heures au format UTC + 1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/