summaryrefslogtreecommitdiff
path: root/Add-a-new-Pokémon.md
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2018-05-12 12:45:44 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2018-05-12 12:45:44 -0400
commitf2819d9cf6f87498f9a1f0ed7ca45600d22cbd54 (patch)
tree1118da8dca9639743260686f7e9039e6338f9e9d /Add-a-new-Pokémon.md
parent871db5b33b0bf8ccbd3595eb1a62744c3a209cb6 (diff)
Add a new trainer class
Diffstat (limited to 'Add-a-new-Pokémon.md')
-rw-r--r--Add-a-new-Pokémon.md86
1 files changed, 43 insertions, 43 deletions
diff --git a/Add-a-new-Pokémon.md b/Add-a-new-Pokémon.md
index bbf1b7f..7a26e26 100644
--- a/Add-a-new-Pokémon.md
+++ b/Add-a-new-Pokémon.md
@@ -11,8 +11,8 @@ This tutorial is for how to add a new species of Pokémon, allowing up to 253 sp
6. [Define its cry](#6-define-its-cry)
7. [Define its icon](#7-define-its-icon)
8. [Define its Pokédex entry](#8-define-its-pokédex-entry)
-9. [Define its footprint](#9-define-its-footprint)
-10. [Define its sprites and animation](#10-define-its-sprites-and-animation)
+9. [Design its footprint](#9-design-its-footprint)
+10. [Design its sprites and animation](#10-design-its-sprites-and-animation)
11. [Include and point to the sprite and animation data](#11-include-and-point-to-the-sprite-and-animation-data)
12. [Adding up to 253 Pokémon](#12-adding-up-to-253-pokémon)
@@ -88,17 +88,7 @@ All the names are exactly 10 characters long, with "@" as padding. Names that ar
## 3. Define its base data
-Edit [data/pokemon/base_stats.asm](../blob/master/data/pokemon/base_stats.asm):
-
-```diff
- BaseData::
- INCLUDE "data/pokemon/base_stats/bulbasaur.asm"
- ...
- INCLUDE "data/pokemon/base_stats/celebi.asm"
-+INCLUDE "data/pokemon/base_stats/munchlax.asm"
-```
-
-Then create **data/pokemon/base_stats/munchlax.asm**; you can start with [data/pokemon/base_stats/snorlax.asm](../blob/master/data/pokemon/base_stats/snorlax.asm) as a guide.
+Create **data/pokemon/base_stats/munchlax.asm**; you can start with [data/pokemon/base_stats/snorlax.asm](../blob/master/data/pokemon/base_stats/snorlax.asm) as a guide.
There's a lot of base data here:
@@ -157,6 +147,16 @@ From top to bottom, what it all means:
- **egg groups:** The two egg groups this Pokémon is in. Two Pokémon have to share an Egg group to breed. The 15 valid Egg groups (including `EGG_NONE` for sterile Pokémon like babies and legendaries) are defined in [constants/pokemon_data_constants.asm](../blob/master/constants/pokemon_data_constants.asm).
- **TM/HM learnset:** A list of which TMs, HMs, and tutor moves this Pokémon can learn, passed to the `tmhm` macro. Valid values are defined in [constants/item_constants.asm](../blob/master/constants/item_constants.asm) with the `add_tm`, `add_hm`, and `add_mt` macros.
+Then edit [data/pokemon/base_stats.asm](../blob/master/data/pokemon/base_stats.asm):
+
+```diff
+ BaseData::
+ INCLUDE "data/pokemon/base_stats/bulbasaur.asm"
+ ...
+ INCLUDE "data/pokemon/base_stats/celebi.asm"
++INCLUDE "data/pokemon/base_stats/munchlax.asm"
+```
+
## 4. Define its evolutions and level-up learnset
@@ -286,6 +286,25 @@ If you want a custom icon, you can define a new `ICON_*` constant, create a two-
## 8. Define its Pokédex entry
+Create **data/pokemon/dex_entries/munchlax.asm**:
+
+```diff
++ db "BIG EATER@" ; species name
++ dw 200, 2315 ; height, weight
++
++ db "In its desperation"
++ next "to gulp down food,"
++ next "it forgets about"
++
++ page "the food it has"
++ next "hidden under its"
++ next "fur.@"
+```
+
+- The species name can be up to 10 characters (technically 11 will still fit in the Pokédex window). Be sure to end it with a "@".
+- The height and weight values are in imperial units. 200 = 2 feet 0 inches; 2315 = 231.5 pounds.
+- The entry text is in two pages; the first starts with `db`, the second with `page`. Each page can fit three lines with 18 characters each. Here it's visual size that matters—`"#MON"` counts as 7 characters because it prints as "POKéMON". Again, be sure to end it with a "@".
+
Edit [data/pokemon/dex_entry_pointers.asm](../blob/master/data/pokemon/dex_entry_pointers.asm):
```diff
@@ -312,25 +331,6 @@ Then edit [data/pokemon/dex_entries.asm](../blob/master/data/pokemon/dex_entries
Each of the four sections in dex_entries.asm holds 64 Pokédex entries. Each section is in a different ROM bank, decided by which range the Pokémon's species ID is in: 1–64, 65–128, 129–192, or 193–256. The order of entries within each section doesn't actually matter, since they're accessed directly via `PokedexDataPointerTable`, but avoid confusion and just keep them in numerical order.
-Create **data/pokemon/dex_entries/munchlax.asm**:
-
-```diff
-+ db "BIG EATER@" ; species name
-+ dw 200, 2315 ; height, weight
-+
-+ db "In its desperation"
-+ next "to gulp down food,"
-+ next "it forgets about"
-+
-+ page "the food it has"
-+ next "hidden under its"
-+ next "fur.@"
-```
-
-- The species name can be up to 10 characters (technically 11 will still fit in the Pokédex window). Be sure to end it with a "@".
-- The height and weight values are in imperial units. 200 = 2 feet 0 inches; 2315 = 231.5 pounds.
-- The entry text is in two pages; the first starts with `db`, the second with `page`. Each page can fit three lines with 18 characters each. Here it's visual size that matters—`"#MON"` counts as 7 characters because it prints as "POKéMON". Again, be sure to end it with a "@".
-
Now the Pokédex entry exists, and will be listed correctly in "Old Pokédex Mode" (the Gen 2 equivalent of national order). But we need to define the new Pokémon's place in "New Pokédex Mode (regional order) and "A to Z Mode" (alphabetical order).
Edit [data/pokemon/dex_order_new.asm](../blob/master/data/pokemon/dex_order_new.asm):
@@ -365,9 +365,15 @@ Then edit [data/pokemon/dex_order_new.asm](../blob/master/data/pokemon/dex_order
That's all for the Pokédex.
-## 9. Define its footprint
+## 9. Design its footprint
-Edit [gfx/footprints.asm](../blob/master/gfx/footprints.asm):
+Create **gfx/footprints/munchlax.png**:
+
+![gfx/footprints/munchlax.png](screenshots/gfx-footprints-munchlax.png)
+
+Running `make` will automatically create munchlax.1bpp from munchlax.png. Since it's a 1bpp file (**one** **b**it **p**er **p**ixel) you can only use black and white in the image.
+
+Then edit [gfx/footprints.asm](../blob/master/gfx/footprints.asm):
```diff
; Footprints are 2x2 tiles each, but are stored as a 16x64-tile image
@@ -406,14 +412,8 @@ Edit [gfx/footprints.asm](../blob/master/gfx/footprints.asm):
Notice how the footprints are broken into top and bottom halves; you may want to [correct this design flaw](../blob/master/docs/design_flaws.md#footprints-are-split-into-top-and-bottom-halves). (It won't have a visible consequence on the game, but it makes for cleaner code and data.)
-Create **gfx/footprints/munchlax.png**:
-
-![gfx/footprints/munchlax.png](screenshots/gfx-footprints-munchlax.png)
-
-Running `make` will automatically create munchlax.1bpp from munchlax.png. Since it's a 1bpp file (**one** **b**it **p**er **p**ixel) you can only use black and white in the image.
-
-## 10. Define its sprites and animation
+## 10. Design its sprites and animation
This is a bit complicated. We need a front sprite with an animation sequence; a back sprite; and normal and shiny color palettes for both.
@@ -451,7 +451,7 @@ Now create **gfx/pokemon/munchlax/anim.asm**:
+ endanim
```
-And **gfx/pokemon/munchlax/anim_idle.asm**:
+And finally **gfx/pokemon/munchlax/anim_idle.asm**:
```diff
+ frame 1, 08
@@ -515,7 +515,7 @@ Edit [gfx/pics.asm](../blob/master/gfx/pics.asm):
(If you *don't* fix the `dba_pic` design flaw, you'll have to put your sprites in the "Pics" sections, which are compatible with `dba_pic`. "Pics 19" isn't used for anything useful—all its contents are unused duplicates of "Pics 18"—so it's the easiest place to start adding new sprites. But if you have a lot of new sprites to add, you risk overflowing the banks, and it's hard to fit sprites within fixed bank limits. By using just `dba`, you can create new `SECTION`s with a few sprites each, that will automatically be placed wherever they can fit in the ROM.)
-Edit [data/pokemon/palettes.asm](../blob/master/data/pokemon/palettes.asm):
+Anyway, edit [data/pokemon/palettes.asm](../blob/master/data/pokemon/palettes.asm):
```diff
PokemonPalettes: ; a8ce