• 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