The PokéCommunity Forums Fan Games ROM Hacking Research & Development
Development Move Resource Thread

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!

Reply
 
Thread Tools
  #376    
Old June 15th, 2017 (7:30 PM).
DoesntKnowHowToPlay's Avatar
DoesntKnowHowToPlay DoesntKnowHowToPlay is offline
Tiny Umbrella with Lots and Lots of Good
     
    Join Date: Jan 2012
    Posts: 258
    Later gens have added the never-miss property to a bunch of moves, such as Roar, Block, and Foresight (as well as backported moves like Clear Smog and Defog).

    In FR, the relevant code is at 0x1DD8E. By putting C0 78 00 28 01 D0 10 E0 there, the check for Swift/Vital Throw/etc. will check the accuracy byte instead of the move effect byte, and will make the move ignore accuracy if its listed accuracy is 0 (which displays as -- in-game).
    __________________

    Yet Another Fire Red Hack

    Physical/Special Split
    Reply With Quote
      #377    
    Old June 30th, 2017 (4:57 AM). Edited June 30th, 2017 by sSiddhant.
    sSiddhant's Avatar
    sSiddhant sSiddhant is offline
       
      Join Date: Jul 2016
      Location: India
      Gender: Male
      Nature: Naughty
      Posts: 28
      Gen 7 Moves Effects

      These are my first ever move effect creations. They are in the compiled version. You just need to add them with Hex Editor and repoint it from the Move Effects Table.

      Toxic Thread[FR]
      Spoiler:
      2E 85 3E 02 02 18 15 2E 85 3E 02 02 C2 15 28 00 69 1D 08


      Tearful Look[FR]
      Spoiler:
      2E 85 3E 02 02 16 15 2E 85 3E 02 02 19 15 28 00 69 1D 08
      Reply With Quote
        #378    
      Old July 17th, 2017 (1:46 PM). Edited June 19th, 2018 by AkameTheBulbasaur.
      AkameTheBulbasaur's Avatar
      AkameTheBulbasaur AkameTheBulbasaur is offline
      Akame Marukawa of Iyotono
         
        Join Date: May 2013
        Location: A place :D
        Age: 21
        Gender: Male
        Nature: Gentle
        Posts: 351
        Some people (like me) may not have known that Volt Tackle has another effect besides recoil past generation IV. From Diamond/Pearl onward, Volt Tackle has a 10% chance to paralyze.

        To get that in FireRed, replace Battle Scrip 198 with this:
        Spoiler:
        #dynamic 0x180000
        #freespacebyte 0xFF

        #org @CheckMove
        setbyte 0x2023E85 0xE6
        jumpifhalfword 0x0 0x2023D4A 0x158 @VoltTackle
        goto 0x1D6900

        #org @VoltTackle
        attackcanceler
        accuracycheck 0x81D695E 0x0
        attackstring
        ppreduce
        calculatedamage
        attackanimation
        waitanimation
        missmessage
        cmd5c 0x0
        waitstate
        graphicalhpupdate 0x0
        datahpupdate 0x0
        critmessage
        waitmessage 0x40
        resultmessage
        waitmessage 0x40
        seteffectwithchancetarget
        jumpiftype 0x0 0xD 0x81D694E
        setbyte 0x2023E85 0x5
        seteffectwithchancetarget
        faintpokemon 0x0 0x0 0x0
        goto 0x81D694E


        The above routine takes into account whether the opponent is Electric Type, and if they are, bypasses the paralysis chance. You can do this with other attacks too by using these three scripts:

        Replace Battle Script 6 with this:
        Spoiler:
        #dynamic 0x180000
        #freespacebyte 0xFF

        #org @TypeCheck
        jumpiftype 0x0 0xD 0x1D6900
        goto 0x81D6A6B

        This just checks the Type of the opponent, and if they are an Electric Type, just goes straight to the damage calculation script.

        Replace Battle Script 152 with this:
        Spoiler:
        #dynamic 0x170000
        #freespacebyte 0xFF

        #org @Main
        jumpiftype 0x0 0xD 0x81D6926
        setbyte 0x2023E85 0x5
        goto 0x81D6926


        Replace Battle Script 67 with this:
        Spoiler:
        #dynamic 0x180000
        #freespacebyte 0xFF

        #org @Start
        attackcanceler
        attackstring
        ppreduce
        jumpifhalfword 0x0 0x2023D4A 0x4E @StunSpore
        jumpiftype 0x0 0xD 0x81D7E04
        goto 0x81D71E5

        #org @StunSpore
        jumpiftype 0x0 0xC 0x81D7E04
        jumpiftype 0x0 0xD 0x81D7E04
        goto 0x81D71E5

        This also includes the check for Stun Spore. If the opponent is a Grass Type, it will have no effect.

        Of course, I have checks for the other spore moves.

        Replace Battle Script 66 with this:
        Spoiler:
        #dynamic 0x180000
        #freespacebyte 0xFF

        #org @Start
        attackcanceler
        attackstring
        ppreduce
        jumpifhalfword 0x0 0x2023D4A 0x4D @CheckType
        goto 0x81D7184

        #org @CheckType
        jumpiftype 0x0 0xC 0x81D7E04
        goto 0x81D7184


        Replace Battle Script 1 with this:
        Spoiler:
        #dynamic 0x180000
        #freespacebyte 0xFF

        #org @Start
        attackcanceler
        attackstring
        ppreduce
        jumpifhalfword 0x0 0x2023D4A 0x4F @CheckType
        jumpifhalfword 0x0 0x2023D4A 0x93 @CheckType
        goto 0x81D6970

        #org @CheckType
        jumpiftype 0x0 0xC 0x81D7E04
        goto 0x81D6970


        I also have a script for "100% Accurate When Used by a Poison Type" Toxic for FireRed (there was one for Emerald but not for FireRed).

        Replace Battle Script 33 with this:
        Spoiler:
        #dynamic 0x180000
        #freespacebyte 0xFF

        #org @Toxic
        jumpiftype 0x1 0x3 @AccuracyBypass
        goto 0x81D6DE0

        #org @AccuracyBypass
        attackcanceler
        jumpifspecialstatusflag 0x0 0x400C0 0x0 0x1D695E
        attackstring
        ppreduce
        jumpifability 0x0 0x11 0x81D6E4F
        jumpifsecondarystatus 0x0 0x1000000 0x81D7DF2
        jumpifstatus 0x0 0x8 0x81D6E41
        jumpifstatus 0x0 0x80 0x81D6E41
        jumpifstatus 0x0 0xFF 0x81D7DF2
        jumpiftype 0x0 0x3 0x81D7E04
        jumpiftype 0x0 0x8 0x81D7E04
        goto 0x81D6E27


        Last but not least, in the current games, Ghost Types are no longer affected by trapping moves like Mean Look or by abilities like Shadow Tag. I haven't updated the abilities yet, but if you want Mean Look (and any move that uses its script) to not affect Ghost Types...

        Replace Battle Script 106 with this:
        Spoiler:
        #dynamic 0x180000
        #freespaceyte 0xFF

        #org @start
        attackcanceler
        attackstring
        ppreduce
        jumpiftype 0x0 0x7 0x81D7E04
        goto 0x81D76D7


        Whew! That was a lot! I'm not sure if this stuff is already on here, but I wasn't able to find it anywhere. Hopefully at least one of these things haven't been posted yet haha.
        __________________
        "The human sacrificed himself, to save the Pokemon. I pitted them against each other, but not until they set aside their differences did I see the true power they all share deep inside. I see now that the circumstances of one's birth are irrelevant; it is what you do with the gift of life that determines who you are." -Mewtwo
        Reply With Quote
          #379    
        Old August 2nd, 2017 (6:05 PM). Edited November 29th, 2017 by ghoulslash.
        ghoulslash's Avatar
        ghoulslash ghoulslash is online now
           
          Join Date: Mar 2016
          Gender: Male
          Posts: 95
          This may be all for naught since FBI is working on redoing the battle system, but I was interested in solving this problem:

          Adding new Wrap-Effect moves with Custom Text/Animation [FR]:

          1. The default text for effect 42 is Sand Tomb. Rather than try and find the routine that loads the correct string, a simple hex edit will generalize the attack name and preserve the Sand Tomb printstring. At 0x3FBB2F, insert the following (there is enough space to keep the pointer)
          Quote:
          FD 10 00 EB D5 E7 00 E8 E6 D5 E4 E4 D9 D8 FE D6 ED 00 FD 14 AB FF
          This says "[target] was trapped by [attack]!" Change if you like.
          2a. There is a 'table' of between turn animations at 0x1D5C5F with a pointer at 0x1C6EC0. The table looks something like this:
          Quote:
          03 (ZZ+1) YY XX 08 05 00 21 00 01 00 D3 5C 1D 08 21 00 02 00 F8 5C 1D 08 ... ... 13 8B 5C 1D 08
          • where (ZZ+1) YY XX is a reverse pointer to a routine that loads an ID to check against 21 00 0X 00
          • D3 5C 1D 08 is a pointer to fire spin's between turn animation, F8 5C 1D 08 to Whirlpool, and so on
          • 13 8B 5C 1D 08 loads the default wrap animation if 21 00 0X 00 is not matched. This is why simply assigning effect 42 to a move yields the wrap animation between turns
          2b. Repoint this table to free space. You want to add in 21 00 05 00 AA AA AA 08 21 00 06 00 BB BB BB 08 ... etc for each move you want to add, where 0xAAAAAA, 0xBBBBBB are the between-turn animations for your new moves. These can be different than the regular attack animation. And make sure the 13 8B 5C 1D 08 is at the end of the 'table'

          3. Insert the following routine into free space. This will be our new routine to load the ID that checks against this table
          Spoiler:

          Code:
          .text
          .align 2
          .thumb
          .thumb_func
          .global TrapAnim
          
          Main:
          	push {lr}
          	lsl r0, r0, #0x18
          	lsr r2, r0, #0x18
          	ldr r0, =(0x02024018)
          	ldr r0, [r0]
          	ldr r0, [r0, #0x8]
          	ldrh r1, [r0]		@r1 = move ID
          
          CheckFireSpin:
          	cmp r1, #0x53	@fire spin move ID
          	bne CheckWhirlpool
          	mov r0, #0x1
          	b Ending
          	
          CheckWhirlpool:
          	cmp r1, #0xFA	@whirlpool move ID
          	bne CheckClamp
          	mov r0, #0x2
          	b Ending
          
          CheckClamp:
          	cmp r1, #0x80     @clamp move ID
          	bne CheckSandTomb
          	mov r0, #0x3
          	b Ending
          
          CheckSandTomb:
          	mov r0, #0xA4
          	lsl r0, r0, #0x1	@0x148 (sand tomb move ID)
          	cmp r1, r0
          	bne CheckMine
          	mov r0, #0x4
          	b Ending
          
          CheckMine:
          	mov r0, #0xXX       @your new move ID
          	cmp r1, r0
          	bne Default
          	mov r0, #0x5
          	b Ending
          
          /* repeat the above pattern for extra moves.  */
          	
          Default:
          	mov r0, #0x0
          
          Ending:
          	ldr r1, =(0x02037F02)     @store anim ID
          	strh r0, [r1]
          	mov r0, r2
          	ldr r4, =(0x08072760 + 1)
          	bl jump_r4
          	pop {r0}
          	bx r0
          	
          jump_r4:
          	bx r4
          	
          .align 2


          4. change the pointer (ZZ+1) YY XX 08 in your repointed 'table' from (2b) to the reverse pointer (+1) to where you inserted this routine.

          And that should be everything you need! Enjoy!
          Reply With Quote
            #380    
          Old August 2nd, 2017 (7:17 PM).
          Noodlewhiz's Avatar
          Noodlewhiz Noodlewhiz is offline
             
            Join Date: Apr 2017
            Posts: 55
            Quote:
            Originally Posted by ghoulslash View Post
            snip
            I followed everything you said, but for some reason now all the between turn animations have become wrap. Do you know what I could have done wrong?
            I also modified the routine a little:
            Spoiler:
            .text
            .align 2
            .thumb
            .thumb_func
            .global TrapAnim

            Main:
            push {lr}
            lsl r0, r0, #0x18
            lsr r2, r0, #0x18
            ldr r0, =(0x02024018)
            ldr r0, [r0]
            ldr r1, [r0, #0x8]
            ldrh r1, [r0] @r1 = move ID

            CheckFireSpin:
            cmp r1, #0x53 @fire spin move ID
            bne CheckWhirlpool
            ldr r1, =(0x02037F02)
            mov r0, #0x1
            b Ending

            CheckWhirlpool:
            cmp r1, #0xFA @whirlpool move ID
            bne CheckClamp
            ldr r1, =(0x02037F02)
            mov r0, #0x2
            b Ending

            CheckClamp:
            cmp r1, #0x80 @clamp move ID
            bne CheckSandTomb
            ldr r1, =(0x02037F02)
            mov r0, #0x3
            b Ending

            CheckSandTomb:
            mov r0, #0xA4
            lsl r0, r0, #0x1 @0x148 (sand tomb move ID)
            cmp r1, r0
            bne CheckMagmaStorm
            ldr r1, =(0x02037F02)
            mov r0, #0x4
            b Ending

            CheckMagmaStorm:
            mov r0, #0xF7 @your new move ID
            lsl r0, r0, #0x1
            cmp r1, r0
            bne CheckInfestation
            mov r0, #0x5
            b Ending

            CheckInfestation:
            mov r0, #0xFF @your new move ID
            add r0, r0, #0x1E
            lsl r0, r0, #0x1
            cmp r1, r0
            bne Default
            mov r0, #0x6
            b Ending

            /* repeat the above pattern for extra moves. */

            Default:
            ldr r1, =(0x02037F02)
            mov r0, #0x0

            Ending:
            ldr r1, =(0x02037F02) @store anim ID
            strh r0, [r1]
            mov r0, r2
            ldr r1, =(0x08072760 + 1)
            bl linker
            pop {r0}
            bx r0

            linker:
            bx r1

            .align 2

            Thanks!
            Reply With Quote
              #381    
            Old August 2nd, 2017 (7:26 PM).
            ghoulslash's Avatar
            ghoulslash ghoulslash is online now
               
              Join Date: Mar 2016
              Gender: Male
              Posts: 95
              Quote:
              Originally Posted by Noodlewhiz View Post
              I followed everything you said, but for some reason now all the between turn animations have become wrap. Do you know what I could have done wrong?
              I also modified the routine a little:
              Spoiler:
              .text
              .align 2
              .thumb
              .thumb_func
              .global TrapAnim

              Main:
              push {lr}
              lsl r0, r0, #0x18
              lsr r2, r0, #0x18
              ldr r0, =(0x02024018)
              ldr r0, [r0]
              ldr r1, [r0, #0x8]
              ldrh r1, [r0] @r1 = move ID

              CheckFireSpin:
              cmp r1, #0x53 @fire spin move ID
              bne CheckWhirlpool
              ldr r1, =(0x02037F02)
              mov r0, #0x1
              b Ending

              CheckWhirlpool:
              cmp r1, #0xFA @whirlpool move ID
              bne CheckClamp
              ldr r1, =(0x02037F02)
              mov r0, #0x2
              b Ending

              CheckClamp:
              cmp r1, #0x80 @clamp move ID
              bne CheckSandTomb
              ldr r1, =(0x02037F02)
              mov r0, #0x3
              b Ending

              CheckSandTomb:
              mov r0, #0xA4
              lsl r0, r0, #0x1 @0x148 (sand tomb move ID)
              cmp r1, r0
              bne CheckMagmaStorm
              ldr r1, =(0x02037F02)
              mov r0, #0x4
              b Ending

              CheckMagmaStorm:
              mov r0, #0xF7 @your new move ID
              lsl r0, r0, #0x1
              cmp r1, r0
              bne CheckInfestation
              mov r0, #0x5
              b Ending

              CheckInfestation:
              mov r0, #0xFF @your new move ID
              add r0, r0, #0x1E
              lsl r0, r0, #0x1
              cmp r1, r0
              bne Default
              mov r0, #0x6
              b Ending

              /* repeat the above pattern for extra moves. */

              Default:
              ldr r1, =(0x02037F02)
              mov r0, #0x0

              Ending:
              ldr r1, =(0x02037F02) @store anim ID
              strh r0, [r1]
              mov r0, r2
              ldr r1, =(0x08072760 + 1)
              bl linker
              pop {r0}
              bx r0

              linker:
              bx r1

              .align 2

              Thanks!
              If it's doing the wrap animation between turns, it's somehow getting to the Default part of the assembly routine. I would double check your move IDs. It looks like Infestation is move ID 570, for example.

              Also since you load ldr r1, =(0x02037F02) at Ending, you shouldn't need to add that at every check, just in case you want to save a few bytes :)
              Reply With Quote
                #382    
              Old August 2nd, 2017 (7:40 PM).
              Noodlewhiz's Avatar
              Noodlewhiz Noodlewhiz is offline
                 
                Join Date: Apr 2017
                Posts: 55
                Quote:
                Originally Posted by ghoulslash View Post
                If it's doing the wrap animation between turns, it's somehow getting to the Default part of the assembly routine. I would double check your move IDs. It looks like Infestation is move ID 570, for example.

                Also since you load ldr r1, =(0x02037F02) at Ending, you shouldn't need to add that at every check, just in case you want to save a few bytes :)
                I've checked my move ids many times. Infestation is supposed to be 570; I expanded my level up move data. Assuming the move ids are correct, what could I be doing wrong?
                Reply With Quote
                  #383    
                Old August 2nd, 2017 (7:51 PM).
                ghoulslash's Avatar
                ghoulslash ghoulslash is online now
                   
                  Join Date: Mar 2016
                  Gender: Male
                  Posts: 95
                  Quote:
                  Originally Posted by Noodlewhiz View Post
                  I've checked my move ids many times. Infestation is supposed to be 570; I expanded my level up move data. Assuming the move ids are correct, what could I be doing wrong?
                  Ah, that makes sense then. It's possible expanding the move IDs over 511 is the issue, then? The original routine loads the attack ID in a strange manner, so I would go through and make sure that you are actually loading the move ID in Main.

                  These are my notes on what the routine actually does to load the move ID into r1:
                  Code:
                  	ldr r0, =(0x02024018)
                  	ldr r0, [r0]				@r0 = word at 02024018 -> 02005484
                  	ldr r1, [r0, #0x8]			@r1 = word at 0200548C -> 02005504
                  	ldrh r1, [r1]				@r1 = move ID
                  Reply With Quote
                    #384    
                  Old August 2nd, 2017 (8:20 PM).
                  Noodlewhiz's Avatar
                  Noodlewhiz Noodlewhiz is offline
                     
                    Join Date: Apr 2017
                    Posts: 55
                    Quote:
                    Originally Posted by ghoulslash View Post
                    Ah, that makes sense then. It's possible expanding the move IDs over 511 is the issue, then? The original routine loads the attack ID in a strange manner, so I would go through and make sure that you are actually loading the move ID in Main.

                    These are my notes on what the routine actually does to load the move ID into r1:
                    Code:
                    	ldr r0, =(0x02024018)
                    	ldr r0, [r0]				@r0 = word at 02024018 -> 02005484
                    	ldr r1, [r0, #0x8]			@r1 = word at 0200548C -> 02005504
                    	ldrh r1, [r1]				@r1 = move ID
                    I don't believe it's an issue with expanding the moves. I tested the old function with the new table and the original entries worked fine. However with this new function, even the old entries (I've been mostly trying with Whirlpool) appear as wrap. I checked 0x02005504 and FA was appearing there so I don't know what could be going wrong at this point.
                    Reply With Quote
                      #385    
                    Old August 2nd, 2017 (8:42 PM).
                    ghoulslash's Avatar
                    ghoulslash ghoulslash is online now
                       
                      Join Date: Mar 2016
                      Gender: Male
                      Posts: 95
                      Quote:
                      Originally Posted by Noodlewhiz View Post
                      I don't believe it's an issue with expanding the moves. I tested the old function with the new table and the original entries worked fine. However with this new function, even the old entries (I've been mostly trying with Whirlpool) appear as wrap. I checked 0x02005504 and FA was appearing there so I don't know what could be going wrong at this point.
                      Just took a closer look at your assembly routine, and I found the issue. In main, it should be:
                      Code:
                      	
                      ldr r1, [r0, #0x8]
                      ldrh r1, [r1]
                      whereas you have:
                      Code:
                      ldr r1, [r0, #0x8]
                      ldrh r1, [r0]	@r1 = move ID
                      So the move ID isn't actually getting loaded into r1
                      Reply With Quote
                        #386    
                      Old August 2nd, 2017 (9:35 PM).
                      Noodlewhiz's Avatar
                      Noodlewhiz Noodlewhiz is offline
                         
                        Join Date: Apr 2017
                        Posts: 55
                        Quote:
                        Originally Posted by ghoulslash View Post
                        Just took a closer look at your assembly routine, and I found the issue. In main, it should be:
                        Code:
                        	
                        ldr r1, [r0, #0x8]
                        ldrh r1, [r1]
                        whereas you have:
                        Code:
                        ldr r1, [r0, #0x8]
                        ldrh r1, [r0]	@r1 = move ID
                        So the move ID isn't actually getting loaded into r1
                        Yup, that was it. It works like a charm now. Thanks!
                        Reply With Quote
                          #387    
                        Old August 22nd, 2017 (11:12 PM).
                        ShyGuy25 ShyGuy25 is offline
                           
                          Join Date: Jun 2012
                          Gender: Male
                          Posts: 21
                          Are there any tutorials on how / where to replace existing battle scripts? the one on the OP is ruined by photobucket and its obviously not using ASM thumb compilers.
                          Reply With Quote
                            #388    
                          Old September 4th, 2017 (8:15 AM).
                          Nisarg's Avatar
                          Nisarg Nisarg is offline
                             
                            Join Date: Jan 2017
                            Gender: Male
                            Posts: 208
                            Dear SI;
                            I've got a suggestion for the convenience of usage for this awesomely maintained thread...
                            Instead of linking to the post, put spoilers for each of them so when adding new attacks, anyone can just navigate right away.
                            For multiple variations, put spoilers within the main spoiler.
                            Know it's much of work to do, but it's more good that way..
                            Anyways that's just a suggestion as far as it goes :)
                            __________________
                            Reply With Quote
                              #389    
                            Old September 10th, 2017 (4:39 AM). Edited September 10th, 2017 by NoMansBubble.
                            NoMansBubble's Avatar
                            NoMansBubble NoMansBubble is offline
                            My bed English.....
                               
                              Join Date: Aug 2017
                              Posts: 3
                              Gen7 Move effect
                              [FR]Shore Up
                              Spoiler:
                              Please read the red word and changed
                              Code:
                              main:
                              ldrh r1, [r4]
                              mov r0, #0x60
                              and r0, r1
                              cmp r0, #0x0
                              beq checkother
                              
                              end1:
                              ldr r4, =0x0802B5FB
                              bx r4
                              
                              end:
                              ldr r1, =0x0802B61D
                              bx r1
                              
                              checkother:
                              ldr r0, =0x02023D4A
                              ldrh r0, [r0]
                              
                              mov r4, #[email protected] The MM to your Shore UP move id/2
                              lsl r4, r4, #0x1
                              
                              cmp r0, r4
                              bne end
                              mov r0, #0x10
                              and r0, r1
                              cmp r0, #0x0
                              beq end2
                              b end1
                              
                              end2:
                              ldr r1, =0x02023D50
                              ldrb r0, [r5]
                              mul r0, r6
                              add r0, r0, r7
                              ldrh r0, [r0, #0x2C]
                              lsr r0, r0, #0x1
                              str r0, [r1]
                              ldr r0, =0x0802B62B
                              bx r0
                              insert 00 49 08 47 xx+1 xx xx 08 to 0802B5F0

                              Last set your Shore Up move effect to 0x85


                              [FR]First Impression
                              Spoiler:

                              XX XX XX :
                              Code:
                              2A 00 4A 3D 02 02 NN NN  YY YY YY 08 00 82 F0 7D 1D 08 2E 85 3E 02 02 88 28 00 69 1D 08
                              YY YY YY:
                              Code:
                              00 82 F0 7D 1D 08 28 00 69 1D 08
                              The NN NN is your First Impression move ID
                              insert XX XX XX 08 at 1D6820
                              And set your First Impression move effect to 0x9E
                              Reply With Quote
                                #390    
                              Old October 3rd, 2017 (1:12 PM). Edited January 4th, 2018 by ghoulslash.
                              ghoulslash's Avatar
                              ghoulslash ghoulslash is online now
                                 
                                Join Date: Mar 2016
                                Gender: Male
                                Posts: 95
                                Here are a couple quick routines for Magic Room, Wonder Room, and Lucky Chant ([FR])

                                Note that these may or may not be ideal routines. I haven't tested these routines much. Please report bugs or any item/defense check I may have overlooked. They are meant more or less as a placeholder until the new battle system arrives.

                                Magic Room:
                                -Every item check routine I've seen includes a call to a function to load the held effect ID from the item data table. This routine just returns 0 if Magic Room is in effect (except for exp/money items)
                                -This routine is based on the assumption that all held items call said function, which may or may not be correct... It also requires that all added items perform this same function call
                                -NOTE: Life Orb in MrDS's rombase does not call this function. It is checked at 08909fe4
                                EDIT: Here is a fix for this
                                Spoiler:

                                Code:
                                .text
                                .align 2
                                .thumb
                                .thumb_func
                                .global LifeOrb_PowerBoost
                                /*
                                00 4A 10 47 (xx+1) xx xx 08 at 909fec
                                */
                                
                                Main:
                                	bl GetHeldEffect
                                	cmp r0, #0x43	@life orb held effect ID
                                	bne NoLifeOrb
                                	
                                LifeOrb:
                                	ldr r0, =(0x08909ffe +1)
                                	b call_r0
                                	
                                NoLifeOrb:
                                	ldr r0, =(0x0890a00c +1)
                                	
                                call_r0:
                                	bx r0
                                	
                                GetHeldEffect:
                                	ldr r1, =(0x0809a924 +1)
                                	bx r1

                                Spoiler:

                                Code:
                                .text
                                .align 2
                                .thumb
                                .thumb_func
                                .global MagicRoom
                                /*
                                insert 00 49 08 47 (xx+1) xx xx 08 at 9a934
                                */
                                
                                .equ Table:	0x08XXXXXX		@where you will insert this routine
                                .equ TableSize, 0xC
                                .byte 0x18	@macho brace
                                .byte 0x19	@exp. share
                                .byte 0x1B	@soothe bell
                                .byte 0x20	@amulet coin
                                .byte 0x28	@lucky egg
                                @out-of-battle items (as a precaution)
                                .byte 0x21	@repel wild pokes
                                .byte 0x26	@everstone
                                .byte 0x3D	@up-grade(?)
                                .word 0xFEFEFEFE	@table end
                                
                                .equ start, Table + TableSize           @take note of this offset
                                
                                Main:
                                	mov r1, #0x2C  @44 bytes per item
                                	mul r0, r1
                                	add r0, r0, r4
                                	ldrb r0, [r0, #0x12]  @item held effect
                                	
                                CheckMagicRoom:
                                	ldr r1, .MagicRoomLoc
                                	ldrb r1, [r1]
                                	cmp r1, #0x0
                                	beq Ending
                                	
                                CheckExceptions:
                                        push {r2}
                                	ldr r1, .ExceptionTable
                                	
                                ExceptionLoop:
                                	ldrb r2, [r1]  @exception ID
                                	cmp r0, r2
                                	beq Ending
                                	cmp r2, #0xFE  @end of table
                                	beq NoException
                                	add r1, #0x1
                                	b ExceptionLoop
                                	
                                NoException:
                                	mov r0, #0x0	@return 0 if magic room in effect
                                	
                                Ending:
                                	pop {r4}
                                	pop {r1}
                                	bx r1
                                	
                                .align 2
                                .MagicRoomLoc:	.word 0x02XXXXXX   @RAM loc for magic room counter
                                .ExceptionTable:	.word Table


                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                                Wonder Room:
                                -This routine hijacks the base damage calculator and switches the storage of the target's def and sp. def for the calculation. This, of course, assumes that no other function in game needs to load a pkmn's def or sp. def. This is likely a rash assumption, though.
                                Spoiler:

                                Code:
                                .text
                                .align 2
                                .thumb
                                .thumb_func
                                .global WonderRoom
                                
                                /*
                                00 48 00 47 (xx+1) xx xx 08 at 3ed70
                                */
                                
                                
                                Main:
                                	ldr r2, [sp, #0x4]
                                	ldrh r3, [r2, #0x4]		@target def
                                	ldrh r2, [r2, #0xA]		@target sp. def
                                	
                                CheckWonderRoom:
                                	ldr r0, .WonderRoomLoc
                                	ldrb r0, [r0]
                                	cmp r0, #0x0
                                	beq Regular
                                	
                                SwapDefs:
                                	str r2, [sp, #0x14]		@store sp. def into def loc
                                	str r3, [sp, #0x18] 	@store def into sp. def loc
                                	b Return
                                	
                                Regular:
                                	str r3, [sp, #0x14]
                                	str r2, [sp, #0x18]
                                	b Return
                                	
                                Return:
                                	ldrh r3, [r6, #0x8]
                                	mov r8, r3
                                	ldr r0, =(0x0803ed80 +1)
                                	bx r0
                                	
                                
                                .align 2
                                .WonderRoomLoc:	.word 0x02XXXXXX	@wonder room turn counter RAM location


                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                                EDIT: And here's Lucky Chant: It just sets the critical marker to 1 (aka no critical hit) at the end of the crit calc routine if lucky chant is active on the user's side
                                Spoiler:

                                Code:
                                .text
                                .align 2
                                .thumb
                                .thumb_func
                                .global LuckyChant
                                /*
                                00 4C 20 47 (xx+1) xx xx 08 at 1e584
                                */
                                
                                
                                Main:
                                	strb r0, [r1]	@store crit marker
                                	
                                CheckLuckyChant:
                                	ldr r1, .LuckyChantLoc
                                	ldr r0, .TargetBank
                                	ldrb r0, [r0]
                                	cmp r0, #0x1
                                	beq EnemySide
                                	cmp r0, #0x3
                                	bne CheckCounter
                                	
                                EnemySide:
                                	add r1, #0x1	@2nd byte of lucky chant RAM is enemy counter
                                
                                CheckCounter:
                                	ldrb r0, [r1]
                                	cmp r0, #0x0
                                	beq Return		@no lucky chant, keep original crit marker val
                                	mov r0, #0x1
                                	ldr r1, .CritMarker
                                	strb r0, [r1]			@if lucky chant active, set crit marker to no critical hit
                                	
                                Return:
                                	ldr r1, .ScriptPointer
                                	ldr r0, [r1]
                                	add r0, #0x1
                                	ldr r4, =(0x0801e58c +1)
                                	bx r4
                                	
                                .align 2
                                .CritMarker:	.word 0x02023d71
                                .ScriptPointer:	.word 0x02023d74
                                .TargetBank:	.word 0x02023d6c
                                .LuckyChantLoc:	.word 0x02XXXXXX	@2 bytes of free RAM


                                Enjoy!
                                Reply With Quote
                                  #391    
                                Old October 3rd, 2017 (9:34 PM).
                                desvol's Avatar
                                desvol desvol is offline
                                   
                                  Join Date: Oct 2016
                                  Gender: Male
                                  Posts: 28
                                  Does anyone have Emerald version Water Shuriken animation?Currently making Emerald 802, Greninja Battle Blond already done, when kill one pokemon will become Ash-Greninja, only water shuriken lack of animation
                                  Reply With Quote
                                    #392    
                                  Old October 6th, 2017 (10:09 AM).
                                  pikachux2's Avatar
                                  pikachux2 pikachux2 is offline
                                  Never Evolve
                                     
                                    Join Date: Mar 2010
                                    Location: USA
                                    Gender: Male
                                    Nature: Jolly
                                    Posts: 107
                                    Hey, I'm trying to download Battle Script Pro from the GitHub page and it builds with errors in Microsoft Visual 2017, so I tried to get an older version, which it recommends, but I don't have a subscription; therefore I can't. In order to convert battle scripts to asm or whatever language, I need BSP correct? If I do, does some one have a exe that doesn't need to be compiled?
                                    Reply With Quote
                                      #393    
                                    Old December 12th, 2017 (8:50 AM). Edited February 17th, 2018 by Megax Rocker.
                                    Megax Rocker's Avatar
                                    Megax Rocker Megax Rocker is offline
                                       
                                      Join Date: Jan 2016
                                      Posts: 125
                                      Quote:
                                      Originally Posted by ghoulslash View Post
                                      Here are some effects and animations for Fire Red. I will convert animations to commands when I get the chance.

                                      Effects:
                                      Spoiler:
                                      Magma Storm/Infestation: see this post

                                      Venom Drench: linked with venoshock (effect 224 in MrDS's rombase)
                                      Spoiler:
                                      #dynamic 0x(offset)

                                      #org @start
                                      jumpifhalfword 0x0 0x2023D4A 0x1A6 0x905420 //venoshock
                                      attackcanceler
                                      attackstring
                                      ppreduce
                                      jumpifstatus 0x0 0x88 @venomdrench
                                      goto 0x81D7DF2

                                      #org @venomdrench
                                      jumpifstat 0x0 0x2 0x1 0x0 @loweratk
                                      jumpifstat 0x0 0x2 0x4 0x0 @loweratk
                                      jumpifstat 0x0 0x0 0x3 0x0 0x81D694E
                                      goto 0x81D694E

                                      #org @loweratk
                                      attackanimation
                                      waitanimation
                                      setbyte 0x2023FDF 0x0
                                      playstatchangeanimation 0x0 0x20 0x1
                                      setbyte 0x2023FDE 0x91
                                      statbuffchange 0x1 false @lowerspatk
                                      jumpifbyte 0x0 0x2023E87 0x2 @lowerspatk
                                      printfromtable 0x83FE588
                                      waitmessage 0x40

                                      #org @lowerspatk
                                      setbyte 0x2023FDE 0x94
                                      statbuffchange 0x1 false @lowerspeed
                                      jumpifbyte 0x0 0x2023E87 0x2 @lowerspeed
                                      printfromtable 0x83FE588
                                      waitmessage 0x40

                                      #org @lowerspeed
                                      setbyte 0x2023FDE 0x93
                                      statbuffchange 0x1 false 0x81D694E
                                      jumpifbyte 0x0 0x2023E87 0x2 0x81D694E
                                      printfromtable 0x83FE588
                                      waitmessage 0x40
                                      goto 0x81D694E


                                      Burn Up: linked with effect 125 for defrosting (flame wheel, flare blitz, etc)
                                      Spoiler:
                                      #dynamic 0x(offset)

                                      #org @start
                                      jumpifhalfword 0x0 0x2023D4A 0x(moveID) @burnuptypecheck
                                      setbyte 0x2023E85 0x3
                                      jumpifhalfword 0x0 0x2023D4A 0x1B2 0x8905527 //flare blitz
                                      goto 0x81D6900

                                      #org @burnuptypecheck
                                      attackcanceler
                                      accuracycheck 0x81D695E 0x0
                                      attackstring
                                      ppreduce
                                      jumpiftype 0x1 0xA @burnup
                                      jumpiftype2 0x1 0xA @burnup
                                      goto 0x81D7DF2

                                      #org @burnup
                                      calculatedamage
                                      attackanimation
                                      waitanimation
                                      missmessage
                                      cmd5c 0x0
                                      waitstate
                                      graphicalhpupdate 0x0
                                      datahpupdate 0x0
                                      critmessage
                                      waitmessage 0x0
                                      resultmessage
                                      waitmessage 0x0
                                      callasm 0x8(asm_offset+1) //change fire type to ???
                                      setword 0x203C020 0x8AAAAAA
                                      printstring 0x184
                                      waitmessage 0x40
                                      goto 0x81D6947

                                      At String 0xAAAAAA: FD 0F 00 D6 E9 E6 E2 D9 D8 00 DD E8 E7 D9 E0 DA 00 E3 E9 E8 AB FF says "<user> burned itself out!"

                                      ASM routine at 0x(asm_offset): (thanks to SphericalIce's roost effect for being used as a surrogate)
                                      Spoiler:
                                      Code:
                                      .text
                                      .align 2
                                      .thumb
                                      .thumb_func
                                      .global change_fire_type
                                      
                                      GetPkmnType1:
                                      push {r0-r5}
                                      ldr r1, .BattleData
                                      ldr r0, .PokeIndex
                                      ldrb r0, [r0]
                                      mov r2, #0x58
                                      mul r2, r0
                                      add r1, #0x21
                                      add r1, r2
                                      ldrb r0, [r1]
                                      ldrb r2, [r1, #0x1]
                                      mov r3, #0xA			@fire type = 0xA
                                      cmp r0, r3
                                      beq ChangeType1
                                      cmp r2, r3
                                      beq ChangeType2
                                      b End
                                      
                                      ChangeType1:
                                      mov r4, #0x9			@type = ????
                                      strb r4, [r1]
                                      cmp r2, r3
                                      beq ChangeType2
                                      b End
                                      
                                      ChangeType2:
                                      mov r4, #0x9			@type = ????
                                      strb r4, [r1, #0x1]
                                      b End
                                      
                                      End:
                                      pop {r0-r5}
                                      bx lr
                                      
                                      .align 2
                                      .BattleData:        .word 0x02023BE4
                                      .PokeIndex:        .word 0x02023D6B




                                      Toxic Thread: linked with poison gas effect (66)
                                      Spoiler:
                                      #dynamic 0x(offset)

                                      #org @start
                                      jumpifhalfword 0x0 0x2023D4A 0x8B 0x81D7181 //poisongas
                                      attackcanceler
                                      accuracycheck 0x81D695E 0x0
                                      attackstring
                                      ppreduce
                                      jumpifstat 0x0 0x0 0x3 0x0 @justpoison //if speed is minimal, just poison
                                      attackanimation
                                      waitanimation
                                      setbyte 0x2023FDF 0x0
                                      playstatchangeanimation 0x0 0x8 0x1
                                      setbyte 0x2023FDE 0x93
                                      statbuffchange 0x1 false @poison
                                      jumpifbyte 0x0 0x2023E87 0x2 @poison
                                      printfromtable 0x83FE588
                                      waitmessage 0x40
                                      goto @poison

                                      #org @justpoison
                                      attackanimation
                                      waitanimation
                                      goto @poison

                                      #org @poison
                                      jumpifability 0x0 0x11 0x81D6E4F
                                      jumpifsecondarystatus 0x0 0x1000000 @cantpoison
                                      jumpifstatus 0x0 0x8 @cantpoison
                                      jumpifstatus 0x0 0x80 @cantpoison
                                      jumpiftype 0x0 0x3 @cantpoison
                                      jumpiftype 0x0 0x8 @cantpoison
                                      jumpifstatus 0x0 0xFF @cantpoison
                                      jumpifhalverset 0x0 0x20 0x81D8B39
                                      setbyte 0x2023E85 0x2
                                      seteffecttarget
                                      resultmessage
                                      waitmessage 0x40
                                      goto 0x81D694E

                                      #org @cantpoison
                                      pause 0x20
                                      setword 0x203C020 0x8AAAAAA
                                      printstring 0x184
                                      waitmessage 0x40
                                      goto 0x81D694E

                                      String at 0xAAAAAA: FD 10 00 D7 D5 E2 E2 E3 E8 00 D6 D9 00 E4 E3 DD E7 E3 E2 D9 D8 AB FF says "<target> cannot be poisoned!" just to make it sound better than "it failed!" or "it doesn't affect <target>"


                                      Parting Shot: linked with Baton Pass/Volt Switch/U-Turn (effect 127)
                                      Spoiler:
                                      #dynamic 0x(offset)

                                      #org @start
                                      jumpifhalfword 0x0 0x2023D4A 0xE2 0x81D7995 //baton pass
                                      jumpifhalfword 0x0 0x2023D4A 0x(moveID) @partingshot
                                      attackcanceler
                                      accuracycheck 0x81D695E 0x0
                                      attackstring
                                      ppreduce
                                      call 0x8905656
                                      jumpifcannotswitch 0x81 0x81D694E
                                      goto 0x81D79A0

                                      #org @partingshot
                                      attackcanceler
                                      attackstring
                                      ppreduce
                                      attackanimation
                                      waitanimation
                                      jumpifstat 0x0 0x2 0x4 0x0 @spatk
                                      jumpifstat 0x0 0x0 0x1 0x0 @checkswitch
                                      goto @checkswitch

                                      #org @spatk
                                      setbyte 0x2023FDF 0x0
                                      playstatchangeanimation 0x0 0x12 0x1
                                      setbyte 0x2023FDE 0x94
                                      statbuffchange 0x1 false @atk
                                      jumpifbyte 0x0 0x2023E87 0x2 @atk
                                      printfromtable 0x83FE588
                                      waitmessage 0x40

                                      #org @atk
                                      setbyte 0x2023FDE 0x91
                                      statbuffchange 0x1 false @checkswitch
                                      jumpifbyte 0x0 0x2023E87 0x2 @checkswitch
                                      printfromtable 0x83FE588
                                      waitmessage 0x40
                                      goto @checkswitch

                                      #org @checkswitch
                                      jumpifcannotswitch 0x81 0x81D694E
                                      goto 0x81D79A0


                                      Aurora Veil: linked with Light Screen (effect 35). Note this doesn't take battle with allies into account as it does in game
                                      Spoiler:
                                      #dynamic 0x(offset)

                                      #org @start
                                      jumpifhalfword 0x0 0x2023D4A 0x(moveID) @auroraveil
                                      attackcanceler
                                      attackstring
                                      ppreduce
                                      setlightscreen
                                      goto 0x81D7172

                                      #org @auroraveil
                                      attackcanceler
                                      attackstring
                                      ppreduce
                                      jumpifhalfword 0x0 0x02023F1C 0x80 @succeed
                                      goto 0x81D7DF2

                                      #org @succeed
                                      setlightscreen
                                      setreflect
                                      attackanimation
                                      waitanimation
                                      setword 0x203C020 0x8AAAAAA
                                      printstring 0x184
                                      waitmessage 0x40
                                      goto 0x81D694E

                                      String at 0xAAAAAA: BB E9 E6 E3 E6 D5 00 D0 D9 DD E0 00 E4 E6 E3 E8 D9 D7 E8 D9 D8 00 D5 DB D5 DD E2 E7 E8 00 E4 DC ED E7 DD D7 D5 E0 FE D5 E2 D8 00 E7 E4 D9 D7 DD D5 E0 00 E1 E3 EA D9 E7 AB FF


                                      Updated Fell Stinger (raises attack 3 stages if enemy faints). Linked with metal claw effect (139)
                                      Spoiler:

                                      #dynamic 0x(offset)
                                      #freespacebyte 0xFF

                                      #org @start
                                      jumpifhalfword 0x0 0x2023D4A 0x(moveID) @fellstinger
                                      setbyte 0x2023E85 0x4F
                                      goto 0x81D6900

                                      #org @fellstinger
                                      attackcanceler
                                      accuracycheck 0x81D695E 0x0
                                      attackstring
                                      ppreduce
                                      calculatedamage
                                      attackanimation
                                      waitanimation
                                      missmessage
                                      cmd5c 0x0
                                      waitstate
                                      graphicalhpupdate 0x0
                                      datahpupdate 0x0
                                      critmessage
                                      waitmessage 0x40
                                      resultmessage
                                      waitmessage 0x40
                                      jumpiffainted 0x0 @fainted
                                      goto 0x81D6947

                                      #org @fainted
                                      setbyte 0x2023FDF 0x0
                                      playstatchangeanimation 0x1 0x2 0x0
                                      setbyte 0x2023FDE 0x31
                                      statbuffchange 0x1 true 0x81D6947
                                      jumpifbyte 0x0 0x2023E87 0x2 0x81D6947
                                      setword 0x203C020 0x8(string_offset)
                                      printstring 0x184
                                      goto 0x81D6947

                                      Hex at (string_offset): FD 0F B4 E7 00 D5 E8 E8 D5 D7 DF 00 D8 E6 D5 E7 E8 DD D7 D5 E0 E0 ED 00 E6 E3 E7 D9 AB FF which says "<user>'s attack drastically rose!"

                                      This method skips the stat change animation but still does the appropriate stat checks, etc.

                                      Sparkling Aria:
                                      Spoiler:

                                      Requires KDS' cureprimarystatus command, found here
                                      Code:
                                      #dynamic 0xoffset
                                      #freespacebyte 0xFF
                                      
                                      #org @checkstatus
                                      jumpifsecondarystatus 0x0 0x1000000 0x81D6926
                                      jumpifstatus 0x0 0x10 @sparklingaria
                                      goto 0x81D6926
                                      
                                      #org @sparklingaria
                                      attackcanceler
                                      accuracycheck 0x81D695E 0x0
                                      attackstring
                                      ppreduce
                                      calculatedamage
                                      attackanimation
                                      waitanimation
                                      missmessage
                                      cmd5c 0x0
                                      waitstate
                                      graphicalhpupdate 0x0
                                      datahpupdate 0x0
                                      critmessage
                                      waitmessage 0x40
                                      resultmessage
                                      waitmessage 0x40
                                      jumpifbyte 0x4 0x02023DCC 0x8 0x81D694E
                                      faintpokemon 0x0 0x0 0x0
                                      jumpiffainted 0x0 0x81D694E
                                      cureprimarystatus 0x0 0x81D694E
                                      setword 0x203C020 0x08XXXXXX
                                      printstring 0x184
                                      waitmessage 0x40
                                      cmd98 0x0
                                      goto 0x81D694E
                                      At 0x08XXXXXX ->
                                      Code:
                                      FD 10 00 EB D5 E7 00 DC D9 D5 E0 D9 D8 00 E3 DA 00 D6 E9 E6 E2 AB FF 00


                                      Spirit Shackle:
                                      Spoiler:

                                      Combine with Mean Look Effect (111)
                                      Code:
                                      #dynamic 0x(offset)
                                      #freespacebyte 0xFF
                                      
                                      #org @start
                                      attackcanceler
                                      attackstring
                                      ppreduce
                                      jumpifhalfword 0x0 0x2023D4A 0x(moveID) @soulshackle
                                      accuracycheck 0x81D7DF2 0xFFFE
                                      jumpifsecondarystatus 0x0 0x4000000 0x81D7DF2
                                      jumpifsecondarystatus 0x0 0x1000000 0x81D7DF2
                                      attackanimation
                                      waitanimation
                                      setbyte 0x2023E85 0x20
                                      seteffecttarget
                                      printstring 0x8F
                                      waitmessage 0x40
                                      goto 0x81D694E
                                      
                                      #org @soulshackle
                                      accuracycheck 0x81D695E 0x0
                                      calculatedamage
                                      attackanimation
                                      waitanimation
                                      missmessage
                                      cmd5c 0x0
                                      waitstate
                                      datahpupdate 0x0
                                      graphicalhpupdate 0x0
                                      critmessage
                                      waitmessage 0x40
                                      resultmessage
                                      jumpifbyte 0x0 0x2023E85 0x20 0x81D694E
                                      setbyte 0x2023E85 0x20
                                      seteffecttarget
                                      printstring 0x8F
                                      waitmessage 0x40
                                      goto 0x81D694E
                                      
                                      #org 0x1D7DF2
                                      pause 0x20
                                      orbyte 0x2023DCC 0x20
                                      resultmessage
                                      waitmessage 0x40
                                      goto 0x81D694E




                                      Animations:
                                      Spoiler:


                                      Light of Ruin
                                      Spoiler:
                                      00 01 28 00 2F 27 03 51 FC 0D 08 05 00 04 08 03 F9 A7 0B 08 0A 05 81 07 08 00 00 00 0C 00 FF 7F 04 0E 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 03 F9 A7 0B 08 0A 05 81 07 03 00 0C 00 00 00 FF 7F 05 20 05 00 A3 27 04 0A 19 D0 00 C0 03 1D 8B 09 08 02 05 00 00 01 00 00 00 04 00 01 00 05 04 1E 1F 39 CF 0D 08 07 F0 00 C0 FF 3F 00 01 00 0F 00 00 00 05 00 03 F9 89 09 08 02 05 00 00 00 00 04 00 32 00 01 00 03 6D 9F 0B 08 02 07 A3 27 01 00 0C 00 1F 00 10 00 00 00 00 00 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 1D 8B 09 08 02 05 01 00 04 00 00 00 32 00 01 00 03 F9 A7 0B 08 0A 05 04 00 02 00 00 00 0B 00 39 67 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 F9 A7 0B 08 0A 05 04 00 02 00 0B 00 00 00 39 67 05 08


                                      Toxic Thread
                                      Spoiler:
                                      00 C3 27 00 C4 27 0A 03 04 00 02 24 7B 3E 08 05 05 01 00 02 00 00 00 09 00 00 00 05 28 01 1C 7A 00 C0 09 06 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 00 A7 27 00 A6 27 0E 4B F1 1C 08 05 19 7B 00 3F 02 A8 72 3E 08 82 02 00 00 0A 00 04 04 02 A8 72 3E 08 82 02 00 00 FE FF 04 04 02 A8 72 3E 08 82 02 00 00 16 00 05 0B 03 04 01 05 02 24 7B 3E 08 05 05 01 00 02 00 09 00 00 00 00 00 08


                                      Accelerock
                                      Spoiler:
                                      00 4A 27 00 97 27 0A 02 0C 0C 08 03 7D 90 09 08 02 05 00 00 18 00 06 00 01 00 05 00 03 99 AB 0B 08 02 04 00 00 04 00 07 00 03 00 19 88 00 C0 04 04 03 F9 89 09 08 02 05 01 00 05 00 00 00 06 00 01 00 02 08 7C 3E 08 84 04 00 00 00 00 01 00 01 00 19 74 00 3F 02 54 4E 3D 08 02 05 01 00 03 00 00 00 05 00 01 00 02 CC 73 3E 08 82 06 05 00 00 00 EC FF 18 00 0E 00 01 00 02 CC 73 3E 08 82 06 00 00 05 00 14 00 E8 FF 0E 00 02 00 02 CC 73 3E 08 82 06 FB FF 00 00 EC FF E8 FF 0E 00 02 00 05 0B 02 0D 05 08


                                      Psychic Fangs
                                      Spoiler:
                                      0E BB 59 1D 08 00 9B 27 00 97 27 0A 01 0C 0C 08 19 9A 00 3F 02 30 79 3E 08 02 06 00 00 E0 FF 00 00 00 00 33 03 0A 00 02 30 79 3E 08 02 06 00 00 20 00 04 00 00 00 CD FC 0A 00 04 0A 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 05 05 01 00 00 00 04 00 07 00 01 00 05 0B 01 0D 04 01 0A 03 0C 0C 08 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 00 00 19 A3 00 3F 05 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 02 00 19 B9 00 C0 05 0D 0B 03 0E C7 59 1D 08 08


                                      Sludge Wave
                                      Spoiler:
                                      14 24 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 03 8D B3 0A 08 02 01 01 00 04 18 1B 9C 00 C0 3F 02 00 05 00 A7 27 00 A6 27 0E 4B F1 1C 08 0E C7 59 1D 08 08


                                      Dragon Hammer:
                                      Spoiler:
                                      14 10 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 05 28 0A 01 0C 0C 08 19 91 00 C0 02 00 69 3E 08 02 06 02 00 00 00 04 00 02 00 08 00 1F 00 05 01 05 28 00 06 28 02 54 4E 3D 08 02 02 06 00 04 00 04 04 19 BA 00 3F 02 48 69 3E 08 82 02 0A 00 F6 FF 05 01 06 28 03 B5 94 0B 08 05 03 05 00 0A 00 32 00 03 B5 94 0B 08 05 03 04 00 0A 00 32 00 19 E3 00 00 04 0A 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 04 10 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 05 00 97 27 03 1D 8B 09 08 02 05 01 00 03 00 00 00 0A 00 01 00 02 B0 7C 3E 08 83 05 F6 FF F8 FF 01 00 01 00 08 00 19 74 00 3F 04 08 02 B0 7C 3E 08 83 05 0A 00 08 00 01 00 01 00 08 00 19 86 00 3F 05 0B 01 0D 0E C7 59 1D 08 08


                                      Ice Hammer
                                      Spoiler:
                                      14 0F 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 9F 27 00 97 27 0A 03 28 01 0C 0C 08 19 80 00 3F 02 E0 66 3E 08 02 08 F0 FF 00 00 00 00 00 00 0A 00 01 00 03 00 00 00 05 19 84 00 3F 02 08 7C 3E 08 03 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 05 05 01 00 04 00 00 00 06 00 01 00 05 0B 03 0D 05 03 B5 94 0B 08 05 03 05 00 0A 00 32 00 03 B5 94 0B 08 05 03 04 00 0A 00 32 00 19 E3 00 00 04 0A 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 04 10 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 05 0E C7 59 1D 08 08


                                      Precipice Blades
                                      Spoiler:
                                      14 15 16 03 01 98 0B 08 05 03 01 00 05 00 FF FF 00 97 27 00 5A 27 00 4A 27 0A 03 28 01 0C 0C 08 03 D1 4B 0B 08 02 00 05 03 D5 9B 09 08 04 04 00 00 00 00 01 00 02 00 19 86 00 3F 05 0B 03 0D 00 2E 28 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 00 9F 27 00 2D 28 0A 03 04 28 19 81 00 3F 02 3C 7B 3E 08 02 07 1F 00 03 00 01 00 FF 7F 0A 00 00 00 0A 00 02 80 7C 3E 08 03 04 00 00 00 00 01 00 14 00 03 F9 89 09 08 05 05 01 00 07 00 00 00 09 00 01 00 05 0B 03 0D 0E C7 59 1D 08 08


                                      Liquidation
                                      Spoiler:
                                      00 A4 27 00 AB 27 00 9D 27 00 97 27 0A 01 0C 0C 08 02 54 4E 3D 08 02 02 04 00 04 00 04 06 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 06 00 01 00 19 84 00 3F 05 0E A2 8C 1C 08 05 0B 03 0D 08


                                      Darkest Lariat
                                      Spoiler:
                                      14 00 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 97 27 0A 03 0C 0C 08 19 80 00 C0 1D 84 00 3F 0A 1D 80 00 C0 14 1D 84 00 3F 1E 1D 80 00 C0 28 1D 84 00 3F 32 1D 80 00 C0 3C 1D 84 00 3F 46 1D 80 00 C0 50 1D 84 00 3F 5A 03 85 8F 09 08 02 05 00 00 EE FF 06 00 06 00 04 00 03 85 8F 09 08 02 05 01 00 12 00 06 00 06 00 04 00 0E 0B 03 1D 08 0E 0B 03 1D 08 0E 0B 03 1D 08 05 0B 03 0D 0E C7 59 1D 08 08


                                      Sparkling Aria
                                      Spoiler:
                                      00 E4 27 00 E5 27 00 A2 27 00 AB 27 00 83 27 19 85 00 C0 03 F9 A7 0B 08 0A 05 81 07 02 00 00 00 04 00 00 00 05 0A 00 0C 0C 08 19 85 00 C0 02 DD DD DD 08 02 01 00 00 04 19 04 14 04 0F 04 0A 04 06 0B 00 0D 05 0A 01 28 01 0C 0C 08 04 01 0E 4D 9D 1C 08 03 05 97 09 08 05 05 00 00 03 00 00 0C 08 00 01 00 0E 4D 9D 1C 08 0E 4D 9D 1C 08 03 C1 AB 0A 08 02 03 00 00 03 00 78 00 03 C1 AB 0A 08 02 03 00 00 03 00 78 00 04 78 04 1E 05 03 F9 A7 0B 08 0A 05 81 07 02 00 04 00 00 00 00 00 05 0B 01 0D 08

                                      At 02 DD DD DD 08: E4 27 A2 27 60 CB 3A 08 F0 1C 23 08 00 00 00 00 C8 61 3E 08 1D E7 0A 08


                                      Zing Zap
                                      Spoiler:
                                      00 E3 27 00 E4 27 00 11 27 00 35 27 0A 00 0C 0C 08 05 00 04 0C 05 03 A1 EF 0A 08 05 00 19 D6 00 3F 05 03 F9 89 09 08 02 05 01 00 00 00 06 00 12 00 01 00 03 F9 A7 0B 08 05 05 01 00 03 00 10 00 00 00 FF 7F 03 F9 A7 0B 08 05 05 04 00 00 00 10 00 10 00 00 00 04 04 03 F9 A7 0B 08 05 05 04 00 00 00 00 00 00 00 00 00 05 0B 00 0D 05 00 97 27 00 1B 27 03 B5 94 0B 08 05 03 01 00 05 00 0E 00 0B 00 0D 0E D4 58 1D 08 08


                                      Oblivion Wing:
                                      Spoiler:
                                      14 00 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 A3 27 04 0A 19 D0 00 C0 03 1D 8B 09 08 02 05 00 00 01 00 00 00 04 00 01 00 05 04 1E 1F 39 CF 0D 08 07 F0 00 C0 FF 3F 00 01 00 0F 00 00 00 05 00 03 F9 89 09 08 02 05 00 00 00 00 04 00 32 00 01 00 03 6D 9F 0B 08 02 07 A3 27 01 00 0C 00 1F 00 10 00 00 00 00 00 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 1D 8B 09 08 02 05 01 00 04 00 00 00 32 00 01 00 03 F9 A7 0B 08 0A 05 04 00 02 00 00 00 0B 00 39 67 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 F9 A7 0B 08 0A 05 04 00 02 00 0B 00 00 00 39 67 05 05 00 A3 27 00 2F 27 19 C5 00 3F 03 F9 89 09 08 02 05 01 00 05 00 00 00 0F 00 01 00 03 B1 98 09 08 05 05 FA FF FA FF 0F 00 01 00 01 00 05 0C 0C 08 03 F9 89 09 08 02 05 01 00 00 00 02 00 19 00 01 00 0E 89 0A 1D 08 05 04 0F 0E C9 56 1D 08 05 0B 03 0D 04 01 0E C7 59 1D 08 08


                                      Fire Lash:
                                      Spoiler:
                                      00 2D 27 0A 03 2A 01 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 00 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 04 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 08 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 0C 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 10 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 14 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 18 00 19 89 00 C0 05 02 9C 4E 3D 08 02 05 00 00 18 00 00 00 00 00 06 00 04 04 03 F9 89 09 08 02 05 01 00 05 00 00 00 08 00 01 00 03 6D 61 07 08 03 05 01 00 1F 00 0C 00 01 00 01 00 19 8A 00 3F 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 0E 50 09 1D 08 04 07 02 84 4E 3D 08 02 03 00 00 00 00 09 00 05 0B 03 08 02 FC 5D 3E 08 03 03 00 00 00 00 32 00 04 04 0F 08


                                      Gyro Ball:
                                      Spoiler:
                                      14 08 17 03 2D B8 0B 08 05 04 00 09 00 04 00 00 FF FF 00 D2 27 00 D3 27 00 32 28 1C 71 00 C0 1C 02 03 ED 86 0B 08 05 03 01 00 00 00 00 00 05 0C 00 10 00 20 00 03 49 60 07 08 03 05 00 00 10 00 10 00 00 00 01 00 19 B6 00 C0 1F 39 CF 0D 08 07 C1 00 C0 FF 3F 00 03 00 04 00 00 00 0F 00 04 0F 1F 39 CF 0D 08 07 A1 00 C0 FF 3F 00 05 00 05 00 00 00 05 00 02 10 52 91 08 82 03 10 00 10 00 08 00 04 14 03 C1 5F 0A 08 02 00 05 0E C7 59 1D 08 08


                                      Spirit Shackle:
                                      Spoiler:
                                      02 24 7B 3E 08 05 05 01 00 02 00 00 00 09 00 00 00 05 00 13 27 00 9A 27 00 97 27 04 00 0A 03 0C 0C 08 04 00 03 F1 76 0A 08 02 05 20 00 E8 FF 00 06 02 00 80 00 00 20 27 00 21 27 19 80 00 C0 02 30 EE 3F 08 02 00 04 02 19 98 00 3F 02 18 EE 3F 08 84 05 00 00 F4 FF 68 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 F4 FF 48 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 FA FF 38 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 FA FF 58 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 00 00 38 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 00 00 58 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 06 00 48 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 06 00 68 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 0C 00 48 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 0C 00 38 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 12 00 50 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 12 00 48 00 01 00 4B 00 0E BA 9A 1C 08 02 24 7B 3E 08 05 05 01 00 02 00 09 00 00 00 00 00 05 0D 0B 03 04 00 08


                                      Shadow Bone:
                                      Spoiler:
                                      14 02 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 10 27 00 97 27 0A 03 28 01 0C 0C 08 19 B4 00 3F 02 40 7A 3E 08 02 05 D6 FF E7 FF 00 00 00 00 0F 00 04 0C 02 08 7C 3E 08 02 04 00 00 00 00 01 00 01 00 03 F9 89 09 08 05 05 01 00 00 00 05 00 05 00 01 00 02 3C 7B 3E 08 02 07 07 00 05 00 01 00 00 00 0A 00 00 00 00 00 19 74 00 3F 05 0A 03 03 AD 58 0B 08 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 28 00 01 00 19 72 00 3F 05 0B 03 15 17 08 03 6D 61 07 08 02 05 00 00 FF 7F 0A 00 02 00 01 00 03 F9 89 09 08 02 05 00 00 03 00 00 00 20 00 01 00 19 72 00 3F 05 0B 03 0D 05 15 17 08


                                      Topsy-Turvy
                                      Spoiler:
                                      14 00 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 D4 27 0A 02 03 E5 9C 0B 08 02 06 01 00 02 00 06 00 01 00 0B 00 00 00 0C 0C 08 1C C1 00 C0 05 0A 02 F8 6D 3E 08 02 04 00 00 00 00 00 00 00 00 03 05 97 09 08 05 05 00 00 05 00 00 0A 08 00 00 00 04 7F 04 04 19 B6 00 C0 03 B1 98 09 08 05 05 FB FF FB FF 0A 00 00 00 01 00 03 F9 A7 0B 08 09 05 02 00 02 00 0A 00 00 00 FF 03 04 1E 0B 01 0D 05 04 01 0A 03 0C 0C 08 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 00 00 19 A3 00 3F 05 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 02 00 19 B9 00 C0 05 0D 0B 03 0E C7 59 1D 08 08


                                      Bolt Strike:
                                      Spoiler:
                                      00 E3 27 00 E4 27 00 11 27 00 35 27 00 11 27 00 97 27 0A 00 0C 0C 08 19 CE 00 C0 02 D4 61 3E 08 02 01 00 00 04 19 19 CE 00 C0 04 14 19 CE 00 C0 04 0F 19 CE 00 C0 04 0A 04 06 1C CE 00 C0 06 05 05 0A 01 0C 0C 08 02 54 4E 3D 08 02 02 04 00 04 00 04 06 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 06 00 01 00 19 84 00 3F 05 0B 01 0D 00 E3 27 0A 00 0C 0C 08 05 00 04 0C 05 03 A1 EF 0A 08 05 00 19 D6 00 3F 05 03 F9 89 09 08 02 05 01 00 00 00 06 00 12 00 01 00 03 F9 A7 0B 08 05 05 01 00 03 00 10 00 00 00 FF 7F 03 F9 A7 0B 08 05 05 04 00 00 00 10 00 10 00 00 00 04 04 03 F9 A7 0B 08 05 05 04 00 00 00 00 00 00 00 00 00 05 0B 00 0D 08


                                      Dragon Rush
                                      Spoiler:
                                      14 1B 17 03 2D B8 0B 08 05 04 00 0A 00 00 00 00 FF FF 00 A6 27 00 2D 27 00 37 27 00 97 27 19 8F 00 C0 03 F9 A7 0B 08 0A 05 02 00 04 00 00 00 08 00 7F 02 03 F9 89 09 08 05 05 00 00 00 00 02 00 0F 00 01 00 02 XX XX XX 08 02 07 00 00 1C 00 10 02 1E 00 0D 00 32 00 00 00 04 02 02 XX XX XX 08 02 07 00 00 20 00 E0 01 14 00 10 00 D2 FF 00 00 04 02 02 XX XX XX 08 02 07 00 00 21 00 40 02 14 00 08 00 2A 00 00 00 04 02 02 XX XX XX 08 02 07 00 00 1F 00 90 01 19 00 0B 00 D6 FF 00 00 04 02 02 XX XX XX 08 02 07 00 00 1C 00 00 02 19 00 10 00 2E 00 00 00 04 02 02 XX XX XX 08 02 07 00 00 21 00 D0 01 1E 00 0F 00 CE FF 00 00 04 02 02 XX XX XX 08 02 07 00 00 1C 00 10 02 1E 00 0D 00 32 00 00 00 04 02 03 9D 94 09 08 05 07 00 00 E8 FF 08 00 17 00 0A 00 28 00 0A 00 04 23 02 3C 7B 3E 08 02 07 1F 00 03 00 01 00 00 00 0A 00 00 00 00 00 02 YY YY YY 08 04 04 F6 FF 00 00 01 00 00 00 1C 86 00 3F 0A 02 04 01 02 9C 4E 3D 08 02 05 01 00 F0 FF 00 00 00 00 03 00 05 03 D1 8C 09 08 02 05 01 00 04 00 00 00 0C 00 01 00 05 04 0A 02 84 4E 3D 08 02 03 00 00 00 00 06 00 04 05 02 84 4E 3D 08 02 03 01 00 00 00 07 00 05 0B 03 0D 0E C7 59 1D 08 08

                                      At 02 XX XX XX 08: B3 27 A6 27 18 CA 3A 08 F0 1C 23 08 00 00 00 00 FC 1C 23 08 F5 5D 07 08
                                      At 02 YY YY YY 08: 97 27 A6 27 58 CB 3A 08 F0 1C 23 08 00 00 00 00 F8 7B 3E 08 61 A5 0B 08


                                      Electro Ball:
                                      Spoiler:
                                      00 1B 27 00 E4 27 0A 00 0C 0C 08 19 CE 00 C0 02 D4 61 3E 08 02 01 00 00 04 19 19 CE 00 C0 04 14 19 CE 00 C0 04 0F 19 CE 00 C0 04 0A 04 06 1C CE 00 C0 06 05 05 00 32 28 00 02 XX XX XX 08 82 03 10 00 10 00 08 00 05 19 98 00 3F 03 1D 8B 09 08 02 05 01 00 04 00 00 00 08 00 01 00 0E D4 58 1D 08 05 0B 00 0D 08 08

                                      At 02 XX XX XX 08: 32 28 E4 27 38 CA 3A 08 F0 1C 23 08 00 00 00 00 04 76 3E 08 3D 56 0B 08


                                      Fell Stinger:
                                      Spoiler:
                                      02 24 7B 3E 08 05 05 01 00 02 00 00 00 09 00 00 00 05 00 35 27 00 97 27 00 24 27 24 0A A5 1C 08 17 0C 0C 08 02 50 35 3E 08 02 01 00 00 19 9B 00 C0 05 04 02 02 50 35 3E 08 02 01 01 00 02 BC 37 3E 08 84 03 00 00 00 00 0C 00 05 09 14 00 03 D1 8C 09 08 02 05 00 00 02 00 00 00 28 00 01 00 03 D1 8C 09 08 02 05 01 00 0A 00 00 00 28 00 01 00 02 98 7C 3E 08 83 04 00 00 00 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 00 00 02 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 FC FF 03 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 F8 FF FB FF 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 04 00 F4 FF 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 10 00 00 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 05 00 12 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 EF FF 0C 00 01 00 02 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 EB FF F1 FF 01 00 02 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 08 00 E5 FF 01 00 02 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 20 00 00 00 01 00 02 00 19 9F 00 3F 04 04 02 50 35 3E 08 02 01 02 00 00 57 27 03 B1 7F 0A 08 05 00 1C A3 00 3F 0F 04 05 04 01 0B 01 0D 05 02 24 7B 3E 08 05 05 01 00 02 00 09 00 00 00 00 00 08


                                      Metal Burst:
                                      Spoiler:
                                      00 97 27 00 A8 27 00 32 28 00 41 27 0E AA AA AA 08 05 0E BB BB BB 08 0A 01 0C 0C 08 03 51 08 0E 08 02 01 00 00 1C 9B 00 C0 08 02 05 02 50 7C 3E 08 83 02 01 00 03 00 03 D5 9B 09 08 02 05 00 00 01 00 1E 00 01 00 00 00 19 86 00 3F 05 0B 01 0D 08

                                      At 0E AA AA AA 08: (189 bytes)
                                      02 AB AB AB 08 02 06 F1 FF 00 00 00 00 00 00 20 00 3C 00 04 08 02 AB AB AB 08 02 06 0C 00 FB FF 00 00 00 00 20 00 3C 00 04 08 0F

                                      At 02 AB AB AB 08: 41 27 32 28 D8 C9 3A 08 F0 33 3E 08 00 00 00 00 FC 1C 23 08 0D 4D 0A 08

                                      At 0E BB BB BB 08: (148 bytes)
                                      04 03 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 FB 00 00 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 00 00 05 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 00 00 FB 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 05 00 03 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 FB 00 03 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 05 00 FD 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 FB 00 FD 03 00 0F

                                      At 02 BC BC BC 08: A8 27 A8 27 D0 C9 3A 08 F0 1C 23 08 00 00 00 00 FC 1C 23 08 5D 72 0B 08


                                      Foul Play:
                                      Spoiler:
                                      00 A6 27 00 DB 27 00 97 27 0A 01 0C 0C 08 02 54 4E 3D 08 02 02 04 00 04 00 04 06 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 06 00 01 00 19 84 00 3F 19 5F 00 C0 02 24 7B 3E 08 02 05 1F 00 03 00 0A 00 00 00 00 00 02 AB AB AB 08 03 04 00 00 00 00 00 01 00 00 04 08 19 5F 00 C0 02 24 7B 3E 08 02 05 1F 00 03 00 0A 00 00 00 00 00 02 AB AB AB 08 03 04 00 00 00 00 00 01 00 00 05 0B 01 0D 08

                                      At 02 AB AB AB 08: DB 27 A6 27 A0 CA 3A 08 F0 1C 23 08 00 00 00 00 88 40 3E 08 9D 5D 07 08


                                      Wring Out:
                                      Spoiler:
                                      00 3E 28 0A 03 0C 0C 08 19 80 00 C0 1D 84 00 3F 0A 1D 80 00 C0 14 1D 84 00 3F 1E 1D 80 00 C0 28 1D 84 00 3F 32 1D 80 00 C0 3C 1D 84 00 3F 46 1D 80 00 C0 50 1D 84 00 3F 5A 03 85 8F 09 08 02 05 00 00 EE FF 06 00 06 00 04 00 03 85 8F 09 08 02 05 01 00 12 00 06 00 06 00 04 00 0E AB AB AB 08 0E AB AB AB 08 0E AB AB AB 08 05 0B 03 0D 08

                                      At 0E AB AB AB 08: (52 bytes)
                                      02 BC BC BC 08 03 04 00 00 F4 FF 01 00 01 00 04 08 02 BC BC BC 08 03 04 F4 FF 08 00 01 00 01 00 04 08 02 BC BC BC 08 03 04 0C 00 00 00 01 00 01 00 04 08 0F

                                      At 02 BC BC BC 08: 3E 28 3E 28 58 CB 3A 08 F0 1C 23 08 00 00 00 00 F8 7B 3E 08 61 A5 0B 08


                                      Guard Swap:
                                      Spoiler:

                                      00 0B 28 03 35 38 0B 08 03 01 01 00 03 6D 61 07 08 05 05 01 00 B0 55 0C 00 03 00 01 00 1C D2 00 C0 18 03 04 7C 1C 5F 00 C0 1C 02 03 ED 86 0B 08 05 03 00 00 00 00 00 00 02 3C 7B 3E 08 02 07 01 00 08 00 02 00 FF FF 0E 00 FF FF 00 00 05 1C D2 00 C0 18 03 04 10 03 35 38 0B 08 03 01 00 00 03 6D 61 07 08 05 05 00 00 B0 55 0C 00 03 00 01 00 05 08


                                      Power Swap:
                                      Spoiler:
                                      00 C0 27 00 0B 28 03 35 38 0B 08 03 01 01 00 03 6D 61 07 08 05 05 01 00 B0 55 0C 00 03 00 01 00 1C D2 00 C0 18 03 04 7C 00 15 27 0A 00 0C 0C 08 19 B8 00 C0 03 7D 90 09 08 02 05 00 00 10 00 06 00 01 00 04 00 02 AB AB AB 08 02 02 00 00 00 00 04 16 03 6D 9F 0B 08 02 07 15 27 02 00 02 00 F2 7F 10 00 00 00 00 00 05 0B 00 0D 04 01 05 1C D2 00 C0 18 03 04 10 03 35 38 0B 08 03 01 00 00 03 6D 61 07 08 05 05 00 00 B0 55 0C 00 03 00 01 00 05 08

                                      At 02 AB AB AB 08: 15 27 C0 27 A0 CB 3A 08 F0 1C 23 08 00 00 00 00 F4 3B 3E 08 7D 72 0A 08


                                      Smart Strike:
                                      Spoiler:
                                      00 34 28 00 13 27 00 97 27 00 32 28 00 1E 27 02 18 35 3E 08 28 00 02 30 35 3E 08 28 01 01 00 02 30 35 3E 08 28 01 02 00 02 30 35 3E 08 28 01 03 00 02 30 35 3E 08 28 01 04 00 04 78 10 07 FF FF 05 0A 03 28 01 0C 0C 08 0E 12 7F 1C 08 03 F9 89 09 08 02 05 01 00 03 00 00 00 0A 00 01 00 00 32 28 02 50 44 91 08 84 05 00 00 00 00 08 00 01 00 00 00 19 74 00 3F 02 F0 42 91 08 82 05 01 00 01 00 00 00 E8 FF 0A 00 02 F0 42 91 08 82 05 01 00 01 00 11 00 EF FF 0A 00 02 F0 42 91 08 82 05 01 00 01 00 18 00 00 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 11 00 11 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 00 00 18 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 EF FF 11 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 E8 FF 00 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 EF FF EF FF 0A 00 05 0B 03 0D 05 0B 00 0D 05 08 FF FF FF FF FF FF FF FF 00 0D 05 0B 03 0D 08


                                      Aurora Veil:
                                      Spoiler:
                                      14 14 16 03 2D B8 0B 08 05 04 00 04 00 00 00 00 FF FF 04 20 00 04 28 0A 02 0C 08 08 19 DA 00 C0 02 DC 44 3E 08 02 00 04 04 02 DC 44 3E 08 02 00 04 04 02 DC 44 3E 08 02 00 05 19 5F 00 C0 03 DD 9B 0B 08 02 06 0A 00 00 00 02 00 00 00 0A 00 FF 7F 05 0E C7 59 1D 08 05 0B 02 0D 08

                                      For some reason Electro ball, Gyro Ball and some other animations do not work.

                                      I remember Electro ball working but I don't know it doesn't now...


                                      Edit:

                                      I got the hang of move animations and I managed to create a working Water Shuriken animation for FR:

                                      Spoiler:

                                      00 2D 28 00 20 28 00 97 27 00 2E 28 0A 03 28 01 0C 0C 08 19 75 00 C0 02 XX XX XX 08 02 00 04 14 19 81 00 3F 02 YY YY YY 08 02 04 00 00 00 00 01 00 01 00 03 F9 89 09 08 05 05 01 00 05 00 00 00 05 00 01 00 04 11 19 77 00 C0 02 54 4E 3D 08 02 02 06 00 FC FF 05 0B 03 0D 08

                                      At XX XX XX :
                                      2D 28 20 28 38 CA 3A 08 F0 1C 23 08 00 00 00 00 20 7A 3E 08 6D 8B 0B 08

                                      At YY YY YY:
                                      2D 28 2E 28 58 CB 3A 08 F0 1C 23 08 00 00 00 00 F8 7B 3E 08 61 A5 0B 08


                                      As well as an updated version of Aqua Tail:
                                      Spoiler:

                                      00 A4 27 00 AB 27 00 9D 27 0A 03 0C 0C 08 03 F9 89 09 08 05 05 00 00 00 00 02 00 17 00 01 00 04 05 19 87 00 C0 02 B0 5A 3E 08 02 04 0A 00 0A 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 F1 FF 00 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 14 00 0A 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 00 00 F6 FF 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 F6 FF 0F 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 19 00 14 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 EC FF 14 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 0C 00 00 00 19 00 00 00 05 00 25 28 00 2E 28 00 97 27 02 54 4E 3D 08 02 02 04 00 06 00 04 04 19 73 00 3F 02 YY YY YY 08 82 02 F0 FF F0 FF 04 08 02 3C 7B 3E 08 02 07 1F 00 05 00 01 00 FF 7F 0A 00 00 00 00 00 02 08 7C 3E 08 83 04 00 00 00 00 01 00 02 00 19 84 00 3F 02 9C 4E 3D 08 02 05 01 00 F4 FF 0A 00 00 00 03 00 02 84 4E 3D 08 02 03 00 00 00 00 05 00 04 03 03 D1 8C 09 08 02 05 01 00 00 00 03 00 06 00 01 00 04 05 02 84 4E 3D 08 02 03 01 00 00 00 06 00 04 0A 05 0B 03 0D 08

                                      at YY YY YY 08: 25 28 2E 28 40 CA 3A 08 28 F7 3F 08 00 00 00 00 5C F7 3F 08 35 43 0E 08
                                      Reply With Quote
                                        #394    
                                      Old February 4th, 2018 (5:30 PM). Edited February 9th, 2018 by Skeli-.
                                      Skeli-'s Avatar
                                      Skeli- Skeli- is offline
                                      Lord of the Rings
                                         
                                        Join Date: Apr 2014
                                        Location: Canada
                                        Age: 19
                                        Gender: Male
                                        Nature: Adamant
                                        Posts: 189
                                        A whole bunch of move animations for [FR]. Some of them require insert offsets, so when inserting any with a .org 0xAAAAAA at the top, replace that with the offset you plan on inserting the animation at (don't add an extra 08 at the front!). They can all be compiled with a THUMB compiler.

                                        First, paste this at the top of all of the files:
                                        Spoiler:
                                        Credits to Dizzy Egg for the original
                                        Code:
                                        .text
                                        .equ rom, 0x8000000
                                        
                                        @banks
                                        .equ bank_attacker, 0x0
                                        .equ bank_target, 0x1
                                        .equ attacker_partner, 0x2
                                        .equ target_partner, 0x3
                                        
                                        @sides for commands A, B
                                        .equ side_attacker, 0x2
                                        .equ side_target, 0x3
                                        
                                        @background IDs
                                        .equ BG_DARK, 0x1
                                        .equ BG_GHOST, 0x2
                                        .equ BG_PSYCHIC, 0x3
                                        .equ BG_IMPACT_ON_OPPONENT, 0x4
                                        .equ BG_IMPACT_ON_PLAYER, 0x5
                                        .equ BG_IMPACT_CONTESTS, 0x6
                                        .equ BG_DRILL_BATTLE, 0x7
                                        .equ BG_DRILL_CONTESTS, 0x8
                                        .equ BG_HIGHSPEED_ON_OPPONENT, 0x9
                                        .equ BG_HIGHSPEED_ON_PLAYER, 0xA
                                        .equ BG_THUNDER, 0xB
                                        .equ BG_GUILLOTINE_ON_OPPONENT, 0xC
                                        .equ BG_GUILLOTINE_ON_PLAYER, 0xD
                                        .equ BG_GUILLOTINE_CONTESTS, 0xE
                                        .equ BG_ICE, 0xF
                                        .equ BG_COSMIC, 0x10
                                        .equ BG_SEISMICTOSS_SKUUPPERCUT, 0x11
                                        .equ BG_FLYING_BATTLE, 0x12
                                        .equ BG_FLYING_CONTESTS, 0x13
                                        .equ BG_AURORABEAM, 0x14
                                        .equ BG_FISSURE, 0x15
                                        .equ BG_BUG_ON_OPPONENT, 0x16
                                        .equ BG_BUG_ON_PLAYER, 0x17
                                        .equ BG_SOLARBEAM_ON_OPPONENT, 0x18
                                        .equ BG_SOLARBEAM_ON_PLAYER, 0x19
                                        .equ BG_SOLARBEAM_CONTESTS, 0x1A
                                        
                                        @The following are only present in Mr DS's patch
                                        .equ BG_ROCK_WRECKER, 0x1B
                                        .equ BG_WATER, 0x1C
                                        .equ BG_GHOST, 0x1D
                                        .equ BG_LEAF_STORM, 0x1E
                                        .equ BG_FIRE, 0x1F
                                        .equ BG_FIRE_2, 0x20
                                        .equ BG_GIGA_IMPACT_ON_OPPONENT, 0x21
                                        .equ BG_GIGA_IMPACT_ON_PLAYER, 0x22
                                        .equ BG_WATER_2, 0x23
                                        .equ BG_POISON, 0x24
                                        .equ BG_MOON, 0x25
                                        .equ BG_HIGH_SPEED, 0x26
                                        
                                        @pals for pal fading tasks
                                        .equ PAL_BG, 0x1
                                        .equ PAL_ATK, 0x2
                                        .equ PAL_DEF, 0x4
                                        .equ PAL_ATK_PARTNER, 0x8
                                        .equ PAL_DEF_PARTNER, 0x10
                                        .equ PAL_ALL_BANKS, 0x780
                                        .equ PAL_PLAYER1, 0x80
                                        .equ PAL_PLAYER2, 0x100
                                        .equ PAL_OPPONENT1, 0x200
                                        .equ PAL_OPPONENT2, 0x400
                                        
                                        @commands
                                        .macro loadparticle loadparticleID
                                        .byte 0x0
                                        .hword \loadparticleID
                                        .endm
                                        
                                        .macro unloadparticle unloadparticleID
                                        .byte 0x1
                                        .hword \unloadparticleID
                                        .endm
                                        
                                        .macro launchtemplate launchtemplatePtr launchtemplatePriority launchtemplateArgsNo launchtemplatearg0 launchtemplatearg1 launchtemplatearg2 launchtemplatearg3 launchtemplatearg4 launchtemplatearg5 launchtemplatearg6 launchtemplatearg7 launchtemplatearg8
                                        .byte 0x2
                                        .word \launchtemplatePtr
                                        .byte \launchtemplatePriority
                                        .byte \launchtemplateArgsNo
                                        .hword \launchtemplatearg0
                                        .hword \launchtemplatearg1
                                        .hword \launchtemplatearg2
                                        .hword \launchtemplatearg3
                                        .hword \launchtemplatearg4
                                        .hword \launchtemplatearg5
                                        .hword \launchtemplatearg6
                                        .hword \launchtemplatearg7
                                        .hword \launchtemplatearg8
                                        .endm
                                        
                                        .macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8
                                        .byte 0x3
                                        .word \launchtaskPtr
                                        .byte \launchtaskPriority
                                        .byte \launchtaskArgsNo
                                        .hword \launchtaskarg0
                                        .hword \launchtaskarg1
                                        .hword \launchtaskarg2
                                        .hword \launchtaskarg3
                                        .hword \launchtaskarg4
                                        .hword \launchtaskarg5
                                        .hword \launchtaskarg6
                                        .hword \launchtaskarg7
                                        .hword \launchtaskarg8
                                        .endm
                                        
                                        .macro pause pause_cmdToWait
                                        .byte 0x4
                                        .byte \pause_cmdToWait
                                        .endm
                                        
                                        .macro waitanimation
                                        .byte 0x5
                                        .endm
                                        
                                        .macro endanimation
                                        .byte 0x8
                                        .endm
                                        
                                        .macro playsound1 playsound1ID
                                        .byte 0x9
                                        .hword \playsound1ID
                                        .endm
                                        
                                        .macro pokespritetoBG animABank
                                        .byte 0xA
                                        .byte \animABank
                                        .endm
                                        
                                        .macro pokespritefromBG animBBank
                                        .byte 0xB
                                        .byte \animBBank
                                        .endm
                                        
                                        .macro setblends setblends_value
                                        .byte 0xC
                                        .hword \setblends_value
                                        .endm
                                        
                                        .macro resetblends
                                        .byte 0xD
                                        .endm
                                        
                                        .macro call call_cmd_ptr
                                        .byte 0xE
                                        .word \call_cmd_ptr
                                        .endm
                                        
                                        .macro return
                                        .byte 0xF
                                        .endm
                                        
                                        .macro setarg setargID setargValue
                                        .byte 0x10
                                        .byte \setargID
                                        .hword \setargValue
                                        .endm
                                        
                                        .macro choosetwoturnanim choosetwoturnanim1 choosetwoturnanim2
                                        .byte 0x11
                                        .word \choosetwoturnanim1
                                        .word \choosetwoturnanim2
                                        .endm
                                        
                                        .macro jumpifmoveturnEQ jumpifmoveturnEQturn jumpifmoveturnEQPTR
                                        .byte 0x12
                                        .byte \jumpifmoveturnEQturn
                                        .word \jumpifmoveturnEQPTR
                                        .endm
                                        
                                        .macro goto goto_cmdPtr
                                        .byte 0x13
                                        .word \goto_cmdPtr
                                        .endm
                                        
                                        .macro loadBG1 loadBG1ID
                                        .byte 0x14
                                        .byte \loadBG1ID
                                        .endm
                                        
                                        .macro loaddefaultBG
                                        .byte 0x15
                                        .endm
                                        
                                        .macro waitforBG
                                        .byte 0x16
                                        .endm
                                        
                                        .macro waitfortransparentBG
                                        .byte 0x17
                                        .endm
                                        
                                        .macro loadBG2 loadBG2ID
                                        .byte 0x18
                                        .byte \loadBG2ID
                                        .endm
                                        
                                        .macro playsound2 playsound2ID playsound2Unkown
                                        .byte 0x19
                                        .hword \playsound2ID
                                        .byte \playsound2Unkown
                                        .endm
                                        
                                        .macro pancontrol anim1Aarg1
                                        .byte 0x1A
                                        .byte \anim1Aarg1
                                        .endm
                                        
                                        .macro playsoundpanchange anim1BsongID anim1BArg3 anim1BArg4 anim1BArg5 anim1BArg6
                                        .byte 0x1B
                                        .hword \anim1BsongID
                                        .byte \anim1BArg3
                                        .byte \anim1BArg4
                                        .byte \anim1BArg5
                                        .byte \anim1BArg6
                                        .endm
                                        
                                        .macro soundcomplex anim1Carg1 anim1Carg2 anim1Carg3 anim1Carg4
                                        .byte 0x1C
                                        .hword \anim1Carg1
                                        .byte \anim1Carg2
                                        .byte \anim1Carg3
                                        .byte \anim1Carg4
                                        .endm
                                        
                                        .macro playsound3 anim1Darg1 anim1Darg2 anim1Darg3
                                        .byte 0x1D
                                        .hword \anim1Darg1
                                        .byte \anim1Darg2
                                        .byte \anim1Darg3
                                        .endm
                                        
                                        .macro set_BLDCNT set_BLDCNTvalue
                                        .byte 0x1E
                                        .hword \set_BLDCNTvalue
                                        .endm
                                        
                                        .macro launchsoundtask launchsoundtaskPtr launchsoundtaskArgsNo launchsoundtaskarg0 launchsoundtaskarg1 launchsoundtaskarg2 launchsoundtaskarg3 launchsoundtaskarg4 launchsoundtaskarg5 launchsoundtaskarg6 launchsoundtaskarg7 launchsoundtaskarg8
                                        .byte 0x1F
                                        .word \launchsoundtaskPtr
                                        .byte \launchsoundtaskArgsNo
                                        .hword \launchsoundtaskarg0
                                        .hword \launchsoundtaskarg1
                                        .hword \launchsoundtaskarg2
                                        .hword \launchsoundtaskarg3
                                        .hword \launchsoundtaskarg4
                                        .hword \launchsoundtaskarg5
                                        .hword \launchsoundtaskarg6
                                        .hword \launchsoundtaskarg7
                                        .hword \launchsoundtaskarg8
                                        .endm
                                        
                                        .macro waitforsound
                                        .byte 0x20
                                        .endm
                                        
                                        .macro jumpifargmatches jumpifargmatchesargID jumpifargmatchesValue jumpifargmatchesPtr
                                        .byte 0x21
                                        .byte \jumpifargmatchesargID
                                        .hword \jumpifargmatchesValue
                                        .word \jumpifargmatchesPtr
                                        .endm
                                        
                                        .macro anim22 anim22bank
                                        .byte 0x22
                                        .byte \anim22bank
                                        .endm
                                        
                                        .macro anim23 anim23bank
                                        .byte 0x23
                                        .byte \anim23bank
                                        .endm
                                        
                                        .macro jumpifnotinbattle jumpifnotinbattlePTR
                                        .byte 0x24
                                        .word \jumpifnotinbattlePTR
                                        .endm
                                        
                                        .macro chooseBG chooseBG1 chooseBG2 chooseBG3
                                        .byte 0x25
                                        .byte \chooseBG1
                                        .byte \chooseBG2
                                        .byte \chooseBG3
                                        .endm
                                        
                                        .macro playsoundpanchange2 anim26H0 anim26B0 anim26B1 anim26B2 anim26B3
                                        .byte 0x26
                                        .hword \anim26H0
                                        .byte \anim26B0
                                        .byte \anim26B1
                                        .byte \anim26B2
                                        .byte \anim26B3
                                        .endm
                                        
                                        .macro playsoundpanchange3 anim27H0 anim27B0 anim27B1 anim27B2 anim27B3
                                        .byte 0x27
                                        .hword \anim27H0
                                        .byte \anim27B0
                                        .byte \anim27B1
                                        .byte \anim27B2
                                        .byte \anim27B3
                                        .endm
                                        
                                        .macro leftbankBG_over_partnerBG anim28Bank
                                        .byte 0x28
                                        .byte \anim28Bank
                                        .endm
                                        
                                        .macro bankBG_over_partnerBG
                                        .byte 0x29
                                        .endm
                                        
                                        .macro leftopponentbankBG_over_partnerBG anim2Aarg
                                        .byte 0x2A
                                        .byte \anim2Aarg
                                        .endm
                                        
                                        .macro makebankinvisible makebankinvisibleBank
                                        .byte 0x2B
                                        .byte \makebankinvisibleBank
                                        .endm
                                        
                                        .macro makebankvisible makebankvisibleBank
                                        .byte 0x2C
                                        .byte \makebankvisibleBank
                                        .endm
                                        
                                        .macro stopmusic
                                        .byte 0x2F
                                        .endm
                                        
                                        @objtemplate
                                        
                                        .macro objtemplate objtemplatetiletag objtemplatepaltag objtemplateoam objtemplateimageanim objtemplategfx objtemplaterotscale objtemplatecallback
                                        .hword \objtemplatetiletag
                                        .hword \objtemplatepaltag
                                        .word \objtemplateoam
                                        .word \objtemplateimageanim
                                        .word \objtemplategfx
                                        .word \objtemplaterotscale
                                        .word \objtemplatecallback
                                        .endm
                                        
                                        @launchtask
                                        
                                        .equ AnimTask_move_bank, 0x80989F9
                                        .equ AnimTask_sprite_transform, 0x80DF9BD
                                        .equ AnimTask_play_growling_cry, 0x80DD149
                                        .equ AnimTask_pal_fade_particle, 0x80BAA21
                                        .equ AnimTask_pal_fade, 0x80BA7F9
                                        .equ AnimTask_pal_fade_complex, 0x80B9BDD
                                        .equ AnimTask_screen_shake, 0x80B94B5
                                        .equ AnimTask_prepare_moving_psychicBG, 0x80DE6F1
                                        .equ AnimTask_arg7_is_target_player, 0x80DEAB5
                                        .equ AnimTask_scroll_background, 0x80BB82D
                                        .equ AnimTask_steel_sprite, 0x80B86ED
                                        .equ AnimTask_surf_wave, 0x80AB38D
                                        
                                        @calls
                                        
                                        .equ SET_PSYCHIC_BG, 0x81D59BB
                                        .equ UNSET_SCROLLING_BG, 0x81D59C7
                                        .equ BURN_CHANCE_ANIM, 0x81D0950
                                        .equ FREEZE_CHANCE_ANIM, 0x81D540A
                                        .equ PARALYZE_CHANCE_ANIM, 0x81D58D4
                                        .equ POISON_BUBBLES, 0x81D575B
                                        .equ HEALING_STARS, 0x81D569E
                                        .equ HEALING_ANIM, 0x81D56C9
                                        .equ RECOVER_LOAD_PARTICLES, 0x81D170D
                                        
                                        @supercommands
                                        
                                        .macro unsetscrollingBG
                                        loaddefaultBG
                                        waitforBG
                                        setarg 0x7 0xffff
                                        waitfortransparentBG
                                        .endm


                                        Aromatic Mist:
                                        Spoiler:
                                        Code:
                                        AromaticMist:
                                        	loadparticle 0x27fe 
                                        	playsound2 0xE5 0xc0
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x8 0x6E7D
                                        	launchtemplate 0x83FF324 0x2 0x3 0x64 0x0 0x64  
                                        	pause 0x19 
                                        	pancontrol 0x0 
                                        	call 0x81D2901
                                        	launchtemplate 0x83FF324 0x2 0x2 0x37 0x0  
                                        	pancontrol 0x3f 
                                        	launchtask AnimTask_pal_fade_complex 0x2 0x6 PAL_DEF | PAL_DEF_PARTNER 0x1 0x5 0x5 0xd 0x56bf  
                                        	call 0x81D2901
                                        	waitanimation
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x8 0x0 0x6E7D
                                        	waitanimation
                                        	endanimation


                                        Cotton Guard:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        CottonGuard:
                                        	loadparticle 0x27AE
                                        	pokespritetoBG side_attacker 
                                        	setblends 0x80c 
                                        	soundcomplex 0xA2 0x3f 0x12 0x6
                                        	call 0x81D03B5
                                        	call CottonIn+rom
                                        	call CottonIn+rom
                                        	call CottonIn+rom
                                        	waitanimation 
                                        	pokespritefromBG side_attacker 
                                        	resetblends
                                        	endanimation 
                                        CottonIn:
                                        	launchtemplate COTTON+rom 0x2 0x3 0x28 0xfff6 0xd  
                                        	pause 0x3 
                                        	launchtemplate COTTON+rom 0x2 0x3 0xffdd 0xfff6 0xd  
                                        	pause 0x3 
                                        	launchtemplate COTTON+rom 0x2 0x3 0xf 0xffd8 0xd  
                                        	pause 0x3 
                                        	launchtemplate COTTON+rom 0x2 0x3 0xfff6 0xffe0 0xd  
                                        	pause 0x3 
                                        	launchtemplate COTTON+rom 0x2 0x3 0x19 0xffec 0xd  
                                        	pause 0x3 
                                        	launchtemplate COTTON+rom 0x2 0x3 0xffd8 0xffec 0xd  
                                        	pause 0x3 
                                        	launchtemplate COTTON+rom 0x2 0x3 0x5 0xffd8 0xd  
                                        	pause 0x3 
                                        	return
                                        
                                        .align 2
                                        COTTON: objtemplate 0x27AE 0x27AE 0x83AC9D0 0x83E2B5C 0x0 0x83E2A54 0x80A2389


                                        Dragon Breath:
                                        Spoiler:
                                        *Can be inserted over the original
                                        Code:
                                        .org 0x1CD9AC
                                        DragonBreath:
                                        	loadparticle 0x272D
                                        	loadparticle 0x2838
                                        	pokespritetoBG side_target 
                                        	leftbankBG_over_partnerBG bank_target  
                                        	soundcomplex 0x89 0xc0 0x7 0x7
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x0 0x9 0x1f  
                                        	call BreatheFire+rom 
                                        	pause 0x2 
                                        	launchtask 0x8098B1D 0x2 0x5 0x1 0x2 0x0 0x15 0x1  
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x9 0x0 0x1f  
                                        	waitanimation 
                                        	pokespritefromBG side_target 
                                        	endanimation
                                        
                                        BreatheFire:
                                        	launchtemplate BLUEFIRE+rom 0x82 0x5 0x0 0x0 0x0 0x0 0x14  
                                        	pause 0x2
                                        	return
                                        
                                        .align 2
                                        BLUEFIRE: objtemplate 0x272D 0x2838 0x83ACA98 0x83E7764 0x0 0x83E779C 0x80B741D


                                        Dragon Rush:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        DragonRush:
                                        	loadparticle 0x27AC
                                        	loadparticle 0x27C0
                                        	loadparticle 0x274a
                                        	loadparticle 0x2797
                                        	playsound2 0x97 0xc0 
                                        	launchtemplate FLYUP+rom 0x2 0x4 0x0 0x0 0xd 0x150
                                        	waitanimation
                                        	loadBG1 0x10 @cosmic
                                        	waitfortransparentBG 
                                        	pokespritetoBG side_target 
                                        	setblends 0x80c 
                                        	playsound2 0xBA 0x3f 
                                        	launchtemplate BOUNCEDOWN+rom 0x83 0x0  
                                        	pause 0x7 
                                        	playsound2 0x86 0x3f 
                                        	launchtemplate 0x83E7C08 0x82 0x4 0x0 0x0 0x1 0x0  
                                        	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x5 0xb 0x1
                                        	call 0x81D47C7 @seismic toss
                                        	waitanimation 
                                        	pokespritefromBG side_target 
                                        	resetblends
                                        	loaddefaultBG 
                                        	waitfortransparentBG 
                                        	endanimation
                                        
                                        .align 2
                                        FLYUP:
                                        	objtemplate 0x27AC 0x27C0 0x83ACAA0 0x8231CF0 0x0 0x83E6B8C 0x80B1BB1
                                        BOUNCEDOWN:
                                        	objtemplate 0x27AC 0x27C0 0x83ACAA0 0x8231CF0 0x0 0x83E6CF8 0x80B2975


                                        Dragon Tail:
                                        Spoiler:
                                        Code:
                                        DragonTail:	
                                        	loadparticle 0x274a
                                        	loadparticle 0x2748 
                                        	loadparticle 0x2797 
                                        	pokespritetoBG bank_target 
                                        	setblends 0x80c 
                                        	playsound2 0x84 0xc0 
                                        	launchtemplate 0x83D4E9C 0x2 0x5 0x0 0x14 0x3 0x0 0x4  
                                        	pause 0x1 
                                        	launchtemplate 0x83E3148 0x2 0x2 0x0 0x0  
                                        	pause 0x3 
                                        	playsound2 0x86 0x3f 
                                        	launchtemplate 0x83E7C08 0x3 0x4 0x0 0x0 0x1 0x1  
                                        	launchtemplate 0x83D4E9C 0x2 0x5 0x1 0xfff4 0xa 0x0 0x3  
                                        	launchtemplate 0x83D4E84 0x2 0x3 0x0 0x0 0x5 
                                        	call 0x81D47C7 @seismic toss
                                        	pause 0x3 
                                        	launchtask 0x8098CD1 0x2 0x5 0x1 0x0 0x3 0x6 0x1  
                                        	waitanimation 
                                        	pause 0x5 
                                        	launchtemplate 0x83D4E84 0x2 0x3 0x1 0x0 0x6  
                                        	waitanimation 
                                        	pokespritefromBG bank_target 
                                        	resetblends
                                        	endanimation


                                        Fire Fang:
                                        Spoiler:
                                        Code:
                                        FireFang:
                                        	loadparticle 0x279b 
                                        	loadparticle 0x2797
                                        	loadparticle 0x272D
                                        	pokespritetoBG bank_target 
                                        	setblends 0x80c 
                                        	playsound2 0x9a 0x3f 
                                        	launchtemplate 0x83E7930 0x2 0x6 0x0 0xffe0 0x0 0x0 0x333 0xa  
                                        	launchtemplate 0x83E7930 0x2 0x6 0x0 0x20 0x4 0x0 0xfccd 0xa
                                        	pause 0xA 
                                        	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
                                        	call 0x81D0950 @flames
                                        	pause 0x4 
                                        	playsound2 0x8C 0x3f
                                        	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x4 0x7 0x1  
                                        	waitanimation 
                                        	pokespritefromBG bank_target 
                                        	resetblends 
                                        	pause 0x1 
                                        	endanimation


                                        Flamethrower:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        Flamethrower:
                                        	loadparticle 0x272D
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x7 0x043D
                                        	pause 0x20
                                        	pokespritetoBG side_target 
                                        	leftbankBG_over_partnerBG bank_target  
                                        	soundcomplex 0x89 0xc0 0x7 0xA
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x0 0x9 0x1f  
                                        	call BreatheFire+rom 
                                        	pause 0x2 
                                        	launchtask 0x8098B1D 0x2 0x5 0x1 0x2 0x0 0x15 0x1  
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	call BreatheFire+rom
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x9 0x0 0x1f  
                                        	waitanimation 
                                        	pokespritefromBG side_target
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x7 0x0 0x043D
                                        	endanimation
                                        
                                        BreatheFire:
                                        	launchtemplate 0x83E77A4 0x82 0x5 0x0 0x0 0x0 0x0 0x14  
                                        	pause 0x2
                                        	return


                                        Fling:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        Fling:
                                        	loadparticle 0x27f0
                                        	loadparticle 0x2797 
                                        	pokespritetoBG bank_target 
                                        	leftbankBG_over_partnerBG bank_target  
                                        	setblends 0x80c
                                        	playsound2 0x25 0x3f 
                                        	launchtemplate ITEM+rom 0x2 0x6 0x14 0xfff8 0xfff8 0xfff8 0x14 0xffe0  
                                        	pause 0x13
                                        	playsound2 0x7f 0x3f 
                                        	launchtemplate 0x83E7C08 0x3 0x4 0xfff8 0xfff8 0x1 0x2  
                                        	launchtask 0x8098B1D 0x2 0x5 0x1 0x3 0x0 0x2 0x1  
                                        	waitanimation 
                                        	pokespritefromBG bank_target 
                                        	resetblends 
                                        	endanimation
                                        
                                        .align 2
                                        ITEM: objtemplate 0x27f0 0x27f0 0x83ACA38 0x8231CF0 0x0 0x8231CFC 0x80B4495


                                        Gear Grind:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        GearGrind:
                                        	loadparticle 0x2797
                                        	loadparticle 0x283D
                                        	pokespritetoBG bank_target 
                                        	setblends 0x80c
                                        	playsound2 0x49 0xC0
                                        	launchtemplate GEAR+rom 0x2 0x4 0x0 0x0 0x45 0x0
                                        	pause 0x20
                                        	launchtemplate GEAR+rom 0x2 0x4 0x0 0x0 0x45 0x0
                                        	pause 0x18
                                        	playsound2 0x7f 0x3f 
                                        	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
                                        	pause 0x20
                                        	playsound2 0x7f 0x3f 
                                        	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
                                        	launchtask AnimTask_move_bank 0x2 0x5 bank_target 0x0003 0x0000 0x0006 0x0001  
                                        	waitanimation 
                                        	pokespritefromBG bank_target 
                                        	resetblends 
                                        	endanimation
                                        
                                        .align 2
                                        GEAR: objtemplate 0x283D 0x283D 0x83ACA38 0x8231CF0 0x0 0x83E7604 0x80B563D


                                        Ice Fang:
                                        Spoiler:
                                        Code:
                                        IceFang:
                                        	loadparticle 0x279b 
                                        	loadparticle 0x2797
                                        	loadparticle 0x279D
                                        	pokespritetoBG bank_target 
                                        	setblends 0x80c 
                                        	playsound2 0x9a 0x3f
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x7f4c 
                                        	launchtemplate 0x83E7930 0x2 0x6 0x0 0xffe0 0x0 0x0 0x333 0xa  
                                        	launchtemplate 0x83E7930 0x2 0x6 0x0 0x20 0x4 0x0 0xfccd 0xa
                                        	pause 0xA 
                                        	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
                                        	call 0x81D540A @ice
                                        	pause 0x4
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x7f4c  
                                        	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x4 0x7 0x1  
                                        	waitanimation 
                                        	pokespritefromBG bank_target 
                                        	resetblends 
                                        	pause 0x1 
                                        	endanimation


                                        Leech Life:
                                        Spoiler:
                                        *Can be inserted over the original
                                        Code:
                                        .org 0x1CF085
                                        LeechLife:
                                        	loadparticle 0x27d0
                                        	loadparticle 0x27a3
                                        	loadparticle 0x272f
                                        	pokespritetoBG side_target
                                        	leftopponentbankBG_over_partnerBG 0x1 
                                        	setblends 0x80c
                                        	pause 0x1
                                        	playsound2 0x9A 0x3f 
                                        	launchtemplate 0x83FEFBC 0x82 0x0  
                                        	pause 0xa
                                        	launchtask AnimTask_move_bank 0x3 0x5 bank_target 0x3 0x0 0xa 0x1  
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x1 0x0 0x7 0x0
                                        	call 0x81CEC44 
                                        	waitanimation 
                                        	pause 0xf 
                                        	call 0x81D56C9 @HEALING_ANIM 
                                        	waitanimation 
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x1 0x7 0x0 0x0  
                                        	waitanimation 
                                        	pokespritefromBG side_target 
                                        	resetblends 
                                        	endanimation


                                        Magma Storm:
                                        Spoiler:
                                        *Requires Mr. DS's patch
                                        Code:
                                        MagmaStorm:
                                        	loadparticle 0x272d 
                                        	loadbg1 0x1F
                                        	waitfortransparentbg
                                        	launchtask 0x80BB82D 0x5 0x4 0x1000 0x0 0x0 0xFFFF
                                        	playsound2 0x8F 0x3f 
                                        	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x2 0x2f 0x1  
                                        	call 0x81C885F
                                        	call 0x81C885F
                                        	call 0x81C885F
                                        	waitanimation
                                        	unsetscrollingBG
                                        	waitanimation
                                        	endanimation


                                        Retaliate
                                        Spoiler:
                                        Code:
                                        Retaliate:
                                        	loadparticle 0x279A @Cut
                                        	pokespritetoBG side_target
                                        	setblends 0x809
                                        	launchtask 0x8077031 0x2 0x2 0x7128 0xa
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x10 0x0
                                        	waitanimation
                                        	playsound2 0x79 0x3f 
                                        	launchtemplate 0x83E3E48 0x2 0x1 0x0  
                                        	launchtemplate 0x83E3E48 0x2 0x1 0x1
                                        	pause 0x38
                                        	playsound2 0x7f 0x3f
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x10 0x43D
                                        	waitanimation
                                        	launchtask AnimTask_move_bank 0x2 0x5 bank_target 0x0 0x3 0xf 0x1  
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x0 0x043D
                                        	waitanimation
                                        	pokespritefromBG side_target 
                                        	resetblends
                                        	endanimation


                                        Roar of Time:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        RoarofTime:
                                        	loadparticle 0x27A3
                                        	loadparticle 0x27D6
                                        	loadparticle 0x2839
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x10 0x0
                                        	pause 0x20
                                        	pokespritetoBG side_attacker 
                                        	setblends 0x80c
                                        	soundcomplex 0x85 0xc0 0xd 0x3 
                                        	call 0x81D170D
                                        	waitanimation
                                        	pokespritefromBG side_attacker 
                                        	resetblends
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x0 0x0
                                        	waitanimation
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x10 0xffff
                                        	launchtask AnimTask_play_growling_cry 0x2 0x2 bank_attacker 0xff
                                        	pause 0x20
                                        	launchtask 0x8098CD1 0x2 0x5 0x1 0xa 0x0 0x14 0x1  
                                        	playsound2 0xAA 0x3f 
                                        	launchtemplate 0x83E3F94 0x3 0x4 0x0 0x0 0x1 0x1  
                                        	pause 0x6 
                                        	playsound2 0xAA 0x3f 
                                        	launchtemplate BLUEBOMB+rom 0x3 0x4 0x18 0xffe8 0x1 0x1  
                                        	pause 0x6 
                                        	playsound2 0xAA 0x3f 
                                        	launchtemplate 0x83E3F94 0x3 0x4 0xfff0 0x10 0x1 0x1  
                                        	pause 0x6 
                                        	playsound2 0xAA 0x3f 
                                        	launchtemplate BLUEBOMB+rom 0x3 0x4 0xffe8 0xfff4 0x1 0x1  
                                        	pause 0x6 
                                        	playsound2 0xAA 0x3f 
                                        	launchtemplate 0x83E3F94 0x3 0x4 0x10 0x10 0x1 0x1
                                        	pause 0x6
                                        	playsound2 0xAA 0x3f 
                                        	launchtemplate BLUEBOMB+rom 0x3 0x4 0xffe8 0x18 0x1 0x1  
                                        	waitanimation 
                                        	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x0 0xffff  
                                        	waitanimation 
                                        	endanimation
                                        .align 2
                                        BLUEBOMB: objtemplate 0x27D6 0x2839 0x83AC9D8 0x83E3F90 0x0 0x8231CFC 0x8075D9D


                                        Shadow Force:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        SHADOW_FORCE_ANIM:
                                        	loadparticle 0x27A6 
                                        	loadparticle 0x2797
                                        	launchtemplate 0x83E7B24 0x02 0x05 0x1 0x0 0x0 0xF 0xFFFF
                                        	choosetwoturnanim SHADOW_FORCE_PREP+rom SHADOW_FORCE_ATTACK+rom 
                                        SHADOW_FORCE_WAIT_END:
                                        	waitanimation 
                                        	endanimation 
                                        SHADOW_FORCE_PREP:
                                        	playsound2 0xB7 0xc0 
                                        	makebankinvisible 0x0
                                        	pause 0x5
                                        	makebankvisible 0x0
                                        	pause 0x5
                                        	makebankinvisible 0x0
                                        	pause 0x5
                                        	makebankvisible 0x0
                                        	pause 0x5
                                        	makebankinvisible 0x0
                                        	pause 0x5
                                        	makebankvisible 0x0
                                        	pause 0x5
                                        	makebankinvisible 0x0
                                        	pause 0x5
                                        	makebankvisible 0x0
                                        	pause 0x5
                                        	makebankinvisible 0x0
                                        	launchtemplate 0x83E7B24 0x02 0x05 0x1 0x0 0xF 0x0 0xFFFF
                                        	goto SHADOW_FORCE_WAIT_END+rom
                                        SHADOW_FORCE_ATTACK:
                                        	pokespritetoBG bank_target
                                        	setblends 0x80c
                                        	soundcomplex 0x86 0xc0 0x1 0x5
                                        	pause 0x10
                                        					           @X   Y
                                        	launchtemplate PURPLEHIT+rom 0x2 0x4 0x0 0x0 0x1 0x2
                                        	launchtemplate PURPLEHIT+rom 0x2 0x4 0xA 0x0 0x1 0x2
                                        	launchtemplate PURPLEHIT+rom 0x2 0x4 0x0 0xA 0x1 0x2
                                        	launchtemplate PURPLEHIT+rom 0x2 0x4 0xA 0xA 0x1 0x2
                                        	pause 0x10
                                        	makebankvisible 0x0
                                        	launchtask AnimTask_move_bank 0x2 0x5 bank_target 0x0003 0x0000 0x0006 0x0001  
                                        	waitanimation
                                        	pokespritefromBG bank_target 
                                        	resetblends
                                        	launchtemplate 0x83E7B24 0x02 0x05 0x1 0x0 0xF 0x0 0xFFFF
                                            	goto SHADOW_FORCE_WAIT_END+rom
                                        
                                        .align 2
                                        PURPLEHIT: objtemplate 0x2797 0x27A6 0x83ACB58 0x8231CF0 0x0 0x83E7BF8 0x80BA561


                                        Spotlight:
                                        Spoiler:
                                        Code:
                                        Spotlight:
                                        	loadparticle 0x27f3 
                                        	loadparticle 0x2807 
                                        	launchtask 0x80DEDD9 0x2 0x0  
                                        	launchtask 0x80BAB39 0x2 0x5 0xf8 0x3 0x0 0xa 0x0
                                        	waitanimation
                                        	playsound2 0x5C 0xC0
                                        	launchtemplate 0x83FF00C 0x82 0x2 0x0 0xfff8  
                                        	pause 0x40
                                        	launchtask  0x80BAB39 0x2 0x5 0xf8 0x3 0xa 0x0 0x1  
                                        	waitanimation 
                                        	launchtask 0x80DEE79 0x2 0x0  
                                        	endanimation


                                        Thunder Fang:
                                        Spoiler:
                                        Code:
                                        ThunderFang:
                                        	loadparticle 0x279b 
                                        	loadparticle 0x2797
                                        	loadparticle 0x271b
                                        	pokespritetoBG bank_target 
                                        	setblends 0x80c 
                                        	playsound2 0x9a 0x3f
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x07FE 
                                        	launchtemplate 0x83E7930 0x2 0x6 0x0 0xffe0 0x0 0x0 0x333 0xa  
                                        	launchtemplate 0x83E7930 0x2 0x6 0x0 0x20 0x4 0x0 0xfccd 0xa 
                                        	launchtemplate 0x83E6088 0x82 0x4 0x5 0x0 0x5 0x0
                                        	launchtemplate 0x83E6088 0x82 0x4 0xfffb 0xa 0x5 0x1
                                        	pause 0xA 
                                        	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2  
                                        	playsound2 0x70 0x3f 
                                        	launchtemplate 0x83E6088 0x82 0x4 0xf 0x14 0x5 0x2  
                                        	pause 0x1 
                                        	launchtemplate 0x83E6088 0x82 0x4 0xfff1 0xfff6 0x5 0x0  
                                        	pause 0x1 
                                        	launchtemplate 0x83E6088 0x82 0x4 0x19 0x0 0x5 0x1  
                                        	pause 0x1 
                                        	launchtemplate 0x83E6088 0x82 0x4 0xfff8 0x8 0x5 0x2  
                                        	pause 0x1 
                                        	launchtemplate 0x83E6088 0x82 0x4 0x2 0xfff8 0x5 0x0  
                                        	pause 0x1 
                                        	launchtemplate 0x83E6088 0x82 0x4 0xffec 0xf 0x5 0x1
                                        	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x07FE	
                                        	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x4 0x7 0x1  
                                        	waitanimation 
                                        	pokespritefromBG bank_target 
                                        	resetblends 
                                        	pause 0x1 
                                        	endanimation


                                        Toxic Thread:
                                        Spoiler:
                                        Code:
                                        .org 0xAAAAAA
                                        ToxicThread:
                                        	loadparticle 0x27a6
                                        	loadparticle 0x27c3 
                                        	loadparticle 0x27c4 
                                        	pokespritetoBG side_target 
                                        	pause 0x0 
                                        	launchtemplate 0x83E7B24 0x5 0x5 0x1 0x2 0x0 0x9 0x0  
                                        	waitanimation 
                                        	soundcomplex 0x7A 0xc0 0x9 0x6 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom 
                                        	call STRINGSHOT_LOAD_PARTICLE+rom
                                        	waitanimation 
                                        	playsound2 0x7B 0x3f 
                                        	launchtemplate String2+rom 0x82 0x2 0x0 0xa  
                                        	pause 0x4 
                                        	launchtemplate String2+rom 0x82 0x2 0x0 0xfffe  
                                        	pause 0x4 
                                        	launchtemplate String2+rom 0x82 0x2 0x0 0x16  
                                        	waitanimation 
                                        	pokespritefromBG side_target 
                                        	pause 0x1 
                                        	waitanimation 
                                        	launchtemplate 0x83E7B24 0x5 0x5 0x1 0x2 0x9 0x0 0x0  
                                        	endanimation 
                                        STRINGSHOT_LOAD_PARTICLE:
                                        	launchtemplate String1+rom 0x82 0x5 0x14 0x0 0x200 0x14 0x1  
                                        	pause 0x1 
                                        	return
                                        
                                        .align 2
                                        String1: objtemplate 0x27C4 0x27A6 0x83AC9C8 0x8231CF0 0x0 0x8231CFC 0x80B4129
                                        String2: objtemplate 0x27C3 0x27A6 0x83ACA00 0x8231CF0 0x0 0x8231CFC 0x80B41F9
                                        __________________
                                        Pokemon Unbound

                                        Reply With Quote
                                          #395    
                                        Old February 7th, 2018 (11:20 AM).
                                        PSI Master's Avatar
                                        PSI Master PSI Master is offline
                                        Let your memes be dreams
                                           
                                          Join Date: Feb 2013
                                          Location: A deep underground lab somewhere...
                                          Gender: Male
                                          Nature: Serious
                                          Posts: 63
                                          Quote:
                                          Originally Posted by Spherical Ice View Post
                                          This lists moves from the first three generations whose effects have been changed or updated in Generations 4, 5 and 6.

                                          Code:
                                          Whirlwind		no longer works on same/higher levelled wild PKMN
                                          			ignores accuracy and evasion
                                          			bypasses protect and detect
                                          Bind			inflicts 1/8 of max. HP*
                                          Stomp		x2 base power & ignores accuracy and evasion if target has used Minimize**
                                          Jump Kick		Crash damage = 1/2 of user's max. HP, rounded down***
                                          Thrash		disrupted by:	missing
                                          						sleeping
                                          						paralysis
                                          						freeze
                                          						flinching
                                          						protecting target
                                          						immune target
                                          			if disrupted on final turn of Thrash, confusion still occurs****
                                          Roar			ignores accuracy and evasion
                                          			bypasses protect and detect
                                          Supersonic		bypasses sub
                                          Disable		always lasts 4 turns
                                          			reflected by Magic Coat++
                                          Acid			10% chance to drop Sp.D by 1 stage
                                          Growth		raises Atk and Sp.A stats by 1 stage
                                          			raises Atk and Sp.A stats by 2 stages in Sun
                                          Surf			hits all Pokémon on the field except the user
                                          Blizzard		ignores accuracy and evasion in Hail
                                          String Shot	drops Speed by 2 stages
                                          Thunder		ignores accuracy and evasion in Rain
                                          			lowered accuracy in Sun
                                          Dig			underground wild PKMN canot be captured
                                          Toxic			ignores accuracy and evasion if used by a Poison-type
                                          Rage			raging users get Attack stat boosts every time they get hit
                                          Mimic		mimicked moves have max PP, not 5 PP
                                          Focus Energy	increases crit ratio by 2 stages, not 1
                                          Bide			only endures 2 turns
                                          			hits Ghost-types, as well semi-invulnerable PKMN in Dive, Bounce or Shadow Force
                                          			broken by sleep
                                          Selfdestruct	user faints before dealing damage +
                                          			no longer halves target's Def +
                                          Waterfall		20% flinch chance
                                          Sky Attack		displays "<user> became cloaked in a harsh light!" instead of "<user> is glowing!" on turn 1
                                          Transform		copies shininess
                                          			fails on subs
                                          Conversion		can be stolen by Snatch
                                          			can be used on Curse (because Curse is Ghost-type)
                                          			changes the user's current type to match the type of the first of the user's moves
                                          Substitute		multi-strike moves continue after breaking sub
                                          			blocks intimidate
                                          			blocks transform
                                          			doesn't block sound-based moves
                                          Struggle		ignores accuracy & evasion
                                          			user takes 1/4 max. HP as recoil
                                          Sketch		can copy Metronome and Transform
                                          Spider Web	no longer traps Ghost-types+++
                                          Thief			doesn't permanently steal a Trainer's Pokémon's item
                                          			items can be stolen back
                                          Flail			base damage = (48 * CurrentHP) / MaxHP
                                          Conversion2	changes user's type to resist target's last move, including non-damaging moves
                                          Spite			reflected by Magic Coat
                                          			always deducts 4 PP
                                          Destiny Bond	target faints after the user
                                          Sandstorm		boosts Rock-type Pokémon's Sp.D by 50%
                                          Sleep Talk		can use PP-less moves
                                          Heal Bell		bypasses sub
                                          			bypasses Soundproof
                                          Encore		lasts 3 turns
                                          			reflected by Magic Coat, but then fails
                                          Sweet Scent	lowers evasion by 2 stages
                                          Hidden Power	base power of 60
                                          Crunch		20% chance to lower Def by 1 stage, not Sp.D
                                          Future Sight	now does Psychic-type damage
                                          			uses Sp.D stat of receiving Pokémon, not original target
                                          Beat Up		base power = (party member's base Attack) / 10 + 5
                                          			receives STAB from Dark-type users
                                          Uproar		lasts exactly 3 turns
                                          Stockpile		raises user's Def and Sp.D stat by 1 stage
                                          Spit Up		removes Stockpile boosts
                                          Swallow		removes Stockpile boosts
                                          Torment		activates the turn it is used
                                          			reflected by Magic Coat
                                          Facade		ignores Burn Attack cut
                                          Focus Punch	charging turn has +6 priority
                                          Nature Power	calls different moves: http://bulbapedia.bulbagarden.net/wiki/Nature_Power_(move)#Generation_VI
                                          Charge		boosts Sp.D by one stat
                                          Taunt		lasts exactly 3 turns
                                          			reflected by Magic Coat
                                          Trick			no longer permanently switches a Trainer's Pokémon's items
                                          Wish			heals for half of the user's max. HP, not the recipient's
                                          			affected by Snatch
                                          Ingrain		Ghost-types who have ingrained can switch
                                          Recycle		affected by Snatch
                                          Magic Coat		reflects Teeter Dance, Taunt, Torment
                                          Brick Break		no longer removes screens if target is Ghost-type
                                          Knock Off		deals 50% more damage if target has item
                                          Skill Swap		switch-in abilities like intimidate activate after being swapped
                                          Secret Power	different effects: http://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)#Generation_VI
                                          Dive			underwater wild PKMN canot be captured
                                          Camouflage	more types for different terrain: http://bulbapedia.bulbagarden.net/wiki/Camouflage_(move)#Generation_VI
                                          Tail Glow		raises Sp.A by 3 stages
                                          Mud Sport		active for exactly 5 turns++++
                                          Poison Fang	50% chance to badly poison target
                                          Aromatherapy	lists PKMN that are healed
                                          Covet		no longer permanently steals a Trainer's Pokémon's items
                                          Doom Desire	now does Steel-type damage
                                          			uses Sp.D stat of receiving Pokémon, not original target
                                          
                                          *applies to Bind, Wrap, Fire Spin, Clamp, Whirlpool, Sand Tomb
                                          **applies to Stomp, Body Slam
                                          ***applies to Hi Jump Kick
                                          ****applies to Thrash, Outrage, Petal Dance
                                          +applies to Selfdestruct, Explosion
                                          ++applies to Disable, Spite, Spkies, Foresight, Torment, Taunt, Odor Sleuth
                                          +++applies to Spider Web, Block, Mean Look
                                          ++++applies to Mud Sport, Water Sport
                                          This link may also be useful, as it lists all of the other changes that have been done to moves, such as base power and accuracy:
                                          http://bulbapedia.bulbagarden.net/wiki/List_of_modified_moves
                                          I decided to write up a document showing the changed effects of Gen 1-3 moves in greater detail, as the Bulbapedia link leaves out a lot of changes and some things have since been updated as of this post. Not trying to one-up you, just thought I would share a contribution. You can find the document here if you would like to take a look: https://www.pokecommunity.com/showpost.php?p=9834136&postcount=1
                                          __________________
                                          Check Out My Projects:

                                          & My Ultimate Fire Red Base
                                          https://www.pokecommunity.com/showthread.php?t=409672

                                          Discord to join my Wish/Rombase server for updates, questions, and info:
                                          https://discord.gg/N46NeqS
                                          Reply With Quote
                                            #396    
                                          Old March 5th, 2018 (10:18 AM).
                                          pikachux2's Avatar
                                          pikachux2 pikachux2 is offline
                                          Never Evolve
                                             
                                            Join Date: Mar 2010
                                            Location: USA
                                            Gender: Male
                                            Nature: Jolly
                                            Posts: 107
                                            Hey people, maybe a dumb question...

                                            I want to make sing affect all pokemon except user, this doesn't work it still targets a single pokemon even when I change the target...

                                            I tried making it hit both foe's pokemon, this also didn't work.

                                            Anyone have this problem? Or am I just missing some easy step.
                                            Reply With Quote
                                              #397    
                                            Old March 6th, 2018 (8:18 PM).
                                            BluRose BluRose is offline
                                            blu rass
                                               
                                              Join Date: Apr 2014
                                              Location: hyakkoku city
                                              Age: 17
                                              Gender: Male
                                              Nature: Timid
                                              Posts: 756
                                              Quote:
                                              Originally Posted by pikachux2 View Post
                                              Hey people, maybe a dumb question...

                                              I want to make sing affect all pokemon except user, this doesn't work it still targets a single pokemon even when I change the target...

                                              I tried making it hit both foe's pokemon, this also didn't work.

                                              Anyone have this problem? Or am I just missing some easy step.
                                              okay
                                              so this works as a bitfield
                                              so you're gonna have some byte
                                              and you're gonna take the value that the byte is set to when it hits your partner
                                              and you're gonna take the value that the byte is set to when it hits both foes
                                              and you're going to squeeze them together; combine their bitfields from binary)
                                              say that hitting your partner has value 20 (in binary, 00100000)
                                              and hitting both foes has value 80 (in binary, 10000000)
                                              so hitting everyone on field would be 10100000 (in hex, A0)

                                              tl;dr
                                              just add the two together and you get your resulting value~
                                              __________________
                                              am i cool yet
                                              Reply With Quote
                                                #398    
                                              Old March 7th, 2018 (7:35 AM). Edited March 7th, 2018 by pikachux2.
                                              pikachux2's Avatar
                                              pikachux2 pikachux2 is offline
                                              Never Evolve
                                                 
                                                Join Date: Mar 2010
                                                Location: USA
                                                Gender: Male
                                                Nature: Jolly
                                                Posts: 107
                                                Quote:
                                                Originally Posted by BluRose View Post
                                                okay
                                                so this works as a bitfield
                                                so you're gonna have some byte
                                                and you're gonna take the value that the byte is set to when it hits your partner
                                                and you're gonna take the value that the byte is set to when it hits both foes
                                                and you're going to squeeze them together; combine their bitfields from binary)
                                                say that hitting your partner has value 20 (in binary, 00100000)
                                                and hitting both foes has value 80 (in binary, 10000000)
                                                so hitting everyone on field would be 10100000 (in hex, A0)

                                                tl;dr
                                                just add the two together and you get your resulting value~
                                                EDIT: The target byte is the same as other moves that hit two pokemon's target byte, but it still will not function properly..



                                                I broke up the hex for a few moves here(attached a txt file).. Notice I changed tackle to hit all pokemon except the user (as a test).
                                                In game Tackle will say its targeting all users but it instead only targets one, whereas earthquake surf and explosion function
                                                properly. Has anyone else has this problem? This code was taken from in game.


                                                EDIT AGAIN!!: So it seems the only way a move can function when it targets both foes and your partner is if it has some effect... I'm sure if this is true, most of you already know it... Can someone confirm this?
                                                FINAL:: Use effect 147 for moves that hit both foes and your partner

                                                How could I theoretically merge the effects of putting the target to sleep while the move also hits both foes and my partner? How could I interpret the attack effect table?
                                                Attached Files
                                                File Type: txt moves.txt‎ (437 Bytes, 5 views) (Save to Dropbox)
                                                Reply With Quote
                                                  #399    
                                                Old May 21st, 2018 (12:50 AM).
                                                Lance Koijer 2.0 Lance Koijer 2.0 is offline
                                                Lance Koijer
                                                   
                                                  Join Date: Apr 2018
                                                  Location: Criscanto Town
                                                  Gender: Male
                                                  Nature: Adamant
                                                  Posts: 62
                                                  Quote:
                                                  Originally Posted by NewDenverCity View Post
                                                  You'll need to apply this stuff, credit to Doesnt.
                                                  Also huge props to kleenexfeu, he helped me through this and is awesome.

                                                  RELIC SONG
                                                  Spoiler:
                                                  Battle script.
                                                  Spoiler:
                                                  AAAAAA is a piece of ASM related, it's next.
                                                  Code:
                                                  #include moves.bsh
                                                  #dynamic 0x800000
                                                  #org @start
                                                  jumpifhalfword B_!= 0x2023D4A 0x(index of your relic song) 0x81D6A60
                                                  setbyte 0x02023E85 0x1
                                                  attackcanceler
                                                  accuracycheck 0x81D695E 0x0
                                                  attackstring
                                                  ppreduce
                                                  calculatedamage
                                                  attackanimation
                                                  waitanimation
                                                  missmessage
                                                  cmd5c BANK_TARGET
                                                  waitstate
                                                  graphicalhpupdate BANK_TARGET
                                                  datahpupdate BANK_TARGET
                                                  critmessage
                                                  waitmessage DELAY_1SECOND
                                                  resultmessage
                                                  waitmessage DELAY_1SECOND
                                                  seteffectwithchancetarget
                                                  faintpokemon BANK_TARGET 0x0 0x8000000
                                                  callasm 0x(AAAAAA + 1)
                                                  jumpifbyte 0x1 0x020370D4 0x1 @doanimation
                                                  setbyte 0x02023FD8 0x0
                                                  cmd49 0x0 0x0
                                                  end
                                                  #org @doanimation
                                                  setbyte 0x020370D4 0x1
                                                  playanimation 0x1 0x1C 0x0 //the 0x1C is discussed in a later section, go to 'how things work' for more info
                                                  setbyte 0x02023FD8 0x0
                                                  cmd49 0x0 0x0
                                                  end

                                                  Actual forme change ASM (AAAAAA)
                                                  Spoiler:
                                                  Code:
                                                  .thumb
                                                  @in this example, pirouette form is 0xF1, and aria is 0xF0
                                                  check_pkmn_id:
                                                   push {lr}
                                                   ldr r0, attacking_bank
                                                   ldrb r1, [r0] @which mon did the attack
                                                   ldr r0, ram_pointer
                                                   ldr r0, [r0]
                                                   add r0, r0, #0x60
                                                   cmp r1, #0x0
                                                   beq set_player_singles
                                                   cmp r1, #0x1
                                                   beq set_enemy_singles
                                                   cmp r1, #0x2
                                                   beq set_player_doubles
                                                   cmp r1, #0x3
                                                   beq set_enemy_doubles
                                                  get_battle_struct:
                                                   ldr r0, attacking_bank
                                                   ldrb r1, [r0] @which mon did the attack
                                                   mov r0, #0x58 @length of battle structs
                                                   mul r1, r0, r1 @multiplies length of battle structs with which mon did the attack to get the the battle structure i'm working with
                                                   ldr r0, battle_struct
                                                   add r0, r1, r0 @r0 is the battle struct i'm working with
                                                  check_if_aria:
                                                   add r2, r2, #0x20
                                                   ldrh r1, [r2]
                                                   cmp r1, #0xF0
                                                   bne end
                                                  set_pirouette_forme:
                                                   mov r1, #0xF1
                                                   strh r1, [r0] @species in battle struct is now the correct thing
                                                   strh r1, [r2] @species in party is now pirouette's
                                                   sub r2, r2, #0x20 @makes r2 go to the beginning of the party again
                                                   push {r0}
                                                   mov r0, r2
                                                   mov r1, r2
                                                   push {r2}
                                                   ldr r3, calc_stats
                                                   bl jump @stats should be calculated
                                                   pop {r2}
                                                   pop {r0} @r2 is the beginning of the party slot, r0 is the beginning of the battle struct
                                                  update_type:
                                                   add r0, #0x22
                                                   mov r1, #0x1
                                                   strb r1, [r0] @second type in battle struct is now fighting
                                                  update_battl_struct:
                                                   sub r0, r0, #0x20
                                                   add r2, r2, #0x5A @r0 is at the attack stat, r2 is at the party attack stat
                                                   mov r3, #0x0
                                                  stat_loop:
                                                   ldrh r1, [r2]
                                                   strh r1, [r0]
                                                   add r0, r0, #0x2
                                                   add r2, r2, #0x2
                                                   add r3, r3, #0x1
                                                   cmp r3, #0x4
                                                   bne stat_loop
                                                  end:
                                                   pop {pc}
                                                  jump:
                                                   mov pc, r3
                                                  set_player_singles:
                                                   ldrb r0, [r0]
                                                   lsr r0, #0x4 @only one digit is left
                                                   mov r1, #0x64 @length of party entry
                                                   ldr r2, player_party
                                                   mul r0, r0, r1
                                                   add r2, r0, r2 @gets r2 to the correct slot
                                                   b get_battle_struct
                                                  set_enemy_singles:
                                                   add r0, r0, #0x3 @gets to party order for enemy
                                                   ldrb r0, [r0]
                                                   lsr r0, #0x4
                                                   mov r1, #0x64
                                                   ldr r2, enemy_party
                                                   mul r0, r0, r1
                                                   add r2, r0, r2
                                                   b get_battle_struct
                                                  set_player_doubles:
                                                   ldrb r0, [r0]
                                                   lsl r0, #0x1C
                                                   lsr r0, #0x1C @gets the second pokemon's location
                                                   mov r1, #0x64
                                                   ldr r2, player_party
                                                   mul r0, r0, r1
                                                   add r2, r0, r2
                                                   b get_battle_struct
                                                  set_enemy_doubles:
                                                   add r0, r0, #0x3
                                                   ldrb r0, [r0]
                                                   lsl r0, #0x1C
                                                   lsr r0, #0x1C 
                                                   mov r1, #0x64
                                                   ldr r2, enemy_party
                                                   mul r0, r0, r1
                                                   add r2, r0, r2
                                                   b get_battle_struct
                                                  .align 2
                                                  battle_struct: .word 0x02023BE4
                                                  player_party: .word 0x02024284
                                                  enemy_party: .word 0x0202402C
                                                  order_pointer: .word 0x02023FE8
                                                  attacking_bank: .word 0x02023D6B
                                                  calc_stats: .word 0x0803E47C
                                                  ram_pointer: .word 0x02023FE8

                                                  Revert (BBBBBB)
                                                  Spoiler:
                                                  Code:
                                                  .thumb @the hooks decide whether or not to use the enemy's party table or
                                                  .align 2 @the player's, that's why they're not here.
                                                  start:
                                                   push {lr}
                                                   add r0, r0, #0x20
                                                  loop:
                                                   ldrh r1, [r0]
                                                   cmp r1, #0xF1 @compares the species to pirouette forme
                                                   beq push_hp @if the pokemon is pirouette forme, reverts the pokemon
                                                   add r0, r0, #0x64 @goes to the next slot
                                                   add r2, r2, #0x1 @sets counter to one more
                                                   cmp r2, #0x5 @checks if whole party has been scanned
                                                   bne loop @if it hasn't happened 6 times it'll loop again
                                                  skip:
                                                   pop {pc} @ends if nothing in the party is pirouette forme
                                                  push_hp:
                                                   add r0, r0, #0x36
                                                   ldrh r3, [r0]
                                                   mov r4, r0
                                                   push {r3}
                                                   push {r4}
                                                  revert:
                                                   mov r1, #0xF0
                                                   strh r1, [r0] @makes species aria forme
                                                   sub r0, r0, #0x56 @makes r0 the beginning of the party
                                                   mov r1, r0 @r0 and r1 should be the same
                                                   ldr r2, calc_stats
                                                   bl jump
                                                  fix_hp:
                                                   pop {r4}
                                                   pop {r3} @r3 is the current hp, r4 is the offset of that
                                                   strh r3, [r4]
                                                  continue:
                                                   pop {pc} @ends
                                                  jump:
                                                   mov pc, r2 @executes calc_stats
                                                  .align 2
                                                  calc_stats: .word 0x0803E47C

                                                  Hook just about everwhere.
                                                  Spoiler:
                                                  The switch check (credit to MrDollSteak for his Regenerator code)
                                                  Code:
                                                  .text @00 48 00 47 XX+1 XX XX 08 00 00 at 02CCDC
                                                  .align 2
                                                  .thumb
                                                  .thumb_func
                                                  .global regenerator
                                                  check_active:
                                                   cmp r0, #0x1
                                                   beq set_enemy
                                                   cmp r0, #0x3
                                                   beq set_enemy
                                                   push {r0-r4}
                                                   ldr r0, player_party
                                                  revert:
                                                   ldr r1, revert_to_aria
                                                   bl jump_with_r1
                                                   ldr r0, ram_loc
                                                   mov r1, #0x0
                                                   strh r1, [r0]
                                                   pop {r0-r4}
                                                  AbilityBuffer:
                                                   add r0, r1, r3
                                                   add r0, #0x20
                                                   ldrb r0, [r0]
                                                  RegeneratorCheck:
                                                   cmp r0, #0x91
                                                   beq Regenerator
                                                  NaturalCureCheck:
                                                   cmp r0, #0x1E
                                                   bne NoAbility
                                                  NaturalCure:
                                                   ldr r0, .Return
                                                   bx r0
                                                  NoAbility:
                                                   ldr r0, .Return2
                                                   bx r0
                                                  Regenerator:
                                                  GetHP:
                                                   add r3, #0x28
                                                   add r3, r1, r3
                                                   ldrh r0, [r3, #0x4]
                                                   mov r1, #0x20
                                                   mul r0, r1
                                                   mov r1, #0x60
                                                   push {r3}
                                                   bl Divide
                                                   pop {r3}
                                                   ldrh r1, [r3]
                                                   add r0, r0, r1
                                                  CheckHP:
                                                   ldrh r2, [r3, #0x4]
                                                   cmp r0, r2
                                                   ble StoreHP
                                                  MaxHP:
                                                   mov r0, r2
                                                  StoreHP:
                                                   strh r0, [r3]
                                                  BufferHealthChange:
                                                   ldr r2, .CommandTable
                                                   ldrb r1, [r4]
                                                   ldr r0, .RamLoc
                                                   ldr r0, [r0]
                                                   add r0, r1, r0
                                                   add r0, #0x58
                                                   ldrb r0, [r0]
                                                   lsl r0, r0, #0x2
                                                   add r0, r0, r2
                                                   ldrb r2, [r0]
                                                   mov r0, r1
                                                   mul r0, r6
                                                   add r0, r0, r3
                                                   str r0, [sp]
                                                   mov r0, #0x0
                                                  HealthChangeIndex:
                                                   mov r1, #0x2A
                                                  Success:
                                                   ldr r3, .Return3
                                                   bx r3
                                                  Divide:
                                                   ldr r3, .DivideLoc
                                                   bx r3
                                                  set_enemy:
                                                   push {r0-r4}
                                                   ldr r0, enemy_party
                                                   b revert
                                                  jump_with_r1:
                                                   mov pc, r1
                                                  .align 2
                                                  .Return: .word 0x0802CCE7
                                                  .Return2: .word 0x0802CD1B
                                                  .CommandTable: .word 0x0825E45C
                                                  .RamLoc: .word 0x02023FE8
                                                  .Return3: .word 0x0802CD0F
                                                  .DivideLoc: .word 0x081E4019
                                                  revert_to_aria: .word 0x08BBBBBB
                                                  player_party: .word 0x02024284
                                                  enemy_party: .word 0x0202402C
                                                  ram_loc: .word 0x020370D4
                                                  Faint hook
                                                  Code:
                                                  .thumb @00 4B 9F 46 XX XX XX 08 at 0x326C4
                                                  .align 2
                                                  faint_hook:
                                                   add r0, r2
                                                   push {r0-r3}
                                                   ldr r0, player_party
                                                   ldr r3, revert_to_aria
                                                   bl call_via_r3
                                                   ldr r0, ram_loc
                                                   mov r1, #0x0
                                                   strh r1, [r0]
                                                   pop {r0-r3}
                                                  continue:
                                                   ldr r3, =(0x08035244 + 1)
                                                   bl call_via_r3
                                                   mov r1, #0x40
                                                   ldr r3, =(0x080326CC + 1)
                                                  call_via_r3:
                                                   bx r3
                                                  .align 2
                                                  revert_to_aria: .word 0x08BBBBBB + 1
                                                  player_party: .word 0x02024284
                                                  ram_loc: .word 0x020370D4
                                                  End battle hook
                                                  Code:
                                                  .thumb @00 48 00 47 XX+1 XX XX 08 at 0x159DC
                                                  start:
                                                   push {r0-r4}
                                                   ldr r0, player_party
                                                   ldr r1, revert
                                                   bl jump
                                                   ldr r0, ram_loc
                                                   mov r1, #0x0
                                                   strh r1, [r0]
                                                   pop {r0-r4}
                                                   ldr r1, =(0x03004F84)
                                                   ldr r0, =(0x08015A31)
                                                   str r0, [r1]
                                                   ldr r1, =(0x0300537C)
                                                   ldr r0, =(0x080159E5)
                                                   bx r0
                                                  jump:
                                                   mov pc, r1
                                                  .align 2
                                                  revert: .word 0x08BBBBBB
                                                  ram_loc: .word 0x020370D4
                                                  player_party: .word 0x02024284

                                                  For you more attentive people out there, here are the things that work behind the scenes to make this work.
                                                  Spoiler:
                                                  Fixing the weird fading palette thing from Transform
                                                  Code:
                                                  .thumb @00 48 87 46 XX XX XX 08 at 0x34FFC
                                                  start:
                                                   ldr r0, current_move
                                                   ldrh r0, [r0]
                                                   cmp r0, #0x90 @compares move to Tranform
                                                   bne nopalfade
                                                  continue:
                                                   ldr r3, thing
                                                   mov r0, r10
                                                   mov r1, #0x10
                                                   mov r2, #0x6
                                                   ldr r4, palfade
                                                   bl jump
                                                   ldr r1, return
                                                   mov pc, r1
                                                  nopalfade:
                                                   ldr r0, return2
                                                   mov pc, r0
                                                  jump:
                                                   mov pc, r4
                                                  .align 2
                                                  current_move: .word 0x02023D4A
                                                  thing:  .word 0x7FFF
                                                  palfade: .word 0x08045274
                                                  return:  .word 0x08035008
                                                  return2: .word 0x08035036
                                                  Here's the reason that we're even talking about the 0x1C animation and Transform.
                                                  Spoiler:
                                                  There is a pointer at 0x34150. This pointer is the pointer to the playanimation table. Go to where that's pointing to, and copy 0x70 bytes and place that in free space. Right after that, write 11 28 1D 08, which is the pointer to the Transform animation.
                                                  That's animation number 0x1C. If you know you've expanded this in the past(I think Mega Evolution by Touched does this), then you'll add 4 bytes to the amount you're copying, and add 1 to the 1C(or more if you've done it more times).

                                                  Here's how to make this compatible with mega-evolutions if you've already added them(apply mega evolutions first if at all)
                                                  Spoiler:
                                                  Go to 0x326C8 in a hex editor, and you'll see a pointer. Add 3 to that pointer, and then follow the new pointer in a dissassembler. VBA has one built in. There should be a bl (some random offset). We'll call that YYYYYY.
                                                  Fixing the faint hook; after the first bl call_via_r3, write
                                                  ldr r0, player_party
                                                  ldr r3, revert_mega
                                                  bl call_via_r3
                                                  Go to the .align 2 at the bottom and add a new line. It'll be revert_mega: .word 0x08YYYYYY + 1
                                                  Fixing the exit battle hook; after bl jump, write
                                                  ldr r0, player_party
                                                  ldr r1, revert_mega
                                                  bl jump
                                                  Go to the .align 2 at the bottom and add a new line. It'll be revert_mega: .word 0x08YYYYYY
                                                  You do not need to add the + 1 this time.


                                                  ~EDIT~ now completely bug free yay
                                                  This is indeed great... but it only checks Pokémon from 0x0 to 0xFF

                                                  I made the compare part like this
                                                  mov r2, #0xFF
                                                  lsl r2, r2, #0x2
                                                  add r2, r2, #0
                                                  cmp r1, r2

                                                  but that didn't work...

                                                  what if the Pokèmon's index number is 0x2CF?

                                                  It would be nice if it supports Pokemon above 0xFF
                                                  Reply With Quote
                                                    #400    
                                                  Old August 1st, 2018 (5:11 PM).
                                                  Super Versekr Dark Super Versekr Dark is offline
                                                     
                                                    Join Date: Jan 2017
                                                    Gender: Male
                                                    Posts: 18
                                                    Quote:
                                                    Originally Posted by AkameTheBulbasaur View Post
                                                    Some people (like me) may not have known that Volt Tackle has another effect besides recoil past generation IV. From Diamond/Pearl onward, Volt Tackle has a 10% chance to paralyze.

                                                    To get that in FireRed, replace Battle Scrip 198 with this:
                                                    Spoiler:
                                                    #dynamic 0x180000
                                                    #freespacebyte 0xFF

                                                    #org @CheckMove
                                                    setbyte 0x2023E85 0xE6
                                                    jumpifhalfword 0x0 0x2023D4A 0x158 @VoltTackle
                                                    goto 0x1D6900

                                                    #org @VoltTackle
                                                    attackcanceler
                                                    accuracycheck 0x81D695E 0x0
                                                    attackstring
                                                    ppreduce
                                                    calculatedamage
                                                    attackanimation
                                                    waitanimation
                                                    missmessage
                                                    cmd5c 0x0
                                                    waitstate
                                                    graphicalhpupdate 0x0
                                                    datahpupdate 0x0
                                                    critmessage
                                                    waitmessage 0x40
                                                    resultmessage
                                                    waitmessage 0x40
                                                    seteffectwithchancetarget
                                                    jumpiftype 0x0 0xD 0x81D694E
                                                    setbyte 0x2023E85 0x5
                                                    seteffectwithchancetarget
                                                    faintpokemon 0x0 0x0 0x0
                                                    goto 0x81D694E


                                                    The above routine takes into account whether the opponent is Electric Type, and if they are, bypasses the paralysis chance. You can do this with other attacks too by using these three scripts:

                                                    Replace Battle Script 6 with this:
                                                    Spoiler:
                                                    #dynamic 0x180000
                                                    #freespacebyte 0xFF

                                                    #org @TypeCheck
                                                    jumpiftype 0x0 0xD 0x1D6900
                                                    goto 0x81D6A6B

                                                    This just checks the Type of the opponent, and if they are an Electric Type, just goes straight to the damage calculation script.

                                                    Replace Battle Script 152 with this:
                                                    Spoiler:
                                                    #dynamic 0x170000
                                                    #freespacebyte 0xFF

                                                    #org @Main
                                                    jumpiftype 0x0 0xD 0x81D6926
                                                    setbyte 0x2023E85 0x5
                                                    goto 0x81D6926


                                                    Replace Battle Script 67 with this:
                                                    Spoiler:
                                                    #dynamic 0x180000
                                                    #freespacebyte 0xFF

                                                    #org @Start
                                                    attackcanceler
                                                    attackstring
                                                    ppreduce
                                                    jumpifhalfword 0x0 0x2023D4A 0x4E @StunSpore
                                                    jumpiftype 0x0 0xD 0x81D7E04
                                                    goto 0x81D71E5

                                                    #org @StunSpore
                                                    jumpiftype 0x0 0xC 0x81D7E04
                                                    jumpiftype 0x0 0xD 0x81D7E04
                                                    goto 0x81D71E5

                                                    This also includes the check for Stun Spore. If the opponent is a Grass Type, it will have no effect.

                                                    Of course, I have checks for the other spore moves.

                                                    Replace Battle Script 66 with this:
                                                    Spoiler:
                                                    #dynamic 0x180000
                                                    #freespacebyte 0xFF

                                                    #org @Start
                                                    attackcanceler
                                                    attackstring
                                                    ppreduce
                                                    jumpifhalfword 0x0 0x2023D4A 0x4D @CheckType
                                                    goto 0x81D7184

                                                    #org @CheckType
                                                    jumpiftype 0x0 0xC 0x81D7E04
                                                    goto 0x81D7184


                                                    Replace Battle Script 1 with this:
                                                    Spoiler:
                                                    #dynamic 0x180000
                                                    #freespacebyte 0xFF

                                                    #org @Start
                                                    attackcanceler
                                                    attackstring
                                                    ppreduce
                                                    jumpifhalfword 0x0 0x2023D4A 0x4F @CheckType
                                                    jumpifhalfword 0x0 0x2023D4A 0x93 @CheckType
                                                    goto 0x81D6970

                                                    #org @CheckType
                                                    jumpiftype 0x0 0xC 0x81D7E04
                                                    goto 0x81D6970


                                                    I also have a script for "100% Accurate When Used by a Poison Type" Toxic for FireRed (there was one for Emerald but not for FireRed).

                                                    Replace Battle Script 33 with this:
                                                    Spoiler:
                                                    #dynamic 0x180000
                                                    #freespacebyte 0xFF

                                                    #org @Toxic
                                                    jumpiftype 0x1 0x3 @AccuracyBypass
                                                    goto 0x81D6DE0

                                                    #org @AccuracyBypass
                                                    attackcanceler
                                                    jumpifspecialstatusflag 0x0 0x400C0 0x0 0x1D695E
                                                    attackstring
                                                    ppreduce
                                                    jumpifability 0x0 0x11 0x81D6E4F
                                                    jumpifsecondarystatus 0x0 0x1000000 0x81D7DF2
                                                    jumpifstatus 0x0 0x8 0x81D6E41
                                                    jumpifstatus 0x0 0x80 0x81D6E41
                                                    jumpifstatus 0x0 0xFF 0x81D7DF2
                                                    jumpiftype 0x0 0x3 0x81D7E04
                                                    jumpiftype 0x0 0x8 0x81D7E04
                                                    goto 0x81D6E27


                                                    Last but not least, in the current games, Ghost Types are no longer affected by trapping moves like Mean Look or by abilities like Shadow Tag. I haven't updated the abilities yet, but if you want Mean Look (and any move that uses its script) to not affect Ghost Types...

                                                    Replace Battle Script 106 with this:
                                                    Spoiler:
                                                    #dynamic 0x180000
                                                    #freespaceyte 0xFF

                                                    #org @start
                                                    attackcanceler
                                                    attackstring
                                                    ppreduce
                                                    jumpiftype 0x0 0x7 0x81D7E04
                                                    goto 0x81D76D7


                                                    Whew! That was a lot! I'm not sure if this stuff is already on here, but I wasn't able to find it anywhere. Hopefully at least one of these things haven't been posted yet haha.

                                                    this only works for FR?
                                                    Reply With Quote
                                                    Reply

                                                    Quick Reply

                                                    Join the conversation!

                                                    Create an account to post a reply in this thread, participate in other discussions, and more!

                                                    Create a PokéCommunity Account
                                                    Thread Tools

                                                    Posting Rules
                                                    You may not post new threads
                                                    You may not post replies
                                                    You may not post attachments
                                                    You may not edit your posts

                                                    BB code is On
                                                    Smilies are On
                                                    [IMG] code is On
                                                    HTML code is Off

                                                    Forum Jump


                                                    All times are GMT -8. The time now is 5:09 PM.