Registrarse

[ASM] Nivel dinámico de los pokemon rivales

Versekr Dark

Usuario mítico
La única pega que le veo a esto, es que si pierdes un combate contra un entrenador no estarías apagando el sistema, quedándose encendido hasta que ganes un combate.

La rutina ASM que hice está inyectada al comienzo de la función CreateMon y lo que hace es modificar el valor de r2, parámetro que se pasa a la función como nivel.
Código:
void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
    u32 arg;
    ZeroMonData(mon);
    CreateBoxMon(&mon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId);
    SetMonData(mon, MON_DATA_LEVEL, &level);
    arg = 255;
    SetMonData(mon, MON_DATA_MAIL, &arg);
    CalculateMonStats(mon);
}
Como se puede ver ahí, otro de los parámetros es OtIdType, que contiene el ID del entrenador. En el caso de los pokémon salvajes este parámetro es 0, por lo que comprobar el valor de dicho parámetro parece la mejor forma de saber si es salvaje o un combate.

Es difícil saber en que registro está otIdType sin ver el ASM desde el depurador (no lo tengo instalado ahora mismo), pero sabiendo el registro en el que está solo hay que añadir este código ASM antes de la etiqueta "main":

Código:
check_wild:
    cmp rX, #0x0
    beq routine_off

main:
.
.
.
Usando la rutina de javi podria seguir el combate y aun perdiendo podria apagar la flag.
 

Versekr Dark

Usuario mítico
No conozco esa rutina, pero si apaga el flag antes de llamar al nuevo callback (que supongo que es lo que hará) no deberías tener problema.
La rutina de javi hace que cuando pierdas una batalla continué el script o si no programas nada después simplemente no te manda a el centro pokémon ,ademas de comparar si has perdido si has ganado o perdido la misma, si es así se puede seguir el script y apagarse la flag y listo.
 

Samu

Miembro insignia
Miembro insignia
La rutina de javi hace que cuando pierdas una batalla continué el script o si no programas nada después simplemente no te manda a el centro pokémon ,ademas de comparar si has perdido si has ganado o perdido la misma, si es así se puede seguir el script y apagarse la flag y listo.
Me parece mucho follón por cada combate, y es muy suicio ya que tienes que implementarlo uno a uno sin dejarte ninguno. Pero bueno, es una solución supongo.
 

eing

Miembro de honor
Miembro de honor
La solución como dice @Samu es detectar si es una batalla contra pokémon salvaje o contra un entrenador..
No se si en FR la flag era distinta, pero al menos en rubí si, simplemente detectar cuando es trainer y cuando es pokémon y llamar a la rutina de @Samu cuando sea uno u otro, no hay más misterios.

Dejaros de historias de usar la rutina de javi porque esa solo es para eventos donde este permitido perder, no para hacer la chapuza que querias @Versekr Dark.

Por último @Samu cabrón, que mi rutina de niveles dinámicos para rubí funciona perfecta, que el einglocke no tiene ningun bug!! (Funciona inclusive con pokémon custom jajaja)
Btw, el único bug de esa hack era en la liga (el sethealing place se va a tomar por culo y te toca comerte de nuevo la cueva jajaja y que a veces los jueces de medallas no desaparecian.
Y tambien contar que como no tengas pokemon en tu equipo que puedan aprender todas las MO, estas vendido.
Vease el ejemplo BUCEO JAJA.
 

Samu

Miembro insignia
Miembro insignia
La solución como dice @Samu es detectar si es una batalla contra pokémon salvaje o contra un entrenador..
No se si en FR la flag era distinta, pero al menos en rubí si, simplemente detectar cuando es trainer y cuando es pokémon y llamar a la rutina de @Samu cuando sea uno u otro, no hay más misterios.

Dejaros de historias de usar la rutina de javi porque esa solo es para eventos donde este permitido perder, no para hacer la chapuza que querias @Versekr Dark.

Por último @Samu cabrón, que mi rutina de niveles dinámicos para rubí funciona perfecta, que el einglocke no tiene ningun bug!! (Funciona inclusive con pokémon custom jajaja)
Btw, el único bug de esa hack era en la liga (el sethealing place se va a tomar por culo y te toca comerte de nuevo la cueva jajaja y que a veces los jueces de medallas no desaparecian.
Y tambien contar que como no tengas pokemon en tu equipo que puedan aprender todas las MO, estas vendido.
Vease el ejemplo BUCEO JAJA.
Acabo de revisar el ASM por encima y no pisas el r7 porque lo pusheas antes. En cualquier caso, estás tu que me iba a fiar yo de tu rutina JAJAJJAJA.
Siempre dices que funciona perfecto cabrón, que nos conocemos JAJAJAJAJ. Además, en decomp es mucho más bonita :3.

Además, estoy seguro de que tenía dependencias cruzadas con alguna otra rutina tuya xD.
 

eing

Miembro de honor
Miembro de honor
Acabo de revisar el ASM por encima y no pisas el r7 porque lo pusheas antes. En cualquier caso, estás tu que me iba a fiar yo de tu rutina JAJAJJAJA.
Siempre dices que funciona perfecto cabrón, que nos conocemos JAJAJAJAJ. Además, en decomp es mucho más bonita :3.

Además, estoy seguro de que tenía dependencias cruzadas con alguna otra rutina tuya xD.
Que te pires a la playa, que mis rutinas son perfectas JAJAJA
Al menos esta, que esta si que la testee al 100%.
Las otras.. bueno, tiene lagunas, como todo el RH BINARIO(?)

A ver si te curras mas tutoriales de DECOMP y dejamos el binario en gba abandonado ostia.
 
Arriba