Aller au contenu


Photo

Emulateurs à déboguage


  • Veuillez vous connecter pour répondre
15 réponses à ce sujet

#1 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 21 novembre 2018 - 14:33

Je pense que ce serait utile comme liste d'emulateurs à aider pour le modding et déboguage des jeux.

 

NES: FCEUX, Mesen

SNES: Geiger's Snes9X 1.51

GBC: BGB

PS1: no$psx

Megadrive: Regen, Gen Tracer build

GBA: vba-h-sdl, no$gba

DS: no$gba

GameCube/Wii: Dolphin (avec flag debug)

PS3: RPCS3 (avec flag debug)

 

Ca couvre le désassemblage d'instructions language machine avec les outils suivants:

 

- Cheat Engine (inclus dans l'emulateur, ou outil externe. faut savoir comment convertir l'addresse vers le format attendu par le jeu, et pour ce il faut une memory map de la console en question) ça donne une addresse du contenu intéressant à modifier (un compteur de vies, etc)

- Affichage de mémoire visuelle ou sonore ou autre, ou extracteur de RAM vers fichier externe afin de l'analyser avec editeur hexadecimal et dénicher le contenu intéressant

- Breakpoint sur l'adresse intéressante afin de piéger et isoler toute instruction de programme qui l'utilise, soit en lecture, écriture ou exécution (si c'est une addresse de programme en soi même)

- Trace, qui piège toutes les instructions jusqu'à un breakpoint, pour les instructions d'avant l'instruction intéressante

- Step, pour avancer vers les instructions d'après l'instruction intéressante

 

Faut savoir aussi comment lire le programme. On utilise une documentation:

- la liste des instructions assembleur de cette architecture et leur sens et particularités. (exemple: cas de la NES - assembleur c6502)

- la liste des hardware registers de cette console pour tout accès graphique, gamepad, etc (exemple: cas de la NES - hardware map de la nes sur nesdev ou site problemkaputt)

- la memory map de la console

- diverses autres particularités de cette console, comme restrictions graphiques, comment ce mapper particulier fait le bankswitch, etc.

 

Bien sûr c'est selon le besoin et on n'est pas censé apprendre tout.

 

Pour changer le programme, faut:

- un désassembleur pour convertir les données binaires en "code source" avec instructions type lda / sta en anglais humain lisible et compréhensible. Ca peut partir d'un émulateur en cours d'exécution de jeu, de fichier statique à partir d'une addresse (dénichée avec l'etude breakpoint dessus) ou à partir du vecteur où commence la toute première instruction du programme entier pour les fous qui veulent désassembler toute la ROM (les fameuses disassembly, qui sont bien plus faciles et flexibles à changer)

- notepad++ ou autre pour écrire du nouveau code

- un assembleur qui fait la conversion inverse, pourvu qu'il y a de l'espace libre dans la rom en destination

 

Y'en a plusieurs programmes mais c un bon départ.

C'est amusant et si on fait déjà des codes de triche on peut utiliser ce savoir faire pour des petits changements et tweaks de jeu.


  • 0

#2 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 21 novembre 2018 - 15:21

Une liste à émulateurs:

https://gamehacking....ssembly_Hacking

 

Outils de débogage:

NES:

https://wiki.nesdev....index.php/Tools

SNES:

https://www.romhacki.../utilities/241/

 

MS-DOS/PC (utile en intermédiaire entre débogueur <> émulateur <> console)

https://en.wikibooks...and_Decompilers


  • 0

#3 Ichigo

Ichigo

    SMS lover ^^

  • 8 241 messages
  • Localisation49

Posté 21 novembre 2018 - 15:45

pour la SMS, 
Meka, Emulicious

 

pour la Snes, j'utilise Dispel pour désassembler.

Megadrive : Exodus

 

Dans tous les cas, je préfère toujours avoir un fichier "texte" (donc une rom désassemblée) pour fouiller tranquillou/annoter dedans.

Attention, tous les désassembleur ne se valent pas.

 

Et il faut aussi les opcodes (et parfois cycles) de la machine selon ce qu'il y a a hacker/modifier.

 

Mame offre aussi des fonctions de debug, mais perso je ne trouve pas ca "hyper" pratique ni friendly

(mais parfois pas le choix vu que l'on n'a que ca pour hacker des trucs arcade)

 

Pour appliquer les modifications, selon le nombre cela peut être un simple editeur hexa (HxD sur PC ou iHex sur Mac), ou un assembleur avec une fonction de mise en background de la rom (pour n'écrire que les modif par dessus)


  • 0

#4 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 21 novembre 2018 - 16:07

Megadrive : Exodus

 

Jamais entendu parler de celui là avant. J'avais utilisé Gens (pour la recherche cheat) + Regen (pour le désassembleur) mais je n'ai pas encore de bon moyen pour faire une trace, ni de désassembler à partir de l'adresse ligne code que j'ai trouvée, encore moins d'assembler et réinsérer.

 

Pour les assembleurs (même la snes et nes) la procédure d'insertion dans une rom existante m'échappe. Il me semble que ça construit de nouveaux programmes à zéro, ou des fragments de code. Mais l'hameçon avec l'instruction de saut est quelque chose que je dois toujours insérer manuellement (en écrivant manuellement l'équivalent en hex de l'instruction du saut sur l'instruction à remplacer) et je crois qu'il existe une meilleure façon de le faire en propre mais qui m'échappe.

 

 

Dans tous les cas, je préfère toujours avoir un fichier "texte" (donc une rom désassemblée) pour fouiller tranquillou/annoter dedans.

Attention, tous les désassembleur ne se valent pas.

 

Y en a des émulateurs qui génèrent des fichiers "symbole" modifiables avec notepad++ au cas où on voudrait ajouter des noms à des lignes de fonctions de programmation en particulier, comme bsnes-plus. A ce que j'entends, il y a des jeux qui ont des symboles nommés déjà par le constucteur oubliés dans le disque, mais je ne saisis pas trop comment les exploiter.

 

La remarque à propos des désassembleurs est tellement vraie.. ça m'a fait perdre tellement du temps sur NES.

 

 

Mame offre aussi des fonctions de debug, mais perso je ne trouve pas ca "hyper" pratique ni friendly

(mais parfois pas le choix vu que l'on n'a que ca pour hacker des trucs arcade)

 

Le mode debug avec ligne de commande? On peut faire pire.

Certains émulateurs demandent un débogeur du programme windows (x86) de l'émulateur. Ou un autre débogeur en parallèle. Sans aucune documentation par ailleurs. C atroce.


  • 0

#5 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 21 novembre 2018 - 16:11

FCEUX ça marche comme bonne entrée dans la matière avec:

 

- désassembleur inclus

- assembleur inclus

- trace

- code logging (pour détecter données utilisées)

- breakpoints, dont ceux à conditions

 

(Mesen ajoute une décomposition avec flèches plus claires où chaque fonction commence)

 

 

Malheureusement c'est rare de trouver d'emulateurs à débogeurs aussi bien foutus pour autres consoles. bsnes-plus (snes) était une récente surprise mais ça reste pas assez.


  • 0

#6 Ichigo

Ichigo

    SMS lover ^^

  • 8 241 messages
  • Localisation49

Posté 21 novembre 2018 - 16:54

Exodus ne fonctionne que sous Windows 64bits.
Et il faut une machine puissante...

 

Les .sym c'est simple fichier texte de adresse:label pour permettre de se retrouver.

 

Wladx (assembleur) fonctionne avec pas mal de machines dont la SNES

C'est l'assembleur que j'utilise pour programmer en ASM sur Master System.

Il génère un fichier symbol (.sym) qui peut etre utilisé sous meka ou emulicious ensuite.

 

pour mettre une rom en arrière plan, c'est simple (sur wladx):

.background "ma-rom.xxx"

ensuite des .org ou .orga pour les adresses à modifier


  • 0

#7 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 22 novembre 2018 - 03:10

Quelques tutos

 

PS1 (Megaman Legends comme exemple)

 

SNES/NES/MD/DS, en allemand


  • 0

#8 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 22 novembre 2018 - 03:19

Puisque ce n'est pas très cité ailleurs pour soucis d'impropriété et de réputation, mais ça peut être utile pour ceux à court d'options, la documentation officielle incluse avec les software development keys, ainsi que certains outils logiciels inclus de conversion, peuvent avoir des informations vraiment précieuses.

 

Mais vu que leur acquisition est souvent illégale ou viole les termes du contract du développeur, ils sont difficiles à trouver vu qu'ils ne restent jamais sur le même site sur internet avant d'être supprimés et c'est un risque en soi.

 

Ils peuvent être un complément très efficace à la documentation hardware, mais même les versions officielles peuvent avoir des erreurs (que ce soit par omission, par fautes de traduction depuis le japonais auquel cas la version japonaise du guide est supérieure mais bien plus inaccessible que ce soit l'acquisition en soi même ou le vocabulaire technique utilisé, et il y a les cas où le constructeur garde jalousement certains aspects du hardware et produit d'autres guides pour leurs équipes internes, quelque chose dont Nintendo est très coupable)


  • 0

#9 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 22 novembre 2018 - 03:35

Quelques pages de documentation hardware très utile (mais loin d'être parfaites étant un travail en progrès)

 

GBATek (GBA/DS/DSi)

EveryNES (NES)

PSX-SPX (PS1) à complémenter par la documentation officielle

fullsnes (SNES)

Pandocs (GB/GBC)

SacredTechScroll (VB)

 

(je me souviens d'une pour la wonderswan, le pc engine, et la megadrive mais je ne les retrouve pas. il y a pour le pc-98 en japonais)

 

Pour les arcades il y a les commentaires inclus dans le code source de MAME qui sont assez élaborés qui peuvent être très utiles.


  • 0

#10 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 22 novembre 2018 - 03:46

Comment faire son premier homebrew qui dit "hello world" ca peut aider aussi, histoire de comprendre comment le hardware communique avec son extérieur. Ce sont souvent des packs préconçus, à assembler avec un outil assembleur. C'est pour épargner aux développeurs de faire toute l'initialisation des registres hardware de démarrage (qui peut être assez longue) eux mêmes.

 

Très utile pour tester ses connaissances en programmation assembleur et éventuellement, ajouter des écrans d'intros ou des changements plus radicaux.

 

NES:

https://github.com/P.../HelloWorld.asm

 

SNES:

https://en.wikibooks...zation_Tutorial

 

Genesis:

http://sega4ever.pow...D/Sommaire.html (en français)

 

GBA:

https://www.reinterp...oy-advance-game

http://www.loirak.co...oy/gbatutor.php (utilise VBA, même si la recommendation usuelle est no$gba, mais ça marche aussi)


  • 0

#11 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 22 novembre 2018 - 03:50

A part ça, il y a des documentations hardware sous format vidéo facile à comprendre avec du très bon travail d'infographie pour ceux que ça tente.

 

SNES (série documentation hardware):

 

Megadrive (un tuto hello world):


  • 0

#12 Redfield1

Redfield1

    Painkiller

  • 5 446 messages
  • LocalisationAero-City

Posté 22 novembre 2018 - 05:53

Merci Messieurs pour ces exemples et ces liens. :wink:


  • 1

#13 gatchan

gatchan

    Hacker vaillant, rien d'impossible

  • 1 059 messages

Posté 22 novembre 2018 - 08:14

Tu peux oublier la version snes9x de Geiger, largement obsolète.

Préfère celle-là : https://github.com/d...cker/bsnes-plus

(le «K» de SDK est pour «Kit», pas «Key» :) )


  • 0

#14 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 22 novembre 2018 - 10:10

Tu peux oublier la version snes9x de Geiger, largement obsolète.

Préfère celle-là : https://github.com/d...cker/bsnes-plus

(le «K» de SDK est pour «Kit», pas «Key» :) )

 

Pour la Geiger, ça faisait l'affaire pour un moment, mais je n'avais jamais compris comment l'utiliser pour le trace. et il paraît qu'il faut aussi installer un correctif windows pour pouvoir continuer à l'utiliser.

 

J'utilise déjà bsnes-plus depuis un bail parce que le memory viewer couvre déjà bien plus de choses (SA-1, Super FX-2) que celui de la fork de Geiger, et le PPU viewer n'est vraiment pas de trop (une aubaine même, ça change de faire un dump de vram et le faire passer à un tile éditor chaque fois pour voir tout changement)

 

No$sns est une autre option, mais ça rate l'ergonomie et les bonnes bases de l'émulation en soi même.


  • 0

#15 gigi

gigi

    Petit Gamer

  • 280 messages
  • Localisationfrance

Posté 30 novembre 2018 - 07:41

ahah , put*** ca m'a rendu fou au debut les logiciels d'assemblage pour SNES.... le problème c'est que rien n'est expliqué correctement meme pour un faux débutant 


  • 0

#16 GHANMI

GHANMI

    Membre Avancé

  • 111 messages
  • LocalisationBot Nintendo Russie

Posté 11 décembre 2018 - 04:41

J'ai enfin trouvé le document technique de la Wonderswan (Color), à retrouver ici:

http://daifukkat.su/docs/wsman/

 

L'émulateur de déboguage recommandé est, faute d'options, mednafen. Le mode debug est accessible comme toujours avec Alt+D.


  • 0