mirror of
https://github.com/pret/pokeyellow.git
synced 2026-03-21 17:34:31 -05:00
Merge remote-tracking branch 'remotes/pokered/master'
This commit is contained in:
commit
7dd9d7dc80
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
22
INSTALL.md
22
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/
|
||||
```
|
||||
|
|
|
|||
12
Makefile
12
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=$<
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
INCLUDE "constants.asm"
|
||||
|
||||
|
||||
SECTION "Sound Effect Headers 1", ROMX
|
||||
INCLUDE "audio/headers/sfxheaders1.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
|
||||
|
|
|
|||
41
constants/sprite_set_constants.asm
Normal file
41
constants/sprite_set_constants.asm
Normal file
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 977 B After Width: | Height: | Size: 977 B |
|
Before Width: | Height: | Size: 936 B After Width: | Height: | Size: 936 B |
|
|
@ -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"
|
||||
15
macros.asm
15
macros.asm
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
|
|||
3
main.asm
3
main.asm
|
|
@ -1,6 +1,3 @@
|
|||
INCLUDE "constants.asm"
|
||||
|
||||
|
||||
SECTION "bank1", ROMX
|
||||
|
||||
INCLUDE "data/sprites/facings.asm"
|
||||
|
|
|
|||
3
maps.asm
3
maps.asm
|
|
@ -1,6 +1,3 @@
|
|||
INCLUDE "constants.asm"
|
||||
|
||||
|
||||
SECTION "Maps 1", ROMX
|
||||
|
||||
INCLUDE "data/maps/headers/CeladonCity.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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
3
text.asm
3
text.asm
|
|
@ -1,6 +1,3 @@
|
|||
INCLUDE "constants.asm"
|
||||
|
||||
|
||||
SECTION "Text 1", ROMX
|
||||
|
||||
INCLUDE "data/text/text_1.asm"
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
@ -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'])
|
||||
|
|
@ -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()
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user