Papi Commando fait de ... L'assembleur 68000 !
+16
Hpman
ichigobankai
Urbinou
dub
grostonton
Spirale
vingazole
tetsuro
65c02
TotOOntHeMooN
F.L
tfdi
Ninja_SCX
vincent2105
pckid
drfloyd
20 participants
Page 4 sur 9
Page 4 sur 9 • 1, 2, 3, 4, 5, 6, 7, 8, 9
Re: Papi Commando fait de ... L'assembleur 68000 !
Kannagi a écrit:ça veut dire ? la declaration n'existe pas vraiment sur ces machine
?? .. bien sûr que si.
Comme le dit dub, et comme je l'avais déjà dit, on utilise ds pour les buffers/tableaux, c'est exactement la même chose.
tableau ds.l 1024 ; 4k octets réservés ...
@Hpman:Exact
Dernière édition par tfdi le Jeu 23 Juin 2016 - 11:49, édité 1 fois
tfdi- Patient contaminé
- Nombre de messages : 550
Date d'inscription : 19/10/2010
Re: Papi Commando fait de ... L'assembleur 68000 !
Comme je le disais plus haut, ça dépend des gens. Chacun sa voie donc !Stef a écrit:Bravo Vetea ! J'ai l'impression que l'assembleur te vient plus naturellement que le C ! Pourtant le C est théoriquement bien plus accessible
Il faut encourager à tout essayer et non se limiter un langage par rapport à son niveau d'abstraction.
TotOOntHeMooN- Docteur agrégé **
- Nombre de messages : 18147
Age : 54
Localisation : Terre I
Date d'inscription : 18/04/2013
Re: Papi Commando fait de ... L'assembleur 68000 !
C'est la notion de poo qui "bloque" beaucoup de débutants en C/C++, surtout quand t'as l'habitude de programmer en procédural.
Alors qu'en fait, en s'y mettant un peu, c'est pas super compliqué non plus. Y a un côté "abstrait" qui peut être rebute pas mal de monde ...
Alors qu'en fait, en s'y mettant un peu, c'est pas super compliqué non plus. Y a un côté "abstrait" qui peut être rebute pas mal de monde ...
tfdi- Patient contaminé
- Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010
Re: Papi Commando fait de ... L'assembleur 68000 !
Merci les potos !
Vous savez, j'ai rien fait de transcendant ... Je suis des tutos ( farcis d'erreurs ... C'est dingue ... ) de la doc technique, etc ... pour sortir 2 bricoles sur la console.
En basic ça prends une ligne, en asm près de 200 lignes !! :)
Mais ce genre d'expérience est super enrichissante et ça me profitera pour le futur.
Réaliser un jeu en asm, certainement pas ! Vu la galère que c'est pour afficher 3 merdes ... Mais je vais essayer d'afficher des trucs de gérer des machins et on verra ou ce me mène.
Pour le moment ça me plait donc je continue.
Vous savez, j'ai rien fait de transcendant ... Je suis des tutos ( farcis d'erreurs ... C'est dingue ... ) de la doc technique, etc ... pour sortir 2 bricoles sur la console.
En basic ça prends une ligne, en asm près de 200 lignes !! :)
Mais ce genre d'expérience est super enrichissante et ça me profitera pour le futur.
Réaliser un jeu en asm, certainement pas ! Vu la galère que c'est pour afficher 3 merdes ... Mais je vais essayer d'afficher des trucs de gérer des machins et on verra ou ce me mène.
Pour le moment ça me plait donc je continue.
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Après, je pense que ta cure d'ASM va te permettre de mieux appréhender certaines mécaniques du C.
TotOOntHeMooN- Docteur agrégé **
- Nombre de messages : 18147
Age : 54
Localisation : Terre I
Date d'inscription : 18/04/2013
Re: Papi Commando fait de ... L'assembleur 68000 !
Ouiii Tot' !!
Mais avant je vais me remettre au Forthran et au COBOL ..
Hihi
Mais avant je vais me remettre au Forthran et au COBOL ..
Hihi
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
C est la galère parce que tu pars de 0, je suis sur que des routines asm pour afficher du texte sur md existent.Vetea a écrit:Merci les potos !
Vous savez, j'ai rien fait de transcendant ... Je suis des tutos ( farcis d'erreurs ... C'est dingue ... ) de la doc technique, etc ... pour sortir 2 bricoles sur la console.
En basic ça prends une ligne, en asm près de 200 lignes !! :)
Mais ce genre d'expérience est super enrichissante et ça me profitera pour le futur.
Réaliser un jeu en asm, certainement pas ! Vu la galère que c'est pour afficher 3 merdes ... Mais je vais essayer d'afficher des trucs de gérer des machins et on verra ou ce me mène.
Pour le moment ça me plait donc je continue.
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Avec le temps tu va avoir de plus en plus de routines a toi (tu as déjà le print )
Et, au fur et à mesure, développer en asm sera pour toi de plus en plus simple.
Et, au fur et à mesure, développer en asm sera pour toi de plus en plus simple.
Re: Papi Commando fait de ... L'assembleur 68000 !
moi je reste épaté quand je vois que des jeux comme ELITE FRONTIER de Braben ont été réalisé 100% en assembleur....
_______________________________________________________
Re: Papi Commando fait de ... L'assembleur 68000 !
En ce temps là, 100% langage machine = seal of quality
Re: Papi Commando fait de ... L'assembleur 68000 !
Euh même maintenant65c02 a écrit:En ce temps là, 100% langage machine = seal of quality
Tant que tu es sur des machines de type 16 bit (ou moins), je trouve l'ASM vraiment simple et efficace(pour peu que tu ais un devkit) .
Surtout quand tu vois le code dégueulasse que te pond un compilateur sur des archis aussi vieilles .
Et franchement y'a aussi le temps de compilation, sur GCC il est assez long il me semble, avec BEX je sais pas .
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Avec Bex mon listing de Papi Commando de 50000 lignes prends 20 25 sec sur mon Q9550 @2.83ghz.
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Ok, c'est long 20/25 secs quand tu fais des tests .
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Et oui ... Mais si tu Compares au temps de dev. ... Ça va non ??
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Bonjour à tous,
Voici un petit utilitaire que je viens de coder en Qb64GL ( sous Windows ) : VDP Calculator !
https://dl.dropboxusercontent.com/u/108143465/VDPCalculator.zip
Il permet de calculer l'adresse du VDP Control Port/Data Port avec tous les modes disponibles ! :)
Parce que les utilitaires du net sont FAUX et que j'en avais marre de me taper les calculs à la main avec un éditeur Hex ... Voila qui est maintenant plus pratique ! :)
Voici un petit utilitaire que je viens de coder en Qb64GL ( sous Windows ) : VDP Calculator !
https://dl.dropboxusercontent.com/u/108143465/VDPCalculator.zip
Il permet de calculer l'adresse du VDP Control Port/Data Port avec tous les modes disponibles ! :)
Parce que les utilitaires du net sont FAUX et que j'en avais marre de me taper les calculs à la main avec un éditeur Hex ... Voila qui est maintenant plus pratique ! :)
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Tout dépend si comme moi tu compiles toutes les 5 secsVetea a écrit:Et oui ... Mais si tu Compares au temps de dev. ... Ça va non ??
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
@Stef : Oui le C est plus accessible je pense, mais je comprend Vetea, j'ai eu le même engouement à l’apprentissage de l'ASM,, il y a un côté retour aux sources assez grisant, comparé à un C plus haut niveau, on est fier de ce qu'on accompli, car on sait vraiment ce qu'on fait ligne par ligne...
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Papi Commando fait de ... L'assembleur 68000 !
Bonsoir à tous,
A l'écoute du magnifique Album "Pyramid" d'Alan Parson Project, j'ai potassé le fonctionnement du VDP au niveau des Tiles.
En effet, ce micro a un fonctionnement vraiment particulier ... Il aime bien qu'on lui cause selon une certaine norme ...
Voici la Table sur 16 Bits du mode d'adressage.
Donc à partir de la, on peut, avec la palette et les autres manipulations, construire cette table ... Après, il faut la convertir.
Pour cela, avec QB64, j'ai crée un petit outil bien pratique : Tile Calculator !
Ici, je choisis à loisir les effets que je désire et après le programme me calcule la Table en Hexa !
De cette manière, je peux l'incorporer aisément dans mon code avec un petit Move.w #$5000,dx.
Il n'y a plus qu'à causer au VDP via son Data Port pour ensuite constater le résultat :
Et oui, la chaine 'Aime Gamopat' a été permuter verticalement avec comme palette 2 !
Ah ah .. J'ai passé une bonne partie de la soirée à comprendre comment gérer le bousin ...
Mais c'est chose faite.
Je peux maintenant créer des variables génériques avec toutes les combinaisons possibles !
Maintenant, je peux passer à l'étape du positionnement X,Y des Tiles ...
A bientôt ! :)
A l'écoute du magnifique Album "Pyramid" d'Alan Parson Project, j'ai potassé le fonctionnement du VDP au niveau des Tiles.
En effet, ce micro a un fonctionnement vraiment particulier ... Il aime bien qu'on lui cause selon une certaine norme ...
Voici la Table sur 16 Bits du mode d'adressage.
Donc à partir de la, on peut, avec la palette et les autres manipulations, construire cette table ... Après, il faut la convertir.
Pour cela, avec QB64, j'ai crée un petit outil bien pratique : Tile Calculator !
Ici, je choisis à loisir les effets que je désire et après le programme me calcule la Table en Hexa !
De cette manière, je peux l'incorporer aisément dans mon code avec un petit Move.w #$5000,dx.
Il n'y a plus qu'à causer au VDP via son Data Port pour ensuite constater le résultat :
Et oui, la chaine 'Aime Gamopat' a été permuter verticalement avec comme palette 2 !
Ah ah .. J'ai passé une bonne partie de la soirée à comprendre comment gérer le bousin ...
Mais c'est chose faite.
Je peux maintenant créer des variables génériques avec toutes les combinaisons possibles !
Maintenant, je peux passer à l'étape du positionnement X,Y des Tiles ...
A bientôt ! :)
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Alan parson project ?
Tu veux parler du projet du docteur denfer dans austin powers 2 ?
Tu veux parler du projet du docteur denfer dans austin powers 2 ?
Re: Papi Commando fait de ... L'assembleur 68000 !
Impressionnant apprentissage
_______________________________________________________
Re: Papi Commando fait de ... L'assembleur 68000 !
Bonjour à tous,
Ce matin je pense que j'ai franchi un "cap" ...
En effet, d'une seule traite et sans consulter quoique ce soit, je me suis mis à coder directement en Assembleur de manière "naturelle" ...
Tout d'abord, je me suis dit :
<< Bon .. Tu sais afficher du texte, tu peux les faire pivoter, etc ... Mais pourrais tu aussi faire en sorte de pouvoir faire un petit effet de transition de palette de manière à avoir pour chaque caractère une couleur différente ?? >>
Et bien ... Croyez moi ou non .. J'ai totalement refondu ma routine d'écriture de texte, établi des commandes dédiées pour tout mettre en corrélation :
Donc en clair, avec d2 j'envoie toutes les instructions pour le VDP DATA afin de lui donner ce que je veux faire, et avec d3 je choisis ou non ce fameux effet de transition de palette.
Et la ... Boum ... Je te pond ce code de fou ( pour moi en tout cas ... ) d'une seule traite :
Ma routine de Texte V2.0 !
Oh purée ... J'ai même pas eu besoin de tester ça avec Esay68K pour voir comment ça se passait au niveau de mes registres de données, etc ... J'avais tout en tête de manière naturelle !
J'ai aussi mieux structuré mon code ... J'apprivoise un peu plus la "bête" sans la dompter encore.
Ensuite, un peu sceptique, j'ai compilé et exécuté mon code .. et :
Oh putain, ça marche !!
Ensuite, j'ai testé diverses combinaisons possibles, pareil, tout était ok !
Ca veut dire qu'après presque 2 semaines, ça commence à rentrer.
J'arrive à réfléchir en basic d'un côté et en assembleur de l'autre ... Un truc de dingue !
Bon allez, je vais me taper un petit whisky pour fêter ça !
Tchin.
Ce matin je pense que j'ai franchi un "cap" ...
En effet, d'une seule traite et sans consulter quoique ce soit, je me suis mis à coder directement en Assembleur de manière "naturelle" ...
Tout d'abord, je me suis dit :
<< Bon .. Tu sais afficher du texte, tu peux les faire pivoter, etc ... Mais pourrais tu aussi faire en sorte de pouvoir faire un petit effet de transition de palette de manière à avoir pour chaque caractère une couleur différente ?? >>
Et bien ... Croyez moi ou non .. J'ai totalement refondu ma routine d'écriture de texte, établi des commandes dédiées pour tout mettre en corrélation :
- Code:
;On prépare notre VDP à l'écriture d'un Tile
move.l #WritePlaneA,VDPControlPort
moveq #0,d1
lea text,a0
;Instruction de Commande ( Priorité, Palette, Tile Mirror Vertical, Tile Mirror Horizontal)
move.w #$4000,d2 ;Ici Priorité 0,Palette 2,M.V. non,M.H. non
;Incrémentation automatique des Palettes ? 0 - Oui, 1 - Non
Move.b #1,d3 ;Pas d'effet d'incrémentation de Palette
bsr WriteText ;Appel du sous programme d'affichage des Tiles
Donc en clair, avec d2 j'envoie toutes les instructions pour le VDP DATA afin de lui donner ce que je veux faire, et avec d3 je choisis ou non ce fameux effet de transition de palette.
Et la ... Boum ... Je te pond ce code de fou ( pour moi en tout cas ... ) d'une seule traite :
Ma routine de Texte V2.0 !
- Code:
;///// Routine d'écriture de Texte /////
WriteText:
CharCopy:
move.b (a0)+,d0
Beq.b Fin ;Si 0 soit fin de la chaine, alors goto fin !
move.b d0,d1 ;On copie les 2 premiers bits de d0 dans d1
subi.b #$20,d1 ;On associe d0 avec le Mapping VRAM ( Soit Contenu d0 - $20)
add.w d2,d1 ;On additionne son contenu avec d2, notre Mot de commande VDP.
move.w d1,VDPData ;On envoie le bazard au VDPData
moveq #0,d1 ;Init de d1
cmp.b #0,d3 ;On va voir si notre option d'incrémentation de Palette est valide ? 0-O, 1-N
Beq.b IncPal ;Si oui, alors allons y !! :)
Jmp CharCopy ;Caractère suivant
IncPal: ;Routine d'incrémentation de Palette pour un effet texte rigolo.
moveq #0,d3 ;Init de d3
add.w #$2000,d2 ;On additionne de $2000 pour passer à la palette suivant.
swap d2 ;On permute le contenu de d3 afin de pouvoir lire les 2 premiers Bits.
cmp.b #6,d2 ;Si c'est égal à 6 (Palette 3) ?
swap d2 ;On retrouve notre Mot de commande VDP !
Beq.s DecPal ;On va aller à la routine d'initialisation de Palette
jmp CharCopy ;Caractère suivant
DecPal: ;Routine d'initialisation de Palette.
move.b #0,d2 ;On initialise nos 2 premiers Bits ( No Palette)
swap d2 ;On retrouve notre Mot de Commande VDP.
jmp CharCopy
fin:
;Init de nos registres de données.
moveq #0,d1
moveq #0,d2
moveq #0,d3
rts
Oh purée ... J'ai même pas eu besoin de tester ça avec Esay68K pour voir comment ça se passait au niveau de mes registres de données, etc ... J'avais tout en tête de manière naturelle !
J'ai aussi mieux structuré mon code ... J'apprivoise un peu plus la "bête" sans la dompter encore.
Ensuite, un peu sceptique, j'ai compilé et exécuté mon code .. et :
Oh putain, ça marche !!
Ensuite, j'ai testé diverses combinaisons possibles, pareil, tout était ok !
Ca veut dire qu'après presque 2 semaines, ça commence à rentrer.
J'arrive à réfléchir en basic d'un côté et en assembleur de l'autre ... Un truc de dingue !
Bon allez, je vais me taper un petit whisky pour fêter ça !
Tchin.
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Tu peux peut être remplacer:
Par un :
non ??
- Code:
Beq.s DecPal
jmp CharCopy
DecPal:
Par un :
- Code:
Bne.l(voire même un bne.s) CharCopy
DecPal:
non ??
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Laisses moi savourer mon Whisky tranquille !!!!!
( Bien vu .. D'autant plus qu'il y a d'autres endroits ou je peux en placer d'autres ... Comme je l'ai dit, j'ai pondu ça d'un trait ! C'est dingue putain ! )
( Bien vu .. D'autant plus qu'il y a d'autres endroits ou je peux en placer d'autres ... Comme je l'ai dit, j'ai pondu ça d'un trait ! C'est dingue putain ! )
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Tchin ! et bravo au passage !
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Papi Commando fait de ... L'assembleur 68000 !
Manuia Vincent !!
( Manuia = Tchin tchin en tahitien .. Et oui, Vetea n'est pas qu'un Pseudo, c'est mon 2ème prénom car je suis né à Tahiti ... )
( Manuia = Tchin tchin en tahitien .. Et oui, Vetea n'est pas qu'un Pseudo, c'est mon 2ème prénom car je suis né à Tahiti ... )
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Vetea a écrit:
- Code:
IncPal: ;Routine d'incrémentation de Palette pour un effet texte rigolo.
moveq #0,d3 ;Init de d3
add.w #$2000,d2 ;On additionne de $2000 pour passer à la palette suivant.
swap d2 ;On permute le contenu de d3 afin de pouvoir lire les 2 premiers Bits.
cmp.b #6,d2 ;Si c'est égal à 6 (Palette 3) ?
swap d2 ;On retrouve notre Mot de commande VDP !
Beq.s DecPal ;On va aller à la routine d'initialisation de Palette
jmp CharCopy ;Caractère suivant
- mettre D3 à 0 ne sers à rien, puisqu'on n'arrive ici que lorsque D3 est à 0?
- swap échange les mots, pas les octets, la tu fais un cmp pifometrique sur le contenu du upper word de d2
- Egalement préférer un bra.s/bra.w aux jmp quand possible.
Hpman- Patient contaminé
- Nombre de messages : 679
Age : 47
Localisation : Lille
Date d'inscription : 22/08/2014
Re: Papi Commando fait de ... L'assembleur 68000 !
C'est bien Vetea, tu as compris le mécanisme de base, maintenant plus rien ne peut t'arrêter :-p
Comme le souligne hpman il y a quelques erreurs dans ton code et ça fonctionne car le bit au dessus de la palette sert à la priorité (donc pas important ici). Aussi à force tu feras du code de plus en plus efficace (par exemple il est judicieux de mettre VDPData et VDPCtrl dans un des registres Ax), le 68000 est très agréable à programmer. Ce qui est bien avec l'assembleur c'est que ça te contraint de comprendre exactement comment la machine fonctionne. Ainsi plus tard quand tu reviendras à BEX ou même pourquoi pas au C tu comprendras mieux les contraintes et aussi comment faire un code efficace ;-)
Comme le souligne hpman il y a quelques erreurs dans ton code et ça fonctionne car le bit au dessus de la palette sert à la priorité (donc pas important ici). Aussi à force tu feras du code de plus en plus efficace (par exemple il est judicieux de mettre VDPData et VDPCtrl dans un des registres Ax), le 68000 est très agréable à programmer. Ce qui est bien avec l'assembleur c'est que ça te contraint de comprendre exactement comment la machine fonctionne. Ainsi plus tard quand tu reviendras à BEX ou même pourquoi pas au C tu comprendras mieux les contraintes et aussi comment faire un code efficace ;-)
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: Papi Commando fait de ... L'assembleur 68000 !
Merci Stef !
Oui c'est dingue ... Je pars de zéro car il y a peu de temps je captais rienGG.
Je fais certainement des erreurs, c'est pour ça que je partage vu les Jedis qui trainent ici.
Si tu savais le temps que je perd avec des tutos bourrés d'erreurs et ensuite consulter la doc technique, tester sous easy68k et corriger ensuite.
Vous réalisez pas ce que je viens de faire car pour vous c'est naturel, banal ... Mais j'ai une immense fierté a réussir la ou j'avais échoué avant.
Je bande comme un teenager, c'est ça qui est bon !!
Mes 2 jeux vont être en plus édités ... Yeaahhh !
Des années d'efforts récompensés ....
Oui c'est dingue ... Je pars de zéro car il y a peu de temps je captais rienGG.
Je fais certainement des erreurs, c'est pour ça que je partage vu les Jedis qui trainent ici.
Si tu savais le temps que je perd avec des tutos bourrés d'erreurs et ensuite consulter la doc technique, tester sous easy68k et corriger ensuite.
Vous réalisez pas ce que je viens de faire car pour vous c'est naturel, banal ... Mais j'ai une immense fierté a réussir la ou j'avais échoué avant.
Je bande comme un teenager, c'est ça qui est bon !!
Mes 2 jeux vont être en plus édités ... Yeaahhh !
Des années d'efforts récompensés ....
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
Non mais t'inquiète on réalise bien, enfin perso je constate tes progrès de jour en jour et la clairement comme tu le dis c'est une nouvelle grosse étape de franchi. Je dirais même que maintenant il te reste juste à comprendre le fonctionnement du VDP en détail mais tu as déjà bien avancé sur ce point. Quand tu auras compris tout son fonctionnement tu te sentiras invincible avec l'assembleur
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: Papi Commando fait de ... L'assembleur 68000 !
Question Stef :
Pourquoi stocker VdpData & VdpCtrl dans un registre d'adresse et ne pas se servir direct des variables que j'ai déclaré ?? Merci.
Pourquoi stocker VdpData & VdpCtrl dans un registre d'adresse et ne pas se servir direct des variables que j'ai déclaré ?? Merci.
Invité- Invité
Re: Papi Commando fait de ... L'assembleur 68000 !
move.w d1, VDPData => 16 cycles
move.w d1, (a0) => 8 cycles
C'est tout :o
move.w d1, (a0) => 8 cycles
C'est tout :o
Hpman- Patient contaminé
- Nombre de messages : 679
Age : 47
Localisation : Lille
Date d'inscription : 22/08/2014
Page 4 sur 9 • 1, 2, 3, 4, 5, 6, 7, 8, 9
Sujets similaires
» [SMS] Papi Commando In CPP Land
» [VDS] Papi commando megadrive :)
» Super Papi Commando
» Papi Commando - RAMPAGE ! *Megadrive*
» Papi Commando - Arcade edition !
» [VDS] Papi commando megadrive :)
» Super Papi Commando
» Papi Commando - RAMPAGE ! *Megadrive*
» Papi Commando - Arcade edition !
Page 4 sur 9
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum