diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 13cc4e5f0..805aea498 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 6699a0ef3..c674eea35 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 e90ad8b63..78d44bb68 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 379887823..f3e999fc5 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 3d62cd192..2057541b0 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 000000000..56e4ccbbb --- /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 d67d4641c..74097e226 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 b12ba9ce2..abb85c1ff 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 e92ba5577..fd7ad88bf 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 9a58c2213..ffa7e5a82 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 033375258..b393d3194 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 ccc59846e..1373f5dde 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 c0fb4863e..d1bc78322 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 similarity index 100% rename from gfx/battle/attack_anim_1.png rename to gfx/battle/move_anim_0.png diff --git a/gfx/battle/attack_anim_2.png b/gfx/battle/move_anim_1.png similarity index 100% rename from gfx/battle/attack_anim_2.png rename to gfx/battle/move_anim_1.png diff --git a/home.asm b/home.asm index 4ae08bc14..2d144e7af 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 similarity index 76% rename from constants.asm rename to includes.asm index 99714a84c..130b3cad6 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 5dd71f71e..000000000 --- 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 b7a16190c..775b6adc0 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 3f79c571a..a242fcbdd 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 4efa99d72..c7ae6f31b 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 077ae7991..cfeb59974 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 f6d1c76d4..4159c7d44 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 39a8a22bd..fceee2e68 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 618685fac..d99307ff1 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 587ac123e..e47f35c11 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 4194f826d..000000000 --- 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 6d3528c96..000000000 --- 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 53946b870..000000000 --- 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 211d2fc37..fb8db4220 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