• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Which Pokémon Masters protagonist do you like most? Let us know by casting a vote in our Masters favorite protagonist poll here!
  • 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

Well i have one question. Will eevee evolve into umbreon or espeon when I install RTC into FR ROM?
 
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
 
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 ??
 
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?
 
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.
 
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 ??
 
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?
 
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.
 
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.
 
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:
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'.
 
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...
 
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?
 
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...
 
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:
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:
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