Registrarse

[ASM] FR | Evoluciones por Felicidad al Sistema DNS.

Gold

Porrero a tiempo parcial
Miembro insignia
Pues el título lo dice, cuando en FR instalamos el sistema DNS (Dia, noche y estaciones) vemos que podemos hacer uso de eventos basados en el sistema Dia/Noche y en las estaciones, pero...

Como sabrán, Eevee es incapaz de evolucionar a Espeon/Umbreon en FR debido a la carencia de reloj interno, aunque el código de evolución existe en FR mas no es posible hacerlo funcionar, pero gracias a Jambo51 es posible actualizar ese sistema a uno totalmente funcional y dependiente al sistema Dia/Noche (Si modificamos el código podemos hasta hacer evoluciones dependiendo de las estaciones).

Nota: Este proceso es obligatorio de hacer si insertas el sistema DNS y expandiste la cantidad de evoluciones por Pokémon a 8. No hacerlo provoca que cada que un Pokémon con estos métodos de evolución traten de evolucionar, tu ROM se quede colgada al tratar de comprobar la felicidad, peor ahora el reloj interno ya existe.

=================
¿Que Necesitamos?
=================
• Un ensamblador de rutinas ASM.
• Editor Hexadecimal
• Tener instalado el Sistema DNS de primedialga (Los otros no valen, solo este) el link de la herramienta esta Aqui

Hacer esto es sencillo, solo ensambla esta rutina y pégala en una offset libre alineada (termina en 0, 4, 8 o C) Esta es para modificar la evolución de Eevee a Espeon.

Código:
.text
.align 2
.thumb
.thumb_func
.global espeonevocheck
main:
ldr r1, time
ldrb r1, [r1, #0x0]
cmp r1, #0x4
bge no
cmp r1, #0x1
blt no
ldr r1, happinesscheck
bx r1
no: ldr r0, exit
bx r0
.align
time: .word 0x0203C000
happinesscheck: .word 0x08043001
exit: .word 0x08043111
insertala en una offset vacía, luego dirígete a la offset 0x42FC8 y cambia la dirección que ahi ves por el puntero donde insertaste la rutina en formato little endian (Ojo, esta rutina no requiere que agreguemos +1 a la.dirección, a pesar de ser .THUMB, asi que ponemos el puntero a la dirección sin sumar nada)

Para Umbreon.
Código:
.text
.align 2
.thumb
.thumb_func
.global umbreonevocheck
main:
ldr r1, time
ldrb r1, [r1, #0x0]
cmp r1, #0x4
bge yes
cmp r1, #0x1
blt yes
ldr r0, exit
bx r0
yes: ldr r1, happinesscheck
bx r1
.align
time: .word 0x0203C000
happinesscheck: .word 0x08043001
exit: .word 0x08043111
Haz lo mismo que la rutina de Espeon, solo que ahora el puntero está en 0x42FCC, repite el proceso, guarda y ¡Listo! El método de evolución ha quedado actualizado dependiendo del reloj interno insertado.

Las offsets que he proveído anteriormente para los punteros de las rutinas pueden variar dependiendo si has repunteado la tabla de evoluciones. Si en caso has expandido las evoluciones probablemente la tabla esté en distinto lugar. Por cualquier duda recuerda, la tabla de punteros de métodos evolutivos se encuentra en el offset 0x42FC0.

Es todo, si se usa dar créditos a Jambo51 por la rutina.
 
Última edición:

Guilly Alpha

It's eleven o'clock
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Es una PASADA de tutorial!!
Me encanta, sencillo y eficaz :D
Lo único que no entiendo muy bien es el cambio que realiza la rutina en e método de evolución
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Es una PASADA de tutorial!!
Me encanta, sencillo y eficaz :D
Lo único que no entiendo muy bien es el cambio que realiza la rutina en e método de evolución
Modifica la rutina de la evolución de felicidad segun dia/noche de FR para hacerla identica a la de GBC, cuando sea de dia evolucionará a Espeon, y si es noche evolucionará a Umbreon, asi de sencillo.
 

CelticFrostie

Sexador de pollos
Maravilloso tuto!! Gracias por solucionarnos uno de los montones de problemas que tenemos por la falta de reloj interno en FR.
En cuanto al compilador, qué versión me recomiendas descargar? (Ya que la 0.x está rediseñada)
 

milenco

Usuario mítico
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Hola, excelente tutorial, 2 consultas:
- si solo inserto el sistema rtc, funcionan igual las rutinas.
- las demás evoluciones por amistad día y noche servirán o solo sirve para eevee.

Saludos
 

Naren Jr.

Puto amo
Usuario de Platino
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

A ver tengo una duda, la dirección de Espeon es 0x42FC38 y la de Umbreom es 0x42FCC no deberían estar en la tabla de evoluciones? D: me parece que la primera direccion tiene un digito de mas.
 

Jaizu

Usuario mítico
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

A ver tengo una duda, la dirección de Espeon es 0x42FC38 y la de Umbreom es 0x42FCC no deberían estar en la tabla de evoluciones? D: me parece que la primera direccion tiene un digito de mas.
La tabla de evoluciones en FR empieza en el offset 0x42FC4, así que supongo que sobrará el 8. Igualmente lo mejor que puedes es probar ambas maneras en distintas rom y abrir esas direcciones con hex, es muy obvio en HEX cuando algo es una tabla y cuándo no(básicamente la tablas siguen un patron de datos que se repiten con valores diferentes, por eso son tablas lol)
 

Naren Jr.

Puto amo
Usuario de Platino
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

La tabla de evoluciones en FR empieza en el offset 0x42FC4, así que supongo que sobrará el 8. Igualmente lo mejor que puedes es probar ambas maneras en distintas rom y abrir esas direcciones con hex, es muy obvio en HEX cuando algo es una tabla y cuándo no(básicamente la tablas siguen un patron de datos que se repiten con valores diferentes, por eso son tablas lol)
Muchas gracias por tu repuesta bro, no era la dirección correcta pero deduje algo.
--------------------------

@Halldor la dirección para evolucionar de día es 0x0842FC8 debes editar eso en el post c:

Y buen tuto saludos!

Edit: Deberías poner en el titulo "Activar evolución de día y de noche DS"
 
Última edición:
M

Miembro eliminado 28262

Invitado
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Buen tuto! Ya conocía esa rutina desde hace tiempo en PC
Aunque personalmente no me gusta, en una hackrom el objetivo principal es entretenerse. Así su preferido evolucionar a eevee de una forma mas rapid...

Eh... Alto ya te lo creías!
Me parece genial! Seguramente y con algo de creatividad se le pueden dar mil usos.

Thnx!
 

Jo7a

Kiero mi nick amarillo D:
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Pero exactamente cual es la hora de diferencia entre Día y noche, es decir, a patir de qué hora dejara de ser de día? por que el DNS es asjustable para que amanezca/anochezca/atardezca a la hora que quieras poner tu, sabiendo la hora exacta en la cual eevee esvoluciona a umbreon y no a espeon se puede ajustar para que quede mejor (que justo a apartir de esa hora anochezca, y viceversa).

Por lo demás todo bien, es un tutorial sencillo y bastante práctico, gracias por aportarlo.
 

Adke

weeeh
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Pero exactamente cual es la hora de diferencia entre Día y noche, es decir, a patir de qué hora dejara de ser de día? por que el DNS es asjustable para que amanezca/anochezca/atardezca a la hora que quieras poner tu, sabiendo la hora exacta en la cual eevee esvoluciona a umbreon y no a espeon se puede ajustar para que quede mejor (que justo a apartir de esa hora anochezca, y viceversa).

Por lo demás todo bien, es un tutorial sencillo y bastante práctico, gracias por aportarlo.
http://i.imgur.com/4NnPXAb.png esta sacado de wikidex

----------------------

El sistema está genial, muy útil para poner las evoluciones de forma fiel a los juegos de gamefreak, sin duda lo usaré ^^
 

Dani_SR_17

¡Pokémon LionHeart!
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Pero exactamente cual es la hora de diferencia entre Día y noche, es decir, a patir de qué hora dejara de ser de día? por que el DNS es asjustable para que amanezca/anochezca/atardezca a la hora que quieras poner tu, sabiendo la hora exacta en la cual eevee esvoluciona a umbreon y no a espeon se puede ajustar para que quede mejor (que justo a apartir de esa hora anochezca, y viceversa).

Por lo demás todo bien, es un tutorial sencillo y bastante práctico, gracias por aportarlo.
Pues mira, la movida en cuestión esta en las siguientes lineas de la rutina si no me equivoco:
(Caso de espeon)
Código:
cmp r1, #0x4
bge no
cmp r1, #0x1
blt no
(Caso de umbreon)
Código:
cmp r1, #0x4
bge yes
cmp r1, #0x1
blt yes
Esto todavía no se muy bien como funciona, precisamente quería buscar algún ejemplo para ver como rulan las comparaciones.
Pero veamos (voy a mirar solo el caso 1), "cmp r1, #0x4" aquí esta comparando el registro r1 con el nº 4, en este caso el r1 almacena el 1º byte del tiempo, supongo que será la hora. Por tanto, intuyo que está comparando la hora dada con "4".
Ahora llega la parte que no entiendo del todo, según he entendido "bge no" después de la comparación anterior, es que si 4 es mayor o igual que r1 (la hora) entonces vamos a "no", que viene a ir siendo esta parde del código:
Código:
no: ldr r0, exit
bx r0
Análogo con "cmp r1, #0x1" y "blt no", solo que en este caso sería que vamos a "no" sí 1 es menor que r1 (la hora).
Por tanto, según entiendo considera la noche como entre las 0 (ya que la hora es un nº entero, y el menor que 1 sería 0) y las 4 de la mañana (qué es cuando no evoluciona a espeon).


Bueno, lo dicho, llevo 2 días con esto del ASM, espero que [MENTION]eing[MENTION] este orgulloso de mí y no me mate por decir alguna burrada.
A ver, que me voy por las ramas, eso, que no se sí lo que digo está bien, no sé si los compares están bien y tal, y realmente no entiendo al 100% la rutina (vaya, que ni de coña hago eso yo ahora mismo), pero bueno, si puedo dar algo de luz y ayudar, pues perfe.

Edito: Se me ha pasao poner la conclusión jaja, que editando ese 4 y ese 1 puedes editar la franja horaría en la que evoluciona.
 
Última edición:

eing

Miembro de honor
Miembro de honor
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Pues mira, la movida en cuestión esta en las siguientes lineas de la rutina si no me equivoco:
(Caso de espeon)
Código:
cmp r1, #0x4
bge no
cmp r1, #0x1
blt no
(Caso de umbreon)
Código:
cmp r1, #0x4
bge yes
cmp r1, #0x1
blt yes
Esto todavía no se muy bien como funciona, precisamente quería buscar algún ejemplo para ver como rulan las comparaciones.
Pero veamos (voy a mirar solo el caso 1), "cmp r1, #0x4" aquí esta comparando el registro r1 con el nº 4, en este caso el r1 almacena el 1º byte del tiempo, supongo que será la hora. Por tanto, intuyo que está comparando la hora dada con "4".
Ahora llega la parte que no entiendo del todo, según he entendido "bge no" después de la comparación anterior, es que si 4 es mayor o igual que r1 (la hora) entonces vamos a "no", que viene a ir siendo esta parde del código:
Código:
no: ldr r0, exit
bx r0
Análogo con "cmp r1, #0x1" y "blt no", solo que en este caso sería que vamos a "no" sí 1 es menor que r1 (la hora).
Por tanto, según entiendo considera la noche como entre las 0 (ya que la hora es un nº entero, y el menor que 1 sería 0) y las 4 de la mañana (qué es cuando no evoluciona a espeon).


Bueno, lo dicho, llevo 2 días con esto del ASM, espero que [MENTION]eing[MENTION] este orgulloso de mí y no me mate por decir alguna burrada.
A ver, que me voy por las ramas, eso, que no se sí lo que digo está bien, no sé si los compares están bien y tal, y realmente no entiendo al 100% la rutina (vaya, que ni de coña hago eso yo ahora mismo), pero bueno, si puedo dar algo de luz y ayudar, pues perfe.

Edito: Se me ha pasao poner la conclusión jaja, que editando ese 4 y ese 1 puedes editar la franja horaría en la que evoluciona.
El byte que estas comparando no es la hora.
Es la etapa del día en el que estás.
Siendo 0 y 4 la madrugada y la noche.
1= mañana
2= medio dia
3= atardecer

Basandonos en esos aspectos;
Eve evolucionara a umbreon si el valor es 0 o menor (blt 0= Be lower than) o 4 o mayor (bge 4= be great or equal)

Todo lo demas evoluciona a speon.


Y la hora no afecta para nada a esta rutina puesto que funciona con la etapa del dia del D&N.
Esa etapa del dia si que se rige por las horas.. (X ejemplo de 0 a 5 = byte 0, de 5:01 a 11:00 = byte 1..)
 

Saisar

Hago lo que puedo para ayudar a los demás ;)
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Oye este... Me puedes pasar los bytes que pusiste al sistema de evolución de eevee a espeon es que lo evolución de eevee a umbreon me sirvio pero la de eevee a espeon no... A si que pense en dejarte este mensaje para ver si me puedes ayudar porfa gracias de antemano.:)
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

Oye este... Me puedes pasar los bytes que pusiste al sistema de evolución de eevee a espeon es que lo evolución de eevee a umbreon me sirvio pero la de eevee a espeon no... A si que pense en dejarte este mensaje para ver si me puedes ayudar porfa gracias de antemano.:)
Debe ser por mi error, el hook hay que ponerlo en 0x42FC8 y no en 0x42FC38, ponlo ahi y te va a funcionar c:
 

Saisar

Hago lo que puedo para ayudar a los demás ;)
Respuesta: FR | ASM | Actualización de las Evoluciones de Eevee al sistema DNS.

¡GRACIAS! ¡ME FUNCIONÓ! ¡Eres bueno en este tema de Rutina ASM! Gracias te lo agradesco trate de buscar comentarios en el foro pero no conseguí uno y tuve de registrarme en Wahackforo para contactar contigo gracias te lo agradesco:awesome::awesome::awesome::awesome::awesome:
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: FR | ASM | Actualización de las Evoluciones por Felicidad al Sistema DNS.

He actualizado (al fín) el tutorial poniendo el título correcto e información de offsets correcta. Además he documentado un bug que sucede al momento de usar la expansión de cantidad de evoluciones permitidas de la herramienta G3HS. Con todo eso el sistema debería funcionar sin problemas.
 
Última edición:

Omega

For endless fight
Miembro del equipo
Administrador
Respuesta: FR | ASM | Actualización de las Evoluciones por Felicidad al Sistema DNS.

Bonito tutorial, simple y conciso ;)
Estaba buscando algo así para un evento pues quería que dependiendo del día o la noche obtuvieras una evolución distinta, solo tengo una duda:

¿Hay algún bug conocido al implementar este sistema?

Edit:
Además he documentado un bug que sucede al momento de usar la expansión de cantidad de evoluciones permitidas de la herramienta G3HS.
Pues duda resuelta xD
 

deidara9216

Profesional de WaH
Respuesta: FR | ASM | Actualización de las Evoluciones por Felicidad al Sistema DNS.

Aloha bro, Gracias por el tutorial es muy útil, pero tengo una duda ligera, conoces la forma para que si es macho evolucione en uno y si es hembra en otro ?
 
Arriba