aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2022-10-02 22:42:26 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2022-10-02 22:42:26 -0400
commit7dd9d7dc80dcd57ce079d0f365257035e9df4614 (patch)
tree3807ecb72443ecf12feb4faa0e4d811bad279458
parentMerge remote-tracking branch 'remotes/pokered/master' (diff)
parentRequire rgbds 0.6.0 (diff)
downloadpokeyellow-7dd9d7dc80dcd57ce079d0f365257035e9df4614.tar.gz
pokeyellow-7dd9d7dc80dcd57ce079d0f365257035e9df4614.tar.xz
pokeyellow-7dd9d7dc80dcd57ce079d0f365257035e9df4614.zip
Merge remote-tracking branch 'remotes/pokered/master'
-rw-r--r--.github/workflows/main.yml2
-rw-r--r--INSTALL.md22
-rw-r--r--Makefile12
-rw-r--r--audio.asm3
-rw-r--r--constants/move_animation_constants.asm175
-rw-r--r--constants/sprite_set_constants.asm41
-rw-r--r--data/battle_anims/subanimations.asm346
-rw-r--r--data/maps/sprite_sets.asm159
-rw-r--r--data/moves/animations.asm493
-rw-r--r--engine/battle/animations.asm31
-rw-r--r--engine/movie/splash.asm8
-rw-r--r--engine/overworld/cut.asm4
-rw-r--r--engine/overworld/map_sprites.asm68
-rw-r--r--gfx/battle/move_anim_0.png (renamed from gfx/battle/attack_anim_1.png)bin977 -> 977 bytes
-rw-r--r--gfx/battle/move_anim_1.png (renamed from gfx/battle/attack_anim_2.png)bin936 -> 936 bytes
-rw-r--r--home.asm3
-rw-r--r--includes.asm (renamed from constants.asm)17
-rw-r--r--macros.asm15
-rw-r--r--macros/data.asm10
-rw-r--r--main.asm3
-rw-r--r--maps.asm3
-rw-r--r--ram.asm2
-rw-r--r--ram/wram.asm4
-rw-r--r--rgbdscheck.asm12
-rw-r--r--text.asm3
-rwxr-xr-xtools/free_space.awk2
-rwxr-xr-xtools/free_space.py69
-rw-r--r--tools/mapreader.py173
-rwxr-xr-xtools/used_space.py64
-rw-r--r--vc/pokeyellow.constants.asm4
30 files changed, 725 insertions, 1023 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 13cc4e5f..805aea49 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -16,7 +16,7 @@ jobs:
uses: actions/checkout@master
with:
path: rgbds
- ref: v0.5.2
+ ref: v0.6.0
repository: gbdev/rgbds
- name: Install rgbds
diff --git a/INSTALL.md b/INSTALL.md
index 6699a0ef..c674eea3 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -42,9 +42,9 @@ Run setup and leave the default settings. At the "**Select Packages**" step, cho
Double click on the text that says "**Skip**" next to each package to select the most recent version to install.
-Then follow the [**rgbds** install instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 0.5.2**.
+Then follow the [**rgbds** install instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 0.6.0**.
-**Note:** If you already have an older rgbds, you will need to update to 0.5.2. Ignore this if you have never installed rgbds before. If a version newer than 0.5.2 does not work, try downloading 0.5.2.
+**Note:** If you already have an older rgbds, you will need to update to 0.6.0. Ignore this if you have never installed rgbds before. If a version newer than 0.6.0 does not work, try downloading 0.6.0.
Now open the **Cygwin terminal** and enter the following commands.
@@ -67,7 +67,7 @@ Install [**Homebrew**](https://brew.sh/). Follow the official instructions.
Open **Terminal** and prepare to enter commands.
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 0.5.2**.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 0.6.0**.
Now you're ready to [build **pokeyellow**](#build-pokeyellow).
@@ -84,7 +84,7 @@ To install the software required for **pokeyellow**:
sudo apt-get install make gcc git
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source.
### OpenSUSE
@@ -94,7 +94,7 @@ To install the software required for **pokeyellow**:
sudo zypper install make gcc git
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source.
### Arch Linux
@@ -104,9 +104,9 @@ To install the software required for **pokeyellow**:
sudo pacman -S make gcc git
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for Arch Linux to install **rgbds 0.5.2**.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for Arch Linux to install **rgbds 0.6.0**.
-If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source.
+If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source.
### Termux
@@ -122,7 +122,7 @@ To install **rgbds**:
sudo apt install rgbds
```
-If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source.
+If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source.
### Other distros
@@ -133,7 +133,7 @@ If your distro is not listed here, try to find the required software in its repo
- `git`
- `rgbds`
-If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source.
+If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source.
Now you're ready to [build **pokeyellow**](#build-pokeyellow).
@@ -155,8 +155,8 @@ make
### Build with a local rgbds version
-If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 0.5.2 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-0.5.2/`. Then specify it when you run `make`:
+If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 0.6.0 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-0.6.0/`. Then specify it when you run `make`:
```bash
-make RGBDS=rgbds-0.5.2/
+make RGBDS=rgbds-0.6.0/
```
diff --git a/Makefile b/Makefile
index e90ad8b6..78d44bb6 100644
--- a/Makefile
+++ b/Makefile
@@ -81,7 +81,7 @@ tools:
$(MAKE) -C tools/
-RGBASMFLAGS = -h -L -Weverything -Wnumeric-string=2 -Wtruncation=1
+RGBASMFLAGS = -hL -Q8 -P includes.asm -Weverything -Wnumeric-string=2 -Wtruncation=1
# Create a sym/map for debug purposes if `make` run with `DEBUG=1`
ifeq ($(DEBUG),1)
RGBASMFLAGS += -E
@@ -100,7 +100,7 @@ rgbdscheck.o: rgbdscheck.asm
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
# It doesn't look like $(shell) can be deferred so there might not be a better way.
define DEP
-$1: $2 $$(shell tools/scan_includes $2) | rgbdscheck.o
+$1: $2 $$(shell tools/scan_includes $2) | includes.asm rgbdscheck.o
$$(RGBASM) $$(RGBASMFLAGS) -o $$@ $$<
endef
@@ -116,8 +116,8 @@ $(foreach obj, $(pokeyellow_debug_obj), $(eval $(call DEP,$(obj),$(obj:_debug.o=
$(foreach obj, $(pokeyellow_vc_obj), $(eval $(call DEP,$(obj),$(obj:_vc.o=.asm))))
# Dependencies for VC files that need to run scan_includes
-%.constants.sym: %.constants.asm $(shell tools/scan_includes %.constants.asm) | rgbdscheck.o
- $(RGBASM) $< > $@
+%.constants.sym: %.constants.asm $(shell tools/scan_includes %.constants.asm) | includes.asm rgbdscheck.o
+ $(RGBASM) $(RGBASMFLAGS) $< > $@
endif
@@ -138,8 +138,8 @@ opts = -cjsv -k 01 -l 0x33 -m 0x1b -p 0 -r 03 -t "POKEMON YELLOW"
### Misc file-specific graphics rules
-gfx/battle/attack_anim_1.2bpp: tools/gfx += --trim-whitespace
-gfx/battle/attack_anim_2.2bpp: tools/gfx += --trim-whitespace
+gfx/battle/move_anim_0.2bpp: tools/gfx += --trim-whitespace
+gfx/battle/move_anim_1.2bpp: tools/gfx += --trim-whitespace
gfx/credits/the_end.2bpp: tools/gfx += --interleave --png=$<
diff --git a/audio.asm b/audio.asm
index 37988782..f3e999fc 100644
--- a/audio.asm
+++ b/audio.asm
@@ -1,6 +1,3 @@
-INCLUDE "constants.asm"
-
-
SECTION "Sound Effect Headers 1", ROMX
INCLUDE "audio/headers/sfxheaders1.asm"
diff --git a/constants/move_animation_constants.asm b/constants/move_animation_constants.asm
index 3d62cd19..2057541b 100644
--- a/constants/move_animation_constants.asm
+++ b/constants/move_animation_constants.asm
@@ -45,93 +45,96 @@ DEF FIRST_SE_ID EQU const_value
; subanimations that are part of move animations
; SubanimationPointers indexes (see data/battle_anims/subanimations.asm)
+
+; The 0 or 1 in the name of a subanim indicates whether to use tileset 0 or 1 data/moves/animations.asm.
+; "Both" indicates either can be used for different images using the same animation.
const_def
- const SUBANIM_00
- const SUBANIM_01
- const SUBANIM_02
- const SUBANIM_03
- const SUBANIM_04
- const SUBANIM_05
- const SUBANIM_06
- const SUBANIM_07
- const SUBANIM_08
- const SUBANIM_09
- const SUBANIM_0A
- const SUBANIM_0B
- const SUBANIM_0C
- const SUBANIM_0D
- const SUBANIM_0E
- const SUBANIM_0F
- const SUBANIM_10
- const SUBANIM_11
- const SUBANIM_12
- const SUBANIM_13
- const SUBANIM_14
- const SUBANIM_15
- const SUBANIM_16
- const SUBANIM_17
- const SUBANIM_18
- const SUBANIM_19
- const SUBANIM_1A
- const SUBANIM_1B
- const SUBANIM_1C
- const SUBANIM_1D
- const SUBANIM_1E
- const SUBANIM_1F
- const SUBANIM_20
- const SUBANIM_21
- const SUBANIM_22
- const SUBANIM_23
- const SUBANIM_24
- const SUBANIM_25
- const SUBANIM_26
- const SUBANIM_27
- const SUBANIM_28
- const SUBANIM_29
- const SUBANIM_2A
- const SUBANIM_2B
- const SUBANIM_2C
- const SUBANIM_2D
- const SUBANIM_2E
- const SUBANIM_2F
- const SUBANIM_30
- const SUBANIM_31
- const SUBANIM_32
- const SUBANIM_33
- const SUBANIM_34
- const SUBANIM_35
- const SUBANIM_36
- const SUBANIM_37
- const SUBANIM_38
- const SUBANIM_39
- const SUBANIM_3A
- const SUBANIM_3B
- const SUBANIM_3C
- const SUBANIM_3D
- const SUBANIM_3E
- const SUBANIM_3F
- const SUBANIM_40
- const SUBANIM_41
- const SUBANIM_42
- const SUBANIM_43
- const SUBANIM_44
- const SUBANIM_45
- const SUBANIM_46
- const SUBANIM_47
- const SUBANIM_48
- const SUBANIM_49
- const SUBANIM_4A
- const SUBANIM_4B
- const SUBANIM_4C
- const SUBANIM_4D
- const SUBANIM_4E
- const SUBANIM_4F
- const SUBANIM_50
- const SUBANIM_51
- const SUBANIM_52
- const SUBANIM_53
- const SUBANIM_54
- const SUBANIM_55
+ const SUBANIM_0_STAR
+ const SUBANIM_0_STAR_TWICE
+ const SUBANIM_0_STAR_THRICE
+ const SUBANIM_0_STAR_DESCENDING
+ const SUBANIM_1_STAR_BIG_MOVING
+ const SUBANIM_1_STAR_BIG
+ const SUBANIM_0_BALL_TOSS_HIGH
+ const SUBANIM_0_BALL_TOSS_MIDDLE
+ const SUBANIM_0_BALL_TOSS_LOW
+ const SUBANIM_0_BALL_SHAKE_ENEMY
+ const SUBANIM_0_BALL_POOF_ENEMY
+ const SUBANIM_0_BALL_BLOCK
+ const SUBANIM_1_FLAME_COLUMN_1
+ const SUBANIM_1_FLAME_COLUMN_2
+ const SUBANIM_1_FLAME_COLUMN_3
+ const SUBANIM_0_SCRATCHES
+ const SUBANIM_1_TORNADO
+ const SUBANIM_1_FLAMES
+ const SUBANIM_0_HEART_1_MUSIC
+ const SUBANIM_1_BLOB_TOSS
+ const SUBANIM_1_BLOB_DRIP_ENEMY
+ const SUBANIM_1_SHOUT
+ const SUBANIM_0_SLICE
+ const SUBANIM_0_BIRDIES_CIRCLING_ENEMY
+ const SUBANIM_1_SWORDS_CIRCLING
+ const SUBANIM_1_CLOUD_TOSS
+ const SUBANIM_0_WATER_COLUMNS
+ const SUBANIM_1_SEED_TOSS
+ const SUBANIM_1_SEED_LAND
+ const SUBANIM_0_ROCKS_LIFT
+ const SUBANIM_0_ROCKS_TOSS
+ const SUBANIM_1_FLAME_BEAM
+ const SUBANIM_1_FLAME_STAR
+ const SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY
+ const SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK
+ const SUBANIM_0_BIND
+ const SUBANIM_0_STATUS_PARALYZED
+ const SUBANIM_0_STATUS_CONFUSED
+ const SUBANIM_0_STATUS_CONFUSED_ENEMY
+ const SUBANIM_0_STATUS_POISONED
+ const SUBANIM_1_SAND
+ const SUBANIM_1_LIGHTNING_BALL
+ const SUBANIM_0_SLICE_BOTH_SIDES
+ const SUBANIM_1_LIGHTNING
+ const SUBANIM_0_WATER_DROPLETS
+ const SUBANIM_0_CIRCLES_CENTERING
+ const SUBANIM_0_BEAM
+ const SUBANIM_0_ICE_RISE
+ const SUBANIM_0_ROCKS_FALL_ENEMY
+ const SUBANIM_0_SOUND_WAVE
+ const SUBANIM_0_CIRCLE_1_SQUARE_HALF_TOSS ; unused
+ const SUBANIM_1_BARRIER
+ const SUBANIM_1_SELFDESTRUCT
+ const SUBANIM_0_WATER_BUBBLES
+ const SUBANIM_0_CIRCLES_FALLING
+ const SUBANIM_0_STRING_SHOT
+ const SUBANIM_0_ICE_FALL
+ const SUBANIM_0_CIRCLE_1_SQUARE_APPEARS ; unused
+ const SUBANIM_0_STATUS_SLEEP
+ const SUBANIM_0_STATUS_SLEEP_ENEMY
+ const SUBANIM_0_WATER_1_FIRE_BARRIER ; unused
+ const SUBANIM_0_WATER_1_FIRE_GEYSER ; unused
+ const SUBANIM_1_STAR_BIG_TOSS
+ const SUBANIM_1_STARS_SMALL_TOSS
+ const SUBANIM_1_MUSIC_CIRCLING_ENEMY
+ const SUBANIM_1_CIRCLE_BLACK_TOSS
+ const SUBANIM_1_EXPLOSION_SMALL_ENEMY
+ const SUBANIM_0_CIRCLE_1_SQUARE_CLOSING
+ const SUBANIM_1_LEAVES_TOSS
+ const SUBANIM_0_HORN_JAB_TWICE
+ const SUBANIM_0_HORN_JAB_THRICE
+ const SUBANIM_0_BALL_POOF
+ const SUBANIM_2_TRADE_BALL_DROP
+ const SUBANIM_2_TRADE_BALL_SHAKE
+ const SUBANIM_2_TRADE_BALL_APPEAR
+ const SUBANIM_2_TRADE_BALL_POOF
+ const SUBANIM_0_EGG_SHAKING
+ const SUBANIM_1_TRIANGLE_TOSS
+ const SUBANIM_1_SPHERE_BIG
+ const SUBANIM_1_SPHERE_BIG_RISE
+ const SUBANIM_1_SPHERE_BIG_FALL
+ const SUBANIM_0_SHELL
+ const SUBANIM_0_COIN_BOUNCE
+ const SUBANIM_0_SAFARI_ROCK
+ const SUBANIM_0_SAFARI_BAIT
+ const SUBANIM_0_STAR_HIGH
DEF NUM_SUBANIMS EQU const_value
; types of subanimations
diff --git a/constants/sprite_set_constants.asm b/constants/sprite_set_constants.asm
new file mode 100644
index 00000000..56e4ccbb
--- /dev/null
+++ b/constants/sprite_set_constants.asm
@@ -0,0 +1,41 @@
+; sprite set ids
+; indexes for SpriteSets (see data/maps/sprite_sets.asm)
+; values for MapSpriteSets and SplitMapSpriteSets (see data/maps/sprite_sets.asm)
+ const_def 1
+ const SPRITESET_PALLET_VIRIDIAN ; 01
+ const SPRITESET_PEWTER_CERULEAN ; 02
+ const SPRITESET_LAVENDER ; 03
+ const SPRITESET_VERMILION ; 04
+ const SPRITESET_CELADON ; 05
+ const SPRITESET_INDIGO ; 06
+ const SPRITESET_SAFFRON ; 07
+ const SPRITESET_SILENCE_BRIDGE ; 08
+ const SPRITESET_CYCLING_ROAD ; 09
+ const SPRITESET_FUCHSIA ; 0a
+DEF NUM_SPRITE_SETS EQU const_value - 1
+
+; split sprite set ids
+; indexes for SplitMapSpriteSets (see data/maps/sprite_sets.asm)
+; values for MapSpriteSets (see data/maps/sprite_sets.asm)
+ const_next $f1
+DEF FIRST_SPLIT_SET EQU const_value
+ const SPLITSET_ROUTE_2 ; f1
+ const SPLITSET_ROUTE_10 ; f2
+ const SPLITSET_ROUTE_11 ; f3
+ const SPLITSET_ROUTE_12 ; f4
+ const SPLITSET_ROUTE_15 ; f5
+ const SPLITSET_ROUTE_16 ; f6
+ const SPLITSET_ROUTE_18 ; f7
+ const SPLITSET_ROUTE_20 ; f8
+ const SPLITSET_ROUTE_5 ; f9
+ const SPLITSET_ROUTE_6 ; fa
+ const SPLITSET_ROUTE_7 ; fb
+ const SPLITSET_ROUTE_8 ; fc
+DEF NUM_SPLIT_SETS EQU const_value - FIRST_SPLIT_SET
+
+; split directions
+DEF EAST_WEST EQU 1
+DEF NORTH_SOUTH EQU 2
+
+; each sprite set has 9 walking sprites and 2 still sprites
+DEF SPRITE_SET_LENGTH EQU 9 + 2
diff --git a/data/battle_anims/subanimations.asm b/data/battle_anims/subanimations.asm
index d67d4641..74097e22 100644
--- a/data/battle_anims/subanimations.asm
+++ b/data/battle_anims/subanimations.asm
@@ -1,91 +1,91 @@
SubanimationPointers:
table_width 2, SubanimationPointers
- dw Subanimation00
- dw Subanimation01
- dw Subanimation02
- dw Subanimation03
- dw Subanimation04
- dw Subanimation05
- dw Subanimation06
- dw Subanimation07
- dw Subanimation08
- dw Subanimation09
- dw Subanimation0a
- dw Subanimation0b
- dw Subanimation0c
- dw Subanimation0d
- dw Subanimation0e
- dw Subanimation0f
- dw Subanimation10
- dw Subanimation11
- dw Subanimation12
- dw Subanimation13
- dw Subanimation14
- dw Subanimation15
- dw Subanimation16
- dw Subanimation17
- dw Subanimation18
- dw Subanimation19
- dw Subanimation1a
- dw Subanimation1b
- dw Subanimation1c
- dw Subanimation1d
- dw Subanimation1e
- dw Subanimation1f
- dw Subanimation20
- dw Subanimation21
- dw Subanimation22
- dw Subanimation23
- dw Subanimation24
- dw Subanimation25
- dw Subanimation26
- dw Subanimation27
- dw Subanimation28
- dw Subanimation29
- dw Subanimation2a
- dw Subanimation2b
- dw Subanimation2c
- dw Subanimation2d
- dw Subanimation2e
- dw Subanimation2f
- dw Subanimation30
- dw Subanimation31
- dw Subanimation32
- dw Subanimation33
- dw Subanimation34
- dw Subanimation35
- dw Subanimation36
- dw Subanimation37
- dw Subanimation38
- dw Subanimation39
- dw Subanimation3a
- dw Subanimation3b
- dw Subanimation3c
- dw Subanimation3d
- dw Subanimation3e
- dw Subanimation3f
- dw Subanimation40
- dw Subanimation41
- dw Subanimation42
- dw Subanimation43
- dw Subanimation44
- dw Subanimation45
- dw Subanimation46
- dw Subanimation47
- dw Subanimation48
- dw Subanimation49
- dw Subanimation4a
- dw Subanimation4b
- dw Subanimation4c
- dw Subanimation4d
- dw Subanimation4e
- dw Subanimation4f
- dw Subanimation50
- dw Subanimation51
- dw Subanimation52
- dw Subanimation53
- dw Subanimation54
- dw Subanimation55
+ dw Subanim_0Star
+ dw Subanim_0StarTwice
+ dw Subanim_0StarThrice
+ dw Subanim_0StarDescending
+ dw Subanim_1StarBigMoving
+ dw Subanim_1StarBig
+ dw Subanim_0BallTossHigh
+ dw Subanim_0BallTossMiddle
+ dw Subanim_0BallTossLow
+ dw Subanim_0BallShakeEnemy
+ dw Subanim_0BallPoofEnemy
+ dw Subanim_0BallBlock
+ dw Subanim_1FlameColumn1
+ dw Subanim_1FlameColumn2
+ dw Subanim_1FlameColumn3
+ dw Subanim_0Scratches
+ dw Subanim_1Tornado
+ dw Subanim_1Flames
+ dw Subanim_0Heart_1Music
+ dw Subanim_1BlobToss
+ dw Subanim_1BlobDripEnemy
+ dw Subanim_1Shout
+ dw Subanim_0Slice
+ dw Subanim_0BirdiesCirclingEnemy
+ dw Subanim_1SwordsCircling
+ dw Subanim_1CloudToss
+ dw Subanim_0WaterColumns
+ dw Subanim_1SeedToss
+ dw Subanim_1SeedLand
+ dw Subanim_0RocksLift
+ dw Subanim_0RocksToss
+ dw Subanim_1FlameBeam
+ dw Subanim_1FlameStar
+ dw Subanim_0Circles_1Squares_CenteringEnemy
+ dw Subanim_0Circle_1Square_TossBack
+ dw Subanim_0Bind
+ dw Subanim_0StatusParalyzed
+ dw Subanim_0StatusConfused
+ dw Subanim_0StatusConfusedEnemy
+ dw Subanim_0StatusPoisoned
+ dw Subanim_1Sand
+ dw Subanim_1LightningBall
+ dw Subanim_0SliceBothSides
+ dw Subanim_1Lightning
+ dw Subanim_0WaterDroplets
+ dw Subanim_0CirclesCentering
+ dw Subanim_0Beam
+ dw Subanim_0IceRise
+ dw Subanim_0RocksFallEnemy
+ dw Subanim_0SoundWave
+ dw Subanim_0Circle_1Square_HalfToss ; unused
+ dw Subanim_1Barrier
+ dw Subanim_1Selfdestruct
+ dw Subanim_0WaterBubbles
+ dw Subanim_0CirclesFalling
+ dw Subanim_0StringShot
+ dw Subanim_0IceFall
+ dw Subanim_0Circle_1Square_Appears ; unused
+ dw Subanim_0StatusSleep
+ dw Subanim_0StatusSleepEnemy
+ dw Subanim_0Water_1Fire_Barrier ; unused
+ dw Subanim_0Water_1Fire_Geyser ; unused
+ dw Subanim_1StarBigToss
+ dw Subanim_1StarsSmallToss
+ dw Subanim_1MusicCirclingEnemy
+ dw Subanim_1CircleBlackToss
+ dw Subanim_1ExplosionSmallEnemy
+ dw Subanim_0Circle_1Square_Closing
+ dw Subanim_1LeavesToss
+ dw Subanim_0HornJabTwice
+ dw Subanim_0HornJabThrice
+ dw Subanim_0BallPoof
+ dw Subanim_2TradeBallDrop
+ dw Subanim_2TradeBallShake
+ dw Subanim_2TradeBallAppear
+ dw Subanim_2TradeBallPoof
+ dw Subanim_0EggShaking
+ dw Subanim_1TriangleToss
+ dw Subanim_1SphereBig
+ dw Subanim_1SphereBigRise
+ dw Subanim_1SphereBigFall
+ dw Subanim_0Shell
+ dw Subanim_0CoinBounce
+ dw Subanim_0SafariRock
+ dw Subanim_0SafariBait
+ dw Subanim_0StarHigh
assert_table_length NUM_SUBANIMS
; format:
@@ -98,17 +98,17 @@ MACRO subanim
db (\1 << 5) | \2
ENDM
-Subanimation04:
+Subanim_1StarBigMoving:
subanim SUBANIMTYPE_HFLIP, 3
db FRAMEBLOCK_02, BASECOORD_1A, FRAMEBLOCKMODE_00
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
db FRAMEBLOCK_02, BASECOORD_03, FRAMEBLOCKMODE_00
-Subanimation05:
+Subanim_1StarBig:
subanim SUBANIMTYPE_HFLIP, 1
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
-Subanimation08:
+Subanim_0BallTossLow:
subanim SUBANIMTYPE_NORMAL, 11
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_44, FRAMEBLOCKMODE_00
@@ -122,7 +122,7 @@ Subanimation08:
db FRAMEBLOCK_03, BASECOORD_A1, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
-Subanimation07:
+Subanim_0BallTossMiddle:
subanim SUBANIMTYPE_NORMAL, 11
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_A2, FRAMEBLOCKMODE_00
@@ -136,7 +136,7 @@ Subanimation07:
db FRAMEBLOCK_03, BASECOORD_A6, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
-Subanimation06:
+Subanim_0BallTossHigh:
subanim SUBANIMTYPE_NORMAL, 11
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_A2, FRAMEBLOCKMODE_00
@@ -150,14 +150,14 @@ Subanimation06:
db FRAMEBLOCK_03, BASECOORD_A9, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
-Subanimation09:
+Subanim_0BallShakeEnemy:
subanim SUBANIMTYPE_NORMAL, 4
db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
db FRAMEBLOCK_04, BASECOORD_21, FRAMEBLOCKMODE_04
db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
db FRAMEBLOCK_05, BASECOORD_21, FRAMEBLOCKMODE_04
-Subanimation0a:
+Subanim_0BallPoofEnemy:
subanim SUBANIMTYPE_HFLIP, 6
db FRAMEBLOCK_06, BASECOORD_1B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_07, BASECOORD_1B, FRAMEBLOCKMODE_00
@@ -166,18 +166,18 @@ Subanimation0a:
db FRAMEBLOCK_0A, BASECOORD_15, FRAMEBLOCKMODE_00
db FRAMEBLOCK_0A, BASECOORD_15, FRAMEBLOCKMODE_00
-Subanimation0b:
+Subanim_0BallBlock:
subanim SUBANIMTYPE_NORMAL, 4
db FRAMEBLOCK_01, BASECOORD_2D, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_2F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_35, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_4D, FRAMEBLOCKMODE_00
-Subanimation55:
+Subanim_0StarHigh:
subanim SUBANIMTYPE_HFLIP, 1
db FRAMEBLOCK_01, BASECOORD_9D, FRAMEBLOCKMODE_00
-Subanimation11:
+Subanim_1Flames:
subanim SUBANIMTYPE_HFLIP, 12
db FRAMEBLOCK_0B, BASECOORD_26, FRAMEBLOCKMODE_00
db FRAMEBLOCK_0C, BASECOORD_26, FRAMEBLOCKMODE_00
@@ -192,7 +192,7 @@ Subanimation11:
db FRAMEBLOCK_0B, BASECOORD_27, FRAMEBLOCKMODE_00
db FRAMEBLOCK_0C, BASECOORD_27, FRAMEBLOCKMODE_00
-Subanimation2b:
+Subanim_1Lightning:
subanim SUBANIMTYPE_HFLIP, 11
db FRAMEBLOCK_0D, BASECOORD_03, FRAMEBLOCKMODE_03
db FRAMEBLOCK_0E, BASECOORD_03, FRAMEBLOCKMODE_03
@@ -206,7 +206,7 @@ Subanimation2b:
db FRAMEBLOCK_11, BASECOORD_1B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_11, BASECOORD_1B, FRAMEBLOCKMODE_00
-Subanimation2c:
+Subanim_0WaterDroplets:
subanim SUBANIMTYPE_HFLIP, 12
db FRAMEBLOCK_12, BASECOORD_01, FRAMEBLOCKMODE_00
db FRAMEBLOCK_12, BASECOORD_0F, FRAMEBLOCKMODE_00
@@ -221,7 +221,7 @@ Subanimation2c:
db FRAMEBLOCK_16, BASECOORD_38, FRAMEBLOCKMODE_00
db FRAMEBLOCK_16, BASECOORD_38, FRAMEBLOCKMODE_00
-Subanimation12:
+Subanim_0Heart_1Music:
subanim SUBANIMTYPE_COORDFLIP, 9
db FRAMEBLOCK_17, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_17, BASECOORD_39, FRAMEBLOCKMODE_00
@@ -233,35 +233,35 @@ Subanimation12:
db FRAMEBLOCK_17, BASECOORD_3F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_17, BASECOORD_1F, FRAMEBLOCKMODE_00
-Subanimation00:
+Subanim_0Star:
subanim SUBANIMTYPE_HFLIP, 1
db FRAMEBLOCK_01, BASECOORD_17, FRAMEBLOCKMODE_00
-Subanimation01:
+Subanim_0StarTwice:
subanim SUBANIMTYPE_HFLIP, 2
db FRAMEBLOCK_01, BASECOORD_0F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
-Subanimation02:
+Subanim_0StarThrice:
subanim SUBANIMTYPE_HFLIP, 3
db FRAMEBLOCK_01, BASECOORD_12, FRAMEBLOCKMODE_00
db FRAMEBLOCK_01, BASECOORD_15, FRAMEBLOCKMODE_00
db FRAMEBLOCK_01, BASECOORD_1C, FRAMEBLOCKMODE_00
-Subanimation03:
+Subanim_0StarDescending:
subanim SUBANIMTYPE_HFLIP, 4
db FRAMEBLOCK_01, BASECOORD_0B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_01, BASECOORD_11, FRAMEBLOCKMODE_00
db FRAMEBLOCK_01, BASECOORD_18, FRAMEBLOCKMODE_00
db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
-Subanimation0c:
+Subanim_1FlameColumn1:
subanim SUBANIMTYPE_HFLIP, 3
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_00
db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_00
-Subanimation0d:
+Subanim_1FlameColumn2:
subanim SUBANIMTYPE_HFLIP, 6
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
db FRAMEBLOCK_0C, BASECOORD_15, FRAMEBLOCKMODE_00
@@ -270,7 +270,7 @@ Subanimation0d:
db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_02
db FRAMEBLOCK_0C, BASECOORD_19, FRAMEBLOCKMODE_00
-Subanimation0e:
+Subanim_1FlameColumn3:
subanim SUBANIMTYPE_HFLIP, 9
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
db FRAMEBLOCK_0C, BASECOORD_15, FRAMEBLOCKMODE_02
@@ -282,7 +282,7 @@ Subanimation0e:
db FRAMEBLOCK_0C, BASECOORD_19, FRAMEBLOCKMODE_02
db FRAMEBLOCK_0C, BASECOORD_0C, FRAMEBLOCKMODE_00
-Subanimation1f:
+Subanim_1FlameBeam:
subanim SUBANIMTYPE_REVERSE, 5
db FRAMEBLOCK_0C, BASECOORD_30, FRAMEBLOCKMODE_03
db FRAMEBLOCK_0C, BASECOORD_40, FRAMEBLOCKMODE_03
@@ -290,7 +290,7 @@ Subanimation1f:
db FRAMEBLOCK_0C, BASECOORD_42, FRAMEBLOCKMODE_03
db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
-Subanimation2e:
+Subanim_0Beam:
subanim SUBANIMTYPE_HVFLIP, 14
db FRAMEBLOCK_18, BASECOORD_43, FRAMEBLOCKMODE_02
db FRAMEBLOCK_75, BASECOORD_52, FRAMEBLOCKMODE_04
@@ -307,14 +307,14 @@ Subanimation2e:
db FRAMEBLOCK_1E, BASECOORD_43, FRAMEBLOCKMODE_02
db FRAMEBLOCK_75, BASECOORD_1B, FRAMEBLOCKMODE_00
-Subanimation2f:
+Subanim_0IceRise:
subanim SUBANIMTYPE_HFLIP, 4
db FRAMEBLOCK_1F, BASECOORD_24, FRAMEBLOCKMODE_00
db FRAMEBLOCK_20, BASECOORD_20, FRAMEBLOCKMODE_00
db FRAMEBLOCK_21, BASECOORD_1A, FRAMEBLOCKMODE_00
db FRAMEBLOCK_22, BASECOORD_15, FRAMEBLOCKMODE_00
-Subanimation30:
+Subanim_0RocksFallEnemy:
subanim SUBANIMTYPE_HFLIP, 18
db FRAMEBLOCK_23, BASECOORD_00, FRAMEBLOCKMODE_02
db FRAMEBLOCK_23, BASECOORD_02, FRAMEBLOCKMODE_02
@@ -335,7 +335,7 @@ Subanimation30:
db FRAMEBLOCK_24, BASECOORD_28, FRAMEBLOCKMODE_00
db FRAMEBLOCK_24, BASECOORD_28, FRAMEBLOCKMODE_00
-Subanimation0f:
+Subanim_0Scratches:
subanim SUBANIMTYPE_HFLIP, 12
db FRAMEBLOCK_26, BASECOORD_0E, FRAMEBLOCKMODE_02
db FRAMEBLOCK_26, BASECOORD_16, FRAMEBLOCKMODE_02
@@ -350,7 +350,7 @@ Subanimation0f:
db FRAMEBLOCK_29, BASECOORD_16, FRAMEBLOCKMODE_02
db FRAMEBLOCK_29, BASECOORD_1C, FRAMEBLOCKMODE_00
-Subanimation16:
+Subanim_0Slice:
subanim SUBANIMTYPE_HFLIP, 12
db FRAMEBLOCK_2A, BASECOORD_05, FRAMEBLOCKMODE_00
db FRAMEBLOCK_2B, BASECOORD_05, FRAMEBLOCKMODE_02
@@ -365,7 +365,7 @@ Subanimation16:
db FRAMEBLOCK_2C, BASECOORD_00, FRAMEBLOCKMODE_02
db FRAMEBLOCK_2C, BASECOORD_00, FRAMEBLOCKMODE_00
-Subanimation10:
+Subanim_1Tornado:
subanim SUBANIMTYPE_REVERSE, 8
db FRAMEBLOCK_2D, BASECOORD_44, FRAMEBLOCKMODE_00
db FRAMEBLOCK_2E, BASECOORD_45, FRAMEBLOCKMODE_00
@@ -376,7 +376,7 @@ Subanimation10:
db FRAMEBLOCK_2D, BASECOORD_2F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_2E, BASECOORD_1A, FRAMEBLOCKMODE_00
-Subanimation31:
+Subanim_0SoundWave:
subanim SUBANIMTYPE_HVFLIP, 10
db FRAMEBLOCK_2F, BASECOORD_46, FRAMEBLOCKMODE_00
db FRAMEBLOCK_2F, BASECOORD_4A, FRAMEBLOCKMODE_00
@@ -389,7 +389,7 @@ Subanimation31:
db FRAMEBLOCK_2F, BASECOORD_2E, FRAMEBLOCKMODE_00
db FRAMEBLOCK_2F, BASECOORD_51, FRAMEBLOCKMODE_00
-Subanimation13:
+Subanim_1BlobToss:
subanim SUBANIMTYPE_REVERSE, 6
db FRAMEBLOCK_30, BASECOORD_31, FRAMEBLOCKMODE_00
db FRAMEBLOCK_30, BASECOORD_32, FRAMEBLOCKMODE_00
@@ -398,7 +398,7 @@ Subanimation13:
db FRAMEBLOCK_30, BASECOORD_0F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
-Subanimation14:
+Subanim_1BlobDripEnemy:
subanim SUBANIMTYPE_HFLIP, 9
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_03
@@ -410,7 +410,7 @@ Subanimation14:
db FRAMEBLOCK_31, BASECOORD_22, FRAMEBLOCKMODE_04
db FRAMEBLOCK_31, BASECOORD_27, FRAMEBLOCKMODE_00
-Subanimation41:
+Subanim_1CircleBlackToss:
subanim SUBANIMTYPE_REVERSE, 5
db FRAMEBLOCK_03, BASECOORD_31, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_32, FRAMEBLOCKMODE_00
@@ -418,32 +418,32 @@ Subanimation41:
db FRAMEBLOCK_03, BASECOORD_0E, FRAMEBLOCKMODE_00
db FRAMEBLOCK_03, BASECOORD_10, FRAMEBLOCKMODE_00
-Subanimation42:
+Subanim_1ExplosionSmallEnemy:
subanim SUBANIMTYPE_HFLIP, 3
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
db FRAMEBLOCK_5A, BASECOORD_08, FRAMEBLOCKMODE_00
-Subanimation15:
+Subanim_1Shout:
subanim SUBANIMTYPE_HVFLIP, 2
db FRAMEBLOCK_35, BASECOORD_52, FRAMEBLOCKMODE_00
db FRAMEBLOCK_35, BASECOORD_53, FRAMEBLOCKMODE_00
-Subanimation17:
+Subanim_0BirdiesCirclingEnemy:
subanim SUBANIMTYPE_HFLIP, 4
db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
-Subanimation18:
+Subanim_1SwordsCircling:
subanim SUBANIMTYPE_ENEMY, 4
db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
-Subanimation40:
+Subanim_1MusicCirclingEnemy:
subanim SUBANIMTYPE_HFLIP, 6
db FRAMEBLOCK_17, BASECOORD_54, FRAMEBLOCKMODE_00
db FRAMEBLOCK_17, BASECOORD_55, FRAMEBLOCKMODE_00
@@ -452,7 +452,7 @@ Subanimation40:
db FRAMEBLOCK_17, BASECOORD_57, FRAMEBLOCKMODE_00
db FRAMEBLOCK_17, BASECOORD_13, FRAMEBLOCKMODE_00
-Subanimation19:
+Subanim_1CloudToss:
subanim SUBANIMTYPE_REVERSE, 12
db FRAMEBLOCK_38, BASECOORD_31, FRAMEBLOCKMODE_00
db FRAMEBLOCK_39, BASECOORD_31, FRAMEBLOCKMODE_00
@@ -467,7 +467,7 @@ Subanimation19:
db FRAMEBLOCK_38, BASECOORD_10, FRAMEBLOCKMODE_00
db FRAMEBLOCK_39, BASECOORD_10, FRAMEBLOCKMODE_00
-Subanimation1a:
+Subanim_0WaterColumns:
subanim SUBANIMTYPE_HFLIP, 16
db FRAMEBLOCK_3A, BASECOORD_08, FRAMEBLOCKMODE_00
db FRAMEBLOCK_3B, BASECOORD_08, FRAMEBLOCKMODE_00
@@ -486,20 +486,20 @@ Subanimation1a:
db FRAMEBLOCK_3E, BASECOORD_0B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_3F, BASECOORD_0B, FRAMEBLOCKMODE_00
-Subanimation1b:
+Subanim_1SeedToss:
subanim SUBANIMTYPE_REVERSE, 4
db FRAMEBLOCK_40, BASECOORD_31, FRAMEBLOCKMODE_00
db FRAMEBLOCK_40, BASECOORD_32, FRAMEBLOCKMODE_00
db FRAMEBLOCK_40, BASECOORD_92, FRAMEBLOCKMODE_00
db FRAMEBLOCK_40, BASECOORD_15, FRAMEBLOCKMODE_00
-Subanimation1c:
+Subanim_1SeedLand:
subanim SUBANIMTYPE_HFLIP, 3
db FRAMEBLOCK_41, BASECOORD_58, FRAMEBLOCKMODE_00
db FRAMEBLOCK_41, BASECOORD_59, FRAMEBLOCKMODE_00
db FRAMEBLOCK_41, BASECOORD_21, FRAMEBLOCKMODE_00
-Subanimation1d:
+Subanim_0RocksLift:
subanim SUBANIMTYPE_ENEMY, 15
db FRAMEBLOCK_24, BASECOORD_9A, FRAMEBLOCKMODE_00
db FRAMEBLOCK_23, BASECOORD_1B, FRAMEBLOCKMODE_02
@@ -517,22 +517,22 @@ Subanimation1d:
db FRAMEBLOCK_25, BASECOORD_62, FRAMEBLOCKMODE_04
db FRAMEBLOCK_25, BASECOORD_99, FRAMEBLOCKMODE_03
-Subanimation1e:
+Subanim_0RocksToss:
subanim SUBANIMTYPE_NORMAL, 1
db FRAMEBLOCK_25, BASECOORD_75, FRAMEBLOCKMODE_00
-Subanimation20:
+Subanim_1FlameStar:
subanim SUBANIMTYPE_HFLIP, 2
db FRAMEBLOCK_42, BASECOORD_07, FRAMEBLOCKMODE_00
db FRAMEBLOCK_43, BASECOORD_07, FRAMEBLOCKMODE_00
-Subanimation21:
+Subanim_0Circles_1Squares_CenteringEnemy:
subanim SUBANIMTYPE_HFLIP, 3
db FRAMEBLOCK_44, BASECOORD_00, FRAMEBLOCKMODE_00
db FRAMEBLOCK_45, BASECOORD_08, FRAMEBLOCKMODE_00
db FRAMEBLOCK_46, BASECOORD_10, FRAMEBLOCKMODE_02
-Subanimation22:
+Subanim_0Circle_1Square_TossBack:
subanim SUBANIMTYPE_REVERSE, 11
db FRAMEBLOCK_47, BASECOORD_10, FRAMEBLOCKMODE_00
db FRAMEBLOCK_47, BASECOORD_56, FRAMEBLOCKMODE_00
@@ -546,8 +546,8 @@ Subanimation22:
db FRAMEBLOCK_47, BASECOORD_89, FRAMEBLOCKMODE_00
db FRAMEBLOCK_47, BASECOORD_B0, FRAMEBLOCKMODE_00
-Subanimation2d:
- subanim SUBANIMTYPE_COORDFLIP, 6
+Subanim_0CirclesCentering:
+ subanim SUBANIMTYPE_COORDFLIP, 6 ; should be SUBANIMTYPE_HVFLIP
db FRAMEBLOCK_44, BASECOORD_64, FRAMEBLOCKMODE_00
db FRAMEBLOCK_45, BASECOORD_65, FRAMEBLOCKMODE_00
db FRAMEBLOCK_46, BASECOORD_66, FRAMEBLOCKMODE_00
@@ -555,15 +555,15 @@ Subanimation2d:
db FRAMEBLOCK_47, BASECOORD_66, FRAMEBLOCKMODE_00
db FRAMEBLOCK_47, BASECOORD_66, FRAMEBLOCKMODE_00
-Subanimation39:
+Subanim_0Circle_1Square_Appears:
subanim SUBANIMTYPE_COORDFLIP, 1
db FRAMEBLOCK_47, BASECOORD_67, FRAMEBLOCKMODE_00
-Subanimation4e:
+Subanim_1SphereBig:
subanim SUBANIMTYPE_HFLIP, 1
db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_03
-Subanimation4f:
+Subanim_1SphereBigRise:
subanim SUBANIMTYPE_HFLIP, 7
db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_71, BASECOORD_08, FRAMEBLOCKMODE_00
@@ -573,7 +573,7 @@ Subanimation4f:
db FRAMEBLOCK_73, BASECOORD_95, FRAMEBLOCKMODE_00
db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
-Subanimation50:
+Subanim_1SphereBigFall:
subanim SUBANIMTYPE_HFLIP, 8
db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
db FRAMEBLOCK_73, BASECOORD_95, FRAMEBLOCKMODE_00
@@ -584,7 +584,7 @@ Subanimation50:
db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_71, BASECOORD_16, FRAMEBLOCKMODE_00
-Subanimation29:
+Subanim_1LightningBall:
subanim SUBANIMTYPE_HFLIP, 29
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_0F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
@@ -616,63 +616,63 @@ Subanimation29:
db FRAMEBLOCK_4D, BASECOORD_2A, FRAMEBLOCKMODE_03
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_6B, FRAMEBLOCKMODE_00
-Subanimation2a:
+Subanim_0SliceBothSides:
subanim SUBANIMTYPE_HFLIP, 4
db FRAMEBLOCK_4E, BASECOORD_2B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_4F, BASECOORD_2B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_50, BASECOORD_2B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_50, BASECOORD_2B, FRAMEBLOCKMODE_00
-Subanimation23:
+Subanim_0Bind:
subanim SUBANIMTYPE_HFLIP, 2
db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
-Subanimation24:
+Subanim_0StatusParalyzed:
subanim SUBANIMTYPE_ENEMY, 2
db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
-Subanimation25:
+Subanim_0StatusConfused:
subanim SUBANIMTYPE_COORDFLIP, 2
db FRAMEBLOCK_52, BASECOORD_71, FRAMEBLOCKMODE_00
db FRAMEBLOCK_52, BASECOORD_72, FRAMEBLOCKMODE_00
-Subanimation26:
+Subanim_0StatusConfusedEnemy:
subanim SUBANIMTYPE_NORMAL, 2
db FRAMEBLOCK_52, BASECOORD_01, FRAMEBLOCKMODE_00
db FRAMEBLOCK_52, BASECOORD_2C, FRAMEBLOCKMODE_00
-Subanimation3a:
+Subanim_0StatusSleep:
subanim SUBANIMTYPE_COORDFLIP, 3
db FRAMEBLOCK_53, BASECOORD_71, FRAMEBLOCKMODE_00
db FRAMEBLOCK_53, BASECOORD_7F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_53, BASECOORD_81, FRAMEBLOCKMODE_00
-Subanimation3b:
+Subanim_0StatusSleepEnemy:
subanim SUBANIMTYPE_NORMAL, 3
db FRAMEBLOCK_53, BASECOORD_01, FRAMEBLOCKMODE_00
db FRAMEBLOCK_53, BASECOORD_15, FRAMEBLOCKMODE_00
db FRAMEBLOCK_53, BASECOORD_2C, FRAMEBLOCKMODE_00
-Subanimation27:
+Subanim_0StatusPoisoned:
subanim SUBANIMTYPE_ENEMY, 2
db FRAMEBLOCK_54, BASECOORD_01, FRAMEBLOCKMODE_00
db FRAMEBLOCK_54, BASECOORD_2C, FRAMEBLOCKMODE_00
-Subanimation28:
+Subanim_1Sand:
subanim SUBANIMTYPE_HVFLIP, 3
db FRAMEBLOCK_55, BASECOORD_73, FRAMEBLOCKMODE_03
db FRAMEBLOCK_56, BASECOORD_73, FRAMEBLOCKMODE_03
db FRAMEBLOCK_57, BASECOORD_73, FRAMEBLOCKMODE_00
-Subanimation32:
+Subanim_0Circle_1Square_HalfToss:
subanim SUBANIMTYPE_COORDFLIP, 3
db FRAMEBLOCK_47, BASECOORD_74, FRAMEBLOCKMODE_00
db FRAMEBLOCK_47, BASECOORD_43, FRAMEBLOCKMODE_00
db FRAMEBLOCK_47, BASECOORD_75, FRAMEBLOCKMODE_00
-Subanimation33:
+Subanim_1Barrier:
subanim SUBANIMTYPE_HVFLIP, 6
db FRAMEBLOCK_58, BASECOORD_76, FRAMEBLOCKMODE_00
db FRAMEBLOCK_34, BASECOORD_76, FRAMEBLOCKMODE_00
@@ -681,7 +681,7 @@ Subanimation33:
db FRAMEBLOCK_58, BASECOORD_76, FRAMEBLOCKMODE_00
db FRAMEBLOCK_34, BASECOORD_76, FRAMEBLOCKMODE_00
-Subanimation3c:
+Subanim_0Water_1Fire_Barrier:
subanim SUBANIMTYPE_COORDFLIP, 7
db FRAMEBLOCK_59, BASECOORD_79, FRAMEBLOCKMODE_03
db FRAMEBLOCK_59, BASECOORD_7B, FRAMEBLOCKMODE_03
@@ -691,7 +691,7 @@ Subanimation3c:
db FRAMEBLOCK_59, BASECOORD_7C, FRAMEBLOCKMODE_03
db FRAMEBLOCK_59, BASECOORD_76, FRAMEBLOCKMODE_00
-Subanimation3d:
+Subanim_0Water_1Fire_Geyser:
subanim SUBANIMTYPE_NORMAL, 8
db FRAMEBLOCK_3A, BASECOORD_4D, FRAMEBLOCKMODE_00
db FRAMEBLOCK_3B, BASECOORD_4D, FRAMEBLOCKMODE_00
@@ -702,7 +702,7 @@ Subanimation3d:
db FRAMEBLOCK_3E, BASECOORD_4D, FRAMEBLOCKMODE_00
db FRAMEBLOCK_3F, BASECOORD_4D, FRAMEBLOCKMODE_00
-Subanimation34:
+Subanim_1Selfdestruct:
subanim SUBANIMTYPE_HVFLIP, 21
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_7D, FRAMEBLOCKMODE_00
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_7D, FRAMEBLOCKMODE_00
@@ -726,14 +726,14 @@ Subanimation34:
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_82, FRAMEBLOCKMODE_00
db FRAMEBLOCK_5A, BASECOORD_82, FRAMEBLOCKMODE_00
-Subanimation35:
+Subanim_0WaterBubbles:
subanim SUBANIMTYPE_HVFLIP, 4
db FRAMEBLOCK_5B, BASECOORD_83, FRAMEBLOCKMODE_03
db FRAMEBLOCK_5C, BASECOORD_84, FRAMEBLOCKMODE_03
db FRAMEBLOCK_5D, BASECOORD_85, FRAMEBLOCKMODE_03
db FRAMEBLOCK_5E, BASECOORD_09, FRAMEBLOCKMODE_00
-Subanimation36:
+Subanim_0CirclesFalling:
subanim SUBANIMTYPE_HFLIP, 8
db FRAMEBLOCK_5F, BASECOORD_2A, FRAMEBLOCKMODE_00
db FRAMEBLOCK_5F, BASECOORD_00, FRAMEBLOCKMODE_00
@@ -744,7 +744,7 @@ Subanimation36:
db FRAMEBLOCK_62, BASECOORD_2A, FRAMEBLOCKMODE_00
db FRAMEBLOCK_62, BASECOORD_00, FRAMEBLOCKMODE_00
-Subanimation37:
+Subanim_0StringShot:
subanim SUBANIMTYPE_HVFLIP, 10
db FRAMEBLOCK_63, BASECOORD_89, FRAMEBLOCKMODE_00
db FRAMEBLOCK_64, BASECOORD_75, FRAMEBLOCKMODE_00
@@ -757,7 +757,7 @@ Subanimation37:
db FRAMEBLOCK_65, BASECOORD_88, FRAMEBLOCKMODE_00
db FRAMEBLOCK_65, BASECOORD_1A, FRAMEBLOCKMODE_00
-Subanimation38:
+Subanim_0IceFall:
subanim SUBANIMTYPE_HFLIP, 16
db FRAMEBLOCK_66, BASECOORD_8A, FRAMEBLOCKMODE_00
db FRAMEBLOCK_66, BASECOORD_33, FRAMEBLOCKMODE_00
@@ -776,7 +776,7 @@ Subanimation38:
db FRAMEBLOCK_66, BASECOORD_1E, FRAMEBLOCKMODE_04
db FRAMEBLOCK_67, BASECOORD_29, FRAMEBLOCKMODE_00
-Subanimation3e:
+Subanim_1StarBigToss:
subanim SUBANIMTYPE_REVERSE, 18
db FRAMEBLOCK_02, BASECOORD_31, FRAMEBLOCKMODE_00
db FRAMEBLOCK_34, BASECOORD_31, FRAMEBLOCKMODE_00
@@ -797,7 +797,7 @@ Subanimation3e:
db FRAMEBLOCK_34, BASECOORD_10, FRAMEBLOCKMODE_00
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
-Subanimation3f:
+Subanim_1StarsSmallToss:
subanim SUBANIMTYPE_COORDFLIP, 18
db FRAMEBLOCK_68, BASECOORD_4B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_68, BASECOORD_8C, FRAMEBLOCKMODE_00
@@ -818,7 +818,7 @@ Subanimation3f:
db FRAMEBLOCK_68, BASECOORD_23, FRAMEBLOCKMODE_00
db FRAMEBLOCK_68, BASECOORD_1F, FRAMEBLOCKMODE_00
-Subanimation44:
+Subanim_1LeavesToss:
subanim SUBANIMTYPE_HVFLIP, 12
db FRAMEBLOCK_69, BASECOORD_4B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_69, BASECOORD_8C, FRAMEBLOCKMODE_00
@@ -833,20 +833,20 @@ Subanimation44:
db FRAMEBLOCK_69, BASECOORD_0C, FRAMEBLOCKMODE_00
db FRAMEBLOCK_69, BASECOORD_06, FRAMEBLOCKMODE_00
-Subanimation43:
+Subanim_0Circle_1Square_Closing:
subanim SUBANIMTYPE_ENEMY, 3
db FRAMEBLOCK_6A, BASECOORD_07, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6B, BASECOORD_0F, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6C, BASECOORD_17, FRAMEBLOCKMODE_00
-Subanimation45:
+Subanim_0HornJabTwice:
subanim SUBANIMTYPE_HVFLIP, 4
db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6D, BASECOORD_84, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6D, BASECOORD_63, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6D, BASECOORD_8C, FRAMEBLOCKMODE_00
-Subanimation46:
+Subanim_0HornJabThrice:
subanim SUBANIMTYPE_HVFLIP, 6
db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6D, BASECOORD_84, FRAMEBLOCKMODE_00
@@ -855,13 +855,13 @@ Subanimation46:
db FRAMEBLOCK_6D, BASECOORD_0A, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6D, BASECOORD_89, FRAMEBLOCKMODE_00
-Subanimation47:
+Subanim_0BallPoof:
subanim SUBANIMTYPE_HVFLIP, 3
db FRAMEBLOCK_06, BASECOORD_82, FRAMEBLOCKMODE_00
db FRAMEBLOCK_07, BASECOORD_82, FRAMEBLOCKMODE_00
db FRAMEBLOCK_08, BASECOORD_96, FRAMEBLOCKMODE_00
-Subanimation48:
+Subanim_2TradeBallDrop:
subanim SUBANIMTYPE_NORMAL, 6
db FRAMEBLOCK_03, BASECOORD_41, FRAMEBLOCKMODE_04
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
@@ -870,24 +870,24 @@ Subanimation48:
db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
-Subanimation49:
+Subanim_2TradeBallShake:
subanim SUBANIMTYPE_NORMAL, 4
db FRAMEBLOCK_04, BASECOORD_48, FRAMEBLOCKMODE_04
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
-Subanimation4a:
+Subanim_2TradeBallAppear:
subanim SUBANIMTYPE_NORMAL, 1
db FRAMEBLOCK_04, BASECOORD_84, FRAMEBLOCKMODE_03
-Subanimation4b:
+Subanim_2TradeBallPoof:
subanim SUBANIMTYPE_NORMAL, 3
db FRAMEBLOCK_06, BASECOORD_72, FRAMEBLOCKMODE_00
db FRAMEBLOCK_07, BASECOORD_72, FRAMEBLOCKMODE_00
db FRAMEBLOCK_08, BASECOORD_72, FRAMEBLOCKMODE_00
-Subanimation4c:
+Subanim_0EggShaking:
subanim SUBANIMTYPE_COORDFLIP, 8
db FRAMEBLOCK_6F, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
@@ -898,7 +898,7 @@ Subanimation4c:
db FRAMEBLOCK_70, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
-Subanimation4d:
+Subanim_1TriangleToss:
subanim SUBANIMTYPE_HVFLIP, 6
db FRAMEBLOCK_32, BASECOORD_4B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_33, BASECOORD_4F, FRAMEBLOCKMODE_00
@@ -907,7 +907,7 @@ Subanimation4d:
db FRAMEBLOCK_32, BASECOORD_19, FRAMEBLOCKMODE_00
db FRAMEBLOCK_33, BASECOORD_0D, FRAMEBLOCKMODE_00
-Subanimation51:
+Subanim_0Shell:
subanim SUBANIMTYPE_ENEMY, 6
db FRAMEBLOCK_76, BASECOORD_1B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_34, BASECOORD_1B, FRAMEBLOCKMODE_00
@@ -916,7 +916,7 @@ Subanimation51:
db FRAMEBLOCK_76, BASECOORD_1B, FRAMEBLOCKMODE_00
db FRAMEBLOCK_34, BASECOORD_1B, FRAMEBLOCKMODE_00
-Subanimation52:
+Subanim_0CoinBounce:
subanim SUBANIMTYPE_HFLIP, 7
db FRAMEBLOCK_77, BASECOORD_25, FRAMEBLOCKMODE_00
db FRAMEBLOCK_77, BASECOORD_9B, FRAMEBLOCKMODE_00
@@ -926,7 +926,7 @@ Subanimation52:
db FRAMEBLOCK_77, BASECOORD_50, FRAMEBLOCKMODE_00
db FRAMEBLOCK_77, BASECOORD_8C, FRAMEBLOCKMODE_00
-Subanimation53:
+Subanim_0SafariRock:
subanim SUBANIMTYPE_NORMAL, 12
db FRAMEBLOCK_78, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_78, BASECOORD_A2, FRAMEBLOCKMODE_00
@@ -941,7 +941,7 @@ Subanimation53:
db FRAMEBLOCK_78, BASECOORD_34, FRAMEBLOCKMODE_00
db FRAMEBLOCK_01, BASECOORD_9E, FRAMEBLOCKMODE_00
-Subanimation54:
+Subanim_0SafariBait:
subanim SUBANIMTYPE_NORMAL, 11
db FRAMEBLOCK_79, BASECOORD_30, FRAMEBLOCKMODE_00
db FRAMEBLOCK_79, BASECOORD_A2, FRAMEBLOCKMODE_00
diff --git a/data/maps/sprite_sets.asm b/data/maps/sprite_sets.asm
index b12ba9ce..abb85c1f 100644
--- a/data/maps/sprite_sets.asm
+++ b/data/maps/sprite_sets.asm
@@ -1,73 +1,71 @@
+; Valid sprite IDs for each outdoor map.
+
MapSpriteSets:
table_width 1, MapSpriteSets
- db $01 ; PALLET_TOWN
- db $01 ; VIRIDIAN_CITY
- db $02 ; PEWTER_CITY
- db $02 ; CERULEAN_CITY
- db $03 ; LAVENDER_TOWN
- db $04 ; VERMILION_CITY
- db $05 ; CELADON_CITY
- db $0a ; FUCHSIA_CITY
- db $01 ; CINNABAR_ISLAND
- db $06 ; INDIGO_PLATEAU
- db $07 ; SAFFRON_CITY
- db $01 ; unused map ID
- db $01 ; ROUTE_1
- db $f1 ; ROUTE_2
- db $02 ; ROUTE_3
- db $02 ; ROUTE_4
- db $f9 ; ROUTE_5
- db $fa ; ROUTE_6
- db $fb ; ROUTE_7
- db $fc ; ROUTE_8
- db $02 ; ROUTE_9
- db $f2 ; ROUTE_10
- db $f3 ; ROUTE_11
- db $f4 ; ROUTE_12
- db $08 ; ROUTE_13
- db $08 ; ROUTE_14
- db $f5 ; ROUTE_15
- db $f6 ; ROUTE_16
- db $09 ; ROUTE_17
- db $f7 ; ROUTE_18
- db $0a ; ROUTE_19
- db $f8 ; ROUTE_20
- db $01 ; ROUTE_21
- db $01 ; ROUTE_22
- db $06 ; ROUTE_23
- db $02 ; ROUTE_24
- db $02 ; ROUTE_25
+ db SPRITESET_PALLET_VIRIDIAN ; PALLET_TOWN
+ db SPRITESET_PALLET_VIRIDIAN ; VIRIDIAN_CITY
+ db SPRITESET_PEWTER_CERULEAN ; PEWTER_CITY
+ db SPRITESET_PEWTER_CERULEAN ; CERULEAN_CITY
+ db SPRITESET_LAVENDER ; LAVENDER_TOWN
+ db SPRITESET_VERMILION ; VERMILION_CITY
+ db SPRITESET_CELADON ; CELADON_CITY
+ db SPRITESET_FUCHSIA ; FUCHSIA_CITY
+ db SPRITESET_PALLET_VIRIDIAN ; CINNABAR_ISLAND
+ db SPRITESET_INDIGO ; INDIGO_PLATEAU
+ db SPRITESET_SAFFRON ; SAFFRON_CITY
+ db SPRITESET_PALLET_VIRIDIAN ; UNUSED_MAP_0B
+ db SPRITESET_PALLET_VIRIDIAN ; ROUTE_1
+ db SPLITSET_ROUTE_2 ; ROUTE_2
+ db SPRITESET_PEWTER_CERULEAN ; ROUTE_3
+ db SPRITESET_PEWTER_CERULEAN ; ROUTE_4
+ db SPLITSET_ROUTE_5 ; ROUTE_5
+ db SPLITSET_ROUTE_6 ; ROUTE_6
+ db SPLITSET_ROUTE_7 ; ROUTE_7
+ db SPLITSET_ROUTE_8 ; ROUTE_8
+ db SPRITESET_PEWTER_CERULEAN ; ROUTE_9
+ db SPLITSET_ROUTE_10 ; ROUTE_10
+ db SPLITSET_ROUTE_11 ; ROUTE_11
+ db SPLITSET_ROUTE_12 ; ROUTE_12
+ db SPRITESET_SILENCE_BRIDGE ; ROUTE_13
+ db SPRITESET_SILENCE_BRIDGE ; ROUTE_14
+ db SPLITSET_ROUTE_15 ; ROUTE_15
+ db SPLITSET_ROUTE_16 ; ROUTE_16
+ db SPRITESET_CYCLING_ROAD ; ROUTE_17
+ db SPLITSET_ROUTE_18 ; ROUTE_18
+ db SPRITESET_FUCHSIA ; ROUTE_19
+ db SPLITSET_ROUTE_20 ; ROUTE_20
+ db SPRITESET_PALLET_VIRIDIAN ; ROUTE_21
+ db SPRITESET_PALLET_VIRIDIAN ; ROUTE_22
+ db SPRITESET_INDIGO ; ROUTE_23
+ db SPRITESET_PEWTER_CERULEAN ; ROUTE_24
+ db SPRITESET_PEWTER_CERULEAN ; ROUTE_25
assert_table_length FIRST_INDOOR_MAP
-DEF EAST_WEST EQU 1
-DEF NORTH_SOUTH EQU 2
-
; Format:
-; 00: determines whether the map is split EAST_WEST or NORTH_SOUTH
-; 01: coordinate of dividing line
-; 02: sprite set ID if in the West or North side
-; 03: sprite set ID if in the East or South side
+; #1: whether the map is split EAST_WEST or NORTH_SOUTH
+; #2: coordinate of dividing line
+; #3: sprite set ID if on the west or north side
+; #4: sprite set ID if on the east or south side
SplitMapSpriteSets:
- db NORTH_SOUTH, 37, $02, $01 ; $f1
- db NORTH_SOUTH, 50, $02, $03 ; $f2
- db EAST_WEST, 57, $04, $08 ; $f3
- db NORTH_SOUTH, 21, $03, $08 ; $f4
- db EAST_WEST, 8, $0A, $08 ; $f5
- db EAST_WEST, 24, $09, $05 ; $f6
- db EAST_WEST, 34, $09, $0A ; $f7
- db EAST_WEST, 53, $01, $0A ; $f8
- db NORTH_SOUTH, 33, $02, $07 ; $f9
- db NORTH_SOUTH, 2, $07, $04 ; $fa
- db EAST_WEST, 17, $05, $07 ; $fb
- db EAST_WEST, 3, $07, $03 ; $fc
+ table_width 4, SplitMapSpriteSets
+ db NORTH_SOUTH, 37, SPRITESET_PEWTER_CERULEAN, SPRITESET_PALLET_VIRIDIAN ; SPLITSET_ROUTE_2
+ db NORTH_SOUTH, 50, SPRITESET_PEWTER_CERULEAN, SPRITESET_LAVENDER ; SPLITSET_ROUTE_10
+ db EAST_WEST, 57, SPRITESET_VERMILION, SPRITESET_SILENCE_BRIDGE ; SPLITSET_ROUTE_11
+ db NORTH_SOUTH, 21, SPRITESET_LAVENDER, SPRITESET_SILENCE_BRIDGE ; SPLITSET_ROUTE_12
+ db EAST_WEST, 8, SPRITESET_FUCHSIA, SPRITESET_SILENCE_BRIDGE ; SPLITSET_ROUTE_15
+ db EAST_WEST, 24, SPRITESET_CYCLING_ROAD, SPRITESET_CELADON ; SPLITSET_ROUTE_16
+ db EAST_WEST, 34, SPRITESET_CYCLING_ROAD, SPRITESET_FUCHSIA ; SPLITSET_ROUTE_18
+ db EAST_WEST, 53, SPRITESET_PALLET_VIRIDIAN, SPRITESET_FUCHSIA ; SPLITSET_ROUTE_20
+ db NORTH_SOUTH, 33, SPRITESET_PEWTER_CERULEAN, SPRITESET_SAFFRON ; SPLITSET_ROUTE_5
+ db NORTH_SOUTH, 2, SPRITESET_SAFFRON, SPRITESET_VERMILION ; SPLITSET_ROUTE_6
+ db EAST_WEST, 17, SPRITESET_CELADON, SPRITESET_SAFFRON ; SPLITSET_ROUTE_7
+ db EAST_WEST, 3, SPRITESET_SAFFRON, SPRITESET_LAVENDER ; SPLITSET_ROUTE_8
+ assert_table_length NUM_SPLIT_SETS
SpriteSets:
+ table_width SPRITE_SET_LENGTH, SpriteSets
-; each sprite set has 9 walking sprites and 2 still sprites
-DEF SPRITE_SET_LENGTH EQU 9 + 2
-
-; sprite set $01
- table_width 1
+; SPRITESET_PALLET_VIRIDIAN
db SPRITE_PIKACHU
db SPRITE_BLUE
db SPRITE_YOUNGSTER
@@ -79,10 +77,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_SWIMMER
db SPRITE_POKE_BALL
db SPRITE_GAMBLER_ASLEEP
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $02
- table_width 1
+; SPRITESET_PEWTER_CERULEAN
db SPRITE_PIKACHU
db SPRITE_YOUNGSTER
db SPRITE_ROCKET
@@ -94,10 +90,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_COOLTRAINER_M
db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $03
- table_width 1
+; SPRITESET_LAVENDER
db SPRITE_PIKACHU
db SPRITE_LITTLE_GIRL
db SPRITE_GIRL
@@ -109,10 +103,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_COOLTRAINER_M
db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $04
- table_width 1
+; SPRITESET_VERMILION
db SPRITE_PIKACHU
db SPRITE_OFFICER_JENNY
db SPRITE_SUPER_NERD
@@ -124,10 +116,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_COOLTRAINER_M
db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $05
- table_width 1
+; SPRITESET_CELADON
db SPRITE_PIKACHU
db SPRITE_LITTLE_GIRL
db SPRITE_LITTLE_BOY
@@ -139,10 +129,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_ROCKET
db SPRITE_POKE_BALL
db SPRITE_SNORLAX
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $06
- table_width 1
+; SPRITESET_INDIGO
db SPRITE_PIKACHU
db SPRITE_GYM_GUIDE
db SPRITE_MONSTER
@@ -154,10 +142,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_GAMBLER
db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $07
- table_width 1
+; SPRITESET_SAFFRON
db SPRITE_PIKACHU
db SPRITE_ROCKET
db SPRITE_SCIENTIST
@@ -169,10 +155,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_COOLTRAINER_M
db SPRITE_POKE_BALL
db SPRITE_UNUSED_GAMBLER_ASLEEP_2
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $08
- table_width 1
+; SPRITESET_SILENCE_BRIDGE
db SPRITE_PIKACHU
db SPRITE_BIKER
db SPRITE_SUPER_NERD
@@ -184,10 +168,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_ROCKER
db SPRITE_POKE_BALL
db SPRITE_SNORLAX
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $09
- table_width 1
+; SPRITESET_CYCLING_ROAD
db SPRITE_PIKACHU
db SPRITE_BIKER
db SPRITE_COOLTRAINER_M
@@ -199,10 +181,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_MIDDLE_AGED_MAN
db SPRITE_POKE_BALL
db SPRITE_SNORLAX
- assert_table_length SPRITE_SET_LENGTH
-; sprite set $0a
- table_width 1
+; SPRITESET_FUCHSIA
db SPRITE_PIKACHU
db SPRITE_COOLTRAINER_M
db SPRITE_CHANSEY
@@ -214,4 +194,5 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
db SPRITE_YOUNGSTER
db SPRITE_POKE_BALL
db SPRITE_FOSSIL
- assert_table_length SPRITE_SET_LENGTH
+
+ assert_table_length NUM_SPRITE_SETS
diff --git a/data/moves/animations.asm b/data/moves/animations.asm
index e92ba557..fd7ad88b 100644
--- a/data/moves/animations.asm
+++ b/data/moves/animations.asm
@@ -224,157 +224,160 @@ MACRO battle_anim
ENDC
ENDM
+; The 0 or 1 in the name of a subanim indicates whether to use tileset 0 or 1.
+; "Both" indicates either can be used for different images using the same animation.
+
PoundAnim:
StruggleAnim:
- battle_anim POUND, SUBANIM_01, 0, 8
+ battle_anim POUND, SUBANIM_0_STAR_TWICE, 0, 8
db -1 ; end
KarateChopAnim:
- battle_anim KARATE_CHOP, SUBANIM_03, 0, 8
+ battle_anim KARATE_CHOP, SUBANIM_0_STAR_DESCENDING, 0, 8
db -1 ; end
DoubleSlapAnim:
- battle_anim DOUBLESLAP, SUBANIM_01, 0, 5
- battle_anim DOUBLESLAP, SUBANIM_01, 0, 5
+ battle_anim DOUBLESLAP, SUBANIM_0_STAR_TWICE, 0, 5
+ battle_anim DOUBLESLAP, SUBANIM_0_STAR_TWICE, 0, 5
db -1 ; end
CometPunchAnim:
- battle_anim COMET_PUNCH, SUBANIM_02, 0, 4
- battle_anim COMET_PUNCH, SUBANIM_02, 0, 4
+ battle_anim COMET_PUNCH, SUBANIM_0_STAR_THRICE, 0, 4
+ battle_anim COMET_PUNCH, SUBANIM_0_STAR_THRICE, 0, 4
db -1 ; end
MegaPunchAnim:
- battle_anim MEGA_PUNCH, SUBANIM_04, 1, 6
+ battle_anim MEGA_PUNCH, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
PayDayAnim:
- battle_anim POUND, SUBANIM_01, 0, 8
- battle_anim PAY_DAY, SUBANIM_52, 0, 4
+ battle_anim POUND, SUBANIM_0_STAR_TWICE, 0, 8
+ battle_anim PAY_DAY, SUBANIM_0_COIN_BOUNCE, 0, 4
db -1 ; end
FirePunchAnim:
- battle_anim FIRE_PUNCH, SUBANIM_02, 0, 6
- battle_anim NO_MOVE, SUBANIM_11, 1, 6
+ battle_anim FIRE_PUNCH, SUBANIM_0_STAR_THRICE, 0, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAMES, 1, 6
db -1 ; end
IcePunchAnim:
- battle_anim ICE_PUNCH, SUBANIM_02, 0, 6
- battle_anim NO_MOVE, SUBANIM_2F, 0, 16
+ battle_anim ICE_PUNCH, SUBANIM_0_STAR_THRICE, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_ICE_RISE, 0, 16
db -1 ; end
ThunderPunchAnim:
- battle_anim THUNDERPUNCH, SUBANIM_02, 0, 6
+ battle_anim THUNDERPUNCH, SUBANIM_0_STAR_THRICE, 0, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_2B, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_LIGHTNING, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
ScratchAnim:
- battle_anim SCRATCH, SUBANIM_0F, 0, 6
+ battle_anim SCRATCH, SUBANIM_0_SCRATCHES, 0, 6
db -1 ; end
VicegripAnim:
- battle_anim VICEGRIP, SUBANIM_2A, 0, 8
+ battle_anim VICEGRIP, SUBANIM_0_SLICE_BOTH_SIDES, 0, 8
db -1 ; end
GuillotineAnim:
- battle_anim GUILLOTINE, SUBANIM_2A, 0, 6
+ battle_anim GUILLOTINE, SUBANIM_0_SLICE_BOTH_SIDES, 0, 6
db -1 ; end
RazorWindAnim:
- battle_anim RAZOR_WIND, SUBANIM_16, 0, 4
+ battle_anim RAZOR_WIND, SUBANIM_0_SLICE, 0, 4
db -1 ; end
SwordsDanceAnim:
- battle_anim SWORDS_DANCE, SUBANIM_18, 1, 6
- battle_anim SWORDS_DANCE, SUBANIM_18, 1, 6
- battle_anim SWORDS_DANCE, SUBANIM_18, 1, 6
+ battle_anim SWORDS_DANCE, SUBANIM_1_SWORDS_CIRCLING, 1, 6
+ battle_anim SWORDS_DANCE, SUBANIM_1_SWORDS_CIRCLING, 1, 6
+ battle_anim SWORDS_DANCE, SUBANIM_1_SWORDS_CIRCLING, 1, 6
db -1 ; end
CutAnim:
battle_anim CUT, SE_DARK_SCREEN_FLASH
- battle_anim NO_MOVE, SUBANIM_16, 0, 4
+ battle_anim NO_MOVE, SUBANIM_0_SLICE, 0, 4
db -1 ; end
GustAnim:
- battle_anim GUST, SUBANIM_10, 1, 6
- battle_anim NO_MOVE, SUBANIM_02, 0, 6
+ battle_anim GUST, SUBANIM_1_TORNADO, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_STAR_THRICE, 0, 6
db -1 ; end
WingAttackAnim:
- battle_anim WING_ATTACK, SUBANIM_04, 1, 6
+ battle_anim WING_ATTACK, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
WhirlwindAnim:
- battle_anim WHIRLWIND, SUBANIM_10, 1, 6
+ battle_anim WHIRLWIND, SUBANIM_1_TORNADO, 1, 6
battle_anim NO_MOVE, SE_SLIDE_ENEMY_MON_OFF
db -1 ; end
FlyAnim:
- battle_anim FLY, SUBANIM_04, 1, 6
+ battle_anim FLY, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_SHOW_MON_PIC
db -1 ; end
BindAnim:
- battle_anim BIND, SUBANIM_23, 0, 4
- battle_anim BIND, SUBANIM_23, 0, 4
+ battle_anim BIND, SUBANIM_0_BIND, 0, 4
+ battle_anim BIND, SUBANIM_0_BIND, 0, 4
db -1 ; end
SlamAnim:
- battle_anim SLAM, SUBANIM_02, 0, 6
+ battle_anim SLAM, SUBANIM_0_STAR_THRICE, 0, 6
db -1 ; end
VineWhipAnim:
- battle_anim VINE_WHIP, SUBANIM_16, 0, 1
- battle_anim NO_MOVE, SUBANIM_01, 0, 8
+ battle_anim VINE_WHIP, SUBANIM_0_SLICE, 0, 1
+ battle_anim NO_MOVE, SUBANIM_0_STAR_TWICE, 0, 8
db -1 ; end
StompAnim:
- battle_anim STOMP, SUBANIM_05, 1, 8
+ battle_anim STOMP, SUBANIM_1_STAR_BIG, 1, 8
db -1 ; end
DoubleKickAnim:
- battle_anim DOUBLE_KICK, SUBANIM_01, 0, 8
- battle_anim DOUBLE_KICK, SUBANIM_01, 0, 8
+ battle_anim DOUBLE_KICK, SUBANIM_0_STAR_TWICE, 0, 8
+ battle_anim DOUBLE_KICK, SUBANIM_0_STAR_TWICE, 0, 8
db -1 ; end
MegaKickAnim:
- battle_anim MEGA_KICK, SUBANIM_04, 1, 6
+ battle_anim MEGA_KICK, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
JumpKickAnim:
- battle_anim JUMP_KICK, SUBANIM_04, 1, 6
+ battle_anim JUMP_KICK, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
RollingKickAnim:
battle_anim ROLLING_KICK, SE_DARK_SCREEN_FLASH
- battle_anim NO_MOVE, SUBANIM_04, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
SandAttackAnim:
- battle_anim SAND_ATTACK, SUBANIM_28, 1, 6
+ battle_anim SAND_ATTACK, SUBANIM_1_SAND, 1, 6
db -1 ; end
HeadButtAnim:
- battle_anim HEADBUTT, SUBANIM_05, 1, 6
+ battle_anim HEADBUTT, SUBANIM_1_STAR_BIG, 1, 6
db -1 ; end
HornAttackAnim:
- battle_anim HORN_ATTACK, SUBANIM_45, 0, 6
- battle_anim NO_MOVE, SUBANIM_05, 1, 6
+ battle_anim HORN_ATTACK, SUBANIM_0_HORN_JAB_TWICE, 0, 6
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG, 1, 6
db -1 ; end
FuryAttackAnim:
- battle_anim FURY_ATTACK, SUBANIM_46, 0, 2
- battle_anim NO_MOVE, SUBANIM_46, 0, 2
+ battle_anim FURY_ATTACK, SUBANIM_0_HORN_JAB_THRICE, 0, 2
+ battle_anim NO_MOVE, SUBANIM_0_HORN_JAB_THRICE, 0, 2
db -1 ; end
HornDrillAnim:
- battle_anim HORN_DRILL, SUBANIM_05, 1, 2
- battle_anim NO_MOVE, SUBANIM_05, 1, 2
- battle_anim NO_MOVE, SUBANIM_05, 1, 2
- battle_anim NO_MOVE, SUBANIM_05, 1, 2
- battle_anim NO_MOVE, SUBANIM_05, 1, 2
+ battle_anim HORN_DRILL, SUBANIM_1_STAR_BIG, 1, 2
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG, 1, 2
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG, 1, 2
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG, 1, 2
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG, 1, 2
db -1 ; end
TackleAnim:
@@ -390,9 +393,9 @@ BodySlamAnim:
db -1 ; end
WrapAnim:
- battle_anim WRAP, SUBANIM_23, 0, 4
- battle_anim WRAP, SUBANIM_23, 0, 4
- battle_anim WRAP, SUBANIM_23, 0, 4
+ battle_anim WRAP, SUBANIM_0_BIND, 0, 4
+ battle_anim WRAP, SUBANIM_0_BIND, 0, 4
+ battle_anim WRAP, SUBANIM_0_BIND, 0, 4
db -1 ; end
TakeDownAnim:
@@ -402,12 +405,12 @@ TakeDownAnim:
db -1 ; end
ThrashAnim:
- battle_anim THRASH, SUBANIM_04, 1, 6
+ battle_anim THRASH, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
DoubleEdgeAnim:
battle_anim LEECH_SEED, SE_LIGHT_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_2D, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLES_CENTERING, 0, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
battle_anim NO_MOVE, SE_MOVE_MON_HORIZONTALLY
battle_anim DOUBLE_EDGE, SE_DARK_SCREEN_FLASH
@@ -425,16 +428,16 @@ TailWhipAnim:
db -1 ; end
PoisonStingAnim:
- battle_anim POISON_STING, SUBANIM_00, 0, 6
+ battle_anim POISON_STING, SUBANIM_0_STAR, 0, 6
db -1 ; end
TwineedleAnim:
- battle_anim TWINEEDLE, SUBANIM_01, 0, 5
- battle_anim TWINEEDLE, SUBANIM_01, 0, 5
+ battle_anim TWINEEDLE, SUBANIM_0_STAR_TWICE, 0, 5
+ battle_anim TWINEEDLE, SUBANIM_0_STAR_TWICE, 0, 5
db -1 ; end
PinMissileAnim:
- battle_anim PIN_MISSILE, SUBANIM_01, 0, 3
+ battle_anim PIN_MISSILE, SUBANIM_0_STAR_TWICE, 0, 3
db -1 ; end
LeerAnim:
@@ -445,34 +448,34 @@ LeerAnim:
db -1 ; end
BiteAnim:
- battle_anim BITE, SUBANIM_02, 0, 8
+ battle_anim BITE, SUBANIM_0_STAR_THRICE, 0, 8
db -1 ; end
GrowlAnim:
- battle_anim GROWL, SUBANIM_12, 1, 6
+ battle_anim GROWL, SUBANIM_0_HEART_1_MUSIC, 1, 6
db -1 ; end
RoarAnim:
- battle_anim ROAR, SUBANIM_15, 1, 6
- battle_anim ROAR, SUBANIM_15, 1, 6
- battle_anim ROAR, SUBANIM_15, 1, 6
+ battle_anim ROAR, SUBANIM_1_SHOUT, 1, 6
+ battle_anim ROAR, SUBANIM_1_SHOUT, 1, 6
+ battle_anim ROAR, SUBANIM_1_SHOUT, 1, 6
db -1 ; end
SingAnim:
- battle_anim SING, SUBANIM_12, 1, 6
- battle_anim NO_MOVE, SUBANIM_40, 1, 16
- battle_anim NO_MOVE, SUBANIM_40, 1, 16
+ battle_anim SING, SUBANIM_0_HEART_1_MUSIC, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_MUSIC_CIRCLING_ENEMY, 1, 16
+ battle_anim NO_MOVE, SUBANIM_1_MUSIC_CIRCLING_ENEMY, 1, 16
db -1 ; end
SupersonicAnim:
- battle_anim SUPERSONIC, SUBANIM_31, 0, 6
+ battle_anim SUPERSONIC, SUBANIM_0_SOUND_WAVE, 0, 6
db -1 ; end
SonicBoomAnim:
- battle_anim ROAR, SUBANIM_15, 1, 6
- battle_anim ROAR, SUBANIM_15, 1, 6
- battle_anim GUST, SUBANIM_10, 1, 6
- battle_anim NO_MOVE, SUBANIM_05, 1, 6
+ battle_anim ROAR, SUBANIM_1_SHOUT, 1, 6
+ battle_anim ROAR, SUBANIM_1_SHOUT, 1, 6
+ battle_anim GUST, SUBANIM_1_TORNADO, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG, 1, 6
db -1 ; end
DisableAnim:
@@ -483,18 +486,18 @@ DisableAnim:
db -1 ; end
AcidAnim:
- battle_anim ACID, SUBANIM_13, 1, 6
- battle_anim ACID, SUBANIM_14, 1, 6
+ battle_anim ACID, SUBANIM_1_BLOB_TOSS, 1, 6
+ battle_anim ACID, SUBANIM_1_BLOB_DRIP_ENEMY, 1, 6
db -1 ; end
EmberAnim:
- battle_anim EMBER, SUBANIM_11, 1, 6
+ battle_anim EMBER, SUBANIM_1_FLAMES, 1, 6
db -1 ; end
FlamethrowerAnim:
- battle_anim FLAMETHROWER, SUBANIM_1F, 1, 6
- battle_anim FLAMETHROWER, SUBANIM_0C, 1, 6
- battle_anim FLAMETHROWER, SUBANIM_0D, 1, 6
+ battle_anim FLAMETHROWER, SUBANIM_1_FLAME_BEAM, 1, 6
+ battle_anim FLAMETHROWER, SUBANIM_1_FLAME_COLUMN_1, 1, 6
+ battle_anim FLAMETHROWER, SUBANIM_1_FLAME_COLUMN_2, 1, 6
db -1 ; end
MistAnim:
@@ -504,40 +507,40 @@ MistAnim:
db -1 ; end
WaterGunAnim:
- battle_anim WATER_GUN, SUBANIM_2C, 0, 6
+ battle_anim WATER_GUN, SUBANIM_0_WATER_DROPLETS, 0, 6
db -1 ; end
HydroPumpAnim:
- battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
- battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
+ battle_anim HYDRO_PUMP, SUBANIM_0_WATER_COLUMNS, 0, 6
+ battle_anim HYDRO_PUMP, SUBANIM_0_WATER_COLUMNS, 0, 6
db -1 ; end
SurfAnim:
battle_anim SURF, SE_WATER_DROPLETS_EVERYWHERE
- battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
+ battle_anim HYDRO_PUMP, SUBANIM_0_WATER_COLUMNS, 0, 6
db -1 ; end
IceBeamAnim:
- battle_anim ICE_BEAM, SUBANIM_2E, 0, 3
- battle_anim NO_MOVE, SUBANIM_2F, 0, 16
+ battle_anim ICE_BEAM, SUBANIM_0_BEAM, 0, 3
+ battle_anim NO_MOVE, SUBANIM_0_ICE_RISE, 0, 16
db -1 ; end
BlizzardAnim:
- battle_anim BLIZZARD, SUBANIM_38, 0, 4
- battle_anim HYDRO_PUMP, SUBANIM_38, 0, 4
+ battle_anim BLIZZARD, SUBANIM_0_ICE_FALL, 0, 4
+ battle_anim HYDRO_PUMP, SUBANIM_0_ICE_FALL, 0, 4
db -1 ; end
PsyBeamAnim:
- battle_anim PSYBEAM, SUBANIM_2E, 0, 3
+ battle_anim PSYBEAM, SUBANIM_0_BEAM, 0, 3
battle_anim NO_MOVE, SE_FLASH_SCREEN_LONG
db -1 ; end
BubbleBeamAnim:
- battle_anim BUBBLEBEAM, SUBANIM_35, 0, 18
+ battle_anim BUBBLEBEAM, SUBANIM_0_WATER_BUBBLES, 0, 18
db -1 ; end
AuroraBeamAnim:
- battle_anim AURORA_BEAM, SUBANIM_2E, 0, 3
+ battle_anim AURORA_BEAM, SUBANIM_0_BEAM, 0, 3
battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
db -1 ; end
@@ -545,49 +548,49 @@ AuroraBeamAnim:
HyperBeamAnim:
battle_anim LEECH_SEED, SE_DARK_SCREEN_PALETTE
battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
- battle_anim HYPER_BEAM, SUBANIM_2E, 0, 2
+ battle_anim HYPER_BEAM, SUBANIM_0_BEAM, 0, 2
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
- battle_anim MEGA_PUNCH, SUBANIM_04, 1, 6
+ battle_anim MEGA_PUNCH, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
PeckAnim:
- battle_anim PECK, SUBANIM_01, 0, 8
+ battle_anim PECK, SUBANIM_0_STAR_TWICE, 0, 8
db -1 ; end
DrillPeckAnim:
- battle_anim DRILL_PECK, SUBANIM_04, 1, 6
+ battle_anim DRILL_PECK, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
SubmissionAnim:
battle_anim SUBMISSION, SE_SLIDE_MON_OFF
- battle_anim NO_MOVE, SUBANIM_01, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_STAR_TWICE, 0, 6
battle_anim NO_MOVE, SE_SHOW_MON_PIC
db -1 ; end
LowKickAnim:
battle_anim LOW_KICK, SE_SLIDE_MON_OFF
- battle_anim NO_MOVE, SUBANIM_04, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_SHOW_MON_PIC
db -1 ; end
CounterAnim:
battle_anim COUNTER, SE_SLIDE_MON_OFF
- battle_anim NO_MOVE, SUBANIM_04, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_SHOW_MON_PIC
db -1 ; end
SeismicTossAnim:
battle_anim NO_MOVE, SE_BLINK_ENEMY_MON
- battle_anim BARRAGE, SUBANIM_4E, 1, 1
+ battle_anim BARRAGE, SUBANIM_1_SPHERE_BIG, 1, 1
battle_anim NO_MOVE, SE_HIDE_ENEMY_MON_PIC
battle_anim NO_MOVE, SE_SLIDE_MON_OFF
- battle_anim SEISMIC_TOSS, SUBANIM_4F, 1, 2
+ battle_anim SEISMIC_TOSS, SUBANIM_1_SPHERE_BIG_RISE, 1, 2
battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
battle_anim NO_MOVE, SE_SHOW_MON_PIC
- battle_anim SEISMIC_TOSS, SUBANIM_50, 1, 1
+ battle_anim SEISMIC_TOSS, SUBANIM_1_SPHERE_BIG_FALL, 1, 1
battle_anim NO_MOVE, SE_SHOW_ENEMY_MON_PIC
battle_anim NO_MOVE, SE_SHAKE_SCREEN
db -1 ; end
@@ -595,28 +598,28 @@ SeismicTossAnim:
StrengthAnim:
battle_anim LEECH_SEED, SE_MOVE_MON_HORIZONTALLY
battle_anim NO_MOVE, SE_RESET_MON_POSITION
- battle_anim FIRE_PUNCH, SUBANIM_04, 1, 6
+ battle_anim FIRE_PUNCH, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
AbsorbAnim:
battle_anim ABSORB, SE_LIGHT_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_21, 0, 6
- battle_anim NO_MOVE, SUBANIM_22, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK, 0, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
MegaDrainAnim:
battle_anim MEGA_DRAIN, SE_LIGHT_SCREEN_PALETTE
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
- battle_anim NO_MOVE, SUBANIM_21, 0, 6
- battle_anim NO_MOVE, SUBANIM_22, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK, 0, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
LeechSeedAnim:
- battle_anim LEECH_SEED, SUBANIM_1B, 1, 6
- battle_anim STUN_SPORE, SUBANIM_1C, 1, 21
+ battle_anim LEECH_SEED, SUBANIM_1_SEED_TOSS, 1, 6
+ battle_anim STUN_SPORE, SUBANIM_1_SEED_LAND, 1, 21
db -1 ; end
GrowthAnim:
@@ -627,25 +630,25 @@ GrowthAnim:
RazorLeafAnim:
battle_anim RAZOR_LEAF, SE_LEAVES_FALLING
- battle_anim SWIFT, SUBANIM_44, 1, 1
- battle_anim RAZOR_WIND, SUBANIM_16, 0, 1
+ battle_anim SWIFT, SUBANIM_1_LEAVES_TOSS, 1, 1
+ battle_anim RAZOR_WIND, SUBANIM_0_SLICE, 0, 1
db -1 ; end
SolarBeamAnim:
- battle_anim SOLARBEAM, SUBANIM_2E, 0, 6
- battle_anim NO_MOVE, SUBANIM_01, 0, 6
+ battle_anim SOLARBEAM, SUBANIM_0_BEAM, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_STAR_TWICE, 0, 6
db -1 ; end
PoisonPowderAnim:
- battle_anim POISONPOWDER, SUBANIM_36, 0, 6
+ battle_anim POISONPOWDER, SUBANIM_0_CIRCLES_FALLING, 0, 6
db -1 ; end
StunSporeAnim:
- battle_anim STUN_SPORE, SUBANIM_36, 0, 6
+ battle_anim STUN_SPORE, SUBANIM_0_CIRCLES_FALLING, 0, 6
db -1 ; end
SleepPowderAnim:
- battle_anim SLEEP_POWDER, SUBANIM_36, 0, 6
+ battle_anim SLEEP_POWDER, SUBANIM_0_CIRCLES_FALLING, 0, 6
db -1 ; end
PetalDanceAnim:
@@ -655,48 +658,48 @@ PetalDanceAnim:
db -1 ; end
StringShotAnim:
- battle_anim STRING_SHOT, SUBANIM_37, 0, 8
+ battle_anim STRING_SHOT, SUBANIM_0_STRING_SHOT, 0, 8
db -1 ; end
DragonRageAnim:
- battle_anim DRAGON_RAGE, SUBANIM_1F, 1, 6
- battle_anim NO_MOVE, SUBANIM_0C, 1, 6
- battle_anim NO_MOVE, SUBANIM_0D, 1, 6
- battle_anim NO_MOVE, SUBANIM_0E, 1, 6
+ battle_anim DRAGON_RAGE, SUBANIM_1_FLAME_BEAM, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_COLUMN_1, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_COLUMN_2, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_COLUMN_3, 1, 6
db -1 ; end
FireSpinAnim:
- battle_anim FIRE_SPIN, SUBANIM_0C, 1, 6
- battle_anim NO_MOVE, SUBANIM_0D, 1, 6
- battle_anim NO_MOVE, SUBANIM_0E, 1, 6
+ battle_anim FIRE_SPIN, SUBANIM_1_FLAME_COLUMN_1, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_COLUMN_2, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_COLUMN_3, 1, 6
db -1 ; end
ThunderShockAnim:
- battle_anim THUNDERSHOCK, SUBANIM_29, 1, 2
+ battle_anim THUNDERSHOCK, SUBANIM_1_LIGHTNING_BALL, 1, 2
db -1 ; end
ThunderBoltAnim:
- battle_anim THUNDERBOLT, SUBANIM_29, 1, 1
- battle_anim THUNDERBOLT, SUBANIM_29, 1, 1
+ battle_anim THUNDERBOLT, SUBANIM_1_LIGHTNING_BALL, 1, 1
+ battle_anim THUNDERBOLT, SUBANIM_1_LIGHTNING_BALL, 1, 1
db -1 ; end
ThunderWaveAnim:
- battle_anim THUNDER_WAVE, SUBANIM_29, 1, 2
- battle_anim NO_MOVE, SUBANIM_23, 0, 2
- battle_anim NO_MOVE, SUBANIM_23, 0, 4
+ battle_anim THUNDER_WAVE, SUBANIM_1_LIGHTNING_BALL, 1, 2
+ battle_anim NO_MOVE, SUBANIM_0_BIND, 0, 2
+ battle_anim NO_MOVE, SUBANIM_0_BIND, 0, 4
db -1 ; end
ThunderAnim:
battle_anim THUNDER, SE_DARK_SCREEN_PALETTE
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
- battle_anim NO_MOVE, SUBANIM_2B, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_LIGHTNING, 1, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
- battle_anim THUNDERBOLT, SUBANIM_29, 1, 2
+ battle_anim THUNDERBOLT, SUBANIM_1_LIGHTNING_BALL, 1, 2
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
RockThrowAnim:
- battle_anim ROCK_THROW, SUBANIM_30, 0, 4
+ battle_anim ROCK_THROW, SUBANIM_0_ROCKS_FALL_ENEMY, 0, 4
db -1 ; end
EarthquakeAnim:
@@ -712,13 +715,13 @@ FissureAnim:
db -1 ; end
DigAnim:
- battle_anim DIG, SUBANIM_04, 1, 6
+ battle_anim DIG, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_SLIDE_MON_UP
db -1 ; end
ToxicAnim:
battle_anim SURF, SE_WATER_DROPLETS_EVERYWHERE
- battle_anim TOXIC, SUBANIM_14, 1, 6
+ battle_anim TOXIC, SUBANIM_1_BLOB_DRIP_ENEMY, 1, 6
db -1 ; end
ConfusionAnim:
@@ -736,7 +739,7 @@ HypnosisAnim:
MeditateAnim:
battle_anim MEDITATE, SE_LIGHT_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_43, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_CLOSING, 1, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
@@ -748,12 +751,12 @@ AgilityAnim:
QuickAttackAnim:
battle_anim QUICK_ATTACK, SE_SLIDE_MON_OFF
- battle_anim NO_MOVE, SUBANIM_04, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_SHOW_MON_PIC
db -1 ; end
RageAnim:
- battle_anim RAGE, SUBANIM_01, 0, 6
+ battle_anim RAGE, SUBANIM_0_STAR_TWICE, 0, 6
db -1 ; end
TeleportAnim:
@@ -767,12 +770,12 @@ NightShadeAnim:
db -1 ; end
MimicAnim:
- battle_anim MIMIC, SUBANIM_21, 1, 6
- battle_anim MIMIC, SUBANIM_22, 1, 6
+ battle_anim MIMIC, SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY, 1, 6
+ battle_anim MIMIC, SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK, 1, 6
db -1 ; end
ScreechAnim:
- battle_anim SCREECH, SUBANIM_12, 1, 6
+ battle_anim SCREECH, SUBANIM_0_HEART_1_MUSIC, 1, 6
db -1 ; end
DoubleTeamAnim:
@@ -784,7 +787,7 @@ DoubleTeamAnim:
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
battle_anim DOUBLE_TEAM, SE_SHAKE_BACK_AND_FORTH
battle_anim NO_MOVE, SE_SHOW_MON_PIC
- battle_anim BARRIER, SUBANIM_33, 1, 6
+ battle_anim BARRIER, SUBANIM_1_BARRIER, 1, 6
db -1 ; end
RecoverAnim:
@@ -796,7 +799,7 @@ RecoverAnim:
HardenAnim:
battle_anim HARDEN, SE_LIGHT_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_43, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_CLOSING, 1, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
@@ -809,8 +812,8 @@ MinimizeAnim:
db -1 ; end
SmokeScreenAnim:
- battle_anim SMOKESCREEN, SUBANIM_28, 1, 6
- battle_anim NO_MOVE, SUBANIM_0A, 0, 4
+ battle_anim SMOKESCREEN, SUBANIM_1_SAND, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_BALL_POOF_ENEMY, 0, 4
battle_anim NO_MOVE, SE_DARKEN_MON_PALETTE
battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
@@ -828,34 +831,34 @@ SmokeScreenAnim:
ConfuseRayAnim:
battle_anim CONFUSE_RAY, SE_DARK_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_3E, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_STAR_BIG_TOSS, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
WithdrawAnim:
battle_anim DEFENSE_CURL, SE_LIGHT_SCREEN_PALETTE
battle_anim NO_MOVE, SE_SLIDE_MON_DOWN
- battle_anim NO_MOVE, SUBANIM_51, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_SHELL, 0, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
battle_anim NO_MOVE, SE_SHOW_MON_PIC
db -1 ; end
DefenseCurlAnim:
battle_anim DEFENSE_CURL, SE_LIGHT_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_43, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_CLOSING, 0, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
BarrierAnim:
- battle_anim BARRIER, SUBANIM_33, 1, 6
- battle_anim BARRIER, SUBANIM_33, 1, 6
+ battle_anim BARRIER, SUBANIM_1_BARRIER, 1, 6
+ battle_anim BARRIER, SUBANIM_1_BARRIER, 1, 6
db -1 ; end
LightScreenAnim:
battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
- battle_anim LIGHT_SCREEN, SUBANIM_33, 1, 6
- battle_anim LIGHT_SCREEN, SUBANIM_33, 1, 6
+ battle_anim LIGHT_SCREEN, SUBANIM_1_BARRIER, 1, 6
+ battle_anim LIGHT_SCREEN, SUBANIM_1_BARRIER, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
@@ -867,8 +870,8 @@ HazeAnim:
ReflectAnim:
battle_anim NO_MOVE, SE_DARK_SCREEN_PALETTE
- battle_anim REFLECT, SUBANIM_33, 1, 6
- battle_anim REFLECT, SUBANIM_33, 1, 6
+ battle_anim REFLECT, SUBANIM_1_BARRIER, 1, 6
+ battle_anim REFLECT, SUBANIM_1_BARRIER, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
@@ -877,7 +880,7 @@ FocusEnergyAnim:
db -1 ; end
BideAnim:
- battle_anim BIDE, SUBANIM_04, 1, 6
+ battle_anim BIDE, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
MetronomeAnim:
@@ -891,88 +894,88 @@ MetronomeAnim:
db -1 ; end
MirrorMoveAnim:
- battle_anim MIRROR_MOVE, SUBANIM_01, 0, 8
+ battle_anim MIRROR_MOVE, SUBANIM_0_STAR_TWICE, 0, 8
db -1 ; end
SelfdestructAnim:
- battle_anim SELFDESTRUCT, SUBANIM_34, 1, 3
+ battle_anim SELFDESTRUCT, SUBANIM_1_SELFDESTRUCT, 1, 3
db -1 ; end
EggBombAnim:
- battle_anim EGG_BOMB, SUBANIM_41, 1, 4
- battle_anim EGG_BOMB, SUBANIM_42, 1, 4
+ battle_anim EGG_BOMB, SUBANIM_1_CIRCLE_BLACK_TOSS, 1, 4
+ battle_anim EGG_BOMB, SUBANIM_1_EXPLOSION_SMALL_ENEMY, 1, 4
db -1 ; end
LickAnim:
- battle_anim SLUDGE, SUBANIM_14, 1, 6
+ battle_anim SLUDGE, SUBANIM_1_BLOB_DRIP_ENEMY, 1, 6
db -1 ; end
SmogAnim:
battle_anim LEECH_SEED, SE_DARKEN_MON_PALETTE
- battle_anim SMOG, SUBANIM_19, 1, 6
+ battle_anim SMOG, SUBANIM_1_CLOUD_TOSS, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
SludgeAnim:
- battle_anim SLUDGE, SUBANIM_13, 1, 6
- battle_anim SLUDGE, SUBANIM_14, 1, 6
+ battle_anim SLUDGE, SUBANIM_1_BLOB_TOSS, 1, 6
+ battle_anim SLUDGE, SUBANIM_1_BLOB_DRIP_ENEMY, 1, 6
db -1 ; end
BoneClubAnim:
- battle_anim BONE_CLUB, SUBANIM_02, 0, 8
+ battle_anim BONE_CLUB, SUBANIM_0_STAR_THRICE, 0, 8
db -1 ; end
FireBlastAnim:
- battle_anim FIRE_BLAST, SUBANIM_1F, 1, 6
- battle_anim NO_MOVE, SUBANIM_20, 1, 6
- battle_anim NO_MOVE, SUBANIM_20, 1, 6
- battle_anim NO_MOVE, SUBANIM_0C, 1, 6
- battle_anim NO_MOVE, SUBANIM_0D, 1, 6
+ battle_anim FIRE_BLAST, SUBANIM_1_FLAME_BEAM, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_STAR, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_STAR, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_COLUMN_1, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_FLAME_COLUMN_2, 1, 6
db -1 ; end
WaterfallAnim:
battle_anim LEECH_SEED, SE_SLIDE_MON_DOWN
- battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
- battle_anim NO_MOVE, SUBANIM_02, 0, 8
+ battle_anim HYDRO_PUMP, SUBANIM_0_WATER_COLUMNS, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_STAR_THRICE, 0, 8
battle_anim NO_MOVE, SE_SLIDE_MON_UP
db -1 ; end
ClampAnim:
- battle_anim CLAMP, SUBANIM_2A, 0, 8
- battle_anim CONSTRICT, SUBANIM_23, 0, 6
- battle_anim CONSTRICT, SUBANIM_23, 0, 6
+ battle_anim CLAMP, SUBANIM_0_SLICE_BOTH_SIDES, 0, 8
+ battle_anim CONSTRICT, SUBANIM_0_BIND, 0, 6
+ battle_anim CONSTRICT, SUBANIM_0_BIND, 0, 6
db -1 ; end
SwiftAnim:
- battle_anim SWIFT, SUBANIM_3F, 1, 3
+ battle_anim SWIFT, SUBANIM_1_STARS_SMALL_TOSS, 1, 3
db -1 ; end
SkullBashAnim:
- battle_anim SKULL_BASH, SUBANIM_05, 1, 6
+ battle_anim SKULL_BASH, SUBANIM_1_STAR_BIG, 1, 6
db -1 ; end
SpikeCannonAnim:
- battle_anim SPIKE_CANNON, SUBANIM_04, 1, 4
+ battle_anim SPIKE_CANNON, SUBANIM_1_STAR_BIG_MOVING, 1, 4
db -1 ; end
ConstrictAnim:
- battle_anim CONSTRICT, SUBANIM_23, 0, 6
- battle_anim CONSTRICT, SUBANIM_23, 0, 6
- battle_anim CONSTRICT, SUBANIM_23, 0, 6
+ battle_anim CONSTRICT, SUBANIM_0_BIND, 0, 6
+ battle_anim CONSTRICT, SUBANIM_0_BIND, 0, 6
+ battle_anim CONSTRICT, SUBANIM_0_BIND, 0, 6
db -1 ; end
AmnesiaAnim:
- battle_anim AMNESIA, SUBANIM_25, 0, 8
- battle_anim AMNESIA, SUBANIM_25, 0, 8
+ battle_anim AMNESIA, SUBANIM_0_STATUS_CONFUSED, 0, 8
+ battle_anim AMNESIA, SUBANIM_0_STATUS_CONFUSED, 0, 8
db -1 ; end
KinesisAnim:
- battle_anim KINESIS, SUBANIM_01, 0, 8
+ battle_anim KINESIS, SUBANIM_0_STAR_TWICE, 0, 8
db -1 ; end
SoftboiledAnim:
battle_anim LEECH_SEED, SE_SLIDE_MON_HALF_OFF
- battle_anim SOFTBOILED, SUBANIM_4C, 0, 8
+ battle_anim SOFTBOILED, SUBANIM_0_EGG_SHAKING, 0, 8
battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
@@ -980,7 +983,7 @@ SoftboiledAnim:
db -1 ; end
HiJumpKickAnim:
- battle_anim HI_JUMP_KICK, SUBANIM_04, 1, 6
+ battle_anim HI_JUMP_KICK, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
GlareAnim:
@@ -993,58 +996,58 @@ GlareAnim:
DreamEaterAnim:
battle_anim DREAM_EATER, SE_FLASH_SCREEN_LONG
battle_anim DREAM_EATER, SE_DARK_SCREEN_PALETTE
- battle_anim DREAM_EATER, SUBANIM_02, 0, 8
+ battle_anim DREAM_EATER, SUBANIM_0_STAR_THRICE, 0, 8
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
PoisonGasAnim:
- battle_anim POISON_GAS, SUBANIM_19, 1, 6
+ battle_anim POISON_GAS, SUBANIM_1_CLOUD_TOSS, 1, 6
db -1 ; end
BarrageAnim:
- battle_anim BARRAGE, SUBANIM_41, 1, 3
- battle_anim NO_MOVE, SUBANIM_55, 0, 5
+ battle_anim BARRAGE, SUBANIM_1_CIRCLE_BLACK_TOSS, 1, 3
+ battle_anim NO_MOVE, SUBANIM_0_STAR_HIGH, 0, 5
db -1 ; end
LeechLifeAnim:
- battle_anim LEECH_LIFE, SUBANIM_02, 0, 8
+ battle_anim LEECH_LIFE, SUBANIM_0_STAR_THRICE, 0, 8
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
- battle_anim NO_MOVE, SUBANIM_21, 0, 6
- battle_anim NO_MOVE, SUBANIM_22, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY, 0, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK, 0, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
db -1 ; end
LovelyKissAnim:
- battle_anim LOVELY_KISS, SUBANIM_12, 0, 6
+ battle_anim LOVELY_KISS, SUBANIM_0_HEART_1_MUSIC, 0, 6
db -1 ; end
SkyAttackAnim:
battle_anim SKY_ATTACK, SE_SQUISH_MON_PIC
battle_anim NO_MOVE, SE_SHOOT_BALLS_UPWARD
- battle_anim HI_JUMP_KICK, SUBANIM_04, 1, 6
+ battle_anim HI_JUMP_KICK, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_SHOW_MON_PIC
db -1 ; end
TransformAnim:
- battle_anim TRANSFORM, SUBANIM_21, 1, 6
- battle_anim TRANSFORM, SUBANIM_22, 1, 4
- battle_anim NO_MOVE, SUBANIM_47, 0, 8
+ battle_anim TRANSFORM, SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY, 1, 6
+ battle_anim TRANSFORM, SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK, 1, 4
+ battle_anim NO_MOVE, SUBANIM_0_BALL_POOF, 0, 8
battle_anim NO_MOVE, SE_TRANSFORM_MON
db -1 ; end
BubbleAnim:
- battle_anim BUBBLE, SUBANIM_35, 0, 22
+ battle_anim BUBBLE, SUBANIM_0_WATER_BUBBLES, 0, 22
db -1 ; end
DizzyPunchAnim:
- battle_anim DIZZY_PUNCH, SUBANIM_17, 0, 6
- battle_anim DIZZY_PUNCH, SUBANIM_17, 0, 6
- battle_anim DIZZY_PUNCH, SUBANIM_17, 0, 6
- battle_anim DOUBLESLAP, SUBANIM_02, 0, 6
+ battle_anim DIZZY_PUNCH, SUBANIM_0_BIRDIES_CIRCLING_ENEMY, 0, 6
+ battle_anim DIZZY_PUNCH, SUBANIM_0_BIRDIES_CIRCLING_ENEMY, 0, 6
+ battle_anim DIZZY_PUNCH, SUBANIM_0_BIRDIES_CIRCLING_ENEMY, 0, 6
+ battle_anim DOUBLESLAP, SUBANIM_0_STAR_THRICE, 0, 6
db -1 ; end
SporeAnim:
- battle_anim SPORE, SUBANIM_36, 0, 6
+ battle_anim SPORE, SUBANIM_0_CIRCLES_FALLING, 0, 6
db -1 ; end
FlashAnim:
@@ -1055,7 +1058,7 @@ FlashAnim:
db -1 ; end
PsywaveAnim:
- battle_anim SUPERSONIC, SUBANIM_31, 0, 6
+ battle_anim SUPERSONIC, SUBANIM_0_SOUND_WAVE, 0, 6
battle_anim CONFUSION, SE_WAVY_SCREEN
db -1 ; end
@@ -1068,91 +1071,91 @@ AcidArmorAnim:
db -1 ; end
CrabHammerAnim:
- battle_anim CRABHAMMER, SUBANIM_05, 1, 6
- battle_anim NO_MOVE, SUBANIM_2A, 0, 6
+ battle_anim CRABHAMMER, SUBANIM_1_STAR_BIG, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_SLICE_BOTH_SIDES, 0, 6
db -1 ; end
ExplosionAnim:
- battle_anim EXPLOSION, SUBANIM_34, 1, 3
+ battle_anim EXPLOSION, SUBANIM_1_SELFDESTRUCT, 1, 3
db -1 ; end
FurySwipesAnim:
- battle_anim FURY_SWIPES, SUBANIM_0F, 0, 4
+ battle_anim FURY_SWIPES, SUBANIM_0_SCRATCHES, 0, 4
db -1 ; end
BonemerangAnim:
- battle_anim BONEMERANG, SUBANIM_02, 0, 6
+ battle_anim BONEMERANG, SUBANIM_0_STAR_THRICE, 0, 6
db -1 ; end
RestAnim:
- battle_anim REST, SUBANIM_3A, 0, 16
- battle_anim REST, SUBANIM_3A, 0, 16
+ battle_anim REST, SUBANIM_0_STATUS_SLEEP, 0, 16
+ battle_anim REST, SUBANIM_0_STATUS_SLEEP, 0, 16
db -1 ; end
RockSlideAnim:
- battle_anim ROCK_SLIDE, SUBANIM_1D, 0, 4
- battle_anim ROCK_SLIDE, SUBANIM_1E, 0, 3
- battle_anim HYPER_FANG, SUBANIM_04, 1, 6
+ battle_anim ROCK_SLIDE, SUBANIM_0_ROCKS_LIFT, 0, 4
+ battle_anim ROCK_SLIDE, SUBANIM_0_ROCKS_TOSS, 0, 3
+ battle_anim HYPER_FANG, SUBANIM_1_STAR_BIG_MOVING, 1, 6
db -1 ; end
HyperFangAnim:
- battle_anim HYPER_FANG, SUBANIM_02, 0, 6
+ battle_anim HYPER_FANG, SUBANIM_0_STAR_THRICE, 0, 6
db -1 ; end
SharpenAnim:
battle_anim SHARPEN, SE_LIGHT_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_43, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_CLOSING, 1, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
ConversionAnim:
battle_anim CONVERSION, SE_DARK_SCREEN_FLASH
- battle_anim NO_MOVE, SUBANIM_21, 1, 6
- battle_anim NO_MOVE, SUBANIM_22, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK, 1, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
db -1 ; end
TriAttackAnim:
battle_anim TRI_ATTACK, SE_DARK_SCREEN_FLASH
- battle_anim NO_MOVE, SUBANIM_4D, 1, 6
+ battle_anim NO_MOVE, SUBANIM_1_TRIANGLE_TOSS, 1, 6
battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
db -1 ; end
SuperFangAnim:
battle_anim LEECH_SEED, SE_DARK_SCREEN_PALETTE
- battle_anim SUPER_FANG, SUBANIM_04, 1, 6
+ battle_anim SUPER_FANG, SUBANIM_1_STAR_BIG_MOVING, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
SlashAnim:
- battle_anim SLASH, SUBANIM_0F, 0, 6
+ battle_anim SLASH, SUBANIM_0_SCRATCHES, 0, 6
db -1 ; end
SubstituteAnim:
battle_anim SUBSTITUTE, SE_SLIDE_MON_OFF
- battle_anim NO_MOVE, SUBANIM_47, 0, 8
+ battle_anim NO_MOVE, SUBANIM_0_BALL_POOF, 0, 8
battle_anim NO_MOVE, SE_SUBSTITUTE_MON
db -1 ; end
BallTossAnim:
- battle_anim NO_MOVE, SUBANIM_06, 0, 3
+ battle_anim NO_MOVE, SUBANIM_0_BALL_TOSS_HIGH, 0, 3
db -1 ; end
GreatTossAnim:
- battle_anim NO_MOVE, SUBANIM_07, 0, 3
+ battle_anim NO_MOVE, SUBANIM_0_BALL_TOSS_MIDDLE, 0, 3
db -1 ; end
UltraTossAnim:
- battle_anim NO_MOVE, SUBANIM_08, 0, 2
+ battle_anim NO_MOVE, SUBANIM_0_BALL_TOSS_LOW, 0, 2
db -1 ; end
BallShakeAnim:
- battle_anim NO_MOVE, SUBANIM_09, 0, 4
+ battle_anim NO_MOVE, SUBANIM_0_BALL_SHAKE_ENEMY, 0, 4
db -1 ; end
BallPoofAnim:
- battle_anim NO_MOVE, SUBANIM_0A, 0, 4
+ battle_anim NO_MOVE, SUBANIM_0_BALL_POOF_ENEMY, 0, 4
db -1 ; end
ShowPicAnim:
@@ -1176,19 +1179,19 @@ EnemyHUDShakeAnim:
db -1 ; end
TradeBallDropAnim:
- battle_anim NO_MOVE, SUBANIM_48, 2, 6
+ battle_anim NO_MOVE, SUBANIM_2_TRADE_BALL_DROP, 2, 6
db -1 ; end
TradeBallAppear1Anim:
- battle_anim NO_MOVE, SUBANIM_49, 2, 4
+ battle_anim NO_MOVE, SUBANIM_2_TRADE_BALL_SHAKE, 2, 4
db -1 ; end
TradeBallAppear2Anim:
- battle_anim NO_MOVE, SUBANIM_4A, 2, 6
+ battle_anim NO_MOVE, SUBANIM_2_TRADE_BALL_APPEAR, 2, 6
db -1 ; end
TradeBallPoofAnim:
- battle_anim NO_MOVE, SUBANIM_4B, 2, 6
+ battle_anim NO_MOVE, SUBANIM_2_TRADE_BALL_POOF, 2, 6
db -1 ; end
XStatItemAnim:
@@ -1199,7 +1202,7 @@ XStatItemAnim:
ShrinkingSquareAnim:
battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
- battle_anim NO_MOVE, SUBANIM_43, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_CLOSING, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
@@ -1211,7 +1214,7 @@ XStatItemBlackAnim:
ShrinkingSquareBlackAnim:
battle_anim NO_MOVE, SE_DARKEN_MON_PALETTE
- battle_anim NO_MOVE, SUBANIM_43, 1, 6
+ battle_anim NO_MOVE, SUBANIM_0_CIRCLE_1_SQUARE_CLOSING, 1, 6
battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
db -1 ; end
@@ -1222,37 +1225,37 @@ UnusedAnim:
db -1 ; end
ParalyzeAnim:
- battle_anim BIND, SUBANIM_24, 0, 4
- battle_anim BIND, SUBANIM_24, 0, 4
+ battle_anim BIND, SUBANIM_0_STATUS_PARALYZED, 0, 4
+ battle_anim BIND, SUBANIM_0_STATUS_PARALYZED, 0, 4
db -1 ; end
PoisonAnim:
- battle_anim BIND, SUBANIM_27, 0, 8
- battle_anim BIND, SUBANIM_27, 0, 8
+ battle_anim BIND, SUBANIM_0_STATUS_POISONED, 0, 8
+ battle_anim BIND, SUBANIM_0_STATUS_POISONED, 0, 8
db -1 ; end
SleepPlayerAnim:
- battle_anim REST, SUBANIM_3A, 0, 16
- battle_anim REST, SUBANIM_3A, 0, 16
+ battle_anim REST, SUBANIM_0_STATUS_SLEEP, 0, 16
+ battle_anim REST, SUBANIM_0_STATUS_SLEEP, 0, 16
db -1 ; end
SleepEnemyAnim:
- battle_anim REST, SUBANIM_3B, 0, 16
- battle_anim REST, SUBANIM_3B, 0, 16
+ battle_anim REST, SUBANIM_0_STATUS_SLEEP_ENEMY, 0, 16
+ battle_anim REST, SUBANIM_0_STATUS_SLEEP_ENEMY, 0, 16
db -1 ; end
ConfusedPlayerAnim:
- battle_anim AMNESIA, SUBANIM_25, 0, 8
- battle_anim AMNESIA, SUBANIM_25, 0, 8
+ battle_anim AMNESIA, SUBANIM_0_STATUS_CONFUSED, 0, 8
+ battle_anim AMNESIA, SUBANIM_0_STATUS_CONFUSED, 0, 8
db -1 ; end
ConfusedEnemyAnim:
- battle_anim AMNESIA, SUBANIM_26, 0, 8
- battle_anim AMNESIA, SUBANIM_26, 0, 8
+ battle_anim AMNESIA, SUBANIM_0_STATUS_CONFUSED_ENEMY, 0, 8
+ battle_anim AMNESIA, SUBANIM_0_STATUS_CONFUSED_ENEMY, 0, 8
db -1 ; end
BallBlockAnim:
- battle_anim NO_MOVE, SUBANIM_0B, 0, 3
+ battle_anim NO_MOVE, SUBANIM_0_BALL_BLOCK, 0, 3
db -1 ; end
FaintAnim:
@@ -1264,9 +1267,9 @@ ShakeScreenAnim:
db -1 ; end
ThrowRockAnim:
- battle_anim BARRAGE, SUBANIM_53, 0, 3
+ battle_anim BARRAGE, SUBANIM_0_SAFARI_ROCK, 0, 3
db -1 ; end
ThrowBaitAnim:
- battle_anim BARRAGE, SUBANIM_54, 0, 3
+ battle_anim BARRAGE, SUBANIM_0_SAFARI_BAIT, 0, 3
db -1 ; end
diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm
index 9a58c221..ffa7e5a8 100644
--- a/engine/battle/animations.asm
+++ b/engine/battle/animations.asm
@@ -275,7 +275,7 @@ PlayAnimation:
ld a, [wAnimPalette]
ldh [rOBP0], a
call UpdateGBCPal_OBP0
- call LoadAnimationTileset
+ call LoadMoveAnimationTiles
call LoadSubanimation
call PlaySubanimation
pop af
@@ -372,11 +372,11 @@ GetSubanimationTransform2:
ret
; loads tile patterns for battle animations
-LoadAnimationTileset:
+LoadMoveAnimationTiles:
ld a, [wWhichBattleAnimTileset]
add a
add a
- ld hl, AnimationTilesetPointers
+ ld hl, MoveAnimationTilesPointers
ld e, a
ld d, 0
add hl, de
@@ -387,7 +387,7 @@ LoadAnimationTileset:
ld a, [hl]
ld d, a ; de = address of tileset
ld hl, vSprites tile $31
- ld b, BANK(AnimationTileset1) ; ROM bank
+ ld b, BANK(MoveAnimationTiles0) ; ROM bank
ld a, [wTempTilesetNumTiles]
ld c, a ; number of tiles
jp CopyVideoData ; load tileset
@@ -398,17 +398,18 @@ MACRO anim_tileset
db -1 ; padding
ENDM
-AnimationTilesetPointers:
+MoveAnimationTilesPointers:
; number of tiles, gfx pointer
- anim_tileset 79, AnimationTileset1
- anim_tileset 79, AnimationTileset2
- anim_tileset 64, AnimationTileset1
+ anim_tileset 79, MoveAnimationTiles0
+ anim_tileset 79, MoveAnimationTiles1
+ anim_tileset 64, MoveAnimationTiles2
-AnimationTileset1:
- INCBIN "gfx/battle/attack_anim_1.2bpp"
+MoveAnimationTiles0:
+MoveAnimationTiles2:
+ INCBIN "gfx/battle/move_anim_0.2bpp"
-AnimationTileset2:
- INCBIN "gfx/battle/attack_anim_2.2bpp"
+MoveAnimationTiles1:
+ INCBIN "gfx/battle/move_anim_1.2bpp"
SlotMachineTiles2:
INCBIN "gfx/slots/slots_2.2bpp"
@@ -1158,7 +1159,7 @@ AnimationWaterDropletsEverywhere:
; in Surf/Mist/Toxic.
xor a
ld [wWhichBattleAnimTileset], a
- call LoadAnimationTileset
+ call LoadMoveAnimationTiles
ld d, 32
ld a, -16
ld [wBaseCoordX], a
@@ -1720,7 +1721,7 @@ _AnimationShootBallsUpward:
push bc
xor a
ld [wWhichBattleAnimTileset], a
- call LoadAnimationTileset
+ call LoadMoveAnimationTiles
pop bc
ld d, $7a ; ball tile
ld hl, wShadowOAM
@@ -2234,7 +2235,7 @@ InitMultipleObjectsOAM:
push bc
push de
ld [wWhichBattleAnimTileset], a
- call LoadAnimationTileset
+ call LoadMoveAnimationTiles
pop de
pop bc
xor a
diff --git a/engine/movie/splash.asm b/engine/movie/splash.asm
index 03337525..b393d319 100644
--- a/engine/movie/splash.asm
+++ b/engine/movie/splash.asm
@@ -5,13 +5,13 @@ LoadShootingStarGraphics:
ldh [rOBP1], a
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
- ld de, AnimationTileset2 tile 3 ; star tile (top left quadrant)
+ ld de, MoveAnimationTiles1 tile 3 ; star tile (top left quadrant)
ld hl, vChars1 tile $20
- lb bc, BANK(AnimationTileset2), 1
+ lb bc, BANK(MoveAnimationTiles1), 1
call CopyVideoData
- ld de, AnimationTileset2 tile 19 ; star tile (bottom left quadrant)
+ ld de, MoveAnimationTiles1 tile 19 ; star tile (bottom left quadrant)
ld hl, vChars1 tile $21
- lb bc, BANK(AnimationTileset2), 1
+ lb bc, BANK(MoveAnimationTiles1), 1
call CopyVideoData
ld de, FallingStar
ld hl, vChars1 tile $22
diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm
index ccc59846..1373f5dd 100644
--- a/engine/overworld/cut.asm
+++ b/engine/overworld/cut.asm
@@ -113,8 +113,8 @@ InitCutAnimOAM:
ret
LoadCutGrassAnimationTilePattern:
- ld de, AnimationTileset2 tile 6 ; tile depicting a leaf
- lb bc, BANK(AnimationTileset2), 1
+ ld de, MoveAnimationTiles1 tile 6 ; tile depicting a leaf
+ lb bc, BANK(MoveAnimationTiles1), 1
jp CopyVideoData
WriteCutOrBoulderDustAnimationOAMBlock:
diff --git a/engine/overworld/map_sprites.asm b/engine/overworld/map_sprites.asm
index c0fb4863..d1bc7832 100644
--- a/engine/overworld/map_sprites.asm
+++ b/engine/overworld/map_sprites.asm
@@ -11,7 +11,7 @@
_InitMapSprites::
call InitOutsideMapSprites
ret c ; return if the map is an outside map (already handled by above call)
-; if the map is an inside map (i.e. mapID >= $25)
+; if the map is an inside map (i.e. mapID >= FIRST_INDOOR_MAP)
call LoadSpriteSetFromMapHeader
call LoadMapSpriteTilePatterns
call Func_14150
@@ -38,11 +38,11 @@ InitOutsideMapSprites:
dec a
ld c, a
ld b, 0
- ld a, (wSpriteSetID - wSpriteSet)
+ ld a, wSpriteSetID - wSpriteSet
ld hl, SpriteSets
call AddNTimes ; get sprite set offset
ld de, wSpriteSet
- ld bc, (wSpriteSetID - wSpriteSet)
+ ld bc, wSpriteSetID - wSpriteSet
call CopyData ; copy it to wSpriteSet
call LoadMapSpriteTilePatterns
.skipLoadingSpriteSet
@@ -186,7 +186,7 @@ LoadWalkingTilePattern:
ld d, h
ld e, l
call GetSpriteVRAMAddress
- set 3, h ; add $800 to hl
+ set 3, h ; add $80 tiles to hl
call CopyVideoDataAlternate
ret
@@ -205,19 +205,17 @@ GetSpriteVRAMAddress:
ret
SpriteVRAMAddresses:
-; Equivalent to multiplying $C0 (number of bytes in 12 tiles) times the VRAM
-; slot and adding the result to $8000 (the VRAM base address).
- dw vChars0 + $0c0
- dw vChars0 + $180
- dw vChars0 + $240
- dw vChars0 + $300
- dw vChars0 + $3c0
- dw vChars0 + $480
- dw vChars0 + $540
- dw vChars0 + $600
- dw vChars0 + $6c0
- dw vChars0 + $780 ; 4-tile sprites
- dw vChars0 + $7c0 ; 4-tile sprites
+ dw vChars0 + (1 * 12) tiles
+ dw vChars0 + (2 * 12) tiles
+ dw vChars0 + (3 * 12) tiles
+ dw vChars0 + (4 * 12) tiles
+ dw vChars0 + (5 * 12) tiles
+ dw vChars0 + (6 * 12) tiles
+ dw vChars0 + (7 * 12) tiles
+ dw vChars0 + (8 * 12) tiles
+ dw vChars0 + (9 * 12) tiles
+ dw vChars0 + (10 * 12) tiles ; 4-tile sprites
+ dw vChars0 + (10 * 12 + 4) tiles ; 4-tile sprites
ReadSpriteSheetData:
ldh a, [hVRAMSlot]
@@ -263,7 +261,7 @@ Func_14150:
jr z, .spriteUnused
call Func_14179
push hl
- ld de, (wSpritePlayerStateData2ImageBaseOffset) - (wSpriteStateData1) ; $10e
+ ld de, wSpritePlayerStateData2ImageBaseOffset - wSpriteStateData1
add hl, de ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET]
ld [hl], a ; write offset
pop hl
@@ -304,11 +302,11 @@ GetSplitMapSpriteSetID:
ld hl, MapSpriteSets
add hl, de
ld a, [hl] ; a = spriteSetID
- cp $f0 ; does the map have 2 sprite sets?
+ cp FIRST_SPLIT_SET - 1 ; does the map have 2 sprite sets?
ret c
; Chooses the correct sprite set ID depending on the player's position within
; the map for maps with two sprite sets.
- cp $f8
+ cp SPLITSET_ROUTE_20
jr z, .route20
ld hl, SplitMapSpriteSets
and $0f
@@ -320,8 +318,8 @@ GetSplitMapSpriteSetID:
jr nc, .noCarry
inc h
.noCarry
- ld a, [hli] ; determines whether the map is split East/West or North/South
- cp $01
+ ld a, [hli] ; whether the map is split EAST_WEST or NORTH_SOUTH
+ cp EAST_WEST
ld a, [hli] ; position of dividing line
ld b, a
jr z, .eastWestDivide
@@ -333,35 +331,39 @@ GetSplitMapSpriteSetID:
.compareCoord
cp b
jr c, .loadSpriteSetID
-; if in the East side or South side
+; if in the east side or south side
inc hl
.loadSpriteSetID
ld a, [hl]
ret
-; Uses sprite set $01 for West side and $0A for East side.
+; Uses sprite set SPRITESET_PALLET_VIRIDIAN for west side and SPRITESET_FUCHSIA for east side.
; Route 20 is a special case because the two map sections have a more complex
; shape instead of the map simply being split horizontally or vertically.
.route20
ld hl, wXCoord
+ ; Use SPRITESET_PALLET_VIRIDIAN if X < 43
ld a, [hl]
- cp $2b
- ld a, $01
+ cp 43
+ ld a, SPRITESET_PALLET_VIRIDIAN
ret c
+ ; Use SPRITESET_FUCHSIA if X >= 62.
ld a, [hl]
- cp $3e
- ld a, $0a
+ cp 62
+ ld a, SPRITESET_FUCHSIA
ret nc
+ ; If 55 <= X < 62, split Y at 8; else 43 <= X < 55, so split Y at 13
ld a, [hl]
- cp $37
- ld b, $08
+ cp 55
+ ld b, 8
jr nc, .next
- ld b, $0d
+ ld b, 13
.next
+ ; Use SPRITESET_FUCHSIA if Y < split; else use SPRITESET_PALLET_VIRIDIAN
ld a, [wYCoord]
cp b
- ld a, $0a
+ ld a, SPRITESET_FUCHSIA
ret c
- ld a, $01
+ ld a, SPRITESET_PALLET_VIRIDIAN
ret
INCLUDE "data/maps/sprite_sets.asm"
diff --git a/gfx/battle/attack_anim_1.png b/gfx/battle/move_anim_0.png
index f3728737..f3728737 100644
--- a/gfx/battle/attack_anim_1.png
+++ b/gfx/battle/move_anim_0.png
Binary files differ
diff --git a/gfx/battle/attack_anim_2.png b/gfx/battle/move_anim_1.png
index 6867d650..6867d650 100644
--- a/gfx/battle/attack_anim_2.png
+++ b/gfx/battle/move_anim_1.png
Binary files differ
diff --git a/home.asm b/home.asm
index 4ae08bc1..2d144e7a 100644
--- a/home.asm
+++ b/home.asm
@@ -1,6 +1,3 @@
-INCLUDE "constants.asm"
-
-
SECTION "NULL", ROM0
NULL::
diff --git a/constants.asm b/includes.asm
index 99714a84..130b3cad 100644
--- a/constants.asm
+++ b/includes.asm
@@ -1,6 +1,20 @@
INCLUDE "charmap.asm"
-INCLUDE "macros.asm"
+INCLUDE "macros/asserts.asm"
+INCLUDE "macros/const.asm"
+INCLUDE "macros/predef.asm"
+INCLUDE "macros/farcall.asm"
+INCLUDE "macros/data.asm"
+INCLUDE "macros/code.asm"
+INCLUDE "macros/gfx.asm"
+INCLUDE "macros/coords.asm"
+INCLUDE "macros/vc.asm"
+
+INCLUDE "macros/scripts/audio.asm"
+INCLUDE "macros/scripts/maps.asm"
+INCLUDE "macros/scripts/events.asm"
+INCLUDE "macros/scripts/text.asm"
+INCLUDE "macros/scripts/gfx_anims.asm"
INCLUDE "constants/hardware_constants.asm"
INCLUDE "constants/oam_constants.asm"
@@ -28,6 +42,7 @@ INCLUDE "constants/map_constants.asm"
INCLUDE "constants/map_data_constants.asm"
INCLUDE "constants/map_object_constants.asm"
INCLUDE "constants/hide_show_constants.asm"
+INCLUDE "constants/sprite_set_constants.asm"
INCLUDE "constants/credits_constants.asm"
INCLUDE "constants/audio_constants.asm"
INCLUDE "constants/music_constants.asm"
diff --git a/macros.asm b/macros.asm
deleted file mode 100644
index 5dd71f71..00000000
--- a/macros.asm
+++ /dev/null
@@ -1,15 +0,0 @@
-INCLUDE "macros/asserts.asm"
-INCLUDE "macros/const.asm"
-INCLUDE "macros/predef.asm"
-INCLUDE "macros/farcall.asm"
-INCLUDE "macros/data.asm"
-INCLUDE "macros/code.asm"
-INCLUDE "macros/gfx.asm"
-INCLUDE "macros/coords.asm"
-INCLUDE "macros/vc.asm"
-
-INCLUDE "macros/scripts/audio.asm"
-INCLUDE "macros/scripts/maps.asm"
-INCLUDE "macros/scripts/events.asm"
-INCLUDE "macros/scripts/text.asm"
-INCLUDE "macros/scripts/gfx_anims.asm"
diff --git a/macros/data.asm b/macros/data.asm
index b7a16190..775b6adc 100644
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -71,10 +71,8 @@ MACRO dab ; dwb address, bank
ENDM
MACRO sine_table
-; \1 samples of sin(x) from x=0 to x<32768 (pi radians)
- DEF x = 0
- REPT \1
- dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up
- DEF x += DIV(32768, \1) ; a circle has 65536 "degrees"
- ENDR
+; \1 samples of sin(x) from x=0 to x<0.5 turns (pi radians)
+ for x, \1
+ dw sin(x * 0.5 / (\1))
+ endr
ENDM
diff --git a/main.asm b/main.asm
index 3f79c571..a242fcbd 100644
--- a/main.asm
+++ b/main.asm
@@ -1,6 +1,3 @@
-INCLUDE "constants.asm"
-
-
SECTION "bank1", ROMX
INCLUDE "data/sprites/facings.asm"
diff --git a/maps.asm b/maps.asm
index 4efa99d7..c7ae6f31 100644
--- a/maps.asm
+++ b/maps.asm
@@ -1,6 +1,3 @@
-INCLUDE "constants.asm"
-
-
SECTION "Maps 1", ROMX
INCLUDE "data/maps/headers/CeladonCity.asm"
diff --git a/ram.asm b/ram.asm
index 077ae799..cfeb5997 100644
--- a/ram.asm
+++ b/ram.asm
@@ -1,5 +1,3 @@
-INCLUDE "constants.asm"
-
INCLUDE "macros/ram.asm"
diff --git a/ram/wram.asm b/ram/wram.asm
index f6d1c76d..4159c7d4 100644
--- a/ram/wram.asm
+++ b/ram/wram.asm
@@ -103,7 +103,7 @@ wSpriteStateData1::
; - E
; - F
wSpritePlayerStateData1:: spritestatedata1 wSpritePlayerStateData1 ; player is struct 0
-; wSprite02StateData1 - wSprite15StateData1
+; wSprite01StateData1 - wSprite14StateData1
FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS - 1
wSprite{02d:n}StateData1:: spritestatedata1 wSprite{02d:n}StateData1
ENDR
@@ -130,7 +130,7 @@ wSpriteStateData2::
; - E: sprite image base offset (in video ram, player always has value 1, used to compute sprite image index)
; - F
wSpritePlayerStateData2:: spritestatedata2 wSpritePlayerStateData2 ; player is struct 0
-; wSprite02StateData2 - wSprite15StateData2
+; wSprite01StateData2 - wSprite14StateData2
FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS - 1
wSprite{02d:n}StateData2:: spritestatedata2 wSprite{02d:n}StateData2
ENDR
diff --git a/rgbdscheck.asm b/rgbdscheck.asm
index 39a8a22b..fceee2e6 100644
--- a/rgbdscheck.asm
+++ b/rgbdscheck.asm
@@ -1,18 +1,16 @@
MAJOR EQU 0
-MINOR EQU 5
-PATCH EQU 2
+MINOR EQU 6
+PATCH EQU 0
-MACRO wrong_rgbds
- fail "pokeyellow requires rgbds v0.5.2 or newer."
-ENDM
+WRONG_RGBDS EQUS "fail \"pokeyellow requires rgbds v0.6.0 or newer.\""
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
- wrong_rgbds
+ WRONG_RGBDS
ELSE
IF (__RGBDS_MAJOR__ < MAJOR) || \
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ < MINOR) || \
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH) || \
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ == PATCH && DEF(__RGBDS_RC__))
- wrong_rgbds
+ WRONG_RGBDS
ENDC
ENDC
diff --git a/text.asm b/text.asm
index 618685fa..d99307ff 100644
--- a/text.asm
+++ b/text.asm
@@ -1,6 +1,3 @@
-INCLUDE "constants.asm"
-
-
SECTION "Text 1", ROMX
INCLUDE "data/text/text_1.asm"
diff --git a/tools/free_space.awk b/tools/free_space.awk
index 587ac123..e47f35c1 100755
--- a/tools/free_space.awk
+++ b/tools/free_space.awk
@@ -39,7 +39,7 @@ function register_bank(amount) {
}
}
-rom_bank && toupper($0) ~ /^[ \t]*EMPTY/ {
+rom_bank && toupper($0) ~ /^[ \t]*EMPTY$/ {
# Empty bank
register_bank(16384)
}
diff --git a/tools/free_space.py b/tools/free_space.py
deleted file mode 100755
index 4194f826..00000000
--- a/tools/free_space.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-"""
-Usage: python3 free_space.py [BANK=none] [pokeyellow.map]
-
-Calculate the free space in the ROM or its individual banks.
-
-The BANK argument allows printing free space in one, all, or none of the ROM's banks.
-Valid arguments are numbers (in decimal "42" or hexadecimal "0x2A"), "all" or "none".
-If not specified, defaults to "none".
-"""
-
-import sys
-
-from mapreader import MapReader
-
-def main():
- print_bank = 'none'
- filename = 'pokeyellow.map'
-
- for arg in sys.argv[1:]:
- if arg.startswith('BANK='):
- print_bank = arg.split('=', 1)[-1]
- else:
- filename = arg
-
- if print_bank not in {'all', 'none'}:
- try:
- print_bank = (int(print_bank[2:], 16)
- if print_bank.startswith('0x') or print_bank.startswith('0X')
- else int(print_bank))
- except ValueError:
- error = f'Error: invalid BANK: {print_bank}'
- if print_bank.isalnum():
- error += f' (did you mean: 0x{print_bank}?)'
- print(error, file=sys.stderr)
- sys.exit(1)
-
- num_banks = 0x80
- bank_size = 0x4000 # bytes
- total_size = num_banks * bank_size
-
- reader = MapReader()
- with open(filename, 'r', encoding='utf-8') as file:
- reader.read_map_data(file.readlines())
-
- free_space = 0
- per_bank = []
- default_bank_data = {'sections': [], 'used': 0, 'slack': bank_size}
- for bank in range(num_banks):
- bank_data = reader.bank_data['ROM0 bank' if bank == 0 else 'ROMX bank']
- data = bank_data.get(bank, default_bank_data)
- used, slack = data['used'], data['slack']
- per_bank.append((used, slack))
- free_space += slack
-
- free_percent = 100 * free_space / total_size
- print(f'Free space: {free_space}/{total_size} ({free_percent:.2f}%)')
- if print_bank != 'none':
- print()
- print('bank, used, free')
- for bank in range(num_banks):
- used, slack = per_bank[bank]
- if print_bank in {'all', bank}:
- print(f'${bank:02X}, {used}, {slack}')
-
-if __name__ == '__main__':
- main()
diff --git a/tools/mapreader.py b/tools/mapreader.py
deleted file mode 100644
index 6d3528c9..00000000
--- a/tools/mapreader.py
+++ /dev/null
@@ -1,173 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# A library for parsing the pokeyellow.map file output by rgbds.
-
-import re
-
-class MapReader:
-
- # {'ROM Bank': { 0: { 'sections': [ { 'beg': 1234,
- # 'end': 5678,
- # 'name': 'Section001',
- # 'symbols': [ { 'symbol': 'Function1234',
- # 'address: 1234,
- # },
- # ]
- # },
- # ],
- # 'used': 1234,
- # 'slack': 4567,
- # },
- # },
- # 'OAM': { 'sections': [ { 'beg': 1234,
- # 'end': 5678,
- # 'name': 'Section002',
- # 'symbols': [ { 'symbol': 'Data1234',
- # 'address: 1234,
- # },
- # ]
- # },
- # ],
- # 'used': 1234,
- # 'slack': 4567,
- # },
- # }
- #
- bank_data = {}
-
- bank_types = {
- 'HRAM' : { 'size': 0x80, 'banked': False, },
- 'OAM' : { 'size': 0xA0, 'banked': False, },
- 'ROM0 bank': { 'size': 0x4000, 'banked': True, },
- 'ROMX bank': { 'size': 0x4000, 'banked': True, },
- 'SRAM bank': { 'size': 0x2000, 'banked': True, },
- 'VRAM bank': { 'size': 0x1000, 'banked': True, },
- 'WRAM bank': { 'size': 0x2000, 'banked': True, },
- }
-
- # FSM states
- INIT, BANK, SECTION = range(3)
-
- # $506D-$519A ($012E bytes) ["Type Matchups"]
- section_header_regex = re.compile('\$([0-9A-Fa-f]{4})-\$([0-9A-Fa-f]{4}) \(.*\) \["(.*)"\]')
- # $506D = TypeMatchups
- section_data_regex = re.compile('\$([0-9A-Fa-f]{4}) = (.*)')
- # $3ED2 bytes
- slack_regex = re.compile('\$([0-9A-Fa-f]{4}) bytes?')
-
- def __init__(self, *args, **kwargs):
- self.__dict__.update(kwargs)
-
- def _parse_init(self, line):
-
- line = line.split(':', 1)[0]
- parts = line.split(' #', 1)
-
- if (parts[0] in self.bank_types):
- self._cur_bank_name = parts[0]
- self._cur_bank_type = self.bank_types[self._cur_bank_name]
- if (self._cur_bank_type['banked'] and len(parts) > 1):
- parts[1] = parts[1].split(':', 1)[0]
- parts[1] = parts[1].split(' ', 1)[0]
- self._cur_bank = int(parts[1], 10)
- if self._cur_bank_name not in self.bank_data:
- self.bank_data[self._cur_bank_name] = {}
- if self._cur_bank_type['banked']:
- if self._cur_bank not in self.bank_data[self._cur_bank_name]:
- self.bank_data[self._cur_bank_name][self._cur_bank] = {}
- self._cur_data = self.bank_data[self._cur_bank_name][self._cur_bank]
- else:
- self._cur_data = self.bank_data[self._cur_bank_name]
-
- if ({} == self._cur_data):
- self._cur_data['sections'] = []
- self._cur_data['used'] = 0
- self._cur_data['slack'] = self._cur_bank_type['size']
- return True
-
- return False
-
- def _parse_section_header(self, header):
-
- section_data = self.section_header_regex.match(header)
- if section_data is not None:
- beg = int(section_data.group(1), 16)
- end = int(section_data.group(2), 16)
- name = section_data.group(3)
- self._cur_section = {'beg': beg, 'end': end, 'name': name, 'symbols': []}
- self._cur_data['sections'].append(self._cur_section)
- return True
- return False
-
- def _parse_slack(self, data):
-
- slack_data = self.slack_regex.match(data)
- slack_bytes = int(slack_data.group(1), 16)
- self._cur_data['slack'] = slack_bytes
-
- used_bytes = 0
-
- for s in self._cur_data['sections']:
- used_bytes += s['end'] - s['beg'] + 1
-
- self._cur_data['used'] = used_bytes
-
- def read_map_data(self, map):
-
- if type(map) is str:
- map = map.split('\n')
-
- self._state = MapReader.INIT
- self._cur_bank_name = ''
- self._cur_bank_type = {}
- self._cur_bank = 0
- self._cur_data = {}
-
- for line in map:
-
- line = line.rstrip()
- if (MapReader.INIT == self._state):
-
- if (self._parse_init(line)):
- self._state = MapReader.BANK
-
- elif (MapReader.BANK == self._state or MapReader.SECTION == self._state):
-
- if ('' == line):
- self._state = MapReader.INIT
- else:
-
- line = line.lstrip()
- parts = line.split(': ', 1)
-
- if (MapReader.SECTION == self._state):
- section_data = self.section_data_regex.match(parts[0])
- if section_data is not None:
- address = int(section_data.group(1), 16)
- name = section_data.group(2)
- self._cur_section['symbols'].append({'name': name, 'address': address})
- continue
-
- if ('SECTION' == parts[0]):
- if (self._parse_section_header(parts[1])):
- self._state = MapReader.SECTION
- elif ('SLACK' == parts[0]):
- self._parse_slack(parts[1])
- self._state = MapReader.INIT
- elif ('EMPTY' == parts[0]):
- self._cur_data = {'sections': [], 'used': 0, 'slack': self._cur_bank_type['size']}
- self._state = MapReader.INIT
-
- else:
- pass
-
- for k, v in self.bank_data.items():
- if (self.bank_types[k]['banked']):
- for _, vv in v.items():
- vv['sections'].sort(key=lambda x: x['beg'])
- for vvv in vv['sections']:
- vvv['symbols'].sort(key=lambda x: x['address'])
- else:
- v['sections'].sort(key=lambda x: x['beg'])
- for vv in v['sections']:
- vv['symbols'].sort(key=lambda x: x['address'])
diff --git a/tools/used_space.py b/tools/used_space.py
deleted file mode 100755
index 53946b87..00000000
--- a/tools/used_space.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-"""
-Usage: python used_space.py [pokeyellow.map] [used_space.png]
-
-Generate a PNG visualizing the space used by each bank in the ROM.
-"""
-
-import sys
-from colorsys import hls_to_rgb
-
-import png
-from mapreader import MapReader
-
-def main():
- mapfile = sys.argv[1] if len(sys.argv) >= 2 else 'pokeyellow.map'
- outfile = sys.argv[2] if len(sys.argv) >= 3 else 'used_space.png'
-
- num_banks = 0x80
- bank_mask = 0x3FFF
- bank_size = 0x4000 # bytes
-
- bpp = 8 # bytes per pixel
- height = 256 # pixels
- assert bank_size % bpp == 0 and (bank_size // bpp) % height == 0
-
- pixels_per_bank = bank_size // bpp # 2048 pixels
- bank_width = pixels_per_bank // height # 8 pixels
- width = bank_width * num_banks # 1024 pixels
-
- reader = MapReader()
- with open(mapfile, 'r', encoding='utf-8') as file:
- reader.read_map_data(file.readlines())
-
- hit_data = []
- default_bank_data = {'sections': [], 'used': 0, 'slack': bank_size}
- for bank in range(num_banks):
- hits = [0] * pixels_per_bank
- bank_data = reader.bank_data['ROM0 bank' if bank == 0 else 'ROMX bank']
- data = bank_data.get(bank, default_bank_data)
- for s in data['sections']:
- beg = s['beg'] & bank_mask
- end = s['end'] & bank_mask
- for i in range(beg, end + 1):
- hits[i // bpp] += 1
- hit_data.append(hits)
-
- pixels = [[(0xFF, 0xFF, 0xFF)] * width for _ in range(height)]
- for bank, hits in enumerate(hit_data):
- hue = 0 if bank == 0 else 210 if bank % 2 else 270
- for i, hit in enumerate(hits):
- x, y = i % bank_width + bank * bank_width, i // bank_width
- hls = (hue / 360, 1 - (85 * hit / bpp) / 100, 1)
- rgb = tuple(int(c * 0xFF) for c in hls_to_rgb(*hls))
- pixels[y][x] = rgb
-
- png_data = [tuple(c for pixel in row for c in pixel) for row in pixels]
- with open(outfile, 'wb') as file:
- writer = png.Writer(width, height, greyscale=False, bitdepth=8, compression=9)
- writer.write(file, png_data)
-
-if __name__ == '__main__':
- main()
diff --git a/vc/pokeyellow.constants.asm b/vc/pokeyellow.constants.asm
index 211d2fc3..fb8db422 100644
--- a/vc/pokeyellow.constants.asm
+++ b/vc/pokeyellow.constants.asm
@@ -1,6 +1,4 @@
-INCLUDE "constants.asm"
-
-; These are all the asm constants needed to make the blue_vc patch.
+; These are all the asm constants needed to make the yellow_vc patch.
MACRO vc_const
DEF x = \1