Jump to content

Move editing help (raising all stats) B2W2


Alses

Recommended Posts

I've tried to make quiver dance work like shell smash by making it use a "unique effect" and changing the variables to be the same as shell smash, that didn't work. I decided to make it raise all stats and reduce the defenses afterwards to copy the same effect of shell smash but no moves other than ancient power and ominous wind actually raise all stats even if told to, so I was wondering how would I force moves that usually don't raise all stats to do that?

Edit: completely forgot to specify which game... White 2 is the one I'm editing

Edit2: It is something definitely outside of the a021 narc since if I copy the data of ominous wind or ancient power over anything else everything except the stat raise works. No idea where it would be coming from though..

Edited by Alses
Link to comment
Share on other sites

  • 1 month later...

I guess you might have to create a custom effect for raising all stats.The "default" stat raising thing only support up to 3. The move shell smash is specially handled in overlay0093.bin

However, if you just want to make it the same effect as shell smash, I have actually tested and confirmed it working on Black Version by

NOTE: Do not just do what I did until you read until the end as we use different versions.

1. Do what you did, copy the data for shell smash and replace the quiver dance's.

2. Unpack the rom. (I used DSLAZY, which is equivalent to ndstool)

3. Decompress overlay0093.bin using BLZ.exe

4. Go to address 0x3D490 and change "F8 01" to "E3 01", then copy the uncompressed file to replace the original overlay009.bin

5. modify the overlay table in y9.bin, 0xBBF byte to 00 (02 should theoretically work as well I never tested)

6. Repack the rom.

IMPORTANT:

1. I used BLACK version, which is different from white 2 version. HOWEVER you shuold go to overlay167 and search for "F8 01 00 00 91 75 1E 02". However it's not guaranteed the code will be there as I dont have a BW2 dumped rom with me currently. If it's not found try to search for "02 F8 01" and look for if anything looks like that format.

2. I replaced the effect call of shell smash with quiver dance to make sure it works. What you might want to do is to insert "E3 01 00 00 91 75 1E 02" after "F8 01 00 00 91 75 1E 02" so they both use that effect.

3. After you increase the size of the file, you must go to overlay table 0xBA8-0xBAA (in black version) to update the corresponding file size. NOTE that for overlay 93, how you get BA is by multiplying 93 by 2 so the entry for overlay 167 should be 0x14E0-0x14FF in the overlay table.

4. You can recompress the file but in this case you need to update the recompressed size as well (the 3 bytes before the last byte of the entry). The benefit of recompressing is that you can insert the modified files into the original rom without repacking. This will guarantee other files stay where they are and if you have other in-progress modifications which, for example you recorded some important locations, you won't lose them.

5. The thing before each "1E 02" looks like some pointer to some effects However I haven't looked into it. Possibly after some researching you may be able to find the actual code for the effects and be able to create your custom effect (such as raising all 5 stats).

Edited by modder
Link to comment
Share on other sites

xxxx1e02 is a code pointer. it's pointing to the subroutine @ 21Exxxx. in your case, at the subroutine @ 21E7590. the +1 is because it's a thumb routine.

also:

0xA7 (167)      Main battle overlay- holds the vital battle-related code, loads the other 3
0xA8 (168)	      gfx-related battle overlay
0xA9 (169)	      VRAM overlay- global effects, etc
0xAA (170)      Trainer AI handler

e: are you sure that that's the right pointer value? that pointer is in the middle of a function:

http://i.imgur.com/Y0adfYT.png

Edited by Bond697
Link to comment
Share on other sites

The thing is that I am using BLACK JAPANESE version and that's why I am not sure whether the value will be the same. That's why in other version it's better to search something like "1E 02 F8 01" (end of previous block + beginning of current block which is the move code) which does not contain any address-specific information.

There is another possibility:

Some effect might only be part of another effect or multiple effects share the same beginning parts (which does not really do any noticeable thing).

This happens pretty often in the GBA emerald version's move effect code, I cant clearly remember the exact format but I think one move can have a session 28 xx xx xx 08 which refers to the address xxxxxx, while that address can be a part of (in the middle of) another effect or an effect itself.

The assembly code looks like variables based on current stack pointer is used as a parameter to call another process. Then probably it's doing something like storing the current stack information->call another procedure->use that information to go back, just not in a conventional function calling way like BL first and then STMFD/LDMFD.

I am not really good at assembly things so probably I'm totally wrong though. Just my guess based on the experience of emerald move effect editing.

Edited by modder
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...