View Single Post
  #1    
Old October 15th, 2012, 09:41 PM
itman
Back to ROM hacking. :D
 
Join Date: May 2007
Age: 20
Nature: Adamant
This is a tutorial on how to add new moves to Pokemon Fire Red without replacing old ones, and a start on creating new move effects. This info was founded by Jambo51, and the original thread can be found here:

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

Due to it being a tad confusing to some (because it was never written to be a tutorial in the first place), I thought I would make it easier to follow because this is huge, and I feel like many hacks could benefit from this. This is for Fire Red BPRE 1.0 (aka FR US 1.0) by the way. To know if you have a BPRE ROM, load it up and watch the title screen. If the "Presents" after the Gamefreak symbol doesn't show up, you have BPRE. I hope this makes it easier for people to understand how to do it.

What's needed:
1. FIre Red BPRE 1.0 ROM (aka FR US 1.0)
2. A Hex Editor (I'll be using Hex Workshop).
3. Pokemon Game Editor by Gamer2020. (Download it here: http://www.pokecommunity.com/showthread.php?t=265635).
4. As Jambo excellently puts it, *PATIENCE*.


PART ONE - ADDING NEW MOVES WITHOUT REPLACING EXISTING ONE

Step One
Spoiler:
Open up your ROM in a hex editor (once again, I'll be using hex workshop).

Spoiler:





Step Two

Spoiler:
Goto address 0x250C04.

This is the address of the original move data, which we are going to be moving to a different location.

Spoiler:









Step Three

Spoiler:
Edit > Select Block > 4260 Bytes. Copy.

Spoiler:









Step Four

Spoiler:
Open up Free Space Finder and search for 4260 Bytes of Free Space. Goto that address. For this example, we'll use 0x900000.

Free Space = FF's. Basically, anything from 0x780000 - 0xFFFFFF is free space.

Spoiler:






Step Five

Spoiler:
Paste the original move data in the new location.

IMPORTANT: Paste OVER the FF's. So go to Edit > Select Block > 4260, and then paste there. DO NOT PASTE WITHOUT HIGHLIGHTING THE FF'S FIRST.

WRITE DOWN THIS ADDRESS!!! So in my case, I'd write down 0x900000 = Move data.

Spoiler:














Step Six

Spoiler:
Change all the original pointers to the original move data to your new location.

This means, basically, that anything that is directed to the old location will be sent to the new location. So, in my case, 0x900000 is the new location. I want to first go to Edit > Find .

Spoiler:





That is what will show up. Since the old table was located at 0x250C04, any pointer to that data will look like this:

Spoiler:
04 0C 25 08


So we want to search for that string of bytes in the ROM.

Spoiler:


And then replace EVERY one with our new pointer, in my case, 0x900000, which becomes:

Spoiler:
00 00 90 08


*Quick lesson on pointers.*

1. First look at your offset. Example offset: 0x594039
2. Break it into sets of two's: 59 40 39
3. Take the last byte and put it first: 39 59 40
-Remember, the two numbers together is one byte, so don't rearrange the byte itself, just the order.
4. Take the last byte and put it between the two other bytes: 39 40 59
5. Add 08 to the end: 39 40 59 08

Another example real quick:
0xA9EBB0 becomes B0 EB A9 08
Basically you're just reversing the bytes and adding 08.

*End of quick lesson*

So once again, we're replacing all of the pointers to 0x250C04 to 900000. Just keep on searching for that string and replacing them until there are no more left to be replaced.

Seriously, there are A LOT, so BE PATIENT.

Spoiler:









Step Seven

Spoiler:
Edit > Find (again).

There are ALSO pointers in the ROM to 0x250C08...for PP data. So, we once again have to replace all of those pointers with your new pointer + 4. So, 0x900000 + 4 is 0x900004.


So the pointers to 0x250C08 will look like this: 08 0C 25 08

And the replacement pointer of 0x900004 looks like this: 04 00 90 08

Spoiler:











Now replace all of those! There are a lot of these too, so be patient.



Step Eight

Spoiler:
Go back to the original move table data (0x250C04) and copy (12*number of new attacks) you want to add.
The maximum that the table can hold is 511. There are already 354 moves though. So in this example, I want to to the maximum; 511-354 is 157. So 12*157 is 1884.

Now do Edit > Select Block > 1884 and copy that data.

Spoiler:









Step Nine

Spoiler:
Return to where you put your new move data from before (in my case 0x900000). Go to the end of the data (where the FF's begin again). Once again; Edit > Select Block > 1884. And then paste.

Spoiler:


















Step Ten

Spoiler:
Goto address 0x247094. Edit > Select Block > 4615.
Copy that data.

This is the data for attack names.

Spoiler:















Step Eleven

Spoiler:
Open up Free Space Finder and search for 4615 bytes of free space. To make things easier, you can put this data right after the move data. Write down the offset you inserted this at! In my case, I'm pasting it at 0x901800.

Spoiler:












Step Twelve

Spoiler:
Much like before, we need to change all of the pointers associated with the old location and direct them to our new location. Edit > Find.

Any pointer to 0x247094 will look like 94 70 24 08

So that's what we'll search.
Once again, there's more than one!

I'll be replacing mine with 00 18 90 08.

Spoiler:












Step Thirteen

Spoiler:
Go back to 0x247094 and copy (13*number of new attacks) bytes. We'll add this onto the end of the other table just like we did with the move data. Once again, we want the table to support up to 511 moves, so 157*13 is 2041.

Now do Edit > Select Block > 2041, and copy that data.

Spoiler:












Step Fourteen

Spoiler:
Return back to your new location for the attack names data (mine was 0x901800) and go to the end of the data. Once at the bottom, once again, Edit > Select Block > 2401 and paste.


Spoiler:












Step Fifteen

Spoiler:
Goto 0x1C68F4. Edit > Select Block > 1420. Copy.

This is the animation data. The new moves wouldn't work without some sort of animation to go along with them...

Spoiler:









Step Sixteen

Spoiler:
Open up Free Space Finder and search for 1420 bytes. (Or if you know you have room, paste this data right after the new attack names data). Edit > Select Block > 1420 and paste the data. MAKE SURE the offset you paste the data on ends with a 0, 4, 8, or C, OR IT WILL NOT WORK. So the offset I'm pasting mine it is 0x90336C.

Spoiler:












Step Seventeen

Spoiler:
Edit > Find > F4 68 1C 08

Yep, you guessed it, we have to change the pointer to that data to the one of our new one. I'm pretty sure there is only one, but check just to be safe. So I will change it to 0x90336C.

So my pointer will look like this: 6C 33 90 08.

Spoiler:












Step Eighteen

Spoiler:
Go back to 0x1C68F4 and copy (4*number of new attacks) bytes. 157*4 is 628. So Edit > Select Block > 628. Copy.

Spoiler:









Step Nineteen

Spoiler:
Once again, you can open Free Space Finder and search for 628 free blocks, or to make things easier once again, just post this directly underneath the third set of data that you just placed (the animation data).

A note, each move will have an animation. As of now, each move will inherit the animations of the first however many attacks you added, so new attack number 1 (#335) will have pound's animation, etc...

Spoiler:












Step Twenty

Spoiler:
Open up Pokemon Game Editor's INI (Should be in a folder that says "ini" that came with the program).

Or you can open up Pokemon Game Editor, go to "Help", and click "Edit roms.ini".

Spoiler:



Step Twenty-One

Spoiler:
Change the offsets so it knows where the new location of your attack data and such is.

The only things we need to change are these three things:

NumberOfAttacks=354
AttackData=&H250C04
AttackNames=&H247094

We want to change those to our new offsets. Here is what mine will look like (and yours too, if you followed the tutorial).

NumberOfAttacks=511
AttackData=&H900000
AttackNames=&H901800

Spoiler:


















Step Twenty-Two

Spoiler:
Lastly, there is one limiter in the ROM. If it is not disabled, instead of saying "Bulbasaur used VenoShock!", it will say "Bulbasaur used a POISON move!".

Go to 0xD75Fc and overwrite whatever is there with:

00 00 00 00 00 00

Spoiler:






From Here...

Spoiler:
You can now easily edit these moves in Pokemon Game Editor's built in Attack Editor. To put these moves into existing movesets, use Pokemon Game Editor's built in Pokemon Editor.




PART 2 - CREATING NEW MOVE EFFECTS

Step One

Spoiler:
Open up your ROM in your hex editor and go to
address 0x1D65A8. Edit > Select Block > 856. Copy.

This is the move effect table. Right now it only goes up to 213, but by rewriting it we can make it support up to 255 (256, since 0 counts) pointers.


Spoiler:









Step Two

Spoiler:
Open up Free Space Finder and search for 856 bytes of free space. Go to that location (I'll use 0x910000 in my example). Edit > Select Block > 856. Paste.


Spoiler:












Step Two and a Half (hehe)

Spoiler:
Edit > Find > A8 65 1D 08 (again, changing the pointers from the original table to our new table). I would be changing them to 00 00 91 08 (By now, I hope everyone understands how pointers work!). Replace them all.

Spoiler:









Step Three

Spoiler:
Go to the end of your new move effects table. The last pointer, which is 5F 86 1D 08 is actually marking the end of the table. So the pointer before that (which is FB 85 1D 08) is actually the last effect in the table (#213).

We want to add a new effect, so what we are going to to is overwrite the last pointer (5F 86 1D 08) with a new pointer. Normally you would make your move effect first, and then search for free space to put it, and then make your new pointer, but for the sake of this tutorial we are going to say that my new move will be located at 0x920000.

Spoiler:












Step Four

Spoiler:
Here is where we actually make new move effects.

Just a briefing, we can't (yet) create COMPLETELY new move effects, but we can combine and edit any of the existing ones available. With much testing and experimenting, you can create almost all of the moves from Gen 1V and V. I managed to create a working U-Turn/Volt Tackle even from editing Baton Pass's script (look at the end of this tutorial for move effects already created).

For this tutorial, I am going to make the move Hammer Arm.

Hammer Arm's effect is simple - After using it, your speed gets lowered by one. Hmmm...

Let's think for a second. What other moves have effects that can help us create this one...in reality, there are MANY. Let's go with another move that lowers your stats...

There are many, but let's go with Psycho Boost (after using Psycho Boost, your special attack is lowered by two.

Go to the location of your new move effect table. (If you followed this tutorial, it's at 0x910000). To find where Psycho Boost's pointer is, we need to first find what effect number it uses.

Chaos Rush posted a list of them for us in the other thread. It saves everyone A LOT of trouble, so I'll post it here.

Spoiler:
0 = no added effect
1 = puts target to sleep
2 = posion the target
3 = abosrbs half the damage inflicted (Absorb, Mega Drain, etc.)
4 = burn the target
5 = freeze the target
6 = paralyze the target
7 = Selfdestruct, Explosion
8 = takes 1/2 of damage inflicted on sleeping foe (Dream Eater)
9 = Mirror Move
10 = raises user's Attack
11 = raises user's Defense
12 = raises user's Speed
13 = raises user's Special Attack
14 = raises user's Special Defense
16 = raises user's evasion
17 = never misses
18 = lowers opponent's Attack
19 = lowers opponent's Defense
20 = lowers opponent's Speed
21 = lowers opponent's Special Attack
22 = lowers opponent's Special Defense
23 = lowers opponent's Accuracy
24 = lowers opponent's evasion
25 = Haze (there's many effects associated exclusively with this move)
26 = Bide
27 = Thrash/Petal Dance/Outrage
28 = Whirlwind/Roar effect
29 = happens 2-5 times
30 = Conversion
31 = may cause flinching
32 = Recover 1/2 of maximum HP
33 = badly poisons foe
34 = Pay Day
35 = Light Screen
36 = may freeze, paralyze, or burn
37 = Rest
38 = 1-hit KO
39 = takes 2 turns + high critical hit ratio (Razor Wind)
40 = always cuts half of foe's current HP
41 = always do 40 HP damage (Dragon Rage)
42 = Bind/Fire Spin/Clamp/Whirlpool effect
43 = high critical hit ratio
44 = hits twice (Double Kick)
45 = if miss, then user receives 1/8 of damage it would have dealt (Jump Kick)
46 = stops stat changes (Mist)
47 = raises user's critical-hit ratio
48 = recoil damage, 1/4 of damage (Take Down)
49 = Confuse target
50 = sharply raises users Attack
51 = sharply raises users Defense
52 = sharply raises users Speed
53 = sharply raises users Special Attack
54 = sharply raises users Special Defense
57 = Transform
58 = sharply reduces foe's Attack
59 = sharply reduces foe's Defense
60 = sharply reduces foe's Speed
61 = sharply reduces foe's Special Attack
62 = sharply reduces fow's Special Defense
65 = Reflect
66 = poisons the target (again, for some reason)
67 = paralyzes the target (again, for some reason)
68 = lower opponent's Attack
69 = lower opponent's Defense
70 = lower opponent's Speed
71 = lower opponent's Special Attack
72 = lower opponent's Special Defense
73 = lower opponent's accuracy
75 = takes 2 turns, may cause opponent to flinch
76 = may Confuse target
77 = hits twice, may poison opponent (Twineedle)
78 = never misses, but attacks second
79 = Substitute
80 = immobile next turn (Hyper Beam)
81 = raises user's Attack every time is hit (Rage)
82 = Mimic
83 = Metronome
84 = steals opponent HP every turn (Leech Seed)
85 = Splash
86 = Disable
87 = damage is equal to user's level (Seismic Toss/Night Shade)
88 = amount of damage done varies (Psywave)
89 = Counter
90 = Encore
91 = Pain Split
92 = can only use this attack if user is asleep (Snore)
93 = Conversion 2
94 = next move after will not miss (Mind Reader)
95 = Sketch
97 = Sleep Talk
98 = Destiny Bond
99 = inflicts more damage if user has less HP (Flail, Reversal)
100 = Spite (cuts opponent's PP)
101 = False Swipe (will never make opponent faint)
102 = heals all status problems
103 = always attacks first
104 = attacks 3 times, gets stronger each time (Triple Kick)
105 = steal foe's held item
106 = prevents foe from fleeing/switching
107 = inflicts 1/4 damage on sleeping foe (Nightmare)
108 = raises user's evasion, receives double damage from Stomp
109 = Curse
111 = Protect/Detect
112 = Spikes
113 = Foresight
114 = Perish Song
115 = Sandstorm
116 = Endure
117 = Rollout/Ice Ball
118 = Swagger
119 = Fury Cutter
120 = Attract
121 = higher attack power if Pokemon happiness is higher
122 = Present
123 = higher attack power if Pokemon happiness is lower
124 = prevents all status problems from user
125 = thaw out if frozen, may burn target (Flame Wheel/Sacred Fire)
126 = Magnitude
127 = Baton Pass
128 = Pursuit
129 = Rapid Spin (removes Fire Spin, Whirlpool, etc.)
130 = always do 20 HP damage (SonicBoom)
132 = Morning Sun
133 = Synthesis
134 = Moonlight
135 = Hidden Power
136 = Rain Dance
137 = Sunny Day
138 = 10% chance of raising user's Defense (Steel Wing)
139 = may raise user's Attack (Metal Claw)
140 = may raise user's Attack, Defense, Speed, Special Attack, and Special Defense
142 = maximizes Attack, HP is cut in half (Belly Drum)
143 = Psych Up
144 = Mirror Coat (special version of Counter)
145 = takes 2 turns, raises user's Defense (Skull Bash)
146 = may flinch opponent, double the damage if opponent uses Fly or Bounce
147 = does double the damage if opponent is using Dig
148 = Future Sight
149 = does double the damage is opponent is using Fly or Bounce
150 = may cause flinching + attack power is doubled if opponent used Minimize
151 = takes 2 turns, unless Sunny Day is in effect. Only 1/2 the damage if Rain Dance, Sandstorm, or Hail
152 = Thunder (there's many effects associated exclusively with this move)
153 = Teleport
154 = Beat Up
155 = takes 2 turns
156 = raises user's Defense, power of Rollout and Ice Ball is now doubled
157 = Softboiled/Milk Drink (Recover, but usable out of battle)
158 = Attacks first, causes flinching (Fake Out)
159 = Prevents sleep, attacks for 2-5 turns (Uproar)
160 = Stockpile
161 = Spit Up
162 = Swallow
164 = Hail
165 = Torment
166 = Confuses foe, but raises foe's Special Attack
167 = Burns the foe, but doesn't affect Fire types
168 = Memento
169 = Boosts Attack when burned, paralyzed, or poisoned
170 = takes 2 turns, but if hit user flinches (Focus Punch)
171 = Stronger against paralyzed foes, but heals the paralysis (SmellingSalt)
172 = Makes foes attack only the user (Follow Me)
173 = Nature Power
174 = Next electric move used is now stronger (Charge)
175 = Taunt
176 = Helping Hand
177 = Trades held items with foe
178 = copies opponent's special ability
179 = Wish
180 = attacks randomly with one of partner's moves (Assist)
181 = Ingrain
182 = lowers user's Attack and Defense
183 = Magic Coat
184 = Recycle
185 = double the damage if user was hurt by opponent in the same turn
186 = destroyes Light Screen and Reflect (Brick Break)
187 = Yawn
188 = opponent loses held item (Knock Off)
189 = Endeavor
190 = the higher user's HP, the more damage
191 = user swaps abilities with opponenet (Skill Swap)
192 = Imprison
193 = Refresh
194 = Grudge
195 = Snatch
196 = more damage on heavier foes (Low Kick)
197 = Secret Power
198 = recoil damage, 1/3 of damage (Double-Edge)
199 = confuses all Pokemon on the scene (Teeter Dance)
200 = high critical hit ratio + may cause burn (Blaze Kick)
201 = Mud Sport
202 = damage + badly poison target
203 = type and power depends on weather (Weather Ball)
204 = sharply lowers Special Attack after use (Overheat)
205 = lower's opponent's Attack and Defense (Tickle)
206 = raises user's Defense and Special Defense (Cosmic Power)
207 = can hit an opponent using Fly or Bounce (Sky Uppercut)
208 = raises user's Attack and Defense (Bulk Up)
209 = high critical hit ratio + poison
210 = Water Sport
211 = raises user's Special Attack and Special Defense (Calm Mind)
212 = raises user's Attack and Speed (Dragon Dance)
213 = Camouflage


According to this list, Psycho Boost uses effect number 204 (Same effect as Overheat). Now multiply 204*4, which is 816.

Edit > Select Block > 816.

Scroll to the end of your selected bytes. The pointer RIGHT AFTER the end of the selected blocks is the one we're looking for. This is because '0' is also a move effect. So the pointer of Psycho Boost's effect is 1B 84 1D 08, or address 0x1D841B.

Go to address 0x1D841B

Spoiler:















Step Five

Spoiler:
Now you are at the move effect for Psycho Boost. To know where the data ends, you need to navigate back to the pointer for Psycho Boost (where we just were before) and see the next closest pointer. I can see that another move effect has a pointer to 0x1D8426, so I know that Psycho Boost's effect is from addresses 0x1D841B to 0x1D8425.

Spoiler:



Step Six

Spoiler:
This is the data for Psycho Boost.

Addresses 0x1D841B - 0x1D8425

Spoiler:
2E 85 3E 02 02 FB 28 00 69 1D 08


As of right now, the user of this move will have their special attack lowered two stages. But we want the user's speed to be lowered one stage! In this case, all we need to change is a single byte.

To note, most moves end with the pointers 00 69 1D 08 (0x1D6900) or 4E 69 1D 08 (0x1D694E).

If your attack does damage, it'll use the first. If it doesn't, it'll use the second.

Now, the byte we need to change is the one I bolded:

Spoiler:
2E 85 3E 02 02 FB 28 00 69 1D 08


That byte (FB) is soley responsible for the special attack drop. Now, how do we turn it into a speed drop?

Here is a list of what you can do by changing this byte. These are the ones that work 100% of the time. Meaning, these effects will ALWAYS happen. There are more (I didn't test from 00-C0) but I'm sure they are the same effects, just with less of a chance of happening. I know 01 has a 10% chance of putting an opponent to sleep, 03 has a 10% chance of burning an opponent, etc...

Spoiler:

C1: Puts yourself to sleep.
C2: Poisons yourself.
C3: Burns yourself.
C4: Freezes yourself.
C5: Paralyzes yourself.
C6: Badly poisons yourself.
C7: Confuses yourself.
C9: Freezes opponent.
CA: Uproar's effect.
CB: Payday's effect.
CD: Sand Tomb's effect.
CE: 1/4 Recoil damage.
CF: Raises users attack one level.
D0: Raises users defense one level.
D1: Raises users speed one level.
D2: Raises users special attack one level.
D3: Raises users special defense one level.
D4: Raises users accuracy one level.
D5: Raises users evasion one level.
D6: Lowers users attack one level.
D7: Lowers users defense one level.
D8: Lowers users speed one level.
D9: Lowers users special attack one level.
DA: Lowers users special defense level.
DB: Lowers users accuracy level.
DC: Lowers users evasion one level.
DD: Takes a turn to recover (Hyper Beam, etc...)
DF: Thief's effect
E2: Users stats all raise one level (Except Accuracy and Evasion).
E5: Users attack and defense lower one level.
E6: 1/3 Recoil.
E7: Users attack raises two levels.
E8: Users defense raises two levels.
E9: Users speed raises two levels.
EA: Users special attack raises two levels.
EB: Users special defense raises two levels.
EC: Users accuracy raises two levels.
ED: Users evasion raises two levels.
EE: Users attack lowers two levels.
EF: Users defense lowers two levels.
F0: Users speed lowers two levels.
F1: Users special attack lowers two levels.
F2: Users special defense lowers two levels.
F3: Users accuracy lowers two levels.
F4: Users evasion lowers two levels.
F5: Outrage's effect.
F6: Knock Off's effect.
FB: Users special attack lowers two levels.


Anyway, we want one that ALWAYS lowers speed. So if you look, D8 ALWAYS lowers the users speed by one level. So our new move code is:

Spoiler:
2E 85 3E 02 02 D8 28 00 69 1D 08


Yay! We now have a working Hammer Arm!

So all we have to do is put this code where the we made the pointer for earliar in the move effect table (0x920000 in my case).

Spoiler:





Now, in Pokemon Game Editor, simply change the move effect of any move to 214 and it will use this effect!


But what if we want to add multiple effects?
For example, Flare Blitz?

Jambo51 made a way to do so.


DON'T MOVE ON UNLESS YOU UNDERSTAND EVERYTHING ELSE!

Spoiler:
I'll use his example from his thread.

Flare Blitz not only causes recoil, but also has a chance to burn the opponent

For these kinds of moves that require multiple effects, a different code is required.

If your attack does damage (in this case it will), start out with this code:

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00


This is our current code for Flare Blitz. All it does right now is cause damage.

Now, we need to add the recoil effect!

Remember how before we found Psycho Boost's effect location? Well in this case, we need to find an existing effect for recoil. Flare Blitz deals 1/3 recoil damage...hmmm...Double Edge does too!

Double Edge's effect (according to Chaos Rush's list) is number 198. So 198*4 is 792. So starting at the top of your new effect table;
Edit > Select Block > 792. The pointer after the highlighted area is the correct one. In this case, it's 3A 83 1D 08, or 0x1D833A.

Go to that location! However, before we go, let's see if we can find where the next closest pointer is to that location, so we know where double edge's effect ends. Right after it is the pointer to 0x1D8345, so we know that the last byte of Double Edge's effect is at 0x1D8344. Make sense? :)

This is what the code for double edge's effect is:

Spoiler:
2E 85 3E 02 02 E6 28 00 69 1D 08


You might be saying "Hmm...that looks exactly like the Hammer Arm code we just made, just with the byte set at E6!" That is exactly right. And if you look, E6 means it ALWAYS does 1/3 recoil damage. This makes sense now!

Now we add that onto the other code from before. We don't need the pointer at the end, however; we'll make our own later at the end of our custom move. So we can gedt rid of the 28 00 69 1D 08 (28 means "goto" in this case...we don't need that either).

Flare Blitz's current code should look like this:

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 2E 85 3E 02 02 E6


Now, we simply add a "15" after it. 15 is used to execute the effect, in this case executing the recoil damage.

Now our code looks like this:

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 2E 85 3E 02 02 E6 15


We need the chance to burn now! Now here's the goodnews: this is much easier to do. Changing our special byte to 03 makes it so there's a 10% chance to burn. SO, we can just take the recoil code, and change that byte that we all desperately love to 03.

Spoiler:
2E 85 3E 02 02 03 28 00 69 1D 08


We can now add that code onto our current Flare Blitz one. Once again, we'll remove the 28 00 69 1D 08, and add a 15 at the end.
Here is what it should look like as of now:

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 2E 85 3E 02 02 E6 152E 85 3E 02 02 03 15


And lastly, once you have finished your move, you add a goto command (28) and have it goto address 0x1D6947, or 47 69 1D 08.

So our final code for Flare Blitz is this:

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 2E 85 3E 02 02 E6 15 2E 85 3E 02 02 03 15 28 47 69 1D 08


Now you have one fully functional Flare Blitz!

A note: All effects, like per se a chance to flinch and burn, must share the same chance of happening! (Limitation of game's code). FURTHERMORE, do not make it so there's a chance of two status allignments happening at the same time: it will not work!



Now, for more complicated moves, other moves need to be dissected and experimented with to be found. The Hammer Arm code is my own, while the Flare Blitz code is Jambo's. Here are a few more. If you have successfully made a move effect, please let me know and I'll update it to this post.

Spoiler:
U-Turn/Volt Tackle - Made by Me (Itman)

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 4F 81 47 69 1D 08 50 01 F2 7D 1D 08 E2 01 3A 51 01 02 58 01 4C 01 4D 01 73 01 10 03 00 4E 01 01 3A 52 01 28 4E 69 1D 08 28 47 69 1D 08



Wake-Up Slap - Made by Me (Itman)

Spoiler:
1D 00 00 00 00 01 00 69 1D 08 2E 85 3E 02 02 A3 1C 00 07 00 00 00 77 04 90 08 28 00 69 1D 08 2E D2 3F 02 02 02 28 00 69 1D 08



Hammer Arm - Made by me (Itman)

Spoiler:
2E 85 3E 02 02 D8 28 00 69 1D 08



Flare Blitz - Made by Jambo51

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 2E 85 3E 02 02 E6 15 2E 85 3E 02 02 03 15 28 47 69 1D 08


Quiver Dance -Made by pawell6

Spoiler:
00 02 03 1D 00 00 00 00 01 F2 7D 1D 08 1C 00 07 00 00 00 B0 69 1D 08 84 CC 69 1D 08 1C 00 FF 00 00 00 F2 7D 1D 08 01 F2 7D 1D 08 00 00 1F 00 20 00 39 8B 1D 08 09 0A 2E 85 3E 02 02 52 15 2E 85 3E 02 02 53 15 2E 85 3E 02 02 51 15 28 47 69 1D 08


Coil - Made by Garuga17

Spoiler:
00 02 03 1D 00 00 00 00 01 F2 7D 1D 08 1C 00 07 00 00 00 B0 69 1D 08 84 CC 69 1D 08 1C 00 FF 00 00 00 F2 7D 1D 08 01 F2 7D 1D 08 00 00 1F 00 20 00 39 8B 1D 08 09 0A 2E 85 3E 02 02 CF 15 2E 85 3E 02 02 D0 15 2E 85 3E 02 02 D4 15 28 47 69 1D 08


Close Combat - Made by pawell6

Spoiler:
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 2E 85 3E 02 02 D7 15 2E 85 3E 02 02 DA 15 28 47 69 1D 08


Note: this guide does not cover assigning different animations other than the inherited ones. I will add it soon once I figure out how to do it. ;)

EDIT: Take a look at this thread to make custom animations, by Chaos Rush: http://www.pokecommunity.com/showthread.php?t=281520

EDIT2: Everyone do this too. Update PGE's ini file (Open up PGE, goto Help > Update > ROM ini file). Then, go to where we were changing the pointers for the attack data and such, and there should be a new pointer at the bottom that says "AttackAnimationPointer". Change that to your new location for the attack animations (the one originally at 0x1C68F4, in my examples I placed it at 0x90336C).

Last edited by itman; January 31st, 2013 at 11:13 PM.
Reply With Quote