Tuesday, June 15, 2021

(Actualizado) Guía básica para hacer cheats para PSP

Guía básica para la creación de trucos (cheats) para juegos de la PlayStation Portable, mejor conocida como PSP

Actualizado 👉 Mejorada la guía para crear trucos con cualquier combinación de teclas y se añadieron los cheats de 60fps! 😃

En este tuto mostraré como crear cheats para juegos de PSP, en esta ocasión me enfocaré solo en cheats que alteran valores en el juego, por ejemplo dinero o puntos infinitos y otros valores similares, a medida que vaya aprendiendo a crear cheats más avanzados actualizaré la entrada

Cabe destacar que si tienes ciertos conocimientos sobre el tema te será fácil poner el tuto en práctica, sino debes leerlo atentamente para que tu cheat pueda funcionar y así puedas crearlo sin que te tome mucho tiempo


Bien, comencemos:

Lo primero es saber que hay varios tipos de cheats, hay unos que reemplazan valores, otros reemplazan bloques completos, otros incluso te permiten activar y desactivar el truco usando una combinación de teclas, pero primero lo básico, el formato:

  • _C0 Nombre del Cheat
  • _L 0x######## 0x########


_C0 es el identificador del nombre del cheat, _C0 significa que el cheat se encuentra desactivado, _C1 significa que se encuentra activado, _L es el identificador del código cheat

El primer valor de _L es la dirección en memoria, más adelante mostraré como conseguir dicho valor, el segundo es el valor con el cual se desea reemplazar los datos, en el primer valor se debe especificar el tipo de dato:

  • 0x0####### -> datos de 8 bits (1byte), es para valores desde -128 a 127 (signed) o desde 0 a 255 (unsigned)
  • 0x1####### -> datos de 16 bits (2bytes), es para valores desde -32.768 a 32.767 (signed) o desde 0 a 65.535 (unsigned)
  • 0x2####### -> datos de 32 bits (4bytes), es para valores desde -2.147.483.648 a 2.147.483.647 (signed) o desde 0 a 4.294.967.295 (unsigned)

Es importante fijar correctamente el tamaño del valor ya que si reemplazas un valor de 32 bits por uno de 8 el valor resultante sería erróneo o si lo haces al contrario acabarías reemplazando los datos que le siguen generando así errores en el juego así que es importante saberlo!

Comúnmente los datos que se suelen reemplazar en los juegos suelen estar alojados en variables sin firmar (unsigned), como por ejemplo el dinero o puntos que ganas en el juego, pero hay ocasiones que los valores suelen estar alojados en variables firmadas (signed), compara el valor máximo que puedes conseguir en el juego y si dicho valor puede llegar a ser negativo y compáralo con el tamaño de los valores que dejé arriba para saber el valor máximo que puedes usar por tipo de datos

Ahora lo que sigue parece complicado pero no lo es en lo absoluto, en este caso necesitaremos la ayuda de un emulador capaz de dumpear (copiar a un archivo) la RAM emulada (por ejemplo para este tuto usaré el PPSSPP) y un editor hexadecimal (El mejor para esto, HxD Hex Editor):


  1. Abre el emulador e inicia el juego deseado, inicia la partida o ve al menú donde se encuentren los datos que deseas alterar y pulsa [ESC] para pausar el juego, si lo tienes en modo de pantalla completa ponlo en modo ventana
  2. Pulsa CTRL+M o arriba en el menú Depuración selecciona Visor de memoria
  3. En el cuadro hexadecimal da click derecho y selecciona Dump...
  4. Selecciona una carpeta fácil de localizar y un nombre de archivo también distinguible, por ejemplo puedes ponerle el sufijo -00#
  5. Pulsa OK


Cambia el valor que quieres en el juego, por ejemplo si es un ítem compra uno más, si es vida gana o pierde un poco, luego repite los pasos anteriores para dumpear nuevamente la memoria. Si quieres puedes cambiar nuevamente el valor deseado y dumpear nuevamente la memoria, aunque en muchas ocasiones (o en la mayoría...) basta con dumpearla 2 veces, en otras hay que hacerlo 3 o incluso más veces, hazlo solo si no logras dar con los datos usando 2 copias de la RAM.

Recuerda anotar cada valor antes de dumpear la memoria o cambiar los valores! Además deberás usar algún programa por ejemplo la calculadora en modo programador para convertir dicho valor en hexadecimal para poder localizarlo en la memoria

(Tip: puedes pulsar sobre las imágenes para ampliarlas)






En este caso creé 3 respaldos de memoria, en el primero el valor del ítem Cojín de Corazón era 1 (0x01), en el segundo era 2 (0x02) y en el tercero 3 (0x03) (obvio :P), pues es hora de abrir esos archivos con el editor hexadecimal para buscar esos valores...




Pulsamos CTRL+K y selecciona los dos primeros archivos, luego pulsa en Aceptar, con esto podrás comparar ambos archivos para localizar sus diferencias, pulsa F6 para pasar a la siguiente diferencia o MAYUS+F6 para pasar a la anterior, así no tendrás que buscar por todo el archivo ya que solo navegarías por las diferencias que existen entre ambos archivos 👌




Aquí pude localizar una diferencia que concuerda con los valores que busco, este se encuentra en el offset 0x50B77D, procedemos a crear el cheat y probarlo, en este caso lo reemplazaré por 127 ya que el juego usa un tipo de dato firmado (signed):


_C0 Cojín de Corazón infinito
_L 0x0050B77D 0x0000007F







Y como ven, tenemos ahora 127 cojines de corazones 👍 ahora a quién regalárselos queda a cuenta de cada uno de ustedes, yo por ejemplo se los daría a Luka 😍 Vaaaaaleee, a las otras chicas también 😅

Si tienes dudas de si los datos son firmados o sin firma (signed o unsigned) prueba un valor, si resulta negativo es firmado, por ejemplo en datos de 8bits 0x7F es 1270x80 es -1280x81 es -127... 0xFF es -1, en los datos sin firmar nunca hay valores negativos


Actualización (24/07/2021):


Esta vez les mostraré como activar cheats usando teclas o combinaciones de teclas, aunque aún no lo he probado creo que es posible también activar un cheat cuando insertas la Memory Stick™ o incluso cuando insertas una UMD, no lo sé, según la SDK de la PSP estos también son eventos del control así que puede que funcione...

Primero que todo el cheat:

  • _L 0xD0000000 0x10000100
  • _L 0x######## 0x########
  • _L 0x######## 0x########
  • _L 0xD0000000 0x10000200
  • _L 0x######## 0x########


_L 0xD0000000 0x1####### = Este es el código (llamémoslo Verificador) que permitirá detectar las teclas pulsadas y ejecutar el cheat, el primer valor corresponde al verificador, el segundo es la tecla o combinación de teclas que usarás

_L 0x######## 0x######## = Esto es lo que le sigue, es el cheat que deseas activar

(Actualizado) Como habrás podido notar se pueden mezclar varios cheats en uno solo, de esa manera solo activas uno solo en el menú de trucos y para activarlos durante el juego usa las combinaciones de teclas, como si de un truco nativo del juego se tratase

Es posible crear combinaciones de teclas independientes para cada verificador en un mismo cheat, en este caso podrás combinar cuantos trucos quieras en un solo bloque y cada truco se activaría usando su propia combinación, para ello debes contar las líneas de código que componen el cheat que deseas habilitar con esa combinación de teclas, le restas 1 y el resultado se lo sumas al primer valor del verificador, por ejemplo:
 
Si son 14 líneas restas 1 quedan 13, convertidos a hexadecimal es 0x0D, en ese caso el primer valor del verificador sería 0xD000000D

Si es solo una línea, 1-1=0, en ese caso el primer valor sería... es obvio no? :P


Aclarado esto, comencemos con la obtención de las teclas (gracias a los desarrolladores del MinPSPW por los códigos de teclas):

Teclas principales:


SELECT = 0x000001
START = 0x000008
DPAD_UP = 0x000010            (Pad digital | Botón arriba)
DPAD_RIGHT = 0x000020      (Pad digital | Botón derecha)
DPAD_DOWN = 0x000040      (Pad digital | Botón abajo)
DPAD_LEFT = 0x000080         (Pad digital | Botón izquierda)
LTRIGGER = 0x000100           (Gatillo izquierdo | L)
RTRIGGER = 0x000200           (Gatillo derecho | R)
TRIANGLE = 0x001000           (Triángulo)
CIRCLE = 0x002000                (Círculo)
CROSS = 0x004000                 (Cruz, o Equis (X))
SQUARE = 0x008000              (Cuadrado)

Otros más (No sé para que querrás hacer un truco con ellos pero te los dejo igual)


HOME = 0x010000         (El botón HOME)
HOLD = 0x020000          (El botón HOLD)
NOTE = 0x800000          (El botón de la Nota Musical)
SCREEN = 0x400000      (El botón SCREEN (el cuadradito junto a la nota musical))
VOLUP = 0x100000        (El botón Subir Volumen)
VOLDOWN = 0x200000  (El botón Bajar Volumen)
WLAN_UP = 0x040000   (pulsación prolongada mientras el Swith WLAN esté arriba)
REMOTE = 0x080000      (pulsación prolongada mientras REMOTE esté en HOLD)
DISC = 0x1000000         (pulsación prolongada mientras la UMD esté presente)
MS = 0x2000000            (pulsación prolongada mientras la Memory Stick™ esté presente)


Suma el valor de cualquier tecla con 0x10000000 y ese es el segundo valor del verificador, si quieres usar teclas combinadas suma sus valores (Ojo, son valores hexadecimales!), por ejemplo para [L]+[R]+[] suma 0x000100 + 0x000200 + 0x001000, esto da como resultado 0x001300, súmale los 0x10000000 y con eso ya tienes la combinación lista, lo añades al verificador y voilà!

Probemos con el cheat de los corazones:

_C0 Cojín de Corazón infinito
_L 0xD0000000 0x10001100
_L 0x0050B77D 0x0000007F
_L 0xD0000000 0x10001200
_L 0x0050B77D 0x00000000

Fíjate bien como está, el primero se activa con [L]+[] y nos da los 127 ítems, el segundo con [R]+[y nos lo quita todos 😭

Como ven el cheat se compone de dos verificadores y una sola línea de código por verificador, en este caso su valor es 0 ya que obviamente a 1 le restamos 1 y con eso el verificador queda en 0xD0000000


Nota importante! Si el cheat requiere que el código sea reescrito muchas veces (son los casos donde el valor es cambiado constantemente por el proceso del juego) no es recomendable usar este método ya que en ese caso el cheat solo funcionaría si mantienes pulsado la tecla o las combinaciones de teclas, si los sueltas el cheat no funcionará ya que el sistema verificará el estado de las teclas y si el resultado es falso omitirá el código que le sigue...

Nota importante 2!  Si usas la Calculadora de Windows 10 (no se si las de los otros windows también) no copies el valor directamente!, esto debido a que se copiará un byte extra que aunque no lo verás generará errores, para solucionar esto escribe el valor de la calculadora a mano en el archivo de cheats



Aquí os dejo los cheats de 60fps para el Project DIVA 1st, 2nd, 2nd# y Extend


Créditos: todos a excepción del cheat del 2nd# fueron publicados por LunaMoo en >> Este Foro <<, el del 2nd# lo he creado usando los de los demás juegos como base

Para usar los 60fps activa el que dice 60 fps, el que dice 60 fps [Disable] es para desactivar el anterior sin necesidad de reiniciar el juego

Copia y pega estos códigos en el archivo de cheats correspondiente: ULJM05472.ini para el 1stULJM05681.ini para el 2ndNPJH50475.ini para el 2nd#NPJH50465.ini para el Extend, no lo mezcles con otros! ve la imagen de abajo para más detalles...


Ahora los cheats:



Si aprendo algo más os aviso! 👌

Espero les haya gustado el tuto. Nos leemos en los comentarios 😉👌

No comments:

Post a Comment

Tell us what you think