diff options
-rw-r--r-- | How-to-add-a-new-Pokémon-species.md | 309 |
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) | |