MSX Village forum

La Place des Développeurs Test Fusion-c

Cricri Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 21/04/2023 à 20h15

Messages: 54

Le 17/07/2023 à 09h13
Hello,

Il y a quelques mois je me suis offert le livre Fusion-C.

Vu que je suis fan de MSX, de C et de Popolon, je me suis amusé lors de ma semaine passé de vacance entre la plage et
les Paella, à tapoter le POC (Proof Of Concept comme on dit dans la profession) suivant pour voir ce qu'il était possible de faire...

L'environnement de Developpement proposé est pas mal du tout... Le bouquin peut paraitre un peu light mais bon Google fait le reste...

Je n'ai pas démontré tout ce dont j'ai besoin pour la suite du projet, mais un c bien compilé permet de faire pas des choses intéressante et assez rapidement...

J'ai quand même noté que si on met des Cosinus et des Sinus dans les calculs de Saut, il y a une certaine latence... :). mais bon ça s'optimise...


Etapes suivantes :

-Faire taper avec l'épée
-Un fond d'écran digne de ce nom...
-Faire bouger un ennemi (Sprite ou dans le fond d'écran, ça dépend de sa taille, vu les limites techniques de 8 sprites par ligne je crois...)
-Du son
-Faire du 1 v 1 (pas d'intelligence à donner à un ennemi)
-Faire bouger un ennemi (pas trop bête si possible)
-De la musique...

ça donne bien des idées...
Après il faut prendre en compte les limites de mémoire etc... je suis déja à 60 Ko, une image screen 8, ça prend trop de place, je comprend mieux pourquoi les jeux sont en screen 5...

ce n'est pas grand chose, juste un petit début...

poc_d6b6b

A plus ! ;)


PS : le forum ne permettant pas de télécharger de .SC8 et de .COM, comment puis-je faire pour mettre à disposition un fichier ?


Cricri. Edité par Cricri Le 17/07/2023 à 09h18
   
VieuxBouz1 Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 13/05/2023 à 09h12

Messages: 189

Le 17/07/2023 à 09h25
Hello.
J'ai une question pour "les sprites" et une fonction qui n'existe que sur MSX2 et supérieurs : copy vram to vram.
Comment est-ce abordé dans le bouquin ?

le pourquoi :
La fonction XOR, collée à cette fonction graphique, permet de positionner un bloc (carré ou rectangle) d'un endroit de la VRAM vers un autre mais en utilisant la transparence (vu ça au... siècle dernier...). De mémoire donc, tu copie-colle ton bloc d'une zone d'une page non visible vers une zone de la page vidéo active sans écraser les pixels qui seraient couverts par la couleur 0, transparente (à re vérifier). Et l'opération inverse restitue la zone initiale active sans la dégrader.
Par contre, la détection est impossible via la fonction dédiée aux sprites hard. Mais dans l’absolue si les sprites sont employés par superpostion (façon Konami pour augmenter le nombre de couleurs), cette fonction ne peut plus être employée.

L'avantage majeure du screen 05 étant de disposer de 04 pages ou plutôt de 02 couples de pages. Le 00 et 01 et le 02 et 03.
Logiquement, le transfert de 0 vers 1 et inversement et plus rapide que de 1 vers 2.

MsxLegend pourrait peut-être infirmer / confirmer cela ?
Si je dis de grosses énormités, ne surtout pas hésiter à me le dire :top


Pourquoi s'évertuer à voler avec des aigles quand on travaille avec des dindes...
   
Cricri Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 21/04/2023 à 20h15

Messages: 54

Le 17/07/2023 à 10h14
Hello,

Il y a bien des fonctions qui permettent de copier des portions de mémoire de la RAM vers la VRAM et de la VRAM vers la VRAM.

je pense qu'elles doivent permettre de faire des boss animées à tester en effet, ça fait partie de la phase faire bouger un ennemi...
Après pour éviter les problématiques de transparence de fond d'écran je partais sur un fond uni dans un premier temps, voir ce que ça donne avec un XOR, voir si on a un fond sur lequel on se déplace et on recopie les parties que l'on a précédemment écrasé... voir la solution la plus optimum...
Et pour ce qui est de la détection elle n'est possible qu'entre sprite, on peut coller des sprites invisibles autour du monstre ou gérer à la mimine tout ça... Après si on superpose on peut ignorer les superposés... et prendre en compte les autres collisions... A tester voir si ça met pas le brin...

Screen 5 ou pas, on verra, pour l'instant ça pas trop d'impact sur le code... mais il est clair que ça permet d'avoir 3 fois plus d'écran cachés.. et moins d'octets à bouger donc plus de rapidité...



Edité par Cricri Le 17/07/2023 à 10h16
   
VieuxBouz1 Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 13/05/2023 à 09h12

Messages: 189

Le 17/07/2023 à 10h27
Yep.
Les autres ordis n'ayant pas ce genre de "facilités cablées en hard", utilisent les fameuses hitbox. Qui doivent rajouter un laps de temps de calcul...

Les 128ko de VRAM restent un confort appréciable, dès lors que le jeu est développé pour MSX2 ou ultérieur cela ouvre vers de belles possibilités.

Tiens nous au jus, c'est super :top


Pourquoi s'évertuer à voler avec des aigles quand on travaille avec des dindes...
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2702

Le 17/07/2023 à 15h15
Cricri :
J'ai quand même noté que si on met des Cosinus et des Sinus dans les calculs de Saut, il y a une certaine latence... :). mais bon ça s'optimise...


Les calculs de Sinus et Cosinus sont très lourds pour notre pauvre petit Z80. Tu ferais mieux d'utiliser une table précalculée.

Par exemple, tu précalcul 72 Sinus (si un pas de 5° te suffit comme précision) et tu remplaces tes fonctions trigonométriques par des accès à ce tableau. En bonus, il suffit de décaler ton tableau d'un quart (18 dans le cas d'un tableau de 72 entrées) pour passer du Sinus au Cosinus. Tu n'as donc besoin que d'un seul tableau.

Et si tu veux encore accélérer les choses, prends une table de taille puissance de 2 (32, 64, 128, ...). Ça va rendre les divisions et les multiplications quasi gratos (SDCC va les convertir en décalage de bits). Edité par aoineko Le 18/07/2023 à 08h08


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 18/07/2023 à 08h12
Salut,

Merci de tester Fusion-C.
La version actuellement disponible de fusion-c est relativement limitée.
Je serai heureux de partager avec vous la version 2.0 beta qui devrait sortir cette année.
Elle est plus complète , plus optilisée, et permet de créer des ROM.

En parrallèle je suis en train de finaliser un jeu avec la version 2.0
https://youtu.be/XWOQ6k6MQOI

Un portage d’un jeu NES de 1985 (Il est quasi terminé, mais je viens finalement de trouver le moyen de créer une ROM de 64KO au lieu des 48KO habituels (ROM sans Mapper) donc j’ajoute des petites choses ….


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 18/07/2023 à 08h13
Aoineko à raison, le Z80 n’aime pas trop les calculs… Il vaut mieux passer par des tables précalculées….


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie