Gens KMod++
Moderator: BigEvilCorporation
Gens KMod++
My french writing skill suck and I really think my english skill are not better. Shame on me... Because I lived 2 years with a girlfriend that only speak english. But write correctly, it is a other story. So sorry I will write all the “my story stuff” in French. Because I want go sleep soon and don't pass the night to write
But for do small english resume I create a mod of a mod. I call my mod KMod++ because I rewrite all my new stuff in C++ in Oriented Object style and it is not the official Keneda stuff.
Sorry if you don't read french. Skip this long part and go watch the video to the end.
Je suis une forme de vie qui aime les jeux vidéo et la programmation. Je fais de l’émulation depuis asse longtemps. Avant même que j’ai eu internet ^^ Je participais sur les communautés et les BBS au Canada. Bon a l’époque j’avais 13 ans donc la programmation pour moi c’étais du chinois
Avec le temps, je me suis intéressé au monde de la programmation et plus exactement du ROMHacking pour les jeux vidéo. J’ai d’ailleurs divers traduction sur divers plateformes à mon actif. Et pour faire un bon romhacking, bien souvent on droit récrire de bonne partie de code ou voir refaire le rendu de la font, écrire des algo de compression pour réussir à rentré dans la rom etc. Parfois on grossi les rom et le classique sur MegaDrive/Genesis lorsqu’on agrandit la taille d’une ROM au delà de 2meg et bien on ce doit de faire une gestion intelligente de la SRAM ^^
Il y a 3 semaines un ami est venu me demander de l’aide sur un hack. J’ai regardé se qu’il me demandait et je me suis dit : « Merde… J’ai plus d’outils, mon HD à exploser j’ai tous perdu » J’ai réussi à récupéré quelque outils que j’avais fais mais sans mes sources bien sûr mais bon…
Un ami ma présenter Regen, j’ai fais tiens il a reprit le débuggeur d’instruction et le system de breakpoint de l’émulateur Russe : « Gens VKN Trace » que je n’arrive pas à dire son nom en russe enfin celui à cette adresse : http://shedevr.org.ru/cgi-bin/utilz.cgi?n=19. Quand aux outils de VDP, ils étaient une fusion du travaille de Keneda dans une fenêtre ^^ Globalement un choix judicieux Mais bon dans le cas Regen, n’était pas à mon gout et son gros point négatif ! Il n’est pas Open Source -_- Donc, je ne pouvais pas le mettre à mon goût. Même si il est plus « accurate ».
Mon choix c’est tourné sur KMod car aucune grosse modification n’a été à Starscream. Parfais pour mettre en exécution mon idée du moment. Pendant que ma copine me regardais crée mon émulateur et me posait des questions sur pourquoi la console marche et ainsi et blablabla… Elle est venu à me motivé. Et après avoir fini le hack de mon copain. Je me suis tourné à modifier l’émulateur pour lui expliqué comment la machine fonctionne. Elle aimait bien me regarder programmé et s’endormir contre moi pendant que je code. Donc ça ma motivé à bloque et tous les soirs en arrivant du boulot j’ai codé sur Gens KMod.
Donc en gros se qu’elle ma fait faire durant c’est 3 dernière semaine…
- Un débuggeur de 68k qui se base sur la création dynamique du mapping de la rom. Pour identifier se qui est du data et du code. Il détecte les fonctions et les labels durant l’exécution et crée le code source de la ROM.
- Le debugger à la possibilité d’arrêté l’exécution et de faire du Step-In, Step-Out, Step-Over. En gros si vous utilisé souvent des débuggeur pour debugger votre code C/ C++ vous aller savoir de quoi je parle.
- Un system de log des dernières instructions exécuté par le CPU environ 50 000 step. Donc vous pouvez en tout temps faire des step-back (Le step-back n’est pas encore totalement fini d’être implémenté. J’ai encore du support à faire pour la VDP) Surtout utile lorsqu’un breakpoint a été déclenché et vous voulez comprendre pourquoi vous êtes là.
- La possibilité de modifier la mapping de la rom et mettre des commentaires au niveau du code source. Dalleur lors de la création du mapping par défaut le header de la rom est commenté. Vous pouvez identifier le type de data d’ailleurs.
- Détection de changement entre les step d’instruction pour tous les types de VRAM, VSRAM, VCRAM, Z80-RAM et M68k RAM. En gros ça affiche en rouge les trucs qui on été modifier depuis le dernier step. Utile entre les breakpoint pour voir les changements.
- System de breakpoint avec un support illimité au niveau du nombre de breakpoint. Aucun ralentissement de l’émulation par exemple si tu as 1 000 breakpoint par zone de divers taille. L’algo de breakpoint faire la détection en O(1). Donc forcément y au un coups mémoire mais ridicule pour les machine de nos jours ^^
- System de callstack pour voir l’appelle courant des fonctions ! Et les Interrupt sont bien support toute supporté dans ce system ^^
- Et pas mal d’autre chose… comme le rendu réécrit en Direct3D 32bit pour plus que ça passe en 16bit inutilement et plein de goody comme ça Enlever tous les surface GDI pour faire du DirectX en hardware sur la carte graphique ^^
C’est ma copine qui ma encouragé à faire tous ceci c’est dernière semaine, sauf que pour l’option que je viens de finir de coder et que je veux vous montré vous devez ça à Stef. Car il m’a parlé y a quelque temps que ça serait cool si mon émulateur pourrais débuguer le code source C directement ^^
Mon passe-temps est le reverse engenering et ceci depuis que j’ai 13 ans et non les démos ou le développement. Mais bon mon métier professionnel est la programmation de jeux vidéo. Je dois faire ça depuis environ 6 ans et je dois dire que c’est crucial d’avoir des bons outils pour debugger. Car le « printf », les logs ne sont pas une solution viable. J’ai travaillé sur trop de console que les outils étaient à chier…
De plus Stef à fait beaucoup pour la scène, je me suis dis pourquoi ne pas regarder voir si je ne pourrais pas modifier mes outils pour supporter le débogage du code C. Alors c’est 3 dernier jours, j’ai échangé avec Stef et je lui ai demandé comment on fait pour simplement compile du code C sur Genesis. Il m’a référé à son SGDK. Et bon après la j’ai regardé comment bintuils générait les infos debug et j’en suis arrivé à ça aujourd’hui. Il me reste encore du travaille pour finir comme je veux le finir avant de faire un release public. Bien sûr, je vais faire des stages de beta test avec des volontaires et publier ensuite tous le code open source. Mais bon je viens de commencé et y a encore temps à faire…
Gardé à l’esprit que c’est du « ealy stage » Je viens de finir ça y a 30 minute. Donc je vais y donner encore de l’amour pour qu’on est de quoi de plus cool. Je vais crée un débuggeur de code source carrément sans l’assembleur pour rendre le tous plus facile à lire.
Donc chaque chose en son temps, j’espère que ça plaira à quelque personne autre que moi ^^
Sur ce je me la ferme…
So check this video : http://www.youtube.com/watch?v=V7RuJiSxGl0
And this video : http://www.youtube.com/watch?v=fk2PwJJMDZQ
And sorry for people that don’t read french I still love you
Now it is time to sleep... ^^
But for do small english resume I create a mod of a mod. I call my mod KMod++ because I rewrite all my new stuff in C++ in Oriented Object style and it is not the official Keneda stuff.
Sorry if you don't read french. Skip this long part and go watch the video to the end.
Je suis une forme de vie qui aime les jeux vidéo et la programmation. Je fais de l’émulation depuis asse longtemps. Avant même que j’ai eu internet ^^ Je participais sur les communautés et les BBS au Canada. Bon a l’époque j’avais 13 ans donc la programmation pour moi c’étais du chinois
Avec le temps, je me suis intéressé au monde de la programmation et plus exactement du ROMHacking pour les jeux vidéo. J’ai d’ailleurs divers traduction sur divers plateformes à mon actif. Et pour faire un bon romhacking, bien souvent on droit récrire de bonne partie de code ou voir refaire le rendu de la font, écrire des algo de compression pour réussir à rentré dans la rom etc. Parfois on grossi les rom et le classique sur MegaDrive/Genesis lorsqu’on agrandit la taille d’une ROM au delà de 2meg et bien on ce doit de faire une gestion intelligente de la SRAM ^^
Il y a 3 semaines un ami est venu me demander de l’aide sur un hack. J’ai regardé se qu’il me demandait et je me suis dit : « Merde… J’ai plus d’outils, mon HD à exploser j’ai tous perdu » J’ai réussi à récupéré quelque outils que j’avais fais mais sans mes sources bien sûr mais bon…
Un ami ma présenter Regen, j’ai fais tiens il a reprit le débuggeur d’instruction et le system de breakpoint de l’émulateur Russe : « Gens VKN Trace » que je n’arrive pas à dire son nom en russe enfin celui à cette adresse : http://shedevr.org.ru/cgi-bin/utilz.cgi?n=19. Quand aux outils de VDP, ils étaient une fusion du travaille de Keneda dans une fenêtre ^^ Globalement un choix judicieux Mais bon dans le cas Regen, n’était pas à mon gout et son gros point négatif ! Il n’est pas Open Source -_- Donc, je ne pouvais pas le mettre à mon goût. Même si il est plus « accurate ».
Mon choix c’est tourné sur KMod car aucune grosse modification n’a été à Starscream. Parfais pour mettre en exécution mon idée du moment. Pendant que ma copine me regardais crée mon émulateur et me posait des questions sur pourquoi la console marche et ainsi et blablabla… Elle est venu à me motivé. Et après avoir fini le hack de mon copain. Je me suis tourné à modifier l’émulateur pour lui expliqué comment la machine fonctionne. Elle aimait bien me regarder programmé et s’endormir contre moi pendant que je code. Donc ça ma motivé à bloque et tous les soirs en arrivant du boulot j’ai codé sur Gens KMod.
Donc en gros se qu’elle ma fait faire durant c’est 3 dernière semaine…
- Un débuggeur de 68k qui se base sur la création dynamique du mapping de la rom. Pour identifier se qui est du data et du code. Il détecte les fonctions et les labels durant l’exécution et crée le code source de la ROM.
- Le debugger à la possibilité d’arrêté l’exécution et de faire du Step-In, Step-Out, Step-Over. En gros si vous utilisé souvent des débuggeur pour debugger votre code C/ C++ vous aller savoir de quoi je parle.
- Un system de log des dernières instructions exécuté par le CPU environ 50 000 step. Donc vous pouvez en tout temps faire des step-back (Le step-back n’est pas encore totalement fini d’être implémenté. J’ai encore du support à faire pour la VDP) Surtout utile lorsqu’un breakpoint a été déclenché et vous voulez comprendre pourquoi vous êtes là.
- La possibilité de modifier la mapping de la rom et mettre des commentaires au niveau du code source. Dalleur lors de la création du mapping par défaut le header de la rom est commenté. Vous pouvez identifier le type de data d’ailleurs.
- Détection de changement entre les step d’instruction pour tous les types de VRAM, VSRAM, VCRAM, Z80-RAM et M68k RAM. En gros ça affiche en rouge les trucs qui on été modifier depuis le dernier step. Utile entre les breakpoint pour voir les changements.
- System de breakpoint avec un support illimité au niveau du nombre de breakpoint. Aucun ralentissement de l’émulation par exemple si tu as 1 000 breakpoint par zone de divers taille. L’algo de breakpoint faire la détection en O(1). Donc forcément y au un coups mémoire mais ridicule pour les machine de nos jours ^^
- System de callstack pour voir l’appelle courant des fonctions ! Et les Interrupt sont bien support toute supporté dans ce system ^^
- Et pas mal d’autre chose… comme le rendu réécrit en Direct3D 32bit pour plus que ça passe en 16bit inutilement et plein de goody comme ça Enlever tous les surface GDI pour faire du DirectX en hardware sur la carte graphique ^^
C’est ma copine qui ma encouragé à faire tous ceci c’est dernière semaine, sauf que pour l’option que je viens de finir de coder et que je veux vous montré vous devez ça à Stef. Car il m’a parlé y a quelque temps que ça serait cool si mon émulateur pourrais débuguer le code source C directement ^^
Mon passe-temps est le reverse engenering et ceci depuis que j’ai 13 ans et non les démos ou le développement. Mais bon mon métier professionnel est la programmation de jeux vidéo. Je dois faire ça depuis environ 6 ans et je dois dire que c’est crucial d’avoir des bons outils pour debugger. Car le « printf », les logs ne sont pas une solution viable. J’ai travaillé sur trop de console que les outils étaient à chier…
De plus Stef à fait beaucoup pour la scène, je me suis dis pourquoi ne pas regarder voir si je ne pourrais pas modifier mes outils pour supporter le débogage du code C. Alors c’est 3 dernier jours, j’ai échangé avec Stef et je lui ai demandé comment on fait pour simplement compile du code C sur Genesis. Il m’a référé à son SGDK. Et bon après la j’ai regardé comment bintuils générait les infos debug et j’en suis arrivé à ça aujourd’hui. Il me reste encore du travaille pour finir comme je veux le finir avant de faire un release public. Bien sûr, je vais faire des stages de beta test avec des volontaires et publier ensuite tous le code open source. Mais bon je viens de commencé et y a encore temps à faire…
Gardé à l’esprit que c’est du « ealy stage » Je viens de finir ça y a 30 minute. Donc je vais y donner encore de l’amour pour qu’on est de quoi de plus cool. Je vais crée un débuggeur de code source carrément sans l’assembleur pour rendre le tous plus facile à lire.
Donc chaque chose en son temps, j’espère que ça plaira à quelque personne autre que moi ^^
Sur ce je me la ferme…
So check this video : http://www.youtube.com/watch?v=V7RuJiSxGl0
And this video : http://www.youtube.com/watch?v=fk2PwJJMDZQ
And sorry for people that don’t read french I still love you
Now it is time to sleep... ^^
Je... suis.... sur le cul !!!!!!
désolé mais je ne vois pas comment le dire mieux !
Tu as réussi à faire ce qui m'avait bloqué : un VRAI debugger!
J'avais triché avec les watchers mais là, ce n'est meme plus comparable !
Cela fait vraiment pro !
des breakpoints, des indicateurs de changement d'etat...
ARGGGGGGG, c'es trop beau !
Quand je vois comment tu as rearrangé la fenetre VDP par ex, je me dis "mais oui, pourquoi je ne l'ai pas présenté comme ca?!"
Question à 10cents : as tu laissé les registres special dev (je ne peux plus m'en passer maintenant) ?
Prems pour les beta tests !!!! (enfin deuz, apres stef!)
j'ai un "truc" en cours, ca tombe à pic !!!
--------------------------------
Very impressive !
It seems you updated KMod the way I was unable to do it myself.
Gens KMod isn't a true debugger, your version seems to be the graal for us !
I can't wait to test and use it on my current project !
EDIT: OMG! all of this in 3 (THREE) weeks ?! I can't believe it ! It took me months (years ?) to make KMod.....I'm depressing now
désolé mais je ne vois pas comment le dire mieux !
Tu as réussi à faire ce qui m'avait bloqué : un VRAI debugger!
J'avais triché avec les watchers mais là, ce n'est meme plus comparable !
Cela fait vraiment pro !
des breakpoints, des indicateurs de changement d'etat...
ARGGGGGGG, c'es trop beau !
Quand je vois comment tu as rearrangé la fenetre VDP par ex, je me dis "mais oui, pourquoi je ne l'ai pas présenté comme ca?!"
Question à 10cents : as tu laissé les registres special dev (je ne peux plus m'en passer maintenant) ?
Prems pour les beta tests !!!! (enfin deuz, apres stef!)
j'ai un "truc" en cours, ca tombe à pic !!!
--------------------------------
Very impressive !
It seems you updated KMod the way I was unable to do it myself.
Gens KMod isn't a true debugger, your version seems to be the graal for us !
I can't wait to test and use it on my current project !
EDIT: OMG! all of this in 3 (THREE) weeks ?! I can't believe it ! It took me months (years ?) to make KMod.....I'm depressing now
-
- Very interested
- Posts: 746
- Joined: Sat Dec 15, 2007 7:49 am
- Location: Kazakhstan, Pavlodar
-
- Very interested
- Posts: 2443
- Joined: Tue Dec 05, 2006 1:37 pm
- Location: Estonia, Rapla City
- Contact:
That does indeed look great ^^
Mida sa loed ? Nagunii aru ei saa
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
-
- Very interested
- Posts: 746
- Joined: Sat Dec 15, 2007 7:49 am
- Location: Kazakhstan, Pavlodar
Sorry for my french guy. But it is a little bit simple for write quickly.
Voici à quoi ressemble c’est petit monstre de balise.
Sinon, bon si par accident j’ai supprimé une fonctionnalité, je l’a reprogrammerais, il n’y a pas de problème.
Et pour pour les 3 semaines, je dois avouer que sur ce coups. Je me suis un peu impressionné. Mon cerveau fonctionnait bien donc tous se fessait facilement. Ma copine me nourrissait donc ça aide. Mais bon j’ai fixé la solution pour Visual Studio 10 dans le mois de Fevrier et j’ai arrêté d’y touché jusqu'à il y a 3 semaine. J’avais commencé a refactoré divers bout de code de KMod pour crée des module. Et ainsi simplifier un peu le code. Enlever les 2 000 warning dans le code.
Bahabulle, si je t’ai rien dis c’est simplement du au fait que j’ai pratiqué l’art de pas flâné sur le net pour codé plus vite Et de toute façon, t’aurais-je réellement croisé car tu n’es pas très souvent là
Bon vus que ça intéresse des gens je vais tenter de venir poster les avancements sur le forum.
Je me suis basé sur la 0.7 et non la 0.7c. Car j’ai trouvé que les sources de cette version. J’ai gardé l’intégralité de tous les options que tu as fais. Enfin de la dernière version qu’il y a les sources disponible. Par exemple, le system de Watch n’est pas pareille à la dernière version de toi. Mais bon ce n’est pas grave ^^ Car je voulais le refaire pour supporté c’est infernal balise de DWARF au lieu de passé par nm. Et de plus je veux être capable de supporté les variable local sur la stack et je crois que ma seul solution est de passé par le format DWARF.Question à 10cents : as tu laissé les registres special dev (je ne peux plus m'en passer maintenant) ?
Voici à quoi ressemble c’est petit monstre de balise.
Code: Select all
<1><d8>: Abbrev Number: 2 (DW_TAG_typedef)
<d9> DW_AT_name : fix16
<df> DW_AT_decl_file : 3
<e0> DW_AT_decl_line : 74
<e1> DW_AT_type : <0xe5>
<1><e5>: Abbrev Number: 3 (DW_TAG_base_type)
<e6> DW_AT_name : short int
<f0> DW_AT_byte_size : 2
<f1> DW_AT_encoding : 5 (signed)
<1><f2>: Abbrev Number: 3 (DW_TAG_base_type)
<f3> DW_AT_name : long int
<fc> DW_AT_byte_size : 4
<fd> DW_AT_encoding : 5 (signed)
<1><fe>: Abbrev Number: 3 (DW_TAG_base_type)
<ff> DW_AT_name : unsigned int
<10c> DW_AT_byte_size : 4
<10d> DW_AT_encoding : 7 (unsigned)
<1><10e>: Abbrev Number: 3 (DW_TAG_base_type)
<10f> DW_AT_name : short unsigned int
<122> DW_AT_byte_size : 2
<123> DW_AT_encoding : 7 (unsigned)
Et pour pour les 3 semaines, je dois avouer que sur ce coups. Je me suis un peu impressionné. Mon cerveau fonctionnait bien donc tous se fessait facilement. Ma copine me nourrissait donc ça aide. Mais bon j’ai fixé la solution pour Visual Studio 10 dans le mois de Fevrier et j’ai arrêté d’y touché jusqu'à il y a 3 semaine. J’avais commencé a refactoré divers bout de code de KMod pour crée des module. Et ainsi simplifier un peu le code. Enlever les 2 000 warning dans le code.
Bahabulle, si je t’ai rien dis c’est simplement du au fait que j’ai pratiqué l’art de pas flâné sur le net pour codé plus vite Et de toute façon, t’aurais-je réellement croisé car tu n’es pas très souvent là
Bon vus que ça intéresse des gens je vais tenter de venir poster les avancements sur le forum.
-
- Very interested
- Posts: 746
- Joined: Sat Dec 15, 2007 7:49 am
- Location: Kazakhstan, Pavlodar
Are you kidding? Explain this then. :3KanedaFr wrote:Kmod++ isn't available yet.
Like you, I'm waiting for it !!!
Pour le téléchargement ici :
Version Pre-2 0.1 (18/02/2011) http://www.finaltranslation.org/Gens%20 ... re2-0.1.7z
Version Pre 0.1 (06/02/2011) http://www.finaltranslation.org/Gens%20 ... Pre-0.1.7z
This version only have the new VDP Tile Viewer and the Render system write in DirectX9 and some bug fixe.
The all cool features are not release. For the simple reason it is not finish. Currently I have a lot of GUI to do for finish. The current version all work with Hotkey ^^ F10, F11, Shift-F11, G, C etc... and I write no doc.
And I need to do some fixe for a perfect callstack support.
I will have vacancy soon, so I will work a little bit more hard ^^
The all cool features are not release. For the simple reason it is not finish. Currently I have a lot of GUI to do for finish. The current version all work with Hotkey ^^ F10, F11, Shift-F11, G, C etc... and I write no doc.
And I need to do some fixe for a perfect callstack support.
I will have vacancy soon, so I will work a little bit more hard ^^
Pour les watchers, ce n'est pas grave....Meradrin wrote:Sorry for my french guy. But it is a little bit simple for write quickly.
Je me suis basé sur la 0.7 et non la 0.7c. Car j’ai trouvé que les sources de cette version. J’ai gardé l’intégralité de tous les options que tu as fais.Question à 10cents : as tu laissé les registres special dev (je ne peux plus m'en passer maintenant) ?
Pour 0.7b+, je crois que cela ne concerne que des watchers...faudrait que je regarde dans mes docs.....donc...pas grave
Comme je disais, c'était un hack furieux à default de breakpoint + watch
Tu l'as d'ailleurs bien compris
La seule option qui m'interesse est le registre "special" qui te permet d'envoyer des commandes direct à Gens depuis ta romles outils de débogage de CPU sont pour ainsi dire totalement inutile. Ils sont plus la pour la forme que pour une réel utilité.
le fameux debug.zip dont parle HWM....
Il est inclus dans SGDK dans ca serait bien que ca continue à marcher avec ton mod !
I didn't know about this one !!Are you kidding? Explain this then. :3
debug.zip is inside Gens KMod (open the Debug.. panel and click on get debug.zip)...It's also available in SGDK (kdebug.s)What "debug.zip" for? And where it can be found?
it's asm source code to enable a feature special to KMod : "talk" from ROM to Gens
I'm currently asking Meradrin if he kept this feature or not
-
- Very interested
- Posts: 208
- Joined: Mon Jun 25, 2007 7:19 pm
- Location: Besançon,France
- Contact:
C 'est vraiment excellent Meradrin Merci beaucoup pour cet outil
Je suis content que tu aie continuer de bosser sur le Kmods ++
et je veut bien participer à la beta si tu veut car je pense passer de suite à Kmods ++ pour mon projet de trad
Encore Merci et vivement la Release !
P.S à quand sur IRC / MSN ?
Je suis content que tu aie continuer de bosser sur le Kmods ++
et je veut bien participer à la beta si tu veut car je pense passer de suite à Kmods ++ pour mon projet de trad
Encore Merci et vivement la Release !
P.S à quand sur IRC / MSN ?
Impressionant Meradrin ! Y aura-t-il moyen de charger des symboles venant de snasm68 (pour les codeurs asm :p ) ? un peu comme je fais pour md debug studio viewtopic.php?t=325&highlight=studio
merci pour ton boulot
merci pour ton boulot