Avec mon frère on a refait le starfield en C sous Codeblock... donc pas orienté spécifiquement CPC mais C moderne.
Bien sûr on a changé les parties "assembleur" par du PC sous C moderne... Mais sinon on a surtout permis que tous les paramètres soient plus redéfinissables (dimmensions, nombre d'étoile, etc...)
Juste une petite question, les librairies "CPC et Z80" elles peuvent être intégré sous Codeblocks ou il faut un autre compilateur ? Passque là moi j'ai CodeBlocks, qui à l'air assez pas mal quand même...
(je commence tout juste)
Bon là sur ma version, les pixels rapides sont plus larges, sans doute due au fait que c'est mal géré au niveau de l'affichage, entre le timer que j'ai du mettre pour ralentir la chiotte, ça ralentis pas proprement par rapport a l'affichage...
Autant de subtilités de timing qui font sans doute les joies de ce genre de programation.
Bon sinon je repost mon fichié, j'ai fait une modif et plus de //remarques (comme tout bon débutant) car je voulais voir comment faire un plan d'étoile fixe, c'est rêglé logiquement...
sinon le plan fixe créait de nouvelles étoiles qui restaient coincés en X=0...erf...
Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.
Inscription : 13 Jan 2010, 14:25 Message(s) : 2272
Le soucis, c'est que ton programme est fait pour fonctionner sur un PC. Donc c'est bien parce que tu apprends à programmer, mais ce n'est pas pensé pour la bonne plate-forme.
Quant à la limitation de la vitesse, il ne faut pas faire de boucle d'attente, mais utiliser une fonction genre waitVsync() pour avoir un frame rate constant en fonction de la fréquence d'affichage.
Bref, si tu veux vraiment programmer sur CPC (C et ASM), utilise les outils et les lib fait pour. Tu te rendra vite compte des contraintes. La, ton starfield il doit bien bouffer son Mo de RAM et plus de temps machine que tous les CPC du forum pour pinuts.
(après, si c'est plus pour taffer en programmation sur PC ensuite, c'est très bien ainsi)
Moi je lui dit que généraliser l'affichage (des fonctions logiques au lieux de valeurs fixes imposées) c'est bien beau mais pour un CPC mieux vaut le définir arbitrairement d'office car tous les CPC ont la même résolution lol... une constante c'est plus facile a calculer qu'une fonction, lol... Mais ça se comprend, mieux vaut apprendre la vrai programation généraliste puis adapter au CPc par la suite que l'inverse je pense. Faut aussi vivre avec son temps, mais être capable des deux ça peut le faire pour quand je tenterai des trucs avec un Arduino par exemple.
Mais voilà, ça me sert cas d'apprentissage, mon frère me donnant des leçons privées, on décortique ensemble, j'essaye de faire quelques lignes de codes, de comprendre seul d'abord.
Bon là avec 1000 étoiles c'est sûr le CPC il en chie un peu.
Juste une question, c'est facile de foutre en Full screen sur CPC/PLUS ? l'effet starfield d'Arkanoid1 m'a vraiment marqué étant gamin, c'était magnifique de voire ça le soir alors que la pièce est eteinte, hyper immersif.
En gros ça m'a quand même l'air plus simple d'ajouter des bouts de Assembleur dans du C que de faire du full assembleur direct et hyper spécialisé, comme tu disais.
Là je vais voir comment faire pour avoir une image fixe en fond et des starfields par dessus. Je me doute que il faudrait sur CPC idéalement double bufferer et à chaque ré-init d'affichage repartir sur l'image de fond au lieux d'un fond Noir.
La CPCmaniacos, il me semble qu'il efface chaque pixels d'étoile individuellement (les colorise en noir) puis réaffiche à la bonne couleur/coordonée.
Mais si je veux une image de fond, il me faudra sans doute la faire en un mélange de tuiles avec si possible des cases noirs complètes, ça ira plus vite a re-créer à chaque buffer... ou pas ?
genre un bon fullscreen mode0...32K (24K) dans les dents en VRAM, double buffer, re 32K... ouch...
Bon sinon oui, je vais m'installer les compilateurs Z88 machins et voir leurs interfaces... Sinon les librairies "CPC friendly" elles sont pas compatibles sous codeblocks par exemple ? Après c'est clair qu'il me suffit de tester d'abord sous codebocks (sur PC moderne donc) puis copier coller et éditer pour la version CPC.
Inscription : 13 Jan 2010, 14:25 Message(s) : 2272
MacDeath26 a écrit :
l'effet starfield d'Arkanoid1 m'a vraiment marqué étant gamin, c'était magnifique de voire ça le soir alors que la pièce est eteinte, hyper immersif.
C'est une belle astuce surtout ! En fait, l'écran ne fait que 16K (2/3 haut) et boucle en dessous (1/3 visible) ... On a donc 33% de starfield gratos !!! Hihihi (et le scroll-text qui boucle lui aussi, mais hors de l'écran ; la belle astuce)
vi ça je leuh sait... 256x256 c'est moins lourd que du 320x200... (véridique) Et en plus c'est plus facile à animer...
Arf merd, donc Akano¨¨id (Arkanoïd, the era and time are unknown, gna gna gna gna whaouw la super zique de ouf quoi c'est fini ? c'est de la feinte de recyclage de truc et le même starfield est vu 3 fois moins demi à l'écran ?
Donc en gros sur une zone raster on peut recycler la lecture de la vRaM ? (entre deux scanlines) Why not.
Quoiqu'il en soit, Arkanoid a eut un certain impact sur la démoscène CPC quand même... Avec Titan et Ghouls N ghost et donkey Kong... (et quoi ?) En gros il eut fallu ce jeux pour vraiment faire découvrir du fulll fulll screen et un tel starfield de ouf... Même les ziques sont mieux en Arkanoid 1 sur CPC... sur arcade ça me semblait moins bien pour la zique (pas la même...)... et c'était le premier jeux que j'ai vu en full screen vertical sur CPC (et depuis j'aime...)...
Inscription : 13 Jan 2010, 14:25 Message(s) : 2272
Par défaut, l'écran de 16K se répète si tu n'indique pas une autre zone mémoire pour avoir 32K. Donc, le starfield de Arkanoid c'est en gros 1,5x l'écran de 16K. (et non 3x) C'est très ingénieux et peut de personne ont du remarquer la feinte à mon avis...
C'est normal que peu de personnes aient remarqué la feinte car son écran fait 32 mots de large (64 octets) donc la transition fin de RAM=>début de RAM tombe juste.
un peu hors sujet mais le lvl3 de Arkanoid était un peu le faux casse dent.
en gros il ne fallait pas hésiter a recommencer le jeux si tu le foirais mais il y avait une technique pour le passer, et sinon prier pour que la balle ne se coince pas (ça arrivait parfois) et pour vite tomber sur le bonus violet (passe auto au next level) les 2 premiers levels il fallait les passer sans rien perdre en vie voir en gagner (bonus gris) Puis tu claquais facilement une vie ou deux a entamer le level3... puis si tu arrivais a insérer la balle avec le bon angle, ça passait tout seul.
Sinon vous avez des exemples pour faire un moteur de tuiles en C sur CPC ? Faudrait que je regarde de plus près les sources de Lala prologue et des divers jerux espaniols avec ce moteur.
Je débatais avec mon frère lors de mon dernier "cours d'informatique". Il me dit souvent que les CPC ça sert à rien, que je parle de trucs que je ne connais pas. Sauf que lui non plus il connais rien sur les vieux 8 bits finalement.
Bref. Pour rafraichir/remettre à zéro une bank de 16K. Genre tu fait un moteur d'affichage, avec double buffering et bien sûr config 6128 (donc quelques banks en réserves). Il me semble qu'il y a dans le Firmware une fonction pour "clear screen"... donc finalement foutre une page/bank en couleur0/que des 0 bref RAZ de la bank ?
ça prend combien de temps machine pour faire ça ?
Autre point, mon frère m'a dit que les tuiles c'était surtout pour gagner de la RAM/ROM... c'est sûr que un écran d'un niveau complet en graphismes originaux, c'est énorme pour les vieilles machines. Mais moi je lui disait que c'était aussi un moyen de générer un écran complet plus rapidement aussi... Car après tout ces vieilles machines ont en général un système de caractères et texte... le mode texte est une sorte de sytème de tuile, voir sur Zx Spectrum ou les caractères ASCI sont facilement remplaçables par des tuiles. Sur CPC il y a quoi en hard qui aide pour ça ?
Lui il est "moderne", pour remplir un écran de fond il charge une grosse image. Mais sur CPC, imaginons qu'on veuille un écran avec un fond et un starfield par dessus... En gros on a l'image de fond, "plein écran" donc 16K stockée sur une bank quelque part.
On doit la recharger dans le buffer suivant, bref copier 16K sur 16K... Puis faire la nouvelle frame du starfield par dessus.
Vaut il mieux axer sur une image de fond relativement tuilée (l'image contiendra pas mal de "tuiles noirs") ou faire comme il a dit (moi j'en doute mais bon)
Inscription : 20 Août 2007, 18:21 Message(s) : 5003
Citer :
One new and interesting tutorial to enhance the content of the new section Programming Tutorials: -Snake: Minigame with tile's, keyboard and sprites (C & ASM with SDCC) -Updated the tutorial SDCC vs z88dk: Comparing size and speed of the binaries generated for Amstrad CPC including in the last test the results with the new version of z88dk v1.10.
Inscription : 20 Août 2007, 18:21 Message(s) : 5003
Citer :
NEW AMSTRAD CPC PROGRAMMING TUTORIALS Two new tutorials on the section Programming Tutorials: - Keyboard: Reading HW, multiple simultaneous keypresses, redefine (C & ASM with SDCC) - Fire: Attempt to make a fire effect and optimization (C with SDCC)
Inscription : 20 Août 2007, 18:21 Message(s) : 5003
Citer :
20/02/2014 Two new tutorials on the section Programming Tutorials: - Sound I: The easiest way (C & ASM with SDCC) - Loading files from disk using firmware (C & ASM with SDCC)
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 16 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum