CPC Rulez
https://cpcrulez.fr/forum/

Pendez les ingénieurs Amstrad
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4974
Page 1 sur 3

Auteur :  Nori [ 29 Nov 2012, 01:28 ]
Sujet du message :  Pendez les ingénieurs Amstrad

Rien d'obscure ou d'insultant derrière ce titre vindicatif.
Je viens de passer 2 heures à lire une doc sur le Z80 et la gestion de la mémoire vidéo sur Amstrad CPC.
Je comprends mieux pourquoi les scrollings horizontaux ou multidirectionnels sont un problème sur CPC. Pourquoi les ingénieurs d'Amstrad ont fait si compliqué ?
Je me disais avant de commencer à lire la doc "faire un affichage d'une image + un scrolltext en bas de page" ça va être plié en 2 soirées. Non ! D'où mon coup de gueule déçu.
Bonne nuit,

PS : Si vous me permettez une autre remarque désobligeante : Pourquoi des tutos ASM si avancés et pointus ? Alors qu'il serait judicieux de rajouter de simples routines commentées pour les débutants que je suis : Genre, un scrolltext 8x8 en mode 0, des exemples de replays, affichage simple (ou avec déplacement) d'un Bob à coordonnées fixe. La motivation et l'encouragement des débutants c'est pas à négliger. Ce que j'en dis... :)

Auteur :  Hwikaa [ 29 Nov 2012, 07:03 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Pour avoir eu moi-même l'envie de tenter la prog en assembleur Z80, je dois avouer que l'absence de "cours" vraiment progressifs représente un frein non négligeable. Je ne laisse pas tomber mais c'est un fucking obstacle, quand même. Dans l'hypothèse un peu folle où je voudrais essayer de coder un petit jeu, je ne sais toujours pas par quoi commencer.

Alors oui, oui, je chope des bouts de code par-ci, par-là, et je commence à comprendre certaines choses (j'ai, par exemple, expérimenté une image avec un max de rasters pour voir jusqu'où je pouvais aller en nombre de couleurs simultanées en mode 1) mais ça ne m'aide pas du tout à concevoir from scratch un jeu.

Du coup, je suis tristesse et déception et je repousse le projet. :D

Auteur :  MacDeath26 [ 29 Nov 2012, 07:32 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Citer :
Pourquoi les ingénieurs d'Amstrad ont fait si compliqué ?
Ce qui peut sembler simple et évident en 2012 ne l'est vraiment pas forcément en 1983.

Faut quand même voir les contraintes que sont le coût le plus bas possible avec un max de composants "off the shelf" = le moins possible de composants customs...

Et le fait que les ingénieurs de chez Amstrad avaient surtout l'expérience de la HiFi et non de l'informatique, informatique qui était encore quelque chose de très nouveaux d'ailleurs...

le Z80 fut inventé même pas 10 ans avant (8 ans avant 1984... 1976) et avant le Z80... il n'y avait plus ou moins rien de pré existant en matière de microprocesseur "abordable".

voyons voir... le 8080 dâte de 1974... 10 ans avant en effet.
le 6502 lui dâte de 1975... donc on est encore sur une technologie toute récente, assurément la première génération (1 et demi en fait ?) disponible et abordable pour l'industrie... avant bin euh... de grandes armoires pleines de "lampes", de la mémoire tricoté, et des trucs top secret développés par la NASA et l'armée Américaine (ou Anglaise aussi) en gros...

Enfin Alan Sugar a tout fait pour que sa machine ait le moins de composants possible et donc ait une marge maximale, et ait le moins de pièces custom possible aussi.

C'est sûr, si le Gate Array avait été un ASIC 2x plus balèze dès le départ pour une machine prévue en 128K de RAM dès le départ aussi, le tout axé jeux et animation... on peu rêver sur la puissance possible.

Mais il n'en fut rien.
le CPC est un ordi Z80 assez basique censé juste pouvoir faire tourner un Basic et CP/M... pour équipé des bureaux désireux de faire leur comptabilité et leur gestion de stocks.
Rien de bien ludique donc au départ.

Des sprites ? pourquoi faire, la souris était loin d'être la norme donc pas trop besoin de sprites hards pour le curseur...
Des scrollings smooth ? idem, un tableur n'as pas besoin de scrollings smooth, du scrolling au caractère suffit largement.
Un arbitrage de RAM entre le circuit vidéo et le CPU ? la vrai VRAM et les DMA coutent cher et de toute façon la machine n'aura que 64K... Et puis bon, c'est pas comme si un tableur sous CP/M datant de 1979 tournera lentement sur un CPC464 en 1984 par rapport aux autres machines... et au moins on a du 640x200 (tiens, prend ça Sinclair!)...


Un miracle que le circuit vidéo ai eut une base de pseudo carte CGA simplifiée mais néanmoins amélioré sur bien des points...et donc des modes Vidéos certes lourds mais une palette de plus de 15-16 couleurs au total, et des résolutions quand même potentiellement supérieur à bien des machines... bref exploitable malgré lui...
Et que la machine ait eu une puce sonore classique et non un simple buzzer à la con.

Même topo pour l'Atari ST... finalement il aurai pu n'avoir qu'un Buzzer et des mdoes Vidéo à la con encore moins bons (genre du 256x192x4 seulement... voire des attributs par caractère... voire des trucs genre le Sinclair QL quoi...)

L'idéal aurait sans doute été une machine combinant des aspect des PCW ET du CPC...
En gros un PCW couleur avec un AY. :D

Auteur :  Plissken [ 29 Nov 2012, 08:39 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Essaye ici,il y a des cours :

http://amstrad.eu/modules/smartsection/category.php?categoryid=15

Donc 3 cours que j'ai écris il y a un bout de temps.(cherches plissken)

Ici aussi tu a des cours.

http://cpcrulez.fr/coding_menu-asm2.htm#antibug

Auteur :  fano [ 29 Nov 2012, 10:02 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Nori a écrit :
Je comprends mieux pourquoi les scrollings horizontaux ou multidirectionnels sont un problème sur CPC. Pourquoi les ingénieurs d'Amstrad ont fait si compliqué ?
Compliqué, pas vraiment , disons qu'ils ont cherché à réduire le cout en utilisant au mieux certains composants.Après , honnêtement , faire un scroll hard sur CPC n'a rien de bien compliqué , faut juste chercher à comprendre l'électronique de la machine avant de se ruer sur le code comme comment la VRAM est organisée et lire un peu les datasheets du CRTC, la programmation du Z80 n'a rien de sorcier non plus, juste une bonne doc à portée de main quand on écrit =)

Les articles c'est bien mais faut un minimum de bases théroqiues, essaies déjà de regarder un peu le Grimware ( http://www.grimware.org/doku.php ) que je trouve très bien ainsi que le quasar ( par contre il a l'air offline, si quelqu'un sait si l'adresse a changé ou si il y a un souci) qui est carrément super.

Auteur :  Plissken [ 29 Nov 2012, 11:30 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Offset prévenu via la mailing liste amstrad.

Auteur :  MacDeath26 [ 29 Nov 2012, 12:44 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

à ce propos, faire du double buffering n'aide t'il pas à faire du scrolling horizontal plus fluide d'ailleurs ?
Et avoir donc aussi 128K de RAM...

ça implique donc de savoir proprement bankswitcher et rêgler la bank faisant office de VRAM probablement.

En gros (méthode de R-Type128k non ?) si j'ai bien compris :

Le scrolling hard du CPC scrolle à l'octet... soient 2 pixels Mode0 (= 4 pixels mode1 = 8 pixels mode2... bref du scroll au caractère type mode2 en fait).

En mode0 donc, si on double bufferise, on peut alors stocker 2 sets de tuiles format Caractères 4x8, avec un décalage de 4 bits (= 1 pixel) entre les deux sets.
ou alors des tuiles de 8x16 (equivalent 16x16 en pixels mode1) et 4 sets, tous décalés , etc...

Et donc on effectue sur chaque buffer un scrolling de 1byte/octet... en switchant d'un buffer à l'autre on a bien un scrolling au pixel mode0.

Bien sûr devoir ajoute des sprites masqués par dessus boofe tout le CPU et donc ça peut chier quand même (= ramer du cul).

Après pour coder ça en Assembleur, désolaid, je sais pas faire. :sweatingbullets:

@Nori : il me semble que si tu débutes mais sais déjà coder en C par exemple, tu devrais alors plutôt commencer par faire ton programme en C puis remplacer petit à petit les éléments constitutifs du programme par de l'assembleur... ça peut t'aider a organiser ton programme et certaines parties comme un menu ou des phases de transition ou encore organiser les chargements en RAM n'ont pas toujours besoin d'être 100% assembleur pour bien marcher.

Auteur :  shap [ 29 Nov 2012, 13:33 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

MacDeath26 a écrit :
à ce propos, faire du double buffering n'aide t'il pas à faire du scrolling horizontal plus fluide d'ailleurs ?
Et avoir donc aussi 128K de RAM...
Non
MacDeath26 a écrit :
Le scrolling hard du CPC scrolle à l'octet... soient 2 pixels Mode0 (= 4 pixels mode1 = 8 pixels mode2... bref du scroll au caractère type mode2 en fait).
Non plus

MacDeath26 a écrit :
Bien sûr devoir ajoute des sprites masqués par dessus boofe tout le CPU et donc ça peut chier quand même (= ramer du cul).
Non

MacDeath26 a écrit :
Après pour coder ça en Assembleur, désolaid, je sais pas faire. :sweatingbullets:
Sans déconner :D

MacDeath26 a écrit :
@Nori : il me semble que si tu débutes mais sais déjà coder en C par exemple, tu devrais alors plutôt commencer par faire ton programme en C puis remplacer petit à petit les éléments constitutifs du programme par de l'assembleur... ça peut t'aider a organiser ton programme et certaines parties comme un menu ou des phases de transition ou encore organiser les chargements en RAM n'ont pas toujours besoin d'être 100% assembleur pour bien marcher.
Et encore non...

Auteur :  fkey [ 29 Nov 2012, 13:35 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

salut,

Si tu veux débuter :
- Garde une copie du manuel utilisateur sous la main (comme ça tu as au moins la liste des instructions) : http://www.zilog.com/docs/z80/um0080.pdf
- Défini toi un environnement de développement
-> Soit sur machine réelle auquel cas il te faut un assembler (DAMS ou MAXAM sont les plus connus)
-> Sur sur une machine virtuelle auquel cas Winape et son assembler integré semble être un bon candidat

Une autre documentation interessante ets celle du firmware cpc : http://www.cantrell.org.uk/david/tech/c ... rmware.pdf
Ca te donne les points d'entrés, parametres et valeur de retour des fonctions du system (OS)
Ca te donne également la disposition de l'OS dans la mémoire et te permet ainsi de ne pas "écraser" des trucs dont tu aurais besoin

Les quasars sont un bon point de départ pour assimiler des notions sur les composants présents dans le cpc (CRTC, gatearray, etc.) : "http://quasar.cpcscene.com/"

Mon conseil : essayer des trucs moins ambitieux pour un début, genre : afficher des chaines de charactères en utilisant les fonctions du firmware, puis aller progressivement vers des trucs plus complexes.
Les questions devraient venir naturellement au cours de ce processus (du genre pourquoi mon programme tourne trop vite -> parcequ'il faut se synchroniser sur le début du balayage vidéo, etc.)
N'hésitez pas à poser des questions dans le forum, il y a un tas de gens ici qui sauront répondre à vos questions.

@MacDeath26 : On ne peut afficher à l'écran que ce qui se trouve sur la première bank de 64Ko (contrainte hardware)

Auteur :  Plissken [ 29 Nov 2012, 13:36 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Il scroll au mot(word),sois 2 octets.

un simple poke &c002,255 suivis de out &bc00,13:out &bd00,1 te le confirmera.

@Shap:tu m'a devancé :)

Auteur :  MacDeath26 [ 29 Nov 2012, 14:09 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

arf grilled, décidément... j'ai plus qu'a me censurer... et revoir ma copie... :oops:

Auteur :  shap [ 29 Nov 2012, 15:05 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

MacDeath26 a écrit :
arf grilled, décidément... j'ai plus qu'a me censurer... et revoir ma copie... :oops:
Ou bien apprendre à coder, pour faire des posts aussi long, c'est que tu es passionné quelque part, donc autant apprendre plutôt que de faire des hypothèses fumeuses dans des postes de 18km de long :D tu as dit d'autres trucs louches dans d'autres postes récents mais vu la taille, répondre à ça point par point demande d'avoir pas mal de temps devant soi....

Auteur :  Nori [ 29 Nov 2012, 19:38 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Je pensais me faire vilipender avec mon post mais en fait non, je reçois des réponses sympa et qui tente de m'aider. Ca c'est cool.
En fait, je vous explique le contexte de mon post, rien d'extraordinaire ceci dit.
Je suis en train de grapher quelques écrans -2 pour l'instant- et je me suis dit que ce serait plus sympa de rajouter un scrolltext horizontal et une musique. Et, comme j'ai pensé faire mon scroll au pixel près, je me suis vite rendu compte qu'avec la méthode bourrin -à coup de décalages logiques- ça devenait un cauchemar -tu fais ton décalage de bits et ensuite tu es obligé de ré-encoder tes bits pour ne pas altérer les couleurs...enfin si j'ai bien compris le tuto que j'ai lu-.
Je vais revoir mes prétentions à la baisse. Merci pour les conseils et les liens. J'en aurais besoin dès que j'attaquerais le code.
++

Auteur :  hERMOL [ 29 Nov 2012, 20:49 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

si t'y connais rien (je sent que le lynchage est pour moi) , utilise ce soft et fais toi plaisir ! ---> https://cpcrulez.fr/demostestTOG_NWC-demomaker.htm :cow:

Auteur :  markerror [ 29 Nov 2012, 21:08 ]
Sujet du message :  Re: Pendez les ingénieurs Amstrad

Bonsoir,

Nori, vu ce que tu décris, j'ai l'impression que tu veux faire passer un scroll par dessus tes dessins. C'est pas forcément le truc le plus facile à faire effectivement si tu démarres l'assembleur car cela nécessite quelques notions sur le codage des pixels sur CPC. Et accessoirement, ça bouffe pas mal de temps machine.
Faire un scroll sur un fond uni est beaucoup plus simple.

T&J/GPA

Page 1 sur 3 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/