• 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.

Change OW in script

Danny0317

Fluorite's back, brah
1,067
Posts
10
Years
  • Age 24
  • Seen Nov 19, 2023
Fired red part by Jotta from WaH. All I did was translate the important parts. And the RSE part
This tutorial is FR only. Emerald and Ruby part in the bottom.

Screenies soon, maybe,

Step 1.

Open NSE Classic, go to the OW you want, and open Advanced mode. You will see Pointer 1, Pointer 2, and Pointer 3. Look at pointer 3, and write it down or something.

Step 2.

Do this to them. (This is an example) 3A00A0 => A0003A. So format is (first two numbers)(middle two numbers)(third two numbers).

Step 3.

When you want the OW to change, put this:
writebytetooffset 0x 0x02020648
writebytetooffset 0x 0x02020649
writebytetooffset 0x 0x0202064A

But in the end it should look like this:
writebytetooffset 0xA0 0x02020648
writebytetooffset 0x00 0x02020649
writebytetooffset 0x3A 0x0202064A

Why? Because this:
1º-A0 2º-00 3º-3A

Step 4.
Now you need to refresh the screen. Use a fadescreen or a warp.

Step 5.

This only applies if you want to do this to an OW that uses a different pallet.
Now open, advance map, and place the OW you want to become somewhere. Now go there in visual advance and open pallet view. Find his/her pal. Now get the colors from it (not the first). Now for example, if the color is 1234, you would need to make it 34 12.

Step 6.

Do all of the pallet stuff to this.
writebytetooffset 0x 0x20377FA
writebytetooffset 0x 0x20377FB
writebytetooffset 0x 0x20377FC
writebytetooffset 0x 0x20377FD
writebytetooffset 0x 0x20377FE
writebytetooffset 0x 0x20377FF
writebytetooffset 0x 0x2037800
writebytetooffset 0x 0x2037801
writebytetooffset 0x 0x2037802
writebytetooffset 0x 0x2037803
writebytetooffset 0x 0x2037804
writebytetooffset 0x 0x2037805
writebytetooffset 0x 0x2037806
writebytetooffset 0x 0x2037807
writebytetooffset 0x 0x2037808
writebytetooffset 0x 0x2037809
writebytetooffset 0x 0x203780A
writebytetooffset 0x 0x203780B
writebytetooffset 0x 0x203780C
writebytetooffset 0x 0x203780D
writebytetooffset 0x 0x203780E
writebytetooffset 0x 0x203780F
writebytetooffset 0x 0x2037810
writebytetooffset 0x 0x2037811
writebytetooffset 0x 0x2037812
writebytetooffset 0x 0x2037813
writebytetooffset 0x 0x2037814
writebytetooffset 0x 0x2037815
writebytetooffset 0x 0x2037816
writebytetooffset 0x 0x2037817

Step 7.

Now put this in a level script.

checkflag 0x"flag"
if 0x1 goto 0x"offset2"
end

offset2:
All your WBTO stuff.
end

Extra stuff

WTBO for pal 2:

writebytetooffset 0xBD 0x020377FA
writebytetooffset 0x7F 0x020377FB
writebytetooffset 0xD7 0x020377FC
writebytetooffset 0x6A 0x020377FD
writebytetooffset 0xFE 0x020377FE
writebytetooffset 0x4A 0x020377FF
writebytetooffset 0x5B 0x02037800
writebytetooffset 0x3A 0x02037801
writebytetooffset 0xDF 0x02037802
writebytetooffset 0x12 0x02037803
writebytetooffset 0xBE 0x02037804
writebytetooffset 0x25 0x02037805
writebytetooffset 0xD7 0x02037806
writebytetooffset 0x11 0x02037807
writebytetooffset 0x0F 0x02037808
writebytetooffset 0x21 0x02037809
writebytetooffset 0x89 0x0203780A
writebytetooffset 0x31 0x0203780B
writebytetooffset 0x29 0x0203780C
writebytetooffset 0x2D 0x0203780D
writebytetooffset 0x07 0x0203780E
writebytetooffset 0x21 0x0203780F
writebytetooffset 0xE7 0x02037810
writebytetooffset 0x0C 0x02037811
writebytetooffset 0x00 0x02037812
writebytetooffset 0x00 0x02037813
writebytetooffset 0x00 0x02037814
writebytetooffset 0x7C 0x02037815
writebytetooffset 0x20 0x02037816
writebytetooffset 0x02 0x02037817


WTBO for pal 4:

writebytetooffset 0x5F 0x20377FA
writebytetooffset 0x5B 0x20377FB
writebytetooffset 0xFE 0x20377FC
writebytetooffset 0x4A 0x20377FD
writebytetooffset 0x5B 0x20377FE
writebytetooffset 0x3A 0x20377FF
writebytetooffset 0xF 0x2037800
writebytetooffset 0x21 0x2037801
writebytetooffset 0x9F 0x2037802
writebytetooffset 0x5A 0x2037803
writebytetooffset 0xBA 0x2037804
writebytetooffset 0x3D 0x2037805
writebytetooffset 0x11 0x2037806
writebytetooffset 0x29 0x2037807
writebytetooffset 0x12 0x2037808
writebytetooffset 0x77 0x2037809
writebytetooffset 0xC 0x203780A
writebytetooffset 0x66 0x203780B
writebytetooffset 0xE7 0x203780C
writebytetooffset 0x24 0x203780D
writebytetooffset 0x18 0x203780E
writebytetooffset 0x6B 0x203780F
writebytetooffset 0x31 0x2037810
writebytetooffset 0x4A 0x2037811
writebytetooffset 0x29 0x2037812
writebytetooffset 0x2D 0x2037813
writebytetooffset 0xFF 0x2037814
writebytetooffset 0x7F 0x2037815
writebytetooffset 0x0 0x2037816
writebytetooffset 0x0 0x2037817

Now compatible with emerald and ruby, a different method.

Okay, create a person event in your map that you want to become. Put a level script or script tile in your map that the player can't avoid. Make it have this.

setflag 0x(flag) (and make it the Person ID of the OW you wanna change into)
hidesprite 0x(person event)

and make sure it doesn't repeat.

Now put a script tile below the person. The person is hidden and has a flag on them so it's not a problem. Now in that script tile, make sure it has this:

fadescreen 0x1
hidesprite 0xFF
clearflag 0x(flag)
showsprite 0x(person event)
fadescreen 0x0

And that should do the job.

The effects go away once a warp happens. It is good to put a level script having the things.
 
Last edited:
5,256
Posts
16
Years
Wouldn't it be far easier and space-efficient to just store those bytes in the RAM through assembly? This seems really bulky for what it's doing. JPAN did something similar in his hacked engine, so you could look at that too. Nice find, though.
 

iv0

145
Posts
10
Years
  • Age 32
  • Seen Sep 1, 2023
Thanks, thanks I was looking for this for a long time.
 
3,830
Posts
14
Years
  • Age 27
  • OH
  • Seen Feb 26, 2024
Well that's certainly a useful way of using WBTO, if inefficient.
How long does the sprite stay changed? Until there hero follows a warp?
 

Danny0317

Fluorite's back, brah
1,067
Posts
10
Years
  • Age 24
  • Seen Nov 19, 2023
Well that's certainly a useful way of using WBTO, if inefficient.
How long does the sprite stay changed? Until there hero follows a warp?

Yeah, my bad. When I was gonna translate that part I had to do something so I guess I forgot. I'll add it now.
 

Danny0317

Fluorite's back, brah
1,067
Posts
10
Years
  • Age 24
  • Seen Nov 19, 2023
So here is something I did with this as a little test.
Spoiler:


And the script
Spoiler:

If you're gonna use that, plis modify the script :3
 
Last edited:
116
Posts
16
Years
I wanna write a script like this situation: after the player talk to a crystalline rock's OW, it will disappear and Jirachi's OW appears at that moment, then go to battle with Jirachi. The following was the script I wrote, but it may got something mistakes: the crystalline rock's OW disappeared and Jirachi's OW wouldn't appear, could you please and please correct it for me?

Spoiler:


Here are the screenshots about the two person events which I did, are there any mistakes or not? Thanks in advance.
The crystalline rock's OW person events:
attachment.php


Jirachi's OW person events:
attachment.php
 
Last edited:

Danny0317

Fluorite's back, brah
1,067
Posts
10
Years
  • Age 24
  • Seen Nov 19, 2023
I wanna write a script like this situation: after the player talk to a crystalline rock's OW, it will disappear and Jirachi's OW appears at that moment, then go to battle with Jirachi. The following was the script I wrote, but it may got something mistakes: the crystalline rock's OW disappeared and Jirachi's OW wouldn't appear, could you please and please correct it for me?

Spoiler:


Here are the screenshots about the two person events which I did, are there any mistakes or not? Thanks in advance.
The crystalline rock's OW person events:
attachment.php


Jirachi's OW person events:
attachment.php

I'm about to go to sleep right now, so I'll link this right before I do. It's a bit more updated and may be able to fix your problem. If not, I'd be glad to help you, but I have to finish a project then go to sleep and wake up at 6 :/

http://www.pokecommunity.com/showthread.php?t=334196
 
416
Posts
11
Years
  • Age 35
  • Seen Feb 10, 2024
This method is useless for LG/FR, since some ingame specials do the same. Pretty nice for R/S.

which ingame specials change the player OW to a different OW?

NOTE:
In order to make a map where the player is always the different sprite, you need 2 map scripts:

Script 0:
Validates values, loads handler to 0x3000F28 [04]
Flag: 4001 Value:0000 Script offset 2: offset to all your WBTO stuff.

Script 1:
On entering map/on menu close [07]
Script offset: same offset as in Script 0

Assuming you only had the two map scripts for each map that required this, you could use the same map script offset for each map.

without both, every time the user opened his bag, it would reset their sprite...
 
Last edited:
116
Posts
16
Years
I'm about to go to sleep right now, so I'll link this right before I do. It's a bit more updated and may be able to fix your problem. If not, I'd be glad to help you, but I have to finish a project then go to sleep and wake up at 6 :/

http://www.pokecommunity.com/showthread.php?t=334196

I felt more confused after read it. Could you please and please help me to correct the script and the person events?
 
116
Posts
16
Years
I'm about to go to sleep right now, so I'll link this right before I do. It's a bit more updated and may be able to fix your problem. If not, I'd be glad to help you, but I have to finish a project then go to sleep and wake up at 6 :/

http://www.pokecommunity.com/showthread.php?t=334196

I want to change the crystalline's OW to Jirachi's OW after talking to the crystalline's OW in Jirachi wildbattle script. Now the script I wrote maybe got some mistakes, the crystalline's disappeared but then Jirachi's OW wouldn't appear and it goes straight to battle with Jirachi directly. Jirachi's OW was hidden and put above the crystalline's OW.
 

Danny0317

Fluorite's back, brah
1,067
Posts
10
Years
  • Age 24
  • Seen Nov 19, 2023
I want to change the crystalline's OW to Jirachi's OW after talking to the crystalline's OW in Jirachi wildbattle script. Now the script I wrote maybe got some mistakes, the crystalline's disappeared but then Jirachi's OW wouldn't appear and it goes straight to battle with Jirachi directly. Jirachi's OW was hidden and put above the crystalline's OW.

Oh.. this tutorial was to change the player OW...

Anyways, for a script like that to work you have to do something like this..

(previous to this you have to set a flag that hides Jirachi.)

talk to crystal
wildbattle
fadescreen
setflag 0xcrystal flag
hidesprite 0xcrystal
clearflag 0xjirachi
showsprite 0xjirachi
fadescreen back

if that doesn't work, then try replacing the hidesprites with spriteinvisibles
 
Back
Top