diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 13cc4e5f0..805aea498 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@master with: path: rgbds - ref: v0.5.2 + ref: v0.6.0 repository: gbdev/rgbds - name: Install rgbds diff --git a/INSTALL.md b/INSTALL.md index db1e16e93..b09fa8a7b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -42,9 +42,9 @@ Run setup and leave the default settings. At the "**Select Packages**" step, cho Double click on the text that says "**Skip**" next to each package to select the most recent version to install. -Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 0.5.2**. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 0.6.0**. -**Note:** If you already have an older rgbds, you will need to update to 0.5.2. Ignore this if you have never installed rgbds before. If a version newer than 0.5.2 does not work, try downloading 0.5.2. +**Note:** If you already have an older rgbds, you will need to update to 0.6.0. Ignore this if you have never installed rgbds before. If a version newer than 0.6.0 does not work, try downloading 0.6.0. Now open the **Cygwin terminal** and enter the following commands. @@ -67,7 +67,7 @@ Install [**Homebrew**](https://brew.sh/). Follow the official instructions. Open **Terminal** and prepare to enter commands. -Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 0.5.2**. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 0.6.0**. Now you're ready to [build **pokecrystal**](#build-pokecrystal). @@ -84,7 +84,7 @@ To install the software required for **pokecrystal**: sudo apt-get install make gcc git ``` -Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source. ### OpenSUSE @@ -94,7 +94,7 @@ To install the software required for **pokecrystal**: sudo zypper install make gcc git ``` -Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source. ### Arch Linux @@ -104,9 +104,9 @@ To install the software required for **pokecrystal**: sudo pacman -S make gcc git rgbds ``` -Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for Arch Linux to install **rgbds 0.5.2**. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for Arch Linux to install **rgbds 0.6.0**. -If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source. +If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source. ### Termux @@ -122,7 +122,7 @@ To install **rgbds**: sudo apt install rgbds ``` -If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source. +If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source. ### Other distros @@ -133,7 +133,7 @@ If your distro is not listed here, try to find the required software in its repo - `git` - `rgbds` -If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.5.2** from source. +If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.0** from source. Now you're ready to [build **pokecrystal**](#build-pokecrystal). @@ -161,12 +161,12 @@ make crystal11 ### 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 pokecrystal, such as `pokecrystal/rgbds-0.5.2/`. Then specify it when you run `make`: +If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 0.6.0 globally. Instead, you can put its files in a directory within pokecrystal, such as `pokecrystal/rgbds-0.6.0/`. Then specify it when you run `make`: ```bash -make RGBDS=rgbds-0.5.2/ +make RGBDS=rgbds-0.6.0/ ``` ```bash -make RGBDS=rgbds-0.5.2/ crystal11 +make RGBDS=rgbds-0.6.0/ crystal11 ``` diff --git a/Makefile b/Makefile index bf54eb4ce..451e9084b 100644 --- a/Makefile +++ b/Makefile @@ -104,7 +104,7 @@ tools: $(MAKE) -C tools/ -RGBASMFLAGS = -L -Weverything -Wnumeric-string=2 -Wtruncation=1 +RGBASMFLAGS = -hL -Q8 -P includes.asm -Weverything -Wnumeric-string=2 -Wtruncation=1 # Create a sym/map for debug purposes if `make` run with `DEBUG=1` ifeq ($(DEBUG),1) RGBASMFLAGS += -E @@ -121,13 +121,13 @@ $(pokecrystal11_vc_obj): RGBASMFLAGS += -D _CRYSTAL11 -D _CRYSTAL11_VC tools/make_patch $*_vc.sym $^ $@ rgbdscheck.o: rgbdscheck.asm - $(RGBASM) -o $@ $< + $(RGBASM) $(RGBASMFLAGS) -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 +$1: $2 $$(shell tools/scan_includes $2) | includes.asm rgbdscheck.o $$(RGBASM) $$(RGBASMFLAGS) -o $$@ $$< endef @@ -146,8 +146,8 @@ $(foreach obj, $(pokecrystal11_debug_obj), $(eval $(call DEP,$(obj),$(obj:11_deb $(foreach obj, $(pokecrystal11_vc_obj), $(eval $(call DEP,$(obj),$(obj:11_vc.o=.asm)))) # Dependencies for VC files that need to run scan_includes -%.constants.sym: %.constants.asm $(shell tools/scan_includes %.constants.asm) | rgbdscheck.o - $(RGBASM) $< > $@ +%.constants.sym: %.constants.asm $(shell tools/scan_includes %.constants.asm) | includes.asm rgbdscheck.o + $(RGBASM) $(RGBASMFLAGS) $< > $@ endif @@ -208,14 +208,15 @@ gfx/pokemon/girafarig/front.animated.tilemap: gfx/pokemon/girafarig/front.2bpp g ### Misc file-specific graphics rules -gfx/pokemon/%/back.2bpp: rgbgfx += -h +gfx/pokemon/%/back.2bpp: rgbgfx += -Z -c embedded +gfx/pokemon/%/front.2bpp: rgbgfx += -c embedded -gfx/trainers/%.2bpp: rgbgfx += -h +gfx/trainers/%.2bpp: rgbgfx += -Z -c embedded -gfx/pokemon/egg/unused_front.2bpp: rgbgfx += -h +gfx/pokemon/egg/unused_front.2bpp: rgbgfx += -Z -gfx/new_game/shrink1.2bpp: rgbgfx += -h -gfx/new_game/shrink2.2bpp: rgbgfx += -h +gfx/new_game/shrink1.2bpp: rgbgfx += -Z +gfx/new_game/shrink2.2bpp: rgbgfx += -Z gfx/mail/dragonite.1bpp: tools/gfx += --remove-whitespace gfx/mail/large_note.1bpp: tools/gfx += --remove-whitespace @@ -225,7 +226,7 @@ gfx/mail/litebluemail_border.1bpp: tools/gfx += --remove-whitespace gfx/pokedex/pokedex.2bpp: tools/gfx += --trim-whitespace gfx/pokedex/pokedex_sgb.2bpp: tools/gfx += --trim-whitespace -gfx/pokedex/question_mark.2bpp: rgbgfx += -h +gfx/pokedex/question_mark.2bpp: rgbgfx += -Z gfx/pokedex/slowpoke.2bpp: tools/gfx += --trim-whitespace gfx/pokegear/pokegear.2bpp: rgbgfx += -x2 @@ -266,13 +267,13 @@ gfx/battle_anims/rocks.2bpp: tools/gfx += --remove-whitespace gfx/battle_anims/skyattack.2bpp: tools/gfx += --remove-whitespace gfx/battle_anims/status.2bpp: tools/gfx += --remove-whitespace -gfx/player/chris.2bpp: rgbgfx += -h -gfx/player/chris_back.2bpp: rgbgfx += -h -gfx/player/kris.2bpp: rgbgfx += -h -gfx/player/kris_back.2bpp: rgbgfx += -h +gfx/player/chris.2bpp: rgbgfx += -Z +gfx/player/chris_back.2bpp: rgbgfx += -Z +gfx/player/kris.2bpp: rgbgfx += -Z +gfx/player/kris_back.2bpp: rgbgfx += -Z -gfx/trainer_card/chris_card.2bpp: rgbgfx += -h -gfx/trainer_card/kris_card.2bpp: rgbgfx += -h +gfx/trainer_card/chris_card.2bpp: rgbgfx += -Z +gfx/trainer_card/kris_card.2bpp: rgbgfx += -Z gfx/trainer_card/leaders.2bpp: tools/gfx += --trim-whitespace gfx/overworld/chris_fish.2bpp: tools/gfx += --trim-whitespace @@ -280,7 +281,7 @@ gfx/overworld/kris_fish.2bpp: tools/gfx += --trim-whitespace gfx/sprites/big_onix.2bpp: tools/gfx += --remove-whitespace --remove-xflip -gfx/battle/dude.2bpp: rgbgfx += -h +gfx/battle/dude.2bpp: rgbgfx += -Z gfx/font/unused_bold_font.1bpp: tools/gfx += --trim-whitespace diff --git a/audio.asm b/audio.asm index 601b49820..faa24640d 100644 --- a/audio.asm +++ b/audio.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Audio", ROMX INCLUDE "audio/engine.asm" diff --git a/charmap.asm b/charmap.asm index 28b17ddd9..b1f6d5b9f 100644 --- a/charmap.asm +++ b/charmap.asm @@ -420,5 +420,12 @@ ; ASCII charmap, for mobile functions pushc -newcharmap ascii + newcharmap ascii + DEF PRINTABLE_ASCII EQUS " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~" + for i, STRLEN("{PRINTABLE_ASCII}") + charmap STRSUB("{PRINTABLE_ASCII}", i + 1, 1), i + $20 + endr + charmap "\t", $09 + charmap "\n", $0a + charmap "\r", $0d popc diff --git a/data/maps/map_data.asm b/data/maps/map_data.asm index ad29646ab..f41d7b7c4 100644 --- a/data/maps/map_data.asm +++ b/data/maps/map_data.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Maps", ROMX INCLUDE "data/maps/maps.asm" diff --git a/data/pokemon/dex_entries.asm b/data/pokemon/dex_entries.asm index a66f16737..dfcd875fd 100644 --- a/data/pokemon/dex_entries.asm +++ b/data/pokemon/dex_entries.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Pokedex Entries 001-064", ROMX BulbasaurPokedexEntry:: INCLUDE "data/pokemon/dex_entries/bulbasaur.asm" diff --git a/data/pokemon/egg_moves.asm b/data/pokemon/egg_moves.asm index a34b73b79..0849373c7 100644 --- a/data/pokemon/egg_moves.asm +++ b/data/pokemon/egg_moves.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Egg Moves", ROMX ; All instances of Charm, Steel Wing, Sweet Scent, and Lovely Kiss were diff --git a/data/pokemon/evos_attacks.asm b/data/pokemon/evos_attacks.asm index eb6cb8a22..54a0689d1 100644 --- a/data/pokemon/evos_attacks.asm +++ b/data/pokemon/evos_attacks.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Evolutions and Attacks", ROMX ; Evos+attacks data structure: diff --git a/data/text/common.asm b/data/text/common.asm index d1fbb8b1a..301eecb14 100644 --- a/data/text/common.asm +++ b/data/text/common.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Text 1", ROMX INCLUDE "data/text/common_1.asm" diff --git a/docs/design_flaws.md b/docs/design_flaws.md index c7ea7f7a3..4904f5871 100644 --- a/docs/design_flaws.md +++ b/docs/design_flaws.md @@ -771,11 +771,9 @@ And on `sine_table` in [macros/data.asm](https://github.com/pret/pokecrystal/blo ```asm MACRO sine_table -; \1 samples of sin(x) from x=0 to x<32768 (pi radians) - DEF x = 0 - rept \1 - dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up - DEF x += DIV(32768, \1) ; a circle has 65536 "degrees" +; \1 samples of sin(x) from x=0 to x<0.5 turns (pi radians) + for x, \1 + dw sin(x * 0.5 / (\1)) endr ENDM ``` diff --git a/engine/link/mystery_gift.asm b/engine/link/mystery_gift.asm index d485df9a6..2fa529904 100644 --- a/engine/link/mystery_gift.asm +++ b/engine/link/mystery_gift.asm @@ -799,6 +799,7 @@ ReceiveInfraredLEDOn: xor a ldh [rIF], a halt + nop ldh a, [c] bit rRP_RECEIVING, a jr z, .recv_loop @@ -813,6 +814,7 @@ ReceiveInfraredLEDOff: xor a ldh [rIF], a halt + nop ldh a, [c] bit rRP_RECEIVING, a jr nz, .no_recv_loop @@ -829,6 +831,7 @@ SendInfraredLEDOn: xor a ldh [rIF], a halt + nop jr .wait SendInfraredLEDOff: @@ -841,6 +844,7 @@ SendInfraredLEDOff: xor a ldh [rIF], a halt + nop jr .wait InitializeIRCommunicationRoles: @@ -1037,6 +1041,7 @@ SendIRDataMessage: xor a ldh [rIF], a halt + nop ld a, rRP_ENABLE_READ_MASK | (1 << rRP_LED_ON) ldh [rRP], a ; Turn the LED off for longer if the bit is 1 @@ -1057,6 +1062,7 @@ SendIRDataMessage: xor a ldh [rIF], a halt + nop .no_halt ldh a, [hMGNumBits] dec a @@ -1070,6 +1076,7 @@ SendIRDataMessage: xor a ldh [rIF], a halt + nop ld d, 5 call SendInfraredLEDOn diff --git a/engine/movie/credits.asm b/engine/movie/credits.asm index 70b3c9763..304bd061e 100644 --- a/engine/movie/credits.asm +++ b/engine/movie/credits.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Credits", ROMX Credits:: diff --git a/engine/overworld/events.asm b/engine/overworld/events.asm index bb6ee1676..20c63bda8 100644 --- a/engine/overworld/events.asm +++ b/engine/overworld/events.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "Events", ROMX OverworldLoop:: diff --git a/gfx/pics.asm b/gfx/pics.asm index a268b6db4..9264e2dd3 100644 --- a/gfx/pics.asm +++ b/gfx/pics.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - ; PokemonPicPointers and UnownPicPointers are assumed to start at the same ; address, but in different banks. This is enforced in layout.link. diff --git a/gfx/pokemon/unown_a/back.png b/gfx/pokemon/unown_a/back.png index 48f7c0200..b1d6de88a 100644 Binary files a/gfx/pokemon/unown_a/back.png and b/gfx/pokemon/unown_a/back.png differ diff --git a/gfx/pokemon/unown_a/front.png b/gfx/pokemon/unown_a/front.png index 1949bdc9a..decbe9544 100644 Binary files a/gfx/pokemon/unown_a/front.png and b/gfx/pokemon/unown_a/front.png differ diff --git a/gfx/pokemon/unown_b/back.png b/gfx/pokemon/unown_b/back.png index 3ceaba03c..a77426a43 100644 Binary files a/gfx/pokemon/unown_b/back.png and b/gfx/pokemon/unown_b/back.png differ diff --git a/gfx/pokemon/unown_b/front.png b/gfx/pokemon/unown_b/front.png index 9858a26ba..a45b799e9 100644 Binary files a/gfx/pokemon/unown_b/front.png and b/gfx/pokemon/unown_b/front.png differ diff --git a/gfx/pokemon/unown_c/back.png b/gfx/pokemon/unown_c/back.png index 7f7655dd7..a76e6caab 100644 Binary files a/gfx/pokemon/unown_c/back.png and b/gfx/pokemon/unown_c/back.png differ diff --git a/gfx/pokemon/unown_c/front.png b/gfx/pokemon/unown_c/front.png index 057fffdc7..4e2b2f151 100644 Binary files a/gfx/pokemon/unown_c/front.png and b/gfx/pokemon/unown_c/front.png differ diff --git a/gfx/pokemon/unown_d/back.png b/gfx/pokemon/unown_d/back.png index 443c7c589..1d4547c82 100644 Binary files a/gfx/pokemon/unown_d/back.png and b/gfx/pokemon/unown_d/back.png differ diff --git a/gfx/pokemon/unown_d/front.png b/gfx/pokemon/unown_d/front.png index df2114a35..becc92406 100644 Binary files a/gfx/pokemon/unown_d/front.png and b/gfx/pokemon/unown_d/front.png differ diff --git a/gfx/pokemon/unown_e/back.png b/gfx/pokemon/unown_e/back.png index 567ebcfb2..dfe189c5e 100644 Binary files a/gfx/pokemon/unown_e/back.png and b/gfx/pokemon/unown_e/back.png differ diff --git a/gfx/pokemon/unown_e/front.png b/gfx/pokemon/unown_e/front.png index 36d98fe38..8a9f132d1 100644 Binary files a/gfx/pokemon/unown_e/front.png and b/gfx/pokemon/unown_e/front.png differ diff --git a/gfx/pokemon/unown_f/back.png b/gfx/pokemon/unown_f/back.png index de60198da..f4f54b351 100644 Binary files a/gfx/pokemon/unown_f/back.png and b/gfx/pokemon/unown_f/back.png differ diff --git a/gfx/pokemon/unown_f/front.png b/gfx/pokemon/unown_f/front.png index f47dcb53b..80b3f0dd2 100644 Binary files a/gfx/pokemon/unown_f/front.png and b/gfx/pokemon/unown_f/front.png differ diff --git a/gfx/pokemon/unown_g/back.png b/gfx/pokemon/unown_g/back.png index b31728f31..c2d4e81cf 100644 Binary files a/gfx/pokemon/unown_g/back.png and b/gfx/pokemon/unown_g/back.png differ diff --git a/gfx/pokemon/unown_g/front.png b/gfx/pokemon/unown_g/front.png index 1439f4d7e..8bbfee819 100644 Binary files a/gfx/pokemon/unown_g/front.png and b/gfx/pokemon/unown_g/front.png differ diff --git a/gfx/pokemon/unown_h/back.png b/gfx/pokemon/unown_h/back.png index abf0b39e5..6677db077 100644 Binary files a/gfx/pokemon/unown_h/back.png and b/gfx/pokemon/unown_h/back.png differ diff --git a/gfx/pokemon/unown_h/front.png b/gfx/pokemon/unown_h/front.png index 3c644c7da..ba8635ecf 100644 Binary files a/gfx/pokemon/unown_h/front.png and b/gfx/pokemon/unown_h/front.png differ diff --git a/gfx/pokemon/unown_i/back.png b/gfx/pokemon/unown_i/back.png index 0d861d9f8..3251ab92c 100644 Binary files a/gfx/pokemon/unown_i/back.png and b/gfx/pokemon/unown_i/back.png differ diff --git a/gfx/pokemon/unown_i/front.png b/gfx/pokemon/unown_i/front.png index 971439d5a..e396fc847 100644 Binary files a/gfx/pokemon/unown_i/front.png and b/gfx/pokemon/unown_i/front.png differ diff --git a/gfx/pokemon/unown_j/back.png b/gfx/pokemon/unown_j/back.png index 93df2154c..3e7dddd92 100644 Binary files a/gfx/pokemon/unown_j/back.png and b/gfx/pokemon/unown_j/back.png differ diff --git a/gfx/pokemon/unown_j/front.png b/gfx/pokemon/unown_j/front.png index 03316dc6e..3c7205edd 100644 Binary files a/gfx/pokemon/unown_j/front.png and b/gfx/pokemon/unown_j/front.png differ diff --git a/gfx/pokemon/unown_k/back.png b/gfx/pokemon/unown_k/back.png index 1fbb8b041..3efb0a65e 100644 Binary files a/gfx/pokemon/unown_k/back.png and b/gfx/pokemon/unown_k/back.png differ diff --git a/gfx/pokemon/unown_k/front.png b/gfx/pokemon/unown_k/front.png index ce6b81e9f..fef1793bf 100644 Binary files a/gfx/pokemon/unown_k/front.png and b/gfx/pokemon/unown_k/front.png differ diff --git a/gfx/pokemon/unown_l/back.png b/gfx/pokemon/unown_l/back.png index 470d46c05..4e14c7d9f 100644 Binary files a/gfx/pokemon/unown_l/back.png and b/gfx/pokemon/unown_l/back.png differ diff --git a/gfx/pokemon/unown_l/front.png b/gfx/pokemon/unown_l/front.png index ff86501db..1aeb48a6d 100644 Binary files a/gfx/pokemon/unown_l/front.png and b/gfx/pokemon/unown_l/front.png differ diff --git a/gfx/pokemon/unown_m/back.png b/gfx/pokemon/unown_m/back.png index a7f90e72b..5e9b02d32 100644 Binary files a/gfx/pokemon/unown_m/back.png and b/gfx/pokemon/unown_m/back.png differ diff --git a/gfx/pokemon/unown_m/front.png b/gfx/pokemon/unown_m/front.png index b55a03682..4a42a084f 100644 Binary files a/gfx/pokemon/unown_m/front.png and b/gfx/pokemon/unown_m/front.png differ diff --git a/gfx/pokemon/unown_n/back.png b/gfx/pokemon/unown_n/back.png index 801959468..c6a7b1390 100644 Binary files a/gfx/pokemon/unown_n/back.png and b/gfx/pokemon/unown_n/back.png differ diff --git a/gfx/pokemon/unown_n/front.png b/gfx/pokemon/unown_n/front.png index 2ba3f9a17..ee86bb809 100644 Binary files a/gfx/pokemon/unown_n/front.png and b/gfx/pokemon/unown_n/front.png differ diff --git a/gfx/pokemon/unown_o/back.png b/gfx/pokemon/unown_o/back.png index 68c4e2743..6f94641ff 100644 Binary files a/gfx/pokemon/unown_o/back.png and b/gfx/pokemon/unown_o/back.png differ diff --git a/gfx/pokemon/unown_o/front.png b/gfx/pokemon/unown_o/front.png index 7fd75de36..35c35f107 100644 Binary files a/gfx/pokemon/unown_o/front.png and b/gfx/pokemon/unown_o/front.png differ diff --git a/gfx/pokemon/unown_p/back.png b/gfx/pokemon/unown_p/back.png index 5098b51ce..618b54087 100644 Binary files a/gfx/pokemon/unown_p/back.png and b/gfx/pokemon/unown_p/back.png differ diff --git a/gfx/pokemon/unown_p/front.png b/gfx/pokemon/unown_p/front.png index eca40f041..8c9652a0a 100644 Binary files a/gfx/pokemon/unown_p/front.png and b/gfx/pokemon/unown_p/front.png differ diff --git a/gfx/pokemon/unown_q/back.png b/gfx/pokemon/unown_q/back.png index 9b2b34c51..5ee2eacb0 100644 Binary files a/gfx/pokemon/unown_q/back.png and b/gfx/pokemon/unown_q/back.png differ diff --git a/gfx/pokemon/unown_q/front.png b/gfx/pokemon/unown_q/front.png index 98f19fdc1..97900e745 100644 Binary files a/gfx/pokemon/unown_q/front.png and b/gfx/pokemon/unown_q/front.png differ diff --git a/gfx/pokemon/unown_r/back.png b/gfx/pokemon/unown_r/back.png index a3d7de37e..355fe3fc6 100644 Binary files a/gfx/pokemon/unown_r/back.png and b/gfx/pokemon/unown_r/back.png differ diff --git a/gfx/pokemon/unown_r/front.png b/gfx/pokemon/unown_r/front.png index a7038ec16..c203ed470 100644 Binary files a/gfx/pokemon/unown_r/front.png and b/gfx/pokemon/unown_r/front.png differ diff --git a/gfx/pokemon/unown_s/back.png b/gfx/pokemon/unown_s/back.png index 75de76a29..4a718be73 100644 Binary files a/gfx/pokemon/unown_s/back.png and b/gfx/pokemon/unown_s/back.png differ diff --git a/gfx/pokemon/unown_s/front.png b/gfx/pokemon/unown_s/front.png index b854e648b..c7495eccd 100644 Binary files a/gfx/pokemon/unown_s/front.png and b/gfx/pokemon/unown_s/front.png differ diff --git a/gfx/pokemon/unown_t/back.png b/gfx/pokemon/unown_t/back.png index edbe2a1de..935d3f1fd 100644 Binary files a/gfx/pokemon/unown_t/back.png and b/gfx/pokemon/unown_t/back.png differ diff --git a/gfx/pokemon/unown_t/front.png b/gfx/pokemon/unown_t/front.png index 807b4af12..3f5b7c7a2 100644 Binary files a/gfx/pokemon/unown_t/front.png and b/gfx/pokemon/unown_t/front.png differ diff --git a/gfx/pokemon/unown_u/back.png b/gfx/pokemon/unown_u/back.png index 4efb1dd2a..80a4cd17c 100644 Binary files a/gfx/pokemon/unown_u/back.png and b/gfx/pokemon/unown_u/back.png differ diff --git a/gfx/pokemon/unown_u/front.png b/gfx/pokemon/unown_u/front.png index 2d7950f18..2eba23d5d 100644 Binary files a/gfx/pokemon/unown_u/front.png and b/gfx/pokemon/unown_u/front.png differ diff --git a/gfx/pokemon/unown_v/back.png b/gfx/pokemon/unown_v/back.png index 0097a050f..e0bb0635d 100644 Binary files a/gfx/pokemon/unown_v/back.png and b/gfx/pokemon/unown_v/back.png differ diff --git a/gfx/pokemon/unown_v/front.png b/gfx/pokemon/unown_v/front.png index a687e5d7c..57fae628b 100644 Binary files a/gfx/pokemon/unown_v/front.png and b/gfx/pokemon/unown_v/front.png differ diff --git a/gfx/pokemon/unown_w/back.png b/gfx/pokemon/unown_w/back.png index 629d7ccb2..d5fb67f4d 100644 Binary files a/gfx/pokemon/unown_w/back.png and b/gfx/pokemon/unown_w/back.png differ diff --git a/gfx/pokemon/unown_w/front.png b/gfx/pokemon/unown_w/front.png index b65b96735..34b335254 100644 Binary files a/gfx/pokemon/unown_w/front.png and b/gfx/pokemon/unown_w/front.png differ diff --git a/gfx/pokemon/unown_x/back.png b/gfx/pokemon/unown_x/back.png index f2213d93f..f04142c77 100644 Binary files a/gfx/pokemon/unown_x/back.png and b/gfx/pokemon/unown_x/back.png differ diff --git a/gfx/pokemon/unown_x/front.png b/gfx/pokemon/unown_x/front.png index d0cef6024..e74987847 100644 Binary files a/gfx/pokemon/unown_x/front.png and b/gfx/pokemon/unown_x/front.png differ diff --git a/gfx/pokemon/unown_y/back.png b/gfx/pokemon/unown_y/back.png index 141f16157..c2452b004 100644 Binary files a/gfx/pokemon/unown_y/back.png and b/gfx/pokemon/unown_y/back.png differ diff --git a/gfx/pokemon/unown_y/front.png b/gfx/pokemon/unown_y/front.png index 1b2fbdfcd..f444a7206 100644 Binary files a/gfx/pokemon/unown_y/front.png and b/gfx/pokemon/unown_y/front.png differ diff --git a/gfx/pokemon/unown_z/back.png b/gfx/pokemon/unown_z/back.png index 987d4d9df..73094c9fa 100644 Binary files a/gfx/pokemon/unown_z/back.png and b/gfx/pokemon/unown_z/back.png differ diff --git a/gfx/pokemon/unown_z/front.png b/gfx/pokemon/unown_z/front.png index 60fc433bc..583044383 100644 Binary files a/gfx/pokemon/unown_z/front.png and b/gfx/pokemon/unown_z/front.png differ diff --git a/gfx/tilesets.asm b/gfx/tilesets.asm index fb7494ba7..7fb6b57b3 100644 --- a/gfx/tilesets.asm +++ b/gfx/tilesets.asm @@ -1,5 +1,3 @@ -INCLUDE "constants.asm" - MACRO tilecoll ; used in data/tilesets/*_collision.asm db COLL_\1, COLL_\2, COLL_\3, COLL_\4 diff --git a/home.asm b/home.asm index 54db23cd9..0e16558a3 100644 --- a/home.asm +++ b/home.asm @@ -1,5 +1,3 @@ -INCLUDE "constants.asm" - SECTION "NULL", ROM0 NULL:: diff --git a/home/delay.asm b/home/delay.asm index 4ad25ef21..ebdcccb11 100644 --- a/home/delay.asm +++ b/home/delay.asm @@ -5,7 +5,8 @@ DelayFrame:: ; Wait for the next VBlank, halting to conserve battery .halt - halt ; rgbasm adds a nop after this instruction by default + halt + nop ld a, [wVBlankOccurred] and a jr nz, .halt diff --git a/home/text.asm b/home/text.asm index 6da8ee0d9..da66edf6b 100644 --- a/home/text.asm +++ b/home/text.asm @@ -198,7 +198,7 @@ MACRO dict jr nz, .not\@ ld a, \2 .not\@: - elif STRSUB("\2", 1, 1) == "." + elif !STRCMP(STRSUB("\2", 1, 1), ".") ; Locals can use a short jump jr z, \2 else diff --git a/constants.asm b/includes.asm similarity index 76% rename from constants.asm rename to includes.asm index c967fa7b1..9472e64c9 100644 --- a/constants.asm +++ b/includes.asm @@ -1,6 +1,26 @@ INCLUDE "charmap.asm" -INCLUDE "macros.asm" +INCLUDE "macros/asserts.asm" +INCLUDE "macros/const.asm" +INCLUDE "macros/predef.asm" +INCLUDE "macros/farcall.asm" +INCLUDE "macros/data.asm" +INCLUDE "macros/code.asm" +INCLUDE "macros/gfx.asm" +INCLUDE "macros/coords.asm" +INCLUDE "macros/vc.asm" + +INCLUDE "macros/scripts/audio.asm" +INCLUDE "macros/scripts/maps.asm" +INCLUDE "macros/scripts/events.asm" +INCLUDE "macros/scripts/text.asm" +INCLUDE "macros/scripts/movement.asm" +INCLUDE "macros/scripts/battle_commands.asm" +INCLUDE "macros/scripts/battle_anims.asm" +INCLUDE "macros/scripts/oam_anims.asm" +INCLUDE "macros/scripts/pic_anims.asm" + +INCLUDE "macros/legacy.asm" INCLUDE "constants/hardware_constants.asm" INCLUDE "constants/deco_constants.asm" diff --git a/lib/mobile/mail.asm b/lib/mobile/mail.asm index e67916b33..b428fcbf9 100644 --- a/lib/mobile/mail.asm +++ b/lib/mobile/mail.asm @@ -1,12 +1,7 @@ ; A library included as part of the Mobile Adapter GB SDK. -INCLUDE "macros/code.asm" -INCLUDE "macros/const.asm" -INCLUDE "macros/gfx.asm" -INCLUDE "constants/gfx_constants.asm" -INCLUDE "constants/hardware_constants.asm" -INCLUDE "constants/mobile_constants.asm" -INCLUDE "constants/text_constants.asm" +setcharmap ascii + SECTION "Mobile Adapter SDK Mail", ROMX diff --git a/lib/mobile/main.asm b/lib/mobile/main.asm index bf6f3c2c8..75d05ceaa 100644 --- a/lib/mobile/main.asm +++ b/lib/mobile/main.asm @@ -1,8 +1,6 @@ ; A library included as part of the Mobile Adapter GB SDK. -INCLUDE "macros/const.asm" -INCLUDE "constants/hardware_constants.asm" -INCLUDE "constants/mobile_constants.asm" +setcharmap ascii ; Mobile Adapter protocol commands DEF MOBILE_COMMAND_BEGIN_SESSION EQU $10 diff --git a/macros.asm b/macros.asm deleted file mode 100644 index 3eddc3feb..000000000 --- a/macros.asm +++ /dev/null @@ -1,21 +0,0 @@ -INCLUDE "macros/asserts.asm" -INCLUDE "macros/const.asm" -INCLUDE "macros/predef.asm" -INCLUDE "macros/farcall.asm" -INCLUDE "macros/data.asm" -INCLUDE "macros/code.asm" -INCLUDE "macros/gfx.asm" -INCLUDE "macros/coords.asm" -INCLUDE "macros/vc.asm" - -INCLUDE "macros/scripts/audio.asm" -INCLUDE "macros/scripts/maps.asm" -INCLUDE "macros/scripts/events.asm" -INCLUDE "macros/scripts/text.asm" -INCLUDE "macros/scripts/movement.asm" -INCLUDE "macros/scripts/battle_commands.asm" -INCLUDE "macros/scripts/battle_anims.asm" -INCLUDE "macros/scripts/oam_anims.asm" -INCLUDE "macros/scripts/pic_anims.asm" - -INCLUDE "macros/legacy.asm" diff --git a/macros/data.asm b/macros/data.asm index c2686c9f4..5962ec16c 100644 --- a/macros/data.asm +++ b/macros/data.asm @@ -94,10 +94,8 @@ MACRO bcd ENDM MACRO sine_table -; \1 samples of sin(x) from x=0 to x<32768 (pi radians) - DEF x = 0 - rept \1 - dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up - DEF x += DIV(32768, \1) ; a circle has 65536 "degrees" +; \1 samples of sin(x) from x=0 to x<0.5 turns (pi radians) + for x, \1 + dw sin(x * 0.5 / (\1)) endr ENDM diff --git a/main.asm b/main.asm index f9e0a79ff..a8c32e207 100644 --- a/main.asm +++ b/main.asm @@ -1,6 +1,3 @@ -INCLUDE "constants.asm" - - SECTION "bank1", ROMX INCLUDE "engine/link/place_waiting_text.asm" diff --git a/mobile/mobile_46.asm b/mobile/mobile_46.asm index 8c34693e4..40a4183bb 100644 --- a/mobile/mobile_46.asm +++ b/mobile/mobile_46.asm @@ -4038,7 +4038,10 @@ Function119e4f: .loop2 ld a, [de] inc de +pushc +setcharmap ascii cp "\n" +popc jr z, .newline cp [hl] jr nz, .unequal @@ -4063,7 +4066,10 @@ Function119e4f: ld a, [hli] ld [de], a inc de - cp $d +pushc +setcharmap ascii + cp "\r" +popc jr z, .finish dec c jr nz, .loop3 diff --git a/ram.asm b/ram.asm index 077ae7991..cfeb59974 100644 --- a/ram.asm +++ b/ram.asm @@ -1,5 +1,3 @@ -INCLUDE "constants.asm" - INCLUDE "macros/ram.asm" diff --git a/rgbdscheck.asm b/rgbdscheck.asm index 1d1789c86..5e8f85405 100644 --- a/rgbdscheck.asm +++ b/rgbdscheck.asm @@ -1,18 +1,16 @@ MAJOR EQU 0 -MINOR EQU 5 -PATCH EQU 2 +MINOR EQU 6 +PATCH EQU 0 -MACRO wrong_rgbds - fail "pokecrystal requires rgbds v0.5.2 or newer." -ENDM +WRONG_RGBDS EQUS "fail \"pokecrystal requires rgbds v0.6.0 or newer.\"" IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__) - wrong_rgbds + WRONG_RGBDS ELSE IF (__RGBDS_MAJOR__ < MAJOR) || \ (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ < MINOR) || \ (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH) || \ (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ == PATCH && DEF(__RGBDS_RC__)) - wrong_rgbds + WRONG_RGBDS ENDC ENDC diff --git a/tools/free_space.awk b/tools/free_space.awk index d9096a0d3..f74432dd2 100755 --- a/tools/free_space.awk +++ b/tools/free_space.awk @@ -39,7 +39,7 @@ function register_bank(amount) { } } -rom_bank && toupper($0) ~ /^[ \t]*EMPTY/ { +rom_bank && toupper($0) ~ /^[ \t]*EMPTY$/ { # Empty bank register_bank(16384) } diff --git a/tools/free_space.py b/tools/free_space.py deleted file mode 100755 index 35ab69902..000000000 --- a/tools/free_space.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -Usage: python3 free_space.py [BANK=none] [pokecrystal.map] - -Calculate the free space in the ROM or its individual banks. - -The BANK argument allows printing free space in one, all, or none of the ROM's banks. -Valid arguments are numbers (in decimal "42" or hexadecimal "0x2A"), "all" or "none". -If not specified, defaults to "none". -""" - -import sys - -from mapreader import MapReader - -def main(): - print_bank = 'none' - filename = 'pokecrystal.map' - - for arg in sys.argv[1:]: - if arg.startswith('BANK='): - print_bank = arg.split('=', 1)[-1] - else: - filename = arg - - if print_bank not in {'all', 'none'}: - try: - print_bank = (int(print_bank[2:], 16) - if print_bank.startswith(('0x', '0X')) - else int(print_bank)) - except ValueError: - error = f'Error: invalid BANK: {print_bank}' - if print_bank.isalnum(): - error += f' (did you mean: 0x{print_bank}?)' - print(error, file=sys.stderr) - sys.exit(1) - - num_banks = 0x80 - bank_size = 0x4000 # bytes - total_size = num_banks * bank_size - - reader = MapReader() - with open(filename, 'r', encoding='utf-8') as file: - reader.read_map_data(file.readlines()) - - free_space = 0 - per_bank = [] - default_bank_data = {'sections': [], 'used': 0, 'slack': bank_size} - for bank in range(num_banks): - bank_data = reader.bank_data['ROM0 bank' if bank == 0 else 'ROMX bank'] - data = bank_data.get(bank, default_bank_data) - used, slack = data['used'], data['slack'] - per_bank.append((used, slack)) - free_space += slack - - free_percent = 100 * free_space / total_size - print(f'Free space: {free_space}/{total_size} ({free_percent:.2f}%)') - if print_bank != 'none': - print() - print('bank, used, free') - for bank in range(num_banks): - used, slack = per_bank[bank] - if print_bank in {'all', bank}: - print(f'${bank:02X}, {used}, {slack}') - -if __name__ == '__main__': - main() diff --git a/tools/mapreader.py b/tools/mapreader.py deleted file mode 100644 index de2ec3423..000000000 --- a/tools/mapreader.py +++ /dev/null @@ -1,173 +0,0 @@ -# -*- coding: utf-8 -*- - -# A library for parsing the pokecrystal.map file output by rgbds. - -import re - -class MapReader: - - # {'ROM Bank': { 0: { 'sections': [ { 'beg': 1234, - # 'end': 5678, - # 'name': 'Section001', - # 'symbols': [ { 'symbol': 'Function1234', - # 'address: 1234, - # }, - # ] - # }, - # ], - # 'used': 1234, - # 'slack': 4567, - # }, - # }, - # 'OAM': { 'sections': [ { 'beg': 1234, - # 'end': 5678, - # 'name': 'Section002', - # 'symbols': [ { 'symbol': 'Data1234', - # 'address: 1234, - # }, - # ] - # }, - # ], - # 'used': 1234, - # 'slack': 4567, - # }, - # } - # - bank_data = {} - - bank_types = { - 'HRAM' : { 'size': 0x80, 'banked': False, }, - 'OAM' : { 'size': 0xA0, 'banked': False, }, - 'ROM0 bank': { 'size': 0x4000, 'banked': True, }, - 'ROMX bank': { 'size': 0x4000, 'banked': True, }, - 'SRAM bank': { 'size': 0x2000, 'banked': True, }, - 'VRAM bank': { 'size': 0x1000, 'banked': True, }, - 'WRAM bank': { 'size': 0x2000, 'banked': True, }, - } - - # FSM states - INIT, BANK, SECTION = range(3) - - # $506D-$519A ($012E bytes) ["Type Matchups"] - section_header_regex = re.compile('\$([0-9A-Fa-f]{4})-\$([0-9A-Fa-f]{4}) \(.*\) \["(.*)"\]') - # $506D = TypeMatchups - section_data_regex = re.compile('\$([0-9A-Fa-f]{4}) = (.*)') - # $3ED2 bytes - slack_regex = re.compile('\$([0-9A-Fa-f]{4}) bytes?') - - def __init__(self, *args, **kwargs): - self.__dict__.update(kwargs) - - def _parse_init(self, line): - - line = line.split(':', 1)[0] - parts = line.split(' #', 1) - - if (parts[0] in self.bank_types): - self._cur_bank_name = parts[0] - self._cur_bank_type = self.bank_types[self._cur_bank_name] - if (self._cur_bank_type['banked'] and len(parts) > 1): - parts[1] = parts[1].split(':', 1)[0] - parts[1] = parts[1].split(' ', 1)[0] - self._cur_bank = int(parts[1], 10) - if self._cur_bank_name not in self.bank_data: - self.bank_data[self._cur_bank_name] = {} - if self._cur_bank_type['banked']: - if self._cur_bank not in self.bank_data[self._cur_bank_name]: - self.bank_data[self._cur_bank_name][self._cur_bank] = {} - self._cur_data = self.bank_data[self._cur_bank_name][self._cur_bank] - else: - self._cur_data = self.bank_data[self._cur_bank_name] - - if ({} == self._cur_data): - self._cur_data['sections'] = [] - self._cur_data['used'] = 0 - self._cur_data['slack'] = self._cur_bank_type['size'] - return True - - return False - - def _parse_section_header(self, header): - - section_data = self.section_header_regex.match(header) - if section_data is not None: - beg = int(section_data.group(1), 16) - end = int(section_data.group(2), 16) - name = section_data.group(3) - self._cur_section = {'beg': beg, 'end': end, 'name': name, 'symbols': []} - self._cur_data['sections'].append(self._cur_section) - return True - return False - - def _parse_slack(self, data): - - slack_data = self.slack_regex.match(data) - slack_bytes = int(slack_data.group(1), 16) - self._cur_data['slack'] = slack_bytes - - used_bytes = 0 - - for s in self._cur_data['sections']: - used_bytes += s['end'] - s['beg'] + 1 - - self._cur_data['used'] = used_bytes - - def read_map_data(self, map): - - if type(map) is str: - map = map.split('\n') - - self._state = MapReader.INIT - self._cur_bank_name = '' - self._cur_bank_type = {} - self._cur_bank = 0 - self._cur_data = {} - - for line in map: - - line = line.rstrip() - if (MapReader.INIT == self._state): - - if (self._parse_init(line)): - self._state = MapReader.BANK - - elif (MapReader.BANK == self._state or MapReader.SECTION == self._state): - - if ('' == line): - self._state = MapReader.INIT - else: - - line = line.lstrip() - parts = line.split(': ', 1) - - if (MapReader.SECTION == self._state): - section_data = self.section_data_regex.match(parts[0]) - if section_data is not None: - address = int(section_data.group(1), 16) - name = section_data.group(2) - self._cur_section['symbols'].append({'name': name, 'address': address}) - continue - - if ('SECTION' == parts[0]): - if (self._parse_section_header(parts[1])): - self._state = MapReader.SECTION - elif ('SLACK' == parts[0]): - self._parse_slack(parts[1]) - self._state = MapReader.INIT - elif ('EMPTY' == parts[0]): - self._cur_data = {'sections': [], 'used': 0, 'slack': self._cur_bank_type['size']} - self._state = MapReader.INIT - - else: - pass - - for k, v in self.bank_data.items(): - if (self.bank_types[k]['banked']): - for _, vv in v.items(): - vv['sections'].sort(key=lambda x: x['beg']) - for vvv in vv['sections']: - vvv['symbols'].sort(key=lambda x: x['address']) - else: - v['sections'].sort(key=lambda x: x['beg']) - for vv in v['sections']: - vv['symbols'].sort(key=lambda x: x['address']) diff --git a/tools/used_space.py b/tools/used_space.py deleted file mode 100755 index b8f1c1058..000000000 --- a/tools/used_space.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -Usage: python used_space.py [pokecrystal.map] [used_space.png] - -Generate a PNG visualizing the space used by each bank in the ROM. -""" - -import sys -from colorsys import hls_to_rgb - -import png -from mapreader import MapReader - -def main(): - mapfile = sys.argv[1] if len(sys.argv) >= 2 else 'pokecrystal.map' - outfile = sys.argv[2] if len(sys.argv) >= 3 else 'used_space.png' - - num_banks = 0x80 - bank_mask = 0x3FFF - bank_size = 0x4000 # bytes - - bpp = 8 # bytes per pixel - height = 256 # pixels - assert bank_size % bpp == 0 and (bank_size // bpp) % height == 0 - - pixels_per_bank = bank_size // bpp # 2048 pixels - bank_width = pixels_per_bank // height # 8 pixels - width = bank_width * num_banks # 1024 pixels - - reader = MapReader() - with open(mapfile, 'r', encoding='utf-8') as file: - reader.read_map_data(file.readlines()) - - hit_data = [] - default_bank_data = {'sections': [], 'used': 0, 'slack': bank_size} - for bank in range(num_banks): - hits = [0] * pixels_per_bank - bank_data = reader.bank_data['ROM0 bank' if bank == 0 else 'ROMX bank'] - data = bank_data.get(bank, default_bank_data) - for s in data['sections']: - beg = s['beg'] & bank_mask - end = s['end'] & bank_mask - for i in range(beg, end + 1): - hits[i // bpp] += 1 - hit_data.append(hits) - - pixels = [[(0xFF, 0xFF, 0xFF)] * width for _ in range(height)] - for bank, hits in enumerate(hit_data): - hue = 0 if bank == 0 else 210 if bank % 2 else 270 - for i, hit in enumerate(hits): - x, y = i % bank_width + bank * bank_width, i // bank_width - hls = (hue / 360, 1 - (85 * hit / bpp) / 100, 1) - rgb = tuple(int(c * 0xFF) for c in hls_to_rgb(*hls)) - pixels[y][x] = rgb - - png_data = [tuple(c for pixel in row for c in pixel) for row in pixels] - with open(outfile, 'wb') as file: - writer = png.Writer(width, height, greyscale=False, bitdepth=8, compression=9) - writer.write(file, png_data) - -if __name__ == '__main__': - main() diff --git a/vc/pokecrystal11.constants.asm b/vc/pokecrystal11.constants.asm index 897be7f84..d0096641d 100644 --- a/vc/pokecrystal11.constants.asm +++ b/vc/pokecrystal11.constants.asm @@ -1,5 +1,3 @@ -INCLUDE "constants.asm" - ; These are all the asm constants needed to make the crystal11_vc patch. MACRO vc_const