• 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?".
  • Forum moderator applications are now open! Click here for details.
  • 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

Quickster

Dream or Drop?
351
Posts
16
Years
  • Seen Apr 4, 2016
It's a mistake; the second 0x0 byte would be the day of the week.

Thanks. I kinda assumed that when I opened it in the VBA 1.8.0 Beta 3 that was said to be used. But now I dont have to wait till tomorrow to find out! :D
 
275
Posts
13
Years
  • Seen Oct 9, 2019
This is a similar problem to what I had. When it's Winter, it instead shows the tileset for Spring.
I know this post is old, but I can at least describe the nature of the problem: the game reloads the OW palettes when you exit menus, and the hack apparently doesn't touch that reloading routine. The result is that the palettes (and possibly even tile animations, judging by what happens to your ice) for the "default" season are loaded. The same problem exists in JPAN's hacked engine, when using the "extended" palettes for his OW mods.
 

droomph

weeb
4,285
Posts
12
Years
I know this post is old, but I can at least describe the nature of the problem: the game reloads the OW palettes when you exit menus, and the hack apparently doesn't touch that reloading routine. The result is that the palettes (and possibly even tile animations, judging by what happens to your ice) for the "default" season are loaded. The same problem exists in JPAN's hacked engine, when using the "extended" palettes for his OW mods.
We could locate the routine and add a
Code:
#org @main
bl @check
        'actual routine etc.

#org @check
ldr r0, [pc, 0x10]
ldr r0, [r0]
cmp r0, 0 'or default number
beq [pc, 0x4]
b        '(go to modified routine, however that's done)
b        '(return to main)
#dword etc. 'status byte
somewhere near the beginning, and then we could force it to reload the right ones that way.

The modified routine would just be the same routine, but loads the right pallets. I don't even think it has to be a different routine, just different addresses for each season.

However, with the routine being "sandwiched" in between all the other stuff...a repoint wouldn't hurt though, right?
 

Mr.Pkmn

Ordinary ASM Magician
53
Posts
15
Years
  • Seen Nov 17, 2023
Fortunately it's not necessary.

Some time ago i found the reason of the screen blinking while entering in a building or when you're selecting moves in battle. I don't know why, but the game stores a copy of the palette memory in WRAM and reloads it in these situations, causing a blink effect because the original palette is loaded for one frame. Replacing 0x70682 with 00 00 00 00 fixes the problem, but i haven't tested enough to say that it doesn't cause other glitches.
This doesn't fix the warp-arrow glitch though.
 

droomph

weeb
4,285
Posts
12
Years
Fortunately it's not necessary.

Some time ago i found the reason of the screen blinking while entering in a building or when you're selecting moves in battle. I don't know why, but the game stores a copy of the palette memory in WRAM and reloads it in these situations, causing a blink effect because the original palette is loaded for one frame. Replacing 0x70682 with 00 00 00 00 fixes the problem, but i haven't tested enough to say that it doesn't cause other glitches.
This doesn't fix the warp-arrow glitch though.

Okay thanks! After a while, I fixed it, thanks to you! Lubs this very much, prime-dialga you are a wonderful person to make this and Mr.Pkmn you are wonderful to find all the sloluppons *squee*

THIS IS FREAKING AWESOME

Emerald: Replace 0xA1BCE instead.
LeafGreen: Replace 0x70682 instead.
Ruby: Replace 0x73CEE instead.
Sapphire: Replace 0x73CF2 instead.

(Basically you are replacing a long-branch-with-link (four bytes) instruction with nothing twice, so it skips over the part where it reloads the OW pallet again. It shouldn't cause any glitches.)
 
Last edited:
1
Posts
12
Years
  • Seen Mar 11, 2012
So, I know i need to edit tilesets and such to change the look, but, where do I need to add/change a tileset to make the windows and lamps light up? Sorry if I sound like a noob, this is a bit confusing.
 
6
Posts
12
Years
  • Seen Feb 13, 2012
Wha?

I'm trying to insert both day & night aswell as seasons into a currently unedited firered ROM. Upon starting I cannot move from bugged up pallet town tiles. Does anyone have a tutorial or something? (Yeah, I know it's sad to ask for tut of a tool.)
 

Pokehacker11

a kid with a knack for mapping
51
Posts
11
Years
When I use it, it does not change. It's always night for some reason.
Other then that, it's fine. But it freezes when I install it, so I have to erase it.
Then it's always night.
 
37
Posts
13
Years
  • Age 27
  • Seen Feb 7, 2014
When I use it, it does not change. It's always night for some reason.
Other then that, it's fine. But it freezes when I install it, so I have to erase it.
Then it's always night.

That's because you need to enable the Real Time Clock on your emulator. To do that in Visual Boy Advance, go to Options > Emulator > Real Time Clock (if you click it, it will check off).
 

DarkFlameSquirrel

Music Freak
7
Posts
11
Years
Sorry, I'm a total n00b.

All I want to do is add Day, Night, and Seasons to my unedited Pokemon Emerald rom. When I load it with DNS, it gives me an insert RTC option. Doesn't it already have RTC or am I missing something here? If there's a tutorial somewhere for this, I would heavily appreciate it if someone linked it.
 

prime-dialga

pure darkness
28
Posts
14
Years
  • Seen Jul 8, 2014
Pokemon Emerald has already a RTC but my system is based on interdpths RTC, so you must install this RTC too with the tool.
 

droomph

weeb
4,285
Posts
12
Years
Pokemon Emerald has already a RTC but my system is based on interdpths RTC, so you must install this RTC too with the tool.
If it's a given that you have to install interdpth's RTC why not automatically find some free space and install it? It's not a big deal, but it'll help with making the process easier.
 

prime-dialga

pure darkness
28
Posts
14
Years
  • Seen Jul 8, 2014
If it's a given that you have to install interdpth's RTC why not automatically find some free space and install it? It's not a big deal, but it'll help with making the process easier.
ok, i can write a function which finds some free space in your ROM, but it also needs free space in the RAM-Area and to find this is much harder. So it's easier for me to let you place the RTC where you want.
 

droomph

weeb
4,285
Posts
12
Years
ok, i can write a function which finds some free space in your ROM, but it also needs free space in the RAM-Area and to find this is much harder. So it's easier for me to let you place the RTC where you want.
Oh, I think I remember that.

Well, ROM placement is enough if you still want to do it. I can look for the RAM myself if it's too hard for a function. But I think you already have a default right? Oh well it's okay.
 
27
Posts
12
Years
  • Seen Mar 2, 2017
Really cool tool. I do not have the time or patience to add in seasons - and no one playing my new mod will play it all year long.. I do however really like the day and night system. Thanks much!

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.

Well thank you very much for this Jambo!!!!! I just implemented it into my game and it works flawlessly. I also learned a bit about ASM in the process too so thank you so much for this. I had no idea it took till level 75 to evolve an eevee though - too much training, thanks rare candies :)
 
Last edited by a moderator:
1
Posts
12
Years
  • Seen Jul 31, 2019
Can I use this to patch Light Platinum? I have played for a long time, and it has never became night time in my game.
 

prime-dialga

pure darkness
28
Posts
14
Years
  • Seen Jul 8, 2014
Maybe you haven't activated the RTC in your Emulator...

Anyway you can use this tool to patch it, if the hackers alow it.
 
Back
Top