MO5 : Routine assembleur SPRITE
Modérateurs : Papy.G, fneck, Carl
MO5 : Routine assembleur SPRITE
Bonjour,
Je recherche une routine en assembleur pour afficher un sprite de 16x16 pour MO5, qui pourra être utilisée à partir d'un programme BASIC.
Merci beaucoup.
Baptiste
Je recherche une routine en assembleur pour afficher un sprite de 16x16 pour MO5, qui pourra être utilisée à partir d'un programme BASIC.
Merci beaucoup.
Baptiste
Rien ne sert de courir, en plus tu risques de tomber.
Re: MO5 : Routine assembleur SPRITE
il y a peut être ça: http://dcmoto.free.fr/programmes/animatix/index.html
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: MO5 : Routine assembleur SPRITE
Plusieurs questions se posent:
1 es tu familier de l'assembleur
2 idem pour le basic
3 idem de la machine cible
4 l'appel de routines asm depuis le basic
5 tes sprites sont ils monochrome en utilisant les couleurs de fond de l'écrann ou plus sophistiqués avec leur propre coulleurs ?
6 les sprites doivent ils êtres positionnés au pixel près dans l'axe des X?
7 enfin combien de sprites au total maximal à l'écran à chaque instant?
À partir des réponses on peut concevoir un moteur de sprites très correct.
_Wood_ en avait fait un pour mo5 si j ai bonne mémoire (mais hors basic)
si tu visais les to8/9/9+ il y a des possibilités sympa avec l'instruction turtle sans faire d'asm.
1 es tu familier de l'assembleur
2 idem pour le basic
3 idem de la machine cible
4 l'appel de routines asm depuis le basic
5 tes sprites sont ils monochrome en utilisant les couleurs de fond de l'écrann ou plus sophistiqués avec leur propre coulleurs ?
6 les sprites doivent ils êtres positionnés au pixel près dans l'axe des X?
7 enfin combien de sprites au total maximal à l'écran à chaque instant?
À partir des réponses on peut concevoir un moteur de sprites très correct.
_Wood_ en avait fait un pour mo5 si j ai bonne mémoire (mais hors basic)
si tu visais les to8/9/9+ il y a des possibilités sympa avec l'instruction turtle sans faire d'asm.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: MO5 : Routine assembleur SPRITE
Bonjour,
Merci pour vos réponses.
Je ne connais pas le langage ASM, mais charger en mémoire une routine et l'appeler depuis le BASIC, ça je sais. J'ai besoin d'une routine qui dessine à l'écran un sprite monochrome (plus simple). J'utilise uniqument mon MO5, donc compatible en priorité pour cette machine.
Un peu comme la routine que j'utilise sur Amstrad. Je charge dans une plage mémoire mes données de sprites. Je charge la routine d'affiche. Ensuite, j'appelle la routine en lui passant 2 paramètres : adresse écran, adresse du sprite.
Une routine qui affiche un sprite de 16x16 peut me suffire, mais si on peut paramétrer les dimensions, ce serait top.
Merci.
Merci pour vos réponses.
Je ne connais pas le langage ASM, mais charger en mémoire une routine et l'appeler depuis le BASIC, ça je sais. J'ai besoin d'une routine qui dessine à l'écran un sprite monochrome (plus simple). J'utilise uniqument mon MO5, donc compatible en priorité pour cette machine.
Un peu comme la routine que j'utilise sur Amstrad. Je charge dans une plage mémoire mes données de sprites. Je charge la routine d'affiche. Ensuite, j'appelle la routine en lui passant 2 paramètres : adresse écran, adresse du sprite.
Une routine qui affiche un sprite de 16x16 peut me suffire, mais si on peut paramétrer les dimensions, ce serait top.
Merci.
Rien ne sert de courir, en plus tu risques de tomber.
Re: MO5 : Routine assembleur SPRITE
Merci, j'ai regardé c'est juste inutilisable. Effectivement, il y a une routine d'affichage intégrée, mais impossible de dessiner le moindre sprite avec cet outil. C'est vraiment pas intuitif loljester a écrit :il y a peut être ça: http://dcmoto.free.fr/programmes/animatix/index.html
A la rigueur, si je connaissais la structure des fichiers générés, je pourrais développer mon propre outil de tracé.
Rien ne sert de courir, en plus tu risques de tomber.
Re: MO5 : Routine assembleur SPRITE
La plupart des programmes MO5 en Basic utilisent des caractères graphiques pour afficher des sprites. Avec cette méthode il y a au maximum 2 couleurs par carré de 8x8 pixels. Chaque carré est un caractère, avec 4 caractères on fait un sprite de 16x16, avec 6 on fait 24x16 etc. Chaque caractère est déclaré avec l'instruction DEFGR$.
Le sprite est défini par une chaîne de caractères contenant les séquences utilisateurs pour définir les couleurs d'affichage, les couleurs de fond, les retours à la ligne et les caractères graphiques.
Appelons cette chaîne S$. Pour l'afficher en X,Y il suffit de faire LOCATEX,Y:PRINTS$;
Les inconvénients sont :
1) La nécessité de déplacer les sprites par sauts de 8 pixels, le mouvement n'est pas fluide
2) La lenteur relative de l'affichage en Basic
Pour faire mieux (déplacement par pixel et affichage rapide) la seule solution est d'écrire le programme intégralement en assembleur. Avec un MO5, la plus grosse difficulté est de s'adapter aux contraintes des couleurs : pas plus de 2 couleurs dans chaque segment horizontal de 8 pixels.
Le sprite est défini par une chaîne de caractères contenant les séquences utilisateurs pour définir les couleurs d'affichage, les couleurs de fond, les retours à la ligne et les caractères graphiques.
Appelons cette chaîne S$. Pour l'afficher en X,Y il suffit de faire LOCATEX,Y:PRINTS$;
Les inconvénients sont :
1) La nécessité de déplacer les sprites par sauts de 8 pixels, le mouvement n'est pas fluide
2) La lenteur relative de l'affichage en Basic
Pour faire mieux (déplacement par pixel et affichage rapide) la seule solution est d'écrire le programme intégralement en assembleur. Avec un MO5, la plus grosse difficulté est de s'adapter aux contraintes des couleurs : pas plus de 2 couleurs dans chaque segment horizontal de 8 pixels.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: MO5 : Routine assembleur SPRITE
Tout à fait Daniel et ne pas oublier de restaurer l'arriere-plan du sprite. Avec 1 seul à l'écran on s'en sors. Avec plus il faut prévoir un ordre d'affichage et l'ordre inverse pour restaurer les portions de fond. Si le fond est uniforme c'est par contre plus simple.
Quoi qu'il en soit, je recommande la technique du DEFGR$ bien plus simple que les sprites au pixels près. À ce sujet qqn ici avait fait un sokoban bien fichu avec des sprites 16*16 en defgr$. Son nom m'echappe. Qu'il me pardonne.
Quoi qu'il en soit, je recommande la technique du DEFGR$ bien plus simple que les sprites au pixels près. À ce sujet qqn ici avait fait un sokoban bien fichu avec des sprites 16*16 en defgr$. Son nom m'echappe. Qu'il me pardonne.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: MO5 : Routine assembleur SPRITE
LOL !!! C'était moi. Oui, la technique du DEFGR$ est ce qui l'y a de plus simple. Je cherche surtout un moyen d'afficher plus rapidement les éléments à l'écran. ne connaissant pas du tout l'assembleur, je voudrai mixer BASIC et routine ASM.__sam__ a écrit :Quoi qu'il en soit, je recommande la technique du DEFGR$ bien plus simple que les sprites au pixels près. À ce sujet qqn ici avait fait un sokoban bien fichu avec des sprites 16*16 en defgr$. Son nom m'echappe. Qu'il me pardonne.
Après des sprites monochromes, affichés sur un fond uniforme, me va très bien.
Je vais tester plus à fond Animatix...
Rien ne sert de courir, en plus tu risques de tomber.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: MO5 : Routine assembleur SPRITE
lol en effet.
Il me vient une idée: définir les sprites avec defgr$ et utiliser une routine pour afficher rapidement 2x2 caractères defgr$ n'importe où à l'écran en passant l'adresse écran et les 4 no de caractères gr$ à utiliser à la routine asm. Je serais avec mon bon matériel que ce serait vite fait.. Mais là je suis plus que limité en ce moment.
Une routine spécialement dédiée aux gr$ irait à tous les coups bien plus vite que le print du basic.
Il y a un autre outil pour les sprites: cartoon-maker . Je j'ai vu sur to7/70 et je suppose qu'il existe sur mo5 aussi.
Il me vient une idée: définir les sprites avec defgr$ et utiliser une routine pour afficher rapidement 2x2 caractères defgr$ n'importe où à l'écran en passant l'adresse écran et les 4 no de caractères gr$ à utiliser à la routine asm. Je serais avec mon bon matériel que ce serait vite fait.. Mais là je suis plus que limité en ce moment.
Une routine spécialement dédiée aux gr$ irait à tous les coups bien plus vite que le print du basic.
Il y a un autre outil pour les sprites: cartoon-maker . Je j'ai vu sur to7/70 et je suppose qu'il existe sur mo5 aussi.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: MO5 : Routine assembleur SPRITE
Tout à fait. Je souhaite surtout pouvoir afficher plus rapidement mes caractères. Même si ce n'est pas au pixel près, pas grave, a partir du moment où je gagne en vitesse d'affichage.__sam__ a écrit :(...) Une routine spécialement dédiée aux gr$ irait à tous les coups bien plus vite que le print du basic.
Je peux continuer à utiliser la fonction DEFGR$ pour le design, mais une routine d'affichage rapide serait la bienvenue.
Rien ne sert de courir, en plus tu risques de tomber.
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: MO5 : Routine assembleur SPRITE
Et pourquoi ne pas partir de ceci :
http://www.hebdogiciel.free.fr/THOMSON.htm
Chercher "Lutin" sur la page. Ce programme crée de nouvelles instructions BASIC pour animer et tester les collisions entre des sprites de 8x8 (routines en assembleur). On doit pouvoir l'adapter.
http://www.hebdogiciel.free.fr/THOMSON.htm
Chercher "Lutin" sur la page. Ce programme crée de nouvelles instructions BASIC pour animer et tester les collisions entre des sprites de 8x8 (routines en assembleur). On doit pouvoir l'adapter.
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: MO5 : Routine assembleur SPRITE
Je me réponds à moi-même car j'ai trouvé encore mieux :
http://dcmoto.free.fr/documentation/int ... index.html
p.133 et suivantes. C'est pour TO7/70 mais c'est adaptable. 16x16, rapide, au pixel près et ça prend la forme d'une instruction BASIC supplémentaire, donc très facile à utiliser.
http://dcmoto.free.fr/documentation/int ... index.html
p.133 et suivantes. C'est pour TO7/70 mais c'est adaptable. 16x16, rapide, au pixel près et ça prend la forme d'une instruction BASIC supplémentaire, donc très facile à utiliser.
Re: MO5 : Routine assembleur SPRITE
Merci beaucoup !Fool-DupleX a écrit :(...)
Rien ne sert de courir, en plus tu risques de tomber.
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: MO5 : Routine assembleur SPRITE
De rien.
Par contre, j'ai jeté un oeil au code, l'adaptation requiert une très bonne connaissance des entrailles de la machine. Je peux filer un coup de main si nécessaire.
Ce qui me ramène à un truc qui m'a toujours manqué cruellement : un désassemblage + documentation complets de l'interpréteur BASIC sur MO5. Ce travail a été fait en grand partie pour le BASIC 512 est c'est super-utile, par exemple sur le TO8.
Mais par exemple, je galère toujours quand il s'agit de rajouter des instructions supplémentaires au BASIC du MO5. Ne serait-ce qu'avoir une doc de la page 0 du BASIC, ce serait bien utile. Avis aux amateurs, car je n'ai malheureusement pas le temps de m'en occuper, sinon il y a bien longtemps que je l'aurais fait ...
Par contre, j'ai jeté un oeil au code, l'adaptation requiert une très bonne connaissance des entrailles de la machine. Je peux filer un coup de main si nécessaire.
Ce qui me ramène à un truc qui m'a toujours manqué cruellement : un désassemblage + documentation complets de l'interpréteur BASIC sur MO5. Ce travail a été fait en grand partie pour le BASIC 512 est c'est super-utile, par exemple sur le TO8.
Mais par exemple, je galère toujours quand il s'agit de rajouter des instructions supplémentaires au BASIC du MO5. Ne serait-ce qu'avoir une doc de la page 0 du BASIC, ce serait bien utile. Avis aux amateurs, car je n'ai malheureusement pas le temps de m'en occuper, sinon il y a bien longtemps que je l'aurais fait ...
-
- Messages : 25
- Inscription : 19 juin 2017 19:00
Re: MO5 : Routine assembleur SPRITE
This sample is taken from
http://dcmoto.free.fr/documentation/pas ... ement.djvu
page 106
And it's quite amazing.
You can change DEFGR0 and 1 in their respective lines at the bottom, after the end of program execution - these are the 8x8bits defining the single frame.
There are 2 frames here (DEFGR0 and 1) which alternates every 50 times (this is done by CMPA #$32 which compares the "steps" in accumulator A).
Execute from &32000 or $7D00.
http://dcmoto.free.fr/documentation/pas ... ement.djvu
page 106
And it's quite amazing.
Code : Tout sélectionner
USERAF EQU $2070
PUTCH EQU 2
CHDRAW EQU $2036
ORG &32000
LDX #DEFGR0
STX USERAF
LDV #TABLE
DEBUT LDB ,U+
CMPB #4
BEQ SUITE
CALL PUTCH
BRA DEBUT
SUITE CLRA
LDX #$14
LDY #$0C
SUITE2 LDB #$80
STB CHDRAW
CALL CHPLH
JSR COMPT
LDB #$81
STB CHDRAW
CALL CHPLH
JSR COMPT
INCA
CMPA #$32
BNE SUITE2
BRA FIN
COMPT PSHS A
CLRA
CLRB
A1 ADDD #1
CMPD #$80FF
BNE A1
PULS A
RTS
FIN LDB #$70
CALL PUTCH
STOP
TABLE FCB $0C, $1B, $73, $14, $4
DEFGR0 FCB 36, 36, 36, 60, 255, 24, 60, 60
DEFGR1 FCB 129, 66, 36, 60, 60, 90, 189, 60
END
You can change DEFGR0 and 1 in their respective lines at the bottom, after the end of program execution - these are the 8x8bits defining the single frame.
There are 2 frames here (DEFGR0 and 1) which alternates every 50 times (this is done by CMPA #$32 which compares the "steps" in accumulator A).
Execute from &32000 or $7D00.