mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-12-21 18:11:35 +13:00
Merge branch 'master' of https://github.com/pret/pokered
This commit is contained in:
commit
772520c2c2
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
uses: actions/checkout@master
|
uses: actions/checkout@master
|
||||||
with:
|
with:
|
||||||
path: rgbds
|
path: rgbds
|
||||||
ref: v0.5.2
|
ref: v0.6.1
|
||||||
repository: gbdev/rgbds
|
repository: gbdev/rgbds
|
||||||
|
|
||||||
- name: Install 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.
|
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.1**.
|
||||||
|
|
||||||
**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 installed rgbds older than 0.6.0, you will need to update to 0.6.0 or 0.6.1. Ignore this if you have never installed rgbds before. If a version newer than 0.6.1 does not work, try downloading 0.6.1.
|
||||||
|
|
||||||
Now open the **Cygwin terminal** and enter the following commands.
|
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.
|
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.1**.
|
||||||
|
|
||||||
Now you're ready to [build **pokered**](#build-pokered).
|
Now you're ready to [build **pokered**](#build-pokered).
|
||||||
|
|
||||||
|
|
@ -84,7 +84,7 @@ To install the software required for **pokered**:
|
||||||
sudo apt-get install make gcc git
|
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.1** from source.
|
||||||
|
|
||||||
### OpenSUSE
|
### OpenSUSE
|
||||||
|
|
||||||
|
|
@ -94,7 +94,7 @@ To install the software required for **pokered**:
|
||||||
sudo zypper install make gcc git
|
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.1** from source.
|
||||||
|
|
||||||
### Arch Linux
|
### Arch Linux
|
||||||
|
|
||||||
|
|
@ -104,9 +104,9 @@ To install the software required for **pokered**:
|
||||||
sudo pacman -S make gcc git
|
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.1**.
|
||||||
|
|
||||||
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.1** from source.
|
||||||
|
|
||||||
### Termux
|
### Termux
|
||||||
|
|
||||||
|
|
@ -122,7 +122,7 @@ To install **rgbds**:
|
||||||
sudo apt 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.1** from source.
|
||||||
|
|
||||||
### Other distros
|
### Other distros
|
||||||
|
|
||||||
|
|
@ -133,7 +133,7 @@ If your distro is not listed here, try to find the required software in its repo
|
||||||
- `git`
|
- `git`
|
||||||
- `rgbds`
|
- `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.1** from source.
|
||||||
|
|
||||||
Now you're ready to [build **pokered**](#build-pokered).
|
Now you're ready to [build **pokered**](#build-pokered).
|
||||||
|
|
||||||
|
|
@ -155,8 +155,8 @@ make
|
||||||
|
|
||||||
### Build with a local rgbds version
|
### 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 pokered, such as `pokered/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.1 globally. Instead, you can put its files in a directory within pokered, such as `pokered/rgbds-0.6.1/`. Then specify it when you run `make`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make RGBDS=rgbds-0.5.2/
|
make RGBDS=rgbds-0.6.1/
|
||||||
```
|
```
|
||||||
|
|
|
||||||
35
Makefile
35
Makefile
|
|
@ -69,7 +69,7 @@ tools:
|
||||||
$(MAKE) -C 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`
|
# Create a sym/map for debug purposes if `make` run with `DEBUG=1`
|
||||||
ifeq ($(DEBUG),1)
|
ifeq ($(DEBUG),1)
|
||||||
RGBASMFLAGS += -E
|
RGBASMFLAGS += -E
|
||||||
|
|
@ -83,26 +83,27 @@ $(kep_obj): RGBASMFLAGS += -D _KEP -D _DEBUG
|
||||||
rgbdscheck.o: rgbdscheck.asm
|
rgbdscheck.o: rgbdscheck.asm
|
||||||
$(RGBASM) -o $@ $<
|
$(RGBASM) -o $@ $<
|
||||||
|
|
||||||
# The dep rules have to be explicit or else missing files won't be reported.
|
|
||||||
# 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
|
|
||||||
$$(RGBASM) $$(RGBASMFLAGS) -o $$@ $$<
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Build tools when building the rom.
|
# Build tools when building the rom.
|
||||||
# This has to happen before the rules are processed, since that's when scan_includes is run.
|
# This has to happen before the rules are processed, since that's when scan_includes is run.
|
||||||
ifeq (,$(filter clean tidy tools,$(MAKECMDGOALS)))
|
ifeq (,$(filter clean tidy tools,$(MAKECMDGOALS)))
|
||||||
|
|
||||||
$(info $(shell $(MAKE) -C tools))
|
$(info $(shell $(MAKE) -C tools))
|
||||||
|
|
||||||
|
# The dep rules have to be explicit or else missing files won't be reported.
|
||||||
|
# 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.
|
||||||
|
preinclude_deps := includes.asm $(shell tools/scan_includes includes.asm)
|
||||||
|
define DEP
|
||||||
|
$1: $2 $$(shell tools/scan_includes $2) $(preinclude_deps) | rgbdscheck.o
|
||||||
|
$$(RGBASM) $$(RGBASMFLAGS) -o $$@ $$<
|
||||||
|
endef
|
||||||
|
|
||||||
# Dependencies for objects (drop _red and _blue from asm file basenames)
|
# Dependencies for objects (drop _red and _blue from asm file basenames)
|
||||||
$(foreach obj, $(kep_obj), $(eval $(call DEP,$(obj),$(obj:_kep.o=.asm))))
|
$(foreach obj, $(kep_obj), $(eval $(call DEP,$(obj),$(obj:_kep.o=.asm))))
|
||||||
|
|
||||||
# Dependencies for VC files that need to run scan_includes
|
# Dependencies for VC files that need to run scan_includes
|
||||||
%.constants.sym: %.constants.asm $(shell tools/scan_includes %.constants.asm) | rgbdscheck.o
|
%.constants.sym: %.constants.asm $(shell tools/scan_includes %.constants.asm) $(preinclude_deps) | rgbdscheck.o
|
||||||
$(RGBASM) $< > $@
|
$(RGBASM) $(RGBASMFLAGS) $< > $@
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
@ -121,13 +122,13 @@ kep_opt = -jsv -n 0 -k 01 -l 0x33 -m 0x13 -r 03 -t "KEP Hack"
|
||||||
|
|
||||||
### Misc file-specific graphics rules
|
### Misc file-specific graphics rules
|
||||||
|
|
||||||
gfx/battle/attack_anim_1.2bpp: tools/gfx += --trim-whitespace
|
gfx/battle/move_anim_0.2bpp: tools/gfx += --trim-whitespace
|
||||||
gfx/battle/attack_anim_2.2bpp: tools/gfx += --trim-whitespace
|
gfx/battle/move_anim_1.2bpp: tools/gfx += --trim-whitespace
|
||||||
|
|
||||||
gfx/intro/red_nidorino_1.2bpp: rgbgfx += -h
|
gfx/intro/red_nidorino_1.2bpp: rgbgfx += -Z
|
||||||
gfx/intro/red_nidorino_2.2bpp: rgbgfx += -h
|
gfx/intro/red_nidorino_2.2bpp: rgbgfx += -Z
|
||||||
gfx/intro/red_nidorino_3.2bpp: rgbgfx += -h
|
gfx/intro/red_nidorino_3.2bpp: rgbgfx += -Z
|
||||||
gfx/intro/gengar.2bpp: rgbgfx += -h
|
gfx/intro/gengar.2bpp: rgbgfx += -Z
|
||||||
gfx/intro/gengar.2bpp: tools/gfx += --remove-duplicates --preserve=0x19,0x76
|
gfx/intro/gengar.2bpp: tools/gfx += --remove-duplicates --preserve=0x19,0x76
|
||||||
|
|
||||||
gfx/credits/the_end.2bpp: tools/gfx += --interleave --png=$<
|
gfx/credits/the_end.2bpp: tools/gfx += --interleave --png=$<
|
||||||
|
|
|
||||||
|
|
@ -297,6 +297,8 @@ To set up the repository, see [**INSTALL.md**](INSTALL.md).
|
||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
|
- [**Wiki**][wiki] (includes [tutorials][tutorials])
|
||||||
|
- [**Symbols**][symbols]
|
||||||
- **Discord:** [pret][discord]
|
- **Discord:** [pret][discord]
|
||||||
- **IRC:** [libera#pret][irc]
|
- **IRC:** [libera#pret][irc]
|
||||||
|
|
||||||
|
|
@ -319,6 +321,9 @@ Other disassembly projects:
|
||||||
[pokeruby]: https://github.com/pret/pokeruby
|
[pokeruby]: https://github.com/pret/pokeruby
|
||||||
[pokefirered]: https://github.com/pret/pokefirered
|
[pokefirered]: https://github.com/pret/pokefirered
|
||||||
[pokeemerald]: https://github.com/pret/pokeemerald
|
[pokeemerald]: https://github.com/pret/pokeemerald
|
||||||
|
[wiki]: https://github.com/pret/pokered/wiki
|
||||||
|
[tutorials]: https://github.com/pret/pokered/wiki/Tutorials
|
||||||
|
[symbols]: https://github.com/pret/pokered/tree/symbols
|
||||||
[discord]: https://discord.gg/d5dubZ3
|
[discord]: https://discord.gg/d5dubZ3
|
||||||
[irc]: https://web.libera.chat/?#pret
|
[irc]: https://web.libera.chat/?#pret
|
||||||
[ci]: https://github.com/pret/pokered/actions
|
[ci]: https://github.com/pret/pokered/actions
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
INCLUDE "constants.asm"
|
|
||||||
|
|
||||||
|
|
||||||
SECTION "Sound Effect Headers 1", ROMX
|
SECTION "Sound Effect Headers 1", ROMX
|
||||||
INCLUDE "audio/headers/sfxheaders1.asm"
|
INCLUDE "audio/headers/sfxheaders1.asm"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -746,7 +746,8 @@
|
||||||
|
|
||||||
; Indigo Plateau events
|
; Indigo Plateau events
|
||||||
const_next $8E0
|
const_next $8E0
|
||||||
const ELITE4_EVENTS_START
|
DEF INDIGO_PLATEAU_EVENTS_START EQU const_value
|
||||||
|
const_skip
|
||||||
const EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
|
const EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
|
||||||
const_skip 4
|
const_skip 4
|
||||||
const EVENT_AUTOWALKED_INTO_LORELEIS_ROOM
|
const EVENT_AUTOWALKED_INTO_LORELEIS_ROOM
|
||||||
|
|
@ -766,7 +767,8 @@
|
||||||
const_skip
|
const_skip
|
||||||
const EVENT_BEAT_CHAMPION_RIVAL
|
const EVENT_BEAT_CHAMPION_RIVAL
|
||||||
const_skip 5
|
const_skip 5
|
||||||
const ELITE4_CHAMPION_EVENTS_END
|
const_skip
|
||||||
|
DEF INDIGO_PLATEAU_EVENTS_END EQU const_value - 1
|
||||||
|
|
||||||
; Victory Road 1F events
|
; Victory Road 1F events
|
||||||
const_next $910
|
const_next $910
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
MACRO mapconst
|
MACRO map_const
|
||||||
const \1
|
const \1
|
||||||
DEF \1_HEIGHT EQU \2
|
DEF \1_WIDTH EQU \2
|
||||||
DEF \1_WIDTH EQU \3
|
DEF \1_HEIGHT EQU \3
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
; map ids
|
; map ids
|
||||||
|
|
@ -16,257 +16,257 @@ ENDM
|
||||||
; Each map also has associated data in maps.asm.
|
; Each map also has associated data in maps.asm.
|
||||||
; Order: towns/cities, then routes, then indoor/dungeon maps
|
; Order: towns/cities, then routes, then indoor/dungeon maps
|
||||||
const_def
|
const_def
|
||||||
mapconst PALLET_TOWN, 9, 10 ; $00
|
map_const PALLET_TOWN, 10, 9 ; $00
|
||||||
mapconst VIRIDIAN_CITY, 18, 20 ; $01
|
map_const VIRIDIAN_CITY, 20, 18 ; $01
|
||||||
mapconst PEWTER_CITY, 18, 20 ; $02
|
map_const PEWTER_CITY, 20, 18 ; $02
|
||||||
mapconst CERULEAN_CITY, 18, 20 ; $03
|
map_const CERULEAN_CITY, 20, 18 ; $03
|
||||||
mapconst VERMILION_CITY, 18, 20 ; $04
|
map_const VERMILION_CITY, 20, 18 ; $04
|
||||||
mapconst LAVENDER_TOWN, 9, 10 ; $05
|
map_const LAVENDER_TOWN, 10, 9 ; $05
|
||||||
mapconst CELADON_CITY, 18, 25 ; $06
|
map_const CELADON_CITY, 25, 18 ; $06
|
||||||
mapconst CELADON_UNIVERSITY_OUTSIDE, 20, 21 ; $07
|
map_const CELADON_UNIVERSITY_OUTSIDE, 21, 20 ; $07
|
||||||
mapconst FUCHSIA_CITY, 18, 20 ; $08
|
map_const FUCHSIA_CITY, 20, 18 ; $08
|
||||||
mapconst SAFFRON_CITY, 18, 20 ; $0A
|
map_const SAFFRON_CITY, 20, 18 ; $0A
|
||||||
mapconst CINNABAR_ISLAND, 15, 14 ; $0A
|
map_const CINNABAR_ISLAND, 14, 15 ; $0A
|
||||||
mapconst INDIGO_PLATEAU, 9, 10 ; $0B
|
map_const INDIGO_PLATEAU, 10, 9 ; $0B
|
||||||
mapconst CITRINE_CITY, 18, 20 ; $0C
|
map_const CITRINE_CITY, 20, 18 ; $0C
|
||||||
DEF NUM_CITY_MAPS EQU const_value
|
DEF NUM_CITY_MAPS EQU const_value
|
||||||
DEF FIRST_ROUTE_MAP EQU const_value
|
DEF FIRST_ROUTE_MAP EQU const_value
|
||||||
mapconst ROUTE_1, 18, 10 ; $0D
|
map_const ROUTE_1, 10, 18 ; $0D
|
||||||
mapconst ROUTE_2, 36, 10 ; $0E
|
map_const ROUTE_2, 10, 36 ; $0E
|
||||||
mapconst ROUTE_3, 9, 35 ; $0F
|
map_const ROUTE_3, 35, 9 ; $0F
|
||||||
mapconst ROUTE_4, 9, 45 ; $10
|
map_const ROUTE_4, 45, 9 ; $10
|
||||||
mapconst ROUTE_5, 18, 10 ; $11
|
map_const ROUTE_5, 10, 18 ; $11
|
||||||
mapconst ROUTE_6, 18, 10 ; $12
|
map_const ROUTE_6, 10, 18 ; $12
|
||||||
mapconst ROUTE_7, 9, 10 ; $13
|
map_const ROUTE_7, 10, 9 ; $13
|
||||||
mapconst ROUTE_8, 9, 30 ; $14
|
map_const ROUTE_8, 30, 9 ; $14
|
||||||
mapconst ROUTE_9, 13, 30 ; $15
|
map_const ROUTE_9, 30, 13 ; $15
|
||||||
mapconst ROUTE_10, 40, 10 ; $16
|
map_const ROUTE_10, 10, 40 ; $16
|
||||||
mapconst ROUTE_11, 9, 30 ; $17
|
map_const ROUTE_11, 30, 9 ; $17
|
||||||
mapconst ROUTE_12, 54, 10 ; $18
|
map_const ROUTE_12, 10, 54 ; $18
|
||||||
mapconst ROUTE_13, 9, 30 ; $19
|
map_const ROUTE_13, 30, 9 ; $19
|
||||||
mapconst ROUTE_14, 27, 10 ; $1A
|
map_const ROUTE_14, 10, 27 ; $1A
|
||||||
mapconst ROUTE_15, 9, 30 ; $1B
|
map_const ROUTE_15, 30, 9 ; $1B
|
||||||
mapconst ROUTE_16, 9, 20 ; $1C
|
map_const ROUTE_16, 20, 9 ; $1C
|
||||||
mapconst ROUTE_17, 72, 10 ; $1D
|
map_const ROUTE_17, 10, 72 ; $1D
|
||||||
mapconst ROUTE_18, 9, 25 ; $1E
|
map_const ROUTE_18, 25, 9 ; $1E
|
||||||
mapconst ROUTE_19, 27, 10 ; $1F
|
map_const ROUTE_19, 10, 27 ; $1F
|
||||||
mapconst ROUTE_20, 15, 50 ; $20
|
map_const ROUTE_20, 50, 15 ; $20
|
||||||
mapconst ROUTE_21, 45, 10 ; $21
|
map_const ROUTE_21, 10, 45 ; $21
|
||||||
mapconst ROUTE_22, 9, 20 ; $22
|
map_const ROUTE_22, 20, 9 ; $22
|
||||||
mapconst ROUTE_23, 72, 10 ; $23
|
map_const ROUTE_23, 10, 72 ; $23
|
||||||
mapconst ROUTE_24, 18, 10 ; $24
|
map_const ROUTE_24, 10, 18 ; $24
|
||||||
mapconst ROUTE_25, 9, 37 ; $25
|
map_const ROUTE_25, 37, 9 ; $25
|
||||||
DEF FIRST_INDOOR_MAP EQU const_value
|
DEF FIRST_INDOOR_MAP EQU const_value
|
||||||
mapconst REDS_HOUSE_1F, 4, 4 ; $26
|
map_const REDS_HOUSE_1F, 4, 4 ; $26
|
||||||
mapconst REDS_HOUSE_2F, 4, 4 ; $27
|
map_const REDS_HOUSE_2F, 4, 4 ; $27
|
||||||
mapconst BLUES_HOUSE, 4, 4 ; $28
|
map_const BLUES_HOUSE, 4, 4 ; $28
|
||||||
mapconst OAKS_LAB, 6, 7 ; $29
|
map_const OAKS_LAB, 7, 6 ; $29
|
||||||
mapconst VIRIDIAN_POKECENTER, 4, 7 ; $2A
|
map_const VIRIDIAN_POKECENTER, 7, 4 ; $2A
|
||||||
mapconst VIRIDIAN_MART, 4, 4 ; $2B
|
map_const VIRIDIAN_MART, 4, 4 ; $2B
|
||||||
mapconst VIRIDIAN_SCHOOL_HOUSE, 4, 4 ; $2C
|
map_const VIRIDIAN_SCHOOL_HOUSE, 4, 4 ; $2C
|
||||||
mapconst VIRIDIAN_NICKNAME_HOUSE, 4, 4 ; $2D
|
map_const VIRIDIAN_NICKNAME_HOUSE, 4, 4 ; $2D
|
||||||
mapconst VIRIDIAN_GYM, 9, 10 ; $2E
|
map_const VIRIDIAN_GYM, 10, 9 ; $2E
|
||||||
mapconst DIGLETTS_CAVE_ROUTE_2, 4, 4 ; $2F
|
map_const DIGLETTS_CAVE_ROUTE_2, 4, 4 ; $2F
|
||||||
mapconst VIRIDIAN_FOREST_NORTH_GATE, 4, 5 ; $30
|
map_const VIRIDIAN_FOREST_NORTH_GATE, 5, 4 ; $30
|
||||||
mapconst ROUTE_2_TRADE_HOUSE, 4, 4 ; $31
|
map_const ROUTE_2_TRADE_HOUSE, 4, 4 ; $31
|
||||||
mapconst ROUTE_2_GATE, 4, 5 ; $32
|
map_const ROUTE_2_GATE, 5, 4 ; $32
|
||||||
mapconst VIRIDIAN_FOREST_SOUTH_GATE, 4, 5 ; $33
|
map_const VIRIDIAN_FOREST_SOUTH_GATE, 5, 4 ; $33
|
||||||
mapconst VIRIDIAN_FOREST, 24, 17 ; $34
|
map_const VIRIDIAN_FOREST, 17, 24 ; $34
|
||||||
mapconst MUSEUM_1F, 4, 10 ; $35
|
map_const MUSEUM_1F, 10, 4 ; $35
|
||||||
mapconst MUSEUM_2F, 4, 7 ; $36
|
map_const MUSEUM_2F, 7, 4 ; $36
|
||||||
mapconst PEWTER_GYM, 7, 5 ; $37
|
map_const PEWTER_GYM, 5, 7 ; $37
|
||||||
mapconst PEWTER_NIDORAN_HOUSE, 4, 4 ; $38
|
map_const PEWTER_NIDORAN_HOUSE, 4, 4 ; $38
|
||||||
mapconst PEWTER_MART, 4, 4 ; $39
|
map_const PEWTER_MART, 4, 4 ; $39
|
||||||
mapconst PEWTER_SPEECH_HOUSE, 4, 4 ; $3A
|
map_const PEWTER_SPEECH_HOUSE, 4, 4 ; $3A
|
||||||
mapconst PEWTER_POKECENTER, 4, 7 ; $3B
|
map_const PEWTER_POKECENTER, 7, 4 ; $3B
|
||||||
mapconst MT_MOON_1F, 18, 20 ; $3C
|
map_const MT_MOON_1F, 20, 18 ; $3C
|
||||||
mapconst MT_MOON_B1F, 14, 14 ; $3D
|
map_const MT_MOON_B1F, 14, 14 ; $3D
|
||||||
mapconst MT_MOON_B2F, 18, 20 ; $3E
|
map_const MT_MOON_B2F, 20, 18 ; $3E
|
||||||
mapconst CERULEAN_TRASHED_HOUSE, 4, 4 ; $3F
|
map_const CERULEAN_TRASHED_HOUSE, 4, 4 ; $3F
|
||||||
mapconst CERULEAN_TRADE_HOUSE, 4, 4 ; $40
|
map_const CERULEAN_TRADE_HOUSE, 4, 4 ; $40
|
||||||
mapconst CERULEAN_POKECENTER, 4, 7 ; $41
|
map_const CERULEAN_POKECENTER, 7, 4 ; $41
|
||||||
mapconst CERULEAN_GYM, 7, 5 ; $42
|
map_const CERULEAN_GYM, 5, 7 ; $42
|
||||||
mapconst BIKE_SHOP, 4, 4 ; $43
|
map_const BIKE_SHOP, 4, 4 ; $43
|
||||||
mapconst CERULEAN_MART, 4, 4 ; $44
|
map_const CERULEAN_MART, 4, 4 ; $44
|
||||||
mapconst MT_MOON_POKECENTER, 4, 7 ; $45
|
map_const MT_MOON_POKECENTER, 7, 4 ; $45
|
||||||
mapconst VIRIDIAN_PRE_GYM, 7, 5 ; $46 - was CERULEAN_TRASHED_HOUSE_COPY
|
map_const VIRIDIAN_PRE_GYM, 5, 7 ; $46 - was CERULEAN_TRASHED_HOUSE_COPY
|
||||||
mapconst ROUTE_5_GATE, 3, 4 ; $47
|
map_const ROUTE_5_GATE, 4, 3 ; $47
|
||||||
mapconst UNDERGROUND_PATH_ROUTE_5, 4, 4 ; $48
|
map_const UNDERGROUND_PATH_ROUTE_5, 4, 4 ; $48
|
||||||
mapconst DAYCARE, 4, 4 ; $49
|
map_const DAYCARE, 4, 4 ; $49
|
||||||
mapconst ROUTE_6_GATE, 3, 4 ; $4A
|
map_const ROUTE_6_GATE, 4, 3 ; $4A
|
||||||
mapconst UNDERGROUND_PATH_ROUTE_6, 4, 4 ; $4B
|
map_const UNDERGROUND_PATH_ROUTE_6, 4, 4 ; $4B
|
||||||
mapconst CELESTE_HILL, 12, 12 ; $4C - Was copy of above & unused
|
map_const CELESTE_HILL, 12, 12 ; $4C - Was copy of above & unused
|
||||||
mapconst ROUTE_7_GATE, 4, 3 ; $4D
|
map_const ROUTE_7_GATE, 3, 4 ; $4D
|
||||||
mapconst UNDERGROUND_PATH_ROUTE_7, 4, 4 ; $4E
|
map_const UNDERGROUND_PATH_ROUTE_7, 4, 4 ; $4E
|
||||||
mapconst UNDERGROUND_PATH_ROUTE_7_COPY, 4, 4 ; $4F - Unused
|
map_const UNDERGROUND_PATH_ROUTE_7_COPY, 4, 4 ; $4F - Unused
|
||||||
mapconst ROUTE_8_GATE, 4, 3 ; $50
|
map_const ROUTE_8_GATE, 3, 4 ; $50
|
||||||
mapconst UNDERGROUND_PATH_ROUTE_8, 4, 4 ; $51
|
map_const UNDERGROUND_PATH_ROUTE_8, 4, 4 ; $51
|
||||||
mapconst ROCK_TUNNEL_POKECENTER, 4, 7 ; $52
|
map_const ROCK_TUNNEL_POKECENTER, 7, 4 ; $52
|
||||||
mapconst ROCK_TUNNEL_1F, 18, 20 ; $53
|
map_const ROCK_TUNNEL_1F, 20, 18 ; $53
|
||||||
mapconst POWER_PLANT, 18, 20 ; $54
|
map_const POWER_PLANT, 20, 18 ; $54
|
||||||
mapconst ROUTE_11_GATE_1F, 5, 4 ; $55
|
map_const ROUTE_11_GATE_1F, 4, 5 ; $55
|
||||||
mapconst DIGLETTS_CAVE_ROUTE_11, 4, 4 ; $56
|
map_const DIGLETTS_CAVE_ROUTE_11, 4, 4 ; $56
|
||||||
mapconst ROUTE_11_GATE_2F, 4, 4 ; $57
|
map_const ROUTE_11_GATE_2F, 4, 4 ; $57
|
||||||
mapconst ROUTE_12_GATE_1F, 4, 5 ; $58
|
map_const ROUTE_12_GATE_1F, 5, 4 ; $58
|
||||||
mapconst BILLS_HOUSE, 4, 7 ; $59
|
map_const BILLS_HOUSE, 7, 4 ; $59
|
||||||
mapconst VERMILION_POKECENTER, 4, 7 ; $5A
|
map_const VERMILION_POKECENTER, 7, 4 ; $5A
|
||||||
mapconst POKEMON_FAN_CLUB, 4, 4 ; $5B
|
map_const POKEMON_FAN_CLUB, 4, 4 ; $5B
|
||||||
mapconst VERMILION_MART, 4, 4 ; $5C
|
map_const VERMILION_MART, 4, 4 ; $5C
|
||||||
mapconst VERMILION_GYM, 9, 5 ; $5D
|
map_const VERMILION_GYM, 5, 9 ; $5D
|
||||||
mapconst VERMILION_PIDGEY_HOUSE, 4, 4 ; $5E
|
map_const VERMILION_PIDGEY_HOUSE, 4, 4 ; $5E
|
||||||
mapconst VERMILION_DOCK, 6, 14 ; $5F
|
map_const VERMILION_DOCK, 14, 6 ; $5F
|
||||||
mapconst SS_ANNE_1F, 9, 20 ; $60
|
map_const SS_ANNE_1F, 20, 9 ; $60
|
||||||
mapconst SS_ANNE_2F, 9, 20 ; $61
|
map_const SS_ANNE_2F, 20, 9 ; $61
|
||||||
mapconst SS_ANNE_3F, 3, 10 ; $62
|
map_const SS_ANNE_3F, 10, 3 ; $62
|
||||||
mapconst SS_ANNE_B1F, 4, 15 ; $63
|
map_const SS_ANNE_B1F, 15, 4 ; $63
|
||||||
mapconst SS_ANNE_BOW, 7, 10 ; $64
|
map_const SS_ANNE_BOW, 10, 7 ; $64
|
||||||
mapconst SS_ANNE_KITCHEN, 8, 7 ; $65
|
map_const SS_ANNE_KITCHEN, 7, 8 ; $65
|
||||||
mapconst SS_ANNE_CAPTAINS_ROOM, 4, 3 ; $66
|
map_const SS_ANNE_CAPTAINS_ROOM, 3, 4 ; $66
|
||||||
mapconst SS_ANNE_1F_ROOMS, 8, 12 ; $67
|
map_const SS_ANNE_1F_ROOMS, 12, 8 ; $67
|
||||||
mapconst SS_ANNE_2F_ROOMS, 8, 12 ; $68
|
map_const SS_ANNE_2F_ROOMS, 12, 8 ; $68
|
||||||
mapconst SS_ANNE_B1F_ROOMS, 8, 12 ; $69
|
map_const SS_ANNE_B1F_ROOMS, 12, 8 ; $69
|
||||||
mapconst SILPH_GAUNTLET_1F, 9, 10 ; $6A - Was UNUSED_MAP_69
|
map_const SILPH_GAUNTLET_1F, 10, 9 ; $6A - Was UNUSED_MAP_69
|
||||||
mapconst SILPH_GAUNTLET_2F, 10, 13 ; $6B - Was UNUSED_MAP_6A
|
map_const SILPH_GAUNTLET_2F, 13, 10 ; $6B - Was UNUSED_MAP_6A
|
||||||
mapconst SILPH_GAUNTLET_3F, 13, 17 ; $6C - Was UNUSED_MAP_6B
|
map_const SILPH_GAUNTLET_3F, 17, 13 ; $6C - Was UNUSED_MAP_6B
|
||||||
mapconst VICTORY_ROAD_1F, 9, 10 ; $6D
|
map_const VICTORY_ROAD_1F, 10, 9 ; $6D
|
||||||
mapconst SILPH_GAUNTLET_4F, 9, 10 ; $6E - Was UNUSED_MAP_6D
|
map_const SILPH_GAUNTLET_4F, 10, 9 ; $6E - Was UNUSED_MAP_6D
|
||||||
mapconst SILPH_GAUNTLET_5F, 9, 10 ; $6F - Was UNUSED_MAP_6E
|
map_const SILPH_GAUNTLET_5F, 10, 9 ; $6F - Was UNUSED_MAP_6E
|
||||||
mapconst SILPH_GAUNTLET_6F, 12, 12 ; $70 - Was UNUSED_MAP_6F
|
map_const SILPH_GAUNTLET_6F, 12, 12 ; $70 - Was UNUSED_MAP_6F
|
||||||
mapconst SILPH_GAUNTLET_7F, 5, 6 ; $71 - Was UNUSED_MAP_70
|
map_const SILPH_GAUNTLET_7F, 6, 5 ; $71 - Was UNUSED_MAP_70
|
||||||
mapconst LANCES_ROOM, 13, 13 ; $72
|
map_const LANCES_ROOM, 13, 13 ; $72
|
||||||
mapconst FARAWAY_ISLAND_OUTSIDE, 18, 15 ; $73 - Was UNUSED_MAP_72
|
map_const FARAWAY_ISLAND_OUTSIDE, 15, 18 ; $73 - Was UNUSED_MAP_72
|
||||||
mapconst FARAWAY_ISLAND_INSIDE, 11, 15 ; $74 - Was UNUSED_MAP_73
|
map_const FARAWAY_ISLAND_INSIDE, 15, 11 ; $74 - Was UNUSED_MAP_73
|
||||||
mapconst POKEMON_MANSION_B2F, 12, 15 ; $75 - Was UNUSED_MAP_74
|
map_const POKEMON_MANSION_B2F, 15, 12 ; $75 - Was UNUSED_MAP_74
|
||||||
mapconst MT_MOON_CRATER, 25, 25 ; $76 - Was UNUSED_MAP_75
|
map_const MT_MOON_CRATER, 25, 25 ; $76 - Was UNUSED_MAP_75
|
||||||
mapconst HALL_OF_FAME, 4, 5 ; $77
|
map_const HALL_OF_FAME, 5, 4 ; $77
|
||||||
mapconst UNDERGROUND_PATH_NORTH_SOUTH, 24, 4 ; $78
|
map_const UNDERGROUND_PATH_NORTH_SOUTH, 4, 24 ; $78 ; UndergroundPathNorthSouth.blk is actually 4x23
|
||||||
mapconst CHAMPIONS_ROOM, 4, 4 ; $79
|
map_const CHAMPIONS_ROOM, 4, 4 ; $79
|
||||||
mapconst UNDERGROUND_PATH_WEST_EAST, 4, 25 ; $7A
|
map_const UNDERGROUND_PATH_WEST_EAST, 25, 4 ; $7A
|
||||||
mapconst CELADON_MART_1F, 4, 10 ; $7B
|
map_const CELADON_MART_1F, 10, 4 ; $7B
|
||||||
mapconst CELADON_MART_2F, 4, 10 ; $7C
|
map_const CELADON_MART_2F, 10, 4 ; $7C
|
||||||
mapconst CELADON_MART_3F, 4, 10 ; $7D
|
map_const CELADON_MART_3F, 10, 4 ; $7D
|
||||||
mapconst CELADON_MART_4F, 4, 10 ; $7E
|
map_const CELADON_MART_4F, 10, 4 ; $7E
|
||||||
mapconst CELADON_MART_ROOF, 4, 10 ; $7F
|
map_const CELADON_MART_ROOF, 10, 4 ; $7F
|
||||||
mapconst CELADON_MART_ELEVATOR, 2, 2 ; $80
|
map_const CELADON_MART_ELEVATOR, 2, 2 ; $80
|
||||||
mapconst CELADON_MANSION_1F, 6, 4 ; $81
|
map_const CELADON_MANSION_1F, 4, 6 ; $81
|
||||||
mapconst CELADON_MANSION_2F, 6, 4 ; $82
|
map_const CELADON_MANSION_2F, 4, 6 ; $82
|
||||||
mapconst CELADON_MANSION_3F, 6, 4 ; $83
|
map_const CELADON_MANSION_3F, 4, 6 ; $83
|
||||||
mapconst CELADON_MANSION_ROOF, 6, 4 ; $84
|
map_const CELADON_MANSION_ROOF, 4, 6 ; $84
|
||||||
mapconst CELADON_MANSION_ROOF_HOUSE, 4, 4 ; $85
|
map_const CELADON_MANSION_ROOF_HOUSE, 4, 4 ; $85
|
||||||
mapconst CELADON_POKECENTER, 4, 7 ; $86
|
map_const CELADON_POKECENTER, 7, 4 ; $86
|
||||||
mapconst CELADON_GYM, 9, 5 ; $87
|
map_const CELADON_GYM, 5, 9 ; $87
|
||||||
mapconst GAME_CORNER, 9, 10 ; $88
|
map_const GAME_CORNER, 10, 9 ; $88
|
||||||
mapconst CELADON_MART_5F, 4, 10 ; $89
|
map_const CELADON_MART_5F, 10, 4 ; $89
|
||||||
mapconst GAME_CORNER_PRIZE_ROOM, 4, 5 ; $8A
|
map_const GAME_CORNER_PRIZE_ROOM, 5, 4 ; $8A
|
||||||
mapconst CELADON_DINER, 4, 5 ; $8B
|
map_const CELADON_DINER, 5, 4 ; $8B
|
||||||
mapconst CELADON_CHIEF_HOUSE, 4, 4 ; $8C
|
map_const CELADON_CHIEF_HOUSE, 4, 4 ; $8C
|
||||||
mapconst CELADON_HOTEL, 4, 7 ; $8D
|
map_const CELADON_HOTEL, 7, 4 ; $8D
|
||||||
mapconst LAVENDER_POKECENTER, 4, 7 ; $8E
|
map_const LAVENDER_POKECENTER, 7, 4 ; $8E
|
||||||
mapconst POKEMON_TOWER_1F, 9, 10 ; $8F
|
map_const POKEMON_TOWER_1F, 10, 9 ; $8F
|
||||||
mapconst POKEMON_TOWER_2F, 9, 10 ; $90
|
map_const POKEMON_TOWER_2F, 10, 9 ; $90
|
||||||
mapconst POKEMON_TOWER_3F, 9, 10 ; $91 - Currently unused
|
map_const POKEMON_TOWER_3F, 10, 9 ; $91 - Currently unused
|
||||||
mapconst POKEMON_TOWER_4F, 9, 10 ; $92 - Currently unused
|
map_const POKEMON_TOWER_4F, 10, 9 ; $92 - Currently unused
|
||||||
mapconst POKEMON_TOWER_5F, 9, 10 ; $93 - Currently unused
|
map_const POKEMON_TOWER_5F, 10, 9 ; $93 - Currently unused
|
||||||
mapconst POKEMON_TOWER_6F, 9, 10 ; $94
|
map_const POKEMON_TOWER_6F, 10, 9 ; $94
|
||||||
mapconst POKEMON_TOWER_7F, 9, 10 ; $95
|
map_const POKEMON_TOWER_7F, 10, 9 ; $95
|
||||||
mapconst MR_FUJIS_HOUSE, 4, 4 ; $96
|
map_const MR_FUJIS_HOUSE, 4, 4 ; $96
|
||||||
mapconst LAVENDER_MART, 4, 4 ; $97
|
map_const LAVENDER_MART, 4, 4 ; $97
|
||||||
mapconst LAVENDER_CUBONE_HOUSE, 4, 4 ; $98
|
map_const LAVENDER_CUBONE_HOUSE, 4, 4 ; $98
|
||||||
mapconst FUCHSIA_MART, 4, 4 ; $99
|
map_const FUCHSIA_MART, 4, 4 ; $99
|
||||||
mapconst FUCHSIA_BILLS_GRANDPAS_HOUSE, 4, 4 ; $9A
|
map_const FUCHSIA_BILLS_GRANDPAS_HOUSE, 4, 4 ; $9A
|
||||||
mapconst FUCHSIA_POKECENTER, 4, 7 ; $9B
|
map_const FUCHSIA_POKECENTER, 7, 4 ; $9B
|
||||||
mapconst WARDENS_HOUSE, 4, 5 ; $9C
|
map_const WARDENS_HOUSE, 5, 4 ; $9C
|
||||||
mapconst SAFARI_ZONE_GATE, 3, 4 ; $9D
|
map_const SAFARI_ZONE_GATE, 4, 3 ; $9D
|
||||||
mapconst FUCHSIA_GYM, 9, 5 ; $9E
|
map_const FUCHSIA_GYM, 5, 9 ; $9E
|
||||||
mapconst FUCHSIA_MEETING_ROOM, 4, 7 ; $9F
|
map_const FUCHSIA_MEETING_ROOM, 7, 4 ; $9F
|
||||||
mapconst SEAFOAM_ISLANDS_B1F, 9, 15 ; $A0
|
map_const SEAFOAM_ISLANDS_B1F, 15, 9 ; $A0
|
||||||
mapconst SEAFOAM_ISLANDS_B2F, 9, 15 ; $A1
|
map_const SEAFOAM_ISLANDS_B2F, 15, 9 ; $A1
|
||||||
mapconst SEAFOAM_ISLANDS_B3F, 9, 15 ; $A2
|
map_const SEAFOAM_ISLANDS_B3F, 15, 9 ; $A2
|
||||||
mapconst SEAFOAM_ISLANDS_B4F, 9, 15 ; $A3
|
map_const SEAFOAM_ISLANDS_B4F, 15, 9 ; $A3
|
||||||
mapconst VERMILION_OLD_ROD_HOUSE, 4, 4 ; $A4 - Now unused
|
map_const VERMILION_OLD_ROD_HOUSE, 4, 4 ; $A4 - Now unused
|
||||||
mapconst FUCHSIA_GOOD_ROD_HOUSE, 4, 4 ; $A5
|
map_const FUCHSIA_GOOD_ROD_HOUSE, 4, 4 ; $A5
|
||||||
mapconst POKEMON_MANSION_1F, 14, 15 ; $A6
|
map_const POKEMON_MANSION_1F, 15, 14 ; $A6
|
||||||
mapconst CINNABAR_GYM, 9, 10 ; $A7
|
map_const CINNABAR_GYM, 10, 9 ; $A7
|
||||||
mapconst CINNABAR_LAB, 4, 9 ; $A8
|
map_const CINNABAR_LAB, 9, 4 ; $A8
|
||||||
mapconst CINNABAR_LAB_TRADE_ROOM, 4, 4 ; $A9
|
map_const CINNABAR_LAB_TRADE_ROOM, 4, 4 ; $A9
|
||||||
mapconst CINNABAR_LAB_METRONOME_ROOM, 4, 4 ; $AA
|
map_const CINNABAR_LAB_METRONOME_ROOM, 4, 4 ; $AA
|
||||||
mapconst CINNABAR_LAB_FOSSIL_ROOM, 4, 4 ; $AB
|
map_const CINNABAR_LAB_FOSSIL_ROOM, 4, 4 ; $AB
|
||||||
mapconst CINNABAR_POKECENTER, 4, 7 ; $AC
|
map_const CINNABAR_POKECENTER, 7, 4 ; $AC
|
||||||
mapconst CINNABAR_MART, 4, 4 ; $AD
|
map_const CINNABAR_MART, 4, 4 ; $AD
|
||||||
mapconst CINNABAR_MART_COPY, 4, 4 ; $AE - Unused
|
map_const CINNABAR_MART_COPY, 4, 4 ; $AE - Unused
|
||||||
mapconst INDIGO_PLATEAU_LOBBY, 6, 8 ; $AF
|
map_const INDIGO_PLATEAU_LOBBY, 8, 6 ; $AF
|
||||||
mapconst COPYCATS_HOUSE_1F, 4, 4 ; $B0
|
map_const COPYCATS_HOUSE_1F, 4, 4 ; $B0
|
||||||
mapconst COPYCATS_HOUSE_2F, 4, 4 ; $B1
|
map_const COPYCATS_HOUSE_2F, 4, 4 ; $B1
|
||||||
mapconst FIGHTING_DOJO, 6, 5 ; $B2
|
map_const FIGHTING_DOJO, 5, 6 ; $B2
|
||||||
mapconst SAFFRON_GYM, 9, 10 ; $B3
|
map_const SAFFRON_GYM, 10, 9 ; $B3
|
||||||
mapconst SAFFRON_PIDGEY_HOUSE, 4, 4 ; $B4
|
map_const SAFFRON_PIDGEY_HOUSE, 4, 4 ; $B4
|
||||||
mapconst SAFFRON_MART, 4, 4 ; $B5
|
map_const SAFFRON_MART, 4, 4 ; $B5
|
||||||
mapconst SILPH_CO_1F, 9, 15 ; $B6
|
map_const SILPH_CO_1F, 15, 9 ; $B6
|
||||||
mapconst SAFFRON_POKECENTER, 4, 7 ; $B7
|
map_const SAFFRON_POKECENTER, 7, 4 ; $B7
|
||||||
mapconst MR_PSYCHICS_HOUSE, 4, 4 ; $B8
|
map_const MR_PSYCHICS_HOUSE, 4, 4 ; $B8
|
||||||
mapconst ROUTE_15_GATE_1F, 5, 4 ; $B9
|
map_const ROUTE_15_GATE_1F, 4, 5 ; $B9
|
||||||
mapconst ROUTE_15_GATE_2F, 4, 4 ; $BA
|
map_const ROUTE_15_GATE_2F, 4, 4 ; $BA
|
||||||
mapconst ROUTE_16_GATE_1F, 7, 4 ; $BB
|
map_const ROUTE_16_GATE_1F, 4, 7 ; $BB
|
||||||
mapconst ROUTE_16_GATE_2F, 4, 4 ; $BC
|
map_const ROUTE_16_GATE_2F, 4, 4 ; $BC
|
||||||
mapconst ROUTE_16_FLY_HOUSE, 4, 4 ; $BD
|
map_const ROUTE_16_FLY_HOUSE, 4, 4 ; $BD
|
||||||
mapconst ROUTE_12_SUPER_ROD_HOUSE, 4, 4 ; $BE
|
map_const ROUTE_12_SUPER_ROD_HOUSE, 4, 4 ; $BE
|
||||||
mapconst ROUTE_18_GATE_1F, 5, 4 ; $BF
|
map_const ROUTE_18_GATE_1F, 4, 5 ; $BF
|
||||||
mapconst ROUTE_18_GATE_2F, 4, 4 ; $C0
|
map_const ROUTE_18_GATE_2F, 4, 4 ; $C0
|
||||||
mapconst SEAFOAM_ISLANDS_1F, 9, 15 ; $C1
|
map_const SEAFOAM_ISLANDS_1F, 15, 9 ; $C1
|
||||||
mapconst ROUTE_22_GATE, 4, 5 ; $C2
|
map_const ROUTE_22_GATE, 5, 4 ; $C2
|
||||||
mapconst VICTORY_ROAD_2F, 9, 15 ; $C3
|
map_const VICTORY_ROAD_2F, 15, 9 ; $C3
|
||||||
mapconst ROUTE_12_GATE_2F, 4, 4 ; $C4
|
map_const ROUTE_12_GATE_2F, 4, 4 ; $C4
|
||||||
mapconst VERMILION_TRADE_HOUSE, 4, 4 ; $C5
|
map_const VERMILION_TRADE_HOUSE, 4, 4 ; $C5
|
||||||
mapconst DIGLETTS_CAVE, 18, 20 ; $C6
|
map_const DIGLETTS_CAVE, 20, 18 ; $C6
|
||||||
mapconst VICTORY_ROAD_3F, 9, 15 ; $C7
|
map_const VICTORY_ROAD_3F, 15, 9 ; $C7
|
||||||
mapconst ROCKET_HIDEOUT_B1F, 14, 11 ; $C8
|
map_const ROCKET_HIDEOUT_B1F, 11, 14 ; $C8
|
||||||
mapconst ROCKET_HIDEOUT_B2F, 14, 15 ; $C9 - Currently unused
|
map_const ROCKET_HIDEOUT_B2F, 15, 14 ; $C9 - Currently unused
|
||||||
mapconst ROCKET_HIDEOUT_B3F, 14, 15 ; $CA - Currently unused
|
map_const ROCKET_HIDEOUT_B3F, 15, 14 ; $CA - Currently unused
|
||||||
mapconst ROCKET_HIDEOUT_B4F, 12, 15 ; $CB - Currently unused
|
map_const ROCKET_HIDEOUT_B4F, 15, 12 ; $CB - Currently unused
|
||||||
mapconst ROCKET_HIDEOUT_ELEVATOR, 4, 3 ; $CC - Currently unused
|
map_const ROCKET_HIDEOUT_ELEVATOR, 3, 4 ; $CC - Currently unused
|
||||||
mapconst UNUSED_MAP_CC, 0, 0 ; $CD - Unused
|
map_const UNUSED_MAP_CC, 0, 0 ; $CD - Unused
|
||||||
mapconst UNUSED_MAP_CD, 0, 0 ; $CE - Unused
|
map_const UNUSED_MAP_CD, 0, 0 ; $CE - Unused
|
||||||
mapconst UNUSED_MAP_CE, 0, 0 ; $CF - Unused
|
map_const UNUSED_MAP_CE, 0, 0 ; $CF - Unused
|
||||||
mapconst SILPH_CO_2F, 9, 15 ; $D0
|
map_const SILPH_CO_2F, 15, 9 ; $D0
|
||||||
mapconst SILPH_CO_3F, 9, 15 ; $D1
|
map_const SILPH_CO_3F, 15, 9 ; $D1
|
||||||
mapconst SILPH_CO_4F, 9, 15 ; $D2
|
map_const SILPH_CO_4F, 15, 9 ; $D2
|
||||||
mapconst SILPH_CO_5F, 9, 15 ; $D3
|
map_const SILPH_CO_5F, 15, 9 ; $D3
|
||||||
mapconst SILPH_CO_6F, 9, 13 ; $D4
|
map_const SILPH_CO_6F, 13, 9 ; $D4
|
||||||
mapconst SILPH_CO_7F, 9, 13 ; $D5
|
map_const SILPH_CO_7F, 13, 9 ; $D5
|
||||||
mapconst SILPH_CO_8F, 9, 13 ; $D6
|
map_const SILPH_CO_8F, 13, 9 ; $D6
|
||||||
mapconst POKEMON_MANSION_2F, 14, 15 ; $D7
|
map_const POKEMON_MANSION_2F, 15, 14 ; $D7
|
||||||
mapconst POKEMON_MANSION_3F, 9, 15 ; $D8
|
map_const POKEMON_MANSION_3F, 15, 9 ; $D8
|
||||||
mapconst POKEMON_MANSION_B1F, 14, 15 ; $D9
|
map_const POKEMON_MANSION_B1F, 15, 14 ; $D9
|
||||||
mapconst SAFARI_ZONE_EAST, 13, 15 ; $DA
|
map_const SAFARI_ZONE_EAST, 15, 13 ; $DA
|
||||||
mapconst SAFARI_ZONE_NORTH, 18, 20 ; $DB
|
map_const SAFARI_ZONE_NORTH, 20, 18 ; $DB
|
||||||
mapconst SAFARI_ZONE_WEST, 13, 15 ; $DC
|
map_const SAFARI_ZONE_WEST, 15, 13 ; $DC
|
||||||
mapconst SAFARI_ZONE_CENTER, 13, 15 ; $DD
|
map_const SAFARI_ZONE_CENTER, 15, 13 ; $DD
|
||||||
mapconst SAFARI_ZONE_CENTER_REST_HOUSE, 4, 4 ; $DE
|
map_const SAFARI_ZONE_CENTER_REST_HOUSE, 4, 4 ; $DE
|
||||||
mapconst SAFARI_ZONE_SECRET_HOUSE, 4, 4 ; $DF
|
map_const SAFARI_ZONE_SECRET_HOUSE, 4, 4 ; $DF
|
||||||
mapconst SAFARI_ZONE_WEST_REST_HOUSE, 4, 4 ; $E0
|
map_const SAFARI_ZONE_WEST_REST_HOUSE, 4, 4 ; $E0
|
||||||
mapconst SAFARI_ZONE_EAST_REST_HOUSE, 4, 4 ; $E1
|
map_const SAFARI_ZONE_EAST_REST_HOUSE, 4, 4 ; $E1
|
||||||
mapconst SAFARI_ZONE_NORTH_REST_HOUSE, 4, 4 ; $E2
|
map_const SAFARI_ZONE_NORTH_REST_HOUSE, 4, 4 ; $E2
|
||||||
mapconst CERULEAN_CAVE_2F, 9, 15 ; $E3
|
map_const CERULEAN_CAVE_2F, 15, 9 ; $E3
|
||||||
mapconst CERULEAN_CAVE_B1F, 9, 15 ; $E4
|
map_const CERULEAN_CAVE_B1F, 15, 9 ; $E4
|
||||||
mapconst CERULEAN_CAVE_1F, 9, 15 ; $E5
|
map_const CERULEAN_CAVE_1F, 15, 9 ; $E5
|
||||||
mapconst NAME_RATERS_HOUSE, 4, 4 ; $E6
|
map_const NAME_RATERS_HOUSE, 4, 4 ; $E6
|
||||||
mapconst CERULEAN_BADGE_HOUSE, 4, 4 ; $E7
|
map_const CERULEAN_BADGE_HOUSE, 4, 4 ; $E7
|
||||||
mapconst CINNABAR_VOLCANO, 12, 14 ; $E8 - Was UNUSED_MAP_E7
|
map_const CINNABAR_VOLCANO, 14, 12 ; $E8 - Was UNUSED_MAP_E7
|
||||||
mapconst ROCK_TUNNEL_B1F, 18, 20 ; $E9
|
map_const ROCK_TUNNEL_B1F, 20, 18 ; $E9
|
||||||
mapconst SILPH_CO_9F, 9, 13 ; $EA
|
map_const SILPH_CO_9F, 13, 9 ; $EA
|
||||||
mapconst SILPH_CO_10F, 9, 8 ; $EB
|
map_const SILPH_CO_10F, 8, 9 ; $EB
|
||||||
mapconst SILPH_CO_11F, 9, 9 ; $EC
|
map_const SILPH_CO_11F, 9, 9 ; $EC
|
||||||
mapconst SILPH_CO_ELEVATOR, 2, 2 ; $ED
|
map_const SILPH_CO_ELEVATOR, 2, 2 ; $ED
|
||||||
mapconst UNUSED_MAP_ED, 0, 0 ; $EE - Unused
|
map_const UNUSED_MAP_ED, 0, 0 ; $EE - Unused
|
||||||
mapconst UNDERWATER_TUNNEL, 9, 15 ; $EF - Was UNUSED_MAP_EE
|
map_const UNDERWATER_TUNNEL, 15, 9 ; $EF - Was UNUSED_MAP_EE
|
||||||
mapconst TRADE_CENTER, 4, 5 ; $F0
|
map_const TRADE_CENTER, 5, 4 ; $F0
|
||||||
mapconst COLOSSEUM, 4, 5 ; $F1
|
map_const COLOSSEUM, 5, 4 ; $F1
|
||||||
mapconst CELADON_UNIVERSITY_INSIDE, 10, 11 ; $F2 - Was UNUSED_MAP_F1
|
map_const CELADON_UNIVERSITY_INSIDE, 11, 10 ; $F2 - Was UNUSED_MAP_F1
|
||||||
mapconst CELADON_UNIVERSITY_POKECENTER, 4, 7 ; $F3 - Was UNUSED_MAP_F2
|
map_const CELADON_UNIVERSITY_POKECENTER, 7, 4 ; $F3 - Was UNUSED_MAP_F2
|
||||||
mapconst BILLS_GARDEN, 10, 10 ; $F4 - Was UNUSED_MAP_F3
|
map_const BILLS_GARDEN, 10, 10 ; $F4 - Was UNUSED_MAP_F3
|
||||||
mapconst LORELEIS_ROOM, 6, 5 ; $F5
|
map_const LORELEIS_ROOM, 5, 6 ; $F5
|
||||||
mapconst BRUNOS_ROOM, 6, 5 ; $F6
|
map_const BRUNOS_ROOM, 5, 6 ; $F6
|
||||||
mapconst AGATHAS_ROOM, 6, 5 ; $F7 - Maps F8 - FE currently have no data, bear in mind we need room for everything in citrine
|
map_const AGATHAS_ROOM, 5, 6 ; $F7 - Maps F8 - FE currently have no data, bear in mind we need room for everything in citrine
|
||||||
DEF NUM_MAPS EQU const_value
|
DEF NUM_MAPS EQU const_value
|
||||||
|
|
||||||
; Indoor maps, such as houses, use this as the Map ID in their exit warps
|
; Indoor maps, such as houses, use this as the Map ID in their exit warps
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
; spritestatedata1 struct members (see macros/wram.asm)
|
; spritestatedata1 struct members (see macros/ram.asm)
|
||||||
const_def
|
const_def
|
||||||
const SPRITESTATEDATA1_PICTUREID ; 0
|
const SPRITESTATEDATA1_PICTUREID ; 0
|
||||||
const SPRITESTATEDATA1_MOVEMENTSTATUS ; 1
|
const SPRITESTATEDATA1_MOVEMENTSTATUS ; 1
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
const SPRITESTATEDATA1_0F ; f
|
const SPRITESTATEDATA1_0F ; f
|
||||||
DEF SPRITESTATEDATA1_LENGTH EQU const_value
|
DEF SPRITESTATEDATA1_LENGTH EQU const_value
|
||||||
|
|
||||||
; spritestatedata2 struct members (see macros/wram.asm)
|
; spritestatedata2 struct members (see macros/ram.asm)
|
||||||
const_def
|
const_def
|
||||||
const SPRITESTATEDATA2_WALKANIMATIONCOUNTER ; 0
|
const SPRITESTATEDATA2_WALKANIMATIONCOUNTER ; 0
|
||||||
const SPRITESTATEDATA2_01 ; 1
|
const SPRITESTATEDATA2_01 ; 1
|
||||||
|
|
|
||||||
|
|
@ -45,93 +45,96 @@ DEF FIRST_SE_ID EQU const_value
|
||||||
|
|
||||||
; subanimations that are part of move animations
|
; subanimations that are part of move animations
|
||||||
; SubanimationPointers indexes (see data/battle_anims/subanimations.asm)
|
; 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_def
|
||||||
const SUBANIM_00
|
const SUBANIM_0_STAR
|
||||||
const SUBANIM_01
|
const SUBANIM_0_STAR_TWICE
|
||||||
const SUBANIM_02
|
const SUBANIM_0_STAR_THRICE
|
||||||
const SUBANIM_03
|
const SUBANIM_0_STAR_DESCENDING
|
||||||
const SUBANIM_04
|
const SUBANIM_1_STAR_BIG_MOVING
|
||||||
const SUBANIM_05
|
const SUBANIM_1_STAR_BIG
|
||||||
const SUBANIM_06
|
const SUBANIM_0_BALL_TOSS_HIGH
|
||||||
const SUBANIM_07
|
const SUBANIM_0_BALL_TOSS_MIDDLE
|
||||||
const SUBANIM_08
|
const SUBANIM_0_BALL_TOSS_LOW
|
||||||
const SUBANIM_09
|
const SUBANIM_0_BALL_SHAKE_ENEMY
|
||||||
const SUBANIM_0A
|
const SUBANIM_0_BALL_POOF_ENEMY
|
||||||
const SUBANIM_0B
|
const SUBANIM_0_BALL_BLOCK
|
||||||
const SUBANIM_0C
|
const SUBANIM_1_FLAME_COLUMN_1
|
||||||
const SUBANIM_0D
|
const SUBANIM_1_FLAME_COLUMN_2
|
||||||
const SUBANIM_0E
|
const SUBANIM_1_FLAME_COLUMN_3
|
||||||
const SUBANIM_0F
|
const SUBANIM_0_SCRATCHES
|
||||||
const SUBANIM_10
|
const SUBANIM_1_TORNADO
|
||||||
const SUBANIM_11
|
const SUBANIM_1_FLAMES
|
||||||
const SUBANIM_12
|
const SUBANIM_0_HEART_1_MUSIC
|
||||||
const SUBANIM_13
|
const SUBANIM_1_BLOB_TOSS
|
||||||
const SUBANIM_14
|
const SUBANIM_1_BLOB_DRIP_ENEMY
|
||||||
const SUBANIM_15
|
const SUBANIM_1_SHOUT
|
||||||
const SUBANIM_16
|
const SUBANIM_0_SLICE
|
||||||
const SUBANIM_17
|
const SUBANIM_0_BIRDIES_CIRCLING_ENEMY
|
||||||
const SUBANIM_18
|
const SUBANIM_1_SWORDS_CIRCLING
|
||||||
const SUBANIM_19
|
const SUBANIM_1_CLOUD_TOSS
|
||||||
const SUBANIM_1A
|
const SUBANIM_0_WATER_COLUMNS
|
||||||
const SUBANIM_1B
|
const SUBANIM_1_SEED_TOSS
|
||||||
const SUBANIM_1C
|
const SUBANIM_1_SEED_LAND
|
||||||
const SUBANIM_1D
|
const SUBANIM_0_ROCKS_LIFT
|
||||||
const SUBANIM_1E
|
const SUBANIM_0_ROCKS_TOSS
|
||||||
const SUBANIM_1F
|
const SUBANIM_1_FLAME_BEAM
|
||||||
const SUBANIM_20
|
const SUBANIM_1_FLAME_STAR
|
||||||
const SUBANIM_21
|
const SUBANIM_0_CIRCLES_1_SQUARES_CENTERING_ENEMY
|
||||||
const SUBANIM_22
|
const SUBANIM_0_CIRCLE_1_SQUARE_TOSS_BACK
|
||||||
const SUBANIM_23
|
const SUBANIM_0_BIND
|
||||||
const SUBANIM_24
|
const SUBANIM_0_STATUS_PARALYZED
|
||||||
const SUBANIM_25
|
const SUBANIM_0_STATUS_CONFUSED
|
||||||
const SUBANIM_26
|
const SUBANIM_0_STATUS_CONFUSED_ENEMY
|
||||||
const SUBANIM_27
|
const SUBANIM_0_STATUS_POISONED
|
||||||
const SUBANIM_28
|
const SUBANIM_1_SAND
|
||||||
const SUBANIM_29
|
const SUBANIM_1_LIGHTNING_BALL
|
||||||
const SUBANIM_2A
|
const SUBANIM_0_SLICE_BOTH_SIDES
|
||||||
const SUBANIM_2B
|
const SUBANIM_1_LIGHTNING
|
||||||
const SUBANIM_2C
|
const SUBANIM_0_WATER_DROPLETS
|
||||||
const SUBANIM_2D
|
const SUBANIM_0_CIRCLES_CENTERING
|
||||||
const SUBANIM_2E
|
const SUBANIM_0_BEAM
|
||||||
const SUBANIM_2F
|
const SUBANIM_0_ICE_RISE
|
||||||
const SUBANIM_30
|
const SUBANIM_0_ROCKS_FALL_ENEMY
|
||||||
const SUBANIM_31
|
const SUBANIM_0_SOUND_WAVE
|
||||||
const SUBANIM_32
|
const SUBANIM_0_CIRCLE_1_SQUARE_HALF_TOSS ; unused
|
||||||
const SUBANIM_33
|
const SUBANIM_1_BARRIER
|
||||||
const SUBANIM_34
|
const SUBANIM_1_SELFDESTRUCT
|
||||||
const SUBANIM_35
|
const SUBANIM_0_WATER_BUBBLES
|
||||||
const SUBANIM_36
|
const SUBANIM_0_CIRCLES_FALLING
|
||||||
const SUBANIM_37
|
const SUBANIM_0_STRING_SHOT
|
||||||
const SUBANIM_38
|
const SUBANIM_0_ICE_FALL
|
||||||
const SUBANIM_39
|
const SUBANIM_0_CIRCLE_1_SQUARE_APPEARS ; unused
|
||||||
const SUBANIM_3A
|
const SUBANIM_0_STATUS_SLEEP
|
||||||
const SUBANIM_3B
|
const SUBANIM_0_STATUS_SLEEP_ENEMY
|
||||||
const SUBANIM_3C
|
const SUBANIM_0_WATER_1_FIRE_BARRIER ; unused
|
||||||
const SUBANIM_3D
|
const SUBANIM_0_WATER_1_FIRE_GEYSER ; unused
|
||||||
const SUBANIM_3E
|
const SUBANIM_1_STAR_BIG_TOSS
|
||||||
const SUBANIM_3F
|
const SUBANIM_1_STARS_SMALL_TOSS
|
||||||
const SUBANIM_40
|
const SUBANIM_1_MUSIC_CIRCLING_ENEMY
|
||||||
const SUBANIM_41
|
const SUBANIM_1_CIRCLE_BLACK_TOSS
|
||||||
const SUBANIM_42
|
const SUBANIM_1_EXPLOSION_SMALL_ENEMY
|
||||||
const SUBANIM_43
|
const SUBANIM_0_CIRCLE_1_SQUARE_CLOSING
|
||||||
const SUBANIM_44
|
const SUBANIM_1_LEAVES_TOSS
|
||||||
const SUBANIM_45
|
const SUBANIM_0_HORN_JAB_TWICE
|
||||||
const SUBANIM_46
|
const SUBANIM_0_HORN_JAB_THRICE
|
||||||
const SUBANIM_47
|
const SUBANIM_0_BALL_POOF
|
||||||
const SUBANIM_48
|
const SUBANIM_2_TRADE_BALL_DROP
|
||||||
const SUBANIM_49
|
const SUBANIM_2_TRADE_BALL_SHAKE
|
||||||
const SUBANIM_4A
|
const SUBANIM_2_TRADE_BALL_APPEAR
|
||||||
const SUBANIM_4B
|
const SUBANIM_2_TRADE_BALL_POOF
|
||||||
const SUBANIM_4C
|
const SUBANIM_0_EGG_SHAKING
|
||||||
const SUBANIM_4D
|
const SUBANIM_1_TRIANGLE_TOSS
|
||||||
const SUBANIM_4E
|
const SUBANIM_1_SPHERE_BIG
|
||||||
const SUBANIM_4F
|
const SUBANIM_1_SPHERE_BIG_RISE
|
||||||
const SUBANIM_50
|
const SUBANIM_1_SPHERE_BIG_FALL
|
||||||
const SUBANIM_51
|
const SUBANIM_0_SHELL
|
||||||
const SUBANIM_52
|
const SUBANIM_0_COIN_BOUNCE
|
||||||
const SUBANIM_53
|
const SUBANIM_0_SAFARI_ROCK
|
||||||
const SUBANIM_54
|
const SUBANIM_0_SAFARI_BAIT
|
||||||
const SUBANIM_55
|
const SUBANIM_0_STAR_HIGH
|
||||||
DEF NUM_SUBANIMS EQU const_value
|
DEF NUM_SUBANIMS EQU const_value
|
||||||
|
|
||||||
; types of subanimations
|
; types of subanimations
|
||||||
|
|
|
||||||
|
|
@ -191,14 +191,14 @@ DEF NUM_ATTACKS EQU const_value - 1
|
||||||
const SHOWPIC_ANIM
|
const SHOWPIC_ANIM
|
||||||
const STATUS_AFFECTED_ANIM
|
const STATUS_AFFECTED_ANIM
|
||||||
const ANIM_A8
|
const ANIM_A8
|
||||||
const ANIM_A9
|
const ENEMY_HUD_SHAKE_ANIM
|
||||||
const TRADE_BALL_DROP_ANIM
|
const TRADE_BALL_DROP_ANIM
|
||||||
const TRADE_BALL_SHAKE_ANIM
|
const TRADE_BALL_SHAKE_ANIM
|
||||||
const TRADE_BALL_TILT_ANIM
|
const TRADE_BALL_TILT_ANIM
|
||||||
const TRADE_BALL_POOF_ANIM
|
const TRADE_BALL_POOF_ANIM
|
||||||
const XSTATITEM_ANIM ; use X Attack/Defense/Speed/Special
|
const XSTATITEM_ANIM ; use X Attack/Defense/Speed/Special
|
||||||
const ANIM_AF
|
const XSTATITEM_DUPLICATE_ANIM
|
||||||
const ANIM_B0
|
const SHRINKING_SQUARE_ANIM
|
||||||
const ANIM_B1
|
const ANIM_B1
|
||||||
const ANIM_B2
|
const ANIM_B2
|
||||||
const ANIM_B3
|
const ANIM_B3
|
||||||
|
|
@ -210,18 +210,18 @@ DEF NUM_ATTACKS EQU const_value - 1
|
||||||
const ANIM_B9
|
const ANIM_B9
|
||||||
const BURN_PSN_ANIM ; Plays when a monster is burned or poisoned
|
const BURN_PSN_ANIM ; Plays when a monster is burned or poisoned
|
||||||
const ANIM_BB
|
const ANIM_BB
|
||||||
const ANIM_BC
|
const SLP_PLAYER_ANIM
|
||||||
const SLP_ANIM ; sleeping monster
|
const SLP_ANIM ; sleeping monster
|
||||||
const ANIM_BE
|
const CONF_PLAYER_ANIM
|
||||||
const CONF_ANIM ; confused monster
|
const CONF_ANIM ; confused monster
|
||||||
const ANIM_C0
|
const SLIDE_DOWN_ANIM
|
||||||
const TOSS_ANIM ; toss Poké Ball
|
const TOSS_ANIM ; toss Poké Ball
|
||||||
const SHAKE_ANIM ; shaking Poké Ball when catching monster
|
const SHAKE_ANIM ; shaking Poké Ball when catching monster
|
||||||
const POOF_ANIM ; puff of smoke
|
const POOF_ANIM ; puff of smoke
|
||||||
const BLOCKBALL_ANIM ; trainer knocks away Poké Ball
|
const BLOCKBALL_ANIM ; trainer knocks away Poké Ball
|
||||||
const GREATTOSS_ANIM ; toss Great Ball
|
const GREATTOSS_ANIM ; toss Great Ball
|
||||||
const ULTRATOSS_ANIM ; toss Ultra Ball or Master Ball
|
const ULTRATOSS_ANIM ; toss Ultra Ball or Master Ball
|
||||||
const ANIM_C7
|
const SHAKE_SCREEN_ANIM
|
||||||
const HIDEPIC_ANIM ; monster disappears
|
const HIDEPIC_ANIM ; monster disappears
|
||||||
const ROCK_ANIM ; throw rock
|
const ROCK_ANIM ; throw rock
|
||||||
const BAIT_ANIM ; throw bait
|
const BAIT_ANIM ; throw bait
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ DEF BASE_TMHM rb (NUM_TM_HM + 7) / 8
|
||||||
rb_skip
|
rb_skip
|
||||||
DEF BASE_DATA_SIZE EQU _RS
|
DEF BASE_DATA_SIZE EQU _RS
|
||||||
|
|
||||||
; party_struct members (see macros/wram.asm)
|
; party_struct members (see macros/ram.asm)
|
||||||
rsreset
|
rsreset
|
||||||
DEF MON_SPECIES rb
|
DEF MON_SPECIES rb
|
||||||
DEF MON_HP rw
|
DEF MON_HP rw
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ DEF SLOTS_SOMEONESKEYS EQU $ff
|
||||||
const_def
|
const_def
|
||||||
const TRADE_FOR_TERRY
|
const TRADE_FOR_TERRY
|
||||||
const TRADE_FOR_MARCEL
|
const TRADE_FOR_MARCEL
|
||||||
const TRADE_FOR_CHIKUCHIKU
|
const TRADE_FOR_CHIKUCHIKU ; unused
|
||||||
const TRADE_FOR_SAILOR
|
const TRADE_FOR_SAILOR
|
||||||
const TRADE_FOR_DUX
|
const TRADE_FOR_DUX
|
||||||
const TRADE_FOR_MARC
|
const TRADE_FOR_MARC
|
||||||
|
|
@ -57,7 +57,7 @@ DEF NUM_NPC_TRADES EQU const_value
|
||||||
; InGameTradeTextPointers indexes (see engine/events/in_game_trades.asm)
|
; InGameTradeTextPointers indexes (see engine/events/in_game_trades.asm)
|
||||||
const_def
|
const_def
|
||||||
const TRADE_DIALOGSET_CASUAL
|
const TRADE_DIALOGSET_CASUAL
|
||||||
const TRADE_DIALOGSET_POLITE
|
const TRADE_DIALOGSET_EVOLUTION
|
||||||
const TRADE_DIALOGSET_HAPPY
|
const TRADE_DIALOGSET_HAPPY
|
||||||
const TRADE_DIALOGSET_SELF
|
const TRADE_DIALOGSET_SELF
|
||||||
const TRADE_DIALOGSET_REGION ; consistency with LGPE
|
const TRADE_DIALOGSET_REGION ; consistency with LGPE
|
||||||
|
|
|
||||||
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
|
||||||
|
|
@ -13,7 +13,9 @@ DEF PHYSICAL EQU const_value
|
||||||
const GHOST ; $08
|
const GHOST ; $08
|
||||||
const STEEL ; $09
|
const STEEL ; $09
|
||||||
|
|
||||||
|
DEF UNUSED_TYPES EQU const_value
|
||||||
const_next 20
|
const_next 20
|
||||||
|
DEF UNUSED_TYPES_END EQU const_value
|
||||||
|
|
||||||
DEF SPECIAL EQU const_value
|
DEF SPECIAL EQU const_value
|
||||||
const FIRE ; $14
|
const FIRE ; $14
|
||||||
|
|
|
||||||
|
|
@ -1,91 +1,91 @@
|
||||||
SubanimationPointers:
|
SubanimationPointers:
|
||||||
table_width 2, SubanimationPointers
|
table_width 2, SubanimationPointers
|
||||||
dw Subanimation00
|
dw Subanim_0Star
|
||||||
dw Subanimation01
|
dw Subanim_0StarTwice
|
||||||
dw Subanimation02
|
dw Subanim_0StarThrice
|
||||||
dw Subanimation03
|
dw Subanim_0StarDescending
|
||||||
dw Subanimation04
|
dw Subanim_1StarBigMoving
|
||||||
dw Subanimation05
|
dw Subanim_1StarBig
|
||||||
dw Subanimation06
|
dw Subanim_0BallTossHigh
|
||||||
dw Subanimation07
|
dw Subanim_0BallTossMiddle
|
||||||
dw Subanimation08
|
dw Subanim_0BallTossLow
|
||||||
dw Subanimation09
|
dw Subanim_0BallShakeEnemy
|
||||||
dw Subanimation0a
|
dw Subanim_0BallPoofEnemy
|
||||||
dw Subanimation0b
|
dw Subanim_0BallBlock
|
||||||
dw Subanimation0c
|
dw Subanim_1FlameColumn1
|
||||||
dw Subanimation0d
|
dw Subanim_1FlameColumn2
|
||||||
dw Subanimation0e
|
dw Subanim_1FlameColumn3
|
||||||
dw Subanimation0f
|
dw Subanim_0Scratches
|
||||||
dw Subanimation10
|
dw Subanim_1Tornado
|
||||||
dw Subanimation11
|
dw Subanim_1Flames
|
||||||
dw Subanimation12
|
dw Subanim_0Heart_1Music
|
||||||
dw Subanimation13
|
dw Subanim_1BlobToss
|
||||||
dw Subanimation14
|
dw Subanim_1BlobDripEnemy
|
||||||
dw Subanimation15
|
dw Subanim_1Shout
|
||||||
dw Subanimation16
|
dw Subanim_0Slice
|
||||||
dw Subanimation17
|
dw Subanim_0BirdiesCirclingEnemy
|
||||||
dw Subanimation18
|
dw Subanim_1SwordsCircling
|
||||||
dw Subanimation19
|
dw Subanim_1CloudToss
|
||||||
dw Subanimation1a
|
dw Subanim_0WaterColumns
|
||||||
dw Subanimation1b
|
dw Subanim_1SeedToss
|
||||||
dw Subanimation1c
|
dw Subanim_1SeedLand
|
||||||
dw Subanimation1d
|
dw Subanim_0RocksLift
|
||||||
dw Subanimation1e
|
dw Subanim_0RocksToss
|
||||||
dw Subanimation1f
|
dw Subanim_1FlameBeam
|
||||||
dw Subanimation20
|
dw Subanim_1FlameStar
|
||||||
dw Subanimation21
|
dw Subanim_0Circles_1Squares_CenteringEnemy
|
||||||
dw Subanimation22
|
dw Subanim_0Circle_1Square_TossBack
|
||||||
dw Subanimation23
|
dw Subanim_0Bind
|
||||||
dw Subanimation24
|
dw Subanim_0StatusParalyzed
|
||||||
dw Subanimation25
|
dw Subanim_0StatusConfused
|
||||||
dw Subanimation26
|
dw Subanim_0StatusConfusedEnemy
|
||||||
dw Subanimation27
|
dw Subanim_0StatusPoisoned
|
||||||
dw Subanimation28
|
dw Subanim_1Sand
|
||||||
dw Subanimation29
|
dw Subanim_1LightningBall
|
||||||
dw Subanimation2a
|
dw Subanim_0SliceBothSides
|
||||||
dw Subanimation2b
|
dw Subanim_1Lightning
|
||||||
dw Subanimation2c
|
dw Subanim_0WaterDroplets
|
||||||
dw Subanimation2d
|
dw Subanim_0CirclesCentering
|
||||||
dw Subanimation2e
|
dw Subanim_0Beam
|
||||||
dw Subanimation2f
|
dw Subanim_0IceRise
|
||||||
dw Subanimation30
|
dw Subanim_0RocksFallEnemy
|
||||||
dw Subanimation31
|
dw Subanim_0SoundWave
|
||||||
dw Subanimation32
|
dw Subanim_0Circle_1Square_HalfToss ; unused
|
||||||
dw Subanimation33
|
dw Subanim_1Barrier
|
||||||
dw Subanimation34
|
dw Subanim_1Selfdestruct
|
||||||
dw Subanimation35
|
dw Subanim_0WaterBubbles
|
||||||
dw Subanimation36
|
dw Subanim_0CirclesFalling
|
||||||
dw Subanimation37
|
dw Subanim_0StringShot
|
||||||
dw Subanimation38
|
dw Subanim_0IceFall
|
||||||
dw Subanimation39
|
dw Subanim_0Circle_1Square_Appears ; unused
|
||||||
dw Subanimation3a
|
dw Subanim_0StatusSleep
|
||||||
dw Subanimation3b
|
dw Subanim_0StatusSleepEnemy
|
||||||
dw Subanimation3c
|
dw Subanim_0Water_1Fire_Barrier ; unused
|
||||||
dw Subanimation3d
|
dw Subanim_0Water_1Fire_Geyser ; unused
|
||||||
dw Subanimation3e
|
dw Subanim_1StarBigToss
|
||||||
dw Subanimation3f
|
dw Subanim_1StarsSmallToss
|
||||||
dw Subanimation40
|
dw Subanim_1MusicCirclingEnemy
|
||||||
dw Subanimation41
|
dw Subanim_1CircleBlackToss
|
||||||
dw Subanimation42
|
dw Subanim_1ExplosionSmallEnemy
|
||||||
dw Subanimation43
|
dw Subanim_0Circle_1Square_Closing
|
||||||
dw Subanimation44
|
dw Subanim_1LeavesToss
|
||||||
dw Subanimation45
|
dw Subanim_0HornJabTwice
|
||||||
dw Subanimation46
|
dw Subanim_0HornJabThrice
|
||||||
dw Subanimation47
|
dw Subanim_0BallPoof
|
||||||
dw Subanimation48
|
dw Subanim_2TradeBallDrop
|
||||||
dw Subanimation49
|
dw Subanim_2TradeBallShake
|
||||||
dw Subanimation4a
|
dw Subanim_2TradeBallAppear
|
||||||
dw Subanimation4b
|
dw Subanim_2TradeBallPoof
|
||||||
dw Subanimation4c
|
dw Subanim_0EggShaking
|
||||||
dw Subanimation4d
|
dw Subanim_1TriangleToss
|
||||||
dw Subanimation4e
|
dw Subanim_1SphereBig
|
||||||
dw Subanimation4f
|
dw Subanim_1SphereBigRise
|
||||||
dw Subanimation50
|
dw Subanim_1SphereBigFall
|
||||||
dw Subanimation51
|
dw Subanim_0Shell
|
||||||
dw Subanimation52
|
dw Subanim_0CoinBounce
|
||||||
dw Subanimation53
|
dw Subanim_0SafariRock
|
||||||
dw Subanimation54
|
dw Subanim_0SafariBait
|
||||||
dw Subanimation55
|
dw Subanim_0StarHigh
|
||||||
assert_table_length NUM_SUBANIMS
|
assert_table_length NUM_SUBANIMS
|
||||||
|
|
||||||
; format:
|
; format:
|
||||||
|
|
@ -98,17 +98,17 @@ MACRO subanim
|
||||||
db (\1 << 5) | \2
|
db (\1 << 5) | \2
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
Subanimation04:
|
Subanim_1StarBigMoving:
|
||||||
subanim SUBANIMTYPE_HFLIP, 3
|
subanim SUBANIMTYPE_HFLIP, 3
|
||||||
db FRAMEBLOCK_02, BASECOORD_1A, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_02, BASECOORD_1A, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_02, BASECOORD_03, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_02, BASECOORD_03, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation05:
|
Subanim_1StarBig:
|
||||||
subanim SUBANIMTYPE_HFLIP, 1
|
subanim SUBANIMTYPE_HFLIP, 1
|
||||||
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation08:
|
Subanim_0BallTossLow:
|
||||||
subanim SUBANIMTYPE_NORMAL, 11
|
subanim SUBANIMTYPE_NORMAL, 11
|
||||||
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_44, 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_A1, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation07:
|
Subanim_0BallTossMiddle:
|
||||||
subanim SUBANIMTYPE_NORMAL, 11
|
subanim SUBANIMTYPE_NORMAL, 11
|
||||||
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_A2, 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_A6, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation06:
|
Subanim_0BallTossHigh:
|
||||||
subanim SUBANIMTYPE_NORMAL, 11
|
subanim SUBANIMTYPE_NORMAL, 11
|
||||||
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_A2, 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_A9, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation09:
|
Subanim_0BallShakeEnemy:
|
||||||
subanim SUBANIMTYPE_NORMAL, 4
|
subanim SUBANIMTYPE_NORMAL, 4
|
||||||
db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_04, BASECOORD_21, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_04, BASECOORD_21, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_05, BASECOORD_21, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_05, BASECOORD_21, FRAMEBLOCKMODE_04
|
||||||
|
|
||||||
Subanimation0a:
|
Subanim_0BallPoofEnemy:
|
||||||
subanim SUBANIMTYPE_HFLIP, 6
|
subanim SUBANIMTYPE_HFLIP, 6
|
||||||
db FRAMEBLOCK_06, BASECOORD_1B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_06, BASECOORD_1B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_07, 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
|
||||||
db FRAMEBLOCK_0A, BASECOORD_15, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0A, BASECOORD_15, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation0b:
|
Subanim_0BallBlock:
|
||||||
subanim SUBANIMTYPE_NORMAL, 4
|
subanim SUBANIMTYPE_NORMAL, 4
|
||||||
db FRAMEBLOCK_01, BASECOORD_2D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_2D, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_2F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_2F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_35, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_35, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_4D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_4D, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation55:
|
Subanim_0StarHigh:
|
||||||
subanim SUBANIMTYPE_HFLIP, 1
|
subanim SUBANIMTYPE_HFLIP, 1
|
||||||
db FRAMEBLOCK_01, BASECOORD_9D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_9D, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation11:
|
Subanim_1Flames:
|
||||||
subanim SUBANIMTYPE_HFLIP, 12
|
subanim SUBANIMTYPE_HFLIP, 12
|
||||||
db FRAMEBLOCK_0B, BASECOORD_26, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0B, BASECOORD_26, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_0C, 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_0B, BASECOORD_27, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_0C, BASECOORD_27, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_27, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation2b:
|
Subanim_1Lightning:
|
||||||
subanim SUBANIMTYPE_HFLIP, 11
|
subanim SUBANIMTYPE_HFLIP, 11
|
||||||
db FRAMEBLOCK_0D, BASECOORD_03, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_0D, BASECOORD_03, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_0E, 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
|
||||||
db FRAMEBLOCK_11, BASECOORD_1B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_11, BASECOORD_1B, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation2c:
|
Subanim_0WaterDroplets:
|
||||||
subanim SUBANIMTYPE_HFLIP, 12
|
subanim SUBANIMTYPE_HFLIP, 12
|
||||||
db FRAMEBLOCK_12, BASECOORD_01, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_12, BASECOORD_01, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_12, BASECOORD_0F, 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
|
||||||
db FRAMEBLOCK_16, BASECOORD_38, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_16, BASECOORD_38, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation12:
|
Subanim_0Heart_1Music:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 9
|
subanim SUBANIMTYPE_COORDFLIP, 9
|
||||||
db FRAMEBLOCK_17, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_17, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_17, BASECOORD_39, 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_3F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_17, BASECOORD_1F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_17, BASECOORD_1F, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation00:
|
Subanim_0Star:
|
||||||
subanim SUBANIMTYPE_HFLIP, 1
|
subanim SUBANIMTYPE_HFLIP, 1
|
||||||
db FRAMEBLOCK_01, BASECOORD_17, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_17, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation01:
|
Subanim_0StarTwice:
|
||||||
subanim SUBANIMTYPE_HFLIP, 2
|
subanim SUBANIMTYPE_HFLIP, 2
|
||||||
db FRAMEBLOCK_01, BASECOORD_0F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_0F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation02:
|
Subanim_0StarThrice:
|
||||||
subanim SUBANIMTYPE_HFLIP, 3
|
subanim SUBANIMTYPE_HFLIP, 3
|
||||||
db FRAMEBLOCK_01, BASECOORD_12, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_12, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_01, BASECOORD_15, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_15, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_01, BASECOORD_1C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_1C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation03:
|
Subanim_0StarDescending:
|
||||||
subanim SUBANIMTYPE_HFLIP, 4
|
subanim SUBANIMTYPE_HFLIP, 4
|
||||||
db FRAMEBLOCK_01, BASECOORD_0B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_0B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_01, BASECOORD_11, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_11, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_01, BASECOORD_18, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_18, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation0c:
|
Subanim_1FlameColumn1:
|
||||||
subanim SUBANIMTYPE_HFLIP, 3
|
subanim SUBANIMTYPE_HFLIP, 3
|
||||||
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation0d:
|
Subanim_1FlameColumn2:
|
||||||
subanim SUBANIMTYPE_HFLIP, 6
|
subanim SUBANIMTYPE_HFLIP, 6
|
||||||
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_0C, BASECOORD_15, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_15, FRAMEBLOCKMODE_00
|
||||||
|
|
@ -270,7 +270,7 @@ Subanimation0d:
|
||||||
db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_0C, BASECOORD_19, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_19, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation0e:
|
Subanim_1FlameColumn3:
|
||||||
subanim SUBANIMTYPE_HFLIP, 9
|
subanim SUBANIMTYPE_HFLIP, 9
|
||||||
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_0C, BASECOORD_15, 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_19, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_0C, BASECOORD_0C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_0C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation1f:
|
Subanim_1FlameBeam:
|
||||||
subanim SUBANIMTYPE_REVERSE, 5
|
subanim SUBANIMTYPE_REVERSE, 5
|
||||||
db FRAMEBLOCK_0C, BASECOORD_30, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_0C, BASECOORD_30, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_0C, BASECOORD_40, 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_42, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation2e:
|
Subanim_0Beam:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 14
|
subanim SUBANIMTYPE_HVFLIP, 14
|
||||||
db FRAMEBLOCK_18, BASECOORD_43, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_18, BASECOORD_43, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_75, BASECOORD_52, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_75, BASECOORD_52, FRAMEBLOCKMODE_04
|
||||||
|
|
@ -307,14 +307,14 @@ Subanimation2e:
|
||||||
db FRAMEBLOCK_1E, BASECOORD_43, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_1E, BASECOORD_43, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_75, BASECOORD_1B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_75, BASECOORD_1B, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation2f:
|
Subanim_0IceRise:
|
||||||
subanim SUBANIMTYPE_HFLIP, 4
|
subanim SUBANIMTYPE_HFLIP, 4
|
||||||
db FRAMEBLOCK_1F, BASECOORD_24, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_1F, BASECOORD_24, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_20, BASECOORD_20, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_20, BASECOORD_20, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_21, BASECOORD_1A, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_21, BASECOORD_1A, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_22, BASECOORD_15, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_22, BASECOORD_15, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation30:
|
Subanim_0RocksFallEnemy:
|
||||||
subanim SUBANIMTYPE_HFLIP, 18
|
subanim SUBANIMTYPE_HFLIP, 18
|
||||||
db FRAMEBLOCK_23, BASECOORD_00, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_23, BASECOORD_00, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_23, BASECOORD_02, 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
|
||||||
db FRAMEBLOCK_24, BASECOORD_28, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_24, BASECOORD_28, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation0f:
|
Subanim_0Scratches:
|
||||||
subanim SUBANIMTYPE_HFLIP, 12
|
subanim SUBANIMTYPE_HFLIP, 12
|
||||||
db FRAMEBLOCK_26, BASECOORD_0E, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_26, BASECOORD_0E, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_26, BASECOORD_16, 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_16, FRAMEBLOCKMODE_02
|
||||||
db FRAMEBLOCK_29, BASECOORD_1C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_29, BASECOORD_1C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation16:
|
Subanim_0Slice:
|
||||||
subanim SUBANIMTYPE_HFLIP, 12
|
subanim SUBANIMTYPE_HFLIP, 12
|
||||||
db FRAMEBLOCK_2A, BASECOORD_05, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2A, BASECOORD_05, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_2B, BASECOORD_05, FRAMEBLOCKMODE_02
|
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_02
|
||||||
db FRAMEBLOCK_2C, BASECOORD_00, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2C, BASECOORD_00, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation10:
|
Subanim_1Tornado:
|
||||||
subanim SUBANIMTYPE_REVERSE, 8
|
subanim SUBANIMTYPE_REVERSE, 8
|
||||||
db FRAMEBLOCK_2D, BASECOORD_44, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2D, BASECOORD_44, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_2E, BASECOORD_45, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2E, BASECOORD_45, FRAMEBLOCKMODE_00
|
||||||
|
|
@ -376,7 +376,7 @@ Subanimation10:
|
||||||
db FRAMEBLOCK_2D, BASECOORD_2F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2D, BASECOORD_2F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_2E, BASECOORD_1A, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2E, BASECOORD_1A, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation31:
|
Subanim_0SoundWave:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 10
|
subanim SUBANIMTYPE_HVFLIP, 10
|
||||||
db FRAMEBLOCK_2F, BASECOORD_46, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2F, BASECOORD_46, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_2F, BASECOORD_4A, 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_2E, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_2F, BASECOORD_51, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_2F, BASECOORD_51, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation13:
|
Subanim_1BlobToss:
|
||||||
subanim SUBANIMTYPE_REVERSE, 6
|
subanim SUBANIMTYPE_REVERSE, 6
|
||||||
db FRAMEBLOCK_30, BASECOORD_31, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_30, BASECOORD_31, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_30, BASECOORD_32, 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_0F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation14:
|
Subanim_1BlobDripEnemy:
|
||||||
subanim SUBANIMTYPE_HFLIP, 9
|
subanim SUBANIMTYPE_HFLIP, 9
|
||||||
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_03
|
||||||
|
|
@ -410,7 +410,7 @@ Subanimation14:
|
||||||
db FRAMEBLOCK_31, BASECOORD_22, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_31, BASECOORD_22, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_31, BASECOORD_27, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_31, BASECOORD_27, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation41:
|
Subanim_1CircleBlackToss:
|
||||||
subanim SUBANIMTYPE_REVERSE, 5
|
subanim SUBANIMTYPE_REVERSE, 5
|
||||||
db FRAMEBLOCK_03, BASECOORD_31, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_31, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_32, 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_0E, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_03, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_03, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation42:
|
Subanim_1ExplosionSmallEnemy:
|
||||||
subanim SUBANIMTYPE_HFLIP, 3
|
subanim SUBANIMTYPE_HFLIP, 3
|
||||||
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_5A, BASECOORD_08, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_5A, BASECOORD_08, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation15:
|
Subanim_1Shout:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 2
|
subanim SUBANIMTYPE_HVFLIP, 2
|
||||||
db FRAMEBLOCK_35, BASECOORD_52, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_35, BASECOORD_52, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_35, BASECOORD_53, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_35, BASECOORD_53, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation17:
|
Subanim_0BirdiesCirclingEnemy:
|
||||||
subanim SUBANIMTYPE_HFLIP, 4
|
subanim SUBANIMTYPE_HFLIP, 4
|
||||||
db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation18:
|
Subanim_1SwordsCircling:
|
||||||
subanim SUBANIMTYPE_ENEMY, 4
|
subanim SUBANIMTYPE_ENEMY, 4
|
||||||
db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation40:
|
Subanim_1MusicCirclingEnemy:
|
||||||
subanim SUBANIMTYPE_HFLIP, 6
|
subanim SUBANIMTYPE_HFLIP, 6
|
||||||
db FRAMEBLOCK_17, BASECOORD_54, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_17, BASECOORD_54, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_17, BASECOORD_55, 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_57, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_17, BASECOORD_13, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_17, BASECOORD_13, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation19:
|
Subanim_1CloudToss:
|
||||||
subanim SUBANIMTYPE_REVERSE, 12
|
subanim SUBANIMTYPE_REVERSE, 12
|
||||||
db FRAMEBLOCK_38, BASECOORD_31, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_38, BASECOORD_31, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_39, 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_38, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_39, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_39, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation1a:
|
Subanim_0WaterColumns:
|
||||||
subanim SUBANIMTYPE_HFLIP, 16
|
subanim SUBANIMTYPE_HFLIP, 16
|
||||||
db FRAMEBLOCK_3A, BASECOORD_08, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_3A, BASECOORD_08, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_3B, 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_3E, BASECOORD_0B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_3F, BASECOORD_0B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_3F, BASECOORD_0B, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation1b:
|
Subanim_1SeedToss:
|
||||||
subanim SUBANIMTYPE_REVERSE, 4
|
subanim SUBANIMTYPE_REVERSE, 4
|
||||||
db FRAMEBLOCK_40, BASECOORD_31, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_40, BASECOORD_31, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_40, BASECOORD_32, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_40, BASECOORD_32, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_40, BASECOORD_92, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_40, BASECOORD_92, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_40, BASECOORD_15, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_40, BASECOORD_15, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation1c:
|
Subanim_1SeedLand:
|
||||||
subanim SUBANIMTYPE_HFLIP, 3
|
subanim SUBANIMTYPE_HFLIP, 3
|
||||||
db FRAMEBLOCK_41, BASECOORD_58, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_41, BASECOORD_58, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_41, BASECOORD_59, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_41, BASECOORD_59, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_41, BASECOORD_21, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_41, BASECOORD_21, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation1d:
|
Subanim_0RocksLift:
|
||||||
subanim SUBANIMTYPE_ENEMY, 15
|
subanim SUBANIMTYPE_ENEMY, 15
|
||||||
db FRAMEBLOCK_24, BASECOORD_9A, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_24, BASECOORD_9A, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_23, BASECOORD_1B, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_23, BASECOORD_1B, FRAMEBLOCKMODE_02
|
||||||
|
|
@ -517,22 +517,22 @@ Subanimation1d:
|
||||||
db FRAMEBLOCK_25, BASECOORD_62, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_25, BASECOORD_62, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_25, BASECOORD_99, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_25, BASECOORD_99, FRAMEBLOCKMODE_03
|
||||||
|
|
||||||
Subanimation1e:
|
Subanim_0RocksToss:
|
||||||
subanim SUBANIMTYPE_NORMAL, 1
|
subanim SUBANIMTYPE_NORMAL, 1
|
||||||
db FRAMEBLOCK_25, BASECOORD_75, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_25, BASECOORD_75, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation20:
|
Subanim_1FlameStar:
|
||||||
subanim SUBANIMTYPE_HFLIP, 2
|
subanim SUBANIMTYPE_HFLIP, 2
|
||||||
db FRAMEBLOCK_42, BASECOORD_07, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_42, BASECOORD_07, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_43, BASECOORD_07, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_43, BASECOORD_07, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation21:
|
Subanim_0Circles_1Squares_CenteringEnemy:
|
||||||
subanim SUBANIMTYPE_HFLIP, 3
|
subanim SUBANIMTYPE_HFLIP, 3
|
||||||
db FRAMEBLOCK_44, BASECOORD_00, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_44, BASECOORD_00, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_45, BASECOORD_08, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_45, BASECOORD_08, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_46, BASECOORD_10, FRAMEBLOCKMODE_02
|
db FRAMEBLOCK_46, BASECOORD_10, FRAMEBLOCKMODE_02
|
||||||
|
|
||||||
Subanimation22:
|
Subanim_0Circle_1Square_TossBack:
|
||||||
subanim SUBANIMTYPE_REVERSE, 11
|
subanim SUBANIMTYPE_REVERSE, 11
|
||||||
db FRAMEBLOCK_47, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_47, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_47, BASECOORD_56, 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_89, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_47, BASECOORD_B0, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_47, BASECOORD_B0, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation2d:
|
Subanim_0CirclesCentering:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 6
|
subanim SUBANIMTYPE_COORDFLIP, 6 ; should be SUBANIMTYPE_HVFLIP
|
||||||
db FRAMEBLOCK_44, BASECOORD_64, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_44, BASECOORD_64, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_45, BASECOORD_65, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_45, BASECOORD_65, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_46, BASECOORD_66, 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
|
||||||
db FRAMEBLOCK_47, BASECOORD_66, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_47, BASECOORD_66, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation39:
|
Subanim_0Circle_1Square_Appears:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 1
|
subanim SUBANIMTYPE_COORDFLIP, 1
|
||||||
db FRAMEBLOCK_47, BASECOORD_67, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_47, BASECOORD_67, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation4e:
|
Subanim_1SphereBig:
|
||||||
subanim SUBANIMTYPE_HFLIP, 1
|
subanim SUBANIMTYPE_HFLIP, 1
|
||||||
db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_03
|
||||||
|
|
||||||
Subanimation4f:
|
Subanim_1SphereBigRise:
|
||||||
subanim SUBANIMTYPE_HFLIP, 7
|
subanim SUBANIMTYPE_HFLIP, 7
|
||||||
db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_71, BASECOORD_08, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_71, BASECOORD_08, FRAMEBLOCKMODE_00
|
||||||
|
|
@ -573,7 +573,7 @@ Subanimation4f:
|
||||||
db FRAMEBLOCK_73, BASECOORD_95, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_73, BASECOORD_95, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation50:
|
Subanim_1SphereBigFall:
|
||||||
subanim SUBANIMTYPE_HFLIP, 8
|
subanim SUBANIMTYPE_HFLIP, 8
|
||||||
db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_73, 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_0F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_71, BASECOORD_16, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_71, BASECOORD_16, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation29:
|
Subanim_1LightningBall:
|
||||||
subanim SUBANIMTYPE_HFLIP, 29
|
subanim SUBANIMTYPE_HFLIP, 29
|
||||||
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_0F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_0F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
|
||||||
|
|
@ -616,63 +616,63 @@ Subanimation29:
|
||||||
db FRAMEBLOCK_4D, BASECOORD_2A, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_4D, BASECOORD_2A, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_6B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_6B, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation2a:
|
Subanim_0SliceBothSides:
|
||||||
subanim SUBANIMTYPE_HFLIP, 4
|
subanim SUBANIMTYPE_HFLIP, 4
|
||||||
db FRAMEBLOCK_4E, BASECOORD_2B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_4E, BASECOORD_2B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_4F, 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
|
||||||
db FRAMEBLOCK_50, BASECOORD_2B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_50, BASECOORD_2B, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation23:
|
Subanim_0Bind:
|
||||||
subanim SUBANIMTYPE_HFLIP, 2
|
subanim SUBANIMTYPE_HFLIP, 2
|
||||||
db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation24:
|
Subanim_0StatusParalyzed:
|
||||||
subanim SUBANIMTYPE_ENEMY, 2
|
subanim SUBANIMTYPE_ENEMY, 2
|
||||||
db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation25:
|
Subanim_0StatusConfused:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 2
|
subanim SUBANIMTYPE_COORDFLIP, 2
|
||||||
db FRAMEBLOCK_52, BASECOORD_71, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_52, BASECOORD_71, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_52, BASECOORD_72, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_52, BASECOORD_72, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation26:
|
Subanim_0StatusConfusedEnemy:
|
||||||
subanim SUBANIMTYPE_NORMAL, 2
|
subanim SUBANIMTYPE_NORMAL, 2
|
||||||
db FRAMEBLOCK_52, BASECOORD_01, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_52, BASECOORD_01, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_52, BASECOORD_2C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_52, BASECOORD_2C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation3a:
|
Subanim_0StatusSleep:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 3
|
subanim SUBANIMTYPE_COORDFLIP, 3
|
||||||
db FRAMEBLOCK_53, BASECOORD_71, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_53, BASECOORD_71, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_53, BASECOORD_7F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_53, BASECOORD_7F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_53, BASECOORD_81, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_53, BASECOORD_81, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation3b:
|
Subanim_0StatusSleepEnemy:
|
||||||
subanim SUBANIMTYPE_NORMAL, 3
|
subanim SUBANIMTYPE_NORMAL, 3
|
||||||
db FRAMEBLOCK_53, BASECOORD_01, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_53, BASECOORD_01, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_53, BASECOORD_15, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_53, BASECOORD_15, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_53, BASECOORD_2C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_53, BASECOORD_2C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation27:
|
Subanim_0StatusPoisoned:
|
||||||
subanim SUBANIMTYPE_ENEMY, 2
|
subanim SUBANIMTYPE_ENEMY, 2
|
||||||
db FRAMEBLOCK_54, BASECOORD_01, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_54, BASECOORD_01, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_54, BASECOORD_2C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_54, BASECOORD_2C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation28:
|
Subanim_1Sand:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 3
|
subanim SUBANIMTYPE_HVFLIP, 3
|
||||||
db FRAMEBLOCK_55, BASECOORD_73, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_55, BASECOORD_73, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_56, BASECOORD_73, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_56, BASECOORD_73, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_57, BASECOORD_73, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_57, BASECOORD_73, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation32:
|
Subanim_0Circle_1Square_HalfToss:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 3
|
subanim SUBANIMTYPE_COORDFLIP, 3
|
||||||
db FRAMEBLOCK_47, BASECOORD_74, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_47, BASECOORD_74, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_47, BASECOORD_43, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_47, BASECOORD_43, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_47, BASECOORD_75, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_47, BASECOORD_75, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation33:
|
Subanim_1Barrier:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 6
|
subanim SUBANIMTYPE_HVFLIP, 6
|
||||||
db FRAMEBLOCK_58, BASECOORD_76, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_58, BASECOORD_76, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_34, 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_58, BASECOORD_76, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_34, BASECOORD_76, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_34, BASECOORD_76, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation3c:
|
Subanim_0Water_1Fire_Barrier:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 7
|
subanim SUBANIMTYPE_COORDFLIP, 7
|
||||||
db FRAMEBLOCK_59, BASECOORD_79, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_59, BASECOORD_79, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_59, BASECOORD_7B, 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_7C, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_59, BASECOORD_76, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_59, BASECOORD_76, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation3d:
|
Subanim_0Water_1Fire_Geyser:
|
||||||
subanim SUBANIMTYPE_NORMAL, 8
|
subanim SUBANIMTYPE_NORMAL, 8
|
||||||
db FRAMEBLOCK_3A, BASECOORD_4D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_3A, BASECOORD_4D, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_3B, 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_3E, BASECOORD_4D, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_3F, BASECOORD_4D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_3F, BASECOORD_4D, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation34:
|
Subanim_1Selfdestruct:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 21
|
subanim SUBANIMTYPE_HVFLIP, 21
|
||||||
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_7D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_7D, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_LARGE_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_LARGE_BLACK_CIRCLE, BASECOORD_82, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_5A, BASECOORD_82, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_5A, BASECOORD_82, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation35:
|
Subanim_0WaterBubbles:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 4
|
subanim SUBANIMTYPE_HVFLIP, 4
|
||||||
db FRAMEBLOCK_5B, BASECOORD_83, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_5B, BASECOORD_83, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_5C, BASECOORD_84, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_5C, BASECOORD_84, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_5D, BASECOORD_85, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_5D, BASECOORD_85, FRAMEBLOCKMODE_03
|
||||||
db FRAMEBLOCK_5E, BASECOORD_09, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_5E, BASECOORD_09, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation36:
|
Subanim_0CirclesFalling:
|
||||||
subanim SUBANIMTYPE_HFLIP, 8
|
subanim SUBANIMTYPE_HFLIP, 8
|
||||||
db FRAMEBLOCK_5F, BASECOORD_2A, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_5F, BASECOORD_2A, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_5F, BASECOORD_00, 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_2A, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_62, BASECOORD_00, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_62, BASECOORD_00, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation37:
|
Subanim_0StringShot:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 10
|
subanim SUBANIMTYPE_HVFLIP, 10
|
||||||
db FRAMEBLOCK_63, BASECOORD_89, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_63, BASECOORD_89, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_64, BASECOORD_75, 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_88, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_65, BASECOORD_1A, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_65, BASECOORD_1A, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation38:
|
Subanim_0IceFall:
|
||||||
subanim SUBANIMTYPE_HFLIP, 16
|
subanim SUBANIMTYPE_HFLIP, 16
|
||||||
db FRAMEBLOCK_66, BASECOORD_8A, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_66, BASECOORD_8A, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_66, BASECOORD_33, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_66, BASECOORD_33, FRAMEBLOCKMODE_00
|
||||||
|
|
@ -776,7 +776,7 @@ Subanimation38:
|
||||||
db FRAMEBLOCK_66, BASECOORD_1E, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_66, BASECOORD_1E, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_67, BASECOORD_29, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_67, BASECOORD_29, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation3e:
|
Subanim_1StarBigToss:
|
||||||
subanim SUBANIMTYPE_REVERSE, 18
|
subanim SUBANIMTYPE_REVERSE, 18
|
||||||
db FRAMEBLOCK_02, BASECOORD_31, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_02, BASECOORD_31, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_34, 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_34, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation3f:
|
Subanim_1StarsSmallToss:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 18
|
subanim SUBANIMTYPE_COORDFLIP, 18
|
||||||
db FRAMEBLOCK_68, BASECOORD_4B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_68, BASECOORD_4B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_68, BASECOORD_8C, 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_23, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_68, BASECOORD_1F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_68, BASECOORD_1F, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation44:
|
Subanim_1LeavesToss:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 12
|
subanim SUBANIMTYPE_HVFLIP, 12
|
||||||
db FRAMEBLOCK_69, BASECOORD_4B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_69, BASECOORD_4B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_69, BASECOORD_8C, 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_0C, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_69, BASECOORD_06, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_69, BASECOORD_06, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation43:
|
Subanim_0Circle_1Square_Closing:
|
||||||
subanim SUBANIMTYPE_ENEMY, 3
|
subanim SUBANIMTYPE_ENEMY, 3
|
||||||
db FRAMEBLOCK_6A, BASECOORD_07, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6A, BASECOORD_07, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6B, BASECOORD_0F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6B, BASECOORD_0F, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6C, BASECOORD_17, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6C, BASECOORD_17, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation45:
|
Subanim_0HornJabTwice:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 4
|
subanim SUBANIMTYPE_HVFLIP, 4
|
||||||
db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6D, BASECOORD_84, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6D, BASECOORD_84, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6D, BASECOORD_63, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6D, BASECOORD_63, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6D, BASECOORD_8C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6D, BASECOORD_8C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation46:
|
Subanim_0HornJabThrice:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 6
|
subanim SUBANIMTYPE_HVFLIP, 6
|
||||||
db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6D, BASECOORD_84, 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_0A, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6D, BASECOORD_89, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6D, BASECOORD_89, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation47:
|
Subanim_0BallPoof:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 3
|
subanim SUBANIMTYPE_HVFLIP, 3
|
||||||
db FRAMEBLOCK_06, BASECOORD_82, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_06, BASECOORD_82, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_07, BASECOORD_82, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_07, BASECOORD_82, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_08, BASECOORD_96, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_08, BASECOORD_96, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation48:
|
Subanim_2TradeBallDrop:
|
||||||
subanim SUBANIMTYPE_NORMAL, 6
|
subanim SUBANIMTYPE_NORMAL, 6
|
||||||
db FRAMEBLOCK_03, BASECOORD_41, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_03, BASECOORD_41, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
|
||||||
|
|
@ -870,24 +870,24 @@ Subanimation48:
|
||||||
db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
|
||||||
|
|
||||||
Subanimation49:
|
Subanim_2TradeBallShake:
|
||||||
subanim SUBANIMTYPE_NORMAL, 4
|
subanim SUBANIMTYPE_NORMAL, 4
|
||||||
db FRAMEBLOCK_04, BASECOORD_48, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_04, BASECOORD_48, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
|
db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
|
||||||
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
|
||||||
|
|
||||||
Subanimation4a:
|
Subanim_2TradeBallAppear:
|
||||||
subanim SUBANIMTYPE_NORMAL, 1
|
subanim SUBANIMTYPE_NORMAL, 1
|
||||||
db FRAMEBLOCK_04, BASECOORD_84, FRAMEBLOCKMODE_03
|
db FRAMEBLOCK_04, BASECOORD_84, FRAMEBLOCKMODE_03
|
||||||
|
|
||||||
Subanimation4b:
|
Subanim_2TradeBallPoof:
|
||||||
subanim SUBANIMTYPE_NORMAL, 3
|
subanim SUBANIMTYPE_NORMAL, 3
|
||||||
db FRAMEBLOCK_06, BASECOORD_72, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_06, BASECOORD_72, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_07, BASECOORD_72, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_07, BASECOORD_72, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_08, BASECOORD_72, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_08, BASECOORD_72, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation4c:
|
Subanim_0EggShaking:
|
||||||
subanim SUBANIMTYPE_COORDFLIP, 8
|
subanim SUBANIMTYPE_COORDFLIP, 8
|
||||||
db FRAMEBLOCK_6F, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6F, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6E, 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_70, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation4d:
|
Subanim_1TriangleToss:
|
||||||
subanim SUBANIMTYPE_HVFLIP, 6
|
subanim SUBANIMTYPE_HVFLIP, 6
|
||||||
db FRAMEBLOCK_32, BASECOORD_4B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_32, BASECOORD_4B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_33, BASECOORD_4F, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_33, BASECOORD_4F, FRAMEBLOCKMODE_00
|
||||||
|
|
@ -907,7 +907,7 @@ Subanimation4d:
|
||||||
db FRAMEBLOCK_32, BASECOORD_19, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_32, BASECOORD_19, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_33, BASECOORD_0D, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_33, BASECOORD_0D, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation51:
|
Subanim_0Shell:
|
||||||
subanim SUBANIMTYPE_ENEMY, 6
|
subanim SUBANIMTYPE_ENEMY, 6
|
||||||
db FRAMEBLOCK_76, BASECOORD_1B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_76, BASECOORD_1B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_34, 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_76, BASECOORD_1B, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_34, BASECOORD_1B, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_34, BASECOORD_1B, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation52:
|
Subanim_0CoinBounce:
|
||||||
subanim SUBANIMTYPE_HFLIP, 7
|
subanim SUBANIMTYPE_HFLIP, 7
|
||||||
db FRAMEBLOCK_77, BASECOORD_25, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_77, BASECOORD_25, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_77, BASECOORD_9B, 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_50, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_77, BASECOORD_8C, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_77, BASECOORD_8C, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation53:
|
Subanim_0SafariRock:
|
||||||
subanim SUBANIMTYPE_NORMAL, 12
|
subanim SUBANIMTYPE_NORMAL, 12
|
||||||
db FRAMEBLOCK_78, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_78, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_78, BASECOORD_A2, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_78, BASECOORD_A2, FRAMEBLOCKMODE_00
|
||||||
|
|
@ -941,7 +941,7 @@ Subanimation53:
|
||||||
db FRAMEBLOCK_78, BASECOORD_34, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_78, BASECOORD_34, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_01, BASECOORD_9E, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_01, BASECOORD_9E, FRAMEBLOCKMODE_00
|
||||||
|
|
||||||
Subanimation54:
|
Subanim_0SafariBait:
|
||||||
subanim SUBANIMTYPE_NORMAL, 11
|
subanim SUBANIMTYPE_NORMAL, 11
|
||||||
db FRAMEBLOCK_79, BASECOORD_30, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_79, BASECOORD_30, FRAMEBLOCKMODE_00
|
||||||
db FRAMEBLOCK_79, BASECOORD_A2, FRAMEBLOCKMODE_00
|
db FRAMEBLOCK_79, BASECOORD_A2, FRAMEBLOCKMODE_00
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@ TradeMons:
|
||||||
db POLIWHIRL, JYNX, TRADE_DIALOGSET_CASUAL, "LOLA@@@@@@@" ; Jynx trade replaces the useless Nidorino one
|
db POLIWHIRL, JYNX, TRADE_DIALOGSET_CASUAL, "LOLA@@@@@@@" ; Jynx trade replaces the useless Nidorino one
|
||||||
db ABRA, MR_MIME, TRADE_DIALOGSET_CASUAL, "MARCEL@@@@@"
|
db ABRA, MR_MIME, TRADE_DIALOGSET_CASUAL, "MARCEL@@@@@"
|
||||||
db BUTTERFREE, BEEDRILL, TRADE_DIALOGSET_HAPPY, "CHIKUCHIKU@"
|
db BUTTERFREE, BEEDRILL, TRADE_DIALOGSET_HAPPY, "CHIKUCHIKU@"
|
||||||
db HAUNTER, KADABRA, TRADE_DIALOGSET_POLITE, "HARRY@@@@@@" ; New trade to complete the 4 main trade evos
|
db HAUNTER, KADABRA, TRADE_DIALOGSET_EVOLUTION, "HARRY@@@@@@" ; New trade to complete the 4 main trade evos
|
||||||
db SPEAROW, FARFETCHD, TRADE_DIALOGSET_HAPPY, "DUX@@@@@@@@"
|
db SPEAROW, FARFETCHD, TRADE_DIALOGSET_HAPPY, "DUX@@@@@@@@"
|
||||||
db PERSIAN, TAUROS, TRADE_DIALOGSET_CASUAL, "JIMBO@@@@@@" ; From JP Blue
|
db PERSIAN, TAUROS, TRADE_DIALOGSET_CASUAL, "JIMBO@@@@@@" ; From JP Blue
|
||||||
db MACHOKE, HAUNTER, TRADE_DIALOGSET_POLITE, "MICHELLE@@@" ; From JP Blue
|
db MACHOKE, HAUNTER, TRADE_DIALOGSET_EVOLUTION, "MICHELLE@@@" ; From JP Blue
|
||||||
db KADABRA, GRAVELER, TRADE_DIALOGSET_POLITE, "JENNY@@@@@@" ; From JP Blue
|
db KADABRA, GRAVELER, TRADE_DIALOGSET_EVOLUTION, "JENNY@@@@@@" ; From JP Blue
|
||||||
db VENONAT, TANGELA, TRADE_DIALOGSET_HAPPY, "CRINKLES@@@"
|
db VENONAT, TANGELA, TRADE_DIALOGSET_HAPPY, "CRINKLES@@@"
|
||||||
db CUBONE, MACHOKE, TRADE_DIALOGSET_HAPPY, "RICKY@@@@@@" ; From Yellow
|
db CUBONE, MACHOKE, TRADE_DIALOGSET_HAPPY, "RICKY@@@@@@" ; From Yellow
|
||||||
db NO_MON, NO_MON, TRADE_DIALOGSET_SELF, "Unseen@@@@@" ; Celadon Uni Trader
|
db NO_MON, NO_MON, TRADE_DIALOGSET_SELF, "Unseen@@@@@" ; Celadon Uni Trader
|
||||||
|
|
|
||||||
|
|
@ -1,74 +1,72 @@
|
||||||
|
; Valid sprite IDs for each outdoor map.
|
||||||
|
|
||||||
MapSpriteSets:
|
MapSpriteSets:
|
||||||
table_width 1, MapSpriteSets
|
table_width 1, MapSpriteSets
|
||||||
db $01 ; PALLET_TOWN
|
db SPRITESET_PALLET_VIRIDIAN ; PALLET_TOWN
|
||||||
db $01 ; VIRIDIAN_CITY
|
db SPRITESET_PALLET_VIRIDIAN ; VIRIDIAN_CITY
|
||||||
db $02 ; PEWTER_CITY
|
db SPRITESET_PEWTER_CERULEAN ; PEWTER_CITY
|
||||||
db $02 ; CERULEAN_CITY
|
db SPRITESET_PEWTER_CERULEAN ; CERULEAN_CITY
|
||||||
db $04 ; VERMILION_CITY
|
db SPRITESET_VERMILION ; VERMILION_CITY
|
||||||
db $03 ; LAVENDER_TOWN
|
db SPRITESET_LAVENDER ; LAVENDER_TOWN
|
||||||
db $05 ; CELADON_CITY
|
db SPRITESET_CELADON ; CELADON_CITY
|
||||||
db $05 ; CELADON_UNIVERSITY_OUTSIDE
|
db SPRITESET_CELADON ; CELADON_UNIVERSITY_OUTSIDE
|
||||||
db $0a ; FUCHSIA_CITY
|
db SPRITESET_FUCHSIA ; FUCHSIA_CITY
|
||||||
db $07 ; SAFFRON_CITY
|
db SPRITESET_SAFFRON ; SAFFRON_CITY
|
||||||
db $01 ; CINNABAR_ISLAND
|
db SPRITESET_PALLET_VIRIDIAN ; CINNABAR_ISLAND
|
||||||
db $06 ; INDIGO_PLATEAU
|
db SPRITESET_INDIGO ; INDIGO_PLATEAU
|
||||||
db $01 ; CITRINE_CITY
|
db SPRITESET_PALLET_VIRIDIAN ; CITRINE_CITY
|
||||||
db $01 ; ROUTE_1
|
db SPRITESET_PALLET_VIRIDIAN ; ROUTE_1
|
||||||
db $f1 ; ROUTE_2
|
db SPLITSET_ROUTE_2 ; ROUTE_2
|
||||||
db $02 ; ROUTE_3
|
db SPRITESET_PEWTER_CERULEAN ; ROUTE_3
|
||||||
db $02 ; ROUTE_4
|
db SPRITESET_PEWTER_CERULEAN ; ROUTE_4
|
||||||
db $f9 ; ROUTE_5
|
db SPLITSET_ROUTE_5 ; ROUTE_5
|
||||||
db $fa ; ROUTE_6
|
db SPLITSET_ROUTE_6 ; ROUTE_6
|
||||||
db $fb ; ROUTE_7
|
db SPLITSET_ROUTE_7 ; ROUTE_7
|
||||||
db $fc ; ROUTE_8
|
db SPLITSET_ROUTE_8 ; ROUTE_8
|
||||||
db $02 ; ROUTE_9
|
db SPRITESET_PEWTER_CERULEAN ; ROUTE_9
|
||||||
db $f2 ; ROUTE_10
|
db SPLITSET_ROUTE_10 ; ROUTE_10
|
||||||
db $f3 ; ROUTE_11
|
db SPLITSET_ROUTE_11 ; ROUTE_11
|
||||||
db $f4 ; ROUTE_12
|
db SPLITSET_ROUTE_12 ; ROUTE_12
|
||||||
db $08 ; ROUTE_13
|
db SPRITESET_SILENCE_BRIDGE ; ROUTE_13
|
||||||
db $08 ; ROUTE_14
|
db SPRITESET_SILENCE_BRIDGE ; ROUTE_14
|
||||||
db $f5 ; ROUTE_15
|
db SPLITSET_ROUTE_15 ; ROUTE_15
|
||||||
db $f6 ; ROUTE_16
|
db SPLITSET_ROUTE_16 ; ROUTE_16
|
||||||
db $09 ; ROUTE_17
|
db SPRITESET_CYCLING_ROAD ; ROUTE_17
|
||||||
db $f7 ; ROUTE_18
|
db SPLITSET_ROUTE_18 ; ROUTE_18
|
||||||
db $0a ; ROUTE_19
|
db SPRITESET_FUCHSIA ; ROUTE_19
|
||||||
db $f8 ; ROUTE_20
|
db SPLITSET_ROUTE_20 ; ROUTE_20
|
||||||
db $01 ; ROUTE_21
|
db SPRITESET_PALLET_VIRIDIAN ; ROUTE_21
|
||||||
db $01 ; ROUTE_22
|
db SPRITESET_PALLET_VIRIDIAN ; ROUTE_22
|
||||||
db $06 ; ROUTE_23
|
db SPRITESET_INDIGO ; ROUTE_23
|
||||||
db $02 ; ROUTE_24
|
db SPRITESET_PEWTER_CERULEAN ; ROUTE_24
|
||||||
db $02 ; ROUTE_25
|
db SPRITESET_PEWTER_CERULEAN ; ROUTE_25
|
||||||
assert_table_length FIRST_INDOOR_MAP
|
assert_table_length FIRST_INDOOR_MAP
|
||||||
|
|
||||||
DEF EAST_WEST EQU 1
|
|
||||||
DEF NORTH_SOUTH EQU 2
|
|
||||||
|
|
||||||
; Format:
|
; Format:
|
||||||
; 00: determines whether the map is split EAST_WEST or NORTH_SOUTH
|
; #1: whether the map is split EAST_WEST or NORTH_SOUTH
|
||||||
; 01: coordinate of dividing line
|
; #2: coordinate of dividing line
|
||||||
; 02: sprite set ID if in the West or North side
|
; #3: sprite set ID if on the west or north side
|
||||||
; 03: sprite set ID if in the East or South side
|
; #4: sprite set ID if on the east or south side
|
||||||
SplitMapSpriteSets:
|
SplitMapSpriteSets:
|
||||||
db NORTH_SOUTH, 37, $02, $01 ; $f1
|
table_width 4, SplitMapSpriteSets
|
||||||
db NORTH_SOUTH, 50, $02, $03 ; $f2
|
db NORTH_SOUTH, 37, SPRITESET_PEWTER_CERULEAN, SPRITESET_PALLET_VIRIDIAN ; SPLITSET_ROUTE_2
|
||||||
db EAST_WEST, 57, $04, $08 ; $f3
|
db NORTH_SOUTH, 50, SPRITESET_PEWTER_CERULEAN, SPRITESET_LAVENDER ; SPLITSET_ROUTE_10
|
||||||
db NORTH_SOUTH, 21, $03, $08 ; $f4
|
db EAST_WEST, 57, SPRITESET_VERMILION, SPRITESET_SILENCE_BRIDGE ; SPLITSET_ROUTE_11
|
||||||
db EAST_WEST, 8, $0A, $08 ; $f5
|
db NORTH_SOUTH, 21, SPRITESET_LAVENDER, SPRITESET_SILENCE_BRIDGE ; SPLITSET_ROUTE_12
|
||||||
db EAST_WEST, 24, $09, $05 ; $f6
|
db EAST_WEST, 8, SPRITESET_FUCHSIA, SPRITESET_SILENCE_BRIDGE ; SPLITSET_ROUTE_15
|
||||||
db EAST_WEST, 34, $09, $0A ; $f7
|
db EAST_WEST, 24, SPRITESET_CYCLING_ROAD, SPRITESET_CELADON ; SPLITSET_ROUTE_16
|
||||||
db EAST_WEST, 53, $01, $0A ; $f8
|
db EAST_WEST, 34, SPRITESET_CYCLING_ROAD, SPRITESET_FUCHSIA ; SPLITSET_ROUTE_18
|
||||||
db NORTH_SOUTH, 33, $02, $07 ; $f9
|
db EAST_WEST, 53, SPRITESET_PALLET_VIRIDIAN, SPRITESET_FUCHSIA ; SPLITSET_ROUTE_20
|
||||||
db NORTH_SOUTH, 2, $07, $04 ; $fa
|
db NORTH_SOUTH, 33, SPRITESET_PEWTER_CERULEAN, SPRITESET_SAFFRON ; SPLITSET_ROUTE_5
|
||||||
db EAST_WEST, 17, $05, $07 ; $fb
|
db NORTH_SOUTH, 2, SPRITESET_SAFFRON, SPRITESET_VERMILION ; SPLITSET_ROUTE_6
|
||||||
db EAST_WEST, 3, $07, $03 ; $fc
|
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:
|
SpriteSets:
|
||||||
|
table_width SPRITE_SET_LENGTH, SpriteSets
|
||||||
|
|
||||||
; each sprite set has 9 walking sprites and 2 still sprites
|
; SPRITESET_PALLET_VIRIDIAN
|
||||||
DEF SPRITE_SET_LENGTH EQU 9 + 2
|
|
||||||
|
|
||||||
; sprite set $01 - Viridian
|
|
||||||
table_width 1
|
|
||||||
db SPRITE_BLUE
|
db SPRITE_BLUE
|
||||||
db SPRITE_YOUNGSTER
|
db SPRITE_YOUNGSTER
|
||||||
db SPRITE_GIRL
|
db SPRITE_GIRL
|
||||||
|
|
@ -80,10 +78,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_SWIMMER
|
db SPRITE_SWIMMER
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_GAMBLER_ASLEEP
|
db SPRITE_GAMBLER_ASLEEP
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $02 - Cerulean
|
; SPRITESET_PEWTER_CERULEAN
|
||||||
table_width 1
|
|
||||||
db SPRITE_YOUNGSTER
|
db SPRITE_YOUNGSTER
|
||||||
db SPRITE_ROCKET
|
db SPRITE_ROCKET
|
||||||
db SPRITE_SUPER_NERD
|
db SPRITE_SUPER_NERD
|
||||||
|
|
@ -95,10 +91,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_COOLTRAINER_M
|
db SPRITE_COOLTRAINER_M
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $03 - Lavender Town
|
; SPRITESET_LAVENDER
|
||||||
table_width 1
|
|
||||||
db SPRITE_LITTLE_GIRL
|
db SPRITE_LITTLE_GIRL
|
||||||
db SPRITE_GIRL
|
db SPRITE_GIRL
|
||||||
db SPRITE_SUPER_NERD
|
db SPRITE_SUPER_NERD
|
||||||
|
|
@ -110,10 +104,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_GUARD
|
db SPRITE_GUARD
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $04 - Vermillion City
|
; SPRITESET_VERMILION
|
||||||
table_width 1
|
|
||||||
db SPRITE_BEAUTY
|
db SPRITE_BEAUTY
|
||||||
db SPRITE_SUPER_NERD
|
db SPRITE_SUPER_NERD
|
||||||
db SPRITE_YOUNGSTER
|
db SPRITE_YOUNGSTER
|
||||||
|
|
@ -125,10 +117,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_COOLTRAINER_M
|
db SPRITE_COOLTRAINER_M
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $05 - Celadon City
|
; SPRITESET_CELADON
|
||||||
table_width 1
|
|
||||||
db SPRITE_LITTLE_GIRL
|
db SPRITE_LITTLE_GIRL
|
||||||
db SPRITE_COOLTRAINER_F ; Original: SPRITE_LITTLE_BOY
|
db SPRITE_COOLTRAINER_F ; Original: SPRITE_LITTLE_BOY
|
||||||
db SPRITE_GIRL
|
db SPRITE_GIRL
|
||||||
|
|
@ -140,10 +130,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_ROCKET
|
db SPRITE_ROCKET
|
||||||
db SPRITE_SEEL ; Original: SPRITE_POKE_BALL (static sprite)
|
db SPRITE_SEEL ; Original: SPRITE_POKE_BALL (static sprite)
|
||||||
db SPRITE_SNORLAX
|
db SPRITE_SNORLAX
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $06 - Indigo Plateau
|
; SPRITESET_INDIGO
|
||||||
table_width 1
|
|
||||||
db SPRITE_YOUNGSTER
|
db SPRITE_YOUNGSTER
|
||||||
db SPRITE_GYM_GUIDE
|
db SPRITE_GYM_GUIDE
|
||||||
db SPRITE_MONSTER
|
db SPRITE_MONSTER
|
||||||
|
|
@ -155,10 +143,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_GAMBLER
|
db SPRITE_GAMBLER
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $07 - Saffron
|
; SPRITESET_SAFFRON
|
||||||
table_width 1
|
|
||||||
db SPRITE_ROCKET
|
db SPRITE_ROCKET
|
||||||
db SPRITE_SCIENTIST
|
db SPRITE_SCIENTIST
|
||||||
db SPRITE_SILPH_WORKER
|
db SPRITE_SILPH_WORKER
|
||||||
|
|
@ -170,10 +156,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_MONSTER
|
db SPRITE_MONSTER
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
db SPRITE_FAKE_TREE ; fake tree, used to be unused sleeping gambler
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $08 - Silence Bridge
|
; SPRITESET_SILENCE_BRIDGE
|
||||||
table_width 1
|
|
||||||
db SPRITE_BIKER
|
db SPRITE_BIKER
|
||||||
db SPRITE_SUPER_NERD
|
db SPRITE_SUPER_NERD
|
||||||
db SPRITE_MIDDLE_AGED_MAN
|
db SPRITE_MIDDLE_AGED_MAN
|
||||||
|
|
@ -185,10 +169,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_MONSTER
|
db SPRITE_MONSTER
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_SNORLAX
|
db SPRITE_SNORLAX
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $09 - Cycling Road
|
; SPRITESET_CYCLING_ROAD
|
||||||
table_width 1
|
|
||||||
db SPRITE_BIKER
|
db SPRITE_BIKER
|
||||||
db SPRITE_COOLTRAINER_M
|
db SPRITE_COOLTRAINER_M
|
||||||
db SPRITE_SILPH_WORKER
|
db SPRITE_SILPH_WORKER
|
||||||
|
|
@ -200,10 +182,8 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_SUPER_NERD
|
db SPRITE_SUPER_NERD
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_SNORLAX
|
db SPRITE_SNORLAX
|
||||||
assert_table_length SPRITE_SET_LENGTH
|
|
||||||
|
|
||||||
; sprite set $0a - Fuschia
|
; SPRITESET_FUCHSIA
|
||||||
table_width 1
|
|
||||||
db SPRITE_BIRD
|
db SPRITE_BIRD
|
||||||
db SPRITE_COOLTRAINER_M
|
db SPRITE_COOLTRAINER_M
|
||||||
db SPRITE_FAIRY
|
db SPRITE_FAIRY
|
||||||
|
|
@ -215,4 +195,5 @@ DEF SPRITE_SET_LENGTH EQU 9 + 2
|
||||||
db SPRITE_YOUNGSTER
|
db SPRITE_YOUNGSTER
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_FOSSIL
|
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
|
|
@ -258,7 +258,7 @@ PokedexEntryPointers:
|
||||||
|
|
||||||
; string: species name
|
; string: species name
|
||||||
; height in feet, inches
|
; height in feet, inches
|
||||||
; weight in pounds
|
; weight in tenths of a pound
|
||||||
; text entry
|
; text entry
|
||||||
|
|
||||||
BulbasaurDexEntry:
|
BulbasaurDexEntry:
|
||||||
|
|
|
||||||
|
|
@ -1,52 +1,54 @@
|
||||||
TrainerNames::
|
TrainerNames::
|
||||||
db "YOUNGSTER@"
|
list_start TrainerNames
|
||||||
db "BUG CATCHER@"
|
li "YOUNGSTER"
|
||||||
db "LASS@"
|
li "BUG CATCHER"
|
||||||
db "SAILOR@"
|
li "LASS"
|
||||||
db "JR.TRAINER♂@"
|
li "SAILOR"
|
||||||
db "JR.TRAINER♀@"
|
li "JR.TRAINER♂"
|
||||||
db "POKéMANIAC@"
|
li "JR.TRAINER♀"
|
||||||
db "SUPER NERD@"
|
li "POKéMANIAC"
|
||||||
db "HIKER@"
|
li "SUPER NERD"
|
||||||
db "BIKER@"
|
li "HIKER"
|
||||||
db "BURGLAR@"
|
li "BIKER"
|
||||||
db "ENGINEER@"
|
li "BURGLAR"
|
||||||
db "FISHERMAN@"
|
li "ENGINEER"
|
||||||
db "SWIMMER@"
|
li "FISHERMAN"
|
||||||
db "CUE BALL@"
|
li "SWIMMER"
|
||||||
db "GAMBLER@"
|
li "CUE BALL"
|
||||||
db "BEAUTY@"
|
li "GAMBLER"
|
||||||
db "PSYCHIC@"
|
li "BEAUTY"
|
||||||
db "ROCKER@"
|
li "PSYCHIC"
|
||||||
db "JUGGLER@"
|
li "ROCKER"
|
||||||
db "TAMER@"
|
li "JUGGLER"
|
||||||
db "BIRD KEEPER@"
|
li "TAMER"
|
||||||
db "BLACKBELT@"
|
li "BIRD KEEPER"
|
||||||
db "RIVAL1@"
|
li "BLACKBELT"
|
||||||
db "PROF.OAK@"
|
li "RIVAL1"
|
||||||
db "CHIEF@"
|
li "PROF.OAK"
|
||||||
db "SCIENTIST@"
|
li "CHIEF"
|
||||||
db "GIOVANNI@"
|
li "SCIENTIST"
|
||||||
db "ROCKET@"
|
li "GIOVANNI"
|
||||||
db "COOLTRAINER♂@"
|
li "ROCKET"
|
||||||
db "COOLTRAINER♀@"
|
li "COOLTRAINER♂"
|
||||||
db "BRUNO@"
|
li "COOLTRAINER♀"
|
||||||
db "BROCK@"
|
li "BRUNO"
|
||||||
db "MISTY@"
|
li "BROCK"
|
||||||
db "LT.SURGE@"
|
li "MISTY"
|
||||||
db "ERIKA@"
|
li "LT.SURGE"
|
||||||
db "KOGA@"
|
li "ERIKA"
|
||||||
db "BLAINE@"
|
li "KOGA"
|
||||||
db "SABRINA@"
|
li "BLAINE"
|
||||||
db "GENTLEMAN@"
|
li "SABRINA"
|
||||||
db "RIVAL2@"
|
li "GENTLEMAN"
|
||||||
db "RIVAL3@"
|
li "RIVAL2"
|
||||||
db "LORELEI@"
|
li "RIVAL3"
|
||||||
db "CHANNELER@"
|
li "LORELEI"
|
||||||
db "AGATHA@"
|
li "CHANNELER"
|
||||||
db "LANCE@"
|
li "AGATHA"
|
||||||
db "YUJIROU@"
|
li "LANCE"
|
||||||
db "STUDENT@"
|
li "YUJIROU"
|
||||||
db "FIREFIGHTER@"
|
li "STUDENT"
|
||||||
db "JUNIOR@"
|
li "FIREFIGHTER"
|
||||||
db "JACK@"
|
li "JUNIOR"
|
||||||
|
li "JACK"
|
||||||
|
assert_list_length NUM_TRAINERS
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
TrainerDataPointers:
|
TrainerDataPointers:
|
||||||
|
table_width 2, TrainerDataPointers
|
||||||
dw YoungsterData
|
dw YoungsterData
|
||||||
dw BugCatcherData
|
dw BugCatcherData
|
||||||
dw LassData
|
dw LassData
|
||||||
|
|
@ -50,6 +51,7 @@ TrainerDataPointers:
|
||||||
dw FirefighterData
|
dw FirefighterData
|
||||||
dw JuniorData
|
dw JuniorData
|
||||||
dw JackData
|
dw JackData
|
||||||
|
assert_table_length NUM_TRAINERS
|
||||||
|
|
||||||
; if first byte != $FF, then
|
; if first byte != $FF, then
|
||||||
; first byte is level (of all pokemon on this team)
|
; first byte is level (of all pokemon on this team)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ TypeNames:
|
||||||
dw .Ghost
|
dw .Ghost
|
||||||
dw .Steel
|
dw .Steel
|
||||||
|
|
||||||
REPT FIRE - STEEL - 1
|
REPT UNUSED_TYPES_END - UNUSED_TYPES
|
||||||
dw .Normal
|
dw .Normal
|
||||||
ENDR
|
ENDR
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -249,7 +249,7 @@ PlayAnimation:
|
||||||
push af
|
push af
|
||||||
ld a, [wAnimPalette]
|
ld a, [wAnimPalette]
|
||||||
ldh [rOBP0], a
|
ldh [rOBP0], a
|
||||||
call LoadAnimationTileset
|
call LoadMoveAnimationTiles
|
||||||
vc_hook Reduce_move_anim_flashing_Mega_Punch_Self_Destruct_Explosion
|
vc_hook Reduce_move_anim_flashing_Mega_Punch_Self_Destruct_Explosion
|
||||||
call LoadSubanimation
|
call LoadSubanimation
|
||||||
call PlaySubanimation
|
call PlaySubanimation
|
||||||
|
|
@ -352,11 +352,11 @@ GetSubanimationTransform2:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; loads tile patterns for battle animations
|
; loads tile patterns for battle animations
|
||||||
LoadAnimationTileset:
|
LoadMoveAnimationTiles:
|
||||||
ld a, [wWhichBattleAnimTileset]
|
ld a, [wWhichBattleAnimTileset]
|
||||||
add a
|
add a
|
||||||
add a
|
add a
|
||||||
ld hl, AnimationTilesetPointers
|
ld hl, MoveAnimationTilesPointers
|
||||||
ld e, a
|
ld e, a
|
||||||
ld d, 0
|
ld d, 0
|
||||||
add hl, de
|
add hl, de
|
||||||
|
|
@ -367,7 +367,7 @@ LoadAnimationTileset:
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ld d, a ; de = address of tileset
|
ld d, a ; de = address of tileset
|
||||||
ld hl, vSprites tile $31
|
ld hl, vSprites tile $31
|
||||||
ld b, BANK(AnimationTileset1) ; ROM bank
|
ld b, BANK(MoveAnimationTiles0) ; ROM bank
|
||||||
ld a, [wTempTilesetNumTiles]
|
ld a, [wTempTilesetNumTiles]
|
||||||
ld c, a ; number of tiles
|
ld c, a ; number of tiles
|
||||||
jp CopyVideoData ; load tileset
|
jp CopyVideoData ; load tileset
|
||||||
|
|
@ -378,17 +378,18 @@ MACRO anim_tileset
|
||||||
db -1 ; padding
|
db -1 ; padding
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
AnimationTilesetPointers:
|
MoveAnimationTilesPointers:
|
||||||
; number of tiles, gfx pointer
|
; number of tiles, gfx pointer
|
||||||
anim_tileset 79, AnimationTileset1
|
anim_tileset 79, MoveAnimationTiles0
|
||||||
anim_tileset 79, AnimationTileset2
|
anim_tileset 79, MoveAnimationTiles1
|
||||||
anim_tileset 64, AnimationTileset1
|
anim_tileset 64, MoveAnimationTiles2
|
||||||
|
|
||||||
AnimationTileset1:
|
MoveAnimationTiles0:
|
||||||
INCBIN "gfx/battle/attack_anim_1.2bpp"
|
MoveAnimationTiles2:
|
||||||
|
INCBIN "gfx/battle/move_anim_0.2bpp"
|
||||||
|
|
||||||
AnimationTileset2:
|
MoveAnimationTiles1:
|
||||||
INCBIN "gfx/battle/attack_anim_2.2bpp"
|
INCBIN "gfx/battle/move_anim_1.2bpp"
|
||||||
|
|
||||||
SlotMachineTiles2:
|
SlotMachineTiles2:
|
||||||
INCBIN "gfx/slots/slots_2.2bpp"
|
INCBIN "gfx/slots/slots_2.2bpp"
|
||||||
|
|
@ -1109,7 +1110,7 @@ AnimationWaterDropletsEverywhere:
|
||||||
; in Surf/Mist/Toxic.
|
; in Surf/Mist/Toxic.
|
||||||
xor a
|
xor a
|
||||||
ld [wWhichBattleAnimTileset], a
|
ld [wWhichBattleAnimTileset], a
|
||||||
call LoadAnimationTileset
|
call LoadMoveAnimationTiles
|
||||||
ld d, 32
|
ld d, 32
|
||||||
ld a, -16
|
ld a, -16
|
||||||
ld [wBaseCoordX], a
|
ld [wBaseCoordX], a
|
||||||
|
|
@ -1628,7 +1629,7 @@ _AnimationShootBallsUpward:
|
||||||
push bc
|
push bc
|
||||||
xor a
|
xor a
|
||||||
ld [wWhichBattleAnimTileset], a
|
ld [wWhichBattleAnimTileset], a
|
||||||
call LoadAnimationTileset
|
call LoadMoveAnimationTiles
|
||||||
pop bc
|
pop bc
|
||||||
ld d, $7a ; ball tile
|
ld d, $7a ; ball tile
|
||||||
ld hl, wShadowOAM
|
ld hl, wShadowOAM
|
||||||
|
|
@ -2071,7 +2072,7 @@ InitMultipleObjectsOAM:
|
||||||
push bc
|
push bc
|
||||||
push de
|
push de
|
||||||
ld [wWhichBattleAnimTileset], a
|
ld [wWhichBattleAnimTileset], a
|
||||||
call LoadAnimationTileset
|
call LoadMoveAnimationTiles
|
||||||
pop de
|
pop de
|
||||||
pop bc
|
pop bc
|
||||||
xor a
|
xor a
|
||||||
|
|
|
||||||
|
|
@ -3353,7 +3353,7 @@ CheckPlayerStatusConditions:
|
||||||
; fast asleep
|
; fast asleep
|
||||||
xor a
|
xor a
|
||||||
ld [wAnimationType], a
|
ld [wAnimationType], a
|
||||||
ld a, SLP_ANIM - 1
|
ld a, SLP_PLAYER_ANIM
|
||||||
call PlayMoveAnimation
|
call PlayMoveAnimation
|
||||||
ld hl, FastAsleepText
|
ld hl, FastAsleepText
|
||||||
call PrintText
|
call PrintText
|
||||||
|
|
@ -3437,7 +3437,7 @@ CheckPlayerStatusConditions:
|
||||||
call PrintText
|
call PrintText
|
||||||
xor a
|
xor a
|
||||||
ld [wAnimationType], a
|
ld [wAnimationType], a
|
||||||
ld a, CONF_ANIM - 1
|
ld a, CONF_PLAYER_ANIM
|
||||||
call PlayMoveAnimation
|
call PlayMoveAnimation
|
||||||
call BattleRandom
|
call BattleRandom
|
||||||
cp 50 percent + 1 ; chance to hurt itself
|
cp 50 percent + 1 ; chance to hurt itself
|
||||||
|
|
|
||||||
|
|
@ -123,12 +123,12 @@ PoisonEffect:
|
||||||
dec de
|
dec de
|
||||||
ldh a, [hWhoseTurn]
|
ldh a, [hWhoseTurn]
|
||||||
and a
|
and a
|
||||||
ld b, ANIM_C7
|
ld b, SHAKE_SCREEN_ANIM
|
||||||
ld hl, wPlayerBattleStatus3
|
ld hl, wPlayerBattleStatus3
|
||||||
ld a, [de]
|
ld a, [de]
|
||||||
ld de, wPlayerToxicCounter
|
ld de, wPlayerToxicCounter
|
||||||
jr nz, .ok
|
jr nz, .ok
|
||||||
ld b, ANIM_A9
|
ld b, ENEMY_HUD_SHAKE_ANIM
|
||||||
ld hl, wEnemyBattleStatus3
|
ld hl, wEnemyBattleStatus3
|
||||||
ld de, wEnemyToxicCounter
|
ld de, wEnemyToxicCounter
|
||||||
.ok
|
.ok
|
||||||
|
|
@ -232,14 +232,14 @@ FreezeBurnParalyzeEffect:
|
||||||
ld a, 1 << PAR
|
ld a, 1 << PAR
|
||||||
ld [wEnemyMonStatus], a
|
ld [wEnemyMonStatus], a
|
||||||
call QuarterSpeedDueToParalysis ; quarter speed of affected mon
|
call QuarterSpeedDueToParalysis ; quarter speed of affected mon
|
||||||
ld a, ANIM_A9
|
ld a, ENEMY_HUD_SHAKE_ANIM
|
||||||
call PlayBattleAnimation
|
call PlayBattleAnimation
|
||||||
jp PrintMayNotAttackText ; print paralysis text
|
jp PrintMayNotAttackText ; print paralysis text
|
||||||
.burn1
|
.burn1
|
||||||
ld a, 1 << BRN
|
ld a, 1 << BRN
|
||||||
ld [wEnemyMonStatus], a
|
ld [wEnemyMonStatus], a
|
||||||
call HalveAttackDueToBurn ; halve attack of affected mon
|
call HalveAttackDueToBurn ; halve attack of affected mon
|
||||||
ld a, ANIM_A9
|
ld a, ENEMY_HUD_SHAKE_ANIM
|
||||||
call PlayBattleAnimation
|
call PlayBattleAnimation
|
||||||
ld hl, BurnedText
|
ld hl, BurnedText
|
||||||
jp PrintText
|
jp PrintText
|
||||||
|
|
@ -247,7 +247,7 @@ FreezeBurnParalyzeEffect:
|
||||||
call ClearHyperBeam ; resets hyper beam (recharge) condition from target
|
call ClearHyperBeam ; resets hyper beam (recharge) condition from target
|
||||||
ld a, 1 << FRZ
|
ld a, 1 << FRZ
|
||||||
ld [wEnemyMonStatus], a
|
ld [wEnemyMonStatus], a
|
||||||
ld a, ANIM_A9
|
ld a, ENEMY_HUD_SHAKE_ANIM
|
||||||
call PlayBattleAnimation
|
call PlayBattleAnimation
|
||||||
ld hl, FrozenText
|
ld hl, FrozenText
|
||||||
jp PrintText
|
jp PrintText
|
||||||
|
|
@ -802,7 +802,7 @@ ThrashPetalDanceEffect:
|
||||||
inc a
|
inc a
|
||||||
ld [de], a ; set thrash/petal dance counter to 2 or 3 at random
|
ld [de], a ; set thrash/petal dance counter to 2 or 3 at random
|
||||||
ldh a, [hWhoseTurn]
|
ldh a, [hWhoseTurn]
|
||||||
add ANIM_B0
|
add SHRINKING_SQUARE_ANIM
|
||||||
jp PlayBattleAnimation2
|
jp PlayBattleAnimation2
|
||||||
|
|
||||||
SwitchAndTeleportEffect:
|
SwitchAndTeleportEffect:
|
||||||
|
|
@ -1002,7 +1002,7 @@ ChargeEffect:
|
||||||
jr z, .chargeEffect
|
jr z, .chargeEffect
|
||||||
ld hl, wEnemyBattleStatus1
|
ld hl, wEnemyBattleStatus1
|
||||||
ld de, wEnemyMoveEffect
|
ld de, wEnemyMoveEffect
|
||||||
ld b, ANIM_AF
|
ld b, XSTATITEM_DUPLICATE_ANIM
|
||||||
.chargeEffect
|
.chargeEffect
|
||||||
set CHARGING_UP, [hl]
|
set CHARGING_UP, [hl]
|
||||||
ld a, [de]
|
ld a, [de]
|
||||||
|
|
@ -1016,7 +1016,7 @@ ChargeEffect:
|
||||||
cp DIG
|
cp DIG
|
||||||
jr nz, .notDigOrFly
|
jr nz, .notDigOrFly
|
||||||
set INVULNERABLE, [hl] ; mon is now invulnerable to typical attacks (fly/dig)
|
set INVULNERABLE, [hl] ; mon is now invulnerable to typical attacks (fly/dig)
|
||||||
ld b, ANIM_C0
|
ld b, SLIDE_DOWN_ANIM
|
||||||
.notDigOrFly
|
.notDigOrFly
|
||||||
xor a
|
xor a
|
||||||
ld [wAnimationType], a
|
ld [wAnimationType], a
|
||||||
|
|
|
||||||
|
|
@ -750,7 +750,7 @@ AIIncreaseStat:
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
push af
|
push af
|
||||||
push hl
|
push hl
|
||||||
ld a, ANIM_AF
|
ld a, XSTATITEM_DUPLICATE_ANIM
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
ld [hl], b
|
ld [hl], b
|
||||||
callfar StatModifierUpEffect
|
callfar StatModifierUpEffect
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,14 @@ DebugMenu:
|
||||||
IF DEF(_DEBUG)
|
IF DEF(_DEBUG)
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
|
||||||
ld hl, DebugPlayerName
|
; These debug names are used for TestBattle.
|
||||||
|
; StartNewGameDebug uses the debug names from PrepareOakSpeech.
|
||||||
|
ld hl, DebugBattlePlayerName
|
||||||
ld de, wPlayerName
|
ld de, wPlayerName
|
||||||
ld bc, NAME_LENGTH
|
ld bc, NAME_LENGTH
|
||||||
call CopyData
|
call CopyData
|
||||||
|
|
||||||
ld hl, DebugRivalName
|
ld hl, DebugBattleRivalName
|
||||||
ld de, wRivalName
|
ld de, wRivalName
|
||||||
ld bc, NAME_LENGTH
|
ld bc, NAME_LENGTH
|
||||||
call CopyData
|
call CopyData
|
||||||
|
|
@ -57,10 +59,10 @@ IF DEF(_DEBUG)
|
||||||
set 1, [hl]
|
set 1, [hl]
|
||||||
jp StartNewGameDebug
|
jp StartNewGameDebug
|
||||||
|
|
||||||
DebugPlayerName:
|
DebugBattlePlayerName:
|
||||||
db "Tom@"
|
db "Tom@"
|
||||||
|
|
||||||
DebugRivalName:
|
DebugBattleRivalName:
|
||||||
db "Juerry@"
|
db "Juerry@"
|
||||||
|
|
||||||
DebugMenuOptions:
|
DebugMenuOptions:
|
||||||
|
|
|
||||||
|
|
@ -309,6 +309,7 @@ LinkCanceledText:
|
||||||
StartNewGame:
|
StartNewGame:
|
||||||
ld hl, wd732
|
ld hl, wd732
|
||||||
res 1, [hl]
|
res 1, [hl]
|
||||||
|
; fallthrough
|
||||||
StartNewGameDebug:
|
StartNewGameDebug:
|
||||||
call OakSpeech
|
call OakSpeech
|
||||||
ld c, 20
|
ld c, 20
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
SetDefaultNames:
|
PrepareOakSpeech:
|
||||||
ld a, [wLetterPrintingDelayFlags]
|
ld a, [wLetterPrintingDelayFlags]
|
||||||
push af
|
push af
|
||||||
ld a, [wOptions]
|
ld a, [wOptions]
|
||||||
|
|
@ -22,11 +22,13 @@ SetDefaultNames:
|
||||||
ld a, [wOptionsInitialized]
|
ld a, [wOptionsInitialized]
|
||||||
and a
|
and a
|
||||||
call z, InitOptions
|
call z, InitOptions
|
||||||
ld hl, NintenText
|
; These debug names are used for StartNewGameDebug.
|
||||||
|
; TestBattle uses the debug names from DebugMenu.
|
||||||
|
ld hl, DebugNewGamePlayerName
|
||||||
ld de, wPlayerName
|
ld de, wPlayerName
|
||||||
ld bc, NAME_LENGTH
|
ld bc, NAME_LENGTH
|
||||||
call CopyData
|
call CopyData
|
||||||
ld hl, SonyText
|
ld hl, DebugNewGameRivalName
|
||||||
ld de, wRivalName
|
ld de, wRivalName
|
||||||
ld bc, NAME_LENGTH
|
ld bc, NAME_LENGTH
|
||||||
jp CopyData
|
jp CopyData
|
||||||
|
|
@ -40,7 +42,7 @@ OakSpeech:
|
||||||
call PlayMusic
|
call PlayMusic
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
call LoadTextBoxTilePatterns
|
call LoadTextBoxTilePatterns
|
||||||
call SetDefaultNames
|
call PrepareOakSpeech
|
||||||
predef InitPlayerData2
|
predef InitPlayerData2
|
||||||
ld hl, wNumBoxItems
|
ld hl, wNumBoxItems
|
||||||
ld a, POTION
|
ld a, POTION
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ LoadShootingStarGraphics:
|
||||||
ldh [rOBP0], a
|
ldh [rOBP0], a
|
||||||
ld a, $a4
|
ld a, $a4
|
||||||
ldh [rOBP1], a
|
ldh [rOBP1], a
|
||||||
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
|
ld hl, vChars1 tile $20
|
||||||
lb bc, BANK(AnimationTileset2), 1
|
lb bc, BANK(MoveAnimationTiles1), 1
|
||||||
call CopyVideoData
|
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
|
ld hl, vChars1 tile $21
|
||||||
lb bc, BANK(AnimationTileset2), 1
|
lb bc, BANK(MoveAnimationTiles1), 1
|
||||||
call CopyVideoData
|
call CopyVideoData
|
||||||
ld de, FallingStar
|
ld de, FallingStar
|
||||||
ld hl, vChars1 tile $22
|
ld hl, vChars1 tile $22
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,17 @@
|
||||||
; copy text of fixed length NAME_LENGTH (like player name, rival name, mon names, ...)
|
CopyDebugName:
|
||||||
CopyFixedLengthText:
|
|
||||||
ld bc, NAME_LENGTH
|
ld bc, NAME_LENGTH
|
||||||
jp CopyData
|
jp CopyData
|
||||||
|
|
||||||
SetDefaultNamesBeforeTitlescreen::
|
PrepareTitleScreen::
|
||||||
ld hl, NintenText
|
; These debug names are already copied later in PrepareOakSpeech.
|
||||||
|
; Removing the unused copies below has no apparent impact.
|
||||||
|
; CopyDebugName can also be safely deleted afterwards.
|
||||||
|
ld hl, DebugNewGamePlayerName
|
||||||
ld de, wPlayerName
|
ld de, wPlayerName
|
||||||
call CopyFixedLengthText
|
call CopyDebugName
|
||||||
ld hl, SonyText
|
ld hl, DebugNewGameRivalName
|
||||||
ld de, wRivalName
|
ld de, wRivalName
|
||||||
call CopyFixedLengthText
|
call CopyDebugName
|
||||||
xor a
|
xor a
|
||||||
ldh [hWY], a
|
ldh [hWY], a
|
||||||
ld [wLetterPrintingDelayFlags], a
|
ld [wLetterPrintingDelayFlags], a
|
||||||
|
|
@ -395,5 +397,8 @@ PrintGameVersionOnTitleScreen:
|
||||||
VersionOnTitleScreenText:
|
VersionOnTitleScreenText:
|
||||||
db $61,$62,$63,$64,$65,$66,$67,$68,"@" ; "Blue Version"
|
db $61,$62,$63,$64,$65,$66,$67,$68,"@" ; "Blue Version"
|
||||||
|
|
||||||
NintenText: db "NINTEN@"
|
DebugNewGamePlayerName:
|
||||||
SonyText: db "SONY@"
|
db "NINTEN@"
|
||||||
|
|
||||||
|
DebugNewGameRivalName:
|
||||||
|
db "SONY@"
|
||||||
|
|
|
||||||
|
|
@ -116,8 +116,8 @@ InitCutAnimOAM:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
LoadCutGrassAnimationTilePattern:
|
LoadCutGrassAnimationTilePattern:
|
||||||
ld de, AnimationTileset2 tile 6 ; tile depicting a leaf
|
ld de, MoveAnimationTiles1 tile 6 ; tile depicting a leaf
|
||||||
lb bc, BANK(AnimationTileset2), 1
|
lb bc, BANK(MoveAnimationTiles1), 1
|
||||||
jp CopyVideoData
|
jp CopyVideoData
|
||||||
|
|
||||||
WriteCutOrBoulderDustAnimationOAMBlock:
|
WriteCutOrBoulderDustAnimationOAMBlock:
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
InitMapSprites::
|
InitMapSprites::
|
||||||
call InitOutsideMapSprites
|
call InitOutsideMapSprites
|
||||||
ret c ; return if the map is an outside map (already handled by above call)
|
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)
|
||||||
ld hl, wSpritePlayerStateData1PictureID
|
ld hl, wSpritePlayerStateData1PictureID
|
||||||
ld de, wSpritePlayerStateData2PictureID
|
ld de, wSpritePlayerStateData2PictureID
|
||||||
; Loop to copy picture IDs from [x#SPRITESTATEDATA1_PICTUREID]
|
; Loop to copy picture IDs from [x#SPRITESTATEDATA1_PICTUREID]
|
||||||
|
|
@ -19,10 +19,10 @@ InitMapSprites::
|
||||||
.copyPictureIDLoop
|
.copyPictureIDLoop
|
||||||
ld a, [hl] ; a = [x#SPRITESTATEDATA1_PICTUREID]
|
ld a, [hl] ; a = [x#SPRITESTATEDATA1_PICTUREID]
|
||||||
ld [de], a ; [x#SPRITESTATEDATA2_PICTUREID] = a
|
ld [de], a ; [x#SPRITESTATEDATA2_PICTUREID] = a
|
||||||
ld a, $10
|
ld a, SPRITESTATEDATA1_LENGTH
|
||||||
add e
|
add e
|
||||||
ld e, a
|
ld e, a
|
||||||
ld a, $10
|
ld a, SPRITESTATEDATA1_LENGTH
|
||||||
add l
|
add l
|
||||||
ld l, a
|
ld l, a
|
||||||
jr nz, .copyPictureIDLoop
|
jr nz, .copyPictureIDLoop
|
||||||
|
|
@ -37,7 +37,7 @@ LoadMapSpriteTilePatterns:
|
||||||
ret
|
ret
|
||||||
.spritesExist
|
.spritesExist
|
||||||
ld c, a ; c = [wNumSprites]
|
ld c, a ; c = [wNumSprites]
|
||||||
ld b, $10 ; number of sprite slots
|
ld b, NUM_SPRITESTATEDATA_STRUCTS
|
||||||
ld hl, wSpritePlayerStateData2PictureID
|
ld hl, wSpritePlayerStateData2PictureID
|
||||||
xor a
|
xor a
|
||||||
ldh [hFourTileSpriteCount], a
|
ldh [hFourTileSpriteCount], a
|
||||||
|
|
@ -47,7 +47,7 @@ LoadMapSpriteTilePatterns:
|
||||||
ld a, [hli] ; a = [x#SPRITESTATEDATA2_PICTUREID]
|
ld a, [hli] ; a = [x#SPRITESTATEDATA2_PICTUREID]
|
||||||
ld [hld], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET] = a
|
ld [hld], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET] = a
|
||||||
ld a, l
|
ld a, l
|
||||||
add $10
|
add SPRITESTATEDATA1_LENGTH
|
||||||
ld l, a
|
ld l, a
|
||||||
dec b
|
dec b
|
||||||
jr nz, .copyPictureIDLoop
|
jr nz, .copyPictureIDLoop
|
||||||
|
|
@ -69,17 +69,17 @@ LoadMapSpriteTilePatterns:
|
||||||
cp [hl] ; do the picture ID's match?
|
cp [hl] ; do the picture ID's match?
|
||||||
jp z, .alreadyLoaded
|
jp z, .alreadyLoaded
|
||||||
ld a, e
|
ld a, e
|
||||||
add $10
|
add SPRITESTATEDATA1_LENGTH
|
||||||
ld e, a
|
ld e, a
|
||||||
jr .checkIfAlreadyLoadedLoop
|
jr .checkIfAlreadyLoadedLoop
|
||||||
.notAlreadyLoaded
|
.notAlreadyLoaded
|
||||||
ld de, wSpritePlayerStateData2ImageBaseOffset
|
ld de, wSpritePlayerStateData2ImageBaseOffset
|
||||||
ld b, $01
|
ld b, 1
|
||||||
; loop to find the highest tile pattern VRAM slot (among the first 10 slots) used by a previous sprite slot
|
; loop to find the highest tile pattern VRAM slot (among the first 10 slots) used by a previous sprite slot
|
||||||
; this is done in order to find the first free VRAM slot available
|
; this is done in order to find the first free VRAM slot available
|
||||||
.findNextVRAMSlotLoop
|
.findNextVRAMSlotLoop
|
||||||
ld a, e
|
ld a, e
|
||||||
add $10
|
add SPRITESTATEDATA1_LENGTH
|
||||||
ld e, a
|
ld e, a
|
||||||
ld a, l
|
ld a, l
|
||||||
cp e ; reached current slot?
|
cp e ; reached current slot?
|
||||||
|
|
@ -187,7 +187,7 @@ LoadMapSpriteTilePatterns:
|
||||||
jr nz, .loadWhileLCDOn
|
jr nz, .loadWhileLCDOn
|
||||||
pop af
|
pop af
|
||||||
pop hl
|
pop hl
|
||||||
set 3, h ; add $800 to hl
|
set 3, h ; add $80 tiles to hl
|
||||||
push hl
|
push hl
|
||||||
ld h, d
|
ld h, d
|
||||||
ld l, e
|
ld l, e
|
||||||
|
|
@ -200,7 +200,7 @@ LoadMapSpriteTilePatterns:
|
||||||
.loadWhileLCDOn
|
.loadWhileLCDOn
|
||||||
pop af
|
pop af
|
||||||
pop hl
|
pop hl
|
||||||
set 3, h ; add $800 to hl
|
set 3, h ; add $80 tiles to hl
|
||||||
ld b, a
|
ld b, a
|
||||||
swap c
|
swap c
|
||||||
call CopyVideoData ; load tile pattern data for sprite when walking
|
call CopyVideoData ; load tile pattern data for sprite when walking
|
||||||
|
|
@ -214,18 +214,18 @@ LoadMapSpriteTilePatterns:
|
||||||
ld [hl], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET] = a
|
ld [hl], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET] = a
|
||||||
.nextSpriteSlot
|
.nextSpriteSlot
|
||||||
ld a, l
|
ld a, l
|
||||||
add $10
|
add SPRITESTATEDATA2_LENGTH
|
||||||
ld l, a
|
ld l, a
|
||||||
dec c
|
dec c
|
||||||
jp nz, .loadTilePatternLoop
|
jp nz, .loadTilePatternLoop
|
||||||
ld hl, wSpritePlayerStateData2PictureID
|
ld hl, wSpritePlayerStateData2PictureID
|
||||||
ld b, $10
|
ld b, NUM_SPRITESTATEDATA_STRUCTS
|
||||||
; the pictures IDs stored at [x#SPRITESTATEDATA2_PICTUREID] are no longer needed,
|
; the pictures IDs stored at [x#SPRITESTATEDATA2_PICTUREID] are no longer needed,
|
||||||
; so zero them
|
; so zero them
|
||||||
.zeroStoredPictureIDLoop
|
.zeroStoredPictureIDLoop
|
||||||
xor a
|
xor a
|
||||||
ld [hl], a ; [x#SPRITESTATEDATA2_PICTUREID]
|
ld [hl], a ; [x#SPRITESTATEDATA2_PICTUREID]
|
||||||
ld a, $10
|
ld a, SPRITESTATEDATA2_LENGTH
|
||||||
add l
|
add l
|
||||||
ld l, a
|
ld l, a
|
||||||
dec b
|
dec b
|
||||||
|
|
@ -264,7 +264,7 @@ InitOutsideMapSprites:
|
||||||
inc h
|
inc h
|
||||||
.noCarry
|
.noCarry
|
||||||
ld a, [hl] ; a = spriteSetID
|
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?
|
||||||
call nc, GetSplitMapSpriteSetID ; if so, choose the appropriate one
|
call nc, GetSplitMapSpriteSetID ; if so, choose the appropriate one
|
||||||
ld b, a ; b = spriteSetID
|
ld b, a ; b = spriteSetID
|
||||||
ld a, [wFontLoaded]
|
ld a, [wFontLoaded]
|
||||||
|
|
@ -283,7 +283,7 @@ InitOutsideMapSprites:
|
||||||
sla a
|
sla a
|
||||||
sla a
|
sla a
|
||||||
add c
|
add c
|
||||||
add b ; a = (spriteSetID - 1) * 11
|
add b ; a = (spriteSetID - 1) * SPRITE_SET_LENGTH
|
||||||
ld de, SpriteSets
|
ld de, SpriteSets
|
||||||
; add a to de to get offset of sprite set
|
; add a to de to get offset of sprite set
|
||||||
add e
|
add e
|
||||||
|
|
@ -300,7 +300,7 @@ InitOutsideMapSprites:
|
||||||
; with picture IDs. This is done so that LoadMapSpriteTilePatterns will
|
; with picture IDs. This is done so that LoadMapSpriteTilePatterns will
|
||||||
; load tile patterns for all sprite pictures in the sprite set.
|
; load tile patterns for all sprite pictures in the sprite set.
|
||||||
.loadSpriteSetLoop
|
.loadSpriteSetLoop
|
||||||
ld a, $10
|
ld a, SPRITESTATEDATA2_LENGTH
|
||||||
add l
|
add l
|
||||||
ld l, a
|
ld l, a
|
||||||
ld a, [de] ; sprite picture ID from sprite set
|
ld a, [de] ; sprite picture ID from sprite set
|
||||||
|
|
@ -309,11 +309,11 @@ InitOutsideMapSprites:
|
||||||
inc de
|
inc de
|
||||||
inc bc
|
inc bc
|
||||||
ld a, l
|
ld a, l
|
||||||
cp $bd ; reached 11th sprite slot?
|
cp 11 * SPRITESTATEDATA2_LENGTH + SPRITESTATEDATA2_PICTUREID ; reached 11th sprite slot?
|
||||||
jr nz, .loadSpriteSetLoop
|
jr nz, .loadSpriteSetLoop
|
||||||
ld b, 4 ; 4 remaining sprite slots
|
ld b, 4 ; 4 remaining sprite slots
|
||||||
.zeroRemainingSlotsLoop ; loop to zero the picture ID's of the remaining sprite slots
|
.zeroRemainingSlotsLoop ; loop to zero the picture ID's of the remaining sprite slots
|
||||||
ld a, $10
|
ld a, SPRITESTATEDATA2_LENGTH
|
||||||
add l
|
add l
|
||||||
ld l, a
|
ld l, a
|
||||||
xor a
|
xor a
|
||||||
|
|
@ -322,20 +322,20 @@ InitOutsideMapSprites:
|
||||||
jr nz, .zeroRemainingSlotsLoop
|
jr nz, .zeroRemainingSlotsLoop
|
||||||
ld a, [wNumSprites]
|
ld a, [wNumSprites]
|
||||||
push af ; save number of sprites
|
push af ; save number of sprites
|
||||||
ld a, 11 ; 11 sprites in sprite set
|
ld a, SPRITE_SET_LENGTH ; 11 sprites in sprite set
|
||||||
ld [wNumSprites], a
|
ld [wNumSprites], a
|
||||||
call LoadMapSpriteTilePatterns
|
call LoadMapSpriteTilePatterns
|
||||||
pop af
|
pop af
|
||||||
ld [wNumSprites], a ; restore number of sprites
|
ld [wNumSprites], a ; restore number of sprites
|
||||||
ld hl, wSprite01StateData2ImageBaseOffset
|
ld hl, wSprite01StateData2ImageBaseOffset
|
||||||
ld b, $0f
|
ld b, NUM_SPRITESTATEDATA_STRUCTS - 1
|
||||||
; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the
|
; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the
|
||||||
; order of the map's sprite set, not the order of the actual sprites loaded
|
; order of the map's sprite set, not the order of the actual sprites loaded
|
||||||
; for the current map. So, they are not needed and are zeroed by this loop.
|
; for the current map. So, they are not needed and are zeroed by this loop.
|
||||||
.zeroVRAMSlotsLoop
|
.zeroVRAMSlotsLoop
|
||||||
xor a
|
xor a
|
||||||
ld [hl], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET]
|
ld [hl], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET]
|
||||||
ld a, $10
|
ld a, SPRITESTATEDATA2_LENGTH
|
||||||
add l
|
add l
|
||||||
ld l, a
|
ld l, a
|
||||||
dec b
|
dec b
|
||||||
|
|
@ -366,14 +366,14 @@ InitOutsideMapSprites:
|
||||||
inc c
|
inc c
|
||||||
.skipGettingPictureIndex
|
.skipGettingPictureIndex
|
||||||
push hl
|
push hl
|
||||||
inc h
|
inc h ; HIGH(wSpriteStateData2)
|
||||||
ld a, $0e
|
ld a, SPRITESTATEDATA2_IMAGEBASEOFFSET - SPRITESTATEDATA1_PICTUREID
|
||||||
add l
|
add l
|
||||||
ld l, a
|
ld l, a
|
||||||
ld a, c ; a = VRAM slot (zero if sprite slot is not used)
|
ld a, c ; a = VRAM slot (zero if sprite slot is not used)
|
||||||
ld [hl], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET]
|
ld [hl], a ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET]
|
||||||
pop hl
|
pop hl
|
||||||
ld a, $10
|
ld a, SPRITESTATEDATA1_LENGTH
|
||||||
add l
|
add l
|
||||||
ld l, a
|
ld l, a
|
||||||
and a
|
and a
|
||||||
|
|
@ -384,7 +384,7 @@ InitOutsideMapSprites:
|
||||||
; Chooses the correct sprite set ID depending on the player's position within
|
; Chooses the correct sprite set ID depending on the player's position within
|
||||||
; the map for maps with two sprite sets.
|
; the map for maps with two sprite sets.
|
||||||
GetSplitMapSpriteSetID:
|
GetSplitMapSpriteSetID:
|
||||||
cp $f8
|
cp SPLITSET_ROUTE_20
|
||||||
jr z, .route20
|
jr z, .route20
|
||||||
ld hl, SplitMapSpriteSets
|
ld hl, SplitMapSpriteSets
|
||||||
and $0f
|
and $0f
|
||||||
|
|
@ -396,8 +396,8 @@ GetSplitMapSpriteSetID:
|
||||||
jr nc, .noCarry
|
jr nc, .noCarry
|
||||||
inc h
|
inc h
|
||||||
.noCarry
|
.noCarry
|
||||||
ld a, [hli] ; determines whether the map is split East/West or North/South
|
ld a, [hli] ; whether the map is split EAST_WEST or NORTH_SOUTH
|
||||||
cp $01
|
cp EAST_WEST
|
||||||
ld a, [hli] ; position of dividing line
|
ld a, [hli] ; position of dividing line
|
||||||
ld b, a
|
ld b, a
|
||||||
jr z, .eastWestDivide
|
jr z, .eastWestDivide
|
||||||
|
|
@ -409,35 +409,39 @@ GetSplitMapSpriteSetID:
|
||||||
.compareCoord
|
.compareCoord
|
||||||
cp b
|
cp b
|
||||||
jr c, .loadSpriteSetID
|
jr c, .loadSpriteSetID
|
||||||
; if in the East side or South side
|
; if in the east side or south side
|
||||||
inc hl
|
inc hl
|
||||||
.loadSpriteSetID
|
.loadSpriteSetID
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ret
|
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
|
; 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.
|
; shape instead of the map simply being split horizontally or vertically.
|
||||||
.route20
|
.route20
|
||||||
ld hl, wXCoord
|
ld hl, wXCoord
|
||||||
|
; Use SPRITESET_PALLET_VIRIDIAN if X < 43
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $2b
|
cp 43
|
||||||
ld a, $01
|
ld a, SPRITESET_PALLET_VIRIDIAN
|
||||||
ret c
|
ret c
|
||||||
|
; Use SPRITESET_FUCHSIA if X >= 62.
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $3e
|
cp 62
|
||||||
ld a, $0a
|
ld a, SPRITESET_FUCHSIA
|
||||||
ret nc
|
ret nc
|
||||||
|
; If 55 <= X < 62, split Y at 8; else 43 <= X < 55, so split Y at 13
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $37
|
cp 55
|
||||||
ld b, $08
|
ld b, 8
|
||||||
jr nc, .next
|
jr nc, .next
|
||||||
ld b, $0d
|
ld b, 13
|
||||||
.next
|
.next
|
||||||
|
; Use SPRITESET_FUCHSIA if Y < split; else use SPRITESET_PALLET_VIRIDIAN
|
||||||
ld a, [wYCoord]
|
ld a, [wYCoord]
|
||||||
cp b
|
cp b
|
||||||
ld a, $0a
|
ld a, SPRITESET_FUCHSIA
|
||||||
ret c
|
ret c
|
||||||
ld a, $01
|
ld a, SPRITESET_PALLET_VIRIDIAN
|
||||||
ret
|
ret
|
||||||
|
|
||||||
INCLUDE "data/maps/sprite_sets.asm"
|
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 |
3
home.asm
3
home.asm
|
|
@ -1,6 +1,3 @@
|
||||||
INCLUDE "constants.asm"
|
|
||||||
|
|
||||||
|
|
||||||
SECTION "NULL", ROM0
|
SECTION "NULL", ROM0
|
||||||
NULL::
|
NULL::
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ DEF rLCDC_DEFAULT EQU %11100011
|
||||||
ld a, rLCDC_DEFAULT
|
ld a, rLCDC_DEFAULT
|
||||||
ldh [rLCDC], a
|
ldh [rLCDC], a
|
||||||
|
|
||||||
jp SetDefaultNamesBeforeTitlescreen
|
jp PrepareTitleScreen
|
||||||
|
|
||||||
ClearVram::
|
ClearVram::
|
||||||
ld hl, VRAM_Begin
|
ld hl, VRAM_Begin
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,19 @@
|
||||||
INCLUDE "charmap.asm"
|
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 "constants/hardware_constants.asm"
|
INCLUDE "constants/hardware_constants.asm"
|
||||||
INCLUDE "constants/oam_constants.asm"
|
INCLUDE "constants/oam_constants.asm"
|
||||||
|
|
@ -28,6 +41,7 @@ INCLUDE "constants/map_constants.asm"
|
||||||
INCLUDE "constants/map_data_constants.asm"
|
INCLUDE "constants/map_data_constants.asm"
|
||||||
INCLUDE "constants/map_object_constants.asm"
|
INCLUDE "constants/map_object_constants.asm"
|
||||||
INCLUDE "constants/hide_show_constants.asm"
|
INCLUDE "constants/hide_show_constants.asm"
|
||||||
|
INCLUDE "constants/sprite_set_constants.asm"
|
||||||
INCLUDE "constants/credits_constants.asm"
|
INCLUDE "constants/credits_constants.asm"
|
||||||
INCLUDE "constants/audio_constants.asm"
|
INCLUDE "constants/audio_constants.asm"
|
||||||
INCLUDE "constants/music_constants.asm"
|
INCLUDE "constants/music_constants.asm"
|
||||||
14
macros.asm
14
macros.asm
|
|
@ -1,14 +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"
|
|
||||||
3
main.asm
3
main.asm
|
|
@ -1,6 +1,3 @@
|
||||||
INCLUDE "constants.asm"
|
|
||||||
|
|
||||||
|
|
||||||
SECTION "bank1", ROMX
|
SECTION "bank1", ROMX
|
||||||
|
|
||||||
INCLUDE "data/sprites/facings.asm"
|
INCLUDE "data/sprites/facings.asm"
|
||||||
|
|
|
||||||
3
maps.asm
3
maps.asm
|
|
@ -1,6 +1,3 @@
|
||||||
INCLUDE "constants.asm"
|
|
||||||
|
|
||||||
|
|
||||||
SECTION "Maps 1", ROMX
|
SECTION "Maps 1", ROMX
|
||||||
|
|
||||||
INCLUDE "data/maps/headers/CeladonCity.asm"
|
INCLUDE "data/maps/headers/CeladonCity.asm"
|
||||||
|
|
|
||||||
4
ram.asm
4
ram.asm
|
|
@ -1,6 +1,4 @@
|
||||||
INCLUDE "constants.asm"
|
INCLUDE "macros/ram.asm"
|
||||||
|
|
||||||
INCLUDE "macros/wram.asm"
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDE "ram/vram.asm"
|
INCLUDE "ram/vram.asm"
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ wSpriteStateData1::
|
||||||
; - E
|
; - E
|
||||||
; - F
|
; - F
|
||||||
wSpritePlayerStateData1:: spritestatedata1 wSpritePlayerStateData1 ; player is struct 0
|
wSpritePlayerStateData1:: spritestatedata1 wSpritePlayerStateData1 ; player is struct 0
|
||||||
; wSprite02StateData1 - wSprite15StateData1
|
; wSprite01StateData1 - wSprite15StateData1
|
||||||
FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS
|
FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS
|
||||||
wSprite{02d:n}StateData1:: spritestatedata1 wSprite{02d:n}StateData1
|
wSprite{02d:n}StateData1:: spritestatedata1 wSprite{02d:n}StateData1
|
||||||
ENDR
|
ENDR
|
||||||
|
|
@ -127,7 +127,7 @@ wSpriteStateData2::
|
||||||
; - E: sprite image base offset (in video ram, player always has value 1, used to compute sprite image index)
|
; - E: sprite image base offset (in video ram, player always has value 1, used to compute sprite image index)
|
||||||
; - F
|
; - F
|
||||||
wSpritePlayerStateData2:: spritestatedata2 wSpritePlayerStateData2 ; player is struct 0
|
wSpritePlayerStateData2:: spritestatedata2 wSpritePlayerStateData2 ; player is struct 0
|
||||||
; wSprite02StateData2 - wSprite15StateData2
|
; wSprite01StateData2 - wSprite15StateData2
|
||||||
FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS
|
FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS
|
||||||
wSprite{02d:n}StateData2:: spritestatedata2 wSprite{02d:n}StateData2
|
wSprite{02d:n}StateData2:: spritestatedata2 wSprite{02d:n}StateData2
|
||||||
ENDR
|
ENDR
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,16 @@
|
||||||
MAJOR EQU 0
|
MAJOR EQU 0
|
||||||
MINOR EQU 5
|
MINOR EQU 6
|
||||||
PATCH EQU 2
|
PATCH EQU 0
|
||||||
|
|
||||||
MACRO wrong_rgbds
|
WRONG_RGBDS EQUS "fail \"pokered requires rgbds v0.6.0 or newer.\""
|
||||||
fail "pokered requires rgbds v0.5.2 or newer."
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
|
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
|
||||||
wrong_rgbds
|
WRONG_RGBDS
|
||||||
ELSE
|
ELSE
|
||||||
IF (__RGBDS_MAJOR__ < MAJOR) || \
|
IF (__RGBDS_MAJOR__ < MAJOR) || \
|
||||||
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ < MINOR) || \
|
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ < MINOR) || \
|
||||||
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH) || \
|
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH) || \
|
||||||
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ == PATCH && DEF(__RGBDS_RC__))
|
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ == PATCH && DEF(__RGBDS_RC__))
|
||||||
wrong_rgbds
|
WRONG_RGBDS
|
||||||
ENDC
|
ENDC
|
||||||
ENDC
|
ENDC
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ HallofFameRoomScript2:
|
||||||
ld [wLancesRoomCurScript], a
|
ld [wLancesRoomCurScript], a
|
||||||
ld [wHallOfFameCurScript], a
|
ld [wHallOfFameCurScript], a
|
||||||
; Elite 4 events
|
; Elite 4 events
|
||||||
ResetEventRange ELITE4_EVENTS_START, ELITE4_CHAMPION_EVENTS_END, 1
|
ResetEventRange INDIGO_PLATEAU_EVENTS_START, INDIGO_PLATEAU_EVENTS_END, 1
|
||||||
xor a
|
xor a
|
||||||
ld [wHallOfFameCurScript], a
|
ld [wHallOfFameCurScript], a
|
||||||
ld a, PALLET_TOWN
|
ld a, PALLET_TOWN
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ IndigoPlateauLobby_Script:
|
||||||
res 1, [hl]
|
res 1, [hl]
|
||||||
ret z
|
ret z
|
||||||
; Elite 4 events
|
; Elite 4 events
|
||||||
ResetEventRange ELITE4_EVENTS_START, EVENT_LANCES_ROOM_LOCK_DOOR
|
ResetEventRange INDIGO_PLATEAU_EVENTS_START, EVENT_LANCES_ROOM_LOCK_DOOR
|
||||||
ret
|
ret
|
||||||
|
|
||||||
IndigoPlateauLobby_TextPointers:
|
IndigoPlateauLobby_TextPointers:
|
||||||
|
|
|
||||||
3
text.asm
3
text.asm
|
|
@ -1,6 +1,3 @@
|
||||||
INCLUDE "constants.asm"
|
|
||||||
|
|
||||||
|
|
||||||
SECTION "Text 1", ROMX
|
SECTION "Text 1", ROMX
|
||||||
|
|
||||||
INCLUDE "data/text/text_1.asm"
|
INCLUDE "data/text/text_1.asm"
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@
|
||||||
#error Define USAGE_OPTS before including common.h!
|
#error Define USAGE_OPTS before including common.h!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define COUNTOF(...) (sizeof(__VA_ARGS__) / sizeof(*(__VA_ARGS__)))
|
||||||
|
|
||||||
#define error_exit(...) exit((fprintf(stderr, PROGRAM_NAME ": " __VA_ARGS__), 1))
|
#define error_exit(...) exit((fprintf(stderr, PROGRAM_NAME ": " __VA_ARGS__), 1))
|
||||||
|
|
||||||
noreturn void usage_exit(int status) {
|
noreturn void usage_exit(int status) {
|
||||||
|
|
|
||||||
56
tools/consts.py
Executable file
56
tools/consts.py
Executable file
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
Usage: python consts.py constants/some_constants.asm
|
||||||
|
|
||||||
|
View numeric values of `const`ants.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
const_value = 0
|
||||||
|
const_inc = 1
|
||||||
|
|
||||||
|
def asm_int(s):
|
||||||
|
base = {'$': 16, '&': 8, '%': 2}.get(s[0], 10)
|
||||||
|
return int(s if base == 10 else s[1:], base)
|
||||||
|
|
||||||
|
def print_const(s, v):
|
||||||
|
print(f'{s} == {v} == ${v:x}')
|
||||||
|
|
||||||
|
def parse_for_constants(line):
|
||||||
|
global const_value, const_inc
|
||||||
|
if not (m := re.match(r'^\s+([A-Za-z_][A-Za-z0-9_@#]*)(?:\s+([^;\\n]+))?', line)):
|
||||||
|
return
|
||||||
|
macro, rest = m.groups()
|
||||||
|
args = [arg.strip() for arg in rest.split(',')] if rest else []
|
||||||
|
if args and not args[-1]:
|
||||||
|
args = args[:-1]
|
||||||
|
if macro == 'const_def':
|
||||||
|
const_value = asm_int(args[0]) if len(args) >= 1 else 0
|
||||||
|
const_inc = asm_int(args[1]) if len(args) >= 2 else 1
|
||||||
|
elif macro == 'const':
|
||||||
|
print_const(args[0], const_value)
|
||||||
|
const_value += const_inc
|
||||||
|
elif macro == 'shift_const':
|
||||||
|
print_const(args[0], 1 << const_value)
|
||||||
|
print_const(args[0] + '_F', const_value)
|
||||||
|
const_value += const_inc
|
||||||
|
elif macro == 'const_skip':
|
||||||
|
const_value += const_inc * (asm_int(args[0]) if len(args) >= 1 else 1)
|
||||||
|
elif macro == 'const_next':
|
||||||
|
const_value = asm_int(args[0])
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(f'Usage: {sys.argv[0]} constants/some_constants.asm', file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
for filename in sys.argv[1:]:
|
||||||
|
with open(filename, 'r', encoding='utf-8') as file:
|
||||||
|
for line in file:
|
||||||
|
parse_for_constants(line)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
70
tools/free_space.awk
Executable file
70
tools/free_space.awk
Executable file
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/gawk -f
|
||||||
|
|
||||||
|
# Usage: tools/free_space.awk [BANK=<bank_spec>] pokered.map
|
||||||
|
|
||||||
|
# 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".
|
||||||
|
# The `BANK` argument MUST be before the map file name, otherwise it has no effect!
|
||||||
|
# Yes: tools/free_space.awk BANK=all pokered.map
|
||||||
|
# No: tools/free_space.awk pokered.map BANK=42
|
||||||
|
|
||||||
|
# Copyright (c) 2020, Eldred Habert.
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
nb_banks = 0
|
||||||
|
free = 0
|
||||||
|
rom_bank = 0 # Safety net for malformed files
|
||||||
|
|
||||||
|
# Default settings
|
||||||
|
# Variables assigned via the command-line (except through `-v`) are *after* `BEGIN`
|
||||||
|
BANK="none"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Only accept ROM banks, ignore everything else
|
||||||
|
toupper($0) ~ /^[ \t]*ROM[0X][ \t]+BANK[ \t]+#/ {
|
||||||
|
nb_banks++
|
||||||
|
rom_bank = 1
|
||||||
|
split($0, fields, /[ \t]/)
|
||||||
|
bank_num = strtonum(substr(fields[3], 2))
|
||||||
|
}
|
||||||
|
|
||||||
|
function register_bank(amount) {
|
||||||
|
free += amount
|
||||||
|
rom_bank = 0 # Reject upcoming banks by default
|
||||||
|
|
||||||
|
if (BANK ~ /all/ || BANK == bank_num) {
|
||||||
|
printf "Bank %3d: %5d/16384 (%.2f%%)\n", bank_num, amount, amount * 100 / 16384
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rom_bank && toupper($0) ~ /^[ \t]*EMPTY$/ {
|
||||||
|
# Empty bank
|
||||||
|
register_bank(16384)
|
||||||
|
}
|
||||||
|
rom_bank && toupper($0) ~ /^[ \t]*SLACK:[ \t]/ {
|
||||||
|
if ($2 ~ /\$[0-9A-F]+/) {
|
||||||
|
register_bank(strtonum("0x" substr($2, 2)))
|
||||||
|
} else {
|
||||||
|
printf "Malformed slack line? \"%s\" does not start with '$'\n", $2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
# Determine number of banks, by rounding to upper power of 2
|
||||||
|
total_banks = 2 # Smallest size is 2 banks
|
||||||
|
while (total_banks < nb_banks) {
|
||||||
|
total_banks *= 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# RGBLINK omits "trailing" ROM banks, so fake them
|
||||||
|
bank_num = nb_banks
|
||||||
|
while (bank_num < total_banks) {
|
||||||
|
register_bank(16384)
|
||||||
|
bank_num++
|
||||||
|
}
|
||||||
|
|
||||||
|
total = total_banks * 16384
|
||||||
|
printf "Free space: %5d/%5d (%.2f%%)\n", free, total, free * 100 / total
|
||||||
|
}
|
||||||
|
|
@ -165,7 +165,7 @@ int strfind(const char *s, const char *list[], int count) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define vstrfind(s, ...) strfind(s, (const char *[]){__VA_ARGS__}, sizeof (const char *[]){__VA_ARGS__} / sizeof(const char *))
|
#define vstrfind(s, ...) strfind(s, (const char *[]){__VA_ARGS__}, COUNTOF((const char *[]){__VA_ARGS__}))
|
||||||
|
|
||||||
int parse_arg_value(const char *arg, bool absolute, const struct Symbol *symbols, const char *patch_name) {
|
int parse_arg_value(const char *arg, bool absolute, const struct Symbol *symbols, const char *patch_name) {
|
||||||
// Comparison operators for "ConditionValueB" evaluate to their particular values
|
// Comparison operators for "ConditionValueB" evaluate to their particular values
|
||||||
|
|
|
||||||
77
tools/palfix.py
Executable file
77
tools/palfix.py
Executable file
|
|
@ -0,0 +1,77 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
Usage: python palfix.py image.png
|
||||||
|
|
||||||
|
Fix the palette format of the input image. Colored images (Gen 2 Pokémon or
|
||||||
|
trainer sprites) will become indexed, with a palette sorted {white, light
|
||||||
|
color, dark color, black}. Grayscale images (all Gen 1 images) will become
|
||||||
|
two-bit grayscale.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import png
|
||||||
|
|
||||||
|
def rgb8_to_rgb5(c):
|
||||||
|
r, g, b = c
|
||||||
|
return (r // 8, g // 8, b // 8)
|
||||||
|
|
||||||
|
def rgb5_to_rgb8(c):
|
||||||
|
r, g, b = c
|
||||||
|
return (r * 8 + r // 4, g * 8 + g // 4, b * 8 + b // 4)
|
||||||
|
|
||||||
|
def invert(c):
|
||||||
|
r, g, b = c
|
||||||
|
return (31 - r, 31 - g, 31 - b)
|
||||||
|
|
||||||
|
def luminance(c):
|
||||||
|
r, g, b = c
|
||||||
|
return 0.299 * r**2 + 0.587 * g**2 + 0.114 * b**2
|
||||||
|
|
||||||
|
def rgb5_pixels(row):
|
||||||
|
yield from (rgb8_to_rgb5(row[x:x+3]) for x in range(0, len(row), 4))
|
||||||
|
|
||||||
|
def is_grayscale(palette):
|
||||||
|
return (palette == ((31, 31, 31), (21, 21, 21), (10, 10, 10), (0, 0, 0)) or
|
||||||
|
palette == ((31, 31, 31), (20, 20, 20), (10, 10, 10), (0, 0, 0)))
|
||||||
|
|
||||||
|
def fix_pal(filename):
|
||||||
|
with open(filename, 'rb') as file:
|
||||||
|
width, height, rows = png.Reader(file).asRGBA8()[:3]
|
||||||
|
rows = list(rows)
|
||||||
|
b_and_w = {(0, 0, 0), (31, 31, 31)}
|
||||||
|
colors = {c for row in rows for c in rgb5_pixels(row)} - b_and_w
|
||||||
|
if not colors:
|
||||||
|
colors = {(21, 21, 21), (10, 10, 10)}
|
||||||
|
elif len(colors) == 1:
|
||||||
|
c = colors.pop()
|
||||||
|
colors = {c, invert(c)}
|
||||||
|
elif len(colors) != 2:
|
||||||
|
return False
|
||||||
|
palette = tuple(sorted(colors | b_and_w, key=luminance, reverse=True))
|
||||||
|
assert len(palette) == 4
|
||||||
|
rows = [list(map(palette.index, rgb5_pixels(row))) for row in rows]
|
||||||
|
if is_grayscale(palette):
|
||||||
|
rows = [[3 - c for c in row] for row in rows]
|
||||||
|
writer = png.Writer(width, height, greyscale=True, bitdepth=2, compression=9)
|
||||||
|
else:
|
||||||
|
palette = tuple(map(rgb5_to_rgb8, palette))
|
||||||
|
writer = png.Writer(width, height, palette=palette, bitdepth=8, compression=9)
|
||||||
|
with open(filename, 'wb') as file:
|
||||||
|
writer.write(file, rows)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(f'Usage: {sys.argv[0]} pic.png', file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
for filename in sys.argv[1:]:
|
||||||
|
if not filename.lower().endswith('.png'):
|
||||||
|
print(f'{filename} is not a .png file!', file=sys.stderr)
|
||||||
|
elif not fix_pal(filename):
|
||||||
|
print(f'{filename} has too many colors!', file=sys.stderr)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
0
tools/pic.py
Normal file → Executable file
0
tools/pic.py
Normal file → Executable file
|
|
@ -32,7 +32,7 @@ void write_bit(int bit) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void compress_plane(uint8_t *plane, int width) {
|
void compress_plane(uint8_t *plane, int width) {
|
||||||
static int nybble_lookup[2][0x10] = {
|
static int gray_codes[2][0x10] = {
|
||||||
{0x0, 0x1, 0x3, 0x2, 0x6, 0x7, 0x5, 0x4, 0xC, 0xD, 0xF, 0xE, 0xA, 0xB, 0x9, 0x8},
|
{0x0, 0x1, 0x3, 0x2, 0x6, 0x7, 0x5, 0x4, 0xC, 0xD, 0xF, 0xE, 0xA, 0xB, 0x9, 0x8},
|
||||||
{0x8, 0x9, 0xB, 0xA, 0xE, 0xF, 0xD, 0xC, 0x4, 0x5, 0x7, 0x6, 0x2, 0x3, 0x1, 0x0},
|
{0x8, 0x9, 0xB, 0xA, 0xE, 0xF, 0xD, 0xC, 0x4, 0x5, 0x7, 0x6, 0x2, 0x3, 0x1, 0x0},
|
||||||
};
|
};
|
||||||
|
|
@ -44,10 +44,10 @@ void compress_plane(uint8_t *plane, int width) {
|
||||||
}
|
}
|
||||||
int j = i / width + m * width * 8;
|
int j = i / width + m * width * 8;
|
||||||
int nybble_hi = (plane[j] >> 4) & 0xF;
|
int nybble_hi = (plane[j] >> 4) & 0xF;
|
||||||
int code_1 = nybble_lookup[nybble_lo & 1][nybble_hi];
|
int code_hi = gray_codes[nybble_lo & 1][nybble_hi];
|
||||||
nybble_lo = plane[j] & 0xF;
|
nybble_lo = plane[j] & 0xF;
|
||||||
int code_2 = nybble_lookup[nybble_hi & 1][nybble_lo];
|
int code_lo = gray_codes[nybble_hi & 1][nybble_lo];
|
||||||
plane[j] = (code_1 << 4) | code_2;
|
plane[j] = (code_hi << 4) | code_lo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,7 +105,7 @@ int interpret_compress(uint8_t *plane1, uint8_t *plane2, int mode, int order, in
|
||||||
}
|
}
|
||||||
cur_bit = 7;
|
cur_bit = 7;
|
||||||
cur_byte = 0;
|
cur_byte = 0;
|
||||||
memset(compressed, 0, sizeof(compressed) / sizeof(*compressed));
|
memset(compressed, 0, COUNTOF(compressed));
|
||||||
compressed[0] = (width << 4) | width;
|
compressed[0] = (width << 4) | width;
|
||||||
write_bit(order);
|
write_bit(order);
|
||||||
uint8_t bit_groups[0x1000] = {0};
|
uint8_t bit_groups[0x1000] = {0};
|
||||||
|
|
@ -113,7 +113,7 @@ int interpret_compress(uint8_t *plane1, uint8_t *plane2, int mode, int order, in
|
||||||
for (int plane = 0; plane < 2; plane++) {
|
for (int plane = 0; plane < 2; plane++) {
|
||||||
int type = 0;
|
int type = 0;
|
||||||
int nums = 0;
|
int nums = 0;
|
||||||
memset(bit_groups, 0, sizeof(bit_groups) / sizeof(*bit_groups));
|
memset(bit_groups, 0, COUNTOF(bit_groups));
|
||||||
for (int x = 0; x < width; x++) {
|
for (int x = 0; x < width; x++) {
|
||||||
for (int bit = 0; bit < 8; bit += 2) {
|
for (int bit = 0; bit < 8; bit += 2) {
|
||||||
for (int y = 0, byte = x * width * 8; y < width * 8; y++, byte++) {
|
for (int y = 0, byte = x * width * 8; y < width * 8; y++, byte++) {
|
||||||
|
|
@ -129,7 +129,7 @@ int interpret_compress(uint8_t *plane1, uint8_t *plane2, int mode, int order, in
|
||||||
write_bit(0);
|
write_bit(0);
|
||||||
}
|
}
|
||||||
type = 1;
|
type = 1;
|
||||||
memset(bit_groups, 0, sizeof(bit_groups) / sizeof(*bit_groups));
|
memset(bit_groups, 0, COUNTOF(bit_groups));
|
||||||
index = 0;
|
index = 0;
|
||||||
} else {
|
} else {
|
||||||
if (!type) {
|
if (!type) {
|
||||||
|
|
@ -171,7 +171,7 @@ int compress(uint8_t *data, int width) {
|
||||||
plane1[i] = data[i * 2];
|
plane1[i] = data[i * 2];
|
||||||
plane2[i] = data[i * 2 + 1];
|
plane2[i] = data[i * 2 + 1];
|
||||||
}
|
}
|
||||||
uint8_t current[sizeof(compressed) / sizeof(*compressed)] = {0};
|
uint8_t current[COUNTOF(compressed)] = {0};
|
||||||
int compressed_size = -1;
|
int compressed_size = -1;
|
||||||
for (int mode = 1; mode < 4; mode++) {
|
for (int mode = 1; mode < 4; mode++) {
|
||||||
for (int order = 0; order < 2; order++) {
|
for (int order = 0; order < 2; order++) {
|
||||||
|
|
@ -181,12 +181,12 @@ int compress(uint8_t *data, int width) {
|
||||||
int new_size = interpret_compress(plane1, plane2, mode, order, width);
|
int new_size = interpret_compress(plane1, plane2, mode, order, width);
|
||||||
if (compressed_size == -1 || new_size < compressed_size) {
|
if (compressed_size == -1 || new_size < compressed_size) {
|
||||||
compressed_size = new_size;
|
compressed_size = new_size;
|
||||||
memset(current, 0, sizeof(current) / sizeof(*current));
|
memset(current, 0, COUNTOF(current));
|
||||||
memcpy(current, compressed, compressed_size / 8);
|
memcpy(current, compressed, compressed_size / 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
memset(compressed, 0, sizeof(compressed) / sizeof(*compressed));
|
memset(compressed, 0, COUNTOF(compressed));
|
||||||
memcpy(compressed, current, compressed_size / 8);
|
memcpy(compressed, current, compressed_size / 8);
|
||||||
free(plane1);
|
free(plane1);
|
||||||
free(plane2);
|
free(plane2);
|
||||||
|
|
|
||||||
2357
tools/png.py
Normal file
2357
tools/png.py
Normal file
File diff suppressed because it is too large
Load diff
38
tools/rgb555.py
Executable file
38
tools/rgb555.py
Executable file
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
Usage: python rgb555.py image.png
|
||||||
|
|
||||||
|
Round all colors of the input image to RGB555.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import png
|
||||||
|
|
||||||
|
def rgb8_to_rgb5(c):
|
||||||
|
return (c & 0b11111000) | (c >> 5)
|
||||||
|
|
||||||
|
def round_pal(filename):
|
||||||
|
with open(filename, 'rb') as file:
|
||||||
|
width, height, rows = png.Reader(file).asRGBA8()[:3]
|
||||||
|
rows = list(rows)
|
||||||
|
for row in rows:
|
||||||
|
del row[3::4]
|
||||||
|
rows = [[rgb8_to_rgb5(c) for c in row] for row in rows]
|
||||||
|
writer = png.Writer(width, height, greyscale=False, bitdepth=8, compression=9)
|
||||||
|
with open(filename, 'wb') as file:
|
||||||
|
writer.write(file, rows)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(f'Usage: {sys.argv[0]} pic.png', file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
for filename in sys.argv[1:]:
|
||||||
|
if not filename.lower().endswith('.png'):
|
||||||
|
print(f'{filename} is not a .png file!', file=sys.stderr)
|
||||||
|
round_pal(filename)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
52
tools/sym_comments.py
Executable file
52
tools/sym_comments.py
Executable file
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
Usage: python sym_comments.py file.asm [pokered.sym] > file_commented.asm
|
||||||
|
|
||||||
|
Comments each label in file.asm with its bank:address from the sym file.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) not in {2, 3}:
|
||||||
|
print(f'Usage: {sys.argv[0]} file.asm [pokered.sym] > file_commented.asm', file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
wram_name = sys.argv[1]
|
||||||
|
sym_name = sys.argv[2] if len(sys.argv) == 3 else 'pokered.sym'
|
||||||
|
|
||||||
|
sym_def_rx = re.compile(r'(^{sym})(:.*)|(^\.{sym})(.*)'.format(sym=r'[A-Za-z_][A-Za-z0-9_#@]*'))
|
||||||
|
|
||||||
|
sym_addrs = {}
|
||||||
|
with open(sym_name, 'r', encoding='utf-8') as file:
|
||||||
|
for line in file:
|
||||||
|
line = line.split(';', 1)[0].rstrip()
|
||||||
|
parts = line.split(' ', 1)
|
||||||
|
if len(parts) != 2:
|
||||||
|
continue
|
||||||
|
addr, sym = parts
|
||||||
|
sym_addrs[sym] = addr
|
||||||
|
|
||||||
|
with open(wram_name, 'r', encoding='utf-8') as file:
|
||||||
|
cur_label = None
|
||||||
|
for line in file:
|
||||||
|
line = line.rstrip()
|
||||||
|
if (m = re.match(sym_def_rx, line)):
|
||||||
|
sym, rest = m.group(1), m.group(2)
|
||||||
|
if sym is None and rest is None:
|
||||||
|
sym, rest = m.group(3), m.group(4)
|
||||||
|
key = sym
|
||||||
|
if not sym.startswith('.'):
|
||||||
|
cur_label = sym
|
||||||
|
elif cur_label:
|
||||||
|
key = cur_label + sym
|
||||||
|
if key in sym_addrs:
|
||||||
|
addr = sym_addrs[key]
|
||||||
|
line = sym + rest + ' ; ' + addr
|
||||||
|
print(line)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
99
tools/toc.py
Executable file
99
tools/toc.py
Executable file
|
|
@ -0,0 +1,99 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
Usage: python toc.py file.md
|
||||||
|
|
||||||
|
Replace a "## TOC" heading in a Markdown file with a table of contents,
|
||||||
|
generated from the other headings in the file. Supports multiple files.
|
||||||
|
Headings must start with "##" signs to be detected.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
from collections import namedtuple
|
||||||
|
from urllib.parse import quote
|
||||||
|
|
||||||
|
toc_name = 'Contents'
|
||||||
|
valid_toc_headings = {'## TOC', '##TOC'}
|
||||||
|
|
||||||
|
TocItem = namedtuple('TocItem', ['name', 'anchor', 'level'])
|
||||||
|
punctuation_rx = re.compile(r'[^\w\- ]+')
|
||||||
|
numbered_heading_rx = re.compile(r'^[0-9]+\. ')
|
||||||
|
specialchar_rx = re.compile(r'[⅔]+')
|
||||||
|
|
||||||
|
def name_to_anchor(name):
|
||||||
|
# GitHub's algorithm for generating anchors from headings
|
||||||
|
# https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/toc_filter.rb
|
||||||
|
anchor = name.strip().lower() # lowercase
|
||||||
|
anchor = re.sub(punctuation_rx, '', anchor) # remove punctuation
|
||||||
|
anchor = anchor.replace(' ', '-') # replace spaces with dash
|
||||||
|
anchor = re.sub(specialchar_rx, '', anchor) # remove misc special chars
|
||||||
|
anchor = quote(anchor) # url encode
|
||||||
|
return anchor
|
||||||
|
|
||||||
|
def get_toc_index(lines):
|
||||||
|
toc_index = None
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if line.rstrip() in valid_toc_headings:
|
||||||
|
toc_index = i
|
||||||
|
break
|
||||||
|
return toc_index
|
||||||
|
|
||||||
|
def get_toc_items(lines, toc_index):
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if i <= toc_index:
|
||||||
|
continue
|
||||||
|
if line.startswith('##'):
|
||||||
|
name = line.lstrip('#')
|
||||||
|
level = len(line) - len(name) - len('##')
|
||||||
|
name = name.strip()
|
||||||
|
anchor = name_to_anchor(name)
|
||||||
|
yield TocItem(name, anchor, level)
|
||||||
|
|
||||||
|
def toc_string(toc_items):
|
||||||
|
lines = [f'## {toc_name}', '']
|
||||||
|
for name, anchor, level in toc_items:
|
||||||
|
padding = ' ' * level
|
||||||
|
if re.match(numbered_heading_rx, name):
|
||||||
|
bullet, name = name.split('.', 1)
|
||||||
|
bullet += '.'
|
||||||
|
name = name.lstrip()
|
||||||
|
else:
|
||||||
|
bullet = '-'
|
||||||
|
lines.append(f'{padding}{bullet} [{name}](#{anchor})')
|
||||||
|
return '\n'.join(lines) + '\n'
|
||||||
|
|
||||||
|
def add_toc(filename):
|
||||||
|
with open(filename, 'r', encoding='utf-8') as file:
|
||||||
|
lines = file.readlines()
|
||||||
|
toc_index = get_toc_index(lines)
|
||||||
|
if toc_index is None:
|
||||||
|
return None # no TOC heading
|
||||||
|
toc_items = list(get_toc_items(lines, toc_index))
|
||||||
|
if not toc_items:
|
||||||
|
return False # no content headings
|
||||||
|
with open(filename, 'w', encoding='utf-8') as file:
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if i == toc_index:
|
||||||
|
file.write(toc_string(toc_items))
|
||||||
|
else:
|
||||||
|
file.write(line)
|
||||||
|
return True # OK
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(f'Usage: {sys.argv[0]} file.md', file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
for filename in sys.argv[1:]:
|
||||||
|
print(filename)
|
||||||
|
result = add_toc(filename)
|
||||||
|
if result is None:
|
||||||
|
print('Warning: No "## TOC" heading found', file=sys.stderr)
|
||||||
|
elif result is False:
|
||||||
|
print('Warning: No content headings found', file=sys.stderr)
|
||||||
|
else:
|
||||||
|
print('OK')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
106
tools/unique.py
Executable file
106
tools/unique.py
Executable file
|
|
@ -0,0 +1,106 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
Usage: python unique.py [-f|--flip] [-x|--cross] image.png
|
||||||
|
|
||||||
|
Erase duplicate tiles from an input image.
|
||||||
|
-f or --flip counts X/Y mirrored tiles as duplicates.
|
||||||
|
-x or --cross erases with a cross instead of a blank tile.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import png
|
||||||
|
|
||||||
|
def rgb5_pixels(row):
|
||||||
|
yield from (tuple(c // 8 for c in row[x:x+3]) for x in range(0, len(row), 4))
|
||||||
|
|
||||||
|
def rgb8_pixels(row):
|
||||||
|
yield from (c * 8 + c // 4 for pixel in row for c in pixel)
|
||||||
|
|
||||||
|
def gray_pixels(row):
|
||||||
|
yield from (pixel[0] // 10 for pixel in row)
|
||||||
|
|
||||||
|
def rows_to_tiles(rows, width, height):
|
||||||
|
assert len(rows) == height and len(rows[0]) == width
|
||||||
|
yield from (tuple(tuple(row[x:x+8]) for row in rows[y:y+8])
|
||||||
|
for y in range(0, height, 8) for x in range(0, width, 8))
|
||||||
|
|
||||||
|
def tiles_to_rows(tiles, width, height):
|
||||||
|
assert width % 8 == 0 and height % 8 == 0
|
||||||
|
width, height = width // 8, height // 8
|
||||||
|
tiles = list(tiles)
|
||||||
|
assert len(tiles) == width * height
|
||||||
|
tile_rows = (tiles[y:y+width] for y in range(0, width * height, width))
|
||||||
|
yield from ([tile[y][x] for tile in tile_row for x in range(8)]
|
||||||
|
for tile_row in tile_rows for y in range(8))
|
||||||
|
|
||||||
|
def tile_variants(tile, flip):
|
||||||
|
yield tile
|
||||||
|
if flip:
|
||||||
|
yield tile[::-1]
|
||||||
|
yield tuple(row[::-1] for row in tile)
|
||||||
|
yield tuple(row[::-1] for row in tile[::-1])
|
||||||
|
|
||||||
|
def unique_tiles(tiles, flip, cross):
|
||||||
|
if cross:
|
||||||
|
blank = [[(0, 0, 0)] * 8 for _ in range(8)]
|
||||||
|
for y in range(8):
|
||||||
|
blank[y][y] = blank[y][7 - y] = (31, 31, 31)
|
||||||
|
blank = tuple(tuple(row) for row in blank)
|
||||||
|
else:
|
||||||
|
blank = tuple(tuple([(31, 31, 31)] * 8) for _ in range(8))
|
||||||
|
seen = set()
|
||||||
|
for tile in tiles:
|
||||||
|
if any(variant in seen for variant in tile_variants(tile, flip)):
|
||||||
|
yield blank
|
||||||
|
else:
|
||||||
|
yield tile
|
||||||
|
seen.add(tile)
|
||||||
|
|
||||||
|
def is_grayscale(colors):
|
||||||
|
return (colors.issubset({(31, 31, 31), (21, 21, 21), (10, 10, 10), (0, 0, 0)}) or
|
||||||
|
colors.issubset({(31, 31, 31), (20, 20, 20), (10, 10, 10), (0, 0, 0)}))
|
||||||
|
|
||||||
|
def erase_duplicates(filename, flip, cross):
|
||||||
|
with open(filename, 'rb') as file:
|
||||||
|
width, height, rows = png.Reader(file).asRGBA8()[:3]
|
||||||
|
rows = [list(rgb5_pixels(row)) for row in rows]
|
||||||
|
if width % 8 or height % 8:
|
||||||
|
return False
|
||||||
|
tiles = unique_tiles(rows_to_tiles(rows, width, height), flip, cross)
|
||||||
|
rows = list(tiles_to_rows(tiles, width, height))
|
||||||
|
if is_grayscale({c for row in rows for c in row}):
|
||||||
|
rows = [list(gray_pixels(row)) for row in rows]
|
||||||
|
writer = png.Writer(width, height, greyscale=True, bitdepth=2, compression=9)
|
||||||
|
else:
|
||||||
|
rows = [list(rgb8_pixels(row)) for row in rows]
|
||||||
|
writer = png.Writer(width, height, greyscale=False, bitdepth=8, compression=9)
|
||||||
|
with open(filename, 'wb') as file:
|
||||||
|
writer.write(file, rows)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def main():
|
||||||
|
flip = cross = False
|
||||||
|
while True:
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(f'Usage: {sys.argv[0]} [-f|--flip] [-x|--cross] tileset.png', file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
elif sys.argv[1] in {'-f', '--flip'}:
|
||||||
|
flip = True
|
||||||
|
elif sys.argv[1] in {'-x', '--cross'}:
|
||||||
|
cross = True
|
||||||
|
elif sys.argv[1] in {'-fx', '-xf'}:
|
||||||
|
flip = cross = True
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
sys.argv.pop(1)
|
||||||
|
for filename in sys.argv[1:]:
|
||||||
|
if not filename.lower().endswith('.png'):
|
||||||
|
print(f'{filename} is not a .png file!', file=sys.stderr)
|
||||||
|
elif not erase_duplicates(filename, flip, cross):
|
||||||
|
print(f'{filename} is not divisible into 8x8 tiles!', file=sys.stderr)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
129
tools/unnamed.py
129
tools/unnamed.py
|
|
@ -1,18 +1,27 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from sys import stderr, exit
|
"""
|
||||||
from subprocess import Popen, PIPE
|
Usage: unnamed.py [-h] [-r rootdir] [-l count] pokered.sym
|
||||||
from struct import unpack, calcsize
|
|
||||||
from enum import Enum
|
|
||||||
|
|
||||||
class symtype(Enum):
|
Parse the symfile to find unnamed symbols.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
import subprocess
|
||||||
|
import struct
|
||||||
|
import enum
|
||||||
|
import signal
|
||||||
|
|
||||||
|
class symtype(enum.Enum):
|
||||||
LOCAL = 0
|
LOCAL = 0
|
||||||
IMPORT = 1
|
IMPORT = 1
|
||||||
EXPORT = 2
|
EXPORT = 2
|
||||||
|
|
||||||
def unpack_file(fmt, file):
|
def unpack_from(fmt, file):
|
||||||
size = calcsize(fmt)
|
size = struct.calcsize(fmt)
|
||||||
return unpack(fmt, file.read(size))
|
return struct.unpack(fmt, file.read(size))
|
||||||
|
|
||||||
def read_string(file):
|
def read_string(file):
|
||||||
buf = bytearray()
|
buf = bytearray()
|
||||||
|
|
@ -20,111 +29,109 @@ def read_string(file):
|
||||||
b = file.read(1)
|
b = file.read(1)
|
||||||
if b is None or b == b'\0':
|
if b is None or b == b'\0':
|
||||||
return buf.decode()
|
return buf.decode()
|
||||||
else:
|
|
||||||
buf += b
|
buf += b
|
||||||
|
|
||||||
|
|
||||||
# Fix broken pipe when using `head`
|
# Fix broken pipe when using `head`
|
||||||
from signal import signal, SIGPIPE, SIG_DFL
|
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
|
||||||
signal(SIGPIPE,SIG_DFL)
|
|
||||||
|
|
||||||
import argparse
|
parser = argparse.ArgumentParser(description='Parse the symfile to find unnamed symbols')
|
||||||
parser = argparse.ArgumentParser(description="Parse the symfile to find unnamed symbols")
|
parser.add_argument('symfile', type=argparse.FileType('r'),
|
||||||
parser.add_argument('symfile', type=argparse.FileType('r'), help="the list of symbols")
|
help='the list of symbols')
|
||||||
parser.add_argument('-r', '--rootdir', type=str, help="scan the output files to obtain a list of files with unnamed symbols (NOTE: will rebuild objects as necessary)")
|
parser.add_argument('-r', '--rootdir', type=str,
|
||||||
parser.add_argument('-l', '--list', type=int, default=0, help="output this many of each file's unnamed symbols (NOTE: requires -r)")
|
help='scan the output files to obtain a list of files with unnamed symbols (note: will rebuild objects as necessary)')
|
||||||
|
parser.add_argument('-l', '--list', type=int, default=0,
|
||||||
|
help="output this many of each file's unnamed symbols (note: requires -r)")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# Get list of object files
|
# Get list of object files
|
||||||
objects = None
|
objects = None
|
||||||
if args.rootdir:
|
if args.rootdir:
|
||||||
for line in Popen(["make", "-C", args.rootdir, "-s", "-p", "DEBUG=1"],
|
for line in subprocess.Popen(['make', '-C', args.rootdir, '-s', '-p', 'DEBUG=1'],
|
||||||
stdout=PIPE).stdout.read().decode().split("\n"):
|
stdout=subprocess.PIPE).stdout.read().decode().split('\n'):
|
||||||
if line.startswith("pokered_obj := "):
|
if line.startswith('pokered_obj :='):
|
||||||
objects = line[15:].strip().split()
|
objects = line[len('pokered_obj :='):].strip().split()
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
print("Error: Object files not found!", file=stderr)
|
print('Error: Object files not found!', file=sys.stderr)
|
||||||
exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Scan all unnamed symbols from the symfile
|
# Scan all unnamed symbols from the symfile
|
||||||
symbols_total = 0
|
symbols_total = 0
|
||||||
symbols = set()
|
symbols = set()
|
||||||
for line in args.symfile:
|
for line in args.symfile:
|
||||||
line = line.split(";")[0].strip()
|
line = line.split(';')[0].strip()
|
||||||
split = line.split(" ")
|
split = line.split(' ')
|
||||||
if len(split) < 2:
|
if len(split) < 2:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
symbols_total += 1
|
symbols_total += 1
|
||||||
|
|
||||||
symbol = " ".join(split[1:]).strip()
|
symbol = ' '.join(split[1:]).strip()
|
||||||
if symbol[-3:].lower() == split[0][-3:].lower():
|
if symbol[-3:].lower() == split[0][-3:].lower():
|
||||||
symbols.add(symbol)
|
symbols.add(symbol)
|
||||||
|
|
||||||
# If no object files were provided, just print what we know and exit
|
# If no object files were provided, just print what we know and exit
|
||||||
print("Unnamed pokered symbols: %d (%.2f%% complete)" % (len(symbols),
|
unnamed_percent = 100 * (symbols_total - len(symbols)) / symbols_total
|
||||||
(symbols_total - len(symbols)) / symbols_total * 100))
|
print(f'Unnamed pokered symbols: {len(symbols)} ({unnamed_percent:.2f}% complete)')
|
||||||
if not objects:
|
if not objects:
|
||||||
for sym in symbols:
|
for sym in symbols:
|
||||||
print(sym)
|
print(sym)
|
||||||
exit()
|
sys.exit()
|
||||||
|
|
||||||
# Count the amount of symbols in each file
|
# Count the amount of symbols in each file
|
||||||
files = {}
|
file_symbols = {}
|
||||||
for objfile in objects:
|
for objfile in objects:
|
||||||
f = open(objfile, "rb")
|
with open(objfile, 'rb') as file:
|
||||||
obj_ver = None
|
obj_ver = None
|
||||||
|
|
||||||
magic = unpack_file("4s", f)[0]
|
magic = unpack_from('4s', file)[0]
|
||||||
if magic == b'RGB6':
|
if magic == b'RGB6':
|
||||||
obj_ver = 6
|
obj_ver = 6
|
||||||
elif magic == b'RGB9':
|
elif magic == b'RGB9':
|
||||||
obj_ver = 10 + unpack_file("<I", f)[0]
|
obj_ver = 10 + unpack_from('<I', file)[0]
|
||||||
|
|
||||||
if obj_ver not in [6, 10, 11, 12, 13, 15, 16, 17, 18]:
|
if obj_ver not in [6, 10, 11, 12, 13, 15, 16, 17, 18, 19]:
|
||||||
print("Error: File '%s' is of an unknown format." % objfile, file=stderr)
|
print(f"Error: File '{objfile}' is of an unknown format.", file=sys.stderr)
|
||||||
exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
num_symbols = unpack_file("<I", f)[0]
|
num_symbols = unpack_from('<I', file)[0]
|
||||||
unpack_file("<I", f) # skip num sections
|
unpack_from('<I', file) # skip num sections
|
||||||
|
|
||||||
if obj_ver in [16, 17, 18]:
|
if obj_ver in [16, 17, 18, 19]:
|
||||||
node_filenames = []
|
node_filenames = []
|
||||||
num_nodes = unpack_file("<I", f)[0]
|
num_nodes = unpack_from('<I', file)[0]
|
||||||
for x in range(num_nodes):
|
for x in range(num_nodes):
|
||||||
unpack_file("<II", f) # parent id, parent line no
|
unpack_from('<II', file) # parent id, parent line no
|
||||||
node_type = unpack_file("<B", f)[0]
|
node_type = unpack_from('<B', file)[0]
|
||||||
if node_type:
|
if node_type:
|
||||||
node_filenames.append(read_string(f))
|
node_filenames.append(read_string(file))
|
||||||
else:
|
else:
|
||||||
node_filenames.append("rept")
|
node_filenames.append('rept')
|
||||||
depth = unpack_file("<I", f)[0]
|
depth = unpack_from('<I', file)[0]
|
||||||
for i in range(depth):
|
for i in range(depth):
|
||||||
unpack_file("<I", f) # rept iterations
|
unpack_from('<I', file) # rept iterations
|
||||||
node_filenames.reverse()
|
node_filenames.reverse()
|
||||||
|
|
||||||
for x in range(num_symbols):
|
for _ in range(num_symbols):
|
||||||
sym_name = read_string(f)
|
sym_name = read_string(file)
|
||||||
sym_type = symtype(unpack_file("<B", f)[0] & 0x7f)
|
sym_type = symtype(unpack_from('<B', file)[0] & 0x7f)
|
||||||
if sym_type == symtype.IMPORT:
|
if sym_type == symtype.IMPORT:
|
||||||
continue
|
continue
|
||||||
if obj_ver in [16, 17, 18]:
|
if obj_ver in [16, 17, 18, 19]:
|
||||||
sym_fileno = unpack_file("<I", f)[0]
|
sym_fileno = unpack_from('<I', file)[0]
|
||||||
sym_filename = node_filenames[sym_fileno]
|
sym_filename = node_filenames[sym_fileno]
|
||||||
else:
|
else:
|
||||||
sym_filename = read_string(f)
|
sym_filename = read_string(file)
|
||||||
unpack_file("<III", f)
|
unpack_from('<III', file)
|
||||||
if sym_name not in symbols:
|
if sym_name not in symbols:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if sym_filename not in files:
|
if sym_filename not in file_symbols:
|
||||||
files[sym_filename] = []
|
file_symbols[sym_filename] = []
|
||||||
files[sym_filename].append(sym_name)
|
file_symbols[sym_filename].append(sym_name)
|
||||||
|
|
||||||
# Sort the files, the one with the most amount of symbols first
|
# Sort the files, the one with the most amount of symbols first
|
||||||
files = sorted(((f, files[f]) for f in files), key=lambda x: len(x[1]), reverse=True)
|
file_symbols = sorted(file_symbols.items(), key=lambda item: len(item[1]), reverse=True)
|
||||||
for f in files:
|
for filename, unnamed_syms in file_symbols:
|
||||||
filename, unnamed = f
|
sym_list = ', '.join(unnamed_syms[:args.list])
|
||||||
sym_list = ', '.join(unnamed[:args.list])
|
print(f'{filename}: {len(unnamed_syms)}{": " + sym_list if sym_list else ""}')
|
||||||
print("%s: %d%s" % (filename, len(unnamed), ': ' + sym_list if sym_list else ''))
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
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 blue_vc patch.
|
||||||
|
|
||||||
MACRO vc_const
|
MACRO vc_const
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
INCLUDE "constants.asm"
|
|
||||||
|
|
||||||
; These are all the asm constants needed to make the red_vc patch.
|
; These are all the asm constants needed to make the red_vc patch.
|
||||||
|
|
||||||
MACRO vc_const
|
MACRO vc_const
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue