NGDK

Aller en bas

NGDK Empty NGDK

Message par Kannagi le Dim 20 Oct 2019 - 15:51

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  Mr. Green

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

 }
}
Je met lien de Github plus lisible je trouve : example

Ce qui donne : NGDK 1571586235-capture-d-ecran-2019-10-20-17-40-44

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 Wink
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  Mr. Green

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 Razz  ) , 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) Wink


Dernière édition par Kannagi le Mar 22 Oct 2019 - 19:34, édité 2 fois
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Touko le Dim 20 Oct 2019 - 16:10

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 NGDK Icon_razz  ) , 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)
Eh on dirait une lettre de motivation que tu nous fais là !! 

Mr. Green

Sinon excellent taf, comme d'hab je dirai  thumleft
Touko
Touko
Docteur *
Docteur *

Masculin Nombre de messages : 14407
Age : 46
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Orion_ le Dim 20 Oct 2019 - 18:12

La NeoGeo CD est elle prévue ? :)
Orion_
Orion_
Patient contaminé

Masculin Nombre de messages : 700
Age : 35
Localisation : Perpignan
Date d'inscription : 13/06/2012

http://onorisoft.free.fr/

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Dim 20 Oct 2019 - 18:30

Oui , elle le sera ,il y'a pas de grosse dif entre les deux machines Very Happy

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 Razz ) , pour le moment je pense me concentrer à peaufiner le SDK et voir les quelques retours des utilisateurs Wink
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par drfloyd le Dim 20 Oct 2019 - 20:43

toujours au top ! Excellent !

_______________________________________________________
NGDK Giphy10
Mes objets en vente :
https://www.gamopat-forum.com/t105296-la-nouvelle-brocante-du-doc#3072649
Mon profil Gamopat Advisor :
https://www.gamopat-forum.com/t94659-dr-floyd-advisor





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 149848
Age : 50
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Hpman le Lun 21 Oct 2019 - 11:33

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" ? Mr. Green

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. scratch
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 530
Age : 42
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Lun 21 Oct 2019 - 12:04

Alors Merci doc Wink

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  Mr. Green
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 Wink
Faudra que je test sur une vrai NG un jour ^^

Pour le joypad , peut importe le contenant du moment que tu as l'ivresse Razz
Et encore j'avais la flemme de le faire en asm sur celui là MDR


Dernière édition par Kannagi le Lun 21 Oct 2019 - 12:35, édité 1 fois
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Hpman le Lun 21 Oct 2019 - 12:24

Bah tu passerais de ça:

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
(Corrigé un bug au passage Mr. Green)

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)  saispas
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 530
Age : 42
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Lun 21 Oct 2019 - 12:30

Je note ça ! Wink
(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 Very Happy

Mais oui , si D0/D1/A0 et A1 n'ont pas besoin d'etre dans la pile , c'est bon à savoir
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Lun 21 Oct 2019 - 13:50

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%  Mr. Green
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)
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Tryphon le Lun 21 Oct 2019 - 14:09

Intéressant Very Happy
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 18489
Age : 42
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Lun 21 Oct 2019 - 15:57

@Tryphon J’espère que tu l’utilisera Wink

Début de l'implémentation du Hicolor (sprite à 30 couleur + 2 alpha)
NGDK 1571673161-hicolor

(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é Razz

Mettez toujours des nop dans vos codes sources ,c'est important ! MDR
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Tryphon le Lun 21 Oct 2019 - 22:28

J'espère l'utiliser un jour Very Happy

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 Razz)
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 18489
Age : 42
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Ven 25 Oct 2019 - 15:05

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 )
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par randomuser999 le Ven 25 Oct 2019 - 15:57

Top moumoute.
randomuser999
randomuser999
Infirmier

Masculin Nombre de messages : 3841
Age : 41
Localisation : la bas
Date d'inscription : 12/02/2015

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Ricco59_59 le Ven 25 Oct 2019 - 16:11

Wahoouuuu thumleft thumleft
Ricco59_59
Ricco59_59
Patient contaminé

Masculin Nombre de messages : 414
Age : 52
Localisation : Tout près d'Arras
Date d'inscription : 25/07/2006

http://ericmcolleco.free.fr

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Touko le Ven 25 Oct 2019 - 16:33

thumleft
Dommage que ce soit un fake, kannagi a utilisé une megadrive pour faire croire à de la NG . Mr. Green
Touko
Touko
Docteur *
Docteur *

Masculin Nombre de messages : 14407
Age : 46
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Ven 25 Oct 2019 - 17:41

Merci pour vos coms , ça fait plaisir !

Oui une MD avec la puce de Fonzie MDR
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par zouzzz le Ven 25 Oct 2019 - 18:45

Merci de nous tenir informé de tes avancées, c'est très intéressant.
zouzzz
zouzzz
Patient incurable

Masculin Nombre de messages : 1929
Age : 22
Date d'inscription : 29/03/2011

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Touko le Ven 25 Oct 2019 - 21:26

@Kannagi a écrit:Merci pour vos coms , ça fait plaisir !

Oui une MD avec la puce de Fonzie MDR
C'est ça  Mr. Green
On va d'ailleurs l'appeler la puce fonzie, c'est qd même plus classe que SA-1, SDD1,etc ...  Very Happy
Touko
Touko
Docteur *
Docteur *

Masculin Nombre de messages : 14407
Age : 46
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Kannagi le Dim 27 Oct 2019 - 11:51

Oui elle permet de faire de la 3D avec Wink

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
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

NGDK Empty Re: NGDK

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum