Neo-Geo Fans  
Précédent   Neo-Geo Fans > LE FORUM > .: CREATION
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 31/12/2013, 15h43   #1
HPMAN
 
Avatar de HPMAN
 
Date d'inscription: avril 2002
Localisation: dans ton cul
Messages: 2 874
[dev] WIP lib graphique

Hop, petit topo sur des travaux en cours sur une librairie graphique et des tools qui vont bien. (pas comme ceux dispo actuellement quoi )

Le but de la lib est donc pour l'instant de gérer trois types d'éléments "de base": image fixe, scroller et sprite animé.
Voila donc comment tout ça se présente à l'heure actuelle.
  • Formats d'entrée
    - Fichier PNG, 32bppArgb.
    - Pas de limite de nombre de couleurs, hormis 15 par tile evidemment.
    - Transparence sur couleur mauve (#ff00ff) et/ou pixels transparents.



  • Préparation / conversion des données
    - Référencement de tous les assets dans un fichier XML. Spécifier le type de donnée, le fichier d'entrée et un ID pour l'identifier dans le programme.
    - Énumérer les frames pour les sprites animés.



    - Une fois que tout est référencé, on passe tout ça à la moulinette.



  • Format de sortie

    - Fichier binaire contenant les données graphiques, à charger à la place des traditionnelles rom "C"
    - Fichier ASM contenant les tilemaps, palettes, etc. A intégrer à votre projet.



  • Animation
    - Etape supplémentaire pour les sprites animés, bah faut les animer
    - Création des différentes animation et de leurs étapes, positions, durées, etc...
    - Sortie d'un fichier ASM supplémentaire, à intégrer au projet également.


  • Utilisation/demos
    - La lib vise une utilisation simple des données, en écrivant un minimum de code.

    Exemples, demo scroller :
    Code:
    int main(void) {
    	int x=27;
    	int y=0;
    	BYTE p1,p2;
    	Scroller bgscroll;
    
    	initGfx();
    	scrollerInit(&bgscroll, &ms3bg_Map[0], 1, 16, x, y);
    	palJobPut(16,ms3bg_Palettes[PAL_SIZE],ms3bg_Palettes);
    	SCClose();
    
    	//scroller test
    	while(1) {
    		wait_vblank();
    
    		p1=volMEMBYTE(P1_CURRENT);
    		p2=volMEMBYTE(P2_CURRENT);
    
    		if(p1&JOY_UP)	y--;
    		if(p1&JOY_DOWN)	y++;
    		if(p1&JOY_LEFT)	x--;
    		if(p1&JOY_RIGHT)	x++;
    
    		for(i=0;i<4000;i++);
    		
    		ns_jobMeterColor(JOB_BLUE);
    		scrollerSetPos(&bgscroll, x, y);
    
    		if(p1&JOY_B) {
    			scrollerInit(&bgscroll, &ms3bg2_Map[0],1, 16, x, y);
    			palJobPut(16,ms3bg2_Palettes[PAL_SIZE],ms3bg2_Palettes);
    		}
    		if(p1&JOY_C) {
    			scrollerInit(&bgscroll, &ms3bg3_Map[0],1, 16, x, y);
    			palJobPut(16,ms3bg3_Palettes[PAL_SIZE],ms3bg3_Palettes);
    		}
    
    		ns_jobMeterColor(JOB_GREEN);
    		SCClose();
    	}
    }
    Vidéo: Demo scroller


    Demo image et sprite animé:

    Code:
    int main(void) {
    	int x=27;
    	int y=0;
    	BYTE p1,p2;
    	Picture testPict;
    	aSprite demoSpr;
    
    	initGfx();
    
    	pictureInit(&testPict, &andypict_Map[0],1, 16, x, y);
    	palJobPut(16,andypict_Palettes[PAL_SIZE],andypict_Palettes);
    
    	aSpriteInit(&demoSpr,32,32,bmary_spr,64,164,0);
    	palJobPut(32,bmary_spr_Palettes[PAL_SIZE],bmary_spr_Palettes); 
    	
    	SCClose();
    
    	//picture/sprite test
    	while(1) {
    		wait_vbl();
    
    		p1=volMEMBYTE(P1_CURRENT);
    		p2=volMEMBYTE(P2_CURRENT);
    
    		if(p1&JOY_UP)	y--;
    		if(p1&JOY_DOWN)	y++;
    		if(p1&JOY_LEFT)	x--;
    		if(p1&JOY_RIGHT)	x++;
    
    		for(i=0;i<4000;i++);
    		ns_jobMeterColor(JOB_BLUE);
    
    		if(p1&JOY_A) {
    			aSpriteSetAnim(&demoSpr,BMARY_SPR_ANIM_IDLE);
    		}
    		if(p1&JOY_C) {
    
    			aSpriteSetAnim(&demoSpr,BMARY_SPR_ANIM_WALK);
    		}
    
    		pictureSetPos(&testPict, x, y);
    		aSpriteAnimate(&demoSpr);
    			
    		ns_jobMeterColor(JOB_GREEN);
    		SCClose();
    	}
    }
    Vidéo: Demo animation

    Il y a un jobmeter dans les videos pour observer la charge, en bleu le temps passé dans la lib, en rouge le temps de mise à jour pendant le vblank. C'est la qu'on gagne le plus de temps par rapport aux lib actuelles, grosse réduction du tearing.


Voila ou ça en est pour le moment, il manque encore des tonnes de choses et il faudra vérifier que tout ceci n'est pas trop lourd pour être utilsé en situation réelle.

Verra la suite l'année prochaine
HPMAN est déconnecté   Réponse avec citation
Vieux 31/12/2013, 16h04   #2
ftek
Autiste confus
 
Avatar de ftek
 
Date d'inscription: février 2010
Localisation: Findus city
Messages: 323
Tu gères, moi je prends ma retraite (après avoir rien foutu)
Bon courage pour la suite, même si t'as l'air d'avoir fait le plus gros !
ftek est déconnecté   Réponse avec citation
Vieux 31/12/2013, 17h17   #3
kogami
 
Avatar de kogami
 
Date d'inscription: juin 2005
Localisation: Paris
Messages: 844
Ouah
C'est excellent ça !!!

Tu vas rajouter le support du son prochainement ?
Y a aussi la gestion des collisions qui faut rajouter.

Il serait bon quand même de tester ton code sur le vrais hardware car les ému on tendance à être permissif et tu risque d'avoir pas mal de surprise.

En tout cas bon courage pour la suite, tu t'attaque à du lourd là

Dernière modification par kogami 31/12/2013 à 17h24.
kogami est déconnecté   Réponse avec citation
Vieux 31/12/2013, 21h20   #4
HPMAN
 
Avatar de HPMAN
 
Date d'inscription: avril 2002
Localisation: dans ton cul
Messages: 2 874
Testé les parties critiques (update vram) sur le vrai hard sans soucis, pour le reste pas de raison particulière pour que ça ne fonctionne pas.

Collisions idéalement faudrait ajouter la création de hitbox dans l'outil d'animation, mais c'est à voir, les besoins varient d'un jeu à l'autre.
HPMAN est déconnecté   Réponse avec citation
Vieux 01/01/2014, 18h03   #5
Chapp
Fatti sò
 
Avatar de Chapp
 
Date d'inscription: mai 2008
Localisation: Tres Cruces
Messages: 17 709
C'est héroïque.

Joli.
Chapp est déconnecté   Réponse avec citation
Vieux 01/01/2014, 19h25   #6
wyoui
 
Avatar de wyoui
 
Date d'inscription: mars 2008
Localisation: Villeurbanne
Messages: 4 665
Ce serait magnifique de voir ce topic toucher à son but.
__________________
"heuuu, je suis pas sur de ce que j'invente hein!"
wyoui est déconnecté   Réponse avec citation
Vieux 01/01/2014, 19h42   #7
Tarma
heavy machine gun!
 
Avatar de Tarma
 
Date d'inscription: septembre 2003
Localisation: sud-ouest
Messages: 30 442
Même si je n'y capte pas grand chose, chapeau !
Tarma est déconnecté   Réponse avec citation
Vieux 01/01/2014, 19h47   #8
banzai
万歳
 
Avatar de banzai
 
Date d'inscription: avril 2002
Localisation: dans ta face
Messages: 1 406
c'est bôôôo.
Dommage que je n'ai pas de compétence dans du code.
Beau projet n'empèche,bon courage
banzai est déconnecté   Réponse avec citation
Vieux 01/01/2014, 20h31   #9
kogami
 
Avatar de kogami
 
Date d'inscription: juin 2005
Localisation: Paris
Messages: 844
La finalité de tout cela sera de créer quelle type de jeux ?
Les outils seront rendu public ?
kogami est déconnecté   Réponse avec citation
Vieux 01/01/2014, 20h42   #10
sengoku 2
 
Avatar de sengoku 2
 
Date d'inscription: décembre 2005
Messages: 4 632
Bravo Hp Man.
Mais comme Tarma, je ne capte pas vraiment à quoi ça va servir et faire avancer le développement homebrew. Je me doute bien que ça constitue un travail titanesque.
Voilà quoi, on n'est pas tous câlé niveau Tools etc...
sengoku 2 est déconnecté   Réponse avec citation
Vieux 01/01/2014, 22h03   #11
wyoui
 
Avatar de wyoui
 
Date d'inscription: mars 2008
Localisation: Villeurbanne
Messages: 4 665
Si j'ai bien compris le titre, HPman va faire une bibliothèque C pour programmer sur Neo·Geo.

Une bibliothèque, c'est un ensemble de fonctions qui permettent de "faire des trucs" comme créer/afficher/animer des groupes de pixel (donc ultimement, des persos, des décors etc...).

Ca fera avancer le développement homebrew en celà que si cette bibliothèque est complète et claire d'utilisation, quelques compétences en C permettrons à un amateur de créer son propre jeu sans avoir à développer ses propres fonctions.

C'est un peu comme si HPman te donnait un marteau, un tournevis, les vis, les pinces etc.. Pour monter ton meuble dont tu aurais dessiné les plans.

Edit : d'après ce que je comprends, tu dois d'abord créer ton image en format PNG, et ensuite, tu utilises la bibliothèque pour faire afficher/animer cette image.
__________________
"heuuu, je suis pas sur de ce que j'invente hein!"

Dernière modification par wyoui 01/01/2014 à 22h10.
wyoui est déconnecté   Réponse avec citation
Vieux 01/01/2014, 22h23   #12
HPMAN
 
Avatar de HPMAN
 
Date d'inscription: avril 2002
Localisation: dans ton cul
Messages: 2 874
C'est sûr que pour celui qui programme pas et a jamais touché à la lib de base, l'avantage saute pas aux yeux.

Déjà, fini les décors en 15 couleurs (dédice le cortex )
HPMAN est déconnecté   Réponse avec citation
Vieux 01/01/2014, 22h43   #13
sengoku 2
 
Avatar de sengoku 2
 
Date d'inscription: décembre 2005
Messages: 4 632
Donc, Hp Man s'attaque clairement à un gros morceau qui risque de faciliter la tâche des programmeurs.
Tant mieux alors.
Après je ne saurai situer ce projet par rapport au logiciel Neobitz.
Mais pourvu que ça se finalise assez rapidement, ça risque de remotiver Ftek par exemple.
Mais Ftek en garde sous le coude, il doit en savoir suffisamment sur ce fameux Hayaku programmer de Le Cortex.
sengoku 2 est déconnecté   Réponse avec citation
Vieux 01/01/2014, 23h22   #14
Arngrim
Bad Sheep
 
Avatar de Arngrim
 
Date d'inscription: décembre 2003
Localisation: Sur mon Scopaco Cycle
Messages: 23 491
Et pendant ce temps...

Citation:
Posté par kogami Voir le message
Les outils seront rendu public ?
Arngrim est déconnecté   Réponse avec citation
Vieux 01/01/2014, 23h57   #15
Chapp
Fatti sò
 
Avatar de Chapp
 
Date d'inscription: mai 2008
Localisation: Tres Cruces
Messages: 17 709
Bah oui, on veut savoir!
Chapp est déconnecté   Réponse avec citation
Réponse


Outils de la discussion
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : oui
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h51.


Édité par : vBulletin® version 3.6.8
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #12 par l'association vBulletin francophone
Neo-Geo Fans !