summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSupercookieGIT <66376342+SupercookieGIT@users.noreply.github.com>2021-07-04 03:57:02 -0500
committerSupercookieGIT <66376342+SupercookieGIT@users.noreply.github.com>2021-07-04 03:57:02 -0500
commitc91970a8ece8f53e6c684a3579b97e9bba0edcd4 (patch)
tree1496a213b18e9649850dd6dc88bf56407d6d0f8f
parenta32ca04b9f0e00e9727736fb291f9fbf4bd5732a (diff)
Updated How to add a new Pokémon species (markdown)
-rw-r--r--How-to-add-a-new-Pokémon-species.md309
1 files changed, 230 insertions, 79 deletions
diff --git a/How-to-add-a-new-Pokémon-species.md b/How-to-add-a-new-Pokémon-species.md
index df7af65..480332a 100644
--- a/How-to-add-a-new-Pokémon-species.md
+++ b/How-to-add-a-new-Pokémon-species.md
@@ -18,7 +18,8 @@ In this tutorial, we will add a new Pokémon species to the game.
* [8. Easy Chat about your Pokémon](#8-easy-chat-about-your-pokémon)
* [9. Make it appear!](#9-make-it-appear)
* [Appendix](#appendix)
- * [Available Battle Animations](#available-battle-animations)
+ * [Available Front Animations](#available-front-animations)
+ * [Available Back Animations](#available-back-animations)
* [Pokémon ordered by height](#pokémon-ordered-by-height)
* [Pokémon ordered by weight](#pokémon-ordered-by-weight)
@@ -66,7 +67,7 @@ Edit [src/data/graphics/pokemon.h](../blob/master/src/data/graphics/pokemon.h):
```
The animated front picture is still missing.
-Edit [src/data/graphics/pokemon.h](../blob/master/src/data/graphics/pokemon.h):
+Edit [src/anim_mon_front_pics.c](../blob/master/src/anim_mon_front_pics.c):
```diff
const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/anim_front.4bpp.lz");
@@ -124,17 +125,39 @@ Edit [src/data/pokemon_graphics/front_pic_anims.h](../blob/master/src/data/pokem
};
```
-Because you are limited to two frames, there are already [predefined animations](#available-battle-animations), describing translations, rotations, scalings or color changes.
+Because you are limited to two frames, there are already [predefined animations](#available-front-animations), describing translations, rotations, scalings or color changes.
+Edit [src/pokemon.c](../blob/master/src/pokemon.c):
+```diff
+ static const u8 sMonFrontAnimIdsTable[] =
+ {
+ [SPECIES_BULBASAUR - 1] = ANIM_V_JUMPS_H_JUMPS,
+ ...
+ [SPECIES_CHIMECHO - 1] = ANIM_H_SLIDE_WOBBLE,
++ [SPECIES_MEWTHREE - 1] = ANIM_ANIM_GROW_VIBRATE,
+};
+
+There are also [predifined animations](#available-back-animations) for the back sprites as well.
Edit [src/pokemon_animation.c](../blob/master/src/pokemon_animation.c):
```diff
static const u8 sSpeciesToBackAnimSet[] =
{
- [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE,
...
- [SPECIES_CHIMECHO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
-+ [SPECIES_MEWTHREE] = BACK_ANIM_GROW_2,
+ [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC,
++ [SPECIES_MEWTHREE] = BACK_ANIM_GROW_STUTTER,
};
```
+If you want to delay the time between when the Pokémon appears and when the animation starts, you can add an entry to `sMonAnimationDelayTable`
+Edit [src/pokemon.c](../blob/master/src/pokemon.c):
+```diff
+ static const u8 sMonAnimationDelayTable[NUM_SPECIES - 1] =
+ {
+ [SPECIES_BLASTOISE - 1] = 50,
+ ...
+ [SPECIES_RAYQUAZA - 1] = 60,
++ [SPECIES_MEWTHREE - 1] = 15,
+};
+```
If you want your Pokémon to fly above the ground, you can add an entry to `gEnemyMonElevation`.
Edit [src/data/pokemon_graphics/enemy_mon_elevation.h](../blob/master/src/data/pokemon_graphics/enemy_mon_elevation.h):
@@ -149,7 +172,7 @@ Edit [src/data/pokemon_graphics/enemy_mon_elevation.h](../blob/master/src/data/p
```
## 4. Update the tables
-Edit [src/data/pokemon_graphics/front_pic_table.c](../blob/master/src/data/pokemon_graphics/front_pic_table.c):
+Edit [src/data/pokemon_graphics/front_pic_table.h](../blob/master/src/data/pokemon_graphics/front_pic_table.h):
```diff
const struct CompressedSpriteSheet gMonFrontPicTable[] =
{
@@ -163,7 +186,7 @@ Edit [src/data/pokemon_graphics/front_pic_table.c](../blob/master/src/data/pokem
};
```
-Edit [src/data/pokemon_graphics/still_front_pic_table.c](../blob/master/src/data/pokemon_graphics/still_front_pic_table.c):
+Edit [src/data/pokemon_graphics/still_front_pic_table.h](../blob/master/src/data/pokemon_graphics/still_front_pic_table.h):
```diff
const struct CompressedSpriteSheet gMonStillFrontPicTable[] =
{
@@ -185,17 +208,17 @@ Edit [src/data/pokemon_graphics/front_pic_coordinates.h](../blob/master/src/data
[SPECIES_CHIMECHO] =
{
.size = 0x37,
- .y_offset = 0x06,
+ .y_offset = 6,
},
+ [SPECIES_MEWTHREE] =
+ {
+ .size = 0x88,
-+ .y_offset = 0x00,
++ .y_offset = 0,
+ },
[SPECIES_EGG] =
{
.size = 0x33,
- .y_offset = 0x14,
+ .y_offset = 20,
},
...
};
@@ -223,17 +246,17 @@ Edit [src/data/pokemon_graphics/back_pic_coordinates.h](../blob/master/src/data/
[SPECIES_CHIMECHO] =
{
.size = 0x47,
- .y_offset = 0x07,
+ .y_offset = 7,
},
+ [SPECIES_MEWTHREE] =
+ {
+ .size = 0x78,
-+ .y_offset = 0x01,
++ .y_offset = 1,
+ },
[SPECIES_EGG] =
{
.size = 0x36,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
...
};
@@ -322,14 +345,8 @@ Edit [include/constants/species.h](../blob/master/include/constants/species.h):
+#define SPECIES_MEWTHREE 412
-#define SPECIES_EGG 412
+#define SPECIES_EGG 413
-
--#define SPECIES_UNOWN_B 413
-+#define SPECIES_UNOWN_B 414
- ...
--#define SPECIES_UNOWN_QMARK 439
-+#define SPECIES_UNOWN_QMARK 440
```
-Remember to increase the value of all species constants after Mewthree until SPECIES_UNOWN_QMARK by one.
+Remember to increase the value of SPECIES_EGG by one.
## 2. Devise a name
This name will be displayed in the game. It may be different than the identifier of the species constant, especially when there are special characters involved.
@@ -351,35 +368,24 @@ Edit [include/constants/species.h](../blob/master/include/constants/species.h):
```diff
// National Dex Index Defines
- #define NATIONAL_DEX_NONE 0
- #define NATIONAL_DEX_BULBASAUR 1
- ...
- #define NATIONAL_DEX_CELEBI 251
-
--#define NATIONAL_DEX_OLD_UNOWN_B 387
-+#define NATIONAL_DEX_OLD_UNOWN_B 388
+ #define NATIONAL_DEX_NONE 0
+ #define NATIONAL_DEX_BULBASAUR 1
...
--#define NATIONAL_DEX_OLD_UNOWN_Z 411
-+#define NATIONAL_DEX_OLD_UNOWN_Z 412
+ #define NATIONAL_DEX_DEOXYS 386
++#define NATIONAL_DEX_MEWTHREE 387
- #define NATIONAL_DEX_TREECKO 252
+-#define NATIONAL_DEX_COUNT NATIONAL_DEX_DEOXYS
++#define NATIONAL_DEX_COUNT NATIONAL_DEX_MEWTHREE
...
- #define NATIONAL_DEX_DEOXYS 386
- #define NATIONAL_DEX_CHIMECHO 358
-+#define NATIONAL_DEX_MEWTHREE 387
-
// Hoenn Dex Index Defines
- #define HOENN_DEX_NONE 0
- #define HOENN_DEX_BULBASAUR 203
+ #define HOENN_DEX_NONE 0
+ #define HOENN_DEX_TREECKO 1
...
- #define HOENN_DEX_CELEBI 386
-+#define HOENN_DEX_MEWTHREE 387
+ #define HOENN_DEX_CELEBI 386
++#define HOENN_DEX_MEWTHREE 387
--#define HOENN_DEX_OLD_UNOWN_B 387
-+#define HOENN_DEX_OLD_UNOWN_B 388
- ...
--#define HOENN_DEX_OLD_UNOWN_Z 411
-+#define HOENN_DEX_OLD_UNOWN_Z 412
+-#define HOENN_DEX_OLD_UNOWN_B (HOENN_DEX_CELEBI + 1)
++#define HOENN_DEX_OLD_UNOWN_B (HOENN_DEX_MEWTHREE + 1)
```
Edit [src/pokemon.c](../blob/master/src/pokemon.c):
@@ -409,15 +415,6 @@ Edit [src/pokemon.c](../blob/master/src/pokemon.c):
...
HOENN_TO_NATIONAL(OLD_UNOWN_Z),
};
-
- ...
- static const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] =
- {
- [SPECIES_BULBASAUR - 1] = 0x06,
- ...
- [SPECIES_CHIMECHO - 1] = 0x1d,
-+ [SPECIES_MEWTHREE - 1] = 0x09,
- };
```
Now we can define the actual text of the Pokédex entry.
@@ -722,9 +719,9 @@ Edit [src/data/easy_chat/easy_chat_words_by_letter.h](../blob/master/src/data/ea
const u16 gEasyChatWordsByLetter_M[] = {
EC_MOVE2(MACH_PUNCH),
...
- EC_POKEMON2(MEW),
-+ EC_POKEMON2(MEWTHREE),
- EC_POKEMON2(MEWTWO),
+ EC_POKEMON_NATIONAL(MEW),
++ EC_POKEMON_NATIONAL(MEWTHREE),
+ EC_POKEMON_NATIONAL(MEWTWO),
...
EC_WORD_MYSTERY,
};
@@ -770,33 +767,187 @@ Edit [src/data/wild_encounters.json](../blob/master/src/data/wild_encounters.jso
Congratulations, you have created your own personal pocket monster! You may call yourself a mad scientist now.
# Appendix
-## Available Battle Animations
+## Available Front Animations
+_Only 65 are used in-game, but you can use any animation from this list._
+1. ANIM_V_SQUISH_AND_BOUNCE
+2. ANIM_CIRCULAR_STRETCH_TWICE
+3. ANIM_H_VIBRATE
+4. ANIM_H_SLIDE
+5. ANIM_V_SLIDE
+6. ANIM_BOUNCE_ROTATE_TO_SIDES
+7. ANIM_V_JUMPS_H_JUMPS
+8. ANIM_ROTATE_TO_SIDES
+9. ANIM_ROTATE_TO_SIDES_TWICE
+10. ANIM_GROW_VIBRATE
+11. ANIM_ZIGZAG_FAST
+12. ANIM_SWING_CONCAVE
+13. ANIM_SWING_CONCAVE_FAST
+14. ANIM_SWING_CONVEX
+15. ANIM_SWING_CONVEX_FAST
+16. ANIM_H_SHAKE
+17. ANIM_V_SHAKE
+18. ANIM_CIRCULAR_VIBRATE
+19. ANIM_TWIST
+20. ANIM_SHRINK_GROW
+21. ANIM_CIRCLE_C_CLOCKWISE
+22. ANIM_GLOW_BLACK
+23. ANIM_H_STRETCH
+24. ANIM_V_STRETCH
+25. ANIM_RISING_WOBBLE
+26. ANIM_V_SHAKE_TWICE
+27. ANIM_TIP_MOVE_FORWARD
+28. ANIM_H_PIVOT
+29. ANIM_V_SLIDE_WOBBLE
+30. ANIM_H_SLIDE_WOBBLE
+31. ANIM_V_JUMPS_BIG
+32. ANIM_SPIN_LONG
+33. ANIM_GLOW_ORANGE
+34. ANIM_GLOW_RED
+35. ANIM_GLOW_BLUE
+36. ANIM_GLOW_YELLOW
+37. ANIM_GLOW_PURPLE
+38. ANIM_BACK_AND_LUNGE
+39. ANIM_BACK_FLIP
+40. ANIM_FLICKER
+41. ANIM_BACK_FLIP_BIG
+42. ANIM_FRONT_FLIP
+43. ANIM_TUMBLING_FRONT_FLIP
+44. ANIM_FIGURE_8
+45. ANIM_FLASH_YELLOW
+46. ANIM_SWING_CONCAVE_FAST_SHORT
+47. ANIM_SWING_CONVEX_FAST_SHORT
+48. ANIM_ROTATE_UP_SLAM_DOWN
+49. ANIM_DEEP_V_SQUISH_AND_BOUNCE
+50. ANIM_H_JUMPS
+51. ANIM_H_JUMPS_V_STRETCH
+52. ANIM_ROTATE_TO_SIDES_FAST
+53. ANIM_ROTATE_UP_TO_SIDES
+54. ANIM_FLICKER_INCREASING
+55. ANIM_TIP_HOP_FORWARD
+56. ANIM_PIVOT_SHAKE
+57. ANIM_TIP_AND_SHAKE
+58. ANIM_VIBRATE_TO_CORNERS
+59. ANIM_GROW_IN_STAGES
+60. ANIM_V_SPRING
+61. ANIM_V_REPEATED_SPRING
+62. ANIM_SPRING_RISING
+63. ANIM_H_SPRING
+64. ANIM_H_REPEATED_SPRING_SLOW
+65. ANIM_H_SLIDE_SHRINK
+66. ANIM_LUNGE_GROW
+67. ANIM_CIRCLE_INTO_BG
+68. ANIM_RAPID_H_HOPS
+69. ANIM_FOUR_PETAL
+70. ANIM_V_SQUISH_AND_BOUNCE_SLOW
+71. ANIM_H_SLIDE_SLOW
+72. ANIM_V_SLIDE_SLOW
+73. ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL
+74. ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW
+75. ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW
+76. ANIM_ZIGZAG_SLOW
+77. ANIM_H_SHAKE_SLOW
+78. ANIM_V_SHAKE_SLOW
+79. ANIM_TWIST_TWICE
+80. ANIM_CIRCLE_C_CLOCKWISE_SLOW
+81. ANIM_V_SHAKE_TWICE_SLOW
+82. ANIM_V_SLIDE_WOBBLE_SMALL
+83. ANIM_V_JUMPS_SMALL
+84. ANIM_SPIN
+85. ANIM_TUMBLING_FRONT_FLIP_TWICE
+86. ANIM_DEEP_V_SQUISH_AND_BOUNCE_TWICE
+87. ANIM_H_JUMPS_V_STRETCH_TWICE
+88. ANIM_V_SHAKE_BACK
+89. ANIM_V_SHAKE_BACK_SLOW
+90. ANIM_V_SHAKE_H_SLIDE_SLOW
+91. ANIM_V_STRETCH_BOTH_ENDS_SLOW
+92. ANIM_H_STRETCH_FAR_SLOW
+93. ANIM_V_SHAKE_LOW_TWICE
+94. ANIM_H_SHAKE_FAST
+95. ANIM_H_SLIDE_FAST
+96. ANIM_H_VIBRATE_FAST
+97. ANIM_H_VIBRATE_FASTEST
+98. ANIM_V_SHAKE_BACK_FAST
+99. ANIM_V_SHAKE_LOW_TWICE_SLOW
+100. ANIM_V_SHAKE_LOW_TWICE_FAST
+101. ANIM_CIRCLE_C_CLOCKWISE_LONG
+102. ANIM_GROW_STUTTER_SLOW
+103. ANIM_V_SHAKE_H_SLIDE
+104. ANIM_V_SHAKE_H_SLIDE_FAST
+105. ANIM_TRIANGLE_DOWN_SLOW
+106. ANIM_TRIANGLE_DOWN
+107. ANIM_TRIANGLE_DOWN_TWICE
+108. ANIM_GROW
+109. ANIM_GROW_TWICE
+110. ANIM_H_SPRING_FAST
+111. ANIM_H_SPRING_SLOW
+112. ANIM_H_REPEATED_SPRING_FAST
+113. ANIM_H_REPEATED_SPRING
+114. ANIM_SHRINK_GROW_FAST
+115. ANIM_SHRINK_GROW_SLOW
+116. ANIM_V_STRETCH_BOTH_ENDS
+117. ANIM_V_STRETCH_BOTH_ENDS_TWICE
+118. ANIM_H_STRETCH_FAR_TWICE
+119. ANIM_H_STRETCH_FAR
+120. ANIM_GROW_STUTTER_TWICE
+121. ANIM_GROW_STUTTER
+122. ANIM_CONCAVE_ARC_LARGE_SLOW
+123. ANIM_CONCAVE_ARC_LARGE
+124. ANIM_CONCAVE_ARC_LARGE_TWICE
+125. ANIM_CONVEX_DOUBLE_ARC_SLOW
+126. ANIM_CONVEX_DOUBLE_ARC
+127. ANIM_CONVEX_DOUBLE_ARC_TWICE
+128. ANIM_CONCAVE_ARC_SMALL_SLOW
+129. ANIM_CONCAVE_ARC_SMALL
+130. ANIM_CONCAVE_ARC_SMALL_TWICE
+131. ANIM_H_DIP
+132. ANIM_H_DIP_FAST
+133. ANIM_H_DIP_TWICE
+134. ANIM_SHRINK_GROW_VIBRATE_FAST
+135. ANIM_SHRINK_GROW_VIBRATE
+136. ANIM_SHRINK_GROW_VIBRATE_SLOW
+137. ANIM_JOLT_RIGHT_FAST
+138. ANIM_JOLT_RIGHT
+139. ANIM_JOLT_RIGHT_SLOW
+140. ANIM_SHAKE_FLASH_YELLOW_FAST
+141. ANIM_SHAKE_FLASH_YELLOW
+142. ANIM_SHAKE_FLASH_YELLOW_SLOW
+143. ANIM_SHAKE_GLOW_RED_FAST
+144. ANIM_SHAKE_GLOW_RED
+145. ANIM_SHAKE_GLOW_RED_SLOW
+146. ANIM_SHAKE_GLOW_GREEN_FAST
+147. ANIM_SHAKE_GLOW_GREEN
+148. ANIM_SHAKE_GLOW_GREEN_SLOW
+149. ANIM_SHAKE_GLOW_BLUE_FAST
+150. ANIM_SHAKE_GLOW_BLUE
+151. ANIM_SHAKE_GLOW_BLUE_SLOW
+
+## Available Back Animations
1. BACK_ANIM_NONE
-2. BACK_ANIM_H_SLIDE_QUICK
+2. BACK_ANIM_H_VIBRATE
3. BACK_ANIM_H_SLIDE
-4. BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1
-5. BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2
-6. BACK_ANIM_SHRINK_GROW_1
-7. BACK_ANIM_GROW_1
-8. BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE
-9. BACK_ANIM_HORIZONTAL_SHAKE
-10. BACK_ANIM_VERTICAL_SHAKE
-11. BACK_ANIM_V_SHAKE_WITH_H_SLIDE
-12. BACK_ANIM_VERTICAL_STRETCH
-13. BACK_ANIM_HORIZONTAL_STRETCH
-14. BACK_ANIM_GROW_2
-15. BACK_ANIM_V_SHAKE_WITH_PAUSE
-16. BACK_ANIM_CIRCLE_MOVE_CLOCKWISE
-17. BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL
-18. BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE
-19. BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE
+4. BACK_ANIM_H_SPRING
+5. BACK_ANIM_H_SPRING_REPEATED
+6. BACK_ANIM_SHRINK_GROW
+7. BACK_ANIM_GROW
+8. BACK_ANIM_CIRCLE_COUNTERCLOCKWISE
+9. BACK_ANIM_H_SHAKE
+10. BACK_ANIM_V_SHAKE
+11. BACK_ANIM_V_SHAKE_H_SLIDE
+12. BACK_ANIM_V_STRETCH
+13. BACK_ANIM_H_STRETCH
+14. BACK_ANIM_GROW_STUTTER
+15. BACK_ANIM_V_SHAKE_LOW
+16. BACK_ANIM_TRIANGLE_DOWN
+17. BACK_ANIM_CONCAVE_ARC_LARGE
+18. BACK_ANIM_CONVEX_DOUBLE_ARC
+19. BACK_ANIM_CONCAVE_ARC_SMALL
20. BACK_ANIM_DIP_RIGHT_SIDE
-21. BACK_ANIM_SHRINK_GROW_2
+21. BACK_ANIM_SHRINK_GROW_VIBRATE
22. BACK_ANIM_JOLT_RIGHT
-23. BACK_ANIM_FLASH_YELLOW_WITH_SHAKE
-24. BACK_ANIM_FADE_RED_WITH_SHAKE
-25. BACK_ANIM_FADE_GREEN_WITH_SHAKE
-26. BACK_ANIM_FADE_BLUE_WITH_SHAKE
+23. BACK_ANIM_SHAKE_FLASH_YELLOW
+24. BACK_ANIM_SHAKE_GLOW_RED
+25. BACK_ANIM_SHAKE_GLOW_GREEN
+26. BACK_ANIM_SHAKE_GLOW_BLUE
## Pokémon ordered by height
| Pokemon | height (m) |