Jeudi 21 Juin 2018  -  16h04  

       A découvrir sur N64
       Accès Rapides

   Accueil

   Emulateurs

   Plugins

   Roms N64

   Jeux N64

   Boites 3D / Box-Art

   Textures HD

   Hacks / Traductions

   Manuels

   Tests / Vidéo-Tests

   Vidéos

   Dossiers & Tutos

   Tournois

   Concours

   Quiz N64

   Mini-Jeux N64

   Challenges N64

   Sondages

   Classement Trophées
Le saviez-vous ?

Super Mario 64 a bénéficié d’un remake sur Nintendo DS en 2004 sous le nom de Super Mario 64 DS.
Aide ULTRAHLE : Mode Déboguage
Activer et Désactiver le Mode Déboguage

Les "boutons" Debug ON et Debug OFF permettent d'activer ou de désactiver la console de déboguage.
Quand la console est activée, une fenêtre noire apparaît à côté de l'émulateur, elle sert à prendre les adresses mémoire pour ensuite faire des "patchs" de correction de ROMS dans le fichier ultra.ini (ci-dessous, comment faire les "patchs").

Construction de "Patchs" pour UltraHLE

Savoir construire des patchs pour UltraHLE, c'est aussi l'améliorer. Pensez-y !
Astuce : Testez sous Nemu v0.6. Si ça passe, c'est qu'un "patch" pour UltraHLE 1.0 est faisable.Prenons l'exemple du dernier jeu qui fonctionne: SUPERMAN.
Chargeons le rom par Fichier > Ouvrir. Maintenant, vous pouvez lire le titre du ROM dans le débogueur, donc marquez ceci dans ultra.ini:

[SUPERMAN]
alttitle=SUPERMAN
comment=...

Et ensuite vient le "patch". Comment faire ? Très simple.
Chargez le rom en mémoire sans le lancer, vous verrez un chiffre en haut à droite dans le débogueur, ce chiffre étant l'adresse de départ du rom. Ici, on s'en fout, on lance directement le ROM. Ça s'arrête à l'adresse 80004978, ça se voit dans la 2e colonne où il y a marqué F3 sur la bordure verte. Puis à coté, il y a 1000FFFF donc on écrit: patch=0 (0 pour patch de démarrage sur la ligne que l'on choisit) puis, 80004978 parce que c'est le N° de la ligne qui bloque et enfin la classique fin de ligne: appliquer le patch fonction 49 (c'est 3/4 du temps 49).
donc ça nous donne:

patch=0, 80004978, patch 49

Voilà, dans les jeux, il faut donc repérer l'adresse où ça bloque (ici c'était 80004978), puis marquer les "patchs" génériques que voici si le ROM ne fonctionne pas:

patch=-1, "la ligne qui bloque", 49
patch=-2, "la ligne qui bloque", 49
patch=1, "la ligne qui bloque", 49
patch=0, "la ligne qui bloque", 49
Patch=-1, "la ligne qui bloque", word 0x1000FFF9
patch=-1, "la ligne qui bloque", word 0x00000000
patch=-1, "la ligne qui bloque", patch 14
patch=-1, "la ligne qui bloque", patch 13
patch=-1, "la ligne qui bloque", patch 53

Sachez que vous pouvez y passer la nuit avec les - 1, 0 , 2, 1 car ça se joue à un rien et ça devient vite un labyrinthe et pour Mapmem:
Mapmem=03ff000, la ligne sp* dans le débogueur en haut seconde colonne en partant de droite dernier symbole, 10000000 donc:
Mapmem= 03ff000, la ligne sp*, 10000000 (Inutile dans Superman)
La ligne sp doit être mise sous cette forme: Pour 80158902 écrivez 801FFFF0 etc.
Essayez le 0 de la fin de 1 à 9 (801FFFF1 etc.)
Vous voilà satisfait ? Ici c'est simple mais c'est l'essentiel.

Questions et Réponses

Conseil : activez la console de déboguage dans l'utilitaire de configuration
Comment utiliser la commande MapMem ? (__JC & -Max-)
Pour utiliser MapMem, vous aurez besoin de regarder la grosse fenêtre DOS sous Windows de la version Frantic UltraHLE. Vous aurez besoin de trier les chiffres dans le cadre bleu en haut de la fenêtre. Regardez le symbole "sp" qui est en bas de la seconde colonne en partant de droite. Voici comment ça marche: L'erreur que vous aurez dans le débogueur de la fenêtre principale HLE, c'est le premier chiffre et le symbole "sp" c'est le second chiffre et le dernier. Je fais toujours ça 10000000 fois

Pourquoi marquer bootloader=1 ? (__JC & -Max-)
OK, tous les ROMS de N64 utilisent une petite partie de code appelée le code de démarrage, c'est pourquoi elles peuvent être lues par la cartouche, dans le Nintendo 64. Aussi, si vous avez un mauvais fichier ROM récupéré sur Internet, UltraHLE a déjà ce code incorporé. Voilà pourquoi vous pouvez essayer de rajouter la ligne "bootloader=1" pour enclencher le code HLE interne et non pas celui qui est dans le jeu rom.

Comment trouver la rangée code du jeu ? (__JC & -Max-)
Chaque jeu ROM a son code de démarrage, quand vous lisez une ROM, dans la fenêtre DOS pour Windows, vous devez noter l'adresse qui attends pour démarrer. Ouvrez la version Frantic de UltraHLE, ouvrez le ROM que vous voulez avec Fichier > Ouvrir, mais ne le démarrez pas tout de suite. Dans la grosse fenêtre noire, le code doit-être en train d'attendre à 800xxxxx, pouvez vous le voir ?
Rappelez vous ceci : Tous les codes de démarrage ont 3F0 de longueur. OK, aussi nous ajouterons "3f0" à "00xxxxx" et nous obtiendrons "800xxxf0", d'accord ? Autre exemple: Ajoutez à 80000400 l'indice "3f0" et vous aurez 800007f0. Dans la grosse fenêtre DOS sous Windows, marquez "u 800007f0". Cliquez bien sûr, sur la fenêtre, pour la mettre active, et vous pourrez commencer à écrire. Vous allez voir ce que vous écrirez en bas de la fenêtre DOS sous Windows. Remarquez le code 8000xxxx, la ligne commence avec le symbole "jal".
Exemple: jal 800322D0 osCreateThread #10
OK, là où vous voyez marqué ce osCreateThread, cela signifie que c'est une partie du jeu qui va s'annuler avec l'osrange. Tout ce que vous avez à faire, c'est prendre le 800 et le premier chiffre après ça, et vous trouverez là où le jeu démarre. Donc pour cet exemple l'osrange sera: osrange=80030000, 8xxxxxx

Savoir "patcher" le fichier ini (__JC & -Max-)

patch 0, xxxxxxxx, patch yy (0-255)
Ceci est un "patch" que l'on peut rajouter, où yy est une valeur décimale au code hexadécimal du "patch". Si ce "patch" est employé, alors toutes les adresses suivant ce "patch" jusqu'à la prochaine instruction "nop" disponible dans le code, doivent être impérativement corrigées en utilisant la commande patch 0
patch=-1, xxxxxxxx, byte yy (0-255)
Ceci place la valeur hexadécimale pour yy à l'emplacement du bit 7 et 8. Exemple: Si yy est 22, avant l'adresse indiquait 00000000, mais maintenant elle montre 16000000. Cet exemple s'emploie pour activer les tricheries comme les vies supplèmentaires etc. Rappelez vous que ceci est lu en mode décimal dans le fichier ini et enregistré en hexa dans le ROM, comme par exemple 22 en décimal qui fait 0x16 en hexa.
patch=-2, xxxxxxxx, byte 2
Ceci place le code maître "syscall" à l'adresse.
patch=-2, xxxxxxxx, patch yy
Ceci place le patch décimal yy à l'adresse. Rappelez vous que yy est en décimal, et que la "valeur" patchée sera en hexa.
patch 30 // audio
patch 31 // audio

Traduction du document du débogueur de nutela par [GreevY]

Aide du débogueur V1.10 français

Ce fichier est un document À propos du débogueur de UltraHLE.
Les bons documents à propos du débogueur ne semblent pas exister, alors j'ai décidé d'en écrire un.
Il n'est pas encore parfait, mais avec votre aide il pourra devenir très pratique et de bonne qualité.
Merci à tous ceux qui m'ont aidés (Entre-autres RealityMan).

Chacune de ces commandes sont à utiliser dans la console débogueur :

F1 : Change l'écran View à l'écran Stats
F2 : Change l'écran View à l'écran Data
F3 : Change l'écran View à l'écran Code
F4 : Change l'écran View à l'écran Console
F5 : Démarre le ROM choisi (Go)
F6 : Change la vue des Registres
F7 : Prochain appel, prochain saut (fstep)
F8 : Faire en une étape une instruction
F9 : Voir chaque appel éffectué

UP : Historique des commandes
PGUP : Défilement la console
ESC : Arrête le défilement (console)

Commandes de base

+ : Éxécuter la dernière commande
go : Démarrer le ROM choisi
exit : Quitter
x : Quitter
reset : Redémarrer le ROM
help : Devrait être l'aide mais ne fonctionne pas
esc : Arrête l'éxécution

ogo : Ancien go (avec compilateur plus vieux)
sgo : go ralenti (avec l'émulateur en C)

Accès au fichier (ROM)

rom <nom> : Charge un ROM
load <nom.sav> : Charge votre sauvegarde (ultra.sav par défault)
save <nom.sav> : Sauvegarde votre partie (ultra.sav par défault)

Commandes de contrôle du dénouement

t : Trace
n : Étape (comme F8)
s : Seulement une étape (comme F8)
goto <i> : Aller à un code d'adresse
skip <n> : Sauter <n> instructions

of : Éxécuter plusieurs instructions ?

Points d'arrêts

nc : Éxécuter jusqu'au prochain appel
nr : Éxécuter jusqu'au prochain retour
nm <queue> : Éxécuter jusqu'au prochain message dans la suite
nf : Point d'arrêt jusqu'à la prochaine image
nt : Point d'arrêt jusqu'au prochain échange

mc <adresse> : Éxécuter jusqu'à ce que l'adresse change
ma <adresse> : Éxécuter jusqu'à ce que l'adresse soit entré/mentionné
mr <adresse> : Éxécuter jusqu'à ce que l'adresse soit entré/mentionné
mw <adresse> : Éxécuter jusqu'à ce que l'adresse soit écrite

Autres commandes

W : Image "fil-de-fer"
Q : Textures
wireframe <i> : Graphiques "fil-de-fer" on/off
gfxthread : Éxecute les graphiques dans des processus séparés
graphics : Émulation des graphique ou non (Crée le fichier dlist.c)
screen <fichier> : Enregistre une capture d'écran en format TGA
resolution <res> : Change la résolution <res> = 512/640/800/1024
camera a a a : Change l'angle de la caméra

zeldajap : Régler le language de Zelda64 en japonais
zeldaeng : Régler le language de Zelda64 en anglais

sound : Émulation du son en marche ou non (Crée le fichier slist.c)
soundsync : Syncronization du son (ralentit les graphiques)

Memory : Montre la mémoire

group <addr> : Désasemble le groupe compilé x86 à l'adresse <addr>
compile <add> : Compile et désasemble (par défaut add=pc)

osinfo : Liste des Tâches/Suites/Évenement du OS
emptyq : Efface toutes les suites

event <nomb> : Envoie l'évenement, <nomb>,all,sp

info <0/1> : Information Générique on/off
trace <0/1> : Vidage du Trace on/off
ops <0/1> : Toute l'opération trace on/off
asm <0/1> : Information du compilateur asm on/off
os <0/1> : Information du OS on/off (ultra.log)
hw <0/1> : Information du OS on/off
snd <0/1> : Information du son on/off
wav <0/1> : Vide le son

all <0/1> : Met chaque des options ci-dessus on/off
stop <0/1/2> : Arrêter à: 0=exeption seulement, 1=exeptions&erreurs, 2="bis"&avertissements

u <adresse> : Désasembler l'adresse qui débute (place l'info dans la fenêtre Code)
eb <adresse> : Données de l'adresse qui débute (dans la fenêtre Data)

ss <s> : Chercher la chaîne de caractères (string) <s>
ssr <s> : Cherche <s> (Relatif ?)

listos : Liste des appels du OS (où?)
findos : Trouver les appels du OS

saveoscalls : Crée 2 fichiers oscall.h et oscall.lst
sym : Liste Symboles

disasm <fichier> <base> <cnt> : Désasembler le code a partir de l'adresse <base> jusqu'à la longueur <cnt> à un fichier <fichier>
disasmrsp <fichier> <base> <cnt> : De même avec le microcode RSP
savemem <fichier> <base> <cnt> : De même avec la mémoire

example <n> : Imprime le nombre (?)
example <s> <n> : Imprime la ligne, le nombre

Ultra.exe versus UltraFrantic.exe

* Première différence

UltraFrantic.exe
4672616E74696332343220...
Version 242 de Frantic.UltraHLE
Ultra.exe
556C747261363420486967...
Ultra High Level Emulator.UltraHLE

D'accord, ce sont deux noms différents pour deux différentes versions.

* Deuxième différence

UltraFrantic.exe
B64300E89870000083C424 E9D0330000
jmp 00405e50
Ultra.exe
B64300E89870000083C424 C390909090
ret , nop , nop , nop

C'est à dire qu'un saut a été retiré de UltraFrantic.
Ce saut montre apparament la console en utilisant conagent.exe du dossier Windows\System de votre ordinateur. Alors Ultra.exe et UltraFrantic.exe sont le même programme mais la console n'est pas visible dans UltraHLE.

Voici la confirmation de RealityMan, l'auteur de UltraHLE (en anglais):

<nutela> So could you confirm me that the original version of ultra had the console !
<nutela> and that a jump has been cuted in ultra.exe
<RealityMan> thats right - the release compilation conditionally disabled the debug console...
..,;:'Why does french words are so long ?':;,.. 8¬)

Ce fichier a été traduit entiètrement par [GreevY]
Informations supplémentaires fournies avec Ultra.ini version 1.0.14

Il y a beaucoup d'erreurs que j'ai trouvées et corrigées! Ceci peut fonctionner sur tous les ROMs qui font les mêmes erreurs. Ces erreurs peuvent être trouvées en passant en mode avec déboguage. Il est possible que cela soit utile ! En voici des exemples ! Par: -MAX-

XXXXXXXX 1000FFFF a2 b
Patch= -1, XXXXXXXX, word 0x1000FFF9
XXXXXXXX xxxxFFFF a2 bne1 T9!=r0
Patch= -1, XXXXXXXX, word 0x00000000
XXXXXXXX xxxxxxxx addiu s0=s0+001
Patch= -1, XXXXXXXX, word 0x00000000
XXXXXXXX xxxxxxxx LBU T4
Patch= -1, XXXXXXXX, word 0x00000000
XXXXXXXX xxxxxxxx Beq1 V0=r0 -->XXXXXXXX
Patch= -1, XXXXXXXX, word 0x00000000
XXXXXXXX xxxxxxxx Beq1 T7=r0 -->XXXXXXXX
Patch= -1, XXXXXXXX, word 0x00000000
XXXXXXXX xxxxxxxx Bne1 s0!=v1
Patch= -1, XXXXXXXX, patch 49
XXXXXXXX xxxxxxxx a3 lw
Patch= -1, XXXXXXXX, word 0x00000000

Liste affichée, trop large
Patch= -1, XXXXXXXX, patch 49
L'affichage n'a pas l'air d'être bon
Patch= -1, XXXXXXXX, patch 49 ou
Patch= -1, XXXXXXXX, patch 14
DMA ne copie pas les bonnes chaines de nombres
Patch= -1, XXXXXXXX, patch 13
Code principal du processeur non trouvé
Patch= -1, XXXXXXXX, patch 53
Code principal du processeur non trouvé patch 14880
Patch= -1, XXXXXXXX, patch 53
Le numéro de file -2145978976 sur 801702c0 est trop important
Patch= -1, XXXXXXXX, patch 53
Dlist matrix stask underflow
Patch= -1, XXXXXXXX, patch 49
Le processeur utilise une nouvelle allocation avec r0
Patch= -1, XXXXXXXX, patch 49
(03ff000) éxecution à une adresse invalide
mapmem= 03ff000, sp N0, 10000000 (sp N0 peut être trouvé en mode débugueur sur la seconde colonne de droite)

Retour
       Membres

   Identifiant :

  

   Mot de Passe :

     

   Mot de Passe oublié !
Devenir Membre
       Dossiers / Tutos (39)

   Test de l'Ultra Racer 64 (InterAct)

   Test du PSX-N64 USB Converter (Boom...

   Jouer aux FPS de la Nintendo 64 à l...

   Enregistrez et visionnez vos partie...

   Test du GameBooster (Datel)

   Jouer en réseau avec Project64 KVE

   Comment soigner ses cartouches N64 ...

   Test du N64 Controller Adapter (May...

   Collectionner sur Nintendo 64

   Commencer dans l’Emulation Nintendo...
Tous les Dossiers
       Vidéo-Tests (14)

   SCARS

   South Park Rally

   Legend of Zelda, The - Majoras Mask

   Extreme-G

   GoldenEye 007

   Quake 64

   Mario Tennis
Tous les Vidéo-Tests
       Tests de Jeu (45)

   Turok 2 - Seeds of Evil

   Super Mario 64

   Jet Force Gemini

   Conkers Bad Fur Day (2)

   Hybrid Heaven

   Mario Kart 64

   Donkey Kong 64
Tous les Tests
       Notices Scannées (150)

   AeroFighters Assault

   Star Wars - Rogue Squadron

   Lylat Wars

   F-ZERO X

   Banjo-Tooie

   GASP Fighters NEXTream

   Polaris SnoCross
Toutes les Notices
       Partenaires

   GameTronik.Com

   SyTest.Net
 
(c) 2001-2018 Emulation64.fr / Emulation64.net