Registrarse

R/E | Comando 2E: Resetvars - El secreto

Estado
Cerrado para nuevas respuestas.

Sonicarvalho

Tutorial Maker

[align=center]Resetvars - El comando temporal![/align]

Compatibilidad:
Ruby
Sapphire
Emerald

Buenas, gente! Hoy vengo aquí postar una información poco conocida, que yo encontré por puro acaso, hace muy tiempo!

Como deberéis saber, yo trabajo con Emerald principalmente! Y por acaso estaba mirando los comandos de la rom y descubrí algo sobre el comando 0x2E, el ResetVars.
En FireRed, ese comando hace lo que dice: Pone el valor 0x0 en las vars 0x8000, 0x8001, 0x8002.

Pero en Ruby/Sapphire y Emerald, las cosas ya no son tan sencillas...
No fue al acaso que llame el resetvars de comando "temporal"...

Bueno yo sé que mucha gente utiliza el sistema Dia y Noche, pero bueno, lo que este comando hace es poner el tiempo del reloj en las vars 8000 8001 y 8002!

Eso mismo!
Cuando hacen resetvars, lo que las variables pasan a tener es el siguiente:
Variables:

8000 -> Horas
8001 -> Minutos
8002 -> Segundos


Esto claro según el reloj al inicio del juego, no según el DNS.

Código:
08066344 @ =============== S U B R O U T I N E =======================================
08066344
08066344
08066344 s2E_Get_Time_in_Vars:                    @ DATA XREF: ROM:Cmd_tableo
08066344                 PUSH    {LR}
08066346                 BL      time_update
0806634A                 LDR     R2, =Var_8000
0806634C                 LDR     R1, =word_3004038
0806634E                 MOVS    R0, #2
08066350                 LDRSB   R0, [R1,R0]
08066352                 STRH    R0, [R2]
08066354                 LDR     R2, =Var_8001
08066356                 MOVS    R0, #3
08066358                 LDRSB   R0, [R1,R0]
0806635A                 STRH    R0, [R2]
0806635C                 LDR     R2, =Var_8002
0806635E                 MOVS    R0, #4
08066360                 LDRSB   R0, [R1,R0]
08066362                 STRH    R0, [R2]
08066364                 MOVS    R0, #0
08066366                 POP     {R1}
08066368                 BX      R1
08066368 @ End of function s2E_Get_time_in_vars
08066368
08066368 @ ---------------------------------------------------------------------------
Piensen que el offset 0x03004038 es donde estan grabados los dias, horas, minutos y segundos del reloj, no del tiempo de juego!
Código:
08099E1C @ =============== S U B R O U T I N E =======================================
08099E1C
08099E1C
08099E1C s2E_get_time_to_vars_x800x:             @ DATA XREF: ROM:081DB734o
08099E1C                 PUSH    {LR}
08099E1E                 BL      time_update
08099E22                 LDR     R2, =var_8000
08099E24                 LDR     R1, =Internal_Clock_Data_HEX
08099E26                 MOVS    R0, #Internal_Clock_RTC.hours
08099E28                 LDRSB   R0, [R1,R0]
08099E2A                 STRH    R0, [R2]
08099E2C                 LDR     R2, =var_8001
08099E2E                 MOVS    R0, #Internal_Clock_RTC.minutes
08099E30                 LDRSB   R0, [R1,R0]
08099E32                 STRH    R0, [R2]
08099E34                 LDR     R2, =var_8002
08099E36                 MOVS    R0, #Internal_Clock_RTC.seconds
08099E38                 LDRSB   R0, [R1,R0]
08099E3A                 STRH    R0, [R2]
08099E3C                 MOVS    R0, #0
08099E3E                 POP     {R1}
08099E40                 BX      R1
08099E40 @ End of function s2E_get_time_to_vars_x800x
08099E40
08099E40 @ ---------------------------------------------------------------------------
Piensen que el offset 0x03005CF8 es donde estan grabados los dias, horas, minutos y segundos del reloj, no del tiempo de juego!

Bien, saludos!
Happy Hacking!
 
Última edición por un moderador:

Gershel

¡Con dos cojones!
Como ya dije en el antiguo foro, es super sencillo este comando y permite hacer algo que mucha gente no consigue hacer, poner en tres variables el tiempo actual del juego.
Esto puede ser muy útil para comparar la hora para algún evento en concreto o incluso para mostrarlas en un txtbox con tres buffers diferentes indicando la hora actual del juego.
¡Gran descubrimiento! ¡Muchas gracias!
Saludos!

Gershel
 

Starman

bruh
A ver, en teoría el comando es sencillísimo y también tiene mucha utilidad pero el problema es que no le encuentro un uso en un hack que sea "creativo" aunque se me acaba de ocurrir algo.
Molaría hacer postecitos tipo esto:

Que al pulsar A te indiquen la hora y luego ya si eso depende el tiempo que haya en el mapa podríamos poner grados diferentes, como esta puede haber muchas más ideas creativas ^^
Aunque, si va ligado a la hora del reloj, el único problema es que a mi (y a muchos) la hora o se nos congela o va mal.
 

Gender

DeathSpace
La idea de Ck me encanta y eso si molaría, que un poste te diga la hora cuando estés jugando al juego.
Sonicarvalho de seguro aquí a muchos le sirve el código y
tu trabajo ASM es impresionante, cada vez vas aprendiendo
y nos traes una gran aportación.

+ Like al post ;)
 
Estado
Cerrado para nuevas respuestas.
Arriba