Gens KMod++

Talk about development tools here

Moderator: BigEvilCorporation

Meradrin
Interested
Posts: 11
Joined: Thu Sep 15, 2011 6:03 am
Location: Canada

Gens KMod++

Post by Meradrin » Thu Sep 15, 2011 6:10 am

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 :D

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 :D

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 :D 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 :D

Now it is time to sleep... ^^

KanedaFr
Administrateur
Posts: 1139
Joined: Tue Aug 29, 2006 10:56 am
Contact:

Post by KanedaFr » Thu Sep 15, 2011 9:09 am

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 :(

bahabulle
Newbie
Posts: 5
Joined: Fri Aug 19, 2011 8:34 am
Location: France

Post by bahabulle » Thu Sep 15, 2011 9:39 am

MERAAAAAAAAAAAA

Et tu ne m'as même pas prévenu de cet avancement ?
Vil gredin.

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Thu Sep 15, 2011 9:42 am

WOW! I must look closer to that mod...

TmEE co.(TM)
Very interested
Posts: 2440
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Thu Sep 15, 2011 12:41 pm

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

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Thu Sep 15, 2011 1:42 pm

What "debug.zip" for? And where it can be found? Can't do M68K code disassemble in M68K debug window. How it make?

KanedaFr
Administrateur
Posts: 1139
Joined: Tue Aug 29, 2006 10:56 am
Contact:

Post by KanedaFr » Thu Sep 15, 2011 1:54 pm

This is not my KMod

Kmod++ isn't available yet.
Like you, I'm waiting for it !!!

Meradrin
Interested
Posts: 11
Joined: Thu Sep 15, 2011 6:03 am
Location: Canada

Post by Meradrin » Thu Sep 15, 2011 2:03 pm

Sorry for my french guy. But it is a little bit simple for write quickly.
Question à 10cents : as tu laissé les registres special dev (je ne peux plus m'en passer maintenant) ?
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.

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)
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 :D Et de toute façon, t’aurais-je réellement croisé car tu n’es pas très souvent là :P

Bon vus que ça intéresse des gens je vais tenter de venir poster les avancements sur le forum.

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Thu Sep 15, 2011 2:37 pm

KanedaFr wrote:Kmod++ isn't available yet.
Like you, I'm waiting for it !!!
Are you kidding? Explain this then. :3
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

Meradrin
Interested
Posts: 11
Joined: Thu Sep 15, 2011 6:03 am
Location: Canada

Post by Meradrin » Thu Sep 15, 2011 3:02 pm

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 ^^

KanedaFr
Administrateur
Posts: 1139
Joined: Tue Aug 29, 2006 10:56 am
Contact:

Post by KanedaFr » Thu Sep 15, 2011 3:47 pm

Meradrin wrote:Sorry for my french guy. But it is a little bit simple for write quickly.
Question à 10cents : as tu laissé les registres special dev (je ne peux plus m'en passer maintenant) ?
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.
Pour les watchers, ce n'est pas grave....
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
les 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é.
La seule option qui m'interesse est le registre "special" qui te permet d'envoyer des commandes direct à Gens depuis ta rom :)
le fameux debug.zip dont parle HWM....
Il est inclus dans SGDK dans ca serait bien que ca continue à marcher avec ton mod !
Are you kidding? Explain this then. :3
I didn't know about this one !!
What "debug.zip" for? And where it can be found?
debug.zip is inside Gens KMod (open the Debug.. panel and click on get debug.zip)...It's also available in SGDK (kdebug.s)

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

Meradrin
Interested
Posts: 11
Joined: Thu Sep 15, 2011 6:03 am
Location: Canada

Post by Meradrin » Thu Sep 15, 2011 3:54 pm

La seule option qui m'interesse est le registre "special" qui te permet d'envoyer des commandes direct à Gens depuis ta rom
D'accord Keneda, je te fais un build ce soir lorsque je renterais du travaille et tu pourras me dire si cette options marche toujours ^^

bastien
Very interested
Posts: 208
Joined: Mon Jun 25, 2007 7:19 pm
Location: Besançon,France
Contact:

Post by bastien » Thu Sep 15, 2011 4:15 pm

C 'est vraiment excellent Meradrin Merci beaucoup pour cet outil :twisted:
Je suis content que tu aie continuer de bosser sur le Kmods ++ 8)
et je veut bien participer à la beta si tu veut car je pense passer de suite à Kmods ++ pour mon projet de trad :wink:

Encore Merci et vivement la Release !

P.S à quand sur IRC / MSN ?

Pascal
Very interested
Posts: 200
Joined: Wed Nov 29, 2006 11:29 am
Location: Belgium
Contact:

Post by Pascal » Fri Sep 16, 2011 7:32 am

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

Stef
Very interested
Posts: 3131
Joined: Thu Nov 30, 2006 9:46 pm
Location: France - Sevres
Contact:

Post by Stef » Fri Sep 16, 2011 8:19 am

Very impressive work as i already told you !
It'll make debugging, optimising so much easier now :D
KMod was already nice but KMod++ will be definitely on another level (same as professional debug tool afaik).
I'm really looking forward your progress :)

Post Reply