Merge pull request #445 from roukaour/master

Rename Pokémon animation files; consistent (x, y) coords; document design flaws
This commit is contained in:
yenatch 2017-12-28 22:17:13 -05:00 committed by GitHub
commit b97a1acf3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
975 changed files with 5132 additions and 4601 deletions

View File

@ -13,7 +13,7 @@
; - NewPokedexOrder (see data/pokemon/dex_order_new.asm)
; - Pokered_MonIndices (see data/time_capsule/mon_order.asm)
; - AnimationPointers (see gfx/pokemon/anim_pointers.asm)
; - AnimationExtraPointers (see gfx/pokemon/extra_pointers.asm)
; - AnimationIdlePointers (see gfx/pokemon/idle_pointers.asm)
; - BitmasksPointers (see gfx/pokemon/bitmask_pointers.asm)
; - FramesPointers (see gfx/pokemon/frame_pointers.asm)
; - Footprints (see gfx/footprints.asm)

View File

@ -1,5 +1,5 @@
spawn: MACRO
; map, y, x
; map, x, y
map \1
db \2, \3
ENDM

View File

@ -1,11 +1,14 @@
# Bugs and Glitches
These are known bugs and glitches in the original Pokémon Crystal game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash.
## Contents
- [Thick Club and Light Ball can decrease damage done with boosted (Special) Attack](#thick-club-and-light-ball-can-decrease-damage-done-with-boosted-special-attack)
- [Metal Powder can increase damage taken with boosted (Special) Defense](#metal-powder-can-increase-damage-taken-with-boosted-special-defense)
- [Belly Drum sharply boosts Attack even with under 50% HP](#belly-drum-sharply-boosts-attack-even-with-under-50-hp)
- [Confusion damage is affected by type-boosting items and Explosion/Self-Destruct doubling](#confusion-damage-is-affected-by-type-boosting-items-and-explosionself-destruct-doubling)
- [Moves that lower Defense can do so after breaking a Substitute](#moves-that-lower-defense-can-do-so-after-breaking-a-substitute)
- [Counter and Mirror Coat still work if the opponent uses an item](#counter-and-mirror-coat-still-work-if-the-opponent-uses-an-item)
- [A Disabled but PP Upenhanced move may not trigger Struggle](#a-disabled-but-pp-upenhanced-move-may-not-trigger-struggle)
@ -27,6 +30,7 @@
- [Dragon Scale, not Dragon Fang, boosts Dragon-type moves](#dragon-scale-not-dragon-fang-boosts-dragon-type-moves)
- [Daisy's grooming doesn't always increase happiness](#daisys-grooming-doesnt-always-increase-happiness)
- [Magikarp in Lake of Rage are shorter, not longer](#magikarp-in-lake-of-rage-are-shorter-not-longer)
- [Magikarp length limits have a unit conversion error](#magikarp-length-limits-have-a-unit-conversion-error)
- [Magikarp lengths can be miscalculated](#magikarp-lengths-can-be-miscalculated)
- [Battle transitions fail to account for the enemy's level](#battle-transitions-fail-to-account-for-the-enemys-level)
- [Slot machine payout sound effects cut each other off](#slot-machine-payout-sound-effects-cut-each-other-off)
@ -49,11 +53,12 @@
- [`TryObjectEvent` arbitrary code execution](#tryobjectevent-arbitrary-code-execution)
- [`Special_CheckBugContestContestantFlag` can read beyond its data table](#special_checkbugcontestcontestantflag-can-read-beyond-its-data-table)
- [`ClearWRAM` only clears WRAM bank 1](#clearwram-only-clears-wram-bank-1)
- [`GetForestTreeFrame` works, but it's still bad](#getforesttreeframe-works-but-its-still-bad)
## Thick Club and Light Ball can decrease damage done with boosted (Special) Attack
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=rGqu3d3pdok&t=450))
This is a bug with `SpeciesItemBoost` in [engine/battle/effect_commands.asm](/engine/battle/effect_commands.asm):
@ -88,6 +93,8 @@ This is a bug with `SpeciesItemBoost` in [engine/battle/effect_commands.asm](/en
## Metal Powder can increase damage taken with boosted (Special) Defense
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=rGqu3d3pdok&t=450))
This is a bug with `DittoMetalPowder` in [engine/battle/effect_commands.asm](/engine/battle/effect_commands.asm):
@ -144,6 +151,8 @@ This is a bug with `DittoMetalPowder` in [engine/battle/effect_commands.asm](/en
## Belly Drum sharply boosts Attack even with under 50% HP
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=zuCLMikWo4Y))
This is a bug with `BattleCommand_BellyDrum` in [engine/battle/effect_commands.asm](/engine/battle/effect_commands.asm):
@ -180,8 +189,19 @@ BattleCommand_BellyDrum: ; 37c1a
```
## Confusion damage is affected by type-boosting items and Explosion/Self-Destruct doubling
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://twitter.com/crystal_rby/status/874626362287562752))
*To do:* Identify specific code causing this bug and fix it.
## Moves that lower Defense can do so after breaking a Substitute
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=OGwKPRJLaaI))
This bug affects Acid, Iron Tail, and Rock Smash.
@ -218,6 +238,8 @@ DefenseDownHit:
## Counter and Mirror Coat still work if the opponent uses an item
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=uRYyzKRatFk))
*To do:* Identify specific code causing this bug and fix it.
@ -225,6 +247,8 @@ DefenseDownHit:
## A Disabled but PP Upenhanced move may not trigger Struggle
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=1v9x4SgMggs))
This is a bug with `CheckPlayerHasUsableMoves` in [engine/battle/core.asm](/engine/battle/core.asm):
@ -250,6 +274,8 @@ This is a bug with `CheckPlayerHasUsableMoves` in [engine/battle/core.asm](/engi
## A Pokémon that fainted from Pursuit will have its old status condition when revived
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=tiRvw-Nb2ME))
*To do:* Identify specific code causing this bug and fix it.
@ -257,6 +283,8 @@ This is a bug with `CheckPlayerHasUsableMoves` in [engine/battle/core.asm](/engi
## Lock-On and Mind Reader don't always bypass Fly and Dig
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
This bug affects Attract, Curse, Foresight, Mean Look, Mimic, Nightmare, Spider Web, Transform, and stat-lowering effects of moves like String Shot or Bubble during the semi-invulnerable turn of Fly or Dig.
This is a bug with `CheckHiddenOpponent` in [engine/battle/effect_commands.asm](/engine/battle/effect_commands.asm):
@ -275,6 +303,8 @@ CheckHiddenOpponent: ; 37daa
## Beat Up can desynchronize link battles
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=202-iAsrIa8))
This is a bug with `BattleCommand_BeatUp` in [engine/battle/effect_commands.asm](/engine/battle/effect_commands.asm):
@ -310,6 +340,8 @@ This is a bug with `BattleCommand_BeatUp` in [engine/battle/effect_commands.asm]
## Present damage is incorrect in link battles
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
([Video](https://www.youtube.com/watch?v=XJaQoKtrEuw))
This bug existed for all battles in Gold and Silver, and was only fixed for single-player battles in Crystal to preserve link compatibility.
@ -661,6 +693,8 @@ FastBallMultiplier:
## Dragon Scale, not Dragon Fang, boosts Dragon-type moves
*Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.*
This is a bug with `ItemAttributes` in [items/attributes.asm](/items/attributes.asm):
```asm
@ -751,6 +785,43 @@ This is a bug with `LoadEnemyMon.CheckMagikarpArea` in [engine/battle/core.asm](
**Fix:** Change both `jr z, .Happiness` to `jr nz, .Happiness`.
## Magikarp length limits have a unit conversion error
This is a bug with `LoadEnemyMon.CheckMagikarpArea` in [engine/battle/core.asm](/engine/battle/core.asm):
```asm
; Get Magikarp's length
ld de, EnemyMonDVs
ld bc, PlayerID
callfar CalcMagikarpLength
; No reason to keep going if length > 1536 (i.e. if length / 256 != 6)
ld a, [wMagikarpLength]
cp HIGH(1536) ; this compares to 6'0'', should be cp 5
jr nz, .CheckMagikarpArea
; 5% chance of skipping both size checks
call Random
cp 5 percent
jr c, .CheckMagikarpArea
; Try again if length > 1615
ld a, [wMagikarpLength + 1]
cp LOW(1616) ; this compares to 6'80'', should be cp 3
jr nc, .GenerateDVs
; 20% chance of skipping this check
call Random
cp 20 percent - 1
jr c, .CheckMagikarpArea
; Try again if length > 1599
ld a, [wMagikarpLength + 1]
cp LOW(1600) ; this compares to 6'64'', should be cp 2
jr nc, .GenerateDVs
```
**Fix:** Change the three `cp` instructions to use their commented values.
## Magikarp lengths can be miscalculated
This is a bug with `CalcMagikarpLength.BCLessThanDE` in [engine/events/magikarp.asm](/engine/events/magikarp.asm):
@ -1410,46 +1481,3 @@ ClearWRAM:: ; 25a
```
**Fix:** Change `jr nc, .bank_loop` to `jr c, .bank_loop`.
## `GetForestTreeFrame` works, but it's still bad
In [tilesets/animations.asm](/tilesets/animations.asm):
```asm
GetForestTreeFrame: ; fc54c
; Return 0 if a is even, or 2 if odd.
and a
jr z, .even
cp 1
jr z, .odd
cp 2
jr z, .even
cp 3
jr z, .odd
cp 4
jr z, .even
cp 5
jr z, .odd
cp 6
jr z, .even
.odd
ld a, 2
scf
ret
.even
xor a
ret
; fc56d
```
**Fix:**
```asm
GetForestTreeFrame: ; fc54c
; Return 0 if a is even, or 2 if odd.
and 1
add a
ret
; fc56d
```

512
docs/design_flaws.md Normal file
View File

@ -0,0 +1,512 @@
# Design Flaws
These are parts of the code that do not work *incorrectly*, like [bugs and glitches](/docs/bugs_and_glitches.md), but that clearly exist just to work around a problem. In other words, with a slightly different design, the code would not need to exist at all. Design flaws may be exceptions to a usual rule, such as "tables of pointers in different banks use `dba`" ([one exception](#pic-banks-are-offset-by-pics_fix), [and another](#pokédex-entry-banks-are-derived-from-their-species-ids)) or "graphics used as a unit are stored and loaded contiguously" ([a notable exception](#footprints-are-split-into-top-and-bottom-halves)).
## Contents
- [Pic banks are offset by `PICS_FIX`](#pic-banks-are-offset-by-pics_fix)
- [`PokemonPicPointers` and `UnownPicPointers` are assumed to start at the same address](#pokemonpicpointers-and-unownpicpointers-are-assumed-to-start-at-the-same-address)
- [Footprints are split into top and bottom halves](#footprints-are-split-into-top-and-bottom-halves)
- [Pokédex entry banks are derived from their species IDs](#pokédex-entry-banks-are-derived-from-their-species-ids)
- [`ITEM_C3` and `ITEM_DC` break up the continuous sequence of TM items](#item_c3-and-item_dc-break-up-the-continuous-sequence-of-tm-items)
- [`GetForestTreeFrame` works, but it's still bad](#getforesttreeframe-works-but-its-still-bad)
## Pic banks are offset by `PICS_FIX`
[data/pokemon/pic_pointers.asm](/data/pokemon/pic_pointers.asm), [data/pokemon/unown_pic_pointers.asm](/data/pokemon/unown_pic_pointers.asm), and [data/trainers/pic_pointers.asm](/data/trainers/pic_pointers.asm) all have to use `dba_pic` instead of `dba`. This is a macro in [macros/data.asm](/macros/data.asm) that offsets banks by `PICS_FIX`:
```asm
dba_pic: MACRO ; dbw bank, address
db BANK(\1) - PICS_FIX
dw \1
ENDM
```
The offset is translated into a correct bank by `FixPicBank` in [gfx/load_pics.asm](/gfx/load_pics.asm):
```asm
FixPicBank: ; 511c5
; This is a thing for some reason.
PICS_FIX EQU $36
GLOBAL PICS_FIX
push hl
push bc
sub BANK(Pics_1) - PICS_FIX
ld c, a
ld b, 0
ld hl, .PicsBanks
add hl, bc
ld a, [hl]
pop bc
pop hl
ret
.PicsBanks: ; 511d4
db BANK(Pics_1) + 0
db BANK(Pics_1) + 1
db BANK(Pics_1) + 2
db BANK(Pics_1) + 3
db BANK(Pics_1) + 4
db BANK(Pics_1) + 5
db BANK(Pics_1) + 6
db BANK(Pics_1) + 7
db BANK(Pics_1) + 8
db BANK(Pics_1) + 9
db BANK(Pics_1) + 10
db BANK(Pics_1) + 11
db BANK(Pics_1) + 12
db BANK(Pics_1) + 13
db BANK(Pics_1) + 14
db BANK(Pics_1) + 15
db BANK(Pics_1) + 16
db BANK(Pics_1) + 17
db BANK(Pics_1) + 18
db BANK(Pics_1) + 19
db BANK(Pics_1) + 20
db BANK(Pics_1) + 21
db BANK(Pics_1) + 22
db BANK(Pics_1) + 23
```
**Fix:** Use `dba` instead of `dba_pic`, and don't call `FixPicBank` to modify `a`.
## `PokemonPicPointers` and `UnownPicPointers` are assumed to start at the same address
In [gfx/pics.asm](/gfx/pics.asm):
```asm
; PokemonPicPointers and UnownPicPointers are assumed to start at the same
; address, but in different banks. This is enforced in pokecrystal.link.
SECTION "Pic Pointers", ROMX
INCLUDE "data/pokemon/pic_pointers.asm"
SECTION "Unown Pic Pointers", ROMX
INCLUDE "data/pokemon/unown_pic_pointers.asm"
```
In [pokecrystal.link](/pokecrystal.link):
```
ROMX $48
org $4000
"Pic Pointers"
"Pics 1"
ROMX $49
org $4000
"Unown Pic Pointers"
"Pics 2"
```
Two routines in [gfx/load_pics.asm](/gfx/load_pics.asm) make this assumption; `GetFrontpicPointer`:
```asm
ld a, [CurPartySpecies]
cp UNOWN
jr z, .unown
ld a, [CurPartySpecies]
ld d, BANK(PokemonPicPointers)
jr .ok
.unown
ld a, [UnownLetter]
ld d, BANK(UnownPicPointers)
.ok
ld hl, PokemonPicPointers ; UnownPicPointers
dec a
ld bc, 6
call AddNTimes
```
And `GetMonBackpic`:
```asm
; These are assumed to be at the same
; address in their respective banks.
GLOBAL PokemonPicPointers, UnownPicPointers
ld hl, PokemonPicPointers ; UnownPicPointers
ld a, b
ld d, BANK(PokemonPicPointers)
cp UNOWN
jr nz, .ok
ld a, c
ld d, BANK(UnownPicPointers)
.ok
dec a
ld bc, 6
call AddNTimes
```
**Fix:**
Don't enforce `org $4000` in pokecrystal.link.
Modify `GetFrontpicPointer`:
```asm
ld a, [CurPartySpecies]
cp UNOWN
jr z, .unown
ld a, [CurPartySpecies]
ld hl, PokemonPicPointers
ld d, BANK(PokemonPicPointers)
jr .ok
.unown
ld a, [UnownLetter]
ld hl, UnownPicPointers
ld d, BANK(UnownPicPointers)
.ok
dec a
ld bc, 6
call AddNTimes
```
And `GetMonBackpic`:
```asm
GLOBAL PokemonPicPointers, UnownPicPointers
ld a, b
ld hl, PokemonPicPointers
ld d, BANK(PokemonPicPointers)
cp UNOWN
jr nz, .ok
ld a, c
ld hl, UnownPicPointers
ld d, BANK(UnownPicPointers)
.ok
dec a
ld bc, 6
call AddNTimes
```
## Footprints are split into top and bottom halves
In [gfx/footprints.asm](/gfx/footprints.asm):
```asm
; Footprints are 2x2 tiles each, but are stored as a 16x64-tile image
; (32 rows of 8 footprints per row).
; That means there's a row of the top two tiles for eight footprints,
; then a row of the bottom two tiles for those eight footprints.
; These macros help extract the first and the last two tiles, respectively.
footprint_top EQUS "0, 2 * LEN_1BPP_TILE"
footprint_bottom EQUS "2 * LEN_1BPP_TILE, 2 * LEN_1BPP_TILE"
; Entries correspond to Pokémon species, two apiece, 8 tops then 8 bottoms
; 001-008 top halves
INCBIN "gfx/footprints/bulbasaur.1bpp", footprint_top
INCBIN "gfx/footprints/ivysaur.1bpp", footprint_top
INCBIN "gfx/footprints/venusaur.1bpp", footprint_top
INCBIN "gfx/footprints/charmander.1bpp", footprint_top
INCBIN "gfx/footprints/charmeleon.1bpp", footprint_top
INCBIN "gfx/footprints/charizard.1bpp", footprint_top
INCBIN "gfx/footprints/squirtle.1bpp", footprint_top
INCBIN "gfx/footprints/wartortle.1bpp", footprint_top
; 001-008 bottom halves
INCBIN "gfx/footprints/bulbasaur.1bpp", footprint_bottom
INCBIN "gfx/footprints/ivysaur.1bpp", footprint_bottom
INCBIN "gfx/footprints/venusaur.1bpp", footprint_bottom
INCBIN "gfx/footprints/charmander.1bpp", footprint_bottom
INCBIN "gfx/footprints/charmeleon.1bpp", footprint_bottom
INCBIN "gfx/footprints/charizard.1bpp", footprint_bottom
INCBIN "gfx/footprints/squirtle.1bpp", footprint_bottom
INCBIN "gfx/footprints/wartortle.1bpp", footprint_bottom
...
```
`Pokedex_LoadAnyFootprint` in [engine/pokedex.asm](/engine/pokedex.asm):
```asm
push hl
ld e, l
ld d, h
ld hl, VTiles2 tile $62
lb bc, BANK(Footprints), 2
call Request1bpp
pop hl
; Whoever was editing footprints forgot to fix their
; tile editor. Now each bottom half is 8 tiles off.
ld de, 8 tiles
add hl, de
ld e, l
ld d, h
ld hl, VTiles2 tile $64
lb bc, BANK(Footprints), 2
call Request1bpp
```
**Fix:**
Store footprints contiguously:
```asm
INCBIN "gfx/footprints/bulbasaur.1bpp"
INCBIN "gfx/footprints/ivysaur.1bpp"
INCBIN "gfx/footprints/venusaur.1bpp"
INCBIN "gfx/footprints/charmander.1bpp"
INCBIN "gfx/footprints/charmeleon.1bpp"
INCBIN "gfx/footprints/charizard.1bpp"
INCBIN "gfx/footprints/squirtle.1bpp"
INCBIN "gfx/footprints/wartortle.1bpp"
...
```
Modify `Pokedex_LoadAnyFootprint`:
```asm
ld e, l
ld d, h
ld hl, VTiles2 tile $62
lb bc, BANK(Footprints), 4
call Request1bpp
```
## Pokédex entry banks are derived from their species IDs
`PokedexDataPointerTable` in [data/pokemon/dex_entry_pointers.asm](/data/pokemon/dex_entry_pointers.asm) is a table of `dw`, not `dba`, yet there are four banks used for Pokédex entries. The correct bank is derived from the species ID at the beginning of each Pokémon's base stats. (This is the only use the base stat species ID has.)
Three separate routines do the same derivation; `GetDexEntryPointer` in [engine/pokedex_2.asm](/engine/pokedex_2.asm):
```asm
GetDexEntryPointer: ; 44333
; return dex entry pointer b:de
push hl
ld hl, PokedexDataPointerTable
ld a, b
dec a
ld d, 0
ld e, a
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
push de
rlca
rlca
and $3
ld hl, .PokedexEntryBanks
ld d, 0
ld e, a
add hl, de
ld b, [hl]
pop de
pop hl
ret
.PokedexEntryBanks: ; 44351
GLOBAL PokedexEntries1
GLOBAL PokedexEntries2
GLOBAL PokedexEntries3
GLOBAL PokedexEntries4
db BANK(PokedexEntries1)
db BANK(PokedexEntries2)
db BANK(PokedexEntries3)
db BANK(PokedexEntries4)
```
`GetPokedexEntryBank` in [engine/item_effects.asm](/engine/item_effects.asm):
```asm
GetPokedexEntryBank:
push hl
push de
ld a, [EnemyMonSpecies]
rlca
rlca
and 3
ld hl, .PokedexEntryBanks
ld d, 0
ld e, a
add hl, de
ld a, [hl]
pop de
pop hl
ret
.PokedexEntryBanks:
GLOBAL PokedexEntries1
GLOBAL PokedexEntries2
GLOBAL PokedexEntries3
GLOBAL PokedexEntries4
db BANK(PokedexEntries1)
db BANK(PokedexEntries2)
db BANK(PokedexEntries3)
db BANK(PokedexEntries4)
```
And `PokedexShow_GetDexEntryBank` in [engine/radio.asm](/engine/radio.asm):
```asm
PokedexShow_GetDexEntryBank:
push hl
push de
ld a, [CurPartySpecies]
dec a
rlca
rlca
and 3
ld hl, .pokedexbanks
ld d, 0
ld e, a
add hl, de
ld a, [hl]
pop de
pop hl
ret
.pokedexbanks
db BANK(PokedexEntries1)
db BANK(PokedexEntries2)
db BANK(PokedexEntries3)
db BANK(PokedexEntries4)
```
**Fix:** Use `dba` instead of `dw` in `PokedexDataPointerTable`, and modify the code that accesses it to match.
## `ITEM_C3` and `ITEM_DC` break up the continuous sequence of TM items
[constants/item_constants.asm](/constants/item_constants.asm) defined the 50 TMs in order with `add_tm`, but `ITEM_C3` and `ITEM_DC` break up that sequence.
```asm
add_tm DYNAMICPUNCH ; $BF
...
add_tm ROLLOUT ; $C2
const ITEM_C3 ; $C3
add_tm ROAR ; $C4
...
add_tm DIG ; $DB
const ITEM_DC ; $DC
add_tm PSYCHIC_M ; $DD
...
add_tm NIGHTMARE ; $F2
NUM_TMS = const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
```
`GetTMHMNumber` and `GetNumberedTMHM` in [engine/items.asm](/engine/items.asm) have to compensate for this:
```asm
GetTMHMNumber:: ; d407
; Return the number of a TM/HM by item id c.
ld a, c
; Skip any dummy items.
cp ITEM_C3 ; TM04-05
jr c, .done
cp ITEM_DC ; TM28-29
jr c, .skip
dec a
.skip
dec a
.done
sub TM01
inc a
ld c, a
ret
GetNumberedTMHM: ; d417
; Return the item id of a TM/HM by number c.
ld a, c
; Skip any gaps.
cp ITEM_C3 - (TM01 - 1)
jr c, .done
cp ITEM_DC - (TM01 - 1) - 1
jr c, .skip_one
.skip_two
inc a
.skip_one
inc a
.done
add TM01
dec a
ld c, a
ret
```
**Fix:**
Move `ITEM_C3` and `ITEM_DC` above all the TMs in every table of item data.
Modify engine/items.asm:
```asm
GetTMHMNumber:: ; d407
; Return the number of a TM/HM by item id c.
ld a, c
sub TM01
inc a
ld c, a
ret
GetNumberedTMHM: ; d417
; Return the item id of a TM/HM by number c.
ld a, c
add TM01
dec a
ld c, a
ret
```
## `GetForestTreeFrame` works, but it's still bad
In [tilesets/animations.asm](/tilesets/animations.asm):
```asm
GetForestTreeFrame: ; fc54c
; Return 0 if a is even, or 2 if odd.
and a
jr z, .even
cp 1
jr z, .odd
cp 2
jr z, .even
cp 3
jr z, .odd
cp 4
jr z, .even
cp 5
jr z, .odd
cp 6
jr z, .even
.odd
ld a, 2
scf
ret
.even
xor a
ret
; fc56d
```
**Fix:**
```asm
GetForestTreeFrame: ; fc54c
; Return 0 if a is even, or 2 if odd.
and 1
add a
ret
; fc56d
```

View File

@ -60,17 +60,17 @@ Callback types:
## `.Warps: db` *N*
- **`warp_def` *y*, *x*, *warp_id*, *map***
- **`warp_def` *x*, *y*, *warp_id*, *map***
## `.CoordEvents: db` *N*
- **`coord_event` *scene id*, *y*, *x*, *script***
- **`coord_event` *x*, *y*, *scene id*, *script***
## `.BGEvents: db` *N*
- **`bg_event` *y*, *x*, *type*, *script***
- **`bg_event` *x*, *y*, *type*, *script***
BG event types:
@ -90,7 +90,7 @@ BG event types:
## `.ObjectEvents: db` *N*
- **`object_event` *sprite*, *y*, *x*, *movement*, *ry*, *rx*, *h1*, *h2*, *palette*, *type*, *range*, *script*, *event_flag***
- **`object_event` *x*, *y*, *sprite*, *movement*, *ry*, *rx*, *h1*, *h2*, *palette*, *type*, *range*, *script*, *event_flag***
Movement types:

View File

@ -1442,9 +1442,9 @@ copy_box_data: MACRO
jr .loop\@
.done\@
IF \1
if \1
call CloseSRAM
ENDC
endc
ld a, -1
ld [de], a
ld a, [wd004]

View File

@ -26,13 +26,13 @@ Function_LoadOpponentTrainerAndPokemons: ; 1f8000
ld a, [hRandomAdd]
add b
ld b, a ; b contains the nr of the trainer
IF DEF(CRYSTAL11)
if DEF(CRYSTAL11)
and (1 << 7) - 1
cp 70
ELSE
else
and (1 << 5) - 1
cp 21
ENDC
endc
jr nc, .resample
ld b, a

View File

@ -105,7 +105,7 @@ SpecialKabutoChamber: ; 8ae4e
Special_DisplayUnownWords: ; 8ae68
ld a, [ScriptVar]
ld hl, .MenuDataHeader_Escape
ld hl, .MenuDataHeaders_UnownWalls
and a
jr z, .load
@ -153,8 +153,6 @@ Special_DisplayUnownWords: ; 8ae68
ret
; 8aebc
.UnownText: ; 8aebc
unownwall: MACRO
rept _NARG
if \1 == "-"
@ -180,36 +178,35 @@ endr
db $ff
ENDM
.UnownText_Escape:
.UnownText: ; 8aebc
;.UnownText_Escape:
; db $08, $44, $04, $00, $2e, $08, $ff
unownwall "E", "S", "C", "A", "P", "E"
.UnownText_Light:
;.UnownText_Light:
; db $26, $20, $0c, $0e, $46, $ff
unownwall "L", "I", "G", "H", "T"
.UnownText_Water:
;.UnownText_Water:
; db $4c, $00, $46, $08, $42, $ff
unownwall "W", "A", "T", "E", "R"
.UnownText_Ho_Oh:
;.UnownText_Ho_Oh:
; db $0e, $2c, $64, $2c, $0e, $ff
unownwall "H", "O", "-", "O", "H"
; 8aed5
.MenuDataHeader_Escape: ; 0x8aed5
.MenuDataHeaders_UnownWalls: ; 0x8aed5
;.MenuDataHeader_Escape:
db $40 ; flags
db 04, 03 ; start coords
db 09, 16 ; end coords
.MenuDataHeader_Light: ; 0x8aeda
;.MenuDataHeader_Light:
db $40 ; flags
db 04, 04 ; start coords
db 09, 15 ; end coords
.MenuDataHeader_Water: ; 0x8aedf
;.MenuDataHeader_Water:
db $40 ; flags
db 04, 04 ; start coords
db 09, 15 ; end coords
.MenuDataHeader_Ho_Oh: ; 0x8aee4
;.MenuDataHeader_Ho_Oh:
db $40 ; flags
db 04, 04 ; start coords
db 09, 15 ; end coords

View File

@ -199,9 +199,9 @@ _ResetWRAM: ; 5bae
ld [Coins], a
ld [Coins + 1], a
IF START_MONEY >= $10000
if START_MONEY >= $10000
ld a, HIGH(START_MONEY >> 8)
ENDC
endc
ld [Money], a
ld a, HIGH(START_MONEY) ; mid
ld [Money + 1], a
@ -646,11 +646,11 @@ Continue_DisplayPokedexNumCaught: ; 5f6b
ret z
push hl
ld hl, PokedexCaught
IF NUM_POKEMON % 8
if NUM_POKEMON % 8
ld b, NUM_POKEMON / 8 + 1
ELSE
else
ld b, NUM_POKEMON / 8
ENDC
endc
call CountSetBits
pop hl
ld de, wd265

View File

@ -455,15 +455,12 @@ CheckTMHM: ; d3fb
GetTMHMNumber:: ; d407
; Return the number of a TM/HM by item id c.
ld a, c
; Skip any dummy items.
cp ITEM_C3 ; TM04-05
jr c, .done
cp ITEM_DC ; TM28-29
jr c, .skip
dec a
.skip
dec a
@ -475,15 +472,12 @@ GetTMHMNumber:: ; d407
GetNumberedTMHM: ; d417
; Return the item id of a TM/HM by number c.
ld a, c
; Skip any gaps.
cp ITEM_C3 - (TM01 - 1)
jr c, .done
cp ITEM_DC - (TM01 - 1) - 1
jr c, .skip_one
.skip_two
inc a
.skip_one

View File

@ -55,7 +55,7 @@ AnimateMon_Unused: ; d003a
pokeanim: MACRO
rept _NARG
; Workaround for a bug where macro args can't come after the start of a symbol
if !def(\1_POKEANIM)
if !DEF(\1_POKEANIM)
\1_POKEANIM EQUS "PokeAnim_\1_"
endc
db (\1_POKEANIM - PokeAnim_SetupCommands) / 2
@ -77,13 +77,13 @@ PokeAnims: ; d0042
.Slow: pokeanim StereoCry, Setup2, Play
.Normal: pokeanim StereoCry, Setup, Play
.Menu: pokeanim CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
.Trade: pokeanim Extra, Play2, Extra, Play, SetWait, Wait, Cry, Setup, Play
.Evolve: pokeanim Extra, Play, SetWait, Wait, CryNoWait, Setup, Play
.Hatch: pokeanim Extra, Play, CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
.Unused: pokeanim CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
.Menu: pokeanim CryNoWait, Setup, Play, SetWait, Wait, Idle, Play
.Trade: pokeanim Idle, Play2, Idle, Play, SetWait, Wait, Cry, Setup, Play
.Evolve: pokeanim Idle, Play, SetWait, Wait, CryNoWait, Setup, Play
.Hatch: pokeanim Idle, Play, CryNoWait, Setup, Play, SetWait, Wait, Idle, Play
.Unused: pokeanim CryNoWait, Setup, Play, SetWait, Wait, Idle, Play
.Egg1: pokeanim Setup, Play
.Egg2: pokeanim Extra, Play
.Egg2: pokeanim Idle, Play
AnimateFrontpic: ; d008e
@ -151,7 +151,7 @@ ENDM
setup_command PokeAnim_Wait
setup_command PokeAnim_Setup
setup_command PokeAnim_Setup2
setup_command PokeAnim_Extra
setup_command PokeAnim_Idle
setup_command PokeAnim_Play
setup_command PokeAnim_Play2
setup_command PokeAnim_Cry
@ -198,7 +198,7 @@ PokeAnim_Setup2: ; d011d
ret
; d012f
PokeAnim_Extra: ; d012f
PokeAnim_Idle: ; d012f
ld c, TRUE
ld b, 0
call PokeAnim_InitAnim
@ -360,18 +360,18 @@ PokeAnim_InitPicAttributes: ; d01d6
PokeAnim_InitAnim: ; d0228
ld a, [rSVBK]
push af
ld a, BANK(wPokeAnimExtraFlag)
ld a, BANK(wPokeAnimIdleFlag)
ld [rSVBK], a
push bc
ld hl, wPokeAnimExtraFlag
ld bc, wPokeAnimStructEnd - wPokeAnimExtraFlag
ld hl, wPokeAnimIdleFlag
ld bc, wPokeAnimStructEnd - wPokeAnimIdleFlag
xor a
call ByteFill
pop bc
ld a, b
ld [wPokeAnimSpeed], a
ld a, c
ld [wPokeAnimExtraFlag], a
ld [wPokeAnimIdleFlag], a
call GetMonAnimPointer
call GetMonFramesPointer
call GetMonBitmaskPointer
@ -949,20 +949,20 @@ GetMonAnimPointer: ; d055c
ld c, BANK(UnownAnimations)
ld hl, UnownAnimationPointers
ld de, UnownAnimationExtraPointers
ld de, UnownAnimationIdlePointers
call PokeAnim_IsUnown
jr z, .unown
ld c, BANK(PicAnimations)
ld hl, AnimationPointers
ld de, AnimationExtraPointers
ld de, AnimationIdlePointers
.unown
ld a, [wPokeAnimExtraFlag]
ld a, [wPokeAnimIdleFlag]
and a
jr z, .extras
jr z, .idles
ld h, d
ld l, e
.extras
.idles
ld a, [wPokeAnimSpeciesOrUnown]
dec a
@ -982,12 +982,12 @@ GetMonAnimPointer: ; d055c
.egg
ld hl, EggAnimation
ld c, BANK(EggAnimation)
ld a, [wPokeAnimExtraFlag]
ld a, [wPokeAnimIdleFlag]
and a
jr z, .extras_egg
ld hl, EggAnimationExtra
ld c, BANK(EggAnimationExtra)
.extras_egg
jr z, .idles_egg
ld hl, EggAnimationIdle
ld c, BANK(EggAnimationIdle)
.idles_egg
ld a, c
ld [wPokeAnimPointerBank], a

View File

@ -55,7 +55,7 @@ PlayerObjectTemplate: ; 8071
; A dummy map object used to initialize the player object.
; Shorter than the actual amount copied by two bytes.
; Said bytes seem to be unused.
object_event SPRITE_CHRIS, -4, -4, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, 0, -1
object_event -4, -4, SPRITE_CHRIS, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, 0, -1
CopyDECoordsToMapObject:: ; 807e
push de

View File

@ -147,9 +147,9 @@ ScriptCommandTable:
dw Script_loadmenudata ; 4f
dw Script_closewindow ; 50
dw Script_jumptextfaceplayer ; 51
IF _CRYSTAL
if _CRYSTAL
dw Script_farjumptext ; 52
ENDC
endc
dw Script_jumptext ; 53
dw Script_waitbutton ; 54
dw Script_buttonsound ; 55
@ -338,7 +338,7 @@ JumpTextScript:
end
IF _CRYSTAL
if _CRYSTAL
Script_farjumptext:
; script command 0x52
@ -355,7 +355,7 @@ Script_farjumptext:
ld hl, JumpTextScript
jp ScriptJump
ENDC
endc
Script_writetext:

View File

@ -1,253 +1,253 @@
PicAnimations:
BulbasaurAnimation: INCLUDE "gfx/pokemon/bulbasaur/anim0.asm"
IvysaurAnimation: INCLUDE "gfx/pokemon/ivysaur/anim0.asm"
VenusaurAnimation: INCLUDE "gfx/pokemon/venusaur/anim0.asm"
CharmanderAnimation: INCLUDE "gfx/pokemon/charmander/anim0.asm"
CharmeleonAnimation: INCLUDE "gfx/pokemon/charmeleon/anim0.asm"
CharizardAnimation: INCLUDE "gfx/pokemon/charizard/anim0.asm"
SquirtleAnimation: INCLUDE "gfx/pokemon/squirtle/anim0.asm"
WartortleAnimation: INCLUDE "gfx/pokemon/wartortle/anim0.asm"
BlastoiseAnimation: INCLUDE "gfx/pokemon/blastoise/anim0.asm"
CaterpieAnimation: INCLUDE "gfx/pokemon/caterpie/anim0.asm"
MetapodAnimation: INCLUDE "gfx/pokemon/metapod/anim0.asm"
ButterfreeAnimation: INCLUDE "gfx/pokemon/butterfree/anim0.asm"
WeedleAnimation: INCLUDE "gfx/pokemon/weedle/anim0.asm"
KakunaAnimation: INCLUDE "gfx/pokemon/kakuna/anim0.asm"
BeedrillAnimation: INCLUDE "gfx/pokemon/beedrill/anim0.asm"
PidgeyAnimation: INCLUDE "gfx/pokemon/pidgey/anim0.asm"
PidgeottoAnimation: INCLUDE "gfx/pokemon/pidgeotto/anim0.asm"
PidgeotAnimation: INCLUDE "gfx/pokemon/pidgeot/anim0.asm"
RattataAnimation: INCLUDE "gfx/pokemon/rattata/anim0.asm"
RaticateAnimation: INCLUDE "gfx/pokemon/raticate/anim0.asm"
SpearowAnimation: INCLUDE "gfx/pokemon/spearow/anim0.asm"
FearowAnimation: INCLUDE "gfx/pokemon/fearow/anim0.asm"
EkansAnimation: INCLUDE "gfx/pokemon/ekans/anim0.asm"
ArbokAnimation: INCLUDE "gfx/pokemon/arbok/anim0.asm"
PikachuAnimation: INCLUDE "gfx/pokemon/pikachu/anim0.asm"
RaichuAnimation: INCLUDE "gfx/pokemon/raichu/anim0.asm"
SandshrewAnimation: INCLUDE "gfx/pokemon/sandshrew/anim0.asm"
SandslashAnimation: INCLUDE "gfx/pokemon/sandslash/anim0.asm"
NidoranFAnimation: INCLUDE "gfx/pokemon/nidoran_f/anim0.asm"
NidorinaAnimation: INCLUDE "gfx/pokemon/nidorina/anim0.asm"
NidoqueenAnimation: INCLUDE "gfx/pokemon/nidoqueen/anim0.asm"
NidoranMAnimation: INCLUDE "gfx/pokemon/nidoran_m/anim0.asm"
NidorinoAnimation: INCLUDE "gfx/pokemon/nidorino/anim0.asm"
NidokingAnimation: INCLUDE "gfx/pokemon/nidoking/anim0.asm"
ClefairyAnimation: INCLUDE "gfx/pokemon/clefairy/anim0.asm"
ClefableAnimation: INCLUDE "gfx/pokemon/clefable/anim0.asm"
VulpixAnimation: INCLUDE "gfx/pokemon/vulpix/anim0.asm"
NinetalesAnimation: INCLUDE "gfx/pokemon/ninetales/anim0.asm"
JigglypuffAnimation: INCLUDE "gfx/pokemon/jigglypuff/anim0.asm"
WigglytuffAnimation: INCLUDE "gfx/pokemon/wigglytuff/anim0.asm"
ZubatAnimation: INCLUDE "gfx/pokemon/zubat/anim0.asm"
GolbatAnimation: INCLUDE "gfx/pokemon/golbat/anim0.asm"
OddishAnimation: INCLUDE "gfx/pokemon/oddish/anim0.asm"
GloomAnimation: INCLUDE "gfx/pokemon/gloom/anim0.asm"
VileplumeAnimation: INCLUDE "gfx/pokemon/vileplume/anim0.asm"
ParasAnimation: INCLUDE "gfx/pokemon/paras/anim0.asm"
ParasectAnimation: INCLUDE "gfx/pokemon/parasect/anim0.asm"
VenonatAnimation: INCLUDE "gfx/pokemon/venonat/anim0.asm"
VenomothAnimation: INCLUDE "gfx/pokemon/venomoth/anim0.asm"
DiglettAnimation: INCLUDE "gfx/pokemon/diglett/anim0.asm"
DugtrioAnimation: INCLUDE "gfx/pokemon/dugtrio/anim0.asm"
MeowthAnimation: INCLUDE "gfx/pokemon/meowth/anim0.asm"
PersianAnimation: INCLUDE "gfx/pokemon/persian/anim0.asm"
PsyduckAnimation: INCLUDE "gfx/pokemon/psyduck/anim0.asm"
GolduckAnimation: INCLUDE "gfx/pokemon/golduck/anim0.asm"
MankeyAnimation: INCLUDE "gfx/pokemon/mankey/anim0.asm"
PrimeapeAnimation: INCLUDE "gfx/pokemon/primeape/anim0.asm"
GrowlitheAnimation: INCLUDE "gfx/pokemon/growlithe/anim0.asm"
ArcanineAnimation: INCLUDE "gfx/pokemon/arcanine/anim0.asm"
PoliwagAnimation: INCLUDE "gfx/pokemon/poliwag/anim0.asm"
PoliwhirlAnimation: INCLUDE "gfx/pokemon/poliwhirl/anim0.asm"
PoliwrathAnimation: INCLUDE "gfx/pokemon/poliwrath/anim0.asm"
AbraAnimation: INCLUDE "gfx/pokemon/abra/anim0.asm"
KadabraAnimation: INCLUDE "gfx/pokemon/kadabra/anim0.asm"
AlakazamAnimation: INCLUDE "gfx/pokemon/alakazam/anim0.asm"
MachopAnimation: INCLUDE "gfx/pokemon/machop/anim0.asm"
MachokeAnimation: INCLUDE "gfx/pokemon/machoke/anim0.asm"
MachampAnimation: INCLUDE "gfx/pokemon/machamp/anim0.asm"
BellsproutAnimation: INCLUDE "gfx/pokemon/bellsprout/anim0.asm"
WeepinbellAnimation: INCLUDE "gfx/pokemon/weepinbell/anim0.asm"
VictreebelAnimation: INCLUDE "gfx/pokemon/victreebel/anim0.asm"
TentacoolAnimation: INCLUDE "gfx/pokemon/tentacool/anim0.asm"
TentacruelAnimation: INCLUDE "gfx/pokemon/tentacruel/anim0.asm"
GeodudeAnimation: INCLUDE "gfx/pokemon/geodude/anim0.asm"
GravelerAnimation: INCLUDE "gfx/pokemon/graveler/anim0.asm"
GolemAnimation: INCLUDE "gfx/pokemon/golem/anim0.asm"
PonytaAnimation: INCLUDE "gfx/pokemon/ponyta/anim0.asm"
RapidashAnimation: INCLUDE "gfx/pokemon/rapidash/anim0.asm"
SlowpokeAnimation: INCLUDE "gfx/pokemon/slowpoke/anim0.asm"
SlowbroAnimation: INCLUDE "gfx/pokemon/slowbro/anim0.asm"
MagnemiteAnimation: INCLUDE "gfx/pokemon/magnemite/anim0.asm"
MagnetonAnimation: INCLUDE "gfx/pokemon/magneton/anim0.asm"
FarfetchDAnimation: INCLUDE "gfx/pokemon/farfetch_d/anim0.asm"
DoduoAnimation: INCLUDE "gfx/pokemon/doduo/anim0.asm"
DodrioAnimation: INCLUDE "gfx/pokemon/dodrio/anim0.asm"
SeelAnimation: INCLUDE "gfx/pokemon/seel/anim0.asm"
DewgongAnimation: INCLUDE "gfx/pokemon/dewgong/anim0.asm"
GrimerAnimation: INCLUDE "gfx/pokemon/grimer/anim0.asm"
MukAnimation: INCLUDE "gfx/pokemon/muk/anim0.asm"
ShellderAnimation: INCLUDE "gfx/pokemon/shellder/anim0.asm"
CloysterAnimation: INCLUDE "gfx/pokemon/cloyster/anim0.asm"
GastlyAnimation: INCLUDE "gfx/pokemon/gastly/anim0.asm"
HaunterAnimation: INCLUDE "gfx/pokemon/haunter/anim0.asm"
GengarAnimation: INCLUDE "gfx/pokemon/gengar/anim0.asm"
OnixAnimation: INCLUDE "gfx/pokemon/onix/anim0.asm"
DrowzeeAnimation: INCLUDE "gfx/pokemon/drowzee/anim0.asm"
HypnoAnimation: INCLUDE "gfx/pokemon/hypno/anim0.asm"
KrabbyAnimation: INCLUDE "gfx/pokemon/krabby/anim0.asm"
KinglerAnimation: INCLUDE "gfx/pokemon/kingler/anim0.asm"
VoltorbAnimation: INCLUDE "gfx/pokemon/voltorb/anim0.asm"
ElectrodeAnimation: INCLUDE "gfx/pokemon/electrode/anim0.asm"
ExeggcuteAnimation: INCLUDE "gfx/pokemon/exeggcute/anim0.asm"
ExeggutorAnimation: INCLUDE "gfx/pokemon/exeggutor/anim0.asm"
CuboneAnimation: INCLUDE "gfx/pokemon/cubone/anim0.asm"
MarowakAnimation: INCLUDE "gfx/pokemon/marowak/anim0.asm"
HitmonleeAnimation: INCLUDE "gfx/pokemon/hitmonlee/anim0.asm"
HitmonchanAnimation: INCLUDE "gfx/pokemon/hitmonchan/anim0.asm"
LickitungAnimation: INCLUDE "gfx/pokemon/lickitung/anim0.asm"
KoffingAnimation: INCLUDE "gfx/pokemon/koffing/anim0.asm"
WeezingAnimation: INCLUDE "gfx/pokemon/weezing/anim0.asm"
RhyhornAnimation: INCLUDE "gfx/pokemon/rhyhorn/anim0.asm"
RhydonAnimation: INCLUDE "gfx/pokemon/rhydon/anim0.asm"
ChanseyAnimation: INCLUDE "gfx/pokemon/chansey/anim0.asm"
TangelaAnimation: INCLUDE "gfx/pokemon/tangela/anim0.asm"
KangaskhanAnimation: INCLUDE "gfx/pokemon/kangaskhan/anim0.asm"
HorseaAnimation: INCLUDE "gfx/pokemon/horsea/anim0.asm"
SeadraAnimation: INCLUDE "gfx/pokemon/seadra/anim0.asm"
GoldeenAnimation: INCLUDE "gfx/pokemon/goldeen/anim0.asm"
SeakingAnimation: INCLUDE "gfx/pokemon/seaking/anim0.asm"
StaryuAnimation: INCLUDE "gfx/pokemon/staryu/anim0.asm"
StarmieAnimation: INCLUDE "gfx/pokemon/starmie/anim0.asm"
MrMimeAnimation: INCLUDE "gfx/pokemon/mr__mime/anim0.asm"
ScytherAnimation: INCLUDE "gfx/pokemon/scyther/anim0.asm"
JynxAnimation: INCLUDE "gfx/pokemon/jynx/anim0.asm"
ElectabuzzAnimation: INCLUDE "gfx/pokemon/electabuzz/anim0.asm"
MagmarAnimation: INCLUDE "gfx/pokemon/magmar/anim0.asm"
PinsirAnimation: INCLUDE "gfx/pokemon/pinsir/anim0.asm"
TaurosAnimation: INCLUDE "gfx/pokemon/tauros/anim0.asm"
MagikarpAnimation: INCLUDE "gfx/pokemon/magikarp/anim0.asm"
GyaradosAnimation: INCLUDE "gfx/pokemon/gyarados/anim0.asm"
LaprasAnimation: INCLUDE "gfx/pokemon/lapras/anim0.asm"
DittoAnimation: INCLUDE "gfx/pokemon/ditto/anim0.asm"
EeveeAnimation: INCLUDE "gfx/pokemon/eevee/anim0.asm"
VaporeonAnimation: INCLUDE "gfx/pokemon/vaporeon/anim0.asm"
JolteonAnimation: INCLUDE "gfx/pokemon/jolteon/anim0.asm"
FlareonAnimation: INCLUDE "gfx/pokemon/flareon/anim0.asm"
PorygonAnimation: INCLUDE "gfx/pokemon/porygon/anim0.asm"
OmanyteAnimation: INCLUDE "gfx/pokemon/omanyte/anim0.asm"
OmastarAnimation: INCLUDE "gfx/pokemon/omastar/anim0.asm"
KabutoAnimation: INCLUDE "gfx/pokemon/kabuto/anim0.asm"
KabutopsAnimation: INCLUDE "gfx/pokemon/kabutops/anim0.asm"
AerodactylAnimation: INCLUDE "gfx/pokemon/aerodactyl/anim0.asm"
SnorlaxAnimation: INCLUDE "gfx/pokemon/snorlax/anim0.asm"
ArticunoAnimation: INCLUDE "gfx/pokemon/articuno/anim0.asm"
ZapdosAnimation: INCLUDE "gfx/pokemon/zapdos/anim0.asm"
MoltresAnimation: INCLUDE "gfx/pokemon/moltres/anim0.asm"
DratiniAnimation: INCLUDE "gfx/pokemon/dratini/anim0.asm"
DragonairAnimation: INCLUDE "gfx/pokemon/dragonair/anim0.asm"
DragoniteAnimation: INCLUDE "gfx/pokemon/dragonite/anim0.asm"
MewtwoAnimation: INCLUDE "gfx/pokemon/mewtwo/anim0.asm"
MewAnimation: INCLUDE "gfx/pokemon/mew/anim0.asm"
ChikoritaAnimation: INCLUDE "gfx/pokemon/chikorita/anim0.asm"
BayleefAnimation: INCLUDE "gfx/pokemon/bayleef/anim0.asm"
MeganiumAnimation: INCLUDE "gfx/pokemon/meganium/anim0.asm"
CyndaquilAnimation: INCLUDE "gfx/pokemon/cyndaquil/anim0.asm"
QuilavaAnimation: INCLUDE "gfx/pokemon/quilava/anim0.asm"
TyphlosionAnimation: INCLUDE "gfx/pokemon/typhlosion/anim0.asm"
TotodileAnimation: INCLUDE "gfx/pokemon/totodile/anim0.asm"
CroconawAnimation: INCLUDE "gfx/pokemon/croconaw/anim0.asm"
FeraligatrAnimation: INCLUDE "gfx/pokemon/feraligatr/anim0.asm"
SentretAnimation: INCLUDE "gfx/pokemon/sentret/anim0.asm"
FurretAnimation: INCLUDE "gfx/pokemon/furret/anim0.asm"
HoothootAnimation: INCLUDE "gfx/pokemon/hoothoot/anim0.asm"
NoctowlAnimation: INCLUDE "gfx/pokemon/noctowl/anim0.asm"
LedybaAnimation: INCLUDE "gfx/pokemon/ledyba/anim0.asm"
LedianAnimation: INCLUDE "gfx/pokemon/ledian/anim0.asm"
SpinarakAnimation: INCLUDE "gfx/pokemon/spinarak/anim0.asm"
AriadosAnimation: INCLUDE "gfx/pokemon/ariados/anim0.asm"
CrobatAnimation: INCLUDE "gfx/pokemon/crobat/anim0.asm"
ChinchouAnimation: INCLUDE "gfx/pokemon/chinchou/anim0.asm"
LanturnAnimation: INCLUDE "gfx/pokemon/lanturn/anim0.asm"
PichuAnimation: INCLUDE "gfx/pokemon/pichu/anim0.asm"
CleffaAnimation: INCLUDE "gfx/pokemon/cleffa/anim0.asm"
IgglybuffAnimation: INCLUDE "gfx/pokemon/igglybuff/anim0.asm"
TogepiAnimation: INCLUDE "gfx/pokemon/togepi/anim0.asm"
TogeticAnimation: INCLUDE "gfx/pokemon/togetic/anim0.asm"
NatuAnimation: INCLUDE "gfx/pokemon/natu/anim0.asm"
XatuAnimation: INCLUDE "gfx/pokemon/xatu/anim0.asm"
MareepAnimation: INCLUDE "gfx/pokemon/mareep/anim0.asm"
FlaaffyAnimation: INCLUDE "gfx/pokemon/flaaffy/anim0.asm"
AmpharosAnimation: INCLUDE "gfx/pokemon/ampharos/anim0.asm"
BellossomAnimation: INCLUDE "gfx/pokemon/bellossom/anim0.asm"
MarillAnimation: INCLUDE "gfx/pokemon/marill/anim0.asm"
AzumarillAnimation: INCLUDE "gfx/pokemon/azumarill/anim0.asm"
SudowoodoAnimation: INCLUDE "gfx/pokemon/sudowoodo/anim0.asm"
PolitoedAnimation: INCLUDE "gfx/pokemon/politoed/anim0.asm"
HoppipAnimation: INCLUDE "gfx/pokemon/hoppip/anim0.asm"
SkiploomAnimation: INCLUDE "gfx/pokemon/skiploom/anim0.asm"
JumpluffAnimation: INCLUDE "gfx/pokemon/jumpluff/anim0.asm"
AipomAnimation: INCLUDE "gfx/pokemon/aipom/anim0.asm"
SunkernAnimation: INCLUDE "gfx/pokemon/sunkern/anim0.asm"
SunfloraAnimation: INCLUDE "gfx/pokemon/sunflora/anim0.asm"
YanmaAnimation: INCLUDE "gfx/pokemon/yanma/anim0.asm"
WooperAnimation: INCLUDE "gfx/pokemon/wooper/anim0.asm"
QuagsireAnimation: INCLUDE "gfx/pokemon/quagsire/anim0.asm"
EspeonAnimation: INCLUDE "gfx/pokemon/espeon/anim0.asm"
UmbreonAnimation: INCLUDE "gfx/pokemon/umbreon/anim0.asm"
MurkrowAnimation: INCLUDE "gfx/pokemon/murkrow/anim0.asm"
SlowkingAnimation: INCLUDE "gfx/pokemon/slowking/anim0.asm"
MisdreavusAnimation: INCLUDE "gfx/pokemon/misdreavus/anim0.asm"
UnownAnimation: INCLUDE "gfx/pokemon/unown/anim0.asm"
WobbuffetAnimation: INCLUDE "gfx/pokemon/wobbuffet/anim0.asm"
GirafarigAnimation: INCLUDE "gfx/pokemon/girafarig/anim0.asm"
PinecoAnimation: INCLUDE "gfx/pokemon/pineco/anim0.asm"
ForretressAnimation: INCLUDE "gfx/pokemon/forretress/anim0.asm"
DunsparceAnimation: INCLUDE "gfx/pokemon/dunsparce/anim0.asm"
GligarAnimation: INCLUDE "gfx/pokemon/gligar/anim0.asm"
SteelixAnimation: INCLUDE "gfx/pokemon/steelix/anim0.asm"
SnubbullAnimation: INCLUDE "gfx/pokemon/snubbull/anim0.asm"
GranbullAnimation: INCLUDE "gfx/pokemon/granbull/anim0.asm"
QwilfishAnimation: INCLUDE "gfx/pokemon/qwilfish/anim0.asm"
ScizorAnimation: INCLUDE "gfx/pokemon/scizor/anim0.asm"
ShuckleAnimation: INCLUDE "gfx/pokemon/shuckle/anim0.asm"
HeracrossAnimation: INCLUDE "gfx/pokemon/heracross/anim0.asm"
SneaselAnimation: INCLUDE "gfx/pokemon/sneasel/anim0.asm"
TeddiursaAnimation: INCLUDE "gfx/pokemon/teddiursa/anim0.asm"
UrsaringAnimation: INCLUDE "gfx/pokemon/ursaring/anim0.asm"
SlugmaAnimation: INCLUDE "gfx/pokemon/slugma/anim0.asm"
MagcargoAnimation: INCLUDE "gfx/pokemon/magcargo/anim0.asm"
SwinubAnimation: INCLUDE "gfx/pokemon/swinub/anim0.asm"
PiloswineAnimation: INCLUDE "gfx/pokemon/piloswine/anim0.asm"
CorsolaAnimation: INCLUDE "gfx/pokemon/corsola/anim0.asm"
RemoraidAnimation: INCLUDE "gfx/pokemon/remoraid/anim0.asm"
OctilleryAnimation: INCLUDE "gfx/pokemon/octillery/anim0.asm"
DelibirdAnimation: INCLUDE "gfx/pokemon/delibird/anim0.asm"
MantineAnimation: INCLUDE "gfx/pokemon/mantine/anim0.asm"
SkarmoryAnimation: INCLUDE "gfx/pokemon/skarmory/anim0.asm"
HoundourAnimation: INCLUDE "gfx/pokemon/houndour/anim0.asm"
HoundoomAnimation: INCLUDE "gfx/pokemon/houndoom/anim0.asm"
KingdraAnimation: INCLUDE "gfx/pokemon/kingdra/anim0.asm"
PhanpyAnimation: INCLUDE "gfx/pokemon/phanpy/anim0.asm"
DonphanAnimation: INCLUDE "gfx/pokemon/donphan/anim0.asm"
Porygon2Animation: INCLUDE "gfx/pokemon/porygon2/anim0.asm"
StantlerAnimation: INCLUDE "gfx/pokemon/stantler/anim0.asm"
SmeargleAnimation: INCLUDE "gfx/pokemon/smeargle/anim0.asm"
TyrogueAnimation: INCLUDE "gfx/pokemon/tyrogue/anim0.asm"
HitmontopAnimation: INCLUDE "gfx/pokemon/hitmontop/anim0.asm"
SmoochumAnimation: INCLUDE "gfx/pokemon/smoochum/anim0.asm"
ElekidAnimation: INCLUDE "gfx/pokemon/elekid/anim0.asm"
MagbyAnimation: INCLUDE "gfx/pokemon/magby/anim0.asm"
MiltankAnimation: INCLUDE "gfx/pokemon/miltank/anim0.asm"
BlisseyAnimation: INCLUDE "gfx/pokemon/blissey/anim0.asm"
RaikouAnimation: INCLUDE "gfx/pokemon/raikou/anim0.asm"
EnteiAnimation: INCLUDE "gfx/pokemon/entei/anim0.asm"
SuicuneAnimation: INCLUDE "gfx/pokemon/suicune/anim0.asm"
LarvitarAnimation: INCLUDE "gfx/pokemon/larvitar/anim0.asm"
PupitarAnimation: INCLUDE "gfx/pokemon/pupitar/anim0.asm"
TyranitarAnimation: INCLUDE "gfx/pokemon/tyranitar/anim0.asm"
LugiaAnimation: INCLUDE "gfx/pokemon/lugia/anim0.asm"
HoOhAnimation: INCLUDE "gfx/pokemon/ho_oh/anim0.asm"
CelebiAnimation: INCLUDE "gfx/pokemon/celebi/anim0.asm"
EggAnimation: INCLUDE "gfx/pokemon/egg/anim0.asm"
BulbasaurAnimation: INCLUDE "gfx/pokemon/bulbasaur/anim.asm"
IvysaurAnimation: INCLUDE "gfx/pokemon/ivysaur/anim.asm"
VenusaurAnimation: INCLUDE "gfx/pokemon/venusaur/anim.asm"
CharmanderAnimation: INCLUDE "gfx/pokemon/charmander/anim.asm"
CharmeleonAnimation: INCLUDE "gfx/pokemon/charmeleon/anim.asm"
CharizardAnimation: INCLUDE "gfx/pokemon/charizard/anim.asm"
SquirtleAnimation: INCLUDE "gfx/pokemon/squirtle/anim.asm"
WartortleAnimation: INCLUDE "gfx/pokemon/wartortle/anim.asm"
BlastoiseAnimation: INCLUDE "gfx/pokemon/blastoise/anim.asm"
CaterpieAnimation: INCLUDE "gfx/pokemon/caterpie/anim.asm"
MetapodAnimation: INCLUDE "gfx/pokemon/metapod/anim.asm"
ButterfreeAnimation: INCLUDE "gfx/pokemon/butterfree/anim.asm"
WeedleAnimation: INCLUDE "gfx/pokemon/weedle/anim.asm"
KakunaAnimation: INCLUDE "gfx/pokemon/kakuna/anim.asm"
BeedrillAnimation: INCLUDE "gfx/pokemon/beedrill/anim.asm"
PidgeyAnimation: INCLUDE "gfx/pokemon/pidgey/anim.asm"
PidgeottoAnimation: INCLUDE "gfx/pokemon/pidgeotto/anim.asm"
PidgeotAnimation: INCLUDE "gfx/pokemon/pidgeot/anim.asm"
RattataAnimation: INCLUDE "gfx/pokemon/rattata/anim.asm"
RaticateAnimation: INCLUDE "gfx/pokemon/raticate/anim.asm"
SpearowAnimation: INCLUDE "gfx/pokemon/spearow/anim.asm"
FearowAnimation: INCLUDE "gfx/pokemon/fearow/anim.asm"
EkansAnimation: INCLUDE "gfx/pokemon/ekans/anim.asm"
ArbokAnimation: INCLUDE "gfx/pokemon/arbok/anim.asm"
PikachuAnimation: INCLUDE "gfx/pokemon/pikachu/anim.asm"
RaichuAnimation: INCLUDE "gfx/pokemon/raichu/anim.asm"
SandshrewAnimation: INCLUDE "gfx/pokemon/sandshrew/anim.asm"
SandslashAnimation: INCLUDE "gfx/pokemon/sandslash/anim.asm"
NidoranFAnimation: INCLUDE "gfx/pokemon/nidoran_f/anim.asm"
NidorinaAnimation: INCLUDE "gfx/pokemon/nidorina/anim.asm"
NidoqueenAnimation: INCLUDE "gfx/pokemon/nidoqueen/anim.asm"
NidoranMAnimation: INCLUDE "gfx/pokemon/nidoran_m/anim.asm"
NidorinoAnimation: INCLUDE "gfx/pokemon/nidorino/anim.asm"
NidokingAnimation: INCLUDE "gfx/pokemon/nidoking/anim.asm"
ClefairyAnimation: INCLUDE "gfx/pokemon/clefairy/anim.asm"
ClefableAnimation: INCLUDE "gfx/pokemon/clefable/anim.asm"
VulpixAnimation: INCLUDE "gfx/pokemon/vulpix/anim.asm"
NinetalesAnimation: INCLUDE "gfx/pokemon/ninetales/anim.asm"
JigglypuffAnimation: INCLUDE "gfx/pokemon/jigglypuff/anim.asm"
WigglytuffAnimation: INCLUDE "gfx/pokemon/wigglytuff/anim.asm"
ZubatAnimation: INCLUDE "gfx/pokemon/zubat/anim.asm"
GolbatAnimation: INCLUDE "gfx/pokemon/golbat/anim.asm"
OddishAnimation: INCLUDE "gfx/pokemon/oddish/anim.asm"
GloomAnimation: INCLUDE "gfx/pokemon/gloom/anim.asm"
VileplumeAnimation: INCLUDE "gfx/pokemon/vileplume/anim.asm"
ParasAnimation: INCLUDE "gfx/pokemon/paras/anim.asm"
ParasectAnimation: INCLUDE "gfx/pokemon/parasect/anim.asm"
VenonatAnimation: INCLUDE "gfx/pokemon/venonat/anim.asm"
VenomothAnimation: INCLUDE "gfx/pokemon/venomoth/anim.asm"
DiglettAnimation: INCLUDE "gfx/pokemon/diglett/anim.asm"
DugtrioAnimation: INCLUDE "gfx/pokemon/dugtrio/anim.asm"
MeowthAnimation: INCLUDE "gfx/pokemon/meowth/anim.asm"
PersianAnimation: INCLUDE "gfx/pokemon/persian/anim.asm"
PsyduckAnimation: INCLUDE "gfx/pokemon/psyduck/anim.asm"
GolduckAnimation: INCLUDE "gfx/pokemon/golduck/anim.asm"
MankeyAnimation: INCLUDE "gfx/pokemon/mankey/anim.asm"
PrimeapeAnimation: INCLUDE "gfx/pokemon/primeape/anim.asm"
GrowlitheAnimation: INCLUDE "gfx/pokemon/growlithe/anim.asm"
ArcanineAnimation: INCLUDE "gfx/pokemon/arcanine/anim.asm"
PoliwagAnimation: INCLUDE "gfx/pokemon/poliwag/anim.asm"
PoliwhirlAnimation: INCLUDE "gfx/pokemon/poliwhirl/anim.asm"
PoliwrathAnimation: INCLUDE "gfx/pokemon/poliwrath/anim.asm"
AbraAnimation: INCLUDE "gfx/pokemon/abra/anim.asm"
KadabraAnimation: INCLUDE "gfx/pokemon/kadabra/anim.asm"
AlakazamAnimation: INCLUDE "gfx/pokemon/alakazam/anim.asm"
MachopAnimation: INCLUDE "gfx/pokemon/machop/anim.asm"
MachokeAnimation: INCLUDE "gfx/pokemon/machoke/anim.asm"
MachampAnimation: INCLUDE "gfx/pokemon/machamp/anim.asm"
BellsproutAnimation: INCLUDE "gfx/pokemon/bellsprout/anim.asm"
WeepinbellAnimation: INCLUDE "gfx/pokemon/weepinbell/anim.asm"
VictreebelAnimation: INCLUDE "gfx/pokemon/victreebel/anim.asm"
TentacoolAnimation: INCLUDE "gfx/pokemon/tentacool/anim.asm"
TentacruelAnimation: INCLUDE "gfx/pokemon/tentacruel/anim.asm"
GeodudeAnimation: INCLUDE "gfx/pokemon/geodude/anim.asm"
GravelerAnimation: INCLUDE "gfx/pokemon/graveler/anim.asm"
GolemAnimation: INCLUDE "gfx/pokemon/golem/anim.asm"
PonytaAnimation: INCLUDE "gfx/pokemon/ponyta/anim.asm"
RapidashAnimation: INCLUDE "gfx/pokemon/rapidash/anim.asm"
SlowpokeAnimation: INCLUDE "gfx/pokemon/slowpoke/anim.asm"
SlowbroAnimation: INCLUDE "gfx/pokemon/slowbro/anim.asm"
MagnemiteAnimation: INCLUDE "gfx/pokemon/magnemite/anim.asm"
MagnetonAnimation: INCLUDE "gfx/pokemon/magneton/anim.asm"
FarfetchDAnimation: INCLUDE "gfx/pokemon/farfetch_d/anim.asm"
DoduoAnimation: INCLUDE "gfx/pokemon/doduo/anim.asm"
DodrioAnimation: INCLUDE "gfx/pokemon/dodrio/anim.asm"
SeelAnimation: INCLUDE "gfx/pokemon/seel/anim.asm"
DewgongAnimation: INCLUDE "gfx/pokemon/dewgong/anim.asm"
GrimerAnimation: INCLUDE "gfx/pokemon/grimer/anim.asm"
MukAnimation: INCLUDE "gfx/pokemon/muk/anim.asm"
ShellderAnimation: INCLUDE "gfx/pokemon/shellder/anim.asm"
CloysterAnimation: INCLUDE "gfx/pokemon/cloyster/anim.asm"
GastlyAnimation: INCLUDE "gfx/pokemon/gastly/anim.asm"
HaunterAnimation: INCLUDE "gfx/pokemon/haunter/anim.asm"
GengarAnimation: INCLUDE "gfx/pokemon/gengar/anim.asm"
OnixAnimation: INCLUDE "gfx/pokemon/onix/anim.asm"
DrowzeeAnimation: INCLUDE "gfx/pokemon/drowzee/anim.asm"
HypnoAnimation: INCLUDE "gfx/pokemon/hypno/anim.asm"
KrabbyAnimation: INCLUDE "gfx/pokemon/krabby/anim.asm"
KinglerAnimation: INCLUDE "gfx/pokemon/kingler/anim.asm"
VoltorbAnimation: INCLUDE "gfx/pokemon/voltorb/anim.asm"
ElectrodeAnimation: INCLUDE "gfx/pokemon/electrode/anim.asm"
ExeggcuteAnimation: INCLUDE "gfx/pokemon/exeggcute/anim.asm"
ExeggutorAnimation: INCLUDE "gfx/pokemon/exeggutor/anim.asm"
CuboneAnimation: INCLUDE "gfx/pokemon/cubone/anim.asm"
MarowakAnimation: INCLUDE "gfx/pokemon/marowak/anim.asm"
HitmonleeAnimation: INCLUDE "gfx/pokemon/hitmonlee/anim.asm"
HitmonchanAnimation: INCLUDE "gfx/pokemon/hitmonchan/anim.asm"
LickitungAnimation: INCLUDE "gfx/pokemon/lickitung/anim.asm"
KoffingAnimation: INCLUDE "gfx/pokemon/koffing/anim.asm"
WeezingAnimation: INCLUDE "gfx/pokemon/weezing/anim.asm"
RhyhornAnimation: INCLUDE "gfx/pokemon/rhyhorn/anim.asm"
RhydonAnimation: INCLUDE "gfx/pokemon/rhydon/anim.asm"
ChanseyAnimation: INCLUDE "gfx/pokemon/chansey/anim.asm"
TangelaAnimation: INCLUDE "gfx/pokemon/tangela/anim.asm"
KangaskhanAnimation: INCLUDE "gfx/pokemon/kangaskhan/anim.asm"
HorseaAnimation: INCLUDE "gfx/pokemon/horsea/anim.asm"
SeadraAnimation: INCLUDE "gfx/pokemon/seadra/anim.asm"
GoldeenAnimation: INCLUDE "gfx/pokemon/goldeen/anim.asm"
SeakingAnimation: INCLUDE "gfx/pokemon/seaking/anim.asm"
StaryuAnimation: INCLUDE "gfx/pokemon/staryu/anim.asm"
StarmieAnimation: INCLUDE "gfx/pokemon/starmie/anim.asm"
MrMimeAnimation: INCLUDE "gfx/pokemon/mr__mime/anim.asm"
ScytherAnimation: INCLUDE "gfx/pokemon/scyther/anim.asm"
JynxAnimation: INCLUDE "gfx/pokemon/jynx/anim.asm"
ElectabuzzAnimation: INCLUDE "gfx/pokemon/electabuzz/anim.asm"
MagmarAnimation: INCLUDE "gfx/pokemon/magmar/anim.asm"
PinsirAnimation: INCLUDE "gfx/pokemon/pinsir/anim.asm"
TaurosAnimation: INCLUDE "gfx/pokemon/tauros/anim.asm"
MagikarpAnimation: INCLUDE "gfx/pokemon/magikarp/anim.asm"
GyaradosAnimation: INCLUDE "gfx/pokemon/gyarados/anim.asm"
LaprasAnimation: INCLUDE "gfx/pokemon/lapras/anim.asm"
DittoAnimation: INCLUDE "gfx/pokemon/ditto/anim.asm"
EeveeAnimation: INCLUDE "gfx/pokemon/eevee/anim.asm"
VaporeonAnimation: INCLUDE "gfx/pokemon/vaporeon/anim.asm"
JolteonAnimation: INCLUDE "gfx/pokemon/jolteon/anim.asm"
FlareonAnimation: INCLUDE "gfx/pokemon/flareon/anim.asm"
PorygonAnimation: INCLUDE "gfx/pokemon/porygon/anim.asm"
OmanyteAnimation: INCLUDE "gfx/pokemon/omanyte/anim.asm"
OmastarAnimation: INCLUDE "gfx/pokemon/omastar/anim.asm"
KabutoAnimation: INCLUDE "gfx/pokemon/kabuto/anim.asm"
KabutopsAnimation: INCLUDE "gfx/pokemon/kabutops/anim.asm"
AerodactylAnimation: INCLUDE "gfx/pokemon/aerodactyl/anim.asm"
SnorlaxAnimation: INCLUDE "gfx/pokemon/snorlax/anim.asm"
ArticunoAnimation: INCLUDE "gfx/pokemon/articuno/anim.asm"
ZapdosAnimation: INCLUDE "gfx/pokemon/zapdos/anim.asm"
MoltresAnimation: INCLUDE "gfx/pokemon/moltres/anim.asm"
DratiniAnimation: INCLUDE "gfx/pokemon/dratini/anim.asm"
DragonairAnimation: INCLUDE "gfx/pokemon/dragonair/anim.asm"
DragoniteAnimation: INCLUDE "gfx/pokemon/dragonite/anim.asm"
MewtwoAnimation: INCLUDE "gfx/pokemon/mewtwo/anim.asm"
MewAnimation: INCLUDE "gfx/pokemon/mew/anim.asm"
ChikoritaAnimation: INCLUDE "gfx/pokemon/chikorita/anim.asm"
BayleefAnimation: INCLUDE "gfx/pokemon/bayleef/anim.asm"
MeganiumAnimation: INCLUDE "gfx/pokemon/meganium/anim.asm"
CyndaquilAnimation: INCLUDE "gfx/pokemon/cyndaquil/anim.asm"
QuilavaAnimation: INCLUDE "gfx/pokemon/quilava/anim.asm"
TyphlosionAnimation: INCLUDE "gfx/pokemon/typhlosion/anim.asm"
TotodileAnimation: INCLUDE "gfx/pokemon/totodile/anim.asm"
CroconawAnimation: INCLUDE "gfx/pokemon/croconaw/anim.asm"
FeraligatrAnimation: INCLUDE "gfx/pokemon/feraligatr/anim.asm"
SentretAnimation: INCLUDE "gfx/pokemon/sentret/anim.asm"
FurretAnimation: INCLUDE "gfx/pokemon/furret/anim.asm"
HoothootAnimation: INCLUDE "gfx/pokemon/hoothoot/anim.asm"
NoctowlAnimation: INCLUDE "gfx/pokemon/noctowl/anim.asm"
LedybaAnimation: INCLUDE "gfx/pokemon/ledyba/anim.asm"
LedianAnimation: INCLUDE "gfx/pokemon/ledian/anim.asm"
SpinarakAnimation: INCLUDE "gfx/pokemon/spinarak/anim.asm"
AriadosAnimation: INCLUDE "gfx/pokemon/ariados/anim.asm"
CrobatAnimation: INCLUDE "gfx/pokemon/crobat/anim.asm"
ChinchouAnimation: INCLUDE "gfx/pokemon/chinchou/anim.asm"
LanturnAnimation: INCLUDE "gfx/pokemon/lanturn/anim.asm"
PichuAnimation: INCLUDE "gfx/pokemon/pichu/anim.asm"
CleffaAnimation: INCLUDE "gfx/pokemon/cleffa/anim.asm"
IgglybuffAnimation: INCLUDE "gfx/pokemon/igglybuff/anim.asm"
TogepiAnimation: INCLUDE "gfx/pokemon/togepi/anim.asm"
TogeticAnimation: INCLUDE "gfx/pokemon/togetic/anim.asm"
NatuAnimation: INCLUDE "gfx/pokemon/natu/anim.asm"
XatuAnimation: INCLUDE "gfx/pokemon/xatu/anim.asm"
MareepAnimation: INCLUDE "gfx/pokemon/mareep/anim.asm"
FlaaffyAnimation: INCLUDE "gfx/pokemon/flaaffy/anim.asm"
AmpharosAnimation: INCLUDE "gfx/pokemon/ampharos/anim.asm"
BellossomAnimation: INCLUDE "gfx/pokemon/bellossom/anim.asm"
MarillAnimation: INCLUDE "gfx/pokemon/marill/anim.asm"
AzumarillAnimation: INCLUDE "gfx/pokemon/azumarill/anim.asm"
SudowoodoAnimation: INCLUDE "gfx/pokemon/sudowoodo/anim.asm"
PolitoedAnimation: INCLUDE "gfx/pokemon/politoed/anim.asm"
HoppipAnimation: INCLUDE "gfx/pokemon/hoppip/anim.asm"
SkiploomAnimation: INCLUDE "gfx/pokemon/skiploom/anim.asm"
JumpluffAnimation: INCLUDE "gfx/pokemon/jumpluff/anim.asm"
AipomAnimation: INCLUDE "gfx/pokemon/aipom/anim.asm"
SunkernAnimation: INCLUDE "gfx/pokemon/sunkern/anim.asm"
SunfloraAnimation: INCLUDE "gfx/pokemon/sunflora/anim.asm"
YanmaAnimation: INCLUDE "gfx/pokemon/yanma/anim.asm"
WooperAnimation: INCLUDE "gfx/pokemon/wooper/anim.asm"
QuagsireAnimation: INCLUDE "gfx/pokemon/quagsire/anim.asm"
EspeonAnimation: INCLUDE "gfx/pokemon/espeon/anim.asm"
UmbreonAnimation: INCLUDE "gfx/pokemon/umbreon/anim.asm"
MurkrowAnimation: INCLUDE "gfx/pokemon/murkrow/anim.asm"
SlowkingAnimation: INCLUDE "gfx/pokemon/slowking/anim.asm"
MisdreavusAnimation: INCLUDE "gfx/pokemon/misdreavus/anim.asm"
UnownAnimation: INCLUDE "gfx/pokemon/unown/anim.asm"
WobbuffetAnimation: INCLUDE "gfx/pokemon/wobbuffet/anim.asm"
GirafarigAnimation: INCLUDE "gfx/pokemon/girafarig/anim.asm"
PinecoAnimation: INCLUDE "gfx/pokemon/pineco/anim.asm"
ForretressAnimation: INCLUDE "gfx/pokemon/forretress/anim.asm"
DunsparceAnimation: INCLUDE "gfx/pokemon/dunsparce/anim.asm"
GligarAnimation: INCLUDE "gfx/pokemon/gligar/anim.asm"
SteelixAnimation: INCLUDE "gfx/pokemon/steelix/anim.asm"
SnubbullAnimation: INCLUDE "gfx/pokemon/snubbull/anim.asm"
GranbullAnimation: INCLUDE "gfx/pokemon/granbull/anim.asm"
QwilfishAnimation: INCLUDE "gfx/pokemon/qwilfish/anim.asm"
ScizorAnimation: INCLUDE "gfx/pokemon/scizor/anim.asm"
ShuckleAnimation: INCLUDE "gfx/pokemon/shuckle/anim.asm"
HeracrossAnimation: INCLUDE "gfx/pokemon/heracross/anim.asm"
SneaselAnimation: INCLUDE "gfx/pokemon/sneasel/anim.asm"
TeddiursaAnimation: INCLUDE "gfx/pokemon/teddiursa/anim.asm"
UrsaringAnimation: INCLUDE "gfx/pokemon/ursaring/anim.asm"
SlugmaAnimation: INCLUDE "gfx/pokemon/slugma/anim.asm"
MagcargoAnimation: INCLUDE "gfx/pokemon/magcargo/anim.asm"
SwinubAnimation: INCLUDE "gfx/pokemon/swinub/anim.asm"
PiloswineAnimation: INCLUDE "gfx/pokemon/piloswine/anim.asm"
CorsolaAnimation: INCLUDE "gfx/pokemon/corsola/anim.asm"
RemoraidAnimation: INCLUDE "gfx/pokemon/remoraid/anim.asm"
OctilleryAnimation: INCLUDE "gfx/pokemon/octillery/anim.asm"
DelibirdAnimation: INCLUDE "gfx/pokemon/delibird/anim.asm"
MantineAnimation: INCLUDE "gfx/pokemon/mantine/anim.asm"
SkarmoryAnimation: INCLUDE "gfx/pokemon/skarmory/anim.asm"
HoundourAnimation: INCLUDE "gfx/pokemon/houndour/anim.asm"
HoundoomAnimation: INCLUDE "gfx/pokemon/houndoom/anim.asm"
KingdraAnimation: INCLUDE "gfx/pokemon/kingdra/anim.asm"
PhanpyAnimation: INCLUDE "gfx/pokemon/phanpy/anim.asm"
DonphanAnimation: INCLUDE "gfx/pokemon/donphan/anim.asm"
Porygon2Animation: INCLUDE "gfx/pokemon/porygon2/anim.asm"
StantlerAnimation: INCLUDE "gfx/pokemon/stantler/anim.asm"
SmeargleAnimation: INCLUDE "gfx/pokemon/smeargle/anim.asm"
TyrogueAnimation: INCLUDE "gfx/pokemon/tyrogue/anim.asm"
HitmontopAnimation: INCLUDE "gfx/pokemon/hitmontop/anim.asm"
SmoochumAnimation: INCLUDE "gfx/pokemon/smoochum/anim.asm"
ElekidAnimation: INCLUDE "gfx/pokemon/elekid/anim.asm"
MagbyAnimation: INCLUDE "gfx/pokemon/magby/anim.asm"
MiltankAnimation: INCLUDE "gfx/pokemon/miltank/anim.asm"
BlisseyAnimation: INCLUDE "gfx/pokemon/blissey/anim.asm"
RaikouAnimation: INCLUDE "gfx/pokemon/raikou/anim.asm"
EnteiAnimation: INCLUDE "gfx/pokemon/entei/anim.asm"
SuicuneAnimation: INCLUDE "gfx/pokemon/suicune/anim.asm"
LarvitarAnimation: INCLUDE "gfx/pokemon/larvitar/anim.asm"
PupitarAnimation: INCLUDE "gfx/pokemon/pupitar/anim.asm"
TyranitarAnimation: INCLUDE "gfx/pokemon/tyranitar/anim.asm"
LugiaAnimation: INCLUDE "gfx/pokemon/lugia/anim.asm"
HoOhAnimation: INCLUDE "gfx/pokemon/ho_oh/anim.asm"
CelebiAnimation: INCLUDE "gfx/pokemon/celebi/anim.asm"
EggAnimation: INCLUDE "gfx/pokemon/egg/anim.asm"

Some files were not shown because too many files have changed in this diff Show More