PS1 dithering OFF codes
[HS]
@krHACKen : t'as vu ça ? https://forums.pcsx2.net/attachment.php?aid=65591 https://forums.pcsx2.net/attachment.php?aid=65592 Je suis parvenu à faire le chemin inverse de ce que le gars a fait pour créer ces codes. Mais pour l'instant, on est un peu limité dans les recherches, vu qu'on ne connait qu'une seule valeur à changer pour éliminer cet effet de croisillon. :/ Sur son twitter (@https://twitter.com/covell_chris/status/946047748180140032) Chris dit ceci... Citation:
|
Yep j'ai vu ça. Et ça tombe pile au moment où je suis entrain de foutre Cheat Engine Compilation à jour.
Nope, j'connais pas de meilleure méthode. Faudrait que je désassemble quelques PS-X EXEs pour faire joujou avec GPUSTAT, mais j'suis trop occupé avec d'autres trucs. Puis toutes mes PS1 sont hors service. |
Ok merci. J'espère que les codes avec qq lignes vont m'aider à trouver d'autres séquences. Jviens de tomber sur 2 jeux (MGS et Soul Reaver) pour lesquels je n'élimine cet effet que partiellement - avec 1 seule ligne de code.
Au fait, tant qu'on y est... est-ce que "80038AF0 0" = "80038AF0 0000" ? |
Citation:
Une valeur hexa 8bits, c'est 00. Vu que le code commence par 8, ça veut dire que la valeur est 16bits, donc 0000. Ouais, ça veut surement dire 80038AF0 0000 = écriture constante de 16 bits. Pour une écriture constante de 8 bits (donc 1 octet), ça serait 30038AF0 0000. Si je trouve des astuces au sujet du dithering, je te les filerais. Mais je ne m’inscrirais pas sur le forum de pcsx2. Y'a un parasite là-bas, et je préfère me tenir à l’écart de lui. |
Merci, jcorrigerai !
Jsens que ca va être complexe pour certains jeux. Ex : Castlevania Chronicles (J). 8003ED68 0000 / 0200 -> BG ; 0200 se situant dans la séquence 023C00024234 800406E8 0000 / 0200 -> FG, sprites ; 0200 se situant dans la séquence 043C00028434 80043748 0000 / 0200 -> BG ; 0200 se situant dans la séquence 033C00026334 Chercher directement 0200 me donne bcp trop de résultats et pas moyen de changer en direct la valeur depuis Cheat Engine (d'après un gars de PCSX2). |
Citation:
Code:
lui v0, $???? Citation:
Code:
lui a0, $???? Citation:
Code:
lui v1, $??? En recherchant ça dans la RAM ou l'exe et en patchant ces instructions en direct, vous vous donnez beaucoup trop de mal. Les fonctions liées au dithering n'ont vraiment que ça en commun ? Vous n'avez pas d'autres paternes de code à rechercher ? |
Citation:
Chris Covell avait posté aussi ça sur twitter mais j'ai pas compris... Citation:
|
|
Mouais. J'ai fait un peu joujou avec ça, sans trop aller loin dans le truc.
Pas ma tasse de thé comme hack.
Spoiler
Je vais quand même attendre que vous produisiez une liste de codes consistante avant de publier Cheat Engine Compilation pour que tout le monde soit content. |
Si t'as un moment et que tu peux jeter un oeil sur MGS, jme casse les dents dessus.
J'imagine qu'il faut utiliser le 3eme exemple du tuto pour y parvenir - mais jcomprends pas bien comment utiliser VRAM viewer. D'autant plus que pour l'exmple qui est pris - SOTN - y a pas besoin, E1000200h donne direct le résultat... |
J'ai trappé tout ce que j'ai pu sur MGS FR, sans succès.
Spoiler
:( |
Citation:
Citation:
T'as tenté 800765B4 0020 ? J'ai vu qq chose de similaire dans les codes de chris. |
Ça donnerait quelque chose sur ton MGS FR ça ?
D00178B0 0000 800178B0 3050 D00178B2 0000 800178B2 A420 D00178C8 0000 800178C8 3090 D00178CA 0000 800178CA A420 |
Jteste ça en rentrant.
Par curiosité, t'ajoutes quoi à Cheat Engine Compilation ? |
Citation:
- Nettoyage des doublons / correction des erreurs dans les deux listes de codes = fait - Ajout des softs = fait, et à revérifier. Je n'ai ajouté que Cheats 'N Codes (USA). Peut être qu'il y en a d'autres à foutre dans la compil'. - Ajout des ROMs sur X-Flash = fait, je n'avais que le Game Booser Jap à ajouter. - Ajout des codes dithering OFF = en suspend. - Correctif/contournement des STR = pas fait. Peut être que j'essaierais... |
Citation:
Jcomprends en revanche rien à comment tu as fait ce code (ni ce que signifie ce D devant certaines lignes). Citation:
|
Citation:
Citation:
Citation:
MGS a deux exécutables. Les codes D sont là pour sécuriser l'exécutable qui ne doit pas être patché. On appelle ça une joker command, quand la condition du code D est une pression sur un bouton. Dans le cas de mes codes D pour MGS, c'est plutôt un genre de $SAFEMODE, mais qui a pour but de protéger le premier exécutable du jeu, là où le $SAFEMODE de POPStarter ne protège que contre la corruption de l'OSD (exécutable du BIOS qui affiche le logo PS) et agit en mastercode (sur tous les codes activés). Autres exemples de code D avec MediEvil FR, qui lui aussi a deux exécutables : Code:
Principal Code 1 : Si la valeur à 0009D420h est 0200h, écrire 00h à 0009D421h Code 2 : Si la valeur à 00077BC8h est 0220h, écrire 00h à 00077BC8h Code 3 : Si la valeur à 00078E64h est 0220h, écrire 60h à 00078E64h Citation:
|
Ok, merci pour tes explications et pour ces 2 codes. J'imagine qu'on doit pouvoir utiliser ces codes conditionnels pour solutionner ce problème.
Bon, question con, vu que j'ai retenté un dump de MGS FR avec no$psx et que j'ai bcp moins d'adresses intéressantes que celles que t'as mentionnées là pour E1000200. Pour dumper, je fais sous no$psx : Utility > Disassemble to File > Number of bytes to disassemble : 210000 (pour choper de $80000000 à $801FFFFF). Tu fais autrement ? |
C'est ps2dis qui a sorti toutes ces adresses supplémentaires après l'analyse. Il a cherché toutes les instances de .word 0xe1000200 dans la mémoire, puis a trouvé les opcodes qui pointent directement vers ces offsets. Et par conséquent, écrire la valeur 0x0000 dessus comme dans mon template 80xxxxxx 0000 causera des bugs et autres corruptions, vu que ça changera l'offset le lecture/écriture plutôt que de changer la valeur à écrire sur l'offset.
En gros, les adresses que j'ai listé ne sont utiles que si on a le désassembleur sous les yeux pour voir l'opcode qui s'y trouve. Dans le cas de MGS, les offsets (buffers) qui contiennent les valeurs 0xE1000200 sont dans un array, donc on n'obtient pas les pointeurs directs vers 000B3050h et 000B3090h à partir d'une simple analyse. Pour faire simple, toutes les adresses de ma liste que j'ai exporté une à une m'ont été inutiles. Sans quoi ouais, ce truc qui me servait dans le bidouillage de POPStarter et que j'ai un peu modifié cette nuit pour le fun ne me trouve que 2 chargements direct de E1000200h dans les registers (80092534 & 80093EF0), en zappant toute l'arithmétique et les conditions. Pas revérifié avec ps2dis. |
Ok merci - j'avoue que j'ai pas tout compris...
C'est pas portable d'une version à l'autre un hack ASM ? Citation:
Citation:
* : repère pour moi pour retrouver tes adresses du code PAL-FR et leurs équivalents PAL-UK. Ce qui me donne : Citation:
* (Avira se met à détecter CUE2POPS comme une menace, c'est gonflant...) * Ok, je vois que tout n'est pas identique, me suis sans doute planté là.... (A423CF56 movh [r1-30AAh],r3 pour MGS-FR, A423C9C6 movh [r1-363Ah],r3 pour MGS-UK). |
Non, ce n'est pas portable, vu que les adresses des offsets de destinations des valeurs (offsets 800B3050 & 800B3090 sur la version FR) ne sont pas les mêmes, et que la valeur chargée dans le register (at si ma mémoire est bonne) de la fonction sur laquelle l'asm se greffe n'est peut être pas la même non plus.
Puis le sample d'asm de no$psx n'aide pas, incomplet et tout ce qui n'est pas du MIPS brut me fout mal au crane:D. J'vais essayer de te faire un code pour le UK... |
Citation:
|
Oh au fait, les codes tu les testes aussi sous no$psx ou seulement sur POPStarter ?
Il y avait un bug critique qui touchait les codes D, qui a été corrigé dans la RIP 06. Maintenant ça devrait fonctionner mais rien n'est sûr. Aussi, il se peut que les codes qui font une injection d'asm dans l'exe ne fonctionnent pas. C'est à cause du recompileur merdique de POPS, qui ne recompile pas forcément le code modifié par le cheat et réutilise celui d'origine. |
Citation:
|
Ca devrait être ça :
Spoiler
Code:
D0017614 0000 |
Effectivement ce code fonctionne parfaitement. :pouce:
|
Citation:
|
Y'a qu'une seule version PAL de RR4. Quand il n'existe qu'une seule version PAL, même si c'est multilingue, je fous "(UK)".
Normal que le code commence par 3. Il ne fonctionne pas ? |
Citation:
Citation:
|
Putain de bombe à retardement
J'étais complétement à l'ouest l'autre jour. Le MGS n'avait pas besoin d'asm:lol:.
À cause de la bombe dans mon équipement (le cadeau de Ocelot), il me fallait désactiver les cheats pour pouvoir la jeter et ne pas me faire sauter la gueule. Et j'oubliais de réactiver mes cheats avant de relancer:pff:. C'est idiot. Donc en fait pour MGS, la méthode de base fonctionne pour trouver le code, à savoir choper les opcodes qui chargent E1000200h dans le register. Rien de compliqué. Pour mgs FR, le premier qui sort (30092535 0000) est le bon. Je corrigerais la liste plus tard... ET JE VIRERAIS AUSSI CETTE SATANÉE BOMBE À RETARDEMENT DES CHEATS:grr:. |
:lol:
J'en profite pour te demander - comment pour RRT4 - pourquoi le code commence par 3 et non 8 ? Comment choisir entre les 2 ? |
Citation:
Edit : tes bats ne me donnent aucun résultat sur un snapshot de MGS FR... :heu: |
Citation:
Le code 8 écrit 2 bytes. Vu qu'on cherche à remplacer la valeur 0200 par 0000, pas besoin d'écrire 0000 en deux bytes (code 8) vu qu'on a déjà un 00 dans la valeur. Tout ce qu'on veut faire en fait, c'est changer le 02 en 00. Exemple en prenant le code anti-dithering de Ridge Racer Type 4 PAL : Valeur originale à l'offset 000940E8 : 0200 On veut changer le 02 en 00. Pour que ça donne 0000. Le 02 est à l'offset 000940E9. On prend l'adresse 000940E9, on y met le type de code 30 dessus, ce qui donne 300940E9. Et notre valeur 00, ce qui donne 300940E9 0000. Le code 800940E8 0000 aura le même effet que 300940E9 0000 néanmoins. C'est juste une façon de faire... Pour savoir le quel des deux types choisir, suffit de savoir quoi patcher et avec quelle valeur. Imaginons qu'il faut que nous fassions un code widescreen, sur un jeu qui a pour valeur originale 1999. Pour remplacer 1999 par 1333, on doit écrire deux bytes (99->33 & 19->13). Donc obligé d'utiliser un code 8. Ou bien deux codes 3 mais c'est absurde. Exemple avec MediEvil FR : D00F8594 1999 // original 800F8594 1333 D00F8C9C 1999 // original 800F8C9C 1333 Et pour un code widescreen avec une valeur originale 1000 à changer en 0C00, un code 3 devrait suffire. Exemple avec Small Soldiers FR : D00A7190 1000 // original 300A7191 000C ça change le 10 en 0C, pour qu'au final ça donne 0C00. Maintenant pour les codes de triches, tout dépend de comment le jeu est foutu. Imaginons un jeu qui stock la valeur de l'énergie du personnage dans un seul byte. Mieux vaut utiliser un code 3. Parce qu'en utilisant un code 8, ça écrira deux bytes, et par conséquent, ça risque de modifier la valeur d'un autre paramètre en même temps. Un titre qui me vient à l'esprit, Resident Evil. Ce jeu a un byte qui indique l'item, et le byte juste à côté est la quantité. Avec des codes 3 on peut choisir l'item et la quantité indépendamment, et avec un code 8 on contrôle les deux en même temps. Citation:
Le programme accepte les snapshots de no$psx, des dumps de RAM complets (2 Mo) et les exécutables PS1. EDIT : Je viens de voir que demilich a trouvé mon code pour Driver 2. Content que ça marche. Peut être que je devrais prévenir quand je réupload la liste avec de nouveaux codes anti-dithering. Le truc c'est que je fais plusieurs choses en même temps, et que je produis les codes quand j'ai un peu de temps libre. |
Ok, merci pour ton explication, jpense que j'ai pigé.
Ton exemple concernant MediEvil FR m'a un peu perdu, jpensais que tu me montrais un exemple de décomposition de code 8 en deux codes 3 - mais jcomprenais pas pourquoi les 2 lignes restaient en code 8, ni pourquoi les offsets de 2 adresses n'étaient pas consécutifs... :heu::fou: Explication simple : ton code WS sur ce jeu est différent de celui de l'archive WS d'ElPatas. J'imagine que t'as corrigé ce pb ? Citation:
Citation:
Citation:
|
Citation:
Décomposition du code de MediEvil FR : D00F8594 1999 300F8594 0033 D00F8594 1933 300F8595 0013 D00F8C9C 1999 300F8C9C 0033 D00F8C9C 1933 300F8C9D 0013 Citation:
Citation:
Mon programme vérifie la présence de "NO$PSX SNAPSHOT" dans l'en-tête (offset 0h) du fichier, puis scanne jusqu'à "MRAM" puis charge le contenu 12 octets plus loin sur 2 mégaoctets. Sinon il vérifie la présence de "PS-X EXE", et lit son en-tête pour savoir comment mapper le contenu. Sinon il quitte, sans message d'erreur. C'est un programme que j'utilisais pour des trucs persos, pour toute autre chose que l'anti-dithering. Je l'ai modifié à la barbare et il n'y a pas de message d'erreur d'implémenté. Tu devrais vérifier ça : Options/Emulation Setup/Files/SNA File Format = Uncompressed Tes savedstates sont surement compressées et mon programme ne décompresse que dalle. Il prend les fichiers bruts. EDIT : Aussi, mes batchs sont fichus pour n'afficher que des rapports pour E1000200h. Pour certains jeux ça peut être insuffisant. Par exemple, je viens de faire Gran Turismo 2 PAL. Il a besoin du scan de E1000240h pour enlever le dithering sur les fumées/poussières des roues de bagnoles. En enlevant les "rem" en face de @echo [ALL] et des deux lignes suivantes, t'auras plus de résultats. |
Citation:
Citation:
|
(discussion splitée ici - ca faisait 4 pages de hors-sujet dans le topic POPStarter...)
|
http://aybabtu.chez.com/kHn/E1.ZIP
Bugfix. Les codes "[OLDSCHOOL SHIT]" de type "// A" ne s'affichaient pas avec certains jeux (dont le prototype de MediEvil), à cause d'une instruction jump and link mal calculée:shy2:. EDIT : Quelques infos sur "[OLDSCHOOL SHIT]", vu que le nom de nerd n'est pas vraiment explicite. C'est une variante du code qu'on utilisait pour foutre l'affichage en PAL/NTSC autrefois, sauf que là c'est sensé désactiver complétement le dithering, sans avoir à réinscrire de nouvelles valeurs E1h. Dans la grande majorité des cas, il faut rebooter le jeu pour que le code prenne effet. Peu de jeux invoquent cette fonction en cours de jeu. |
http://aybabtu.chez.com/RANDOMPIX/45245321.jpg
MediEvil m'emmerde. J'ai eu beau désactiver le dithering, il y en a toujours par endroits, selon l'angle de caméra:heu:. |
"SUPERLIST" actualisée :
+ "Gran Turismo (JP)" + "Gran Turismo (UK)" [PAL MULTI] + "Gran Turismo (v1.0 US)" + "Gran Turismo (v1.1 US)" + "Gran Turismo 2 (UK)" [PAL MULTI] + "MediEvil (Regist. Us. Demo 02)" [c'est le prototype inclus dans Registered Users Demo 02] Modification des codes existants pour : + "Tekken (v1.0 JP)" + "Tekken (v1.1 JP)" Il leur manquait un code D et un code 3 pour le mini-jeu. Maintenant ils sont complets. |
Fuseau horaire GMT +1. Il est actuellement 11h06. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.