diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2018-05-12 12:45:44 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2018-05-12 12:45:44 -0400 |
commit | f2819d9cf6f87498f9a1f0ed7ca45600d22cbd54 (patch) | |
tree | 1118da8dca9639743260686f7e9039e6338f9e9d /Add-a-new-Pokémon.md | |
parent | 871db5b33b0bf8ccbd3595eb1a62744c3a209cb6 (diff) |
Add a new trainer class
Diffstat (limited to 'Add-a-new-Pokémon.md')
-rw-r--r-- | Add-a-new-Pokémon.md | 86 |
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**: + + + +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**: - - - -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 |