• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Tool: DNS - Day, Night and Seasons

32
Posts
13
Years
  • Seen May 9, 2015
Well i have one question. Will eevee evolve into umbreon or espeon when I install RTC into FR ROM?
 
69
Posts
13
Years
  • Seen Jan 8, 2012
Well i have one question. Will eevee evolve into umbreon or espeon when I install RTC into FR ROM?

No this RTC from what i understand only make there a day and night difference we would have to make an ASM hack to make it check if the happiness is max and check whether it is day or night in order for eevee to evolve into espeon or umbreon.

now that i think about it im going to go learn me some asm and start on this :P
 
32
Posts
13
Years
  • Seen May 9, 2015
Hmm, I must say that this program is awesome, but it dones't work in my hack (I have changed some tiles and palletes), only on clean ROM. Can someone tell me what is the reason of that, and what should I do to include it into my hack ??
 

Meta Paradox

Researching FireRed...
56
Posts
13
Years
  • Seen Jul 18, 2011
Awesome, thanks.
By the way, I think you have to correct the description of the RTC - the "0x00" byte in between day and hour is the day of the week, just to let you know.

Um, diegoisawesome? How do you display the day of the week in a script? Like, can you show an example script for this? 'Cause I kinda learned the hour and date from decompiling scripts, but I've never seen one with this feature before. Can 'ya (or anyone) help me?
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
Um, diegoisawesome? How do you display the day of the week in a script? Like, can you show an example script for this? 'Cause I kinda learned the hour and date from decompiling scripts, but I've never seen one with this feature before. Can 'ya (or anyone) help me?
Well, you have to read the byte and then buffer the correct day of the week text.
0x0 = Sunday, 0x1 = Monday, etc.
 
32
Posts
13
Years
  • Seen May 9, 2015
Well, you have to read the byte and then buffer the correct day of the week text.
0x0 = Sunday, 0x1 = Monday, etc.

compare 0xFFFF 0x0
if 0x1 goto @sunday
compare 0xFFFF 0x1
if 0x1 goto @monday
etc...

Ok but I don't know where variable is saved. What should I write in place of FFFF ??
 

Meta Paradox

Researching FireRed...
56
Posts
13
Years
  • Seen Jul 18, 2011
Well, you have to read the byte and then buffer the correct day of the week text.
0x0 = Sunday, 0x1 = Monday, etc.

Sorry, prime, I don't get it. How do you use comparefarbytetobyte? I'll research it sometime, though. :D

Anyway, diegoisawesome, what variable should be read by the game? I'll base my example from pabloxxx's:

Code:
#dynamic 0x[FSF Offset]
#org @start
compare 0x[RTC Var] 0x0 //If I'm not mistaken, this checks if it's a Sunday, right?
if 0x1 goto @sunday
...
#org @sunday
= It's a Sunday.

Would this script work accordingly? And if it does, what would be the variable needed to read the byte?
 

colcolstyles

Yours truly
1,588
Posts
15
Years
Sorry, prime, I don't get it. How do you use comparefarbytetobyte? I'll research it sometime, though. :D

Anyway, diegoisawesome, what variable should be read by the game? I'll base my example from pabloxxx's:

Code:
#dynamic 0x[FSF Offset]
#org @start
compare 0x[RTC Var] 0x0 //If I'm not mistaken, this checks if it's a Sunday, right?
if 0x1 goto @sunday
...
#org @sunday
= It's a Sunday.

Would this script work accordingly? And if it does, what would be the variable needed to read the byte?

No, 'goto' branches to another script segment. You currently have it branching to a string. You'd have to create a new script segment with a 'msgbox' command for it to work.
 

Meta Paradox

Researching FireRed...
56
Posts
13
Years
  • Seen Jul 18, 2011
No, 'goto' branches to another script segment. You currently have it branching to a string. You'd have to create a new script segment with a 'msgbox' command for it to work.

Hmm... so will this work?

Code:
#dynamic 0x[FSF Offset]
#org @start
compare 0x[RTC Var] 0x0
if 0x1 goto @sunday
...
#org @sunday
msgbox @sunday2 0x2
end

#org @sunday2
= It's a Sunday.
 
3
Posts
13
Years
  • Seen Aug 21, 2014
How do you use the Seasons editor?? I put the offset and it said it had been inserted but they didn't work anywhere. Do I need a script? How does the Seasons Header work aswell??
It's a BRILLIANT tool, the day and night works GREAT but the seasons don't work anywhere.

Thanks

EDIT: I'm using a Fire Red ROM (BPRE)
 
Last edited:

colcolstyles

Yours truly
1,588
Posts
15
Years
Hmm... so will this work?

Code:
#dynamic 0x[FSF Offset]
#org @start
compare 0x[RTC Var] 0x0
if 0x1 goto @sunday
...
#org @sunday
msgbox @sunday2 0x2
end

#org @sunday2
= It's a Sunday.

Yeah, that should work. I don't know if this tool designates a "RTC Var" but if you can find where the data is stored, you can use it with either 'compare' or 'comparefarbytetobyte'.
 

Meta Paradox

Researching FireRed...
56
Posts
13
Years
  • Seen Jul 18, 2011
Script working, check.
Now if someone can post the RTC Variable, that would be cool. :D
 

prime-dialga

pure darkness
28
Posts
14
Years
  • Seen Jul 8, 2014
There isn't a RTC variable. You have to create your own with an ASM-script or you have to use comparefarbytetobyte and the RTC offset.

@wildbeast
You have to add some tilesetoffsets in the Boxes under the Seasons. I have made a tutorial how to use the Seasonseditor but it's written in german so it would not help you...
 
32
Posts
13
Years
  • Seen May 9, 2015
There isn't a RTC variable. You have to create your own with an ASM-script or you have to use comparefarbytetobyte and the RTC offset.

Can you post an example? I don't know how to use comparefarbytetobyte...?

comparefarbytetobyte [pointer] [byte] - ok i know that, but where should I write RTC offset?
 

prime-dialga

pure darkness
28
Posts
14
Years
  • Seen Jul 8, 2014
Code:
[...]
comparefarbytetobyte 0x03005540 0x1
if 0x1 goto @ok
[...]

#org @ok
msgbox @txt 0x6
end

#org @txt = It's the 1st.

you can see the RTC-RAM-offset under the textbox with the RTC-script-offset...
 
32
Posts
13
Years
  • Seen May 9, 2015
Code:
[...]
comparefarbytetobyte 0x03005540 0x1
if 0x1 goto @ok
[...]

#org @ok
msgbox @txt 0x6
end

#org @txt = It's the 1st.
you can see the RTC-RAM-offset under the textbox with the RTC-script-offset...

Ah...Ok, i know everything now...Great thanks, I was think that, posted [pointer] is like pointer in script (@something) :D :)
 
Last edited:
3
Posts
13
Years
  • Seen Aug 21, 2014
There isn't a RTC variable. You have to create your own with an ASM-script or you have to use comparefarbytetobyte and the RTC offset.

@wildbeast
You have to add some tilesetoffsets in the Boxes under the Seasons. I have made a tutorial how to use the Seasonseditor but it's written in german so it would not help you...

I got the HEX offset 002D4A94 for the main outdoor tileset from A-Map. When I inserted it into the 'Offset' box and pressed "Write Season changes to ROM" I got this error message: h**p://img4.imageshack.us/img4/4480/dnsediterrormessage.png
(Soz i can't post links :cer_shifty:)

Am I doing something wrong :cer_confused:?

I have read the tutorial for the season editor but it didn't make much sense to me.....probably because I put it into a translator :\
 
Last edited:

ipatix

Sound Expert
145
Posts
15
Years
I think you just have to leave out the '8' from the offset becuase thetool automatically adds 0x8000000.
 

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
For anyone who is using BPRE, these routines will use the RTC's status byte to get what time of day it is, and evolve Eevee accordingly.

For Espeon:
Code:
.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

Assemble and insert that routine anywhere in the ROM, then change the pointer at 0x42FC8 to point to the new routine, NOT PLUS ONE. The game uses mov pc, r0 to jump to the routine, meaning we do NOT need to add 1 for THUMB mode.

For Umbreon:
Code:
.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

Assemble and insert that routine anywhere in the ROM, then change the pointer at 0x42FCC to point to the new routine, NOT PLUS ONE.

When assembled, along side the RTC, this will allow Eevee to evolve into Espeon and Umbreon in the proper way in BPRE. Anyone who wants to convert these routines for another version, feel free to do so. Just remember to credit me for the original routines.

For people who don't know how to assemble the routines, I attached the binaries to this post, allowing you to insert them from the binary directly. I offer no help on inserting these routines. You should read HackMew's ASM tutorials for a good beginner's insight into inserting ASM.
 
Last edited:
Back
Top