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.
[spoiler=Ruby]
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!
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!