Aide Coleco et assembleur
+6
nemokantio
drfloyd
Hpman
Spirale
vingazole
bfg
10 participants
Page 2 sur 4
Page 2 sur 4 • 1, 2, 3, 4
Re: Aide Coleco et assembleur
L'idéal c'est peut-être "la méthode TOUKO" : apprivoiser la machine en codant en C - ou autre, sous réserve qu'il y ait d'autres possibilités - puis petit à petit introduire de l'ASM en inline pour optimiser certaines fonctions...
vingazole- Infirmier
- Nombre de messages : 4522
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
oui donc selon vous impossible pour un débutant d'attaquer directement l'assembleur ? Ou plutot : trop complexe et penible à expliquer de manière claire.
_______________________________________________________
Re: Aide Coleco et assembleur
Non-non : le problème à mon avis c'est que tu peux difficilement apprendre à programmer en assembleur "en l'air", il te faut une machine pour vérifier que ce que tu codes est correct.
Or, même pour une machine réputée simple comme la Coleco tu devras apprendre à programmer les composants de la console (le VDP pour les graphs et le PSG pour le son, principalement) pour obtenir "quelque chose" à l'écran/au haut-parleur.
Ca me semble plus simple avec un langage évolué a priori, mais peut-être me trompé-je.
Après, si effectivement on a un émulateur/débuggeur efficace style Meka, pourquoi pas ?
Or, même pour une machine réputée simple comme la Coleco tu devras apprendre à programmer les composants de la console (le VDP pour les graphs et le PSG pour le son, principalement) pour obtenir "quelque chose" à l'écran/au haut-parleur.
Ca me semble plus simple avec un langage évolué a priori, mais peut-être me trompé-je.
Après, si effectivement on a un émulateur/débuggeur efficace style Meka, pourquoi pas ?
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
bref, c'etait une idée comme ça en l'air.... à voir
_______________________________________________________
Re: Aide Coleco et assembleur
Alors j'ai implémenter la function calc_offset avec voes explications :
Et ... ça fonctionne !! :) Merci !
- Code:
.module calc_offset
.globl _calc_offset
.AREA _CODE
;unsigned int calc_offset(byte x,byte y);
_calc_offset:
ld hl,#2 ; Récupération des paramètres
add hl,sp
ld b,(hl) ; b = x [hl = SP+2]
inc hl
ld c,(hl) ; c = y [hl = SP+3]
ld l,c
ld h,#0x00
add hl, hl
add hl, hl
add hl, hl
add hl, hl
add hl, hl
ld e,b
ld d,#0x00
add hl,de
Et ... ça fonctionne !! :) Merci !
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: Aide Coleco et assembleur
drfloyd a écrit:oui donc selon vous impossible pour un débutant d'attaquer directement l'assembleur ?
Pour faire simple : oui.
Il faut que le débutant en question soit hyper motivé. Tu dois tout traiter toi même, les types de données, les calculs, même une concaténation de chaîne, tu dois la coder toi même. Même une bête division. Sans compter le hardware spécifique.
Partir du C, c'est plus intéressant. Un tuto sur l'utilisation de l'assembleur inline, ou même sur les techniques d'optimisation"avancées" (comme les boucles dont parle Stef) ça peut être intéressant...
Mais faut déjà être un peu plus que débutant !
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Aide Coleco et assembleur
ok, donc mauvaise idée.
Un cours complet de C sur Coleco avec cCdeblocks alors ? Ca fera peut etre naitre des vocations !
Un cours complet de C sur Coleco avec cCdeblocks alors ? Ca fera peut etre naitre des vocations !
_______________________________________________________
Re: Aide Coleco et assembleur
bfg a écrit:Alors j'ai implémenter la function calc_offset avec voes explications :
- Code:
.module calc_offset
.globl _calc_offset
.AREA _CODE
;unsigned int calc_offset(byte x,byte y);
_calc_offset:
ld hl,#2 ; Récupération des paramètres
add hl,sp
ld b,(hl) ; b = x [hl = SP+2]
inc hl
ld c,(hl) ; c = y [hl = SP+3]
ld l,c
ld h,#0x00
add hl, hl
add hl, hl
add hl, hl
add hl, hl
add hl, hl
ld e,b
ld d,#0x00
add hl,de
Et ... ça fonctionne !! :)
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
Pour ça tu as la série de vidéos de bfg !drfloyd a écrit:Un cours complet de C sur Coleco avec cCdeblocks alors ? Ca fera peut etre naitre des vocations !
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
@bfg
Maintenant que tu as écrit ta fonction en asm et qu'elle fonctionne, tu peux t'amuser à l'optimiser !
Bon c'est là qu'il faut commencer à compter le temps pris par les instructions.
(et veiller à pas tout casser en optimisant)
Mais ces 5 add hl,hl, je les remplacerais moi !
EDIT : ah non je me suis gourré, tu peux pas améliorer les add hl,hl
Mais il y a d'autres endroits dans ta fonction ou tu peux un peu gagner...
Maintenant que tu as écrit ta fonction en asm et qu'elle fonctionne, tu peux t'amuser à l'optimiser !
Bon c'est là qu'il faut commencer à compter le temps pris par les instructions.
(et veiller à pas tout casser en optimisant)
Mais ces 5 add hl,hl, je les remplacerais moi !
EDIT : ah non je me suis gourré, tu peux pas améliorer les add hl,hl
Mais il y a d'autres endroits dans ta fonction ou tu peux un peu gagner...
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Aide Coleco et assembleur
Si, avec une LUT, mais on ne va pas déjà le pourrir : ça marche, c'est déjà très bien !nemokantio a écrit:@bfg
Maintenant que tu as écrit ta fonction en asm et qu'elle fonctionne, tu peux t'amuser à l'optimiser !
Bon c'est là qu'il faut commencer à compter le temps pris par les instructions.
(et veiller à pas tout casser en optimisant)
Mais ces 5 add hl,hl, je les remplacerais moi !
EDIT : ah non je me suis gourré, tu peux pas améliorer les add hl,hl
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
Ah ben si finalement, en restant dans les décalages.
La valeur décalée à gauche de 5 est sur 8 bits.
On peut la décaler de 8 puis de trois vers la droite, non ?
(en utilisant l'accumulateur)
La valeur décalée à gauche de 5 est sur 8 bits.
On peut la décaler de 8 puis de trois vers la droite, non ?
(en utilisant l'accumulateur)
- Code:
ld h,c
xor a
srl h
rra
srl h
rra
srl h
rra
ld l,a
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Aide Coleco et assembleur
vingazole a écrit:Pour ça tu as la série de vidéos de bfg !drfloyd a écrit:Un cours complet de C sur Coleco avec cCdeblocks alors ? Ca fera peut etre naitre des vocations !
oui oui, mais c'est pas orienté Coleco (Dreamcast) et je pense qu'il faudrait aussi une version "papier"
_______________________________________________________
Re: Aide Coleco et assembleur
Il me semble bien que la Dreamcast ET la Coleco sont ciblées par les vidéos de bfg...
Oui, ça a l'air correct. Ca prend 48 cycles.
Une LUT (table de 32 en words) alignée sur une adresse multiple de 0x100 (0xFF00 par exemple) serait plus rapide :
nemokantio a écrit:Ah ben si finalement, en restant dans les décalages.
La valeur décalée à gauche de 5 est sur 8 bits.
On peut la décaler de 8 puis de trois vers la droite, non ?
(en utilisant l'accumulateur)
- Code:
ld h,c
xor a
srl h
rra
srl h
rra
srl h
rra
ld l,a
Oui, ça a l'air correct. Ca prend 48 cycles.
Une LUT (table de 32 en words) alignée sur une adresse multiple de 0x100 (0xFF00 par exemple) serait plus rapide :
- Code:
ld a,c ; (4)
add a,a ; (4)
ld l,a ; (4)
ld h,#0xFF ; (7)
ld a,(hl) ; (7)
inc hl ; (6)
ld h,(hl) ; (7)
ld l,a ; (4)
-------------
43 cycles
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
Ah, je ne pense pas assez aux LUT.
Mais bfg va nous brûler là !
Mais bfg va nous brûler là !
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Aide Coleco et assembleur
C'est bien pour ça que je ne voulais pas aller sur le terrain de l'optimisation !
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
Heu ... moi à par les LUT de type TUR... Je comprends pas ce que vous me racontez ...
oui oui, les TUR LUT ...
oui oui, les TUR LUT ...
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: Aide Coleco et assembleur
Il a osé !
Tiens, je viens de voir "ta première fois" en vidéo, c'était très sympa !
Tiens, je viens de voir "ta première fois" en vidéo, c'était très sympa !
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Aide Coleco et assembleur
Doc', l'ASM ce n'est pas si sorcier, la preuve, j'y suis même arrivé.
Ca à l'air un peu élitiste aux abords, un cercle un peu fermé de vieux barbus, mais au final, ce n'est pas plus compliqué que les autres langages.
Après, on pinaille sur les cycles et compagnie, mais bon, quand ça marche c'est l'essentiel !
Il faut juste en avoir besoin pour certaine tâche, à moins de tout faire en pur ASM, ce qui semble de nos jours, un peu dingue et pas si courant à vrai dire.
Il faut voir déjà le nombre de projet aller au bout rien qu'avec les autres technologies que bon ...
Le plus difficile c'est d'aller au bout d'un projet et c'est bien l'essentiel !
Ca à l'air un peu élitiste aux abords, un cercle un peu fermé de vieux barbus, mais au final, ce n'est pas plus compliqué que les autres langages.
Après, on pinaille sur les cycles et compagnie, mais bon, quand ça marche c'est l'essentiel !
Il faut juste en avoir besoin pour certaine tâche, à moins de tout faire en pur ASM, ce qui semble de nos jours, un peu dingue et pas si courant à vrai dire.
Il faut voir déjà le nombre de projet aller au bout rien qu'avec les autres technologies que bon ...
Le plus difficile c'est d'aller au bout d'un projet et c'est bien l'essentiel !
Invité- Invité
Re: Aide Coleco et assembleur
Oui tout le monde dit que lorsqu'on a compris l'assembleur c'est pas plus compliqué que le C ou le Basic.... c'est pour ça que j'imaginais la posibilité d'un tuto sympa
Totu en ASM dingue ? Meme sur un jeu Coleco de 8Ko ?
Totu en ASM dingue ? Meme sur un jeu Coleco de 8Ko ?
_______________________________________________________
Re: Aide Coleco et assembleur
Y'a pas mal de jeu en full Assembleur (Zombie Near, Mecha 8, les jeux d'Oscar Toledo quoi).
J'ai déja du mal à trouver les bonnes techniques en C, alors j'ose pas imaginer tout coder en ASM. Je vois pas comment on s'y retrouver pour organiser tout ça.
Par contre, pour piloter plus finement le VDP ça va me servir, les fonction du BIOS sont bien, mais elles gèrent tout les cas (dépassement de l'écran, tailles variables etc etc ...). Donc en faisant du sur mesure on gagne forcément énormément de cycle.
Bon, je sais pas si je vais réussir quelques chose, mais au moins je vais essayer ...
J'ai déja du mal à trouver les bonnes techniques en C, alors j'ose pas imaginer tout coder en ASM. Je vois pas comment on s'y retrouver pour organiser tout ça.
Par contre, pour piloter plus finement le VDP ça va me servir, les fonction du BIOS sont bien, mais elles gèrent tout les cas (dépassement de l'écran, tailles variables etc etc ...). Donc en faisant du sur mesure on gagne forcément énormément de cycle.
Bon, je sais pas si je vais réussir quelques chose, mais au moins je vais essayer ...
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: Aide Coleco et assembleur
ok, bon le mieux reste de bien savoir bien développer en C
_______________________________________________________
Re: Aide Coleco et assembleur
Bravo Bfg pour ton immersion en asm Z80. Ensuite tu partiras à la conquête des amstrad, msx, mastersystem 1 etc...
Re: Aide Coleco et assembleur
La logique est la même : tu découpes ton programme assembleur en routines comme tu découpes ton programme C en fonctions.bfg a écrit:J'ai déja du mal à trouver les bonnes techniques en C, alors j'ose pas imaginer tout coder en ASM. Je vois pas comment on s'y retrouver pour organiser tout ça.
Dernière édition par vingazole le Dim 19 Fév 2017 - 21:25, édité 1 fois
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
100% d'accord, faire de l'ASM dans le vide ne sert strictement à rien .il te faut une machine pour vérifier que ce que tu codes est correct.
Invité- Invité
Re: Aide Coleco et assembleur
Sinon pour apprendre à programmer un jeu en ASM on peut aussi utiliser cette méthode :
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
L'assembleur c'est pas compliqué, c'est chiant. Juste très très chiant. Quand tu peux l'éviter, tu évites.
Après, tous les langages sont simples ou compliqués, selon ce que tu fais avec. C'est clair que bouger deux sprites sur un fond fixe, c'est facile en Basic, c'est facile et chiant en assembleur. Un moteur 3D, c'est compliqué en Basic, c'est compliqué et chiant en assembleur
Après, tous les langages sont simples ou compliqués, selon ce que tu fais avec. C'est clair que bouger deux sprites sur un fond fixe, c'est facile en Basic, c'est facile et chiant en assembleur. Un moteur 3D, c'est compliqué en Basic, c'est compliqué et chiant en assembleur
Dernière édition par Tryphon le Dim 19 Fév 2017 - 21:20, édité 1 fois
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Aide Coleco et assembleur
vingazole a écrit:La logique est la même : tu découpes ton programmes assembleur en routines comme tu découpes ton programme C en fonctions.bfg a écrit:J'ai déja du mal à trouver les bonnes techniques en C, alors j'ose pas imaginer tout coder en ASM. Je vois pas comment on s'y retrouver pour organiser tout ça.
Oui ça doit être un question de connaissance et d'habitude. Rien qu'une boucle "for" en ASM et j'ai l'impression d'avoir codé un jeu complet ! Et je suis incapable de la refaire sans regarder l'exemple
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: Aide Coleco et assembleur
Classiquement en ASM on ferait plutôt une boucle comme ça :
En z80 on utiliserait plutôt le registre b car l'opérande djnz permet à la fois de décrémenter b et de faire le saut conditionnel.
De manière générale on déplierait la boucle plutôt que d'utiliser des registres et des cycles précieux pour seulement deux itérations !
- Code:
ld c,2 ; 2 itérations
boucle:
[...]
dec c ; c = c - 1
jp nz,boucle ; boucle si le résultat est non-nul
En z80 on utiliserait plutôt le registre b car l'opérande djnz permet à la fois de décrémenter b et de faire le saut conditionnel.
De manière générale on déplierait la boucle plutôt que d'utiliser des registres et des cycles précieux pour seulement deux itérations !
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Aide Coleco et assembleur
Yep pour le dépliage. Mais je sais pas encore trop ou je vais, donc plus j'en comprends mieux c'est. 😉
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Page 2 sur 4 • 1, 2, 3, 4
Sujets similaires
» Aide sur l'assembleur HuC6280
» IDE Assembleur pour PCE e C64
» Orgams nouvel assembleur CPC
» [AIDE] J'ai besoin de votre aide!pas pécuniére ^^
» [Tutoriel] Initiation à l'assembleur (débutant)
» IDE Assembleur pour PCE e C64
» Orgams nouvel assembleur CPC
» [AIDE] J'ai besoin de votre aide!pas pécuniére ^^
» [Tutoriel] Initiation à l'assembleur (débutant)
Page 2 sur 4
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum