NGDK
+3
Hpman
drfloyd
Orion_
7 participants
Page 1 sur 1
NGDK
Alors je présente mon projet actuelle , un SDK pour la Neo Geo.
Voici une démo que j'ai faite :
C'est le résultat en 10 jours , oui le SDK est très jeune
Il permet de gérer les format de Tiled le TMX , pour gérer 2 Backgrounds , il gérera aussi auto-anim (pour le BG).
Pour le moment ce qui est gerer : background, sprites, animation, scroll, joypad.
Mais de façon optimisé et automatique , niveau prog le code est léger par exemple un affichage simple du fix et d'un sprite :
Ce qui donne :
Voici ma Todo List :
-Flip Vertical 0.55
-compress/decompress map 0.6
-Hicolor 0.65
-bullet 0.7
-collision/hitbox 0.8
-Yorder(Zorder) 0.9
-sound driver 1.0
Et le Hicolor j'y tiens avoir des sprites de 30 couleurs ça envoie
La compression des map , c'est que la Neo Geo bouffe pas mal , par exemple la map actuel fait 14ko (et mon binaire fait 21ko donc il prend pas mal) , mais surtout que ça peut bouffer rapidement pour des map très grande , donc je compte la compresser , j'ai compresser la map de Metal slug , et elle me donne 800 octets
Le SDK disponible ici : NGDK
Cela reste encore une version Beta , tournant sur Linux , je n'ai pas pu faire plein de test pour les user Windows.
Pareil pour la lib , je l'ai pas forcément pousser encore plus que ça ^^
Note pour HPMAN , vu qu'il m'avait répondu sur twitter :
Ben je pense que mon SDK peut apporter un plus , pour le Hicolor , la compression (des map mais aussi des musiques , mon expérience sur SNES a été très fructueuse ) , une gestion facile des map avec Tiled (il permettra aussi le placement des ennemis et des collisions).
Et je pense (mais ça peut être subjectif ?) un code léger et facile à utiliser , il a aussi peu de dépendance , le code à vide fait 5ko (aller avec un simple hello world par exemple)
Voici une démo que j'ai faite :
C'est le résultat en 10 jours , oui le SDK est très jeune
Il permet de gérer les format de Tiled le TMX , pour gérer 2 Backgrounds , il gérera aussi auto-anim (pour le BG).
Pour le moment ce qui est gerer : background, sprites, animation, scroll, joypad.
Mais de façon optimisé et automatique , niveau prog le code est léger par exemple un affichage simple du fix et d'un sprite :
- Code:
#include <NGDK.h>
#include "data/data_ext.h"
void example2(void)
{
NG_ClearFix(); //Clear Fix
NG_SpriteClearVRAM(); //Clear VRAM Sprite
NG_BGColor(NG_COLOR(7,7,7)); //Color BG R,G,B 0-15
//-----------fix--------------
NG_FixPal(FIXPAL(0)); //Select Pal for Print
NG_Print("Hello Worlb !",12,0); //Print text , str , Pos X , Pos Y
NG_Print("CPU:",29,0);
NG_Printu16(NGDK_VERSION,0,0); //Print variable u16 , Pos X , Pos Y
NG_Printu16(NG_MAX_SPR,0,1);
NG_PrintFreeMem(0,5); //Indicates available memory
//Sprite
NG_LoadPal(MarcoH1_pal_data,16);
NG_SpriteInit(&NG_Sprite[0],2,2,Map_tile_SPR[0],NG_FLAG(16,0,0,0));
NG_Sprite[0].x += 100;
NG_Sprite[0].y += 100;
//----Init Sprite VRAM------------
NG_SpriteSetID(0x00);
NG_SpriteUpdateInit(0); //Init ID Sprite 0 + meta sprite + Upload
NG_SpriteUpdateN(0); // Update position X,Y,MetaSPR , Zoom XY, 0-N
while(1)
{
NG_PrintCPU(34,0); //Print %CPU , Pos X , Pos Y ;
NG_Cycle(32,1); //Print Cycle
NG_WaitVBlank(); //Wait VBlank
}
}
Ce qui donne :
Voici ma Todo List :
-Flip Vertical 0.55
-compress/decompress map 0.6
-Hicolor 0.65
-bullet 0.7
-collision/hitbox 0.8
-Yorder(Zorder) 0.9
-sound driver 1.0
Et le Hicolor j'y tiens avoir des sprites de 30 couleurs ça envoie
La compression des map , c'est que la Neo Geo bouffe pas mal , par exemple la map actuel fait 14ko (et mon binaire fait 21ko donc il prend pas mal) , mais surtout que ça peut bouffer rapidement pour des map très grande , donc je compte la compresser , j'ai compresser la map de Metal slug , et elle me donne 800 octets
Le SDK disponible ici : NGDK
Cela reste encore une version Beta , tournant sur Linux , je n'ai pas pu faire plein de test pour les user Windows.
Pareil pour la lib , je l'ai pas forcément pousser encore plus que ça ^^
Note pour HPMAN , vu qu'il m'avait répondu sur twitter :
Ben je pense que mon SDK peut apporter un plus , pour le Hicolor , la compression (des map mais aussi des musiques , mon expérience sur SNES a été très fructueuse ) , une gestion facile des map avec Tiled (il permettra aussi le placement des ennemis et des collisions).
Et je pense (mais ça peut être subjectif ?) un code léger et facile à utiliser , il a aussi peu de dépendance , le code à vide fait 5ko (aller avec un simple hello world par exemple)
Dernière édition par Kannagi le Mar 22 Oct 2019 - 19:34, édité 2 fois
Invité- Invité
Re: NGDK
Eh on dirait une lettre de motivation que tu nous fais là !!Ben je pense que mon SDK peut apporter un plus , pour le Hicolor , la compression (des map mais aussi des musiques , mon expérience sur SNES a été très fructueuse ) , une gestion facile des map avec Tiled (il permettra aussi le placement des ennemis et des collisions).
Et je pense (mais ça peut être subjectif ?) un code léger et facile à utiliser , il a aussi peu de dépendance , le code à vide fait 5ko (aller avec un simple hello world par exemple)
Sinon excellent taf, comme d'hab je dirai
Invité- Invité
Re: NGDK
Oui , elle le sera ,il y'a pas de grosse dif entre les deux machines
J''avais réussi a faire un code pour la NeoGeoCD quand je codais en full asm sur NG , je reprendrais un peu le code que j'avais fait(bon il est sur un autre ordi , donc bon un peu la flemme ) , pour le moment je pense me concentrer à peaufiner le SDK et voir les quelques retours des utilisateurs
J''avais réussi a faire un code pour la NeoGeoCD quand je codais en full asm sur NG , je reprendrais un peu le code que j'avais fait(bon il est sur un autre ordi , donc bon un peu la flemme ) , pour le moment je pense me concentrer à peaufiner le SDK et voir les quelques retours des utilisateurs
Invité- Invité
Re: NGDK
Un challenger!
Fait un tour rapide, pourquoi tu fous pas directement tes fonctions asm dans un fichier .s, plutôt que d'inline ça dans du C, en passant les arguments de façon, hum, "créative" ?
Il faut ajouter un nop après les move dans ton clear fix, c'est trop rapide pour le vrai hardware en l'état.
Mais qu'est ce qu'ils on tous avec leurs fonctions joypad tordues, le bios fait tout ça automatiquement lui même.
Fait un tour rapide, pourquoi tu fous pas directement tes fonctions asm dans un fichier .s, plutôt que d'inline ça dans du C, en passant les arguments de façon, hum, "créative" ?
Il faut ajouter un nop après les move dans ton clear fix, c'est trop rapide pour le vrai hardware en l'état.
Mais qu'est ce qu'ils on tous avec leurs fonctions joypad tordues, le bios fait tout ça automatiquement lui même.
Hpman- Patient contaminé
- Nombre de messages : 679
Age : 47
Localisation : Lille
Date d'inscription : 22/08/2014
Re: NGDK
Alors Merci doc
Pour le inline C , on me fait souvent la remarque , moi j'aime bien (on me l'avait reproché aussi pour la prog PS2/DC ).
Ma façon créative , c'est pour pas me soucier des conventions d'appel donc d'une certain façon c'est portable
J'utilisais avant le ::"r"(i),"r"(v) , "r"(vbuf),"r"(nv) : "memory");
Mais c'est lourd et un peu chiant parce que tu sais pas quel registre tu utilise.
(Et puis le code vient de mon ancien moteur en full asm)
Je note pour les nop , merci
Faudra que je test sur une vrai NG un jour ^^
Pour le joypad , peut importe le contenant du moment que tu as l'ivresse
Et encore j'avais la flemme de le faire en asm sur celui là
Pour le inline C , on me fait souvent la remarque , moi j'aime bien (on me l'avait reproché aussi pour la prog PS2/DC ).
Ma façon créative , c'est pour pas me soucier des conventions d'appel donc d'une certain façon c'est portable
J'utilisais avant le ::"r"(i),"r"(v) , "r"(vbuf),"r"(nv) : "memory");
Mais c'est lourd et un peu chiant parce que tu sais pas quel registre tu utilise.
(Et puis le code vient de mon ancien moteur en full asm)
Je note pour les nop , merci
Faudra que je test sur une vrai NG un jour ^^
Pour le joypad , peut importe le contenant du moment que tu as l'ivresse
Et encore j'avais la flemme de le faire en asm sur celui là
Dernière édition par Kannagi le Lun 21 Oct 2019 - 12:35, édité 1 fois
Invité- Invité
Re: NGDK
Bah tu passerais de ça:
à quelque chose type:
Donc tu économise les manips mémoire inutiles, les arguments sont accessibles plus rapidement, et tu évites de push/pop 3 registres (d0 d1 a0 a1 sont considérés scratch)
- Code:
void NG_LoadPalN(const void *palette,u16 address,u16 num)
{
NG_arg1_u32 = palette;
NG_arg1_u16 = address;
NG_arg2_u16 = num;
asm (
"movem.l %d0/%a0-%a1,-(%a7)\n "
"move.l NG_arg1_u32,%a0\n "
"move.w NG_arg1_u16,%d0\n "
"asl.w #5,%d0\n "
"lea NG_PALETTE,%a1\n "
"add.w %d0,%a1\n "
"move.w NG_arg2_u16,%d0\n "
"NG_Load_Pal_loop:\n "
"move.l (%a0)+,(%a1)+\n "
"move.l (%a0)+,(%a1)+\n "
"move.l (%a0)+,(%a1)+\n "
"move.l (%a0)+,(%a1)+\n "
"move.l (%a0)+,(%a1)+\n "
"move.l (%a0)+,(%a1)+\n "
"move.l (%a0)+,(%a1)+\n "
"move.l (%a0)+,(%a1)+\n "
"dbra.w %d0,NG_Load_Pal_loop\n "
"movem.l (%a7)+,%d0/%a0-%a1\n "
);
}
à quelque chose type:
- Code:
NG_LoadPalN:
.set _ARGS, 4
move.l _ARGS(sp), a0
move.w _ARGS+4+2(sp), d0
asl.w #5, d0
lea NG_PALETTE, a1
add.w d0, a1
move.w _ARGS+8+2(sp), d0
beq.s 9f
subq #1, d0
NG_Load_Pal_loop:
move.l (a0)+, (a1)+
move.l (a0)+, (a1)+
move.l (a0)+, (a1)+
move.l (a0)+, (a1)+
move.l (a0)+, (a1)+
move.l (a0)+, (a1)+
move.l (a0)+, (a1)+
move.l (a0)+, (a1)+
dbra.w d0, NG_Load_Pal_loop
9: rts
Donc tu économise les manips mémoire inutiles, les arguments sont accessibles plus rapidement, et tu évites de push/pop 3 registres (d0 d1 a0 a1 sont considérés scratch)
Hpman- Patient contaminé
- Nombre de messages : 679
Age : 47
Localisation : Lille
Date d'inscription : 22/08/2014
Re: NGDK
Je note ça !
(ce n'est pas vraiment un bug , les valeurs vont bien de 0 à N)
Après je ne considère jamais l'appel de fonction comme quelque chose d'optimisé , ma lib réduit énormément les appel nécessaire
Mais oui , si D0/D1/A0 et A1 n'ont pas besoin d'etre dans la pile , c'est bon à savoir
(ce n'est pas vraiment un bug , les valeurs vont bien de 0 à N)
Après je ne considère jamais l'appel de fonction comme quelque chose d'optimisé , ma lib réduit énormément les appel nécessaire
Mais oui , si D0/D1/A0 et A1 n'ont pas besoin d'etre dans la pile , c'est bon à savoir
Invité- Invité
Re: NGDK
Bref j'ai rajouté donc le flip vertical et la décompression de map ^^
Quelque fois , on a de sacré différence entre le C et l'asm (pourtant avec option -O3 donc optimisation maximun)
La décompression de map me prenait 100% de cpu en C
Je l'ai refaite en asm , elle me prend 30%
on peux décompresser à la volée avec des perfs comme ça (pour afficher des maps plus grande que le buffer ^^).
Au final la map me fait 1ko (pour les 2 BG)
Quelque fois , on a de sacré différence entre le C et l'asm (pourtant avec option -O3 donc optimisation maximun)
La décompression de map me prenait 100% de cpu en C
Je l'ai refaite en asm , elle me prend 30%
on peux décompresser à la volée avec des perfs comme ça (pour afficher des maps plus grande que le buffer ^^).
Au final la map me fait 1ko (pour les 2 BG)
Invité- Invité
Re: NGDK
Intéressant
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: NGDK
@Tryphon J’espère que tu l’utilisera
Début de l'implémentation du Hicolor (sprite à 30 couleur + 2 alpha)
(et j'ai suivi le conseille de HPMAN pour la pile de A0/A1-D0/D1 , et les nop)
Pour les conventions d'appel , on perd un peu , effectivement le compilo me met 3 moves pour 3 arguments , je changerai plus tard , mais c'est pas pressé
Mettez toujours des nop dans vos codes sources ,c'est important !
Début de l'implémentation du Hicolor (sprite à 30 couleur + 2 alpha)
(et j'ai suivi le conseille de HPMAN pour la pile de A0/A1-D0/D1 , et les nop)
Pour les conventions d'appel , on perd un peu , effectivement le compilo me met 3 moves pour 3 arguments , je changerai plus tard , mais c'est pas pressé
Mettez toujours des nop dans vos codes sources ,c'est important !
Invité- Invité
Re: NGDK
J'espère l'utiliser un jour
Je pense néanmoins essayer la SNES avant (au moins j'en ai une pour tester) (bon, j'ai deux AES aussi, mais aucune fonctionnelle, et avant que je trouve le temps de m'occuper des réparations, ça sera pas avant la retraite j'en ai peur )
Je pense néanmoins essayer la SNES avant (au moins j'en ai une pour tester) (bon, j'ai deux AES aussi, mais aucune fonctionnelle, et avant que je trouve le temps de m'occuper des réparations, ça sera pas avant la retraite j'en ai peur )
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: NGDK
Quelque nouvelle donc le NGDK permettra de gérer facilement le Hicolor+dezoom :
Mais attention les enfants il y'aura aussi la gestion des bullets intégrer :
Doit y'avoir environ 200 bullets max à l'écran mais le SDK peut gérer 256 max
Le code/algo vient de mon danmaku sur SNES (pour ceux qui connaisse pas : SuperDan )
Mais attention les enfants il y'aura aussi la gestion des bullets intégrer :
Doit y'avoir environ 200 bullets max à l'écran mais le SDK peut gérer 256 max
Le code/algo vient de mon danmaku sur SNES (pour ceux qui connaisse pas : SuperDan )
Invité- Invité
Re: NGDK
Dommage que ce soit un fake, kannagi a utilisé une megadrive pour faire croire à de la NG .
Invité- Invité
Re: NGDK
Merci de nous tenir informé de tes avancées, c'est très intéressant.
zouzzz- Guéri miraculeux
- Nombre de messages : 2127
Age : 19
Localisation : Devant un écran
Date d'inscription : 29/03/2011
Re: NGDK
C'est çaKannagi a écrit:Merci pour vos coms , ça fait plaisir !
Oui une MD avec la puce de Fonzie
On va d'ailleurs l'appeler la puce fonzie, c'est qd même plus classe que SA-1, SDD1,etc ...
Invité- Invité
Re: NGDK
Oui elle permet de faire de la 3D avec
J'ai pas pu finaliser donc la version 0.7 ^^'
(j'ai surtout finalisé les outils plus pratique à utiliser)
Je remet le lien de mon github : GitHub
Et j'ai créer un Discord officiel pour toute demande d'aide/support du NGDK : Discord
J'ai pas pu finaliser donc la version 0.7 ^^'
(j'ai surtout finalisé les outils plus pratique à utiliser)
Je remet le lien de mon github : GitHub
Et j'ai créer un Discord officiel pour toute demande d'aide/support du NGDK : Discord
Invité- Invité
Re: NGDK
pfffiiiouuuu c'est très très impressionnant, felicitation Kannagi
eckain- Patient en incubation
- Nombre de messages : 42
Age : 44
Localisation : suit le lapin blanc
Date d'inscription : 07/11/2017
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum