[ASM][FR] Evitar huida de Pokémon Salvaje

Avisos


Like Tree9Gracias
  • 9 Post By Turambar
Respuesta
 
Herramientas Desplegado
  #1  
20/02/2019
Predeterminado [ASM][FR] Evitar huida de Pokémon Salvaje
Hola a todo el mundo, hoy traigo una rutina bastante interesante que deshabilita la posibilidad de huir de un combate con un pokemon salvaje. La rutina no es mía, podéis encontrarla aquí.

Los créditos son para MrDollSteak

La rutina hará diferentes cosas dependiendo del valor de una variable, esta variable es la 0x8000 y según su valor lograremos diferentes cosas:

0x0: El juego seguirá normal
0x1: Pokemon no capturable, imposible huir
Cualquier otro valor: Pokemon no capturable, posible huir
Rutina para Fire Red

Código:
.text
.align 2
.thumb
.thumb_func
.global ToggleRunAawayFR

Main:
	ldr r0, .Variable
	ldrb r0, [r0]
	cmp r0, #0x0
	bne CannotRun
Return:
	ldr r1, =(0x2023BE2)
	ldr r0, =(0x2023BCC)
	ldrb r0, [r0]
	strb r0, [r1]
	ldr r1, =(0x2023E8A)
	ldr r0, = (0x8016888 +1)
	bx r0
CannotRun:
	mov r6, #0x0
	ldr r0, = (0x801688C +1)
	bx r0

.align 2
.Variable:
	.word 0x020270B8 + (0x8000 * 2)  @Cambiad el valor de la variable si lo deseáis.
Insertar 01 48 00 47 00 00 xx xx xx 08 en 0801687E

Donde XX XX XX es el offset de nuestra rutina + 1 permutado.

Ejemplo

Offset rutina: 0x80A650

80 A6 50

80 A6 51

51 A6 80


Espero que os haya gustado este pequeño aporte y hasta otra
  #2  
21/02/2019
Predeterminado Respuesta: [ASM][FR] Evitar huida de Pokémon Salvaje
Primero que nada, gracias por traerlo, estos aportes son los que suman.

Ahora, no me quedó muy claro como es que se usa, no se si es que falta algo en la explicación. Setear la variable y hacer el callasm ¿qué resultado tiene? ¿El siguiente combate tiene la modalidad elegida? ¿o es para siempre y hay que desactivarlo haciendo una segunda llamada?



Blue Legend | Caos | You Tube | DA
  #3  
21/02/2019
Predeterminado Re: Respuesta: [ASM][FR] Evitar huida de Pokémon Salvaje
Dicho por ~Criisss Ver mensaje
Primero que nada, gracias por traerlo, estos aportes son los que suman.

Ahora, no me quedó muy claro como es que se usa, no se si es que falta algo en la explicación. Setear la variable y hacer el callasm ¿qué resultado tiene? ¿El siguiente combate tiene la modalidad elegida? ¿o es para siempre y hay que desactivarlo haciendo una segunda llamada?
No hace falta hacer ningún callasm, simplemente mientras la variable tenga el valor 0x1 todos los combates serán ineludibles. Para volver a dejar el juego tal y como estaba hace falta volver a setear la variable a cero.
  #4  
21/02/2019
Predeterminado Respuesta: [ASM][FR] Evitar huida de Pokémon Salvaje
Entiendo. Entonces lo ideal sería cambiar que la variable sea la 0x8000. No se si MrDollSteak lo hizo a propósito o qué, pero las variables desde 0x8000 en adelante se suelen usar como temporales (de ahí la confusión con el callasm) y puede que cambie el modo de batalla, de manera indeseada.

Además, si revisas todas las funciones similares que tiene el hacked engine de JPAN, todas estas usan varibles 0x4000 en adelante.



Blue Legend | Caos | You Tube | DA
  #5  
21/02/2019
Predeterminado Re: [ASM][FR] Evitar huida de Pokémon Salvaje
Si, bueno pero lo normal es usar esta rutina para casos puntuales que tengan que ver con la historia del hack, pero si, si lo quieres de manera segura y prolongada lo mejor es usar una variable seguro, o incluso una flag (aunque para eso haya que modificar ligeramente la rutina).
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 20:01.