aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-x.github/checkdiff.sh8
-rw-r--r--.github/workflows/main.yml71
-rw-r--r--.rgbds-version2
-rw-r--r--INSTALL.md20
-rw-r--r--Makefile10
-rw-r--r--constants/event_constants.asm2
-rw-r--r--constants/gfx_constants.asm6
-rw-r--r--constants/hide_show_constants.asm248
-rw-r--r--constants/map_constants.asm137
-rw-r--r--constants/menu_constants.asm5
-rw-r--r--constants/player_constants.asm9
-rw-r--r--constants/pokemon_data_constants.asm4
-rw-r--r--constants/text_constants.asm13
-rw-r--r--constants/toggle_constants.asm408
-rw-r--r--data/battle/stat_mod_names.asm2
-rw-r--r--data/battle/stat_names.asm2
-rw-r--r--data/events/hidden_events.asm570
-rw-r--r--data/events/hidden_objects.asm560
-rw-r--r--data/items/names.asm2
-rw-r--r--data/maps/hide_show_data.asm582
-rw-r--r--data/maps/objects/SaffronCity.asm2
-rw-r--r--data/maps/objects/SilphCo7F.asm2
-rw-r--r--data/maps/toggleable_objects.asm438
-rw-r--r--data/maps/town_map_entries.asm206
-rw-r--r--data/moves/grammar.asm16
-rw-r--r--data/moves/names.asm3
-rw-r--r--data/player/names.asm15
-rw-r--r--data/player/names_list.asm17
-rw-r--r--data/player_names.asm13
-rw-r--r--data/player_names_list.asm11
-rw-r--r--data/predef_pointers.asm6
-rw-r--r--data/text/text_2.asm18
-rw-r--r--data/trainers/move_choices.asm8
-rw-r--r--data/trainers/names.asm2
-rw-r--r--data/wild/probabilities.asm41
-rw-r--r--engine/battle/animations.asm52
-rw-r--r--engine/battle/battle_transitions.asm10
-rw-r--r--engine/battle/core.asm258
-rw-r--r--engine/battle/decrement_pp.asm2
-rw-r--r--engine/battle/draw_hud_pokeball_gfx.asm14
-rw-r--r--engine/battle/effects.asm24
-rw-r--r--engine/battle/end_of_battle.asm6
-rw-r--r--engine/battle/experience.asm28
-rw-r--r--engine/battle/get_trainer_name.asm2
-rw-r--r--engine/battle/ghost_marowak_anim.asm4
-rw-r--r--engine/battle/init_battle.asm12
-rw-r--r--engine/battle/link_battle_versus_text.asm4
-rw-r--r--engine/battle/move_effects/haze.asm4
-rw-r--r--engine/battle/move_effects/substitute.asm4
-rw-r--r--engine/battle/move_effects/transform.asm14
-rw-r--r--engine/battle/read_trainer_party.asm2
-rw-r--r--engine/battle/trainer_ai.asm10
-rw-r--r--engine/battle/used_move_text.asm139
-rw-r--r--engine/events/heal_party.asm10
-rw-r--r--engine/events/hidden_events/bench_guys.asm (renamed from engine/events/hidden_objects/bench_guys.asm)0
-rw-r--r--engine/events/hidden_events/bills_house_pc.asm (renamed from engine/events/hidden_objects/bills_house_pc.asm)0
-rw-r--r--engine/events/hidden_events/blues_room.asm (renamed from engine/events/hidden_objects/blues_room.asm)0
-rw-r--r--engine/events/hidden_events/book_or_sculpture.asm (renamed from engine/events/hidden_objects/book_or_sculpture.asm)0
-rw-r--r--engine/events/hidden_events/bookshelves.asm (renamed from engine/events/hidden_objects/bookshelves.asm)0
-rw-r--r--engine/events/hidden_events/cinnabar_gym_quiz.asm (renamed from engine/events/hidden_objects/cinnabar_gym_quiz.asm)2
-rw-r--r--engine/events/hidden_events/elevator.asm (renamed from engine/events/hidden_objects/elevator.asm)0
-rw-r--r--engine/events/hidden_events/fanclub_pictures.asm (renamed from engine/events/hidden_objects/fanclub_pictures.asm)0
-rw-r--r--engine/events/hidden_events/fighting_dojo.asm (renamed from engine/events/hidden_objects/fighting_dojo.asm)0
-rw-r--r--engine/events/hidden_events/gym_statues.asm (renamed from engine/events/hidden_objects/gym_statues.asm)0
-rw-r--r--engine/events/hidden_events/indigo_plateau_hq.asm (renamed from engine/events/hidden_objects/indigo_plateau_hq.asm)0
-rw-r--r--engine/events/hidden_events/indigo_plateau_statues.asm (renamed from engine/events/hidden_objects/indigo_plateau_statues.asm)0
-rw-r--r--engine/events/hidden_events/magazines.asm (renamed from engine/events/hidden_objects/magazines.asm)0
-rw-r--r--engine/events/hidden_events/museum_fossils.asm (renamed from engine/events/hidden_objects/museum_fossils.asm)0
-rw-r--r--engine/events/hidden_events/museum_fossils2.asm (renamed from engine/events/hidden_objects/museum_fossils2.asm)0
-rw-r--r--engine/events/hidden_events/new_bike.asm (renamed from engine/events/hidden_objects/new_bike.asm)0
-rw-r--r--engine/events/hidden_events/oaks_lab_email.asm (renamed from engine/events/hidden_objects/oaks_lab_email.asm)0
-rw-r--r--engine/events/hidden_events/oaks_lab_posters.asm (renamed from engine/events/hidden_objects/oaks_lab_posters.asm)0
-rw-r--r--engine/events/hidden_events/pokecenter_pc.asm (renamed from engine/events/hidden_objects/pokecenter_pc.asm)0
-rw-r--r--engine/events/hidden_events/pokemon_stuff.asm (renamed from engine/events/hidden_objects/pokemon_stuff.asm)0
-rw-r--r--engine/events/hidden_events/reds_room.asm (renamed from engine/events/hidden_objects/reds_room.asm)0
-rw-r--r--engine/events/hidden_events/route_15_binoculars.asm (renamed from engine/events/hidden_objects/route_15_binoculars.asm)0
-rw-r--r--engine/events/hidden_events/safari_game.asm (renamed from engine/events/hidden_objects/safari_game.asm)0
-rw-r--r--engine/events/hidden_events/school_blackboard.asm (renamed from engine/events/hidden_objects/school_blackboard.asm)2
-rw-r--r--engine/events/hidden_events/school_notebooks.asm (renamed from engine/events/hidden_objects/school_notebooks.asm)2
-rw-r--r--engine/events/hidden_events/town_map.asm (renamed from engine/events/hidden_objects/town_map.asm)0
-rw-r--r--engine/events/hidden_events/vermilion_gym_trash.asm (renamed from engine/events/hidden_objects/vermilion_gym_trash.asm)2
-rw-r--r--engine/events/hidden_events/vermilion_gym_trash2.asm (renamed from engine/events/hidden_objects/vermilion_gym_trash2.asm)0
-rw-r--r--engine/events/hidden_items.asm10
-rw-r--r--engine/events/in_game_trades.asm8
-rw-r--r--engine/events/pick_up_item.asm16
-rw-r--r--engine/events/poison.asm4
-rw-r--r--engine/events/pokemart.asm4
-rw-r--r--engine/events/prize_menu.asm14
-rw-r--r--engine/flag_action.asm4
-rw-r--r--engine/gfx/load_pokedex_tiles.asm2
-rw-r--r--engine/gfx/mon_icons.asm10
-rw-r--r--engine/gfx/palettes.asm2
-rw-r--r--engine/gfx/sprite_oam.asm4
-rw-r--r--engine/items/inventory.asm1
-rw-r--r--engine/items/item_effects.asm168
-rw-r--r--engine/items/tmhm.asm2
-rw-r--r--engine/items/town_map.asm14
-rw-r--r--engine/link/cable_club.asm16
-rw-r--r--engine/menus/display_text_id_init.asm7
-rw-r--r--engine/menus/naming_screen.asm40
-rw-r--r--engine/menus/party_menu.asm2
-rw-r--r--engine/menus/pokedex.asm6
-rw-r--r--engine/menus/save.asm4
-rw-r--r--engine/menus/start_sub_menus.asm30
-rw-r--r--engine/menus/swap_items.asm2
-rw-r--r--engine/menus/text_box.asm2
-rw-r--r--engine/movie/credits.asm27
-rw-r--r--engine/movie/evolution.asm2
-rw-r--r--engine/movie/hall_of_fame.asm2
-rw-r--r--engine/movie/intro.asm2
-rw-r--r--engine/movie/oak_speech/init_player_data.asm2
-rw-r--r--engine/movie/oak_speech/oak_speech.asm10
-rw-r--r--engine/movie/oak_speech/oak_speech2.asm4
-rw-r--r--engine/movie/splash.asm10
-rw-r--r--engine/movie/title.asm2
-rw-r--r--engine/movie/trade.asm4
-rw-r--r--engine/overworld/advance_player_sprite.asm4
-rw-r--r--engine/overworld/auto_movement.asm8
-rw-r--r--engine/overworld/cut.asm6
-rw-r--r--engine/overworld/cut2.asm6
-rw-r--r--engine/overworld/dust_smoke.asm4
-rw-r--r--engine/overworld/hidden_events.asm (renamed from engine/overworld/hidden_objects.asm)32
-rw-r--r--engine/overworld/ledges.asm2
-rw-r--r--engine/overworld/movement.asm13
-rw-r--r--engine/overworld/pathfinding.asm4
-rw-r--r--engine/overworld/player_animations.asm12
-rw-r--r--engine/overworld/push_boulder.asm2
-rw-r--r--engine/overworld/toggleable_objects.asm (renamed from engine/overworld/missable_objects.asm)87
-rw-r--r--engine/overworld/unused_load_toggleable_object_data.asm (renamed from engine/overworld/unused_load_missable_object_data.asm)18
-rw-r--r--engine/pokemon/add_mon.asm39
-rw-r--r--engine/pokemon/bills_pc.asm4
-rw-r--r--engine/pokemon/evos_moves.asm10
-rw-r--r--engine/pokemon/learn_move.asm6
-rw-r--r--engine/pokemon/load_mon_data.asm8
-rw-r--r--engine/pokemon/remove_mon.asm70
-rw-r--r--engine/pokemon/set_types.asm2
-rw-r--r--engine/pokemon/status_ailments.asm30
-rw-r--r--engine/pokemon/status_screen.asm72
-rw-r--r--engine/slots/game_corner_slots.asm6
-rw-r--r--engine/slots/slot_machine.asm2
-rw-r--r--home.asm2
-rw-r--r--home/clear_sprites.asm8
-rw-r--r--home/hidden_events.asm (renamed from home/hidden_objects.asm)14
-rw-r--r--home/joypad2.asm4
-rw-r--r--home/list_menu.asm16
-rw-r--r--home/load_font.asm12
-rw-r--r--home/map_objects.asm4
-rw-r--r--home/move_mon.asm4
-rw-r--r--home/overworld.asm65
-rw-r--r--home/pics.asm10
-rw-r--r--home/pokemon.asm6
-rw-r--r--home/print_bcd.asm4
-rw-r--r--home/print_num.asm17
-rw-r--r--home/print_text.asm2
-rw-r--r--home/reset_player_sprite.asm3
-rw-r--r--home/start_menu.asm2
-rw-r--r--home/text_script.asm4
-rw-r--r--home/trainers.asm28
-rw-r--r--home/vcopy.asm29
-rw-r--r--home/window.asm12
-rw-r--r--includes.asm3
-rw-r--r--layout.link10
-rw-r--r--macros/asserts.asm18
-rw-r--r--macros/code.asm8
-rw-r--r--macros/farcall.asm7
-rw-r--r--macros/ram.asm2
-rw-r--r--macros/scripts/events.asm2
-rw-r--r--main.asm74
-rw-r--r--ram/hram.asm6
-rw-r--r--ram/vram.asm6
-rw-r--r--ram/wram.asm49
-rw-r--r--scripts/BillsHouse.asm12
-rw-r--r--scripts/BillsHouse_2.asm8
-rw-r--r--scripts/BluesHouse.asm4
-rw-r--r--scripts/CeladonMansionRoofHouse.asm4
-rw-r--r--scripts/CeruleanCity.asm12
-rw-r--r--scripts/CeruleanCity_2.asm12
-rw-r--r--scripts/CeruleanMelaniesHouse.asm4
-rw-r--r--scripts/ChampionsRoom.asm8
-rw-r--r--scripts/Colosseum.asm1
-rw-r--r--scripts/Daycare.asm4
-rw-r--r--scripts/FightingDojo.asm8
-rw-r--r--scripts/GameCorner.asm6
-rw-r--r--scripts/HallOfFame.asm4
-rw-r--r--scripts/MtMoonB2F.asm38
-rw-r--r--scripts/Museum1F_2.asm4
-rw-r--r--scripts/NameRatersHouse.asm2
-rw-r--r--scripts/OaksLab.asm54
-rw-r--r--scripts/PalletTown.asm12
-rw-r--r--scripts/PewterCity.asm16
-rw-r--r--scripts/PewterGym.asm8
-rw-r--r--scripts/PokemonTower2F.asm4
-rw-r--r--scripts/PokemonTower7F.asm28
-rw-r--r--scripts/RocketHideoutB1F.asm5
-rw-r--r--scripts/RocketHideoutB4F.asm28
-rw-r--r--scripts/Route12.asm4
-rw-r--r--scripts/Route16.asm4
-rw-r--r--scripts/Route20.asm36
-rw-r--r--scripts/Route22.asm8
-rw-r--r--scripts/Route23.asm8
-rw-r--r--scripts/Route25.asm20
-rw-r--r--scripts/SSAnne2F.asm8
-rw-r--r--scripts/SafariZoneGate.asm2
-rw-r--r--scripts/SeafoamIslands1F.asm12
-rw-r--r--scripts/SeafoamIslandsB1F.asm12
-rw-r--r--scripts/SeafoamIslandsB2F.asm12
-rw-r--r--scripts/SeafoamIslandsB3F.asm12
-rw-r--r--scripts/SilphCo11F.asm8
-rw-r--r--scripts/SilphCo11F_2.asm106
-rw-r--r--scripts/SilphCo1F.asm4
-rw-r--r--scripts/SilphCo7F.asm4
-rw-r--r--scripts/VermilionDock.asm2
-rw-r--r--scripts/VictoryRoad3F.asm8
-rw-r--r--scripts/ViridianCity.asm4
-rw-r--r--scripts/ViridianGym.asm8
-rw-r--r--scripts/ViridianMart.asm8
-rw-r--r--tools/Makefile2
217 files changed, 3139 insertions, 2820 deletions
diff --git a/.github/checkdiff.sh b/.github/checkdiff.sh
new file mode 100755
index 00000000..430aba4d
--- /dev/null
+++ b/.github/checkdiff.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+if ! git diff-index --quiet HEAD --; then
+ echo 'Uncommitted changes detected:'
+ git diff-index HEAD --
+ return 1
+fi
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 51c2eab3..47b44da9 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -5,25 +5,29 @@ on:
branches: [ master ]
pull_request:
+env:
+ rgbds_version: v1.0.1
+
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@master
+ uses: actions/checkout@v6
- name: Checkout rgbds
- uses: actions/checkout@master
+ uses: actions/checkout@v6
with:
path: rgbds
- ref: v1.0.0
+ ref: ${{ env.rgbds_version }}
repository: gbdev/rgbds
- name: Install rgbds
working-directory: rgbds
run: |
- sudo apt-get install -yq libpng-dev
- sudo make install
+ sudo apt-get update
+ sudo apt-get install -yq bison libpng-dev pkg-config
+ sudo make -j$(nproc) install
- name: Remove rgbds
run: |
@@ -33,21 +37,13 @@ jobs:
if: ${{ github.repository_owner == 'pret' }}
run: |
make DEBUG=1 -j$(nproc) compare
- if ! git diff-index --quiet HEAD --; then
- echo 'Uncommitted changes detected:'
- git diff-index HEAD --
- return 1
- fi
+ .github/checkdiff.sh
- name: Make
if: ${{ github.repository_owner != 'pret' }}
run: |
make -j$(nproc)
- if ! git diff-index --quiet HEAD --; then
- echo 'Uncommitted changes detected:'
- git diff-index HEAD --
- return 1
- fi
+ .github/checkdiff.sh
- name: Discord webhook
if: ${{ github.event_name == 'push' && github.repository_owner == 'pret' }}
@@ -57,22 +53,57 @@ jobs:
.github/webhook.sh
- name: Checkout symbols
- if: ${{ github.event_name == 'push' && github.repository_owner == 'pret' }}
+ if: ${{ github.repository_owner == 'pret' && github.event_name == 'push' }}
uses: actions/checkout@master
with:
path: symbols
ref: symbols
- name: Move symbols
- if: ${{ github.event_name == 'push' && github.repository_owner == 'pret' }}
+ if: ${{ github.repository_owner == 'pret' && github.event_name == 'push' }}
run: |
- cp -v *.sym symbols/
- cp -v *.map symbols/
+ cp -v *.sym *.map symbols/
- name: Update symbols
- if: ${{ github.event_name == 'push' && github.repository_owner == 'pret' }}
+ if: ${{ github.repository_owner == 'pret' && github.event_name == 'push' }}
uses: EndBug/add-and-commit@v9
with:
cwd: "./symbols"
add: "*.sym *.map"
message: ${{ github.event.commits[0].message }}
+
+ build-macos:
+ runs-on: macos-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+
+ - name: Checkout rgbds
+ uses: actions/checkout@v6
+ with:
+ path: rgbds
+ ref: ${{ env.rgbds_version }}
+ repository: gbdev/rgbds
+
+ - name: Install rgbds
+ working-directory: rgbds
+ run: |
+ brew install bison libpng pkg-config
+ export PATH="$(brew --prefix bison)/bin:$PATH"
+ sudo make -j$(sysctl -n hw.ncpu) install
+
+ - name: Remove rgbds
+ run: |
+ rm -rf rgbds
+
+ - name: Compare
+ if: ${{ github.repository_owner == 'pret' }}
+ run: |
+ make DEBUG=1 -j$(sysctl -n hw.ncpu) compare
+ .github/checkdiff.sh
+
+ - name: Make
+ if: ${{ github.repository_owner != 'pret' }}
+ run: |
+ make -j$(sysctl -n hw.ncpu)
+ .github/checkdiff.sh
diff --git a/.rgbds-version b/.rgbds-version
index 3eefcb9d..7dea76ed 100644
--- a/.rgbds-version
+++ b/.rgbds-version
@@ -1 +1 @@
-1.0.0
+1.0.1
diff --git a/INSTALL.md b/INSTALL.md
index 6cb77fd1..fbcfd471 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -42,9 +42,9 @@ Run setup and leave the default settings. At the "**Select Packages**" step, cho
Double click on the text that says "**Skip**" next to each package to select the most recent version to install.
-Then follow the [**rgbds** install instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 1.0.0**.
+Then follow the [**rgbds** install instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 1.0.1**.
-**Note:** If you already have an installed rgbds older than 1.0.0, you will need to update to 1.0.0. Ignore this if you have never installed rgbds before. If a version newer than 1.0.0 does not work, try downloading 1.0.0.
+**Note:** If you already have an installed rgbds older than 1.0.0, you will need to update to 1.0.1. Ignore this if you have never installed rgbds before. If a version newer than 1.0.1 does not work, try downloading 1.0.1.
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 1.0.0**.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 1.0.1**.
Now you're ready to [build **pokeyellow**](#build-pokeyellow).
@@ -84,7 +84,7 @@ To install the software required for **pokeyellow**:
sudo apt-get install make gcc git
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 1.0.0** from source.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 1.0.1** from source.
### OpenSUSE
@@ -94,7 +94,7 @@ To install the software required for **pokeyellow**:
sudo zypper install make gcc git
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 1.0.0** from source.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 1.0.1** from source.
### Arch Linux
@@ -104,7 +104,7 @@ To install the software required for **pokeyellow**:
sudo pacman -S make gcc git 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 1.0.0** 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 1.0.1** from source.
### Termux
@@ -120,7 +120,7 @@ To install **rgbds**:
pkg 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 1.0.0** 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 1.0.1** from source.
### Other distros
@@ -131,7 +131,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 1.0.0** 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 1.0.1** from source.
Now you're ready to [build **pokeyellow**](#build-pokeyellow).
@@ -153,8 +153,8 @@ make
### Build with a local rgbds version
-If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 1.0.0 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-1.0.0/`. 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 1.0.1 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-1.0.1/`. Then specify it when you run `make`:
```bash
-make RGBDS=rgbds-1.0.0/
+make RGBDS=rgbds-1.0.1/
```
diff --git a/Makefile b/Makefile
index 8e15a00e..d05541b0 100644
--- a/Makefile
+++ b/Makefile
@@ -48,7 +48,15 @@ RGBGFXFLAGS ?= -Weverything
.SECONDEXPANSION:
.PRECIOUS:
.SECONDARY:
-.PHONY: all yellow yellow_debug clean tidy compare tools
+.PHONY: \
+ all \
+ yellow \
+ yellow_debug \
+ yellow_vc \
+ clean \
+ tidy \
+ compare \
+ tools
all: $(roms)
yellow: pokeyellow.gbc
diff --git a/constants/event_constants.asm b/constants/event_constants.asm
index 82fb1018..dfb913f3 100644
--- a/constants/event_constants.asm
+++ b/constants/event_constants.asm
@@ -610,7 +610,7 @@
const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_3
const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4
const_skip
- const EVENT_677 ; ???
+ const EVENT_ENTERED_ROCKET_HIDEOUT
const_skip 7
const EVENT_67F ; ???
const_skip
diff --git a/constants/gfx_constants.asm b/constants/gfx_constants.asm
index 3418eee4..f440acc0 100644
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -7,7 +7,11 @@ DEF SCREEN_BLOCK_HEIGHT EQU 5 ; blocks
DEF SURROUNDING_WIDTH EQU SCREEN_BLOCK_WIDTH * BLOCK_WIDTH ; tiles
DEF SURROUNDING_HEIGHT EQU SCREEN_BLOCK_HEIGHT * BLOCK_HEIGHT ; tiles
-DEF SPRITEBUFFERSIZE EQU 7 * 7 * TILE_1BPP_SIZE
+DEF PIC_WIDTH EQU 7 ; tiles
+DEF PIC_HEIGHT EQU PIC_WIDTH ; tiles
+DEF PIC_SIZE EQU PIC_WIDTH * PIC_HEIGHT ; tiles
+
+DEF SPRITEBUFFERSIZE EQU PIC_WIDTH * PIC_HEIGHT * TILE_1BPP_SIZE
; DMGPalToCGBPal
DEF CONVERT_BGP EQU 0
diff --git a/constants/hide_show_constants.asm b/constants/hide_show_constants.asm
deleted file mode 100644
index 50d9fa06..00000000
--- a/constants/hide_show_constants.asm
+++ /dev/null
@@ -1,248 +0,0 @@
-DEF HIDE EQU $11
-DEF SHOW EQU $15
-
-; MissableObjects indexes (see data/maps/hide_show_data.asm)
-; this is a list of the sprites that can be enabled/disabled during the game
-; TODO: mark sprite constants with an X that are never used
-
- const_def
- const HS_PALLET_TOWN_OAK ; 00
- const HS_LYING_OLD_MAN ; 01
- const HS_OLD_MAN_1 ; 02
- const HS_OLD_MAN_2 ; 03
- const HS_MUSEUM_GUY ; 04
- const HS_GYM_GUY ; 05
- const HS_CERULEAN_RIVAL ; 06
- const HS_CERULEAN_ROCKET ; 07
- const HS_CERULEAN_GUARD_1 ; 08
- const HS_CERULEAN_CAVE_GUY ; 09
- const HS_CERULEAN_GUARD_2 ; 0A
- const HS_SAFFRON_CITY_1 ; 0B
- const HS_SAFFRON_CITY_2 ; 0C
- const HS_SAFFRON_CITY_3 ; 0D
- const HS_SAFFRON_CITY_4 ; 0E
- const HS_SAFFRON_CITY_5 ; 0F
- const HS_SAFFRON_CITY_6 ; 10
- const HS_SAFFRON_CITY_7 ; 11
- const HS_SAFFRON_CITY_8 ; 12
- const HS_SAFFRON_CITY_9 ; 13
- const HS_SAFFRON_CITY_A ; 14
- const HS_SAFFRON_CITY_B ; 15
- const HS_SAFFRON_CITY_C ; 16
- const HS_SAFFRON_CITY_D ; 17
- const HS_SAFFRON_CITY_E ; 18
- const HS_SAFFRON_CITY_F ; 19
- const HS_ROUTE_2_ITEM_1 ; 1A
- const HS_ROUTE_2_ITEM_2 ; 1B
- const HS_ROUTE_4_ITEM ; 1C
- const HS_ROUTE_9_ITEM ; 1D
- const HS_ROUTE_12_SNORLAX ; 1E
- const HS_ROUTE_12_ITEM_1 ; 1F
- const HS_ROUTE_12_ITEM_2 ; 20
- const HS_ROUTE_15_ITEM ; 21
- const HS_ROUTE_16_SNORLAX ; 22
- const HS_ROUTE_22_RIVAL_1 ; 23
- const HS_ROUTE_22_RIVAL_2 ; 24
- const HS_NUGGET_BRIDGE_GUY ; 25
- const HS_ROUTE_24_ITEM ; 26
- const HS_ROUTE_25_ITEM ; 27
- const HS_DAISY_SITTING ; 28
- const HS_DAISY_WALKING ; 29
- const HS_TOWN_MAP ; 2A
- const HS_OAKS_LAB_RIVAL ; 2B
- const HS_STARTER_BALL_1 ; 2C
- const HS_OAKS_LAB_OAK_1 ; 2D
- const HS_POKEDEX_1 ; 2E
- const HS_POKEDEX_2 ; 2F
- const HS_OAKS_LAB_OAK_2 ; 30
- const HS_VIRIDIAN_GYM_GIOVANNI ; 31
- const HS_VIRIDIAN_GYM_ITEM ; 32
- const HS_OLD_AMBER ; 33
- const HS_CERULEAN_BULBASAUR ; 34
- const HS_CERULEAN_CAVE_1F_ITEM_1 ; 35
- const HS_CERULEAN_CAVE_1F_ITEM_2 ; 36
- const HS_CERULEAN_CAVE_1F_ITEM_3 ; 37
- const HS_CERULEAN_CAVE_1F_ITEM_4 ; 38
- const HS_POKEMON_TOWER_2F_RIVAL ; 39
- const HS_POKEMON_TOWER_3F_ITEM ; 3A
- const HS_POKEMON_TOWER_4F_ITEM_1 ; 3B
- const HS_POKEMON_TOWER_4F_ITEM_2 ; 3C
- const HS_POKEMON_TOWER_4F_ITEM_3 ; 3D
- const HS_POKEMON_TOWER_5F_ITEM ; 3E
- const HS_POKEMON_TOWER_6F_ITEM_1 ; 3F
- const HS_POKEMON_TOWER_6F_ITEM_2 ; 40
- const HS_POKEMON_TOWER_7F_JESSIE ; 41
- const HS_POKEMON_TOWER_7F_JAMES ; 42
- const HS_POKEMON_TOWER_7F_MR_FUJI ; 43
- const HS_MR_FUJIS_HOUSE_MR_FUJI ; 44
- const HS_CELADON_MANSION_EEVEE_GIFT ; 45
- const HS_GAME_CORNER_ROCKET ; 46
- const HS_WARDENS_HOUSE_ITEM ; 47
- const HS_POKEMON_MANSION_1F_ITEM_1 ; 48
- const HS_POKEMON_MANSION_1F_ITEM_2 ; 49
- const HS_FIGHTING_DOJO_GIFT_1 ; 4A
- const HS_FIGHTING_DOJO_GIFT_2 ; 4B
- const HS_SILPH_CO_1F_RECEPTIONIST ; 4C
- const HS_VOLTORB_1 ; 4D
- const HS_VOLTORB_2 ; 4E
- const HS_VOLTORB_3 ; 4F
- const HS_ELECTRODE_1 ; 50
- const HS_VOLTORB_4 ; 51
- const HS_VOLTORB_5 ; 52
- const HS_ELECTRODE_2 ; 53
- const HS_VOLTORB_6 ; 54
- const HS_ZAPDOS ; 55
- const HS_POWER_PLANT_ITEM_1 ; 56
- const HS_POWER_PLANT_ITEM_2 ; 57
- const HS_POWER_PLANT_ITEM_3 ; 58
- const HS_POWER_PLANT_ITEM_4 ; 59
- const HS_POWER_PLANT_ITEM_5 ; 5A
- const HS_MOLTRES ; 5B
- const HS_VICTORY_ROAD_2F_ITEM_1 ; 5C
- const HS_VICTORY_ROAD_2F_ITEM_2 ; 5D
- const HS_VICTORY_ROAD_2F_ITEM_3 ; 5E
- const HS_VICTORY_ROAD_2F_ITEM_4 ; 5F
- const HS_VICTORY_ROAD_2F_BOULDER ; 60
- const HS_BILL_POKEMON ; 61
- const HS_BILL_1 ; 62
- const HS_BILL_2 ; 63
- const HS_VIRIDIAN_FOREST_ITEM_1 ; 64
- const HS_VIRIDIAN_FOREST_ITEM_2 ; 65
- const HS_VIRIDIAN_FOREST_ITEM_3 ; 66
- const HS_MT_MOON_1F_ITEM_1 ; 67
- const HS_MT_MOON_1F_ITEM_2 ; 68
- const HS_MT_MOON_1F_ITEM_3 ; 69
- const HS_MT_MOON_1F_ITEM_4 ; 6A
- const HS_MT_MOON_1F_ITEM_5 ; 6B
- const HS_MT_MOON_1F_ITEM_6 ; 6C
- const HS_MT_MOON_B2F_JESSIE ; 6D
- const HS_MT_MOON_B2F_JAMES ; 6E
- const HS_MT_MOON_B2F_FOSSIL_1 ; 6F
- const HS_MT_MOON_B2F_FOSSIL_2 ; 70
- const HS_MT_MOON_B2F_ITEM_1 ; 71
- const HS_MT_MOON_B2F_ITEM_2 ; 72
- const HS_SS_ANNE_2F_RIVAL ; 73
- const HS_SS_ANNE_1F_ROOMS_ITEM ; 74
- const HS_SS_ANNE_2F_ROOMS_ITEM_1 ; 75
- const HS_SS_ANNE_2F_ROOMS_ITEM_2 ; 76
- const HS_SS_ANNE_B1F_ROOMS_ITEM_1 ; 77
- const HS_SS_ANNE_B1F_ROOMS_ITEM_2 ; 78
- const HS_SS_ANNE_B1F_ROOMS_ITEM_3 ; 79
- const HS_VICTORY_ROAD_3F_ITEM_1 ; 7A
- const HS_VICTORY_ROAD_3F_ITEM_2 ; 7B
- const HS_VICTORY_ROAD_3F_BOULDER ; 7C
- const HS_ROCKET_HIDEOUT_B1F_ITEM_1 ; 7D
- const HS_ROCKET_HIDEOUT_B1F_ITEM_2 ; 7E
- const HS_ROCKET_HIDEOUT_B2F_ITEM_1 ; 7F
- const HS_ROCKET_HIDEOUT_B2F_ITEM_2 ; 80
- const HS_ROCKET_HIDEOUT_B2F_ITEM_3 ; 81
- const HS_ROCKET_HIDEOUT_B2F_ITEM_4 ; 82
- const HS_ROCKET_HIDEOUT_B3F_ITEM_1 ; 83
- const HS_ROCKET_HIDEOUT_B3F_ITEM_2 ; 84
- const HS_ROCKET_HIDEOUT_B4F_GIOVANNI ; 85
- const HS_ROCKET_HIDEOUT_B4F_JAMES ; 86
- const HS_ROCKET_HIDEOUT_B4F_JESSIE ; 87
- const HS_ROCKET_HIDEOUT_B4F_ITEM_1 ; 88
- const HS_ROCKET_HIDEOUT_B4F_ITEM_2 ; 89
- const HS_ROCKET_HIDEOUT_B4F_ITEM_3 ; 8A
- const HS_ROCKET_HIDEOUT_B4F_ITEM_4 ; 8B
- const HS_ROCKET_HIDEOUT_B4F_ITEM_5 ; 8C
- const HS_SILPH_CO_2F_1 ; 8D XXX never (de)activated?
- const HS_SILPH_CO_2F_2 ; 8E
- const HS_SILPH_CO_2F_3 ; 8F
- const HS_SILPH_CO_2F_4 ; 90
- const HS_SILPH_CO_2F_5 ; 91
- const HS_SILPH_CO_3F_1 ; 92
- const HS_SILPH_CO_3F_2 ; 93
- const HS_SILPH_CO_3F_ITEM ; 94
- const HS_SILPH_CO_4F_1 ; 95
- const HS_SILPH_CO_4F_2 ; 96
- const HS_SILPH_CO_4F_3 ; 97
- const HS_SILPH_CO_4F_ITEM_1 ; 98
- const HS_SILPH_CO_4F_ITEM_2 ; 99
- const HS_SILPH_CO_4F_ITEM_3 ; 9A
- const HS_SILPH_CO_5F_1 ; 9B
- const HS_SILPH_CO_5F_2 ; 9C
- const HS_SILPH_CO_5F_3 ; 9D
- const HS_SILPH_CO_5F_4 ; 9E
- const HS_SILPH_CO_5F_ITEM_1 ; 9F
- const HS_SILPH_CO_5F_ITEM_2 ; A0
- const HS_SILPH_CO_5F_ITEM_3 ; A1
- const HS_SILPH_CO_6F_1 ; A2
- const HS_SILPH_CO_6F_2 ; A3
- const HS_SILPH_CO_6F_3 ; A4
- const HS_SILPH_CO_6F_ITEM_1 ; A5
- const HS_SILPH_CO_6F_ITEM_2 ; A6
- const HS_SILPH_CO_7F_1 ; A7
- const HS_SILPH_CO_7F_2 ; A8
- const HS_SILPH_CO_7F_3 ; A9
- const HS_SILPH_CO_7F_4 ; AA
- const HS_SILPH_CO_7F_RIVAL ; AB
- const HS_SILPH_CO_7F_ITEM_1 ; AC
- const HS_SILPH_CO_7F_ITEM_2 ; AD
- const HS_SILPH_CO_7F_8 ; AE XXX sprite doesn't exist
- const HS_SILPH_CO_8F_1 ; AF
- const HS_SILPH_CO_8F_2 ; B0
- const HS_SILPH_CO_8F_3 ; B1
- const HS_SILPH_CO_9F_1 ; B2
- const HS_SILPH_CO_9F_2 ; B3
- const HS_SILPH_CO_9F_3 ; B4
- const HS_SILPH_CO_10F_1 ; B5
- const HS_SILPH_CO_10F_2 ; B6
- const HS_SILPH_CO_10F_3 ; B7 XXX never (de)activated?
- const HS_SILPH_CO_10F_ITEM_1 ; B8
- const HS_SILPH_CO_10F_ITEM_2 ; B9
- const HS_SILPH_CO_10F_ITEM_3 ; BA
- const HS_SILPH_CO_11F_1 ; BB
- const HS_SILPH_CO_11F_JAMES ; BC
- const HS_SILPH_CO_11F_2 ; BD
- const HS_SILPH_CO_11F_JESSIE ; BE
- const HS_UNUSED_MAP_F4_1 ; BF XXX sprite doesn't exist
- const HS_POKEMON_MANSION_2F_ITEM ; C0
- const HS_POKEMON_MANSION_3F_ITEM_1 ; C1
- const HS_POKEMON_MANSION_3F_ITEM_2 ; C2
- const HS_POKEMON_MANSION_B1F_ITEM_1 ; C3
- const HS_POKEMON_MANSION_B1F_ITEM_2 ; C4
- const HS_POKEMON_MANSION_B1F_ITEM_3 ; C5
- const HS_POKEMON_MANSION_B1F_ITEM_4 ; C6
- const HS_POKEMON_MANSION_B1F_ITEM_5 ; C7
- const HS_SAFARI_ZONE_EAST_ITEM_1 ; C8
- const HS_SAFARI_ZONE_EAST_ITEM_2 ; C9
- const HS_SAFARI_ZONE_EAST_ITEM_3 ; CA
- const HS_SAFARI_ZONE_EAST_ITEM_4 ; CB
- const HS_SAFARI_ZONE_NORTH_ITEM_1 ; CC
- const HS_SAFARI_ZONE_NORTH_ITEM_2 ; CD
- const HS_SAFARI_ZONE_WEST_ITEM_1 ; CE
- const HS_SAFARI_ZONE_WEST_ITEM_2 ; CF
- const HS_SAFARI_ZONE_WEST_ITEM_3 ; D0
- const HS_SAFARI_ZONE_WEST_ITEM_4 ; D1
- const HS_SAFARI_ZONE_CENTER_ITEM ; D2
- const HS_CERULEAN_CAVE_2F_ITEM_1 ; D3
- const HS_CERULEAN_CAVE_2F_ITEM_2 ; D4
- const HS_CERULEAN_CAVE_2F_ITEM_3 ; D5
- const HS_CERULEAN_CAVE_2F_ITEM_4 ; D6
- const HS_MEWTWO ; D7
- const HS_CERULEAN_CAVE_B1F_ITEM_1 ; D8
- const HS_CERULEAN_CAVE_B1F_ITEM_2 ; D9
- const HS_CERULEAN_CAVE_B1F_ITEM_3 ; DA
- const HS_CERULEAN_CAVE_B1F_ITEM_4 ; DB
- const HS_VICTORY_ROAD_1F_ITEM_1 ; DC
- const HS_VICTORY_ROAD_1F_ITEM_2 ; DD
- const HS_CHAMPIONS_ROOM_OAK ; DE
- const HS_SEAFOAM_ISLANDS_1F_BOULDER_1 ; DF
- const HS_SEAFOAM_ISLANDS_1F_BOULDER_2 ; E0
- const HS_SEAFOAM_ISLANDS_B1F_BOULDER_1 ; E1
- const HS_SEAFOAM_ISLANDS_B1F_BOULDER_2 ; E2
- const HS_SEAFOAM_ISLANDS_B2F_BOULDER_1 ; E3
- const HS_SEAFOAM_ISLANDS_B2F_BOULDER_2 ; E4
- const HS_SEAFOAM_ISLANDS_B3F_BOULDER_1 ; E5
- const HS_SEAFOAM_ISLANDS_B3F_BOULDER_2 ; E6
- const HS_SEAFOAM_ISLANDS_B3F_BOULDER_3 ; E7
- const HS_SEAFOAM_ISLANDS_B3F_BOULDER_4 ; E8
- const HS_SEAFOAM_ISLANDS_B4F_BOULDER_1 ; E9
- const HS_SEAFOAM_ISLANDS_B4F_BOULDER_2 ; EA
- const HS_ARTICUNO ; EB
- const HS_DAISY_SITTING_COPY ; EC
- const HS_DAISY_WALKING_COPY ; ED
- const HS_TOWN_MAP_COPY ; EE
-DEF NUM_HS_OBJECTS EQU const_value
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index cf23caa7..7f1f21d3 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -4,12 +4,19 @@ MACRO map_const
DEF \1_HEIGHT EQU \3
ENDM
+; "Indoor" maps are grouped sequentially (see data/maps/town_map_entries.asm)
+DEF NUM_INDOOR_MAP_GROUPS EQU 0
+MACRO end_indoor_group
+ DEF INDOORGROUP_\1 EQU const_value
+ REDEF NUM_INDOOR_MAP_GROUPS EQU NUM_INDOOR_MAP_GROUPS + 1
+ENDM
+
; map ids
; indexes for:
; - MapHeaderBanks (see data/maps/map_header_banks.asm)
; - MapHeaderPointers (see data/maps/map_header_pointers.asm)
; - MapSongBanks (see data/maps/songs.asm)
-; - MapHSPointers (see data/maps/hide_show_data.asm)
+; - ToggleableObjectMapPointers (see data/maps/toggleable_objects.asm)
; - MapSpriteSets (see data/maps/sprite_sets.asm)
; - ExternalMapEntries (see data/maps/town_map_entries.asm)
; - WildDataPointers (see data/wild/grass_water.asm)
@@ -28,7 +35,9 @@ ENDM
map_const INDIGO_PLATEAU, 10, 9 ; $09
map_const SAFFRON_CITY, 20, 18 ; $0A
DEF NUM_CITY_MAPS EQU const_value
+
map_const UNUSED_MAP_0B, 0, 0 ; $0B
+
DEF FIRST_ROUTE_MAP EQU const_value
map_const ROUTE_1, 10, 18 ; $0C
map_const ROUTE_2, 10, 36 ; $0D
@@ -55,22 +64,31 @@ DEF FIRST_ROUTE_MAP EQU const_value
map_const ROUTE_23, 10, 72 ; $22
map_const ROUTE_24, 10, 18 ; $23
map_const ROUTE_25, 30, 9 ; $24
+
DEF FIRST_INDOOR_MAP EQU const_value
map_const REDS_HOUSE_1F, 4, 4 ; $25
map_const REDS_HOUSE_2F, 4, 4 ; $26
map_const BLUES_HOUSE, 4, 4 ; $27
map_const OAKS_LAB, 5, 6 ; $28
+ end_indoor_group PALLET_TOWN
+
map_const VIRIDIAN_POKECENTER, 7, 4 ; $29
map_const VIRIDIAN_MART, 4, 4 ; $2A
map_const VIRIDIAN_SCHOOL_HOUSE, 4, 4 ; $2B
map_const VIRIDIAN_NICKNAME_HOUSE, 4, 4 ; $2C
map_const VIRIDIAN_GYM, 10, 9 ; $2D
+ end_indoor_group VIRIDIAN_CITY
+
map_const DIGLETTS_CAVE_ROUTE_2, 4, 4 ; $2E
map_const VIRIDIAN_FOREST_NORTH_GATE, 5, 4 ; $2F
map_const ROUTE_2_TRADE_HOUSE, 4, 4 ; $30
map_const ROUTE_2_GATE, 5, 4 ; $31
map_const VIRIDIAN_FOREST_SOUTH_GATE, 5, 4 ; $32
+ end_indoor_group ROUTE_2
+
map_const VIRIDIAN_FOREST, 17, 24 ; $33
+ end_indoor_group VIRIDIAN_FOREST
+
map_const MUSEUM_1F, 10, 4 ; $34
map_const MUSEUM_2F, 7, 4 ; $35
map_const PEWTER_GYM, 5, 7 ; $36
@@ -78,42 +96,72 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const PEWTER_MART, 4, 4 ; $38
map_const PEWTER_SPEECH_HOUSE, 4, 4 ; $39
map_const PEWTER_POKECENTER, 7, 4 ; $3A
+ end_indoor_group PEWTER_CITY
+
map_const MT_MOON_1F, 20, 18 ; $3B
map_const MT_MOON_B1F, 14, 14 ; $3C
map_const MT_MOON_B2F, 20, 18 ; $3D
+ end_indoor_group MT_MOON
+
map_const CERULEAN_TRASHED_HOUSE, 4, 4 ; $3E
map_const CERULEAN_MELANIES_HOUSE, 4, 4 ; $3F
map_const CERULEAN_POKECENTER, 7, 4 ; $40
map_const CERULEAN_GYM, 5, 7 ; $41
map_const BIKE_SHOP, 4, 4 ; $42
map_const CERULEAN_MART, 4, 4 ; $43
+ end_indoor_group CERULEAN_CITY
+
map_const MT_MOON_POKECENTER, 7, 4 ; $44
+ end_indoor_group ROUTE_4
+
map_const CERULEAN_TRASHED_HOUSE_COPY, 4, 4 ; $45
+ end_indoor_group CERULEAN_CITY_2
+
map_const ROUTE_5_GATE, 4, 3 ; $46
map_const UNDERGROUND_PATH_ROUTE_5, 4, 4 ; $47
map_const DAYCARE, 4, 4 ; $48
+ end_indoor_group ROUTE_5
+
map_const ROUTE_6_GATE, 4, 3 ; $49
map_const UNDERGROUND_PATH_ROUTE_6, 4, 4 ; $4A
map_const UNDERGROUND_PATH_ROUTE_6_COPY, 4, 4 ; $4B
+ end_indoor_group ROUTE_6
+
map_const ROUTE_7_GATE, 3, 4 ; $4C
map_const UNDERGROUND_PATH_ROUTE_7, 4, 4 ; $4D
map_const UNDERGROUND_PATH_ROUTE_7_COPY, 4, 4 ; $4E
+ end_indoor_group ROUTE_7
+
map_const ROUTE_8_GATE, 3, 4 ; $4F
map_const UNDERGROUND_PATH_ROUTE_8, 4, 4 ; $50
+ end_indoor_group ROUTE_8
+
map_const ROCK_TUNNEL_POKECENTER, 7, 4 ; $51
map_const ROCK_TUNNEL_1F, 20, 18 ; $52
+ end_indoor_group ROCK_TUNNEL
+
map_const POWER_PLANT, 20, 18 ; $53
+ end_indoor_group POWER_PLANT
+
map_const ROUTE_11_GATE_1F, 4, 5 ; $54
map_const DIGLETTS_CAVE_ROUTE_11, 4, 4 ; $55
map_const ROUTE_11_GATE_2F, 4, 4 ; $56
+ end_indoor_group ROUTE_11
+
map_const ROUTE_12_GATE_1F, 5, 4 ; $57
+ end_indoor_group ROUTE_12
+
map_const BILLS_HOUSE, 4, 4 ; $58
+ end_indoor_group SEA_COTTAGE
+
map_const VERMILION_POKECENTER, 7, 4 ; $59
map_const POKEMON_FAN_CLUB, 4, 4 ; $5A
map_const VERMILION_MART, 4, 4 ; $5B
map_const VERMILION_GYM, 5, 9 ; $5C
map_const VERMILION_PIDGEY_HOUSE, 4, 4 ; $5D
map_const VERMILION_DOCK, 14, 6 ; $5E
+ end_indoor_group VERMILION_CITY
+
map_const SS_ANNE_1F, 20, 9 ; $5F
map_const SS_ANNE_2F, 20, 9 ; $60
map_const SS_ANNE_3F, 10, 3 ; $61
@@ -124,10 +172,14 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const SS_ANNE_1F_ROOMS, 12, 8 ; $66
map_const SS_ANNE_2F_ROOMS, 12, 8 ; $67
map_const SS_ANNE_B1F_ROOMS, 12, 8 ; $68
+ end_indoor_group SS_ANNE
+
map_const UNUSED_MAP_69, 0, 0 ; $69
map_const UNUSED_MAP_6A, 0, 0 ; $6A
map_const UNUSED_MAP_6B, 0, 0 ; $6B
map_const VICTORY_ROAD_1F, 10, 9 ; $6C
+ end_indoor_group VICTORY_ROAD
+
map_const UNUSED_MAP_6D, 0, 0 ; $6D
map_const UNUSED_MAP_6E, 0, 0 ; $6E
map_const UNUSED_MAP_6F, 0, 0 ; $6F
@@ -138,9 +190,17 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const UNUSED_MAP_74, 0, 0 ; $74
map_const UNUSED_MAP_75, 0, 0 ; $75
map_const HALL_OF_FAME, 5, 4 ; $76
+ end_indoor_group POKEMON_LEAGUE
+
map_const UNDERGROUND_PATH_NORTH_SOUTH, 4, 24 ; $77 ; UndergroundPathNorthSouth.blk is actually 4x23
+ end_indoor_group UNDERGROUND_PATH
+
map_const CHAMPIONS_ROOM, 4, 4 ; $78
+ end_indoor_group POKEMON_LEAGUE_2
+
map_const UNDERGROUND_PATH_WEST_EAST, 25, 4 ; $79
+ end_indoor_group UNDERGROUND_PATH_2
+
map_const CELADON_MART_1F, 10, 4 ; $7A
map_const CELADON_MART_2F, 10, 4 ; $7B
map_const CELADON_MART_3F, 10, 4 ; $7C
@@ -160,7 +220,11 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const CELADON_DINER, 5, 4 ; $8A
map_const CELADON_CHIEF_HOUSE, 4, 4 ; $8B
map_const CELADON_HOTEL, 7, 4 ; $8C
+ end_indoor_group CELADON_CITY
+
map_const LAVENDER_POKECENTER, 7, 4 ; $8D
+ end_indoor_group LAVENDER_TOWN
+
map_const POKEMON_TOWER_1F, 10, 9 ; $8E
map_const POKEMON_TOWER_2F, 10, 9 ; $8F
map_const POKEMON_TOWER_3F, 10, 9 ; $90
@@ -168,23 +232,41 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const POKEMON_TOWER_5F, 10, 9 ; $92
map_const POKEMON_TOWER_6F, 10, 9 ; $93
map_const POKEMON_TOWER_7F, 10, 9 ; $94
+ end_indoor_group POKEMON_TOWER
+
map_const MR_FUJIS_HOUSE, 4, 4 ; $95
map_const LAVENDER_MART, 4, 4 ; $96
map_const LAVENDER_CUBONE_HOUSE, 4, 4 ; $97
+ end_indoor_group LAVENDER_TOWN_2
+
map_const FUCHSIA_MART, 4, 4 ; $98
map_const FUCHSIA_BILLS_GRANDPAS_HOUSE, 4, 4 ; $99
map_const FUCHSIA_POKECENTER, 7, 4 ; $9A
map_const WARDENS_HOUSE, 5, 4 ; $9B
+ end_indoor_group FUCHSIA_CITY
+
map_const SAFARI_ZONE_GATE, 4, 3 ; $9C
+ end_indoor_group SAFARI_ZONE
+
map_const FUCHSIA_GYM, 5, 9 ; $9D
map_const FUCHSIA_MEETING_ROOM, 7, 4 ; $9E
+ end_indoor_group FUCHSIA_CITY_2
+
map_const SEAFOAM_ISLANDS_B1F, 15, 9 ; $9F
map_const SEAFOAM_ISLANDS_B2F, 15, 9 ; $A0
map_const SEAFOAM_ISLANDS_B3F, 15, 9 ; $A1
map_const SEAFOAM_ISLANDS_B4F, 15, 9 ; $A2
+ end_indoor_group SEAFOAM_ISLANDS
+
map_const VERMILION_OLD_ROD_HOUSE, 4, 4 ; $A3
+ end_indoor_group VERMILION_CITY_2
+
map_const FUCHSIA_GOOD_ROD_HOUSE, 4, 4 ; $A4
+ end_indoor_group FUCHSIA_CITY_3
+
map_const POKEMON_MANSION_1F, 15, 14 ; $A5
+ end_indoor_group POKEMON_MANSION
+
map_const CINNABAR_GYM, 10, 9 ; $A6
map_const CINNABAR_LAB, 9, 4 ; $A7
map_const CINNABAR_LAB_TRADE_ROOM, 4, 4 ; $A8
@@ -193,7 +275,11 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const CINNABAR_POKECENTER, 7, 4 ; $AB
map_const CINNABAR_MART, 4, 4 ; $AC
map_const CINNABAR_MART_COPY, 4, 4 ; $AD
+ end_indoor_group CINNABAR_ISLAND
+
map_const INDIGO_PLATEAU_LOBBY, 8, 6 ; $AE
+ end_indoor_group INDIGO_PLATEAU
+
map_const COPYCATS_HOUSE_1F, 4, 4 ; $AF
map_const COPYCATS_HOUSE_2F, 4, 4 ; $B0
map_const FIGHTING_DOJO, 5, 6 ; $B1
@@ -203,21 +289,45 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const SILPH_CO_1F, 15, 9 ; $B5
map_const SAFFRON_POKECENTER, 7, 4 ; $B6
map_const MR_PSYCHICS_HOUSE, 4, 4 ; $B7
+ end_indoor_group SAFFRON_CITY
+
map_const ROUTE_15_GATE_1F, 4, 5 ; $B8
map_const ROUTE_15_GATE_2F, 4, 4 ; $B9
+ end_indoor_group ROUTE_15
+
map_const ROUTE_16_GATE_1F, 4, 7 ; $BA
map_const ROUTE_16_GATE_2F, 4, 4 ; $BB
map_const ROUTE_16_FLY_HOUSE, 4, 4 ; $BC
+ end_indoor_group ROUTE_16
+
map_const ROUTE_12_SUPER_ROD_HOUSE, 4, 4 ; $BD
+ end_indoor_group ROUTE_12_2
+
map_const ROUTE_18_GATE_1F, 4, 5 ; $BE
map_const ROUTE_18_GATE_2F, 4, 4 ; $BF
+ end_indoor_group ROUTE_18
+
map_const SEAFOAM_ISLANDS_1F, 15, 9 ; $C0
+ end_indoor_group SEAFOAM_ISLANDS_2
+
map_const ROUTE_22_GATE, 5, 4 ; $C1
+ end_indoor_group ROUTE_22
+
map_const VICTORY_ROAD_2F, 15, 9 ; $C2
+ end_indoor_group VICTORY_ROAD_2
+
map_const ROUTE_12_GATE_2F, 4, 4 ; $C3
+ end_indoor_group ROUTE_12_3
+
map_const VERMILION_TRADE_HOUSE, 4, 4 ; $C4
+ end_indoor_group VERMILION_CITY_3
+
map_const DIGLETTS_CAVE, 20, 18 ; $C5
+ end_indoor_group DIGLETTS_CAVE
+
map_const VICTORY_ROAD_3F, 15, 9 ; $C6
+ end_indoor_group VICTORY_ROAD_3
+
map_const ROCKET_HIDEOUT_B1F, 15, 14 ; $C7
map_const ROCKET_HIDEOUT_B2F, 15, 14 ; $C8
map_const ROCKET_HIDEOUT_B3F, 15, 14 ; $C9
@@ -226,6 +336,8 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const UNUSED_MAP_CC, 0, 0 ; $CC
map_const UNUSED_MAP_CD, 0, 0 ; $CD
map_const UNUSED_MAP_CE, 0, 0 ; $CE
+ end_indoor_group ROCKET_HQ
+
map_const SILPH_CO_2F, 15, 9 ; $CF
map_const SILPH_CO_3F, 15, 9 ; $D0
map_const SILPH_CO_4F, 15, 9 ; $D1
@@ -233,9 +345,13 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const SILPH_CO_6F, 13, 9 ; $D3
map_const SILPH_CO_7F, 13, 9 ; $D4
map_const SILPH_CO_8F, 13, 9 ; $D5
+ end_indoor_group SILPH_CO
+
map_const POKEMON_MANSION_2F, 15, 14 ; $D6
map_const POKEMON_MANSION_3F, 15, 9 ; $D7
map_const POKEMON_MANSION_B1F, 15, 14 ; $D8
+ end_indoor_group POKEMON_MANSION_2
+
map_const SAFARI_ZONE_EAST, 15, 13 ; $D9
map_const SAFARI_ZONE_NORTH, 20, 18 ; $DA
map_const SAFARI_ZONE_WEST, 15, 13 ; $DB
@@ -245,17 +361,29 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const SAFARI_ZONE_WEST_REST_HOUSE, 4, 4 ; $DF
map_const SAFARI_ZONE_EAST_REST_HOUSE, 4, 4 ; $E0
map_const SAFARI_ZONE_NORTH_REST_HOUSE, 4, 4 ; $E1
+ end_indoor_group SAFARI_ZONE_2
+
map_const CERULEAN_CAVE_2F, 15, 9 ; $E2
map_const CERULEAN_CAVE_B1F, 15, 9 ; $E3
map_const CERULEAN_CAVE_1F, 15, 9 ; $E4
+ end_indoor_group CERULEAN_CAVE
+
map_const NAME_RATERS_HOUSE, 4, 4 ; $E5
+ end_indoor_group LAVENDER_TOWN_3
+
map_const CERULEAN_BADGE_HOUSE, 4, 4 ; $E6
+ end_indoor_group CERULEAN_CITY_3
+
map_const UNUSED_MAP_E7, 0, 0 ; $E7
map_const ROCK_TUNNEL_B1F, 20, 18 ; $E8
+ end_indoor_group ROCK_TUNNEL_2
+
map_const SILPH_CO_9F, 13, 9 ; $E9
map_const SILPH_CO_10F, 8, 9 ; $EA
map_const SILPH_CO_11F, 9, 9 ; $EB
map_const SILPH_CO_ELEVATOR, 2, 2 ; $EC
+ end_indoor_group SILPH_CO_2
+
map_const UNUSED_MAP_ED, 0, 0 ; $ED
map_const UNUSED_MAP_EE, 0, 0 ; $EE
map_const TRADE_CENTER, 5, 4 ; $EF
@@ -267,9 +395,14 @@ DEF FIRST_INDOOR_MAP EQU const_value
map_const LORELEIS_ROOM, 5, 6 ; $F5
map_const BRUNOS_ROOM, 5, 6 ; $F6
map_const AGATHAS_ROOM, 5, 6 ; $F7
+ end_indoor_group POKEMON_LEAGUE_3
+
map_const SUMMER_BEACH_HOUSE, 7, 4 ; $F8
+ end_indoor_group ROUTE_19
DEF NUM_MAPS EQU const_value
; Indoor maps, such as houses, use this as the Map ID in their exit warps
; This map ID takes the player back to the last outdoor map they were on, stored in wLastMap
-DEF LAST_MAP EQU -1
+DEF LAST_MAP EQU $ff
+
+ASSERT NUM_MAPS <= LAST_MAP, "map IDs overlap LAST_MAP"
diff --git a/constants/menu_constants.asm b/constants/menu_constants.asm
index a6e035e7..c4476e03 100644
--- a/constants/menu_constants.asm
+++ b/constants/menu_constants.asm
@@ -90,3 +90,8 @@ DEF FIRST_PARTY_MENU_TEXT_ID EQU const_value
const NAME_PLAYER_SCREEN ; 0
const NAME_RIVAL_SCREEN ; 1
const NAME_MON_SCREEN ; 2
+
+; Stats box layout (see engine/pokemon/status_screen.asm)
+ const_def
+ const STATUS_SCREEN_STATS_BOX ; 0
+ const LEVEL_UP_STATS_BOX ; 1
diff --git a/constants/player_constants.asm b/constants/player_constants.asm
new file mode 100644
index 00000000..26a640ec
--- /dev/null
+++ b/constants/player_constants.asm
@@ -0,0 +1,9 @@
+DEF NUM_PLAYER_NAMES EQU 3
+
+DEF PLAYERNAME1 EQUS "YELLOW"
+DEF PLAYERNAME2 EQUS "ASH"
+DEF PLAYERNAME3 EQUS "JACK"
+
+DEF RIVALNAME1 EQUS "BLUE"
+DEF RIVALNAME2 EQUS "GARY"
+DEF RIVALNAME3 EQUS "JOHN"
diff --git a/constants/pokemon_data_constants.asm b/constants/pokemon_data_constants.asm
index 1234acab..16d21f54 100644
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -44,7 +44,7 @@ DEF MON_SPD_EXP rw
DEF MON_SPC_EXP rw
DEF MON_DVS rw
DEF MON_PP rb NUM_MOVES
-DEF BOXMON_STRUCT_LENGTH EQU _RS
+DEF BOXMON_STRUCT_LENGTH EQU _RS ; $21
DEF MON_LEVEL rb
DEF MON_STATS rw NUM_STATS
rsset MON_STATS
@@ -53,7 +53,7 @@ DEF MON_ATK rw
DEF MON_DEF rw
DEF MON_SPD rw
DEF MON_SPC rw
-DEF PARTYMON_STRUCT_LENGTH EQU _RS
+DEF PARTYMON_STRUCT_LENGTH EQU _RS ; $2c
DEF PARTY_LENGTH EQU 6
diff --git a/constants/text_constants.asm b/constants/text_constants.asm
index 1b515782..0670f405 100644
--- a/constants/text_constants.asm
+++ b/constants/text_constants.asm
@@ -1,7 +1,12 @@
-DEF NAME_LENGTH EQU 11
-DEF ITEM_NAME_LENGTH EQU 13
-DEF NAME_BUFFER_LENGTH EQU 20
-DEF NAME_LENGTH_JP EQU 6
+DEF PLAYER_NAME_LENGTH EQU 8
+DEF STAT_NAME_LENGTH EQU 10
+DEF NAME_LENGTH EQU 11
+DEF ITEM_NAME_LENGTH EQU 13
+DEF TRAINER_NAME_LENGTH EQU 13
+DEF MOVE_NAME_LENGTH EQU 14
+DEF GYM_CITY_LENGTH EQU 17
+DEF NAME_BUFFER_LENGTH EQU 20
+DEF NAME_LENGTH_JP EQU 6
; PrintNumber, PrintBCDNumber
const_def 5
diff --git a/constants/toggle_constants.asm b/constants/toggle_constants.asm
new file mode 100644
index 00000000..c44dde50
--- /dev/null
+++ b/constants/toggle_constants.asm
@@ -0,0 +1,408 @@
+DEF OFF EQU $11
+DEF ON EQU $15
+
+MACRO toggle_consts_for
+ DEF TOGGLEMAP{\1}_ID EQU const_value
+ DEF TOGGLEMAP{\1}_NAME EQUS "\1"
+ENDM
+
+; ToggleableObjectStates indexes (see data/maps/toggleable_objects.asm)
+; This lists the object_events that can be toggled by ShowObject/HideObject.
+; The constants marked with an X are never used, because those object_events
+; are not toggled on/off in any map's script.
+; (The X-ed ones are either items or static Pokemon encounters that deactivate
+; after battle and are detected in wToggleableObjectList.)
+
+ const_def
+
+ toggle_consts_for PALLET_TOWN
+ const TOGGLE_PALLET_TOWN_OAK ; 00
+
+ toggle_consts_for VIRIDIAN_CITY
+ const TOGGLE_LYING_OLD_MAN ; 01
+ const TOGGLE_OLD_MAN_1 ; 02
+ const TOGGLE_OLD_MAN_2 ; 03
+
+ toggle_consts_for PEWTER_CITY
+ const TOGGLE_MUSEUM_GUY ; 04
+ const TOGGLE_GYM_GUY ; 05
+
+ toggle_consts_for CERULEAN_CITY
+ const TOGGLE_CERULEAN_RIVAL ; 06
+ const TOGGLE_CERULEAN_ROCKET ; 07
+ const TOGGLE_CERULEAN_GUARD_1 ; 08
+ const TOGGLE_CERULEAN_CAVE_GUY ; 09
+ const TOGGLE_CERULEAN_GUARD_2 ; 0A
+
+ toggle_consts_for SAFFRON_CITY
+ const TOGGLE_SAFFRON_CITY_1 ; 0B
+ const TOGGLE_SAFFRON_CITY_2 ; 0C
+ const TOGGLE_SAFFRON_CITY_3 ; 0D
+ const TOGGLE_SAFFRON_CITY_4 ; 0E
+ const TOGGLE_SAFFRON_CITY_5 ; 0F
+ const TOGGLE_SAFFRON_CITY_6 ; 10
+ const TOGGLE_SAFFRON_CITY_7 ; 11
+ const TOGGLE_SAFFRON_CITY_8 ; 12
+ const TOGGLE_SAFFRON_CITY_9 ; 13
+ const TOGGLE_SAFFRON_CITY_A ; 14
+ const TOGGLE_SAFFRON_CITY_B ; 15
+ const TOGGLE_SAFFRON_CITY_C ; 16
+ const TOGGLE_SAFFRON_CITY_D ; 17
+ const TOGGLE_SAFFRON_CITY_E ; 18
+ const TOGGLE_SAFFRON_CITY_F ; 19
+
+ toggle_consts_for ROUTE_2
+ const TOGGLE_ROUTE_2_ITEM_1 ; 1A X
+ const TOGGLE_ROUTE_2_ITEM_2 ; 1B X
+
+ toggle_consts_for ROUTE_4
+ const TOGGLE_ROUTE_4_ITEM ; 1C X
+
+ toggle_consts_for ROUTE_9
+ const TOGGLE_ROUTE_9_ITEM ; 1D X
+
+ toggle_consts_for ROUTE_12
+ const TOGGLE_ROUTE_12_SNORLAX ; 1E
+ const TOGGLE_ROUTE_12_ITEM_1 ; 1F X
+ const TOGGLE_ROUTE_12_ITEM_2 ; 20 X
+
+ toggle_consts_for ROUTE_15
+ const TOGGLE_ROUTE_15_ITEM ; 21 X
+
+ toggle_consts_for ROUTE_16
+ const TOGGLE_ROUTE_16_SNORLAX ; 22
+
+ toggle_consts_for ROUTE_22
+ const TOGGLE_ROUTE_22_RIVAL_1 ; 23
+ const TOGGLE_ROUTE_22_RIVAL_2 ; 24
+
+ toggle_consts_for ROUTE_24
+ const TOGGLE_NUGGET_BRIDGE_GUY ; 25
+ const TOGGLE_ROUTE_24_ITEM ; 26 X
+
+ toggle_consts_for ROUTE_25
+ const TOGGLE_ROUTE_25_ITEM ; 27 X
+
+ toggle_consts_for BLUES_HOUSE
+ const TOGGLE_DAISY_SITTING ; 28
+ const TOGGLE_DAISY_WALKING ; 29
+ const TOGGLE_TOWN_MAP ; 2A
+
+ toggle_consts_for OAKS_LAB
+ const TOGGLE_OAKS_LAB_RIVAL ; 2B
+ const TOGGLE_STARTER_BALL_1 ; 2C
+ const TOGGLE_OAKS_LAB_OAK_1 ; 2D
+ const TOGGLE_POKEDEX_1 ; 2E
+ const TOGGLE_POKEDEX_2 ; 2F
+ const TOGGLE_OAKS_LAB_OAK_2 ; 30
+
+ toggle_consts_for VIRIDIAN_GYM
+ const TOGGLE_VIRIDIAN_GYM_GIOVANNI ; 31
+ const TOGGLE_VIRIDIAN_GYM_ITEM ; 32 X
+
+ toggle_consts_for MUSEUM_1F
+ const TOGGLE_OLD_AMBER ; 33
+
+ toggle_consts_for CERULEAN_MELANIES_HOUSE
+ const TOGGLE_CERULEAN_BULBASAUR ; 34
+
+ toggle_consts_for CERULEAN_CAVE_1F
+ const TOGGLE_CERULEAN_CAVE_1F_ITEM_1 ; 35 X
+ const TOGGLE_CERULEAN_CAVE_1F_ITEM_2 ; 36 X
+ const TOGGLE_CERULEAN_CAVE_1F_ITEM_3 ; 37 X
+ const TOGGLE_CERULEAN_CAVE_1F_ITEM_4 ; 38 X
+
+ toggle_consts_for POKEMON_TOWER_2F
+ const TOGGLE_POKEMON_TOWER_2F_RIVAL ; 39
+
+ toggle_consts_for POKEMON_TOWER_3F
+ const TOGGLE_POKEMON_TOWER_3F_ITEM ; 3A X
+
+ toggle_consts_for POKEMON_TOWER_4F
+ const TOGGLE_POKEMON_TOWER_4F_ITEM_1 ; 3B X
+ const TOGGLE_POKEMON_TOWER_4F_ITEM_2 ; 3C X
+ const TOGGLE_POKEMON_TOWER_4F_ITEM_3 ; 3D X
+
+ toggle_consts_for POKEMON_TOWER_5F
+ const TOGGLE_POKEMON_TOWER_5F_ITEM ; 3E X
+
+ toggle_consts_for POKEMON_TOWER_6F
+ const TOGGLE_POKEMON_TOWER_6F_ITEM_1 ; 3F X
+ const TOGGLE_POKEMON_TOWER_6F_ITEM_2 ; 40 X
+
+ toggle_consts_for POKEMON_TOWER_7F
+ const TOGGLE_POKEMON_TOWER_7F_JESSIE ; 41
+ const TOGGLE_POKEMON_TOWER_7F_JAMES ; 42
+ const TOGGLE_POKEMON_TOWER_7F_MR_FUJI ; 43
+
+ toggle_consts_for MR_FUJIS_HOUSE
+ const TOGGLE_MR_FUJIS_HOUSE_MR_FUJI ; 44
+
+ toggle_consts_for CELADON_MANSION_ROOF_HOUSE
+ const TOGGLE_CELADON_MANSION_EEVEE_GIFT ; 45
+
+ toggle_consts_for GAME_CORNER
+ const TOGGLE_GAME_CORNER_ROCKET ; 46
+
+ toggle_consts_for WARDENS_HOUSE
+ const TOGGLE_WARDENS_HOUSE_ITEM ; 47 X
+
+ toggle_consts_for POKEMON_MANSION_1F
+ const TOGGLE_POKEMON_MANSION_1F_ITEM_1 ; 48 X
+ const TOGGLE_POKEMON_MANSION_1F_ITEM_2 ; 49 X
+
+ toggle_consts_for FIGHTING_DOJO
+ const TOGGLE_FIGHTING_DOJO_GIFT_1 ; 4A
+ const TOGGLE_FIGHTING_DOJO_GIFT_2 ; 4B
+
+ toggle_consts_for SILPH_CO_1F
+ const TOGGLE_SILPH_CO_1F_RECEPTIONIST ; 4C
+
+ toggle_consts_for POWER_PLANT
+ const TOGGLE_VOLTORB_1 ; 4D X
+ const TOGGLE_VOLTORB_2 ; 4E X
+ const TOGGLE_VOLTORB_3 ; 4F X
+ const TOGGLE_ELECTRODE_1 ; 50 X
+ const TOGGLE_VOLTORB_4 ; 51 X
+ const TOGGLE_VOLTORB_5 ; 52 X
+ const TOGGLE_ELECTRODE_2 ; 53 X
+ const TOGGLE_VOLTORB_6 ; 54 X
+ const TOGGLE_ZAPDOS ; 55 X
+ const TOGGLE_POWER_PLANT_ITEM_1 ; 56 X
+ const TOGGLE_POWER_PLANT_ITEM_2 ; 57 X
+ const TOGGLE_POWER_PLANT_ITEM_3 ; 58 X
+ const TOGGLE_POWER_PLANT_ITEM_4 ; 59 X
+ const TOGGLE_POWER_PLANT_ITEM_5 ; 5A X
+
+ toggle_consts_for VICTORY_ROAD_2F
+ const TOGGLE_MOLTRES ; 5B X
+ const TOGGLE_VICTORY_ROAD_2F_ITEM_1 ; 5C X
+ const TOGGLE_VICTORY_ROAD_2F_ITEM_2 ; 5D X
+ const TOGGLE_VICTORY_ROAD_2F_ITEM_3 ; 5E X
+ const TOGGLE_VICTORY_ROAD_2F_ITEM_4 ; 5F X
+ const TOGGLE_VICTORY_ROAD_2F_BOULDER ; 60
+
+ toggle_consts_for BILLS_HOUSE
+ const TOGGLE_BILL_POKEMON ; 61
+ const TOGGLE_BILL_1 ; 62
+ const TOGGLE_BILL_2 ; 63
+
+ toggle_consts_for VIRIDIAN_FOREST
+ const TOGGLE_VIRIDIAN_FOREST_ITEM_1 ; 64 X
+ const TOGGLE_VIRIDIAN_FOREST_ITEM_2 ; 65 X
+ const TOGGLE_VIRIDIAN_FOREST_ITEM_3 ; 66 X
+
+ toggle_consts_for MT_MOON_1F
+ const TOGGLE_MT_MOON_1F_ITEM_1 ; 67 X
+ const TOGGLE_MT_MOON_1F_ITEM_2 ; 68 X
+ const TOGGLE_MT_MOON_1F_ITEM_3 ; 69 X
+ const TOGGLE_MT_MOON_1F_ITEM_4 ; 6A X
+ const TOGGLE_MT_MOON_1F_ITEM_5 ; 6B X
+ const TOGGLE_MT_MOON_1F_ITEM_6 ; 6C X
+
+ toggle_consts_for MT_MOON_B2F
+ const TOGGLE_MT_MOON_B2F_JESSIE ; 6D
+ const TOGGLE_MT_MOON_B2F_JAMES ; 6E
+ const TOGGLE_MT_MOON_B2F_FOSSIL_1 ; 6F
+ const TOGGLE_MT_MOON_B2F_FOSSIL_2 ; 70
+ const TOGGLE_MT_MOON_B2F_ITEM_1 ; 71 X
+ const TOGGLE_MT_MOON_B2F_ITEM_2 ; 72 X
+
+ toggle_consts_for SS_ANNE_2F
+ const TOGGLE_SS_ANNE_2F_RIVAL ; 73
+
+ toggle_consts_for SS_ANNE_1F_ROOMS
+ const TOGGLE_SS_ANNE_1F_ROOMS_ITEM ; 74 X
+
+ toggle_consts_for SS_ANNE_2F_ROOMS
+ const TOGGLE_SS_ANNE_2F_ROOMS_ITEM_1 ; 75 X
+ const TOGGLE_SS_ANNE_2F_ROOMS_ITEM_2 ; 76 X
+
+ toggle_consts_for SS_ANNE_B1F_ROOMS
+ const TOGGLE_SS_ANNE_B1F_ROOMS_ITEM_1 ; 77 X
+ const TOGGLE_SS_ANNE_B1F_ROOMS_ITEM_2 ; 78 X
+ const TOGGLE_SS_ANNE_B1F_ROOMS_ITEM_3 ; 79 X
+
+ toggle_consts_for VICTORY_ROAD_3F
+ const TOGGLE_VICTORY_ROAD_3F_ITEM_1 ; 7A X
+ const TOGGLE_VICTORY_ROAD_3F_ITEM_2 ; 7B X
+ const TOGGLE_VICTORY_ROAD_3F_BOULDER ; 7C
+
+ toggle_consts_for ROCKET_HIDEOUT_B1F
+ const TOGGLE_ROCKET_HIDEOUT_B1F_ITEM_1 ; 7D X
+ const TOGGLE_ROCKET_HIDEOUT_B1F_ITEM_2 ; 7E X
+
+ toggle_consts_for ROCKET_HIDEOUT_B2F
+ const TOGGLE_ROCKET_HIDEOUT_B2F_ITEM_1 ; 7F X
+ const TOGGLE_ROCKET_HIDEOUT_B2F_ITEM_2 ; 80 X
+ const TOGGLE_ROCKET_HIDEOUT_B2F_ITEM_3 ; 81 X
+ const TOGGLE_ROCKET_HIDEOUT_B2F_ITEM_4 ; 82 X
+
+ toggle_consts_for ROCKET_HIDEOUT_B3F
+ const TOGGLE_ROCKET_HIDEOUT_B3F_ITEM_1 ; 83 X
+ const TOGGLE_ROCKET_HIDEOUT_B3F_ITEM_2 ; 84 X
+
+ toggle_consts_for ROCKET_HIDEOUT_B4F
+ const TOGGLE_ROCKET_HIDEOUT_B4F_GIOVANNI ; 85
+ const TOGGLE_ROCKET_HIDEOUT_B4F_JAMES ; 86
+ const TOGGLE_ROCKET_HIDEOUT_B4F_JESSIE ; 87
+ const TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_1 ; 88 X
+ const TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_2 ; 89 X
+ const TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_3 ; 8A X
+ const TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_4 ; 8B
+ const TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_5 ; 8C
+
+ toggle_consts_for SILPH_CO_2F
+ const TOGGLE_SILPH_CO_2F_1 ; 8D XXX never (de)activated?
+ const TOGGLE_SILPH_CO_2F_2 ; 8E
+ const TOGGLE_SILPH_CO_2F_3 ; 8F
+ const TOGGLE_SILPH_CO_2F_4 ; 90
+ const TOGGLE_SILPH_CO_2F_5 ; 91
+
+ toggle_consts_for SILPH_CO_3F
+ const TOGGLE_SILPH_CO_3F_1 ; 92
+ const TOGGLE_SILPH_CO_3F_2 ; 93
+ const TOGGLE_SILPH_CO_3F_ITEM ; 94 X
+
+ toggle_consts_for SILPH_CO_4F
+ const TOGGLE_SILPH_CO_4F_1 ; 95
+ const TOGGLE_SILPH_CO_4F_2 ; 96
+ const TOGGLE_SILPH_CO_4F_3 ; 97
+ const TOGGLE_SILPH_CO_4F_ITEM_1 ; 98 X
+ const TOGGLE_SILPH_CO_4F_ITEM_2 ; 99 X
+ const TOGGLE_SILPH_CO_4F_ITEM_3 ; 9A X
+
+ toggle_consts_for SILPH_CO_5F
+ const TOGGLE_SILPH_CO_5F_1 ; 9B
+ const TOGGLE_SILPH_CO_5F_2 ; 9C
+ const TOGGLE_SILPH_CO_5F_3 ; 9D
+ const TOGGLE_SILPH_CO_5F_4 ; 9E
+ const TOGGLE_SILPH_CO_5F_ITEM_1 ; 9F X
+ const TOGGLE_SILPH_CO_5F_ITEM_2 ; A0 X
+ const TOGGLE_SILPH_CO_5F_ITEM_3 ; A1 X
+
+ toggle_consts_for SILPH_CO_6F
+ const TOGGLE_SILPH_CO_6F_1 ; A2
+ const TOGGLE_SILPH_CO_6F_2 ; A3
+ const TOGGLE_SILPH_CO_6F_3 ; A4
+ const TOGGLE_SILPH_CO_6F_ITEM_1 ; A5 X
+ const TOGGLE_SILPH_CO_6F_ITEM_2 ; A6 X
+
+ toggle_consts_for SILPH_CO_7F
+ const TOGGLE_SILPH_CO_7F_1 ; A7
+ const TOGGLE_SILPH_CO_7F_2 ; A8
+ const TOGGLE_SILPH_CO_7F_3 ; A9
+ const TOGGLE_SILPH_CO_7F_4 ; AA
+ const TOGGLE_SILPH_CO_7F_RIVAL ; AB
+ const TOGGLE_SILPH_CO_7F_ITEM_1 ; AC X
+ const TOGGLE_SILPH_CO_7F_ITEM_2 ; AD X
+ const TOGGLE_SILPH_CO_7F_8 ; AE XXX sprite doesn't exist
+
+ toggle_consts_for SILPH_CO_8F
+ const TOGGLE_SILPH_CO_8F_1 ; AF
+ const TOGGLE_SILPH_CO_8F_2 ; B0
+ const TOGGLE_SILPH_CO_8F_3 ; B1
+
+ toggle_consts_for SILPH_CO_9F
+ const TOGGLE_SILPH_CO_9F_1 ; B2
+ const TOGGLE_SILPH_CO_9F_2 ; B3
+ const TOGGLE_SILPH_CO_9F_3 ; B4
+
+ toggle_consts_for SILPH_CO_10F
+ const TOGGLE_SILPH_CO_10F_1 ; B5
+ const TOGGLE_SILPH_CO_10F_2 ; B6
+ const TOGGLE_SILPH_CO_10F_3 ; B7 XXX never (de)activated?
+ const TOGGLE_SILPH_CO_10F_ITEM_1 ; B8 X
+ const TOGGLE_SILPH_CO_10F_ITEM_2 ; B9 X
+ const TOGGLE_SILPH_CO_10F_ITEM_3 ; BA X
+
+ toggle_consts_for SILPH_CO_11F
+ const TOGGLE_SILPH_CO_11F_1 ; BB
+ const TOGGLE_SILPH_CO_11F_JAMES ; BC
+ const TOGGLE_SILPH_CO_11F_2 ; BD
+ const TOGGLE_SILPH_CO_11F_JESSIE ; BE
+
+ toggle_consts_for UNUSED_MAP_F4
+ const TOGGLE_UNUSED_MAP_F4_1 ; BF XXX sprite doesn't exist
+
+ toggle_consts_for POKEMON_MANSION_2F
+ const TOGGLE_POKEMON_MANSION_2F_ITEM ; C0 X
+
+ toggle_consts_for POKEMON_MANSION_3F
+ const TOGGLE_POKEMON_MANSION_3F_ITEM_1 ; C1 X
+ const TOGGLE_POKEMON_MANSION_3F_ITEM_2 ; C2 X
+
+ toggle_consts_for POKEMON_MANSION_B1F
+ const TOGGLE_POKEMON_MANSION_B1F_ITEM_1 ; C3 X
+ const TOGGLE_POKEMON_MANSION_B1F_ITEM_2 ; C4 X
+ const TOGGLE_POKEMON_MANSION_B1F_ITEM_3 ; C5 X
+ const TOGGLE_POKEMON_MANSION_B1F_ITEM_4 ; C6 X
+ const TOGGLE_POKEMON_MANSION_B1F_ITEM_5 ; C7 X
+
+ toggle_consts_for SAFARI_ZONE_EAST
+ const TOGGLE_SAFARI_ZONE_EAST_ITEM_1 ; C8 X
+ const TOGGLE_SAFARI_ZONE_EAST_ITEM_2 ; C9 X
+ const TOGGLE_SAFARI_ZONE_EAST_ITEM_3 ; CA X
+ const TOGGLE_SAFARI_ZONE_EAST_ITEM_4 ; CB X
+
+ toggle_consts_for SAFARI_ZONE_NORTH
+ const TOGGLE_SAFARI_ZONE_NORTH_ITEM_1 ; CC X
+ const TOGGLE_SAFARI_ZONE_NORTH_ITEM_2 ; CD X
+
+ toggle_consts_for SAFARI_ZONE_WEST
+ const TOGGLE_SAFARI_ZONE_WEST_ITEM_1 ; CE X
+ const TOGGLE_SAFARI_ZONE_WEST_ITEM_2 ; CF X
+ const TOGGLE_SAFARI_ZONE_WEST_ITEM_3 ; D0 X
+ const TOGGLE_SAFARI_ZONE_WEST_ITEM_4 ; D1 X
+
+ toggle_consts_for SAFARI_ZONE_CENTER
+ const TOGGLE_SAFARI_ZONE_CENTER_ITEM ; D2 X
+
+ toggle_consts_for CERULEAN_CAVE_2F
+ const TOGGLE_CERULEAN_CAVE_2F_ITEM_1 ; D3 X
+ const TOGGLE_CERULEAN_CAVE_2F_ITEM_2 ; D4 X
+ const TOGGLE_CERULEAN_CAVE_2F_ITEM_3 ; D5 X
+ const TOGGLE_CERULEAN_CAVE_2F_ITEM_4 ; D6 X
+
+ toggle_consts_for CERULEAN_CAVE_B1F
+ const TOGGLE_MEWTWO ; D7 X
+ const TOGGLE_CERULEAN_CAVE_B1F_ITEM_1 ; D8 X
+ const TOGGLE_CERULEAN_CAVE_B1F_ITEM_2 ; D9 X
+ const TOGGLE_CERULEAN_CAVE_B1F_ITEM_3 ; DA X
+ const TOGGLE_CERULEAN_CAVE_B1F_ITEM_4 ; DB X
+
+ toggle_consts_for VICTORY_ROAD_1F
+ const TOGGLE_VICTORY_ROAD_1F_ITEM_1 ; DC X
+ const TOGGLE_VICTORY_ROAD_1F_ITEM_2 ; DD X
+
+ toggle_consts_for CHAMPIONS_ROOM
+ const TOGGLE_CHAMPIONS_ROOM_OAK ; DE
+
+ toggle_consts_for SEAFOAM_ISLANDS_1F
+ const TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_1 ; DF
+ const TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_2 ; E0
+
+ toggle_consts_for SEAFOAM_ISLANDS_B1F
+ const TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_1 ; E1
+ const TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_2 ; E2
+
+ toggle_consts_for SEAFOAM_ISLANDS_B2F
+ const TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_1 ; E3
+ const TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_2 ; E4
+
+ toggle_consts_for SEAFOAM_ISLANDS_B3F
+ const TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_1 ; E5
+ const TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_2 ; E6
+ const TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_3 ; E7
+ const TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_4 ; E8
+
+ toggle_consts_for SEAFOAM_ISLANDS_B4F
+ const TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_1 ; E9
+ const TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_2 ; EA
+ const TOGGLE_ARTICUNO ; EB X
+
+ const TOGGLE_DAISY_SITTING_COPY ; EC
+ const TOGGLE_DAISY_WALKING_COPY ; ED
+ const TOGGLE_TOWN_MAP_COPY ; EE
+
+DEF NUM_TOGGLEABLE_OBJECTS EQU const_value
diff --git a/data/battle/stat_mod_names.asm b/data/battle/stat_mod_names.asm
index 63c956d7..6c68db4e 100644
--- a/data/battle/stat_mod_names.asm
+++ b/data/battle/stat_mod_names.asm
@@ -2,7 +2,7 @@
; The relevant move effect IDs correspond to the stats
StatModTextStrings:
- list_start
+ list_start STAT_NAME_LENGTH - 1
li "ATTACK"
li "DEFENSE"
li "SPEED"
diff --git a/data/battle/stat_names.asm b/data/battle/stat_names.asm
index 30401a99..08685e83 100644
--- a/data/battle/stat_names.asm
+++ b/data/battle/stat_names.asm
@@ -1,7 +1,7 @@
; Stats that vitamins can raise or lower
VitaminStats:
- list_start
+ list_start STAT_NAME_LENGTH - 1
li "HEALTH"
li "ATTACK"
li "DEFENSE"
diff --git a/data/events/hidden_events.asm b/data/events/hidden_events.asm
new file mode 100644
index 00000000..ce43118f
--- /dev/null
+++ b/data/events/hidden_events.asm
@@ -0,0 +1,570 @@
+MACRO hidden_event_map
+ db \1 ; map id
+ dw HiddenEventsFor_\1
+ENDM
+
+HiddenEventMaps:
+ hidden_event_map SILPH_CO_11F
+ hidden_event_map SILPH_CO_5F
+ hidden_event_map SILPH_CO_9F
+ hidden_event_map POKEMON_MANSION_2F
+ hidden_event_map POKEMON_MANSION_3F
+ hidden_event_map POKEMON_MANSION_B1F
+ hidden_event_map SAFARI_ZONE_WEST
+ hidden_event_map CERULEAN_CAVE_2F
+ hidden_event_map CERULEAN_CAVE_B1F
+ hidden_event_map UNUSED_MAP_6F
+ hidden_event_map SEAFOAM_ISLANDS_B2F
+ hidden_event_map SEAFOAM_ISLANDS_B3F
+ hidden_event_map SEAFOAM_ISLANDS_B4F
+ hidden_event_map VIRIDIAN_FOREST
+ hidden_event_map MT_MOON_B2F
+ hidden_event_map SS_ANNE_B1F_ROOMS
+ hidden_event_map SS_ANNE_KITCHEN
+ hidden_event_map UNDERGROUND_PATH_NORTH_SOUTH
+ hidden_event_map UNDERGROUND_PATH_WEST_EAST
+ hidden_event_map ROCKET_HIDEOUT_B1F
+ hidden_event_map ROCKET_HIDEOUT_B3F
+ hidden_event_map ROCKET_HIDEOUT_B4F
+ hidden_event_map ROUTE_10
+ hidden_event_map ROCK_TUNNEL_POKECENTER
+ hidden_event_map POWER_PLANT
+ hidden_event_map ROUTE_11
+ hidden_event_map ROUTE_12
+ hidden_event_map ROUTE_13
+ hidden_event_map ROUTE_15_GATE_2F
+ hidden_event_map ROUTE_17
+ hidden_event_map ROUTE_23
+ hidden_event_map VICTORY_ROAD_2F
+ hidden_event_map ROUTE_25
+ hidden_event_map BILLS_HOUSE
+ hidden_event_map ROUTE_4
+ hidden_event_map MT_MOON_POKECENTER
+ hidden_event_map ROUTE_9
+ hidden_event_map TRADE_CENTER
+ hidden_event_map COLOSSEUM
+ hidden_event_map INDIGO_PLATEAU
+ hidden_event_map INDIGO_PLATEAU_LOBBY
+ hidden_event_map COPYCATS_HOUSE_2F
+ hidden_event_map FIGHTING_DOJO
+ hidden_event_map SAFFRON_GYM
+ hidden_event_map SAFFRON_POKECENTER
+ hidden_event_map REDS_HOUSE_2F
+ hidden_event_map BLUES_HOUSE
+ hidden_event_map OAKS_LAB
+ hidden_event_map VIRIDIAN_CITY
+ hidden_event_map VIRIDIAN_POKECENTER
+ hidden_event_map VIRIDIAN_SCHOOL_HOUSE
+ hidden_event_map VIRIDIAN_GYM
+ hidden_event_map MUSEUM_1F
+ hidden_event_map PEWTER_GYM
+ hidden_event_map PEWTER_POKECENTER
+ hidden_event_map CERULEAN_CITY
+ hidden_event_map CERULEAN_POKECENTER
+ hidden_event_map CERULEAN_GYM
+ hidden_event_map BIKE_SHOP
+ hidden_event_map CERULEAN_CAVE_1F
+ hidden_event_map LAVENDER_POKECENTER
+ hidden_event_map POKEMON_TOWER_5F
+ hidden_event_map MR_FUJIS_HOUSE
+ hidden_event_map VERMILION_CITY
+ hidden_event_map VERMILION_POKECENTER
+ hidden_event_map POKEMON_FAN_CLUB
+ hidden_event_map VERMILION_GYM
+ hidden_event_map CELADON_CITY
+ hidden_event_map CELADON_HOTEL
+ hidden_event_map CELADON_MANSION_2F
+ hidden_event_map CELADON_MANSION_ROOF_HOUSE
+ hidden_event_map CELADON_POKECENTER
+ hidden_event_map CELADON_GYM
+ hidden_event_map GAME_CORNER
+ hidden_event_map FUCHSIA_POKECENTER
+ hidden_event_map SAFARI_ZONE_GATE
+ hidden_event_map FUCHSIA_GYM
+ hidden_event_map POKEMON_MANSION_1F
+ hidden_event_map CINNABAR_GYM
+ hidden_event_map CINNABAR_LAB_FOSSIL_ROOM
+ hidden_event_map CINNABAR_POKECENTER
+ db -1 ; end
+
+MACRO hidden_events_for
+ HiddenEventsFor_\1:
+ENDM
+
+MACRO hidden_event
+ db \2 ; y coord
+ db \1 ; x coord
+ db \4 ; function argument
+ dba \3 ; event function
+ENDM
+
+MACRO hidden_text_predef
+ db \2 ; y coord
+ db \1 ; x coord
+ db_tx_pre \4 ; text id
+ dba \3 ; event function
+ENDM
+
+; Some hidden events use SPRITE_FACING_* values,
+; but these do not actually prevent the player
+; from interacting with them in any direction.
+DEF ANY_FACING EQU $d0
+
+ hidden_events_for SILPH_CO_11F
+ hidden_event 10, 12, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for SILPH_CO_5F
+ hidden_event 12, 3, HiddenItems, ELIXER
+ db -1 ; end
+
+ hidden_events_for SILPH_CO_9F
+ hidden_event 2, 15, HiddenItems, MAX_POTION
+ db -1 ; end
+
+ hidden_events_for POKEMON_MANSION_2F
+ hidden_event 2, 11, Mansion2Script_Switches, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for POKEMON_MANSION_3F
+ hidden_event 1, 9, HiddenItems, MAX_REVIVE
+ hidden_event 10, 5, Mansion3Script_Switches, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for POKEMON_MANSION_B1F
+ hidden_event 1, 9, HiddenItems, RARE_CANDY
+ hidden_event 20, 3, Mansion4Script_Switches, SPRITE_FACING_UP
+ hidden_event 18, 25, Mansion4Script_Switches, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for SAFARI_ZONE_WEST
+ hidden_event 6, 5, HiddenItems, REVIVE
+ db -1 ; end
+
+ hidden_events_for CERULEAN_CAVE_2F
+ hidden_event 16, 13, HiddenItems, PP_UP
+ db -1 ; end
+
+ hidden_events_for CERULEAN_CAVE_B1F
+ hidden_event 8, 14, HiddenItems, PP_UP
+ db -1 ; end
+
+ hidden_events_for UNUSED_MAP_6F
+ hidden_event 14, 11, HiddenItems, MAX_ELIXER
+ db -1 ; end
+
+ hidden_events_for SEAFOAM_ISLANDS_B2F
+ hidden_event 15, 15, HiddenItems, NUGGET
+ db -1 ; end
+
+ hidden_events_for SEAFOAM_ISLANDS_B3F
+ hidden_event 9, 16, HiddenItems, MAX_ELIXER
+ db -1 ; end
+
+ hidden_events_for SEAFOAM_ISLANDS_B4F
+ hidden_event 25, 17, HiddenItems, ULTRA_BALL
+ db -1 ; end
+
+ hidden_events_for VIRIDIAN_FOREST
+ hidden_event 1, 18, HiddenItems, POTION
+ hidden_event 16, 42, HiddenItems, ANTIDOTE
+ db -1 ; end
+
+ hidden_events_for MT_MOON_B2F
+ hidden_event 18, 12, HiddenItems, MOON_STONE
+ hidden_event 33, 9, HiddenItems, ETHER
+ db -1 ; end
+
+ hidden_events_for SS_ANNE_B1F_ROOMS
+ hidden_event 3, 1, HiddenItems, HYPER_POTION
+ db -1 ; end
+
+ hidden_events_for SS_ANNE_KITCHEN
+ hidden_event 13, 5, PrintTrashText, SPRITE_FACING_DOWN
+ hidden_event 13, 7, PrintTrashText, SPRITE_FACING_DOWN
+ hidden_event 13, 9, HiddenItems, GREAT_BALL
+ db -1 ; end
+
+ hidden_events_for UNDERGROUND_PATH_NORTH_SOUTH
+ hidden_event 3, 4, HiddenItems, FULL_RESTORE
+ hidden_event 4, 34, HiddenItems, X_SPECIAL
+ db -1 ; end
+
+ hidden_events_for UNDERGROUND_PATH_WEST_EAST
+ hidden_event 12, 2, HiddenItems, NUGGET
+ hidden_event 21, 5, HiddenItems, ELIXER
+ db -1 ; end
+
+ hidden_events_for ROCKET_HIDEOUT_B1F
+ hidden_event 21, 15, HiddenItems, PP_UP
+ db -1 ; end
+
+ hidden_events_for ROCKET_HIDEOUT_B3F
+ hidden_event 27, 17, HiddenItems, NUGGET
+ db -1 ; end
+
+ hidden_events_for ROCKET_HIDEOUT_B4F
+ hidden_event 25, 1, HiddenItems, SUPER_POTION
+ db -1 ; end
+
+ hidden_events_for ROUTE_10
+ hidden_event 9, 17, HiddenItems, SUPER_POTION
+ hidden_event 16, 53, HiddenItems, MAX_ETHER
+ db -1 ; end
+
+ hidden_events_for ROCK_TUNNEL_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for POWER_PLANT
+ hidden_event 17, 16, HiddenItems, MAX_ELIXER
+ hidden_event 12, 1, HiddenItems, PP_UP
+ db -1 ; end
+
+ hidden_events_for ROUTE_11
+ hidden_event 48, 5, HiddenItems, ESCAPE_ROPE
+ db -1 ; end
+
+ hidden_events_for ROUTE_12
+ hidden_event 2, 63, HiddenItems, HYPER_POTION
+ db -1 ; end
+
+ hidden_events_for ROUTE_13
+ hidden_event 1, 14, HiddenItems, PP_UP
+ hidden_event 16, 13, HiddenItems, CALCIUM
+ db -1 ; end
+
+ hidden_events_for ROUTE_15_GATE_2F
+ hidden_event 1, 2, Route15GateLeftBinoculars, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for ROUTE_17
+ hidden_event 15, 14, HiddenItems, RARE_CANDY
+ hidden_event 8, 45, HiddenItems, FULL_RESTORE
+ hidden_event 17, 72, HiddenItems, PP_UP
+ hidden_event 4, 91, HiddenItems, MAX_REVIVE
+ hidden_event 8, 121, HiddenItems, MAX_ELIXER
+ db -1 ; end
+
+ hidden_events_for ROUTE_23
+ hidden_event 9, 44, HiddenItems, FULL_RESTORE
+ hidden_event 19, 70, HiddenItems, ULTRA_BALL
+ hidden_event 8, 90, HiddenItems, MAX_ETHER
+ db -1 ; end
+
+ hidden_events_for VICTORY_ROAD_2F
+ hidden_event 5, 2, HiddenItems, ULTRA_BALL
+ hidden_event 26, 7, HiddenItems, FULL_RESTORE
+ db -1 ; end
+
+ hidden_events_for ROUTE_25
+ hidden_event 38, 3, HiddenItems, ETHER
+ hidden_event 10, 1, HiddenItems, ELIXER
+ db -1 ; end
+
+ hidden_events_for BILLS_HOUSE
+ hidden_event 1, 4, BillsHousePC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for ROUTE_4
+ hidden_event 40, 3, HiddenItems, GREAT_BALL
+ db -1 ; end
+
+ hidden_events_for MT_MOON_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for ROUTE_9
+ hidden_event 14, 7, HiddenItems, ETHER
+ db -1 ; end
+
+ hidden_events_for TRADE_CENTER
+ hidden_event 5, 4, CableClubRightGameboy, ANY_FACING
+ hidden_event 4, 4, CableClubLeftGameboy, ANY_FACING
+ db -1 ; end
+
+ hidden_events_for COLOSSEUM
+ hidden_event 5, 4, CableClubRightGameboy, ANY_FACING
+ hidden_event 4, 4, CableClubLeftGameboy, ANY_FACING
+ db -1 ; end
+
+ hidden_events_for INDIGO_PLATEAU
+ hidden_event 8, 13, PrintIndigoPlateauHQText, $ff ; inaccessible
+ hidden_event 11, 13, PrintIndigoPlateauHQText, SPRITE_FACING_DOWN ; inaccessible
+ db -1 ; end
+
+ hidden_events_for INDIGO_PLATEAU_LOBBY
+ hidden_event 15, 7, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for COPYCATS_HOUSE_2F
+ hidden_event 1, 1, HiddenItems, NUGGET
+ db -1 ; end
+
+ hidden_events_for FIGHTING_DOJO
+ hidden_event 3, 9, PrintFightingDojoText, SPRITE_FACING_UP
+ hidden_event 6, 9, PrintFightingDojoText, SPRITE_FACING_UP
+ hidden_event 4, 0, PrintFightingDojoText2, SPRITE_FACING_UP
+ hidden_event 5, 0, PrintFightingDojoText3, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for SAFFRON_GYM
+ hidden_event 9, 15, GymStatues, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for SAFFRON_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_UP
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for REDS_HOUSE_2F
+ hidden_event 0, 1, OpenRedsPC, SPRITE_FACING_UP
+ hidden_event 3, 5, PrintRedSNESText, ANY_FACING
+ db -1 ; end
+
+ hidden_events_for BLUES_HOUSE
+ hidden_event 0, 1, PrintBookcaseText, SPRITE_FACING_UP
+ hidden_event 1, 1, PrintBookcaseText, SPRITE_FACING_UP
+ hidden_event 7, 1, PrintBookcaseText, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for OAKS_LAB
+ hidden_event 4, 0, DisplayOakLabLeftPoster, SPRITE_FACING_UP
+ hidden_event 5, 0, DisplayOakLabRightPoster, SPRITE_FACING_UP
+ hidden_event 0, 1, DisplayOakLabEmailText, SPRITE_FACING_UP
+ hidden_event 1, 1, DisplayOakLabEmailText, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for VIRIDIAN_CITY
+ hidden_event 14, 4, HiddenItems, POTION
+ db -1 ; end
+
+ hidden_events_for VIRIDIAN_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for VIRIDIAN_SCHOOL_HOUSE
+ hidden_text_predef 3, 4, PrintNotebookText, ViridianSchoolNotebook
+ hidden_text_predef 3, 0, PrintBlackboardLinkCableText, ViridianSchoolBlackboard
+ db -1 ; end
+
+ hidden_events_for VIRIDIAN_GYM
+ hidden_event 15, 15, GymStatues, SPRITE_FACING_UP
+ hidden_event 18, 15, GymStatues, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for MUSEUM_1F
+ hidden_event 2, 3, AerodactylFossil, SPRITE_FACING_UP
+ hidden_event 2, 6, KabutopsFossil, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for PEWTER_GYM
+ hidden_event 3, 10, GymStatues, SPRITE_FACING_UP
+ hidden_event 6, 10, GymStatues, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for PEWTER_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for CERULEAN_CITY
+ hidden_event 15, 8, HiddenItems, RARE_CANDY
+ db -1 ; end
+
+ hidden_events_for CERULEAN_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for CERULEAN_GYM
+ hidden_event 3, 11, GymStatues, SPRITE_FACING_UP
+ hidden_event 6, 11, GymStatues, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for BIKE_SHOP
+ hidden_event 1, 0, PrintNewBikeText, ANY_FACING
+ hidden_event 2, 1, PrintNewBikeText, ANY_FACING
+ hidden_event 1, 2, PrintNewBikeText, ANY_FACING
+ hidden_event 3, 2, PrintNewBikeText, ANY_FACING
+ hidden_event 0, 4, PrintNewBikeText, ANY_FACING
+ hidden_event 1, 5, PrintNewBikeText, ANY_FACING
+ db -1 ; end
+
+ hidden_events_for CERULEAN_CAVE_1F
+ hidden_event 18, 7, HiddenItems, PP_UP
+ db -1 ; end
+
+ hidden_events_for LAVENDER_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for POKEMON_TOWER_5F
+ hidden_event 4, 12, HiddenItems, ELIXER
+ db -1 ; end
+
+ hidden_events_for MR_FUJIS_HOUSE
+ hidden_event 0, 1, PrintMagazinesText, SPRITE_FACING_DOWN
+ hidden_event 1, 1, PrintMagazinesText, SPRITE_FACING_DOWN
+ hidden_event 7, 1, PrintMagazinesText, SPRITE_FACING_DOWN
+ db -1 ; end
+
+ hidden_events_for VERMILION_CITY
+ hidden_event 14, 11, HiddenItems, MAX_ETHER
+ db -1 ; end
+
+ hidden_events_for VERMILION_POKECENTER
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for POKEMON_FAN_CLUB
+ hidden_event 1, 0, FanClubPicture1, SPRITE_FACING_UP
+ hidden_event 6, 0, FanClubPicture2, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for VERMILION_GYM
+ hidden_event 3, 14, GymStatues, SPRITE_FACING_UP
+ hidden_event 6, 14, GymStatues, SPRITE_FACING_UP
+ hidden_event 6, 1, PrintTrashText, SPRITE_FACING_DOWN
+ ; GymTrashScript argument: [wGymTrashCanIndex]
+ hidden_event 1, 7, GymTrashScript, 0
+ hidden_event 1, 9, GymTrashScript, 1
+ hidden_event 1, 11, GymTrashScript, 2
+ hidden_event 3, 7, GymTrashScript, 3
+ hidden_event 3, 9, GymTrashScript, 4
+ hidden_event 3, 11, GymTrashScript, 5
+ hidden_event 5, 7, GymTrashScript, 6
+ hidden_event 5, 9, GymTrashScript, 7
+ hidden_event 5, 11, GymTrashScript, 8
+ hidden_event 7, 7, GymTrashScript, 9
+ hidden_event 7, 9, GymTrashScript, 10
+ hidden_event 7, 11, GymTrashScript, 11
+ hidden_event 9, 7, GymTrashScript, 12
+ hidden_event 9, 9, GymTrashScript, 13
+ hidden_event 9, 11, GymTrashScript, 14
+ db -1 ; end
+
+ hidden_events_for CELADON_CITY
+ hidden_event 48, 15, HiddenItems, PP_UP
+ db -1 ; end
+
+ hidden_events_for CELADON_HOTEL
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ db -1 ; end
+
+ hidden_events_for CELADON_MANSION_2F
+ hidden_event 0, 5, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for CELADON_MANSION_ROOF_HOUSE
+ hidden_text_predef 3, 0, PrintBlackboardLinkCableText, LinkCableHelp
+ hidden_text_predef 4, 0, PrintBlackboardLinkCableText, LinkCableHelp
+ hidden_text_predef 3, 4, PrintNotebookText, TMNotebook
+ db -1 ; end
+
+ hidden_events_for CELADON_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_LEFT
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for CELADON_GYM
+ hidden_event 3, 15, GymStatues, SPRITE_FACING_UP
+ hidden_event 6, 15, GymStatues, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for GAME_CORNER
+ hidden_event 18, 15, StartSlotMachine, ANY_FACING
+ hidden_event 18, 14, StartSlotMachine, ANY_FACING
+ hidden_event 18, 13, StartSlotMachine, ANY_FACING
+ hidden_event 18, 12, StartSlotMachine, ANY_FACING
+ hidden_event 18, 11, StartSlotMachine, ANY_FACING
+ hidden_event 18, 10, StartSlotMachine, SLOTS_SOMEONESKEYS
+ hidden_event 13, 10, StartSlotMachine, ANY_FACING
+ hidden_event 13, 11, StartSlotMachine, ANY_FACING
+ hidden_event 13, 12, StartSlotMachine, SLOTS_OUTTOLUNCH
+ hidden_event 13, 13, StartSlotMachine, ANY_FACING
+ hidden_event 13, 14, StartSlotMachine, ANY_FACING
+ hidden_event 13, 15, StartSlotMachine, ANY_FACING
+ hidden_event 12, 15, StartSlotMachine, ANY_FACING
+ hidden_event 12, 14, StartSlotMachine, ANY_FACING
+ hidden_event 12, 13, StartSlotMachine, ANY_FACING
+ hidden_event 12, 12, StartSlotMachine, ANY_FACING
+ hidden_event 12, 11, StartSlotMachine, ANY_FACING
+ hidden_event 12, 10, StartSlotMachine, ANY_FACING
+ hidden_event 7, 10, StartSlotMachine, ANY_FACING
+ hidden_event 7, 11, StartSlotMachine, ANY_FACING
+ hidden_event 7, 12, StartSlotMachine, ANY_FACING
+ hidden_event 7, 13, StartSlotMachine, ANY_FACING
+ hidden_event 7, 14, StartSlotMachine, ANY_FACING
+ hidden_event 7, 15, StartSlotMachine, ANY_FACING
+ hidden_event 6, 15, StartSlotMachine, ANY_FACING
+ hidden_event 6, 14, StartSlotMachine, ANY_FACING
+ hidden_event 6, 13, StartSlotMachine, ANY_FACING
+ hidden_event 6, 12, StartSlotMachine, SLOTS_OUTOFORDER
+ hidden_event 6, 11, StartSlotMachine, ANY_FACING
+ hidden_event 6, 10, StartSlotMachine, ANY_FACING
+ hidden_event 1, 10, StartSlotMachine, ANY_FACING
+ hidden_event 1, 11, StartSlotMachine, ANY_FACING
+ hidden_event 1, 12, StartSlotMachine, ANY_FACING
+ hidden_event 1, 13, StartSlotMachine, ANY_FACING
+ hidden_event 1, 14, StartSlotMachine, ANY_FACING
+ hidden_event 1, 15, StartSlotMachine, ANY_FACING
+ ; HiddenCoins argument: COIN + <number of coins>
+ hidden_event 0, 8, HiddenCoins, COIN+10
+ hidden_event 1, 16, HiddenCoins, COIN+10
+ hidden_event 3, 11, HiddenCoins, COIN+20
+ hidden_event 3, 14, HiddenCoins, COIN+10
+ hidden_event 4, 12, HiddenCoins, COIN+10
+ hidden_event 9, 12, HiddenCoins, COIN+20
+ hidden_event 9, 15, HiddenCoins, COIN+10
+ hidden_event 16, 14, HiddenCoins, COIN+10
+ hidden_event 10, 16, HiddenCoins, COIN+10
+ hidden_event 11, 7, HiddenCoins, COIN+40
+ hidden_event 15, 8, HiddenCoins, COIN+100
+ hidden_event 12, 15, HiddenCoins, COIN+10
+ db -1 ; end
+
+ hidden_events_for FUCHSIA_POKECENTER
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for SAFARI_ZONE_GATE
+ hidden_event 10, 1, HiddenItems, NUGGET ; inaccessible
+ db -1 ; end
+
+ hidden_events_for FUCHSIA_GYM
+ hidden_event 3, 15, GymStatues, SPRITE_FACING_UP
+ hidden_event 6, 15, GymStatues, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for POKEMON_MANSION_1F
+ hidden_event 8, 16, HiddenItems, MOON_STONE
+ hidden_event 2, 5, Mansion1Script_Switches, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for CINNABAR_GYM
+ hidden_event 17, 13, GymStatues, SPRITE_FACING_UP
+ ; PrintCinnabarQuiz argument: ([hGymGateAnswer] << 4) | [hGymGateIndex]
+ hidden_event 15, 7, PrintCinnabarQuiz, (FALSE << 4) | 1
+ hidden_event 10, 1, PrintCinnabarQuiz, (TRUE << 4) | 2
+ hidden_event 9, 7, PrintCinnabarQuiz, (TRUE << 4) | 3
+ hidden_event 9, 13, PrintCinnabarQuiz, (TRUE << 4) | 4
+ hidden_event 1, 13, PrintCinnabarQuiz, (FALSE << 4) | 5
+ hidden_event 1, 7, PrintCinnabarQuiz, (TRUE << 4) | 6
+ db -1 ; end
+
+ hidden_events_for CINNABAR_LAB_FOSSIL_ROOM
+ hidden_event 0, 4, OpenPokemonCenterPC, SPRITE_FACING_UP
+ hidden_event 2, 4, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
+
+ hidden_events_for CINNABAR_POKECENTER
+ hidden_event 0, 4, PrintBenchGuyText, SPRITE_FACING_UP
+ hidden_event 13, 3, OpenPokemonCenterPC, SPRITE_FACING_UP
+ db -1 ; end
diff --git a/data/events/hidden_objects.asm b/data/events/hidden_objects.asm
deleted file mode 100644
index 3e8ea745..00000000
--- a/data/events/hidden_objects.asm
+++ /dev/null
@@ -1,560 +0,0 @@
-HiddenObjectMaps:
- dbw SILPH_CO_11F, SilphCo11FHiddenObjects
- dbw SILPH_CO_5F, SilphCo5FHiddenObjects
- dbw SILPH_CO_9F, SilphCo9FHiddenObjects
- dbw POKEMON_MANSION_2F, Mansion2HiddenObjects
- dbw POKEMON_MANSION_3F, Mansion3HiddenObjects
- dbw POKEMON_MANSION_B1F, Mansion4HiddenObjects
- dbw SAFARI_ZONE_WEST, SafariZoneWestHiddenObjects
- dbw CERULEAN_CAVE_2F, CeruleanCave2HiddenObjects
- dbw CERULEAN_CAVE_B1F, CeruleanCave3HiddenObjects
- dbw UNUSED_MAP_6F, UnusedMap6FHiddenObjects
- dbw SEAFOAM_ISLANDS_B2F, SeafoamIslands3HiddenObjects
- dbw SEAFOAM_ISLANDS_B3F, SeafoamIslands4HiddenObjects
- dbw SEAFOAM_ISLANDS_B4F, SeafoamIslands5HiddenObjects
- dbw VIRIDIAN_FOREST, ViridianForestHiddenObjects
- dbw MT_MOON_B2F, MtMoon3HiddenObjects
- dbw SS_ANNE_B1F_ROOMS, SSAnne10HiddenObjects
- dbw SS_ANNE_KITCHEN, SSAnne6HiddenObjects
- dbw UNDERGROUND_PATH_NORTH_SOUTH, UndergroundPathNsHiddenObjects
- dbw UNDERGROUND_PATH_WEST_EAST, UndergroundPathWeHiddenObjects
- dbw ROCKET_HIDEOUT_B1F, RocketHideout1HiddenObjects
- dbw ROCKET_HIDEOUT_B3F, RocketHideout3HiddenObjects
- dbw ROCKET_HIDEOUT_B4F, RocketHideout4HiddenObjects
- dbw ROUTE_10, Route10HiddenObjects
- dbw ROCK_TUNNEL_POKECENTER, RockTunnelPokecenterHiddenObjects
- dbw POWER_PLANT, PowerPlantHiddenObjects
- dbw ROUTE_11, Route11HiddenObjects
- dbw ROUTE_12, Route12HiddenObjects
- dbw ROUTE_13, Route13HiddenObjects
- dbw ROUTE_15_GATE_2F, Route15Gate2FHiddenObjects
- dbw ROUTE_17, Route17HiddenObjects
- dbw ROUTE_23, Route23HiddenObjects
- dbw VICTORY_ROAD_2F, VictoryRoad2HiddenObjects
- dbw ROUTE_25, Route25HiddenObjects
- dbw BILLS_HOUSE, BillsHouseHiddenObjects
- dbw ROUTE_4, Route4HiddenObjects
- dbw MT_MOON_POKECENTER, MtMoonPokecenterHiddenObjects
- dbw ROUTE_9, Route9HiddenObjects
- dbw TRADE_CENTER, TradeCenterHiddenObjects
- dbw COLOSSEUM, ColosseumHiddenObjects
- dbw INDIGO_PLATEAU, IndigoPlateauHiddenObjects
- dbw INDIGO_PLATEAU_LOBBY, IndigoPlateauLobbyHiddenObjects
- dbw COPYCATS_HOUSE_2F, CopycatsHouse2FHiddenObjects
- dbw FIGHTING_DOJO, FightingDojoHiddenObjects
- dbw SAFFRON_GYM, SaffronGymHiddenObjects
- dbw SAFFRON_POKECENTER, SaffronPokecenterHiddenObjects
- dbw REDS_HOUSE_2F, RedsHouse2FHiddenObjects
- dbw BLUES_HOUSE, BluesHouseHiddenObjects
- dbw OAKS_LAB, OaksLabHiddenObjects
- dbw VIRIDIAN_CITY, ViridianCityHiddenObjects
- dbw VIRIDIAN_POKECENTER, ViridianPokecenterHiddenObjects
- dbw VIRIDIAN_SCHOOL_HOUSE, ViridianSchoolHiddenObjects
- dbw VIRIDIAN_GYM, ViridianGymHiddenObjects
- dbw MUSEUM_1F, Museum1FHiddenObjects
- dbw PEWTER_GYM, PewterGymHiddenObjects
- dbw PEWTER_POKECENTER, PewterPokecenterHiddenObjects
- dbw CERULEAN_CITY, CeruleanCityHiddenObjects
- dbw CERULEAN_POKECENTER, CeruleanPokecenterHiddenObjects
- dbw CERULEAN_GYM, CeruleanGymHiddenObjects
- dbw BIKE_SHOP, BikeShopHiddenObjects
- dbw CERULEAN_CAVE_1F, CeruleanCave1HiddenObjects
- dbw LAVENDER_POKECENTER, LavenderPokecenterHiddenObjects
- dbw POKEMON_TOWER_5F, Pokemontower5HiddenObjects
- dbw MR_FUJIS_HOUSE, LavenderHouse1HiddenObjects
- dbw VERMILION_CITY, VermilionCityHiddenObjects
- dbw VERMILION_POKECENTER, VermilionPokecenterHiddenObjects
- dbw POKEMON_FAN_CLUB, PokemonFanClubHiddenObjects
- dbw VERMILION_GYM, VermilionGymHiddenObjects
- dbw CELADON_CITY, CeladonCityHiddenObjects
- dbw CELADON_HOTEL, CeladonHotelHiddenObjects
- dbw CELADON_MANSION_2F, CeladonMansion2HiddenObjects
- dbw CELADON_MANSION_ROOF_HOUSE, CeladonMansion5HiddenObjects
- dbw CELADON_POKECENTER, CeladonPokecenterHiddenObjects
- dbw CELADON_GYM, CeladonGymHiddenObjects
- dbw GAME_CORNER, GameCornerHiddenObjects
- dbw FUCHSIA_POKECENTER, FuchsiaPokecenterHiddenObjects
- dbw SAFARI_ZONE_GATE, SafariZoneEntranceHiddenObjects
- dbw FUCHSIA_GYM, FuchsiaGymHiddenObjects
- dbw POKEMON_MANSION_1F, Mansion1HiddenObjects
- dbw CINNABAR_GYM, CinnabarGymHiddenObjects
- dbw CINNABAR_LAB_FOSSIL_ROOM, CinnabarLab4HiddenObjects
- dbw CINNABAR_POKECENTER, CinnabarPokecenterHiddenObjects
- db -1 ; end
-
-MACRO hidden_object
- db \2 ; y coord
- db \1 ; x coord
- db \3 ; item id
- dba \4 ; object routine
-ENDM
-
-MACRO hidden_text_predef
- db \2 ; y coord
- db \1 ; x coord
- db_tx_pre \3 ; text id
- dba \4 ; object routine
-ENDM
-
-; Some hidden objects use SPRITE_FACING_* values,
-; but these do not actually prevent the player
-; from interacting with them in any direction.
-DEF ANY_FACING EQU $d0
-
-SilphCo11FHiddenObjects:
- hidden_object 10, 12, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-SilphCo5FHiddenObjects:
- hidden_object 12, 3, ELIXER, HiddenItems
- db -1 ; end
-
-SilphCo9FHiddenObjects:
- hidden_object 2, 15, MAX_POTION, HiddenItems
- db -1 ; end
-
-Mansion2HiddenObjects:
- hidden_object 2, 11, SPRITE_FACING_UP, Mansion2Script_Switches
- db -1 ; end
-
-Mansion3HiddenObjects:
- hidden_object 1, 9, MAX_REVIVE, HiddenItems
- hidden_object 10, 5, SPRITE_FACING_UP, Mansion3Script_Switches
- db -1 ; end
-
-Mansion4HiddenObjects:
- hidden_object 1, 9, RARE_CANDY, HiddenItems
- hidden_object 20, 3, SPRITE_FACING_UP, Mansion4Script_Switches
- hidden_object 18, 25, SPRITE_FACING_UP, Mansion4Script_Switches
- db -1 ; end
-
-SafariZoneWestHiddenObjects:
- hidden_object 6, 5, REVIVE, HiddenItems
- db -1 ; end
-
-CeruleanCave2HiddenObjects:
- hidden_object 16, 13, PP_UP, HiddenItems
- db -1 ; end
-
-CeruleanCave3HiddenObjects:
- hidden_object 8, 14, PP_UP, HiddenItems
- db -1 ; end
-
-UnusedMap6FHiddenObjects:
- hidden_object 14, 11, MAX_ELIXER, HiddenItems
- db -1 ; end
-
-SeafoamIslands3HiddenObjects:
- hidden_object 15, 15, NUGGET, HiddenItems
- db -1 ; end
-
-SeafoamIslands4HiddenObjects:
- hidden_object 9, 16, MAX_ELIXER, HiddenItems
- db -1 ; end
-
-SeafoamIslands5HiddenObjects:
- hidden_object 25, 17, ULTRA_BALL, HiddenItems
- db -1 ; end
-
-ViridianForestHiddenObjects:
- hidden_object 1, 18, POTION, HiddenItems
- hidden_object 16, 42, ANTIDOTE, HiddenItems
- db -1 ; end
-
-MtMoon3HiddenObjects:
- hidden_object 18, 12, MOON_STONE, HiddenItems
- hidden_object 33, 9, ETHER, HiddenItems
- db -1 ; end
-
-SSAnne10HiddenObjects:
- hidden_object 3, 1, HYPER_POTION, HiddenItems
- db -1 ; end
-
-SSAnne6HiddenObjects:
- hidden_object 13, 5, SPRITE_FACING_DOWN, PrintTrashText
- hidden_object 13, 7, SPRITE_FACING_DOWN, PrintTrashText
- hidden_object 13, 9, GREAT_BALL, HiddenItems
- db -1 ; end
-
-UndergroundPathNsHiddenObjects:
- hidden_object 3, 4, FULL_RESTORE, HiddenItems
- hidden_object 4, 34, X_SPECIAL, HiddenItems
- db -1 ; end
-
-UndergroundPathWeHiddenObjects:
- hidden_object 12, 2, NUGGET, HiddenItems
- hidden_object 21, 5, ELIXER, HiddenItems
- db -1 ; end
-
-RocketHideout1HiddenObjects:
- hidden_object 21, 15, PP_UP, HiddenItems
- db -1 ; end
-
-RocketHideout3HiddenObjects:
- hidden_object 27, 17, NUGGET, HiddenItems
- db -1 ; end
-
-RocketHideout4HiddenObjects:
- hidden_object 25, 1, SUPER_POTION, HiddenItems
- db -1 ; end
-
-Route10HiddenObjects:
- hidden_object 9, 17, SUPER_POTION, HiddenItems
- hidden_object 16, 53, MAX_ETHER, HiddenItems
- db -1 ; end
-
-RockTunnelPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-PowerPlantHiddenObjects:
- hidden_object 17, 16, MAX_ELIXER, HiddenItems
- hidden_object 12, 1, PP_UP, HiddenItems
- db -1 ; end
-
-Route11HiddenObjects:
- hidden_object 48, 5, ESCAPE_ROPE, HiddenItems
- db -1 ; end
-
-Route12HiddenObjects:
- hidden_object 2, 63, HYPER_POTION, HiddenItems
- db -1 ; end
-
-Route13HiddenObjects:
- hidden_object 1, 14, PP_UP, HiddenItems
- hidden_object 16, 13, CALCIUM, HiddenItems
- db -1 ; end
-
-Route15Gate2FHiddenObjects:
- hidden_object 1, 2, SPRITE_FACING_UP, Route15GateLeftBinoculars
- db -1 ; end
-
-Route17HiddenObjects:
- hidden_object 15, 14, RARE_CANDY, HiddenItems
- hidden_object 8, 45, FULL_RESTORE, HiddenItems
- hidden_object 17, 72, PP_UP, HiddenItems
- hidden_object 4, 91, MAX_REVIVE, HiddenItems
- hidden_object 8, 121, MAX_ELIXER, HiddenItems
- db -1 ; end
-
-Route23HiddenObjects:
- hidden_object 9, 44, FULL_RESTORE, HiddenItems
- hidden_object 19, 70, ULTRA_BALL, HiddenItems
- hidden_object 8, 90, MAX_ETHER, HiddenItems
- db -1 ; end
-
-VictoryRoad2HiddenObjects:
- hidden_object 5, 2, ULTRA_BALL, HiddenItems
- hidden_object 26, 7, FULL_RESTORE, HiddenItems
- db -1 ; end
-
-Route25HiddenObjects:
- hidden_object 38, 3, ETHER, HiddenItems
- hidden_object 10, 1, ELIXER, HiddenItems
- db -1 ; end
-
-BillsHouseHiddenObjects:
- hidden_object 1, 4, SPRITE_FACING_UP, BillsHousePC
- db -1 ; end
-
-Route4HiddenObjects:
- hidden_object 40, 3, GREAT_BALL, HiddenItems
- db -1 ; end
-
-MtMoonPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-Route9HiddenObjects:
- hidden_object 14, 7, ETHER, HiddenItems
- db -1 ; end
-
-TradeCenterHiddenObjects:
- hidden_object 5, 4, ANY_FACING, CableClubRightGameboy
- hidden_object 4, 4, ANY_FACING, CableClubLeftGameboy
- db -1 ; end
-
-ColosseumHiddenObjects:
- hidden_object 5, 4, ANY_FACING, CableClubRightGameboy
- hidden_object 4, 4, ANY_FACING, CableClubLeftGameboy
- db -1 ; end
-
-IndigoPlateauHiddenObjects:
- hidden_object 8, 13, $ff, PrintIndigoPlateauHQText ; inaccessible
- hidden_object 11, 13, SPRITE_FACING_DOWN, PrintIndigoPlateauHQText ; inaccessible
- db -1 ; end
-
-IndigoPlateauLobbyHiddenObjects:
- hidden_object 15, 7, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-CopycatsHouse2FHiddenObjects:
- hidden_object 1, 1, NUGGET, HiddenItems
- db -1 ; end
-
-FightingDojoHiddenObjects:
- hidden_object 3, 9, SPRITE_FACING_UP, PrintFightingDojoText
- hidden_object 6, 9, SPRITE_FACING_UP, PrintFightingDojoText
- hidden_object 4, 0, SPRITE_FACING_UP, PrintFightingDojoText2
- hidden_object 5, 0, SPRITE_FACING_UP, PrintFightingDojoText3
- db -1 ; end
-
-SaffronGymHiddenObjects:
- hidden_object 9, 15, SPRITE_FACING_UP, GymStatues
- db -1 ; end
-
-SaffronPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_UP, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-RedsHouse2FHiddenObjects:
- hidden_object 0, 1, SPRITE_FACING_UP, OpenRedsPC
- hidden_object 3, 5, ANY_FACING, PrintRedSNESText
- db -1 ; end
-
-BluesHouseHiddenObjects:
- hidden_object 0, 1, SPRITE_FACING_UP, PrintBookcaseText
- hidden_object 1, 1, SPRITE_FACING_UP, PrintBookcaseText
- hidden_object 7, 1, SPRITE_FACING_UP, PrintBookcaseText
- db -1 ; end
-
-OaksLabHiddenObjects:
- hidden_object 4, 0, SPRITE_FACING_UP, DisplayOakLabLeftPoster
- hidden_object 5, 0, SPRITE_FACING_UP, DisplayOakLabRightPoster
- hidden_object 0, 1, SPRITE_FACING_UP, DisplayOakLabEmailText
- hidden_object 1, 1, SPRITE_FACING_UP, DisplayOakLabEmailText
- db -1 ; end
-
-ViridianCityHiddenObjects:
- hidden_object 14, 4, POTION, HiddenItems
- db -1 ; end
-
-ViridianPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-ViridianSchoolHiddenObjects:
- hidden_text_predef 3, 4, ViridianSchoolNotebook, PrintNotebookText
- hidden_text_predef 3, 0, ViridianSchoolBlackboard, PrintBlackboardLinkCableText
- db -1 ; end
-
-ViridianGymHiddenObjects:
- hidden_object 15, 15, SPRITE_FACING_UP, GymStatues
- hidden_object 18, 15, SPRITE_FACING_UP, GymStatues
- db -1 ; end
-
-Museum1FHiddenObjects:
- hidden_object 2, 3, SPRITE_FACING_UP, AerodactylFossil
- hidden_object 2, 6, SPRITE_FACING_UP, KabutopsFossil
- db -1 ; end
-
-PewterGymHiddenObjects:
- hidden_object 3, 10, SPRITE_FACING_UP, GymStatues
- hidden_object 6, 10, SPRITE_FACING_UP, GymStatues
- db -1 ; end
-
-PewterPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-CeruleanCityHiddenObjects:
- hidden_object 15, 8, RARE_CANDY, HiddenItems
- db -1 ; end
-
-CeruleanPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-CeruleanGymHiddenObjects:
- hidden_object 3, 11, SPRITE_FACING_UP, GymStatues
- hidden_object 6, 11, SPRITE_FACING_UP, GymStatues
- db -1 ; end
-
-BikeShopHiddenObjects:
- hidden_object 1, 0, ANY_FACING, PrintNewBikeText
- hidden_object 2, 1, ANY_FACING, PrintNewBikeText
- hidden_object 1, 2, ANY_FACING, PrintNewBikeText
- hidden_object 3, 2, ANY_FACING, PrintNewBikeText
- hidden_object 0, 4, ANY_FACING, PrintNewBikeText
- hidden_object 1, 5, ANY_FACING, PrintNewBikeText
- db -1 ; end
-
-CeruleanCave1HiddenObjects:
- hidden_object 18, 7, PP_UP, HiddenItems
- db -1 ; end
-
-LavenderPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-Pokemontower5HiddenObjects:
- hidden_object 4, 12, ELIXER, HiddenItems
- db -1 ; end
-
-LavenderHouse1HiddenObjects:
- hidden_object 0, 1, SPRITE_FACING_DOWN, PrintMagazinesText
- hidden_object 1, 1, SPRITE_FACING_DOWN, PrintMagazinesText
- hidden_object 7, 1, SPRITE_FACING_DOWN, PrintMagazinesText
- db -1 ; end
-
-VermilionCityHiddenObjects:
- hidden_object 14, 11, MAX_ETHER, HiddenItems
- db -1 ; end
-
-VermilionPokecenterHiddenObjects:
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- hidden_object 0, 4, SPRITE_FACING_UP, PrintBenchGuyText
- db -1 ; end
-
-PokemonFanClubHiddenObjects:
- hidden_object 1, 0, SPRITE_FACING_UP, FanClubPicture1
- hidden_object 6, 0, SPRITE_FACING_UP, FanClubPicture2
- db -1 ; end
-
-VermilionGymHiddenObjects:
- hidden_object 3, 14, SPRITE_FACING_UP, GymStatues
- hidden_object 6, 14, SPRITE_FACING_UP, GymStatues
- hidden_object 6, 1, SPRITE_FACING_DOWN, PrintTrashText
- ; third param: [wGymTrashCanIndex]
- hidden_object 1, 7, 0, GymTrashScript
- hidden_object 1, 9, 1, GymTrashScript
- hidden_object 1, 11, 2, GymTrashScript
- hidden_object 3, 7, 3, GymTrashScript
- hidden_object 3, 9, 4, GymTrashScript
- hidden_object 3, 11, 5, GymTrashScript
- hidden_object 5, 7, 6, GymTrashScript
- hidden_object 5, 9, 7, GymTrashScript
- hidden_object 5, 11, 8, GymTrashScript
- hidden_object 7, 7, 9, GymTrashScript
- hidden_object 7, 9, 10, GymTrashScript
- hidden_object 7, 11, 11, GymTrashScript
- hidden_object 9, 7, 12, GymTrashScript
- hidden_object 9, 9, 13, GymTrashScript
- hidden_object 9, 11, 14, GymTrashScript
- db -1 ; end
-
-CeladonCityHiddenObjects:
- hidden_object 48, 15, PP_UP, HiddenItems
- db -1 ; end
-
-CeladonHotelHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- db -1 ; end
-
-CeladonMansion2HiddenObjects:
- hidden_object 0, 5, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-CeladonMansion5HiddenObjects:
- hidden_text_predef 3, 0, LinkCableHelp, PrintBlackboardLinkCableText
- hidden_text_predef 4, 0, LinkCableHelp, PrintBlackboardLinkCableText
- hidden_text_predef 3, 4, TMNotebook, PrintNotebookText
- db -1 ; end
-
-CeladonPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-CeladonGymHiddenObjects:
- hidden_object 3, 15, SPRITE_FACING_UP, GymStatues
- hidden_object 6, 15, SPRITE_FACING_UP, GymStatues
- db -1 ; end
-
-GameCornerHiddenObjects:
- hidden_object 18, 15, ANY_FACING, StartSlotMachine
- hidden_object 18, 14, ANY_FACING, StartSlotMachine
- hidden_object 18, 13, ANY_FACING, StartSlotMachine
- hidden_object 18, 12, ANY_FACING, StartSlotMachine
- hidden_object 18, 11, ANY_FACING, StartSlotMachine
- hidden_object 18, 10, SLOTS_SOMEONESKEYS, StartSlotMachine
- hidden_object 13, 10, ANY_FACING, StartSlotMachine
- hidden_object 13, 11, ANY_FACING, StartSlotMachine
- hidden_object 13, 12, SLOTS_OUTTOLUNCH, StartSlotMachine
- hidden_object 13, 13, ANY_FACING, StartSlotMachine
- hidden_object 13, 14, ANY_FACING, StartSlotMachine
- hidden_object 13, 15, ANY_FACING, StartSlotMachine
- hidden_object 12, 15, ANY_FACING, StartSlotMachine
- hidden_object 12, 14, ANY_FACING, StartSlotMachine
- hidden_object 12, 13, ANY_FACING, StartSlotMachine
- hidden_object 12, 12, ANY_FACING, StartSlotMachine
- hidden_object 12, 11, ANY_FACING, StartSlotMachine
- hidden_object 12, 10, ANY_FACING, StartSlotMachine
- hidden_object 7, 10, ANY_FACING, StartSlotMachine
- hidden_object 7, 11, ANY_FACING, StartSlotMachine
- hidden_object 7, 12, ANY_FACING, StartSlotMachine
- hidden_object 7, 13, ANY_FACING, StartSlotMachine
- hidden_object 7, 14, ANY_FACING, StartSlotMachine
- hidden_object 7, 15, ANY_FACING, StartSlotMachine
- hidden_object 6, 15, ANY_FACING, StartSlotMachine
- hidden_object 6, 14, ANY_FACING, StartSlotMachine
- hidden_object 6, 13, ANY_FACING, StartSlotMachine
- hidden_object 6, 12, SLOTS_OUTOFORDER, StartSlotMachine
- hidden_object 6, 11, ANY_FACING, StartSlotMachine
- hidden_object 6, 10, ANY_FACING, StartSlotMachine
- hidden_object 1, 10, ANY_FACING, StartSlotMachine
- hidden_object 1, 11, ANY_FACING, StartSlotMachine
- hidden_object 1, 12, ANY_FACING, StartSlotMachine
- hidden_object 1, 13, ANY_FACING, StartSlotMachine
- hidden_object 1, 14, ANY_FACING, StartSlotMachine
- hidden_object 1, 15, ANY_FACING, StartSlotMachine
- hidden_object 0, 8, COIN+10, HiddenCoins
- hidden_object 1, 16, COIN+10, HiddenCoins
- hidden_object 3, 11, COIN+20, HiddenCoins
- hidden_object 3, 14, COIN+10, HiddenCoins
- hidden_object 4, 12, COIN+10, HiddenCoins
- hidden_object 9, 12, COIN+20, HiddenCoins
- hidden_object 9, 15, COIN+10, HiddenCoins
- hidden_object 16, 14, COIN+10, HiddenCoins
- hidden_object 10, 16, COIN+10, HiddenCoins
- hidden_object 11, 7, COIN+40, HiddenCoins
- hidden_object 15, 8, COIN+100, HiddenCoins
- hidden_object 12, 15, COIN+10, HiddenCoins
- db -1 ; end
-
-FuchsiaPokecenterHiddenObjects:
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- hidden_object 0, 4, SPRITE_FACING_UP, PrintBenchGuyText
- db -1 ; end
-
-SafariZoneEntranceHiddenObjects:
- hidden_object 10, 1, NUGGET, HiddenItems ; inaccessible
- db -1 ; end
-
-FuchsiaGymHiddenObjects:
- hidden_object 3, 15, SPRITE_FACING_UP, GymStatues
- hidden_object 6, 15, SPRITE_FACING_UP, GymStatues
- db -1 ; end
-
-Mansion1HiddenObjects:
- hidden_object 8, 16, MOON_STONE, HiddenItems
- hidden_object 2, 5, SPRITE_FACING_UP, Mansion1Script_Switches
- db -1 ; end
-
-CinnabarGymHiddenObjects:
- hidden_object 17, 13, SPRITE_FACING_UP, GymStatues
- ; third param: ([hGymGateAnswer] << 4) | [hGymGateIndex]
- hidden_object 15, 7, (FALSE << 4) | 1, PrintCinnabarQuiz
- hidden_object 10, 1, (TRUE << 4) | 2, PrintCinnabarQuiz
- hidden_object 9, 7, (TRUE << 4) | 3, PrintCinnabarQuiz
- hidden_object 9, 13, (TRUE << 4) | 4, PrintCinnabarQuiz
- hidden_object 1, 13, (FALSE << 4) | 5, PrintCinnabarQuiz
- hidden_object 1, 7, (TRUE << 4) | 6, PrintCinnabarQuiz
- db -1 ; end
-
-CinnabarLab4HiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_UP, OpenPokemonCenterPC
- hidden_object 2, 4, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
-
-CinnabarPokecenterHiddenObjects:
- hidden_object 0, 4, SPRITE_FACING_UP, PrintBenchGuyText
- hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
- db -1 ; end
diff --git a/data/items/names.asm b/data/items/names.asm
index bab26efc..f5c0f27e 100644
--- a/data/items/names.asm
+++ b/data/items/names.asm
@@ -1,5 +1,5 @@
ItemNames::
- list_start
+ list_start ITEM_NAME_LENGTH - 1
li "MASTER BALL"
li "ULTRA BALL"
li "GREAT BALL"
diff --git a/data/maps/hide_show_data.asm b/data/maps/hide_show_data.asm
deleted file mode 100644
index de9eb979..00000000
--- a/data/maps/hide_show_data.asm
+++ /dev/null
@@ -1,582 +0,0 @@
-; default hidden/shown objects for each map
-
-MapHSPointers:
-; entries correspond to map ids
- table_width 2
- dw PalletTownHS
- dw ViridianCityHS
- dw PewterCityHS
- dw CeruleanCityHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SaffronCityHS
- dw NoHS
- dw NoHS
- dw Route2HS
- dw NoHS
- dw Route4HS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw Route9HS
- dw NoHS
- dw NoHS
- dw Route12HS
- dw NoHS
- dw NoHS
- dw Route15HS
- dw Route16HS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw Route22HS
- dw NoHS
- dw Route24HS
- dw Route25HS
- dw NoHS
- dw NoHS
- dw BluesHouseHS
- dw OaksLabHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw ViridianGymHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw ViridianForestHS
- dw Museum1FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw MtMoon1FHS
- dw NoHS
- dw MtMoonB2FHS
- dw NoHS
- dw CeruleanMelaniesHouseHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw PowerPlantHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw BillsHouseHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SSAnne2FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SSAnne1FRoomsHS
- dw SSAnne2FRoomsHS
- dw SSAnneB1FRoomsHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw VictoryRoad1FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw ChampionsRoomHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw CeladonMansionRoofHouseHS
- dw NoHS
- dw NoHS
- dw GameCornerHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw PokemonTower2FHS
- dw PokemonTower3FHS
- dw PokemonTower4FHS
- dw PokemonTower5FHS
- dw PokemonTower6FHS
- dw PokemonTower7FHS
- dw MrFujisHouseHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw WardensHouseHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SeafoamIslandsB1FHS
- dw SeafoamIslandsB2FHS
- dw SeafoamIslandsB3FHS
- dw SeafoamIslandsB4FHS
- dw NoHS
- dw NoHS
- dw PokemonMansion1FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw FightingDojoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SilphCo1FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SeafoamIslands1FHS
- dw NoHS
- dw VictoryRoad2FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw VictoryRoad3FHS
- dw RocketHideoutB1FHS
- dw RocketHideoutB2FHS
- dw RocketHideoutB3FHS
- dw RocketHideoutB4FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SilphCo2FHS
- dw SilphCo3FHS
- dw SilphCo4FHS
- dw SilphCo5FHS
- dw SilphCo6FHS
- dw SilphCo7FHS
- dw SilphCo8FHS
- dw PokemonMansion2FHS
- dw PokemonMansion3FHS
- dw PokemonMansionB1FHS
- dw SafariZoneEastHS
- dw SafariZoneNorthHS
- dw SafariZoneWestHS
- dw SafariZoneCenterHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw CeruleanCave2FHS
- dw CeruleanCaveB1FHS
- dw CeruleanCaveHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw SilphCo9FHS
- dw SilphCo10FHS
- dw SilphCo11FHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- dw UnusedMapF4HS
- dw NoHS
- dw NoHS
- dw NoHS
- dw NoHS
- assert_table_length NUM_MAPS
- dw -1 ; end
-
-NoHS:
- db -1, -1, -1 ; end
-
-MissableObjects:
-; entries correspond to HS_* constants (see constants/hide_show_constants)
- table_width 3
-; format: map id, object id, HIDE/SHOW
-
-PalletTownHS:
- db PALLET_TOWN, PALLETTOWN_OAK, HIDE
-ViridianCityHS:
- db VIRIDIAN_CITY, VIRIDIANCITY_OLD_MAN_SLEEPY, SHOW
- db VIRIDIAN_CITY, VIRIDIANCITY_OLD_MAN, HIDE
- db VIRIDIAN_CITY, VIRIDIANCITY_OLD_MAN2, HIDE
-PewterCityHS:
- db PEWTER_CITY, PEWTERCITY_SUPER_NERD1, SHOW
- db PEWTER_CITY, PEWTERCITY_YOUNGSTER, SHOW
-CeruleanCityHS:
- db CERULEAN_CITY, CERULEANCITY_RIVAL, HIDE
- db CERULEAN_CITY, CERULEANCITY_ROCKET, SHOW
- db CERULEAN_CITY, CERULEANCITY_GUARD1, HIDE
- db CERULEAN_CITY, CERULEANCITY_SUPER_NERD3, SHOW
- db CERULEAN_CITY, CERULEANCITY_GUARD2, SHOW
-SaffronCityHS:
- db SAFFRON_CITY, SAFFRONCITY_ROCKET1, SHOW
- db SAFFRON_CITY, SAFFRONCITY_ROCKET2, SHOW
- db SAFFRON_CITY, SAFFRONCITY_ROCKET3, SHOW
- db SAFFRON_CITY, SAFFRONCITY_ROCKET4, SHOW
- db SAFFRON_CITY, SAFFRONCITY_ROCKET5, SHOW
- db SAFFRON_CITY, SAFFRONCITY_ROCKET6, SHOW
- db SAFFRON_CITY, SAFFRONCITY_ROCKET7, SHOW
- db SAFFRON_CITY, SAFFRONCITY_SCIENTIST, HIDE
- db SAFFRON_CITY, SAFFRONCITY_SILPH_WORKER_M, HIDE
- db SAFFRON_CITY, SAFFRONCITY_SILPH_WORKER_F, HIDE
- db SAFFRON_CITY, SAFFRONCITY_GENTLEMAN, HIDE
- db SAFFRON_CITY, SAFFRONCITY_PIDGEOT, HIDE
- db SAFFRON_CITY, SAFFRONCITY_ROCKER, HIDE
- db SAFFRON_CITY, SAFFRONCITY_ROCKET8, SHOW
- db SAFFRON_CITY, SAFFRONCITY_ROCKET9, HIDE ; removed in yellow
-Route2HS:
- db ROUTE_2, ROUTE2_MOON_STONE, SHOW
- db ROUTE_2, ROUTE2_HP_UP, SHOW
-Route4HS:
- db ROUTE_4, ROUTE4_TM_WHIRLWIND, SHOW
-Route9HS:
- db ROUTE_9, ROUTE9_TM_TELEPORT, SHOW
-Route12HS:
- db ROUTE_12, ROUTE12_SNORLAX, SHOW
- db ROUTE_12, ROUTE12_TM_PAY_DAY, SHOW
- db ROUTE_12, ROUTE12_IRON, SHOW
-Route15HS:
- db ROUTE_15, ROUTE15_TM_RAGE, SHOW
-Route16HS:
- db ROUTE_16, ROUTE16_SNORLAX, SHOW
-Route22HS:
- db ROUTE_22, ROUTE22_RIVAL1, HIDE
- db ROUTE_22, ROUTE22_RIVAL2, HIDE
-Route24HS:
- db ROUTE_24, ROUTE24_COOLTRAINER_M1, SHOW
- db ROUTE_24, ROUTE24_TM_THUNDER_WAVE, SHOW
-Route25HS:
- db ROUTE_25, ROUTE25_TM_SEISMIC_TOSS, SHOW
-BluesHouseHS:
- db BLUES_HOUSE, BLUESHOUSE_DAISY1, SHOW
- db BLUES_HOUSE, BLUESHOUSE_DAISY2, HIDE
- db BLUES_HOUSE, BLUESHOUSE_TOWN_MAP, SHOW
-OaksLabHS:
- db OAKS_LAB, OAKSLAB_RIVAL, SHOW
- db OAKS_LAB, OAKSLAB_EEVEE_POKE_BALL, SHOW
- db OAKS_LAB, OAKSLAB_OAK1, HIDE
- db OAKS_LAB, OAKSLAB_POKEDEX1, SHOW
- db OAKS_LAB, OAKSLAB_POKEDEX2, SHOW
- db OAKS_LAB, OAKSLAB_OAK2, HIDE
-ViridianGymHS:
- db VIRIDIAN_GYM, VIRIDIANGYM_GIOVANNI, SHOW
- db VIRIDIAN_GYM, VIRIDIANGYM_REVIVE, SHOW
-Museum1FHS:
- db MUSEUM_1F, MUSEUM1F_OLD_AMBER, SHOW
-CeruleanMelaniesHouseHS:
- db CERULEAN_MELANIES_HOUSE, CERULEANMELANIESHOUSE_BULBASAUR, SHOW
-CeruleanCaveHS:
- db CERULEAN_CAVE_1F, CERULEANCAVE1F_RARE_CANDY, SHOW
- db CERULEAN_CAVE_1F, CERULEANCAVE1F_MAX_ELIXER, SHOW
- db CERULEAN_CAVE_1F, CERULEANCAVE1F_MAX_REVIVE, SHOW
- db CERULEAN_CAVE_1F, CERULEANCAVE1F_ULTRA_BALL, SHOW
-PokemonTower2FHS:
- db POKEMON_TOWER_2F, POKEMONTOWER2F_RIVAL, SHOW
-PokemonTower3FHS:
- db POKEMON_TOWER_3F, POKEMONTOWER3F_ESCAPE_ROPE, SHOW
-PokemonTower4FHS:
- db POKEMON_TOWER_4F, POKEMONTOWER4F_ELIXER, SHOW
- db POKEMON_TOWER_4F, POKEMONTOWER4F_AWAKENING, SHOW
- db POKEMON_TOWER_4F, POKEMONTOWER4F_HP_UP, SHOW
-PokemonTower5FHS:
- db POKEMON_TOWER_5F, POKEMONTOWER5F_NUGGET, SHOW
-PokemonTower6FHS:
- db POKEMON_TOWER_6F, POKEMONTOWER6F_RARE_CANDY, SHOW
- db POKEMON_TOWER_6F, POKEMONTOWER6F_X_ACCURACY, SHOW
-PokemonTower7FHS:
- db POKEMON_TOWER_7F, POKEMONTOWER7F_JESSIE, HIDE
- db POKEMON_TOWER_7F, POKEMONTOWER7F_JAMES, HIDE
- db POKEMON_TOWER_7F, POKEMONTOWER7F_MR_FUJI, SHOW
-MrFujisHouseHS:
- db MR_FUJIS_HOUSE, MRFUJISHOUSE_MR_FUJI, HIDE
-CeladonMansionRoofHouseHS:
- db CELADON_MANSION_ROOF_HOUSE, CELADONMANSION_ROOF_HOUSE_EEVEE_POKEBALL, SHOW
-GameCornerHS:
- db GAME_CORNER, GAMECORNER_ROCKET, SHOW
-WardensHouseHS:
- db WARDENS_HOUSE, WARDENSHOUSE_RARE_CANDY, SHOW
-PokemonMansion1FHS:
- db POKEMON_MANSION_1F, POKEMONMANSION1F_ESCAPE_ROPE, SHOW
- db POKEMON_MANSION_1F, POKEMONMANSION1F_CARBOS, SHOW
-FightingDojoHS:
- db FIGHTING_DOJO, FIGHTINGDOJO_HITMONLEE_POKE_BALL, SHOW
- db FIGHTING_DOJO, FIGHTINGDOJO_HITMONCHAN_POKE_BALL, SHOW
-SilphCo1FHS:
- db SILPH_CO_1F, SILPHCO1F_LINK_RECEPTIONIST, HIDE
-PowerPlantHS:
- db POWER_PLANT, POWERPLANT_VOLTORB1, SHOW
- db POWER_PLANT, POWERPLANT_VOLTORB2, SHOW
- db POWER_PLANT, POWERPLANT_VOLTORB3, SHOW
- db POWER_PLANT, POWERPLANT_ELECTRODE1, SHOW
- db POWER_PLANT, POWERPLANT_VOLTORB4, SHOW
- db POWER_PLANT, POWERPLANT_VOLTORB5, SHOW
- db POWER_PLANT, POWERPLANT_ELECTRODE2, SHOW
- db POWER_PLANT, POWERPLANT_VOLTORB6, SHOW
- db POWER_PLANT, POWERPLANT_ZAPDOS, SHOW
- db POWER_PLANT, POWERPLANT_CARBOS, SHOW
- db POWER_PLANT, POWERPLANT_HP_UP, SHOW
- db POWER_PLANT, POWERPLANT_RARE_CANDY, SHOW
- db POWER_PLANT, POWERPLANT_TM_THUNDER, SHOW
- db POWER_PLANT, POWERPLANT_TM_REFLECT, SHOW
-VictoryRoad2FHS:
- db VICTORY_ROAD_2F, VICTORYROAD2F_MOLTRES, SHOW
- db VICTORY_ROAD_2F, VICTORYROAD2F_TM_SUBMISSION, SHOW
- db VICTORY_ROAD_2F, VICTORYROAD2F_FULL_HEAL, SHOW
- db VICTORY_ROAD_2F, VICTORYROAD2F_TM_MEGA_KICK, SHOW
- db VICTORY_ROAD_2F, VICTORYROAD2F_GUARD_SPEC, SHOW
- db VICTORY_ROAD_2F, VICTORYROAD2F_BOULDER3, SHOW
-BillsHouseHS:
- db BILLS_HOUSE, BILLSHOUSE_BILL_POKEMON, SHOW
- db BILLS_HOUSE, BILLSHOUSE_BILL1, HIDE
- db BILLS_HOUSE, BILLSHOUSE_BILL2, HIDE
-ViridianForestHS:
- db VIRIDIAN_FOREST, VIRIDIANFOREST_POTION1, SHOW
- db VIRIDIAN_FOREST, VIRIDIANFOREST_POTION2, SHOW
- db VIRIDIAN_FOREST, VIRIDIANFOREST_POKE_BALL, SHOW
-MtMoon1FHS:
- db MT_MOON_1F, MTMOON1F_POTION1, SHOW
- db MT_MOON_1F, MTMOON1F_MOON_STONE, SHOW
- db MT_MOON_1F, MTMOON1F_RARE_CANDY, SHOW
- db MT_MOON_1F, MTMOON1F_ESCAPE_ROPE, SHOW
- db MT_MOON_1F, MTMOON1F_POTION2, SHOW
- db MT_MOON_1F, MTMOON1F_TM_WATER_GUN, SHOW
-MtMoonB2FHS:
- db MT_MOON_B2F, MTMOONB2F_JESSIE, HIDE
- db MT_MOON_B2F, MTMOONB2F_JAMES, HIDE
- db MT_MOON_B2F, MTMOONB2F_DOME_FOSSIL, SHOW
- db MT_MOON_B2F, MTMOONB2F_HELIX_FOSSIL, SHOW
- db MT_MOON_B2F, MTMOONB2F_HP_UP, SHOW
- db MT_MOON_B2F, MTMOONB2F_TM_MEGA_PUNCH, SHOW
-SSAnne2FHS:
- db SS_ANNE_2F, SSANNE2F_RIVAL, HIDE
-SSAnne1FRoomsHS:
- db SS_ANNE_1F_ROOMS, SSANNE1FROOMS_TM_BODY_SLAM, SHOW
-SSAnne2FRoomsHS:
- db SS_ANNE_2F_ROOMS, SSANNE2FROOMS_MAX_ETHER, SHOW
- db SS_ANNE_2F_ROOMS, SSANNE2FROOMS_RARE_CANDY, SHOW
-SSAnneB1FRoomsHS:
- db SS_ANNE_B1F_ROOMS, SSANNEB1FROOMS_ETHER, SHOW
- db SS_ANNE_B1F_ROOMS, SSANNEB1FROOMS_TM_REST, SHOW
- db SS_ANNE_B1F_ROOMS, SSANNEB1FROOMS_MAX_POTION, SHOW
-VictoryRoad3FHS:
- db VICTORY_ROAD_3F, VICTORYROAD3F_MAX_REVIVE, SHOW
- db VICTORY_ROAD_3F, VICTORYROAD3F_TM_EXPLOSION, SHOW
- db VICTORY_ROAD_3F, VICTORYROAD3F_BOULDER4, SHOW
-RocketHideoutB1FHS:
- db ROCKET_HIDEOUT_B1F, ROCKETHIDEOUTB1F_ESCAPE_ROPE, SHOW
- db ROCKET_HIDEOUT_B1F, ROCKETHIDEOUTB1F_HYPER_POTION, SHOW
-RocketHideoutB2FHS:
- db ROCKET_HIDEOUT_B2F, ROCKETHIDEOUTB2F_MOON_STONE, SHOW
- db ROCKET_HIDEOUT_B2F, ROCKETHIDEOUTB2F_NUGGET, SHOW
- db ROCKET_HIDEOUT_B2F, ROCKETHIDEOUTB2F_TM_HORN_DRILL, SHOW
- db ROCKET_HIDEOUT_B2F, ROCKETHIDEOUTB2F_SUPER_POTION, SHOW
-RocketHideoutB3FHS:
- db ROCKET_HIDEOUT_B3F, ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE, SHOW
- db ROCKET_HIDEOUT_B3F, ROCKETHIDEOUTB3F_RARE_CANDY, SHOW
-RocketHideoutB4FHS:
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_GIOVANNI, SHOW
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_JAMES, HIDE
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_JESSIE, HIDE
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_HP_UP, SHOW
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_TM_RAZOR_WIND, SHOW
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_IRON, SHOW
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_SILPH_SCOPE, HIDE
- db ROCKET_HIDEOUT_B4F, ROCKETHIDEOUTB4F_LIFT_KEY, HIDE
-SilphCo2FHS:
- db SILPH_CO_2F, SILPHCO2F_SILPH_WORKER_F, SHOW
- db SILPH_CO_2F, SILPHCO2F_SCIENTIST1, SHOW
- db SILPH_CO_2F, SILPHCO2F_SCIENTIST2, SHOW
- db SILPH_CO_2F, SILPHCO2F_ROCKET1, SHOW
- db SILPH_CO_2F, SILPHCO2F_ROCKET2, SHOW
-SilphCo3FHS:
- db SILPH_CO_3F, SILPHCO3F_ROCKET, SHOW
- db SILPH_CO_3F, SILPHCO3F_SCIENTIST, SHOW
- db SILPH_CO_3F, SILPHCO3F_HYPER_POTION, SHOW
-SilphCo4FHS:
- db SILPH_CO_4F, SILPHCO4F_ROCKET1, SHOW
- db SILPH_CO_4F, SILPHCO4F_SCIENTIST, SHOW
- db SILPH_CO_4F, SILPHCO4F_ROCKET2, SHOW
- db SILPH_CO_4F, SILPHCO4F_FULL_HEAL, SHOW
- db SILPH_CO_4F, SILPHCO4F_MAX_REVIVE, SHOW
- db SILPH_CO_4F, SILPHCO4F_ESCAPE_ROPE, SHOW
-SilphCo5FHS:
- db SILPH_CO_5F, SILPHCO5F_ROCKET1, SHOW
- db SILPH_CO_5F, SILPHCO5F_SCIENTIST, SHOW
- db SILPH_CO_5F, SILPHCO5F_ROCKER, SHOW
- db SILPH_CO_5F, SILPHCO5F_ROCKET2, SHOW
- db SILPH_CO_5F, SILPHCO5F_TM_TAKE_DOWN, SHOW
- db SILPH_CO_5F, SILPHCO5F_PROTEIN, SHOW
- db SILPH_CO_5F, SILPHCO5F_CARD_KEY, SHOW
-SilphCo6FHS:
- db SILPH_CO_6F, SILPHCO6F_ROCKET1, SHOW
- db SILPH_CO_6F, SILPHCO6F_SCIENTIST, SHOW
- db SILPH_CO_6F, SILPHCO6F_ROCKET2, SHOW
- db SILPH_CO_6F, SILPHCO6F_HP_UP, SHOW
- db SILPH_CO_6F, SILPHCO6F_X_ACCURACY, SHOW
-SilphCo7FHS:
- db SILPH_CO_7F, SILPHCO7F_ROCKET1, SHOW
- db SILPH_CO_7F, SILPHCO7F_SCIENTIST, SHOW
- db SILPH_CO_7F, SILPHCO7F_ROCKET2, SHOW
- db SILPH_CO_7F, SILPHCO7F_ROCKET3, SHOW
- db SILPH_CO_7F, SILPHCO7F_RIVAL, SHOW
- db SILPH_CO_7F, SILPHCO7F_CALCIUM, SHOW
- db SILPH_CO_7F, SILPHCO7F_TM_SWORDS_DANCE, SHOW
- db SILPH_CO_7F, SILPHCO7F_UNUSED, SHOW
-SilphCo8FHS:
- db SILPH_CO_8F, SILPHCO8F_ROCKET1, SHOW
- db SILPH_CO_8F, SILPHCO8F_SCIENTIST, SHOW
- db SILPH_CO_8F, SILPHCO8F_ROCKET2, SHOW
-SilphCo9FHS:
- db SILPH_CO_9F, SILPHCO9F_ROCKET1, SHOW
- db SILPH_CO_9F, SILPHCO9F_SCIENTIST, SHOW
- db SILPH_CO_9F, SILPHCO9F_ROCKET2, SHOW
-SilphCo10FHS:
- db SILPH_CO_10F, SILPHCO10F_ROCKET, SHOW
- db SILPH_CO_10F, SILPHCO10F_SCIENTIST, SHOW
- db SILPH_CO_10F, SILPHCO10F_SILPH_WORKER_F, SHOW
- db SILPH_CO_10F, SILPHCO10F_TM_EARTHQUAKE, SHOW
- db SILPH_CO_10F, SILPHCO10F_RARE_CANDY, SHOW
- db SILPH_CO_10F, SILPHCO10F_CARBOS, SHOW
-SilphCo11FHS:
- db SILPH_CO_11F, SILPHCO11F_GIOVANNI, SHOW
- db SILPH_CO_11F, SILPHCO11F_JAMES, SHOW
- db SILPH_CO_11F, SILPHCO11F_ROCKET, SHOW
- db SILPH_CO_11F, SILPHCO11F_JESSIE, SHOW
-UnusedMapF4HS:
- db UNUSED_MAP_F4, $02, SHOW ; unused
-PokemonMansion2FHS:
- db POKEMON_MANSION_2F, POKEMONMANSION2F_CALCIUM, SHOW
-PokemonMansion3FHS:
- db POKEMON_MANSION_3F, POKEMONMANSION3F_MAX_POTION, SHOW
- db POKEMON_MANSION_3F, POKEMONMANSION3F_IRON, SHOW
-PokemonMansionB1FHS:
- db POKEMON_MANSION_B1F, POKEMONMANSIONB1F_RARE_CANDY, SHOW
- db POKEMON_MANSION_B1F, POKEMONMANSIONB1F_FULL_RESTORE, SHOW
- db POKEMON_MANSION_B1F, POKEMONMANSIONB1F_TM_BLIZZARD, SHOW
- db POKEMON_MANSION_B1F, POKEMONMANSIONB1F_TM_SOLARBEAM, SHOW
- db POKEMON_MANSION_B1F, POKEMONMANSIONB1F_SECRET_KEY, SHOW
-SafariZoneEastHS:
- db SAFARI_ZONE_EAST, SAFARIZONEEAST_FULL_RESTORE, SHOW
- db SAFARI_ZONE_EAST, SAFARIZONEEAST_MAX_RESTORE, SHOW
- db SAFARI_ZONE_EAST, SAFARIZONEEAST_CARBOS, SHOW
- db SAFARI_ZONE_EAST, SAFARIZONEEAST_TM_EGG_BOMB, SHOW
-SafariZoneNorthHS:
- db SAFARI_ZONE_NORTH, SAFARIZONENORTH_PROTEIN, SHOW
- db SAFARI_ZONE_NORTH, SAFARIZONENORTH_TM_SKULL_BASH, SHOW
-SafariZoneWestHS:
- db SAFARI_ZONE_WEST, SAFARIZONEWEST_MAX_POTION, SHOW
- db SAFARI_ZONE_WEST, SAFARIZONEWEST_TM_DOUBLE_TEAM, SHOW
- db SAFARI_ZONE_WEST, SAFARIZONEWEST_MAX_REVIVE, SHOW
- db SAFARI_ZONE_WEST, SAFARIZONEWEST_GOLD_TEETH, SHOW
-SafariZoneCenterHS:
- db SAFARI_ZONE_CENTER, SAFARIZONECENTER_NUGGET, SHOW
-CeruleanCave2FHS:
- db CERULEAN_CAVE_2F, CERULEANCAVE2F_RARE_CANDY, SHOW
- db CERULEAN_CAVE_2F, CERULEANCAVE2F_ULTRA_BALL, SHOW
- db CERULEAN_CAVE_2F, CERULEANCAVE2F_MAX_REVIVE, SHOW
- db CERULEAN_CAVE_2F, CERULEANCAVE2F_FULL_RESTORE, SHOW
-CeruleanCaveB1FHS:
- db CERULEAN_CAVE_B1F, CERULEANCAVEB1F_MEWTWO, SHOW
- db CERULEAN_CAVE_B1F, CERULEANCAVEB1F_ULTRA_BALL1, SHOW
- db CERULEAN_CAVE_B1F, CERULEANCAVEB1F_ULTRA_BALL2, SHOW
- db CERULEAN_CAVE_B1F, CERULEANCAVEB1F_MAX_REVIVE, SHOW
- db CERULEAN_CAVE_B1F, CERULEANCAVEB1F_MAX_ELIXER, SHOW
-VictoryRoad1FHS:
- db VICTORY_ROAD_1F, VICTORYROAD1F_TM_SKY_ATTACK, SHOW
- db VICTORY_ROAD_1F, VICTORYROAD1F_RARE_CANDY, SHOW
-ChampionsRoomHS:
- db CHAMPIONS_ROOM, CHAMPIONSROOM_OAK, HIDE
-SeafoamIslands1FHS:
- db SEAFOAM_ISLANDS_1F, SEAFOAMISLANDS1F_BOULDER1, SHOW
- db SEAFOAM_ISLANDS_1F, SEAFOAMISLANDS1F_BOULDER2, SHOW
-SeafoamIslandsB1FHS:
- db SEAFOAM_ISLANDS_B1F, SEAFOAMISLANDSB1F_BOULDER1, HIDE
- db SEAFOAM_ISLANDS_B1F, SEAFOAMISLANDSB1F_BOULDER2, HIDE
-SeafoamIslandsB2FHS:
- db SEAFOAM_ISLANDS_B2F, SEAFOAMISLANDSB2F_BOULDER1, HIDE
- db SEAFOAM_ISLANDS_B2F, SEAFOAMISLANDSB2F_BOULDER2, HIDE
-SeafoamIslandsB3FHS:
- db SEAFOAM_ISLANDS_B3F, SEAFOAMISLANDSB3F_BOULDER2, SHOW
- db SEAFOAM_ISLANDS_B3F, SEAFOAMISLANDSB3F_BOULDER3, SHOW
- db SEAFOAM_ISLANDS_B3F, SEAFOAMISLANDSB3F_BOULDER5, HIDE
- db SEAFOAM_ISLANDS_B3F, SEAFOAMISLANDSB3F_BOULDER6, HIDE
-SeafoamIslandsB4FHS:
- db SEAFOAM_ISLANDS_B4F, SEAFOAMISLANDSB4F_BOULDER1, HIDE
- db SEAFOAM_ISLANDS_B4F, SEAFOAMISLANDSB4F_BOULDER2, HIDE
- db SEAFOAM_ISLANDS_B4F, SEAFOAMISLANDSB4F_ARTICUNO, SHOW
-BluesHouseHSCopy: ; unreferenced
- db BLUES_HOUSE, BLUESHOUSE_DAISY1, SHOW
- db BLUES_HOUSE, BLUESHOUSE_DAISY2, HIDE
- db BLUES_HOUSE, BLUESHOUSE_TOWN_MAP, SHOW
- assert_table_length NUM_HS_OBJECTS
- db -1, 1, SHOW ; end
diff --git a/data/maps/objects/SaffronCity.asm b/data/maps/objects/SaffronCity.asm
index 6b09c84a..26715480 100644
--- a/data/maps/objects/SaffronCity.asm
+++ b/data/maps/objects/SaffronCity.asm
@@ -13,7 +13,7 @@
const_export SAFFRONCITY_PIDGEOT
const_export SAFFRONCITY_ROCKER
const_export SAFFRONCITY_ROCKET8
- const_export SAFFRONCITY_ROCKET9 ; removed in yellow, but still referenced in data/maps/hide_show_data.asm
+ const_export SAFFRONCITY_ROCKET9 ; removed in yellow, but still referenced in data/maps/toggleable_objects.asm
SaffronCity_Object:
db $f ; border block
diff --git a/data/maps/objects/SilphCo7F.asm b/data/maps/objects/SilphCo7F.asm
index 6f2ca90d..0dbe2c7f 100644
--- a/data/maps/objects/SilphCo7F.asm
+++ b/data/maps/objects/SilphCo7F.asm
@@ -10,7 +10,7 @@
const_export SILPHCO7F_RIVAL
const_export SILPHCO7F_CALCIUM
const_export SILPHCO7F_TM_SWORDS_DANCE
- const_export SILPHCO7F_UNUSED ; referenced in data/maps/hide_show_data.asm, no corresponding object_event
+ const_export SILPHCO7F_UNUSED ; referenced in data/maps/toggleable_objects.asm, no corresponding object_event
SilphCo7F_Object:
db $2e ; border block
diff --git a/data/maps/toggleable_objects.asm b/data/maps/toggleable_objects.asm
new file mode 100644
index 00000000..c628bd88
--- /dev/null
+++ b/data/maps/toggleable_objects.asm
@@ -0,0 +1,438 @@
+; toggleable objects for each map
+
+ToggleableObjectMapPointers:
+; entries correspond to map ids
+ table_width 2
+FOR n, NUM_MAPS
+ IF DEF(TOGGLEMAP{n}_NAME) ; defined by `toggle_consts_for`
+ dw ToggleData_{TOGGLEMAP{n}_NAME}
+ ELSE
+ dw NoToggleData
+ ENDC
+ENDR
+ assert_table_length NUM_MAPS
+ dw -1 ; end
+
+NoToggleData:
+ db -1, -1, -1 ; end
+
+DEF toggles_ok = 1
+
+MACRO? toggleable_objects_for
+ DEF toggle_map_id = \1 ; map id
+ ToggleData_\1:
+ IF toggles_ok
+ ASSERT DEF(TOGGLEMAP{toggle_map_id}_ID), \
+ "`toggleable_objects_for \1` is not defined"
+ DEF toggles_ok &= DEF(TOGGLEMAP{toggle_map_id}_ID)
+ IF toggles_ok
+ assert_table_length TOGGLEMAP{toggle_map_id}_ID
+ DEF toggles_ok &= TOGGLEMAP{toggle_map_id}_ID * 3 == @ - ToggleableObjectStates
+ ENDC
+ ENDC
+ENDM
+
+MACRO toggle_object_state
+ db toggle_map_id ; from previous `toggleable_objects_for`
+ db \1 ; object id
+ db \2 ; OFF/ON
+ENDM
+
+ToggleableObjectStates:
+; entries correspond to TOGGLE_* constants (see constants/toggle_constants.asm)
+ table_width 3
+
+ toggleable_objects_for PALLET_TOWN
+ toggle_object_state PALLETTOWN_OAK, OFF
+
+ toggleable_objects_for VIRIDIAN_CITY
+ toggle_object_state VIRIDIANCITY_OLD_MAN_SLEEPY, ON
+ toggle_object_state VIRIDIANCITY_OLD_MAN, OFF
+ toggle_object_state VIRIDIANCITY_OLD_MAN2, OFF
+
+ toggleable_objects_for PEWTER_CITY
+ toggle_object_state PEWTERCITY_SUPER_NERD1, ON
+ toggle_object_state PEWTERCITY_YOUNGSTER, ON
+
+ toggleable_objects_for CERULEAN_CITY
+ toggle_object_state CERULEANCITY_RIVAL, OFF
+ toggle_object_state CERULEANCITY_ROCKET, ON
+ toggle_object_state CERULEANCITY_GUARD1, OFF
+ toggle_object_state CERULEANCITY_SUPER_NERD3, ON
+ toggle_object_state CERULEANCITY_GUARD2, ON
+
+ toggleable_objects_for SAFFRON_CITY
+ toggle_object_state SAFFRONCITY_ROCKET1, ON
+ toggle_object_state SAFFRONCITY_ROCKET2, ON
+ toggle_object_state SAFFRONCITY_ROCKET3, ON
+ toggle_object_state SAFFRONCITY_ROCKET4, ON
+ toggle_object_state SAFFRONCITY_ROCKET5, ON
+ toggle_object_state SAFFRONCITY_ROCKET6, ON
+ toggle_object_state SAFFRONCITY_ROCKET7, ON
+ toggle_object_state SAFFRONCITY_SCIENTIST, OFF
+ toggle_object_state SAFFRONCITY_SILPH_WORKER_M, OFF
+ toggle_object_state SAFFRONCITY_SILPH_WORKER_F, OFF
+ toggle_object_state SAFFRONCITY_GENTLEMAN, OFF
+ toggle_object_state SAFFRONCITY_PIDGEOT, OFF
+ toggle_object_state SAFFRONCITY_ROCKER, OFF
+ toggle_object_state SAFFRONCITY_ROCKET8, ON
+ toggle_object_state SAFFRONCITY_ROCKET9, OFF ; removed in yellow
+
+ toggleable_objects_for ROUTE_2
+ toggle_object_state ROUTE2_MOON_STONE, ON
+ toggle_object_state ROUTE2_HP_UP, ON
+
+ toggleable_objects_for ROUTE_4
+ toggle_object_state ROUTE4_TM_WHIRLWIND, ON
+
+ toggleable_objects_for ROUTE_9
+ toggle_object_state ROUTE9_TM_TELEPORT, ON
+
+ toggleable_objects_for ROUTE_12
+ toggle_object_state ROUTE12_SNORLAX, ON
+ toggle_object_state ROUTE12_TM_PAY_DAY, ON
+ toggle_object_state ROUTE12_IRON, ON
+
+ toggleable_objects_for ROUTE_15
+ toggle_object_state ROUTE15_TM_RAGE, ON
+
+ toggleable_objects_for ROUTE_16
+ toggle_object_state ROUTE16_SNORLAX, ON
+
+ toggleable_objects_for ROUTE_22
+ toggle_object_state ROUTE22_RIVAL1, OFF
+ toggle_object_state ROUTE22_RIVAL2, OFF
+
+ toggleable_objects_for ROUTE_24
+ toggle_object_state ROUTE24_COOLTRAINER_M1, ON
+ toggle_object_state ROUTE24_TM_THUNDER_WAVE, ON
+
+ toggleable_objects_for ROUTE_25
+ toggle_object_state ROUTE25_TM_SEISMIC_TOSS, ON
+
+ toggleable_objects_for BLUES_HOUSE
+ toggle_object_state BLUESHOUSE_DAISY1, ON
+ toggle_object_state BLUESHOUSE_DAISY2, OFF
+ toggle_object_state BLUESHOUSE_TOWN_MAP, ON
+
+ toggleable_objects_for OAKS_LAB
+ toggle_object_state OAKSLAB_RIVAL, ON
+ toggle_object_state OAKSLAB_EEVEE_POKE_BALL, ON
+ toggle_object_state OAKSLAB_OAK1, OFF
+ toggle_object_state OAKSLAB_POKEDEX1, ON
+ toggle_object_state OAKSLAB_POKEDEX2, ON
+ toggle_object_state OAKSLAB_OAK2, OFF
+
+ toggleable_objects_for VIRIDIAN_GYM
+ toggle_object_state VIRIDIANGYM_GIOVANNI, ON
+ toggle_object_state VIRIDIANGYM_REVIVE, ON
+
+ toggleable_objects_for MUSEUM_1F
+ toggle_object_state MUSEUM1F_OLD_AMBER, ON
+
+ toggleable_objects_for CERULEAN_MELANIES_HOUSE
+ toggle_object_state CERULEANMELANIESHOUSE_BULBASAUR, ON
+
+ toggleable_objects_for CERULEAN_CAVE_1F
+ toggle_object_state CERULEANCAVE1F_RARE_CANDY, ON
+ toggle_object_state CERULEANCAVE1F_MAX_ELIXER, ON
+ toggle_object_state CERULEANCAVE1F_MAX_REVIVE, ON
+ toggle_object_state CERULEANCAVE1F_ULTRA_BALL, ON
+
+ toggleable_objects_for POKEMON_TOWER_2F
+ toggle_object_state POKEMONTOWER2F_RIVAL, ON
+
+ toggleable_objects_for POKEMON_TOWER_3F
+ toggle_object_state POKEMONTOWER3F_ESCAPE_ROPE, ON
+
+ toggleable_objects_for POKEMON_TOWER_4F
+ toggle_object_state POKEMONTOWER4F_ELIXER, ON
+ toggle_object_state POKEMONTOWER4F_AWAKENING, ON
+ toggle_object_state POKEMONTOWER4F_HP_UP, ON
+
+ toggleable_objects_for POKEMON_TOWER_5F
+ toggle_object_state POKEMONTOWER5F_NUGGET, ON
+
+ toggleable_objects_for POKEMON_TOWER_6F
+ toggle_object_state POKEMONTOWER6F_RARE_CANDY, ON
+ toggle_object_state POKEMONTOWER6F_X_ACCURACY, ON
+
+ toggleable_objects_for POKEMON_TOWER_7F
+ toggle_object_state POKEMONTOWER7F_JESSIE, OFF
+ toggle_object_state POKEMONTOWER7F_JAMES, OFF
+ toggle_object_state POKEMONTOWER7F_MR_FUJI, ON
+
+ toggleable_objects_for MR_FUJIS_HOUSE
+ toggle_object_state MRFUJISHOUSE_MR_FUJI, OFF
+
+ toggleable_objects_for CELADON_MANSION_ROOF_HOUSE
+ toggle_object_state CELADONMANSION_ROOF_HOUSE_EEVEE_POKEBALL, ON
+
+ toggleable_objects_for GAME_CORNER
+ toggle_object_state GAMECORNER_ROCKET, ON
+
+ toggleable_objects_for WARDENS_HOUSE
+ toggle_object_state WARDENSHOUSE_RARE_CANDY, ON
+
+ toggleable_objects_for POKEMON_MANSION_1F
+ toggle_object_state POKEMONMANSION1F_ESCAPE_ROPE, ON
+ toggle_object_state POKEMONMANSION1F_CARBOS, ON
+
+ toggleable_objects_for FIGHTING_DOJO
+ toggle_object_state FIGHTINGDOJO_HITMONLEE_POKE_BALL, ON
+ toggle_object_state FIGHTINGDOJO_HITMONCHAN_POKE_BALL, ON
+
+ toggleable_objects_for SILPH_CO_1F
+ toggle_object_state SILPHCO1F_LINK_RECEPTIONIST, OFF
+
+ toggleable_objects_for POWER_PLANT
+ toggle_object_state POWERPLANT_VOLTORB1, ON
+ toggle_object_state POWERPLANT_VOLTORB2, ON
+ toggle_object_state POWERPLANT_VOLTORB3, ON
+ toggle_object_state POWERPLANT_ELECTRODE1, ON
+ toggle_object_state POWERPLANT_VOLTORB4, ON
+ toggle_object_state POWERPLANT_VOLTORB5, ON
+ toggle_object_state POWERPLANT_ELECTRODE2, ON
+ toggle_object_state POWERPLANT_VOLTORB6, ON
+ toggle_object_state POWERPLANT_ZAPDOS, ON
+ toggle_object_state POWERPLANT_CARBOS, ON
+ toggle_object_state POWERPLANT_HP_UP, ON
+ toggle_object_state POWERPLANT_RARE_CANDY, ON
+ toggle_object_state POWERPLANT_TM_THUNDER, ON
+ toggle_object_state POWERPLANT_TM_REFLECT, ON
+
+ toggleable_objects_for VICTORY_ROAD_2F
+ toggle_object_state VICTORYROAD2F_MOLTRES, ON
+ toggle_object_state VICTORYROAD2F_TM_SUBMISSION, ON
+ toggle_object_state VICTORYROAD2F_FULL_HEAL, ON
+ toggle_object_state VICTORYROAD2F_TM_MEGA_KICK, ON
+ toggle_object_state VICTORYROAD2F_GUARD_SPEC, ON
+ toggle_object_state VICTORYROAD2F_BOULDER3, ON
+
+ toggleable_objects_for BILLS_HOUSE
+ toggle_object_state BILLSHOUSE_BILL_POKEMON, ON
+ toggle_object_state BILLSHOUSE_BILL1, OFF
+ toggle_object_state BILLSHOUSE_BILL2, OFF
+
+ toggleable_objects_for VIRIDIAN_FOREST
+ toggle_object_state VIRIDIANFOREST_POTION1, ON
+ toggle_object_state VIRIDIANFOREST_POTION2, ON
+ toggle_object_state VIRIDIANFOREST_POKE_BALL, ON
+
+ toggleable_objects_for MT_MOON_1F
+ toggle_object_state MTMOON1F_POTION1, ON
+ toggle_object_state MTMOON1F_MOON_STONE, ON
+ toggle_object_state MTMOON1F_RARE_CANDY, ON
+ toggle_object_state MTMOON1F_ESCAPE_ROPE, ON
+ toggle_object_state MTMOON1F_POTION2, ON
+ toggle_object_state MTMOON1F_TM_WATER_GUN, ON
+
+ toggleable_objects_for MT_MOON_B2F
+ toggle_object_state MTMOONB2F_JESSIE, OFF
+ toggle_object_state MTMOONB2F_JAMES, OFF
+ toggle_object_state MTMOONB2F_DOME_FOSSIL, ON
+ toggle_object_state MTMOONB2F_HELIX_FOSSIL, ON
+ toggle_object_state MTMOONB2F_HP_UP, ON
+ toggle_object_state MTMOONB2F_TM_MEGA_PUNCH, ON
+
+ toggleable_objects_for SS_ANNE_2F
+ toggle_object_state SSANNE2F_RIVAL, OFF
+
+ toggleable_objects_for SS_ANNE_1F_ROOMS
+ toggle_object_state SSANNE1FROOMS_TM_BODY_SLAM, ON
+
+ toggleable_objects_for SS_ANNE_2F_ROOMS
+ toggle_object_state SSANNE2FROOMS_MAX_ETHER, ON
+ toggle_object_state SSANNE2FROOMS_RARE_CANDY, ON
+
+ toggleable_objects_for SS_ANNE_B1F_ROOMS
+ toggle_object_state SSANNEB1FROOMS_ETHER, ON
+ toggle_object_state SSANNEB1FROOMS_TM_REST, ON
+ toggle_object_state SSANNEB1FROOMS_MAX_POTION, ON
+
+ toggleable_objects_for VICTORY_ROAD_3F
+ toggle_object_state VICTORYROAD3F_MAX_REVIVE, ON
+ toggle_object_state VICTORYROAD3F_TM_EXPLOSION, ON
+ toggle_object_state VICTORYROAD3F_BOULDER4, ON
+
+ toggleable_objects_for ROCKET_HIDEOUT_B1F
+ toggle_object_state ROCKETHIDEOUTB1F_ESCAPE_ROPE, ON
+ toggle_object_state ROCKETHIDEOUTB1F_HYPER_POTION, ON
+
+ toggleable_objects_for ROCKET_HIDEOUT_B2F
+ toggle_object_state ROCKETHIDEOUTB2F_MOON_STONE, ON
+ toggle_object_state ROCKETHIDEOUTB2F_NUGGET, ON
+ toggle_object_state ROCKETHIDEOUTB2F_TM_HORN_DRILL, ON
+ toggle_object_state ROCKETHIDEOUTB2F_SUPER_POTION, ON
+
+ toggleable_objects_for ROCKET_HIDEOUT_B3F
+ toggle_object_state ROCKETHIDEOUTB3F_TM_DOUBLE_EDGE, ON
+ toggle_object_state ROCKETHIDEOUTB3F_RARE_CANDY, ON
+
+ toggleable_objects_for ROCKET_HIDEOUT_B4F
+ toggle_object_state ROCKETHIDEOUTB4F_GIOVANNI, ON
+ toggle_object_state ROCKETHIDEOUTB4F_JAMES, OFF
+ toggle_object_state ROCKETHIDEOUTB4F_JESSIE, OFF
+ toggle_object_state ROCKETHIDEOUTB4F_HP_UP, ON
+ toggle_object_state ROCKETHIDEOUTB4F_TM_RAZOR_WIND, ON
+ toggle_object_state ROCKETHIDEOUTB4F_IRON, ON
+ toggle_object_state ROCKETHIDEOUTB4F_SILPH_SCOPE, OFF
+ toggle_object_state ROCKETHIDEOUTB4F_LIFT_KEY, OFF
+
+ toggleable_objects_for SILPH_CO_2F
+ toggle_object_state SILPHCO2F_SILPH_WORKER_F, ON
+ toggle_object_state SILPHCO2F_SCIENTIST1, ON
+ toggle_object_state SILPHCO2F_SCIENTIST2, ON
+ toggle_object_state SILPHCO2F_ROCKET1, ON
+ toggle_object_state SILPHCO2F_ROCKET2, ON
+
+ toggleable_objects_for SILPH_CO_3F
+ toggle_object_state SILPHCO3F_ROCKET, ON
+ toggle_object_state SILPHCO3F_SCIENTIST, ON
+ toggle_object_state SILPHCO3F_HYPER_POTION, ON
+
+ toggleable_objects_for SILPH_CO_4F
+ toggle_object_state SILPHCO4F_ROCKET1, ON
+ toggle_object_state SILPHCO4F_SCIENTIST, ON
+ toggle_object_state SILPHCO4F_ROCKET2, ON
+ toggle_object_state SILPHCO4F_FULL_HEAL, ON
+ toggle_object_state SILPHCO4F_MAX_REVIVE, ON
+ toggle_object_state SILPHCO4F_ESCAPE_ROPE, ON
+
+ toggleable_objects_for SILPH_CO_5F
+ toggle_object_state SILPHCO5F_ROCKET1, ON
+ toggle_object_state SILPHCO5F_SCIENTIST, ON
+ toggle_object_state SILPHCO5F_ROCKER, ON
+ toggle_object_state SILPHCO5F_ROCKET2, ON
+ toggle_object_state SILPHCO5F_TM_TAKE_DOWN, ON
+ toggle_object_state SILPHCO5F_PROTEIN, ON
+ toggle_object_state SILPHCO5F_CARD_KEY, ON
+
+ toggleable_objects_for SILPH_CO_6F
+ toggle_object_state SILPHCO6F_ROCKET1, ON
+ toggle_object_state SILPHCO6F_SCIENTIST, ON
+ toggle_object_state SILPHCO6F_ROCKET2, ON
+ toggle_object_state SILPHCO6F_HP_UP, ON
+ toggle_object_state SILPHCO6F_X_ACCURACY, ON
+
+ toggleable_objects_for SILPH_CO_7F
+ toggle_object_state SILPHCO7F_ROCKET1, ON
+ toggle_object_state SILPHCO7F_SCIENTIST, ON
+ toggle_object_state SILPHCO7F_ROCKET2, ON
+ toggle_object_state SILPHCO7F_ROCKET3, ON
+ toggle_object_state SILPHCO7F_RIVAL, ON
+ toggle_object_state SILPHCO7F_CALCIUM, ON
+ toggle_object_state SILPHCO7F_TM_SWORDS_DANCE, ON
+ toggle_object_state SILPHCO7F_UNUSED, ON
+
+ toggleable_objects_for SILPH_CO_8F
+ toggle_object_state SILPHCO8F_ROCKET1, ON
+ toggle_object_state SILPHCO8F_SCIENTIST, ON
+ toggle_object_state SILPHCO8F_ROCKET2, ON
+
+ toggleable_objects_for SILPH_CO_9F
+ toggle_object_state SILPHCO9F_ROCKET1, ON
+ toggle_object_state SILPHCO9F_SCIENTIST, ON
+ toggle_object_state SILPHCO9F_ROCKET2, ON
+
+ toggleable_objects_for SILPH_CO_10F
+ toggle_object_state SILPHCO10F_ROCKET, ON
+ toggle_object_state SILPHCO10F_SCIENTIST, ON
+ toggle_object_state SILPHCO10F_SILPH_WORKER_F, ON
+ toggle_object_state SILPHCO10F_TM_EARTHQUAKE, ON
+ toggle_object_state SILPHCO10F_RARE_CANDY, ON
+ toggle_object_state SILPHCO10F_CARBOS, ON
+
+ toggleable_objects_for SILPH_CO_11F
+ toggle_object_state SILPHCO11F_GIOVANNI, ON
+ toggle_object_state SILPHCO11F_JAMES, ON
+ toggle_object_state SILPHCO11F_ROCKET, ON
+ toggle_object_state SILPHCO11F_JESSIE, ON
+
+ toggleable_objects_for UNUSED_MAP_F4
+ toggle_object_state $02, ON ; unused
+
+ toggleable_objects_for POKEMON_MANSION_2F
+ toggle_object_state POKEMONMANSION2F_CALCIUM, ON
+
+ toggleable_objects_for POKEMON_MANSION_3F
+ toggle_object_state POKEMONMANSION3F_MAX_POTION, ON
+ toggle_object_state POKEMONMANSION3F_IRON, ON
+
+ toggleable_objects_for POKEMON_MANSION_B1F
+ toggle_object_state POKEMONMANSIONB1F_RARE_CANDY, ON
+ toggle_object_state POKEMONMANSIONB1F_FULL_RESTORE, ON
+ toggle_object_state POKEMONMANSIONB1F_TM_BLIZZARD, ON
+ toggle_object_state POKEMONMANSIONB1F_TM_SOLARBEAM, ON
+ toggle_object_state POKEMONMANSIONB1F_SECRET_KEY, ON
+
+ toggleable_objects_for SAFARI_ZONE_EAST
+ toggle_object_state SAFARIZONEEAST_FULL_RESTORE, ON
+ toggle_object_state SAFARIZONEEAST_MAX_RESTORE, ON
+ toggle_object_state SAFARIZONEEAST_CARBOS, ON
+ toggle_object_state SAFARIZONEEAST_TM_EGG_BOMB, ON
+
+ toggleable_objects_for SAFARI_ZONE_NORTH
+ toggle_object_state SAFARIZONENORTH_PROTEIN, ON
+ toggle_object_state SAFARIZONENORTH_TM_SKULL_BASH, ON
+
+ toggleable_objects_for SAFARI_ZONE_WEST
+ toggle_object_state SAFARIZONEWEST_MAX_POTION, ON
+ toggle_object_state SAFARIZONEWEST_TM_DOUBLE_TEAM, ON
+ toggle_object_state SAFARIZONEWEST_MAX_REVIVE, ON
+ toggle_object_state SAFARIZONEWEST_GOLD_TEETH, ON
+
+ toggleable_objects_for SAFARI_ZONE_CENTER
+ toggle_object_state SAFARIZONECENTER_NUGGET, ON
+
+ toggleable_objects_for CERULEAN_CAVE_2F
+ toggle_object_state CERULEANCAVE2F_RARE_CANDY, ON
+ toggle_object_state CERULEANCAVE2F_ULTRA_BALL, ON
+ toggle_object_state CERULEANCAVE2F_MAX_REVIVE, ON
+ toggle_object_state CERULEANCAVE2F_FULL_RESTORE, ON
+
+ toggleable_objects_for CERULEAN_CAVE_B1F
+ toggle_object_state CERULEANCAVEB1F_MEWTWO, ON
+ toggle_object_state CERULEANCAVEB1F_ULTRA_BALL1, ON
+ toggle_object_state CERULEANCAVEB1F_ULTRA_BALL2, ON
+ toggle_object_state CERULEANCAVEB1F_MAX_REVIVE, ON
+ toggle_object_state CERULEANCAVEB1F_MAX_ELIXER, ON
+
+ toggleable_objects_for VICTORY_ROAD_1F
+ toggle_object_state VICTORYROAD1F_TM_SKY_ATTACK, ON
+ toggle_object_state VICTORYROAD1F_RARE_CANDY, ON
+
+ toggleable_objects_for CHAMPIONS_ROOM
+ toggle_object_state CHAMPIONSROOM_OAK, OFF
+
+ toggleable_objects_for SEAFOAM_ISLANDS_1F
+ toggle_object_state SEAFOAMISLANDS1F_BOULDER1, ON
+ toggle_object_state SEAFOAMISLANDS1F_BOULDER2, ON
+
+ toggleable_objects_for SEAFOAM_ISLANDS_B1F
+ toggle_object_state SEAFOAMISLANDSB1F_BOULDER1, OFF
+ toggle_object_state SEAFOAMISLANDSB1F_BOULDER2, OFF
+
+ toggleable_objects_for SEAFOAM_ISLANDS_B2F
+ toggle_object_state SEAFOAMISLANDSB2F_BOULDER1, OFF
+ toggle_object_state SEAFOAMISLANDSB2F_BOULDER2, OFF
+
+ toggleable_objects_for SEAFOAM_ISLANDS_B3F
+ toggle_object_state SEAFOAMISLANDSB3F_BOULDER2, ON
+ toggle_object_state SEAFOAMISLANDSB3F_BOULDER3, ON
+ toggle_object_state SEAFOAMISLANDSB3F_BOULDER5, OFF
+ toggle_object_state SEAFOAMISLANDSB3F_BOULDER6, OFF
+
+ toggleable_objects_for SEAFOAM_ISLANDS_B4F
+ toggle_object_state SEAFOAMISLANDSB4F_BOULDER1, OFF
+ toggle_object_state SEAFOAMISLANDSB4F_BOULDER2, OFF
+ toggle_object_state SEAFOAMISLANDSB4F_ARTICUNO, ON
+
+; unreferenced
+ db BLUES_HOUSE, BLUESHOUSE_DAISY1, ON
+ db BLUES_HOUSE, BLUESHOUSE_DAISY2, OFF
+ db BLUES_HOUSE, BLUESHOUSE_TOWN_MAP, ON
+
+ assert_table_length NUM_TOGGLEABLE_OBJECTS
+
+ db -1, 1, ON ; end
diff --git a/data/maps/town_map_entries.asm b/data/maps/town_map_entries.asm
index 0f6976ae..d67f6f97 100644
--- a/data/maps/town_map_entries.asm
+++ b/data/maps/town_map_entries.asm
@@ -1,4 +1,4 @@
-MACRO external_map
+MACRO outdoor_map
dn \2, \1
dw \3
ENDM
@@ -7,114 +7,116 @@ ENDM
ExternalMapEntries:
table_width 3
; x, y, name
- external_map 2, 11, PalletTownName
- external_map 2, 8, ViridianCityName
- external_map 2, 3, PewterCityName
- external_map 10, 2, CeruleanCityName
- external_map 14, 5, LavenderTownName
- external_map 10, 9, VermilionCityName
- external_map 7, 5, CeladonCityName
- external_map 8, 13, FuchsiaCityName
- external_map 2, 15, CinnabarIslandName
- external_map 0, 2, IndigoPlateauName
- external_map 10, 5, SaffronCityName
- external_map 0, 0, PalletTownName ; unused
- external_map 2, 10, Route1Name
- external_map 2, 6, Route2Name
- external_map 4, 3, Route3Name
- external_map 8, 2, Route4Name
- external_map 10, 3, Route5Name
- external_map 10, 8, Route6Name
- external_map 8, 5, Route7Name
- external_map 13, 5, Route8Name
- external_map 13, 2, Route9Name
- external_map 14, 4, Route10Name
- external_map 12, 9, Route11Name
- external_map 14, 9, Route12Name
- external_map 13, 11, Route13Name
- external_map 11, 12, Route14Name
- external_map 10, 13, Route15Name
- external_map 5, 5, Route16Name
- external_map 4, 8, Route17Name
- external_map 6, 13, Route18Name
- external_map 6, 15, Route19Name
- external_map 4, 15, Route20Name
- external_map 2, 13, Route21Name
- external_map 0, 8, Route22Name
- external_map 0, 6, Route23Name
- external_map 10, 1, Route24Name
- external_map 11, 0, Route25Name
+ outdoor_map 2, 11, PalletTownName
+ outdoor_map 2, 8, ViridianCityName
+ outdoor_map 2, 3, PewterCityName
+ outdoor_map 10, 2, CeruleanCityName
+ outdoor_map 14, 5, LavenderTownName
+ outdoor_map 10, 9, VermilionCityName
+ outdoor_map 7, 5, CeladonCityName
+ outdoor_map 8, 13, FuchsiaCityName
+ outdoor_map 2, 15, CinnabarIslandName
+ outdoor_map 0, 2, IndigoPlateauName
+ outdoor_map 10, 5, SaffronCityName
+ outdoor_map 0, 0, PalletTownName ; unused
+ outdoor_map 2, 10, Route1Name
+ outdoor_map 2, 6, Route2Name
+ outdoor_map 4, 3, Route3Name
+ outdoor_map 8, 2, Route4Name
+ outdoor_map 10, 3, Route5Name
+ outdoor_map 10, 8, Route6Name
+ outdoor_map 8, 5, Route7Name
+ outdoor_map 13, 5, Route8Name
+ outdoor_map 13, 2, Route9Name
+ outdoor_map 14, 4, Route10Name
+ outdoor_map 12, 9, Route11Name
+ outdoor_map 14, 9, Route12Name
+ outdoor_map 13, 11, Route13Name
+ outdoor_map 11, 12, Route14Name
+ outdoor_map 10, 13, Route15Name
+ outdoor_map 5, 5, Route16Name
+ outdoor_map 4, 8, Route17Name
+ outdoor_map 6, 13, Route18Name
+ outdoor_map 6, 15, Route19Name
+ outdoor_map 4, 15, Route20Name
+ outdoor_map 2, 13, Route21Name
+ outdoor_map 0, 8, Route22Name
+ outdoor_map 0, 6, Route23Name
+ outdoor_map 10, 1, Route24Name
+ outdoor_map 11, 0, Route25Name
assert_table_length FIRST_INDOOR_MAP
-MACRO internal_map
- db \1 + 1
+MACRO indoor_map
+ db INDOORGROUP_\1
dn \3, \2
dw \4
ENDM
; the appearance of buildings and dungeons in the town map
InternalMapEntries:
- ; maximum map id subject to this rule, x, y, name
- internal_map OAKS_LAB, 2, 11, PalletTownName
- internal_map VIRIDIAN_GYM, 2, 8, ViridianCityName
- internal_map VIRIDIAN_FOREST_SOUTH_GATE, 2, 6, Route2Name
- internal_map VIRIDIAN_FOREST, 2, 4, ViridianForestName
- internal_map PEWTER_POKECENTER, 2, 3, PewterCityName
- internal_map MT_MOON_B2F, 6, 2, MountMoonName
- internal_map CERULEAN_MART, 10, 2, CeruleanCityName
- internal_map MT_MOON_POKECENTER, 5, 2, Route4Name
- internal_map CERULEAN_TRASHED_HOUSE_COPY, 10, 2, CeruleanCityName
- internal_map DAYCARE, 10, 4, Route5Name
- internal_map UNDERGROUND_PATH_ROUTE_6_COPY, 10, 6, Route6Name
- internal_map UNDERGROUND_PATH_ROUTE_7_COPY, 9, 5, Route7Name
- internal_map UNDERGROUND_PATH_ROUTE_8, 11, 5, Route8Name
- internal_map ROCK_TUNNEL_1F, 14, 3, RockTunnelName
- internal_map POWER_PLANT, 15, 4, PowerPlantName
- internal_map ROUTE_11_GATE_2F, 13, 9, Route11Name
- internal_map ROUTE_12_GATE_1F, 14, 7, Route12Name
- internal_map BILLS_HOUSE, 12, 0, SeaCottageName
- internal_map VERMILION_DOCK, 10, 9, VermilionCityName
- internal_map SS_ANNE_B1F_ROOMS, 9, 10, SSAnneName
- internal_map VICTORY_ROAD_1F, 0, 4, VictoryRoadName
- internal_map HALL_OF_FAME, 0, 2, PokemonLeagueName
- internal_map UNDERGROUND_PATH_NORTH_SOUTH, 10, 5, UndergroundPathName
- internal_map CHAMPIONS_ROOM, 0, 2, PokemonLeagueName
- internal_map UNDERGROUND_PATH_WEST_EAST, 10, 5, UndergroundPathName
- internal_map CELADON_HOTEL, 7, 5, CeladonCityName
- internal_map LAVENDER_POKECENTER, 14, 5, LavenderTownName
- internal_map POKEMON_TOWER_7F, 15, 5, PokemonTowerName
- internal_map LAVENDER_CUBONE_HOUSE, 14, 5, LavenderTownName
- internal_map WARDENS_HOUSE, 8, 13, FuchsiaCityName
- internal_map SAFARI_ZONE_GATE, 8, 12, SafariZoneName
- internal_map FUCHSIA_MEETING_ROOM, 8, 13, FuchsiaCityName
- internal_map SEAFOAM_ISLANDS_B4F, 5, 15, SeafoamIslandsName
- internal_map VERMILION_OLD_ROD_HOUSE, 10, 9, VermilionCityName
- internal_map FUCHSIA_GOOD_ROD_HOUSE, 8, 13, FuchsiaCityName
- internal_map POKEMON_MANSION_1F, 2, 15, PokemonMansionName
- internal_map CINNABAR_MART_COPY, 2, 15, CinnabarIslandName
- internal_map INDIGO_PLATEAU_LOBBY, 0, 2, IndigoPlateauName
- internal_map MR_PSYCHICS_HOUSE, 10, 5, SaffronCityName
- internal_map ROUTE_15_GATE_2F, 9, 13, Route15Name
- internal_map ROUTE_16_FLY_HOUSE, 4, 5, Route16Name
- internal_map ROUTE_12_SUPER_ROD_HOUSE, 14, 10, Route12Name
- internal_map ROUTE_18_GATE_2F, 7, 13, Route18Name
- internal_map SEAFOAM_ISLANDS_1F, 5, 15, SeafoamIslandsName
- internal_map ROUTE_22_GATE, 0, 7, Route22Name
- internal_map VICTORY_ROAD_2F, 0, 4, VictoryRoadName
- internal_map ROUTE_12_GATE_2F, 14, 7, Route12Name
- internal_map VERMILION_TRADE_HOUSE, 10, 9, VermilionCityName
- internal_map DIGLETTS_CAVE, 3, 4, DiglettsCaveName
- internal_map VICTORY_ROAD_3F, 0, 4, VictoryRoadName
- internal_map UNUSED_MAP_CE, 7, 5, RocketHQName
- internal_map SILPH_CO_8F, 10, 5, SilphCoName
- internal_map POKEMON_MANSION_B1F, 2, 15, PokemonMansionName
- internal_map SAFARI_ZONE_NORTH_REST_HOUSE, 8, 12, SafariZoneName
- internal_map CERULEAN_CAVE_1F, 9, 1, CeruleanCaveName
- internal_map NAME_RATERS_HOUSE, 14, 5, LavenderTownName
- internal_map CERULEAN_BADGE_HOUSE, 10, 2, CeruleanCityName
- internal_map ROCK_TUNNEL_B1F, 14, 3, RockTunnelName
- internal_map SILPH_CO_ELEVATOR, 10, 5, SilphCoName
- internal_map AGATHAS_ROOM, 0, 2, PokemonLeagueName
- internal_map SUMMER_BEACH_HOUSE, 6, 15, Route19Name
+ table_width 4
+ ; indoor map group, x, y, name
+ indoor_map PALLET_TOWN, 2, 11, PalletTownName
+ indoor_map VIRIDIAN_CITY, 2, 8, ViridianCityName
+ indoor_map ROUTE_2, 2, 6, Route2Name
+ indoor_map VIRIDIAN_FOREST, 2, 4, ViridianForestName
+ indoor_map PEWTER_CITY, 2, 3, PewterCityName
+ indoor_map MT_MOON, 6, 2, MountMoonName
+ indoor_map CERULEAN_CITY, 10, 2, CeruleanCityName
+ indoor_map ROUTE_4, 5, 2, Route4Name
+ indoor_map CERULEAN_CITY_2, 10, 2, CeruleanCityName
+ indoor_map ROUTE_5, 10, 4, Route5Name
+ indoor_map ROUTE_6, 10, 6, Route6Name
+ indoor_map ROUTE_7, 9, 5, Route7Name
+ indoor_map ROUTE_8, 11, 5, Route8Name
+ indoor_map ROCK_TUNNEL, 14, 3, RockTunnelName
+ indoor_map POWER_PLANT, 15, 4, PowerPlantName
+ indoor_map ROUTE_11, 13, 9, Route11Name
+ indoor_map ROUTE_12, 14, 7, Route12Name
+ indoor_map SEA_COTTAGE, 12, 0, SeaCottageName
+ indoor_map VERMILION_CITY, 10, 9, VermilionCityName
+ indoor_map SS_ANNE, 9, 10, SSAnneName
+ indoor_map VICTORY_ROAD, 0, 4, VictoryRoadName
+ indoor_map POKEMON_LEAGUE, 0, 2, PokemonLeagueName
+ indoor_map UNDERGROUND_PATH, 10, 5, UndergroundPathName
+ indoor_map POKEMON_LEAGUE_2, 0, 2, PokemonLeagueName
+ indoor_map UNDERGROUND_PATH_2, 10, 5, UndergroundPathName
+ indoor_map CELADON_CITY, 7, 5, CeladonCityName
+ indoor_map LAVENDER_TOWN, 14, 5, LavenderTownName
+ indoor_map POKEMON_TOWER, 15, 5, PokemonTowerName
+ indoor_map LAVENDER_TOWN_2, 14, 5, LavenderTownName
+ indoor_map FUCHSIA_CITY, 8, 13, FuchsiaCityName
+ indoor_map SAFARI_ZONE, 8, 12, SafariZoneName
+ indoor_map FUCHSIA_CITY_2, 8, 13, FuchsiaCityName
+ indoor_map SEAFOAM_ISLANDS, 5, 15, SeafoamIslandsName
+ indoor_map VERMILION_CITY_2, 10, 9, VermilionCityName
+ indoor_map FUCHSIA_CITY_3, 8, 13, FuchsiaCityName
+ indoor_map POKEMON_MANSION, 2, 15, PokemonMansionName
+ indoor_map CINNABAR_ISLAND, 2, 15, CinnabarIslandName
+ indoor_map INDIGO_PLATEAU, 0, 2, IndigoPlateauName
+ indoor_map SAFFRON_CITY, 10, 5, SaffronCityName
+ indoor_map ROUTE_15, 9, 13, Route15Name
+ indoor_map ROUTE_16, 4, 5, Route16Name
+ indoor_map ROUTE_12_2, 14, 10, Route12Name
+ indoor_map ROUTE_18, 7, 13, Route18Name
+ indoor_map SEAFOAM_ISLANDS_2, 5, 15, SeafoamIslandsName
+ indoor_map ROUTE_22, 0, 7, Route22Name
+ indoor_map VICTORY_ROAD_2, 0, 4, VictoryRoadName
+ indoor_map ROUTE_12_3, 14, 7, Route12Name
+ indoor_map VERMILION_CITY_3, 10, 9, VermilionCityName
+ indoor_map DIGLETTS_CAVE, 3, 4, DiglettsCaveName
+ indoor_map VICTORY_ROAD_3, 0, 4, VictoryRoadName
+ indoor_map ROCKET_HQ, 7, 5, RocketHQName
+ indoor_map SILPH_CO, 10, 5, SilphCoName
+ indoor_map POKEMON_MANSION_2, 2, 15, PokemonMansionName
+ indoor_map SAFARI_ZONE_2, 8, 12, SafariZoneName
+ indoor_map CERULEAN_CAVE, 9, 1, CeruleanCaveName
+ indoor_map LAVENDER_TOWN_3, 14, 5, LavenderTownName
+ indoor_map CERULEAN_CITY_3, 10, 2, CeruleanCityName
+ indoor_map ROCK_TUNNEL_2, 14, 3, RockTunnelName
+ indoor_map SILPH_CO_2, 10, 5, SilphCoName
+ indoor_map POKEMON_LEAGUE_3, 0, 2, PokemonLeagueName
+ indoor_map ROUTE_19, 6, 15, Route19Name
+ assert_table_length NUM_INDOOR_MAP_GROUPS
db -1 ; end
diff --git a/data/moves/grammar.asm b/data/moves/grammar.asm
index e44b1abc..884b4f2f 100644
--- a/data/moves/grammar.asm
+++ b/data/moves/grammar.asm
@@ -1,16 +1,20 @@
-ExclamationPointMoveSets:
-; set 0
+; Used by GetMoveGrammar (see engine/battle/core.asm)
+; Each move is given an identifier for what usedmovetext to use (0-4).
+; Made redundant in English localization, where all are just "[mon]<LINE>used [move]!"
+
+MoveGrammar:
+; 0: originally "[mon]は<LINE>[move]を つかった!" ("[mon]<LINE>used [move]!")
db SWORDS_DANCE
db GROWTH
db 0 ; end set
-; set 1
+; 1: originally "[mon]は<LINE>[move]を した!" ("[mon]<LINE>did [move]!")
db RECOVER
db SELFDESTRUCT
db AMNESIA
db 0 ; end set
-; set 2
+; 2: originally "[mon]は<LINE>[move]した!" ("[mon]<LINE>did [move]!")
db MEDITATE
db AGILITY
db TELEPORT
@@ -20,7 +24,7 @@ ExclamationPointMoveSets:
db BARRAGE
db 0 ; end set
-; set 3
+; 3: originally "[mon]の<LINE>[move] こうげき!" ("[mon]'s<LINE>[move] attack!")
db POUND
db SCRATCH
db VICEGRIP
@@ -69,4 +73,6 @@ ExclamationPointMoveSets:
db SUBSTITUTE
db 0 ; end set
+; 4: originally "[mon]の<LINE>[move]!" ("[mon]'s<LINE>[move]!")
+; Any move not listed above uses this grammar.
db -1 ; end
diff --git a/data/moves/names.asm b/data/moves/names.asm
index 025172d5..caecc06c 100644
--- a/data/moves/names.asm
+++ b/data/moves/names.asm
@@ -1,5 +1,6 @@
MoveNames::
- list_start
+ ; in-battle "used <move name>!" text can only fit 12 (MOVE_NAME_LENGTH - 2) characters
+ list_start MOVE_NAME_LENGTH - 2
li "POUND"
li "KARATE CHOP"
li "DOUBLESLAP"
diff --git a/data/player/names.asm b/data/player/names.asm
new file mode 100644
index 00000000..67f2df36
--- /dev/null
+++ b/data/player/names.asm
@@ -0,0 +1,15 @@
+; see constants/player_constants.asm
+
+DefaultNamesPlayer:
+ db "NEW NAME"
+FOR n, 1, NUM_PLAYER_NAMES + 1
+ next #PLAYERNAME{d:n}
+ENDR
+ db "@"
+
+DefaultNamesRival:
+ db "NEW NAME"
+FOR n, 1, NUM_PLAYER_NAMES + 1
+ next #RIVALNAME{d:n}
+ENDR
+ db "@"
diff --git a/data/player/names_list.asm b/data/player/names_list.asm
new file mode 100644
index 00000000..44f3c7f1
--- /dev/null
+++ b/data/player/names_list.asm
@@ -0,0 +1,17 @@
+; see constants/player_constants.asm
+
+DefaultNamesPlayerList:
+ db "NEW NAME@"
+ list_start PLAYER_NAME_LENGTH - 1
+FOR n, 1, NUM_PLAYER_NAMES + 1
+ li #PLAYERNAME{d:n}
+ENDR
+ assert_list_length NUM_PLAYER_NAMES
+
+DefaultNamesRivalList:
+ db "NEW NAME@"
+ list_start PLAYER_NAME_LENGTH - 1
+FOR n, 1, NUM_PLAYER_NAMES + 1
+ li #RIVALNAME{d:n}
+ENDR
+ assert_list_length NUM_PLAYER_NAMES
diff --git a/data/player_names.asm b/data/player_names.asm
deleted file mode 100644
index cf461a7a..00000000
--- a/data/player_names.asm
+++ /dev/null
@@ -1,13 +0,0 @@
-DefaultNamesPlayer:
- db "NEW NAME"
- next "YELLOW"
- next "ASH"
- next "JACK"
- db "@"
-
-DefaultNamesRival:
- db "NEW NAME"
- next "BLUE"
- next "GARY"
- next "JOHN"
- db "@"
diff --git a/data/player_names_list.asm b/data/player_names_list.asm
deleted file mode 100644
index a5f38919..00000000
--- a/data/player_names_list.asm
+++ /dev/null
@@ -1,11 +0,0 @@
-DefaultNamesPlayerList:
- db "NEW NAME@"
- db "YELLOW@"
- db "ASH@"
- db "JACK@"
-
-DefaultNamesRivalList:
- db "NEW NAME@"
- db "BLUE@"
- db "GARY@"
- db "JOHN@"
diff --git a/data/predef_pointers.asm b/data/predef_pointers.asm
index e6968c46..b3bb1643 100644
--- a/data/predef_pointers.asm
+++ b/data/predef_pointers.asm
@@ -32,14 +32,14 @@ PredefPointers::
add_predef ApplyOutOfBattlePoisonDamage
add_predef AnyPartyAlive
add_predef ShowObject
- add_predef ShowObject2
+ add_predef ShowObject2 ; identical to ShowObject
add_predef ReplaceTileBlock
add_predef InitPlayerData2
add_predef LoadTilesetHeader
add_predef LearnMoveFromLevelUp
add_predef LearnMove
add_predef GetQuantityOfItemInBag
- add_predef CheckForHiddenObjectOrBookshelfOrCardKeyDoor, $03 ; home bank
+ add_predef CheckForHiddenEventOrBookshelfOrCardKeyDoor, $03 ; home bank
add_predef GiveItem, $03 ; home bank
add_predef ChangeBGPalColor0_4Frames
add_predef FindPathToPlayer
@@ -75,7 +75,7 @@ PredefPointers::
add_predef WriteMonMoves
add_predef SaveMenu
add_predef LoadSGB
- add_predef MarkTownVisitedAndLoadMissableObjects
+ add_predef MarkTownVisitedAndLoadToggleableObjects
add_predef SetPartyMonTypes
add_predef CanLearnTM
add_predef TMToMove
diff --git a/data/text/text_2.asm b/data/text/text_2.asm
index 31f0edb8..fbf0b236 100644
--- a/data/text/text_2.asm
+++ b/data/text/text_2.asm
@@ -1124,21 +1124,21 @@ _MoveIsDisabledText::
cont "disabled!"
prompt
-_MonName1Text::
+_ActorNameText::
text "<USER>@"
text_end
-_Used1Text::
+_UsedMove1Text::
text_start
line "used @"
text_end
-_Used2Text::
+_UsedMove2Text::
text_start
line "used @"
text_end
-_InsteadText::
+_UsedInsteadText::
text "instead,"
cont "@"
text_end
@@ -1147,23 +1147,23 @@ _MoveNameText::
text_ram wStringBuffer
text "@"
-_ExclamationPoint1Text::
+_EndUsedMove1Text::
text "!"
done
-_ExclamationPoint2Text::
+_EndUsedMove2Text::
text "!"
done
-_ExclamationPoint3Text::
+_EndUsedMove3Text::
text "!"
done
-_ExclamationPoint4Text::
+_EndUsedMove4Text::
text "!"
done
-_ExclamationPoint5Text::
+_EndUsedMove5Text::
text "!"
done
diff --git a/data/trainers/move_choices.asm b/data/trainers/move_choices.asm
index eef0579d..118e73cd 100644
--- a/data/trainers/move_choices.asm
+++ b/data/trainers/move_choices.asm
@@ -1,14 +1,15 @@
+DEF __move_choices__ = 0
+
MACRO move_choices
IF _NARG
db \# ; all args
ENDC
db 0 ; end
- DEF list_index += 1
+ DEF __move_choices__ += 1
ENDM
; move choice modification methods that are applied for each trainer class
TrainerClassMoveChoiceModifications:
- list_start
move_choices ; YOUNGSTER
move_choices 1 ; BUG CATCHER
move_choices 1 ; LASS
@@ -56,4 +57,5 @@ TrainerClassMoveChoiceModifications:
move_choices 1 ; CHANNELER
move_choices 1 ; AGATHA
move_choices 1, 3 ; LANCE
- assert_list_length NUM_TRAINERS
+ assert __move_choices__ == NUM_TRAINERS, \
+ "TrainerClassMoveChoiceModifications: expected {d:NUM_TRAINERS} entries, got {d:__move_choices__}"
diff --git a/data/trainers/names.asm b/data/trainers/names.asm
index d7c5677c..1b6f2382 100644
--- a/data/trainers/names.asm
+++ b/data/trainers/names.asm
@@ -1,5 +1,5 @@
TrainerNames::
- list_start
+ list_start TRAINER_NAME_LENGTH - 1
li "YOUNGSTER"
li "BUG CATCHER"
li "LASS"
diff --git a/data/wild/probabilities.asm b/data/wild/probabilities.asm
index 2c56c6b9..6896d937 100644
--- a/data/wild/probabilities.asm
+++ b/data/wild/probabilities.asm
@@ -1,15 +1,28 @@
+DEF wild_chance_slot = 0
+DEF wild_chance_total = 0
+
+MACRO wild_chance
+ DEF wild_chance_total += \1
+ db wild_chance_total - 1
+ db wild_chance_slot * 2
+ DEF wild_chance_slot += 1
+ENDM
+
WildMonEncounterSlotChances:
-; There are 10 slots for wild pokemon, and this is the table that defines how common each of
-; those 10 slots is. A random number is generated and then the first byte of each pair in this
-; table is compared against that random number. If the random number is less than or equal
-; to the first byte, then that slot is chosen. The second byte is double the slot number.
- db 50, $00 ; 51/256 = 19.9% chance of slot 0
- db 101, $02 ; 51/256 = 19.9% chance of slot 1
- db 140, $04 ; 39/256 = 15.2% chance of slot 2
- db 165, $06 ; 25/256 = 9.8% chance of slot 3
- db 190, $08 ; 25/256 = 9.8% chance of slot 4
- db 215, $0A ; 25/256 = 9.8% chance of slot 5
- db 228, $0C ; 13/256 = 5.1% chance of slot 6
- db 241, $0E ; 13/256 = 5.1% chance of slot 7
- db 252, $10 ; 11/256 = 4.3% chance of slot 8
- db 255, $12 ; 3/256 = 1.2% chance of slot 9
+; There are 10 slots for wild pokemon, and this is the list that defines how common each of
+; those 10 slots is. A random number is generated and then the cumulative chance value up to the current
+; slot (included) is compared against that random number. If the random number is less than or equal
+; to said cumulative value, then that slot is chosen.
+ table_width 2
+ wild_chance 51 ; 51/256 = 19.9% chance of slot 0
+ wild_chance 51 ; 51/256 = 19.9% chance of slot 1
+ wild_chance 39 ; 39/256 = 15.2% chance of slot 2
+ wild_chance 25 ; 25/256 = 9.8% chance of slot 3
+ wild_chance 25 ; 25/256 = 9.8% chance of slot 4
+ wild_chance 25 ; 25/256 = 9.8% chance of slot 5
+ wild_chance 13 ; 13/256 = 5.1% chance of slot 6
+ wild_chance 13 ; 13/256 = 5.1% chance of slot 7
+ wild_chance 11 ; 11/256 = 4.3% chance of slot 8
+ wild_chance 3 ; 3/256 = 1.2% chance of slot 9
+ assert_table_length NUM_WILDMONS
+ ASSERT wild_chance_total == 256, "WildMonEncounterSlotChances sum to {d:wild_chance_total}, not 256!"
diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm
index 5adecbd7..aafb966e 100644
--- a/engine/battle/animations.asm
+++ b/engine/battle/animations.asm
@@ -24,7 +24,7 @@ DrawFrameBlock:
jp z, .flipHorizontalTranslateDown ; SUBANIMTYPE_HFLIP
dec a
jr z, .flipBaseCoords ; SUBANIMTYPE_COORDFLIP
-.noTransformation
+; no transformation
ld a, [wBaseCoordY]
add [hl]
ld [de], a ; store Y
@@ -157,7 +157,7 @@ DrawFrameBlock:
ld a, [wNumFBTiles]
cp c
jp nz, .loop ; go back up if there are more tiles to draw
-.afterDrawingTiles
+; after drawing tiles
ld a, [wFBMode]
cp FRAMEBLOCKMODE_02
jr z, .advanceFrameBlockDestAddr ; skip delay and don't clean OAM buffer
@@ -210,7 +210,7 @@ PlayAnimation:
jr z, .AnimationOver
cp FIRST_SE_ID ; is this subanimation or a special effect?
jr c, .playSubanimation
-.doSpecialEffect
+; do Special Effect
ld c, a
ld de, SpecialEffectPointers
.searchSpecialEffectTableLoop
@@ -315,11 +315,11 @@ LoadSubanimation:
and %11100000
cp SUBANIMTYPE_ENEMY << 5
vc_hook Reduce_move_anim_flashing_Reflect
- jr nz, .isNotType5
-.isType5
+ jr nz, .isNotTypeEnemy
+; subanim type enemy
call GetSubanimationTransform2
jr .saveTransformation
-.isNotType5
+.isNotTypeEnemy
vc_hook Reduce_move_anim_flashing_Self_Destruct
call GetSubanimationTransform1
.saveTransformation
@@ -440,11 +440,11 @@ MoveAnimation:
jr nz, .animationsDisabled
call ShareMoveAnimations
call PlayAnimation
- jr .next4
+ jr .next
.animationsDisabled
ld c, 30
call DelayFrames
-.next4
+.next
vc_hook Stop_reducing_move_anim_flashing_Reflect
call PlayApplyingAttackAnimation ; shake the screen or flash the pic in and out (to show damage)
.animationFinished
@@ -968,7 +968,7 @@ BallMoveDistances2:
DoGrowlSpecialEffects:
ld hl, wShadowOAM
ld de, wShadowOAMSprite04
- ld bc, $10
+ ld bc, OBJ_SIZE * 4
call CopyData ; copy the musical note graphic
ld a, [wSubAnimCounter]
dec a
@@ -1141,6 +1141,8 @@ SetAnimationBGPalette:
call UpdateCGBPal_BGP
ret
+AnimationUnusedShakeScreen: ; unreferenced
+; Shakes the screen for a while.
ld b, $5
AnimationShakeScreenVertically:
@@ -1272,12 +1274,12 @@ _AnimationSlideMonUp:
push bc
; In each iteration, slide up all rows but the top one (which is overwritten).
- ld b, 6
+ ld b, PIC_HEIGHT - 1
.slideLoop
push bc
push de
push hl
- ld bc, 7
+ ld bc, PIC_WIDTH
call CopyData
; Note that de and hl are popped in the same order they are pushed, swapping
; their values. When CopyData is called, hl points to a tile 1 row below
@@ -1301,10 +1303,10 @@ _AnimationSlideMonUp:
ld a, [wSlideMonUpBottomRowLeftTile]
inc a
ld [wSlideMonUpBottomRowLeftTile], a
- ld c, 7
+ ld c, PIC_WIDTH
.fillBottomRowLoop
ld [hli], a
- add 7
+ add PIC_WIDTH
dec c
jr nz, .fillBottomRowLoop
@@ -1381,7 +1383,7 @@ AdjustOAMBlockXPos:
ld h, d
AdjustOAMBlockXPos2:
- ld de, 4
+ ld de, OBJ_SIZE
.loop
ld a, [wCoordAdjustmentAmount]
ld b, a
@@ -1391,7 +1393,7 @@ AdjustOAMBlockXPos2:
jr c, .skipPuttingEntryOffScreen
; put off-screen if X >= 168
dec hl
- ld a, 160
+ ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS
ld [hli], a
.skipPuttingEntryOffScreen
ld [hl], a
@@ -1405,7 +1407,7 @@ AdjustOAMBlockYPos:
ld h, d
AdjustOAMBlockYPos2:
- ld de, 4
+ ld de, OBJ_SIZE
.loop
ld a, [wCoordAdjustmentAmount]
ld b, a
@@ -1756,7 +1758,7 @@ _AnimationShootBallsUpward:
dec a
ld [wNumShootingBalls], a
.next
- ld de, 4
+ ld de, OBJ_SIZE
add hl, de ; next OAM entry
dec b
jr nz, .innerLoop
@@ -1809,10 +1811,10 @@ AnimationMinimizeMon:
ld hl, wTempPic
push hl
xor a
- ld bc, 7 * 7 * $10
+ ld bc, PIC_SIZE tiles
call FillMemory
pop hl
- ld de, 7 * 3 * $10 + 4 * $10 + 4
+ ld de, (PIC_WIDTH * 3 + 4) tiles + TILE_SIZE / 4
add hl, de
ld de, MinimizedMonSprite
ld c, MinimizedMonSpriteEnd - MinimizedMonSprite
@@ -1860,7 +1862,7 @@ AnimationSlideMonDownAndHide:
jr nz, .loop
call AnimationHideMonPic
ld hl, wTempPic
- ld bc, 7 * 7 tiles
+ ld bc, PIC_SIZE tiles
xor a
call FillMemory
jp CopyTempPicToMonPic
@@ -1951,7 +1953,7 @@ CopyTempPicToMonPic:
ld hl, vFrontPic ; enemy turn
.next
ld de, wTempPic
- ld bc, 7 * 7
+ ld bc, PIC_SIZE
jp CopyVideoData
AnimationWavyScreen:
@@ -2019,7 +2021,7 @@ AnimationSubstitute:
; Changes the pokemon's sprite to the mini sprite
ld hl, wTempPic
xor a
- ld bc, 7 * 7 tiles
+ ld bc, PIC_SIZE tiles
call FillMemory
ldh a, [hWhoseTurn]
and a
@@ -2055,7 +2057,7 @@ AnimationSubstitute:
jp AnimationShowMonPic
CopyMonsterSpriteData:
- ld bc, 1 tiles
+ ld bc, TILE_SIZE
ld a, BANK(MonsterSprite)
jp FarCopyData
@@ -2538,7 +2540,7 @@ FallingObjects_UpdateOAMEntry:
inc a
cp 112
jr c, .next
- ld a, 160 ; if Y >= 112, put it off-screen
+ ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS ; if Y >= 112, put it off-screen
.next
ld [hli], a ; Y
cp 40
@@ -2655,7 +2657,7 @@ AnimationShakeEnemyHUD:
; Make a copy of the back pic's tile patterns in sprite tile pattern VRAM.
ld de, vBackPic
ld hl, vSprites
- ld bc, 7 * 7
+ ld bc, PIC_SIZE
call CopyVideoData
xor a
diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm
index 8a340bf7..cd0af180 100644
--- a/engine/battle/battle_transitions.asm
+++ b/engine/battle/battle_transitions.asm
@@ -14,7 +14,7 @@ BattleTransition:
ldh a, [hSpriteIndex] ; enemy trainer sprite index (0 if wild battle)
ld c, a
ld b, 0
- ld de, $10
+ ld de, SPRITESTATEDATA1_LENGTH
.loop1
ld a, [hl]
cp $ff
@@ -35,13 +35,13 @@ BattleTransition:
jr z, .skip2 ; skip clearing the block if the enemy trainer is using it
push hl
push bc
- ld bc, $10
+ ld bc, OBJ_SIZE * 4
xor a
call FillMemory
pop bc
pop hl
.skip2
- ld de, $10
+ ld de, OBJ_SIZE * 4
add hl, de
dec c
jr nz, .loop2
@@ -104,11 +104,11 @@ GetBattleTransitionID_CompareLevels:
ld a, [hli]
or [hl]
jr nz, .notFainted
- ld de, wPartyMon2 - (wPartyMon1 + 1)
+ ld de, PARTYMON_STRUCT_LENGTH - 1
add hl, de
jr .faintedLoop
.notFainted
- ld de, wPartyMon1Level - (wPartyMon1HP + 1)
+ ld de, MON_LEVEL - (MON_HP + 1)
add hl, de
ld a, [hl]
add $3
diff --git a/engine/battle/core.asm b/engine/battle/core.asm
index a1a989e4..33301e58 100644
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -109,8 +109,8 @@ SlidePlayerAndEnemySilhouettesOnScreen:
SlidePlayerHeadLeft:
push bc
ld hl, wShadowOAMSprite00XCoord
- ld c, $15 ; number of OAM entries
- ld de, $4 ; size of OAM entry
+ ld c, 7 * 3 ; number of OAM entries
+ ld de, OBJ_SIZE
.loop
dec [hl] ; decrement X
dec [hl] ; decrement X
@@ -140,7 +140,7 @@ StartBattle:
inc a
ld [wFirstMonsNotOutYet], a
ld hl, wEnemyMon1HP
- ld bc, wEnemyMon2 - wEnemyMon1 - 1
+ ld bc, PARTYMON_STRUCT_LENGTH - 1
ld d, $3
.findFirstAliveEnemyMonLoop
inc d
@@ -745,7 +745,7 @@ FaintEnemyPokemon:
jr z, .wild
ld a, [wEnemyMonPartyPos]
ld hl, wEnemyMon1HP
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
xor a
ld [hli], a
@@ -885,7 +885,7 @@ AnyEnemyPokemonAliveCheck:
ld b, a
xor a
ld hl, wEnemyMon1HP
- ld de, wEnemyMon2 - wEnemyMon1
+ ld de, PARTYMON_STRUCT_LENGTH
.nextPokemon
or [hl]
inc hl
@@ -1222,17 +1222,17 @@ SlideDownFaintedMonPic:
push af
set BIT_NO_TEXT_DELAY, a
ld [wStatusFlags5], a
- ld b, 7 ; number of times to slide
+ ld b, PIC_HEIGHT ; number of times to slide
.slideStepLoop ; each iteration, the mon is slid down one row
push bc
push de
push hl
- ld b, 6 ; number of rows
+ ld b, PIC_HEIGHT - 1 ; number of rows
.rowLoop
push bc
push hl
push de
- ld bc, $7
+ ld bc, PIC_WIDTH
call CopyData
pop de
pop hl
@@ -1264,7 +1264,8 @@ SlideDownFaintedMonPic:
ret
SevenSpacesText:
- db " @"
+ ds PIC_WIDTH, ' '
+ db "@"
; slides the player or enemy trainer off screen
; a is the number of tiles to slide it horizontally (always 9 for the player trainer or 8 for the enemy trainer)
@@ -1276,7 +1277,7 @@ SlideTrainerPicOffScreen:
.slideStepLoop ; each iteration, the trainer pic is slid one tile left/right
push bc
push hl
- ld b, 7 ; number of rows
+ ld b, PIC_HEIGHT ; number of rows
.rowLoop
push hl
ldh a, [hSlideAmount]
@@ -1285,7 +1286,7 @@ SlideTrainerPicOffScreen:
ldh a, [hSlideAmount]
cp 8
jr z, .slideRight
-.slideLeft ; slide player sprite off screen
+; slide player sprite left off screen
ld a, [hld]
ld [hli], a
inc hl
@@ -1368,7 +1369,7 @@ EnemySendOutFirstMon:
ld a, b
ld [wWhichPokemon], a
push bc
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
inc hl
@@ -1380,7 +1381,7 @@ EnemySendOutFirstMon:
.next3
ld a, [wWhichPokemon]
ld hl, wEnemyMon1Level
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
ld [wCurEnemyLevel], a
@@ -1495,7 +1496,7 @@ AnyPartyAlive::
ld e, a
xor a
ld hl, wPartyMon1HP
- ld bc, wPartyMon2 - wPartyMon1 - 1
+ ld bc, PARTYMON_STRUCT_LENGTH - 1
.partyMonsLoop
or [hl]
inc hl
@@ -1511,7 +1512,7 @@ AnyPartyAlive::
HasMonFainted:
ld a, [wWhichPokemon]
ld hl, wPartyMon1HP
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
or [hl]
@@ -1665,16 +1666,16 @@ GotAwayText:
; copies from party data to battle mon data when sending out a new player mon
LoadBattleMonFromParty:
ld a, [wWhichPokemon]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, wPartyMon1Species
call AddNTimes
ld de, wBattleMonSpecies
ld bc, wBattleMonDVs - wBattleMonSpecies
call CopyData
- ld bc, wPartyMon1DVs - wPartyMon1OTID
+ ld bc, MON_DVS - MON_OTID
add hl, bc
ld de, wBattleMonDVs
- ld bc, wPartyMon1PP - wPartyMon1DVs
+ ld bc, MON_PP - MON_DVS
call CopyData
ld de, wBattleMonPP
ld bc, NUM_MOVES
@@ -1709,16 +1710,16 @@ LoadBattleMonFromParty:
; copies from enemy party data to current enemy mon data when sending out a new enemy mon
LoadEnemyMonFromParty:
ld a, [wWhichPokemon]
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, wEnemyMons
call AddNTimes
ld de, wEnemyMonSpecies
ld bc, wEnemyMonDVs - wEnemyMonSpecies
call CopyData
- ld bc, wEnemyMon1DVs - wEnemyMon1OTID
+ ld bc, MON_DVS - MON_OTID
add hl, bc
ld de, wEnemyMonDVs
- ld bc, wEnemyMon1PP - wEnemyMon1DVs
+ ld bc, MON_PP - MON_DVS
call CopyData
ld de, wEnemyMonPP
ld bc, NUM_MOVES
@@ -1869,17 +1870,17 @@ AnimateRetreatingPlayerMon:
call ClearScreenArea
ret
-; Copies player's current pokemon's current HP and status into the party
+; Copies player's current pokemon's current HP, party pos, and status into the party
; struct data so it stays after battle or switching
ReadPlayerMonCurHPAndStatus:
ld a, [wPlayerMonNumber]
ld hl, wPartyMon1HP
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld d, h
ld e, l
ld hl, wBattleMonHP
- ld bc, $4 ; 2 bytes HP, 1 byte unknown (unused?), 1 byte status
+ ld bc, MON_STATUS + 1 - MON_HP ; also copies party pos in-between HP and status
jp CopyData
DrawHUDsAndHPBars:
@@ -2623,7 +2624,7 @@ MoveSelectionMenu:
.relearnmenu
ld a, [wWhichPokemon]
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
call .loadmoves
hlcoord 4, 7
@@ -2969,12 +2970,12 @@ ENDC
.swapMovesInPartyMon
ld hl, wPartyMon1Moves
ld a, [wPlayerMonNumber]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
push hl
call .swapBytes ; swap moves
pop hl
- ld bc, wPartyMon1PP - wPartyMon1Moves
+ ld bc, MON_PP - MON_MOVES
add hl, bc
call .swapBytes ; swap move PP
xor a
@@ -3285,7 +3286,7 @@ PlayerCanExecuteChargingMove:
; resulting in the Pokemon being invulnerable for the whole battle
res INVULNERABLE, [hl]
PlayerCanExecuteMove:
- call PrintMonName1Text
+ call DisplayUsedMoveText
ld hl, DecrementPP
ld de, wPlayerSelectedMove ; pointer to the move just used
ld b, BANK(DecrementPP)
@@ -3621,7 +3622,7 @@ CheckPlayerStatusConditions:
bit PAR, [hl]
jr z, .BideCheck
call BattleRandom
- cp $3F ; 25% to be fully paralyzed
+ cp 25 percent ; chance to be fully paralyzed
jr nc, .BideCheck
ld hl, FullyParalyzedText
call PrintText
@@ -3727,11 +3728,12 @@ CheckPlayerStatusConditions:
ld hl, AttackContinuesText
call PrintText
ld a, [wPlayerNumAttacksLeft]
- dec a ; did multi-turn move end?
+ dec a
ld [wPlayerNumAttacksLeft], a
- ld hl, GetPlayerAnimationType ; if it didn't, skip damage calculation (deal damage equal to last hit),
- ; DecrementPP and MoveHitTest
- jp nz, .returnToHL
+ ld hl, GetPlayerAnimationType ; skip damage calculation (deal damage equal to last hit),
+ ; DecrementPP and MoveHitTest
+ jp nz, .returnToHL ; redundant leftover code, the case wEnemyNumAttacksLeft == 0
+ ; is handled within CheckNumAttacksLeft
jp .returnToHL
.RageCheck
@@ -3796,7 +3798,7 @@ ConfusedNoMoreText:
text_far _ConfusedNoMoreText
text_end
-SavingEnergyText:
+SavingEnergyText: ; unreferenced
text_far _SavingEnergyText
text_end
@@ -3882,139 +3884,7 @@ HandleSelfConfusionDamage:
ldh [hWhoseTurn], a
jp ApplyDamageToPlayerPokemon
-PrintMonName1Text:
- ld hl, MonName1Text
- jp PrintText
-
-; this function wastes time calling DetermineExclamationPointTextNum
-; and choosing between Used1Text and Used2Text, even though
-; those text strings are identical and both continue at PrintInsteadText
-; this likely had to do with Japanese grammar that got translated,
-; but the functionality didn't get removed
-MonName1Text:
- text_far _MonName1Text
- text_asm
- ldh a, [hWhoseTurn]
- and a
- ld a, [wPlayerMoveNum]
- ld hl, wPlayerUsedMove
- jr z, .playerTurn
- ld a, [wEnemyMoveNum]
- ld hl, wEnemyUsedMove
-.playerTurn
- ld [hl], a
- ld [wMoveGrammar], a
- call DetermineExclamationPointTextNum
- ld a, [wMonIsDisobedient]
- and a
- ld hl, Used2Text
- ret nz
- ld a, [wMoveGrammar]
- cp 3
- ld hl, Used2Text
- ret c
- ld hl, Used1Text
- ret
-
-Used1Text:
- text_far _Used1Text
- text_asm
- jr PrintInsteadText
-
-Used2Text:
- text_far _Used2Text
- text_asm
- ; fall through
-
-PrintInsteadText:
- ld a, [wMonIsDisobedient]
- and a
- jr z, PrintMoveName
- ld hl, InsteadText
- ret
-
-InsteadText:
- text_far _InsteadText
- text_asm
- ; fall through
-
-PrintMoveName:
- ld hl, _PrintMoveName
- ret
-
-_PrintMoveName:
- text_far _MoveNameText
- text_asm
- ld hl, ExclamationPointPointerTable
- ld a, [wMoveGrammar]
- add a
- push bc
- ld b, $0
- ld c, a
- add hl, bc
- pop bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ret
-
-ExclamationPointPointerTable:
- dw ExclamationPoint1Text
- dw ExclamationPoint2Text
- dw ExclamationPoint3Text
- dw ExclamationPoint4Text
- dw ExclamationPoint5Text
-
-ExclamationPoint1Text:
- text_far _ExclamationPoint1Text
- text_end
-
-ExclamationPoint2Text:
- text_far _ExclamationPoint2Text
- text_end
-
-ExclamationPoint3Text:
- text_far _ExclamationPoint3Text
- text_end
-
-ExclamationPoint4Text:
- text_far _ExclamationPoint4Text
- text_end
-
-ExclamationPoint5Text:
- text_far _ExclamationPoint5Text
- text_end
-
-; this function does nothing useful
-; if the move being used is in set [1-4] from ExclamationPointMoveSets,
-; use ExclamationPoint[1-4]Text
-; otherwise, use ExclamationPoint5Text
-; but all five text strings are identical
-; this likely had to do with Japanese grammar that got translated,
-; but the functionality didn't get removed
-DetermineExclamationPointTextNum:
- push bc
- ld a, [wMoveGrammar] ; move ID
- ld c, a
- ld b, $0
- ld hl, ExclamationPointMoveSets
-.loop
- ld a, [hli]
- cp $ff
- jr z, .done
- cp c
- jr z, .done
- and a
- jr nz, .loop
- inc b
- jr .loop
-.done
- ld a, b
- ld [wMoveGrammar], a
- pop bc
- ret
-
-INCLUDE "data/moves/grammar.asm"
+INCLUDE "engine/battle/used_move_text.asm"
PrintMoveFailureText:
ld de, wPlayerMoveEffect
@@ -4140,7 +4010,7 @@ CheckForDisobedience:
; compare the mon's original trainer ID with the player's ID to see if it was traded
.checkIfMonIsTraded
ld hl, wPartyMon1OTID
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wPlayerMonNumber]
call AddNTimes
ld a, [wPlayerID]
@@ -4341,7 +4211,7 @@ GetDamageVarsForPlayerAttack:
ld a, [hl] ; a = [wPlayerMoveType]
cp SPECIAL ; types >= SPECIAL are all special
jr nc, .specialAttack
-.physicalAttack
+; physical attack
ld hl, wEnemyMonDefense
ld a, [hli]
ld b, a
@@ -4367,7 +4237,7 @@ GetDamageVarsForPlayerAttack:
push bc
ld hl, wPartyMon1Attack
ld a, [wPlayerMonNumber]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
jr .scaleStats
@@ -4399,7 +4269,7 @@ GetDamageVarsForPlayerAttack:
push bc
ld hl, wPartyMon1Special
ld a, [wPlayerMonNumber]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
; if either the offensive or defensive stat is too large to store in a byte, scale both stats by dividing them by 4
@@ -4454,7 +4324,7 @@ GetDamageVarsForEnemyAttack:
ld a, [hl] ; a = [wEnemyMoveType]
cp SPECIAL ; types >= SPECIAL are all special
jr nc, .specialAttack
-.physicalAttack
+; physical attack
ld hl, wBattleMonDefense
ld a, [hli]
ld b, a
@@ -4473,7 +4343,7 @@ GetDamageVarsForEnemyAttack:
; in the case of a critical hit, reset the player's defense and the enemy's attack to their base values
ld hl, wPartyMon1Defense
ld a, [wPlayerMonNumber]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
ld b, a
@@ -4505,7 +4375,7 @@ GetDamageVarsForEnemyAttack:
; in the case of a critical hit, reset the player's and enemy's specials to their base values
ld hl, wPartyMon1Special
ld a, [wPlayerMonNumber]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
ld b, a
@@ -4568,7 +4438,7 @@ GetEnemyMonStat:
ld b, $0
add hl, bc
ld a, [wEnemyMonPartyPos]
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
ldh [hMultiplicand + 1], a
@@ -5367,7 +5237,7 @@ IncrementMovePP:
jr z, .updatePP
ld a, [wEnemyMonPartyPos] ; value for enemy turn
.updatePP
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
inc [hl] ; increment PP in the party memory location
ret
@@ -5471,7 +5341,6 @@ AdjustDamageForMoveType:
ld [hl], a
or b ; is damage 0?
jr nz, .skipTypeImmunity
-.typeImmunity
; if damage is 0, make the move miss
; this only occurs if a move that would do 2 or 3 damage is 0.25x effective against the target
inc a
@@ -5575,7 +5444,7 @@ MoveHitTest:
ldh a, [hWhoseTurn]
and a
jr nz, .enemyTurn
-.playerTurn
+; player's turn
; this checks if the move effect is disallowed by mist
ld a, [wPlayerMoveEffect]
cp ATTACK_DOWN1_EFFECT
@@ -5647,12 +5516,12 @@ MoveHitTest:
ld [wMoveMissed], a
ldh a, [hWhoseTurn]
and a
- jr z, .playerTurn2
-.enemyTurn2
+ jr z, .playerTurn
+; enemy's turn
ld hl, wEnemyBattleStatus1
res USING_TRAPPING_MOVE, [hl] ; end multi-turn attack e.g. wrap
ret
-.playerTurn2
+.playerTurn
ld hl, wPlayerBattleStatus1
res USING_TRAPPING_MOVE, [hl] ; end multi-turn attack e.g. wrap
ret
@@ -5823,7 +5692,7 @@ EnemyCanExecuteChargingMove:
EnemyCanExecuteMove:
xor a
ld [wMonIsDisobedient], a
- call PrintMonName1Text
+ call DisplayUsedMoveText
ld a, [wEnemyMoveEffect]
ld hl, ResidualEffects1
ld de, $1
@@ -6244,10 +6113,11 @@ CheckEnemyStatusConditions:
ld hl, AttackContinuesText
call PrintText
ld hl, wEnemyNumAttacksLeft
- dec [hl] ; did multi-turn move end?
- ld hl, GetEnemyAnimationType ; if it didn't, skip damage calculation (deal damage equal to last hit),
+ dec [hl]
+ ld hl, GetEnemyAnimationType ; skip damage calculation (deal damage equal to last hit),
; DecrementPP and MoveHitTest
- jp nz, .enemyReturnToHL
+ jp nz, .enemyReturnToHL ; redundant leftover code, the case wEnemyNumAttacksLeft == 0
+ ; is handled within CheckNumAttacksLeft
jp .enemyReturnToHL
.checkIfUsingRage
ld a, [wEnemyBattleStatus2]
@@ -6387,7 +6257,7 @@ LoadEnemyMonData:
; if it's a trainer battle, copy moves from enemy party data
ld hl, wEnemyMon1Moves
ld a, [wWhichPokemon]
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld bc, NUM_MOVES
call CopyData
@@ -6538,7 +6408,7 @@ LoadPlayerBackPic:
ld [hl], d ; OAM Y
inc hl
ld [hl], e ; OAM X
- ld a, $8 ; height of tile
+ ld a, TILE_HEIGHT
add d ; increase Y by height of tile
ld d, a
inc hl
@@ -6554,7 +6424,7 @@ LoadPlayerBackPic:
ldh a, [hOAMTile]
add $4 ; increase tile number by 4
ldh [hOAMTile], a
- ld a, $8 ; width of tile
+ ld a, TILE_WIDTH
add e ; increase X by width of tile
ld e, a
dec b
@@ -6567,7 +6437,7 @@ LoadPlayerBackPic:
ld de, sSpriteBuffer1
ldh a, [hLoadedROMBank]
ld b, a
- ld c, 7 * 7
+ ld c, PIC_SIZE
call CopyVideoData
call CloseSRAM
ld a, $31
@@ -6599,7 +6469,7 @@ QuarterSpeedDueToParalysis:
ldh a, [hWhoseTurn]
and a
jr z, .playerTurn
-.enemyTurn ; quarter the player's speed
+; enemy's turn, quarter the player's speed
ld a, [wBattleMonStatus]
and 1 << PAR
ret z ; return if player not paralysed
@@ -6642,7 +6512,7 @@ HalveAttackDueToBurn:
ldh a, [hWhoseTurn]
and a
jr z, .playerTurn
-.enemyTurn ; halve the player's attack
+; enemy's turn, halve the player's attack
ld a, [wBattleMonStatus]
and 1 << BRN
ret z ; return if player not burnt
@@ -6826,7 +6696,7 @@ LoadHudTilePatterns:
ldh a, [rLCDC]
add a ; is LCD disabled?
jr c, .lcdEnabled
-.lcdDisabled
+; LCD disabled
ld hl, BattleHudTiles1
ld de, vChars2 tile $6d
ld bc, BattleHudTiles1End - BattleHudTiles1
@@ -6840,11 +6710,11 @@ LoadHudTilePatterns:
.lcdEnabled
ld de, BattleHudTiles1
ld hl, vChars2 tile $6d
- lb bc, BANK(BattleHudTiles1), (BattleHudTiles1End - BattleHudTiles1) / $8
+ lb bc, BANK(BattleHudTiles1), (BattleHudTiles1End - BattleHudTiles1) / TILE_1BPP_SIZE
call CopyVideoDataDouble
ld de, BattleHudTiles2
ld hl, vChars2 tile $73
- lb bc, BANK(BattleHudTiles2), (BattleHudTiles3End - BattleHudTiles2) / $8
+ lb bc, BANK(BattleHudTiles2), (BattleHudTiles3End - BattleHudTiles2) / TILE_1BPP_SIZE
jp CopyVideoDataDouble
PrintEmptyString:
diff --git a/engine/battle/decrement_pp.asm b/engine/battle/decrement_pp.asm
index 441bbb81..93515224 100644
--- a/engine/battle/decrement_pp.asm
+++ b/engine/battle/decrement_pp.asm
@@ -31,7 +31,7 @@ DecrementPP:
ld hl, wPartyMon1PP ; PP of first move (in party)
ld a, [wPlayerMonNumber] ; which mon in party is active
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes ; calculate address of the mon to modify
.DecrementPP:
ld a, [wPlayerMoveListIndex] ; which move (0, 1, 2, 3) did we use?
diff --git a/engine/battle/draw_hud_pokeball_gfx.asm b/engine/battle/draw_hud_pokeball_gfx.asm
index 0b0aac7d..bf955040 100644
--- a/engine/battle/draw_hud_pokeball_gfx.asm
+++ b/engine/battle/draw_hud_pokeball_gfx.asm
@@ -13,12 +13,12 @@ DrawEnemyPokeballs:
LoadPartyPokeballGfx:
ld de, PokeballTileGraphics
ld hl, vSprites tile $31
- lb bc, BANK(PokeballTileGraphics), (PokeballTileGraphicsEnd - PokeballTileGraphics) / $10
+ lb bc, BANK(PokeballTileGraphics), (PokeballTileGraphicsEnd - PokeballTileGraphics) / TILE_SIZE
jp CopyVideoData
SetupOwnPartyPokeballs:
call PlacePlayerHUDTiles
- ld hl, wPartyMon1
+ ld hl, wPartyMons
ld de, wPartyCount
call SetupPokeballs
ld a, $60
@@ -94,7 +94,7 @@ PickPokeball:
.done
ld a, b
ld [de], a
- ld bc, wPartyMon2 - wPartyMon1Status
+ ld bc, PARTYMON_STRUCT_LENGTH - MON_STATUS
add hl, bc ; next mon struct
ret
@@ -123,7 +123,7 @@ WritePokeballOAMData:
PlacePlayerHUDTiles:
ld hl, PlayerBattleHUDGraphicsTiles
ld de, wHUDGraphicsTiles
- ld bc, $3
+ ld bc, wHUDGraphicsTilesEnd - wHUDGraphicsTiles
call CopyData
hlcoord 18, 10
ld de, -1
@@ -138,7 +138,7 @@ PlayerBattleHUDGraphicsTiles:
PlaceEnemyHUDTiles:
ld hl, EnemyBattleHUDGraphicsTiles
ld de, wHUDGraphicsTiles
- ld bc, $3
+ ld bc, wHUDGraphicsTilesEnd - wHUDGraphicsTiles
call CopyData
hlcoord 1, 2
ld de, $1
@@ -154,7 +154,7 @@ PlaceHUDTiles:
ld [hl], $73
ld bc, SCREEN_WIDTH
add hl, bc
- ld a, [wHUDGraphicsTiles + 1] ; leftmost tile
+ ld a, [wHUDCornerTile] ; leftmost tile
ld [hl], a
ld a, 8
.loop
@@ -163,7 +163,7 @@ PlaceHUDTiles:
dec a
jr nz, .loop
add hl, de
- ld a, [wHUDGraphicsTiles + 2] ; rightmost tile
+ ld a, [wHUDTriangleTile] ; rightmost tile
ld [hl], a
ret
diff --git a/engine/battle/effects.asm b/engine/battle/effects.asm
index 2babf7f1..185b7dad 100644
--- a/engine/battle/effects.asm
+++ b/engine/battle/effects.asm
@@ -41,7 +41,7 @@ SleepEffect:
; including the event where the target already has another status
ld a, [de]
ld b, a
- and $7
+ and SLP_MASK
jr z, .notAlreadySleeping ; can't affect a mon that is already asleep
ld hl, AlreadyAsleepText
jp PrintText
@@ -58,7 +58,7 @@ SleepEffect:
.setSleepCounter
; set target's sleep counter to a random number between 1 and 7
call BattleRandom
- and $7
+ and SLP_MASK
jr z, .setSleepCounter
ld b, a
ld a, [wUnknownSerialFlag_d499]
@@ -250,7 +250,7 @@ FreezeBurnParalyzeEffect:
jr z, .burn1
cp FREEZE_SIDE_EFFECT1
jr z, .freeze1
-; .paralyze1
+; paralyze1
ld a, 1 << PAR
ld [wEnemyMonStatus], a
call QuarterSpeedDueToParalysis ; quarter speed of affected mon
@@ -313,7 +313,7 @@ FreezeBurnParalyzeEffect:
jr z, .burn2
cp FREEZE_SIDE_EFFECT1
jr z, .freeze2
-; .paralyze2
+; paralyze2
ld a, 1 << PAR
ld [wBattleMonStatus], a
call QuarterSpeedDueToParalysis
@@ -359,7 +359,7 @@ CheckDefrost:
ld [wEnemyMonStatus], a ; set opponent status to 00 ["defrost" a frozen monster]
ld hl, wEnemyMon1Status
ld a, [wEnemyMonPartyPos]
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
xor a
ld [hl], a ; clear status in roster
@@ -372,7 +372,7 @@ CheckDefrost:
ld [wBattleMonStatus], a
ld hl, wPartyMon1Status
ld a, [wPlayerMonNumber]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
xor a
ld [hl], a
@@ -629,7 +629,7 @@ StatModifierDownEffect:
ld a, [de]
cp ATTACK_DOWN2_EFFECT - $16 ; $24
jr c, .ok
- cp EVASION_DOWN2_EFFECT + $5 ; $44
+ cp ATTACK_DOWN_SIDE_EFFECT ; move side effects, stat mod decrease is always 1
jr nc, .ok
dec b ; stat down 2 effects only (dec mod again)
jr nz, .ok
@@ -722,7 +722,7 @@ UpdateLoweredStatDone:
.ApplyBadgeBoostsAndStatusPenalties
ldh a, [hWhoseTurn]
and a
- call nz, ApplyBadgeStatBoosts ; whenever the player uses a stat-down move, badge boosts get reapplied again to every stat,
+ call nz, ApplyBadgeStatBoosts ; whenever the opponent uses a stat-down move, badge boosts get reapplied again to every stat,
; even to those not affected by the stat-down move (will be boosted further)
ld hl, MonsStatsFellText
call PrintText
@@ -747,7 +747,7 @@ CantLowerAnymore:
MoveMissed:
ld a, [de]
- cp $44
+ cp ATTACK_DOWN_SIDE_EFFECT
ret nc
jp ConditionalPrintButItFailed
@@ -790,7 +790,7 @@ PrintStatText:
jr .findStatName_inner
.foundStatName
ld de, wStringBuffer
- ld bc, $a
+ ld bc, STAT_NAME_LENGTH
jp CopyData
INCLUDE "data/battle/stat_mod_names.asm"
@@ -1377,7 +1377,7 @@ DisableEffect:
cp LINK_STATE_BATTLING
pop hl ; wEnemyMonMoves
jr nz, .playerTurnNotLinkBattle
-; .playerTurnLinkBattle
+; player's turn, Link Battle
push hl
ld hl, wEnemyMonPP
.enemyTurn
@@ -1512,6 +1512,7 @@ PlayCurrentMoveAnimation2:
.notEnemyTurn
and a
ret z
+; fallthrough
PlayBattleAnimation2:
; play animation ID at a and animation type 6 or 3
@@ -1538,6 +1539,7 @@ PlayCurrentMoveAnimation:
.notEnemyTurn
and a
ret z
+; fallthrough
PlayBattleAnimation:
; play animation ID at a and predefined animation type
diff --git a/engine/battle/end_of_battle.asm b/engine/battle/end_of_battle.asm
index 53946250..2ae3f71f 100644
--- a/engine/battle/end_of_battle.asm
+++ b/engine/battle/end_of_battle.asm
@@ -5,7 +5,7 @@ EndOfBattle:
; link battle
ld a, [wEnemyMonPartyPos]
ld hl, wEnemyMon1Status
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [wEnemyMonStatus]
ld [hl], a
@@ -64,8 +64,8 @@ EndOfBattle:
ld [hli], a
ld [hl], a
ld [wListScrollOffset], a
- ld hl, wPlayerStatsToDouble
- ld b, $18
+ ld hl, wBattleStatusData
+ ld b, wBattleStatusDataEnd - wBattleStatusData
.loop
ld [hli], a
dec b
diff --git a/engine/battle/experience.asm b/engine/battle/experience.asm
index 32afc017..55d8d782 100644
--- a/engine/battle/experience.asm
+++ b/engine/battle/experience.asm
@@ -21,7 +21,7 @@ GainExperience:
and a ; is mon's gain exp flag set?
pop hl
jp z, .nextMon ; if mon's gain exp flag not set, go to next mon
- ld de, (wPartyMon1HPExp + 1) - (wPartyMon1HP + 1)
+ ld de, (MON_HP_EXP + 1) - (MON_HP + 1)
add hl, de
ld d, h
ld e, l
@@ -66,9 +66,9 @@ GainExperience:
ldh [hDivisor], a
ld b, 4
call Divide
- ld hl, wPartyMon1OTID - (wPartyMon1DVs - 1)
+ ld hl, MON_OTID - (MON_DVS - 1)
add hl, de
- ld b, [hl] ; party mon OTID
+ ld b, [hl] ; wPartyMon*OTID
inc hl
ld a, [wPlayerID]
cp b
@@ -152,7 +152,7 @@ GainExperience:
ld [wMonDataLocation], a
call LoadMonData
pop hl
- ld bc, wPartyMon1Level - wPartyMon1Exp
+ ld bc, MON_LEVEL - MON_EXP
add hl, bc
push hl
farcall CalcLevelFromExperience
@@ -166,13 +166,13 @@ GainExperience:
ld a, d
ld [wCurEnemyLevel], a
ld [hl], a
- ld bc, wPartyMon1Species - wPartyMon1Level
+ ld bc, MON_SPECIES - MON_LEVEL
add hl, bc
ld a, [hl]
ld [wCurSpecies], a
ld [wPokedexNum], a
call GetMonHeader
- ld bc, (wPartyMon1MaxHP + 1) - wPartyMon1Species
+ ld bc, (MON_MAXHP + 1) - MON_SPECIES
add hl, bc
push hl
ld a, [hld]
@@ -181,7 +181,7 @@ GainExperience:
push bc ; push max HP (from before levelling up)
ld d, h
ld e, l
- ld bc, (wPartyMon1HPExp - 1) - wPartyMon1MaxHP
+ ld bc, (MON_HP_EXP - 1) - MON_MAXHP
add hl, bc
ld b, $1 ; consider stat exp when calculating stats
call CalcStats
@@ -193,15 +193,15 @@ GainExperience:
ld a, [hl]
sbc b
ld b, a ; bc = difference between old max HP and new max HP after levelling
- ld de, (wPartyMon1HP + 1) - wPartyMon1MaxHP
+ ld de, (MON_HP + 1) - MON_MAXHP
add hl, de
; add to the current HP the amount of max HP gained when levelling
- ld a, [hl] ; wPartyMon1HP + 1
+ ld a, [hl] ; wPartyMon*HP + 1
add c
ld [hld], a
- ld a, [hl] ; wPartyMon1HP + 1
+ ld a, [hl] ; wPartyMon*HP + 1
adc b
- ld [hl], a ; wPartyMon1HP
+ ld [hl], a ; wPartyMon*HP
ld a, [wPlayerMonNumber]
ld b, a
ld a, [wWhichPokemon]
@@ -216,7 +216,7 @@ GainExperience:
ld a, [hl]
ld [de], a
; copy other stats from party mon to battle mon
- ld bc, wPartyMon1Level - (wPartyMon1HP + 1)
+ ld bc, MON_LEVEL - (MON_HP + 1)
add hl, bc
push hl
ld de, wBattleMonLevel
@@ -251,7 +251,7 @@ GainExperience:
xor a ; PLAYER_PARTY_DATA
ld [wMonDataLocation], a
call LoadMonData
- ld d, $1
+ ld d, LEVEL_UP_STATS_BOX
callfar PrintStatsBox
call WaitForTextScrollButtonPress
call LoadScreenTilesFromBuffer1
@@ -277,7 +277,7 @@ GainExperience:
cp b
jr z, .done
ld [wWhichPokemon], a
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, wPartyMon1
call AddNTimes
jp .partyMonLoop
diff --git a/engine/battle/get_trainer_name.asm b/engine/battle/get_trainer_name.asm
index a0e869fc..1983b08a 100644
--- a/engine/battle/get_trainer_name.asm
+++ b/engine/battle/get_trainer_name.asm
@@ -20,5 +20,5 @@ GetTrainerName_::
ld hl, wNameBuffer
.foundName
ld de, wTrainerName
- ld bc, ITEM_NAME_LENGTH
+ ld bc, TRAINER_NAME_LENGTH
jp CopyData
diff --git a/engine/battle/ghost_marowak_anim.asm b/engine/battle/ghost_marowak_anim.asm
index 6514ccaa..ab5f9017 100644
--- a/engine/battle/ghost_marowak_anim.asm
+++ b/engine/battle/ghost_marowak_anim.asm
@@ -51,11 +51,11 @@ MarowakAnim:
call Delay3
jp ClearSprites
-; copies a mon pic's from background VRAM to sprite VRAM and sets up OAM
+; copies a mon pic's from background VRAM to sprite VRAM and sets up OAM
CopyMonPicFromBGToSpriteVRAM:
ld de, vFrontPic
ld hl, vSprites
- ld bc, 7 * 7
+ ld bc, PIC_SIZE
call CopyVideoData
ld a, $10
ld [wBaseCoordY], a
diff --git a/engine/battle/init_battle.asm b/engine/battle/init_battle.asm
index a291880c..15dbb3d1 100644
--- a/engine/battle/init_battle.asm
+++ b/engine/battle/init_battle.asm
@@ -76,17 +76,7 @@ InitWildBattle:
ld [hli], a ; write front sprite pointer
ld [hl], b
ld hl, wEnemyMonNick ; set name to "GHOST"
- ld a, 'G'
- ld [hli], a
- ld a, 'H'
- ld [hli], a
- ld a, 'O'
- ld [hli], a
- ld a, 'S'
- ld [hli], a
- ld a, 'T'
- ld [hli], a
- ld [hl], '@'
+ ld_hli_a_string "GHOST@"
ld a, [wCurPartySpecies]
push af
ld a, MON_GHOST
diff --git a/engine/battle/link_battle_versus_text.asm b/engine/battle/link_battle_versus_text.asm
index e5dd42ea..40c1aad9 100644
--- a/engine/battle/link_battle_versus_text.asm
+++ b/engine/battle/link_battle_versus_text.asm
@@ -12,9 +12,7 @@ DisplayLinkBattleVersusTextBox:
call PlaceString
; place bold "VS" tiles between the names
hlcoord 9, 8
- ld a, '<BOLD_V>'
- ld [hli], a
- ld [hl], '<BOLD_S>'
+ ld_hli_a_string "<BOLD_V><BOLD_S>"
xor a
ld [wUpdateSpritesEnabled], a
callfar SetupPlayerAndEnemyPokeballs
diff --git a/engine/battle/move_effects/haze.asm b/engine/battle/move_effects/haze.asm
index 76722d0e..0f89ad19 100644
--- a/engine/battle/move_effects/haze.asm
+++ b/engine/battle/move_effects/haze.asm
@@ -59,7 +59,7 @@ CureVolatileStatuses:
ret
ResetStatMods:
- ld b, $8
+ ld b, NUM_STAT_MODS
.loop
ld [hli], a
dec b
@@ -67,7 +67,7 @@ ResetStatMods:
ret
ResetStats:
- ld b, $8
+ ld b, (NUM_STATS - 1) * 2 ; doesn't reset STAT_HEALTH
.loop
ld a, [hli]
ld [de], a
diff --git a/engine/battle/move_effects/substitute.asm b/engine/battle/move_effects/substitute.asm
index e4311209..01d5a8a3 100644
--- a/engine/battle/move_effects/substitute.asm
+++ b/engine/battle/move_effects/substitute.asm
@@ -37,8 +37,8 @@ SubstituteEffect_:
sbc 0
pop bc
jr c, .notEnoughHP ; underflow means user would be left with negative health
- ; bug: since it only branches on carry, it will possibly leave user with 0 HP
-.userHasZeroOrMoreHP
+ ; bug: since it only branches on carry, it will possibly leave user with 0 HP
+; user has 0 or more HP
ld [hli], a ; save resulting HP after subtraction into current HP
ld [hl], d
ld h, b
diff --git a/engine/battle/move_effects/transform.asm b/engine/battle/move_effects/transform.asm
index 775816c7..e8bafe04 100644
--- a/engine/battle/move_effects/transform.asm
+++ b/engine/battle/move_effects/transform.asm
@@ -2,17 +2,22 @@ TransformEffect_:
ld hl, wBattleMonSpecies
ld de, wEnemyMonSpecies
ld bc, wEnemyBattleStatus3
+ ; bug: on enemy's turn, a is overloaded with hWhoseTurn,
+ ; before the check for INVULNERABLE
ld a, [wEnemyBattleStatus1]
ldh a, [hWhoseTurn]
and a
jr nz, .hitTest
+; player's turn
ld hl, wEnemyMonSpecies
ld de, wBattleMonSpecies
ld bc, wPlayerBattleStatus3
ld [wPlayerMoveListIndex], a
+ ; bug: this should be target's BattleStatus1 (i.e. wEnemyBattleStatus1)
ld a, [wPlayerBattleStatus1]
.hitTest
bit INVULNERABLE, a ; is mon invulnerable to typical attacks? (fly/dig)
+ ; this check doesn't work due to above bugs
jp nz, .failed
push hl
push de
@@ -82,14 +87,15 @@ TransformEffect_:
ld a, [hli]
ld [de], a
inc de
-; Attack, Defense, Speed, and Special stats
+; Skip level and max HP
inc hl
inc hl
inc hl
inc de
inc de
inc de
- ld bc, $8
+; Attack, Defense, Speed, and Special stats
+ ld bc, (NUM_STATS - 1) * 2
call CopyData
ld bc, wBattleMonMoves - wBattleMonPP
add hl, bc ; ld hl, wBattleMonMoves
@@ -99,7 +105,7 @@ TransformEffect_:
ld a, [hli]
and a
jr z, .lessThanFourMoves
- ld a, $5
+ ld a, 5
.lessThanFourMoves
ld [de], a
inc de
@@ -129,7 +135,7 @@ TransformEffect_:
ld l, e
pop de
.gotStatsOrModsToCopy
- ld bc, $8
+ ld bc, (NUM_STATS - 1) * 2
jp CopyData
.failed
diff --git a/engine/battle/read_trainer_party.asm b/engine/battle/read_trainer_party.asm
index c8ee8fda..f4a2bef9 100644
--- a/engine/battle/read_trainer_party.asm
+++ b/engine/battle/read_trainer_party.asm
@@ -103,7 +103,7 @@ ReadTrainer:
jp z, .FinishUp
dec a
ld hl, wEnemyMon1Moves
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [de]
inc de
diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm
index 7081fdfd..d97ee076 100644
--- a/engine/battle/trainer_ai.asm
+++ b/engine/battle/trainer_ai.asm
@@ -578,7 +578,7 @@ AISwitchIfEnoughMons:
inc d
.Fainted
push bc
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
add hl, bc
pop bc
dec c
@@ -592,16 +592,16 @@ AISwitchIfEnoughMons:
SwitchEnemyMon:
-; prepare to withdraw the active monster: copy hp, number, and status to roster
+; prepare to withdraw the active monster: copy HP, party pos, and status to roster
ld a, [wEnemyMonPartyPos]
ld hl, wEnemyMon1HP
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld d, h
ld e, l
ld hl, wEnemyMonHP
- ld bc, 4
+ ld bc, MON_STATUS + 1 - MON_HP ; also copies party pos in-between HP and status
call CopyData
ld hl, AIBattleWithdrawText
@@ -635,7 +635,7 @@ AICureStatus:
; cures the status of enemy's active pokemon
ld a, [wEnemyMonPartyPos]
ld hl, wEnemyMon1Status
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
xor a
ld [hl], a ; clear status in enemy team roster
diff --git a/engine/battle/used_move_text.asm b/engine/battle/used_move_text.asm
new file mode 100644
index 00000000..abb35e67
--- /dev/null
+++ b/engine/battle/used_move_text.asm
@@ -0,0 +1,139 @@
+DisplayUsedMoveText:
+ ld hl, UsedMoveText
+ jp PrintText
+
+UsedMoveText:
+ text_far _ActorNameText
+ text_asm
+
+ ldh a, [hWhoseTurn]
+ and a
+ ld a, [wPlayerMoveNum]
+ ld hl, wPlayerUsedMove
+ jr z, .playerTurn
+
+ ld a, [wEnemyMoveNum]
+ ld hl, wEnemyUsedMove
+
+.playerTurn
+ ld [hl], a
+ ld [wMoveGrammar], a
+ call GetMoveGrammar
+ ld a, [wMonIsDisobedient]
+ and a
+ ld hl, UsedMove2Text
+ ret nz
+
+ ; check move grammar
+ ld a, [wMoveGrammar]
+ cp $3
+ ld hl, UsedMove2Text
+ ret c
+ ld hl, UsedMove1Text
+ ret
+
+UsedMove1Text:
+ text_far _UsedMove1Text
+ text_asm
+ jr UsedMoveText_CheckObedience
+
+UsedMove2Text:
+ text_far _UsedMove2Text
+ text_asm
+ ; fall through
+
+UsedMoveText_CheckObedience:
+; check obedience
+ ld a, [wMonIsDisobedient]
+ and a
+ jr z, .GetMoveNameText
+; print "instead,"
+ ld hl, .UsedInsteadText
+ ret
+
+.UsedInsteadText:
+ text_far _UsedInsteadText
+ text_asm
+ ; fall through
+
+.GetMoveNameText:
+ ld hl, MoveNameText
+ ret
+
+MoveNameText:
+ text_far _MoveNameText
+ text_asm
+ ld hl, .endusedmovetexts
+ ld a, [wMoveGrammar]
+ add a
+ push bc
+ ld b, $0
+ ld c, a
+ add hl, bc
+ pop bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+.endusedmovetexts:
+; entries correspond to MoveGrammar sets
+ dw EndUsedMove1Text
+ dw EndUsedMove2Text
+ dw EndUsedMove3Text
+ dw EndUsedMove4Text
+ dw EndUsedMove5Text
+
+EndUsedMove1Text:
+ text_far _EndUsedMove1Text
+ text_end
+
+EndUsedMove2Text:
+ text_far _EndUsedMove2Text
+ text_end
+
+EndUsedMove3Text:
+ text_far _EndUsedMove3Text
+ text_end
+
+EndUsedMove4Text:
+ text_far _EndUsedMove4Text
+ text_end
+
+EndUsedMove5Text:
+ text_far _EndUsedMove5Text
+ text_end
+
+; This function is redundant in the English localization.
+; In Japanese, it selects one of 5 distinct sentence structures.
+; In English, all of these sentences have the exact same structure,
+; so this serves no purpose.
+GetMoveGrammar:
+ push bc
+ ld a, [wMoveGrammar] ; move ID
+ ld c, a
+ ld b, $0
+ ld hl, MoveGrammar
+.loop
+ ld a, [hli]
+; end of table?
+ cp -1
+ jr z, .end
+; match?
+ cp c
+ jr z, .end
+; advance grammar type at 0
+ and a
+ jr nz, .loop
+; next grammar type
+ inc b
+ jr .loop
+
+.end
+; wMoveGrammar now contains move grammar
+ ld a, b
+ ld [wMoveGrammar], a
+ pop bc
+ ret
+
+INCLUDE "data/moves/grammar.asm"
diff --git a/engine/events/heal_party.asm b/engine/events/heal_party.asm
index e6551bcd..5532fd92 100644
--- a/engine/events/heal_party.asm
+++ b/engine/events/heal_party.asm
@@ -11,7 +11,7 @@ HealParty:
push hl
push de
- ld hl, wPartyMon1Status - wPartyMon1HP
+ ld hl, MON_STATUS - MON_HP
add hl, de
xor a
ld [hl], a
@@ -19,7 +19,7 @@ HealParty:
push de
ld b, NUM_MOVES ; A Pokémon has 4 moves
.pp
- ld hl, wPartyMon1Moves - wPartyMon1HP
+ ld hl, MON_MOVES - MON_HP
add hl, de
ld a, [hl]
@@ -27,7 +27,7 @@ HealParty:
jr z, .nextmove
dec a
- ld hl, wPartyMon1PP - wPartyMon1HP
+ ld hl, MON_PP - MON_HP
add hl, de
push hl
@@ -60,7 +60,7 @@ HealParty:
jr nz, .pp
pop de
- ld hl, wPartyMon1MaxHP - wPartyMon1HP
+ ld hl, MON_MAXHP - MON_HP
add hl, de
ld a, [hli]
ld [de], a
@@ -72,7 +72,7 @@ HealParty:
pop hl
push hl
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld h, d
ld l, e
add hl, bc
diff --git a/engine/events/hidden_objects/bench_guys.asm b/engine/events/hidden_events/bench_guys.asm
index 81519f2f..81519f2f 100644
--- a/engine/events/hidden_objects/bench_guys.asm
+++ b/engine/events/hidden_events/bench_guys.asm
diff --git a/engine/events/hidden_objects/bills_house_pc.asm b/engine/events/hidden_events/bills_house_pc.asm
index fefb66dd..fefb66dd 100644
--- a/engine/events/hidden_objects/bills_house_pc.asm
+++ b/engine/events/hidden_events/bills_house_pc.asm
diff --git a/engine/events/hidden_objects/blues_room.asm b/engine/events/hidden_events/blues_room.asm
index bcbad556..bcbad556 100644
--- a/engine/events/hidden_objects/blues_room.asm
+++ b/engine/events/hidden_events/blues_room.asm
diff --git a/engine/events/hidden_objects/book_or_sculpture.asm b/engine/events/hidden_events/book_or_sculpture.asm
index e04f4047..e04f4047 100644
--- a/engine/events/hidden_objects/book_or_sculpture.asm
+++ b/engine/events/hidden_events/book_or_sculpture.asm
diff --git a/engine/events/hidden_objects/bookshelves.asm b/engine/events/hidden_events/bookshelves.asm
index 813cfc49..813cfc49 100644
--- a/engine/events/hidden_objects/bookshelves.asm
+++ b/engine/events/hidden_events/bookshelves.asm
diff --git a/engine/events/hidden_objects/cinnabar_gym_quiz.asm b/engine/events/hidden_events/cinnabar_gym_quiz.asm
index da280345..c76a97c8 100644
--- a/engine/events/hidden_objects/cinnabar_gym_quiz.asm
+++ b/engine/events/hidden_events/cinnabar_gym_quiz.asm
@@ -11,7 +11,7 @@ CinnabarGymQuiz::
ld [wOpponentAfterWrongAnswer], a
ld hl, wd474
res 7, [hl]
- ld a, [wHiddenObjectFunctionArgument]
+ ld a, [wHiddenEventFunctionArgument]
push af
and $f
ldh [hGymGateIndex], a
diff --git a/engine/events/hidden_objects/elevator.asm b/engine/events/hidden_events/elevator.asm
index ab0f731f..ab0f731f 100644
--- a/engine/events/hidden_objects/elevator.asm
+++ b/engine/events/hidden_events/elevator.asm
diff --git a/engine/events/hidden_objects/fanclub_pictures.asm b/engine/events/hidden_events/fanclub_pictures.asm
index 2a3db4bc..2a3db4bc 100644
--- a/engine/events/hidden_objects/fanclub_pictures.asm
+++ b/engine/events/hidden_events/fanclub_pictures.asm
diff --git a/engine/events/hidden_objects/fighting_dojo.asm b/engine/events/hidden_events/fighting_dojo.asm
index b4f89985..b4f89985 100644
--- a/engine/events/hidden_objects/fighting_dojo.asm
+++ b/engine/events/hidden_events/fighting_dojo.asm
diff --git a/engine/events/hidden_objects/gym_statues.asm b/engine/events/hidden_events/gym_statues.asm
index 1c7eb970..1c7eb970 100644
--- a/engine/events/hidden_objects/gym_statues.asm
+++ b/engine/events/hidden_events/gym_statues.asm
diff --git a/engine/events/hidden_objects/indigo_plateau_hq.asm b/engine/events/hidden_events/indigo_plateau_hq.asm
index e8fd0220..e8fd0220 100644
--- a/engine/events/hidden_objects/indigo_plateau_hq.asm
+++ b/engine/events/hidden_events/indigo_plateau_hq.asm
diff --git a/engine/events/hidden_objects/indigo_plateau_statues.asm b/engine/events/hidden_events/indigo_plateau_statues.asm
index f78a5a72..f78a5a72 100644
--- a/engine/events/hidden_objects/indigo_plateau_statues.asm
+++ b/engine/events/hidden_events/indigo_plateau_statues.asm
diff --git a/engine/events/hidden_objects/magazines.asm b/engine/events/hidden_events/magazines.asm
index b58636ff..b58636ff 100644
--- a/engine/events/hidden_objects/magazines.asm
+++ b/engine/events/hidden_events/magazines.asm
diff --git a/engine/events/hidden_objects/museum_fossils.asm b/engine/events/hidden_events/museum_fossils.asm
index 9e02aeba..9e02aeba 100644
--- a/engine/events/hidden_objects/museum_fossils.asm
+++ b/engine/events/hidden_events/museum_fossils.asm
diff --git a/engine/events/hidden_objects/museum_fossils2.asm b/engine/events/hidden_events/museum_fossils2.asm
index 240b7ece..240b7ece 100644
--- a/engine/events/hidden_objects/museum_fossils2.asm
+++ b/engine/events/hidden_events/museum_fossils2.asm
diff --git a/engine/events/hidden_objects/new_bike.asm b/engine/events/hidden_events/new_bike.asm
index 5bce5937..5bce5937 100644
--- a/engine/events/hidden_objects/new_bike.asm
+++ b/engine/events/hidden_events/new_bike.asm
diff --git a/engine/events/hidden_objects/oaks_lab_email.asm b/engine/events/hidden_events/oaks_lab_email.asm
index bd4c66d7..bd4c66d7 100644
--- a/engine/events/hidden_objects/oaks_lab_email.asm
+++ b/engine/events/hidden_events/oaks_lab_email.asm
diff --git a/engine/events/hidden_objects/oaks_lab_posters.asm b/engine/events/hidden_events/oaks_lab_posters.asm
index 502cf951..502cf951 100644
--- a/engine/events/hidden_objects/oaks_lab_posters.asm
+++ b/engine/events/hidden_events/oaks_lab_posters.asm
diff --git a/engine/events/hidden_objects/pokecenter_pc.asm b/engine/events/hidden_events/pokecenter_pc.asm
index 59867d1a..59867d1a 100644
--- a/engine/events/hidden_objects/pokecenter_pc.asm
+++ b/engine/events/hidden_events/pokecenter_pc.asm
diff --git a/engine/events/hidden_objects/pokemon_stuff.asm b/engine/events/hidden_events/pokemon_stuff.asm
index 267a191a..267a191a 100644
--- a/engine/events/hidden_objects/pokemon_stuff.asm
+++ b/engine/events/hidden_events/pokemon_stuff.asm
diff --git a/engine/events/hidden_objects/reds_room.asm b/engine/events/hidden_events/reds_room.asm
index 7b8d51a0..7b8d51a0 100644
--- a/engine/events/hidden_objects/reds_room.asm
+++ b/engine/events/hidden_events/reds_room.asm
diff --git a/engine/events/hidden_objects/route_15_binoculars.asm b/engine/events/hidden_events/route_15_binoculars.asm
index a9b8ca37..a9b8ca37 100644
--- a/engine/events/hidden_objects/route_15_binoculars.asm
+++ b/engine/events/hidden_events/route_15_binoculars.asm
diff --git a/engine/events/hidden_objects/safari_game.asm b/engine/events/hidden_events/safari_game.asm
index 7fd59ea9..7fd59ea9 100644
--- a/engine/events/hidden_objects/safari_game.asm
+++ b/engine/events/hidden_events/safari_game.asm
diff --git a/engine/events/hidden_objects/school_blackboard.asm b/engine/events/hidden_events/school_blackboard.asm
index 75811035..23022398 100644
--- a/engine/events/hidden_objects/school_blackboard.asm
+++ b/engine/events/hidden_events/school_blackboard.asm
@@ -2,7 +2,7 @@ PrintBlackboardLinkCableText:
call EnableAutoTextBoxDrawing
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld a, [wHiddenObjectFunctionArgument]
+ ld a, [wHiddenEventFunctionArgument]
call PrintPredefTextID
ret
diff --git a/engine/events/hidden_objects/school_notebooks.asm b/engine/events/hidden_events/school_notebooks.asm
index 96a44ab5..2387c089 100644
--- a/engine/events/hidden_objects/school_notebooks.asm
+++ b/engine/events/hidden_events/school_notebooks.asm
@@ -2,7 +2,7 @@ PrintNotebookText:
call EnableAutoTextBoxDrawing
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld a, [wHiddenObjectFunctionArgument]
+ ld a, [wHiddenEventFunctionArgument]
jp PrintPredefTextID
TMNotebook::
diff --git a/engine/events/hidden_objects/town_map.asm b/engine/events/hidden_events/town_map.asm
index 11f7cbc7..11f7cbc7 100644
--- a/engine/events/hidden_objects/town_map.asm
+++ b/engine/events/hidden_events/town_map.asm
diff --git a/engine/events/hidden_objects/vermilion_gym_trash.asm b/engine/events/hidden_events/vermilion_gym_trash.asm
index 5f13a0e4..e83bef51 100644
--- a/engine/events/hidden_objects/vermilion_gym_trash.asm
+++ b/engine/events/hidden_events/vermilion_gym_trash.asm
@@ -8,7 +8,7 @@ VermilionGymTrashText::
GymTrashScript:
call EnableAutoTextBoxDrawing
- ld a, [wHiddenObjectFunctionArgument]
+ ld a, [wHiddenEventFunctionArgument]
ld [wGymTrashCanIndex], a
; Don't do the trash can puzzle if it's already been done.
diff --git a/engine/events/hidden_objects/vermilion_gym_trash2.asm b/engine/events/hidden_events/vermilion_gym_trash2.asm
index 1bc0590b..1bc0590b 100644
--- a/engine/events/hidden_objects/vermilion_gym_trash2.asm
+++ b/engine/events/hidden_events/vermilion_gym_trash2.asm
diff --git a/engine/events/hidden_items.asm b/engine/events/hidden_items.asm
index 62c40ce4..3ce8b716 100644
--- a/engine/events/hidden_items.asm
+++ b/engine/events/hidden_items.asm
@@ -13,7 +13,7 @@ HiddenItems:
call EnableAutoTextBoxDrawing
ld a, 1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld a, [wHiddenObjectFunctionArgument] ; item ID
+ ld a, [wHiddenEventFunctionArgument] ; item ID
ld [wNamedObjectIndex], a
call GetItemName
tx_pre_jump FoundHiddenItemText
@@ -28,7 +28,7 @@ INCLUDE "data/events/hidden_item_coords.asm"
FoundHiddenItemText::
text_far _FoundHiddenItemText
text_asm
- ld a, [wHiddenObjectFunctionArgument] ; item ID
+ ld a, [wHiddenEventFunctionArgument] ; item ID
ld b, a
ld c, 1
call GiveItem
@@ -75,7 +75,7 @@ HiddenCoins:
ldh [hUnusedCoinsByte], a
ldh [hCoins], a
ldh [hCoins + 1], a
- ld a, [wHiddenObjectFunctionArgument]
+ ld a, [wHiddenEventFunctionArgument]
sub COIN
cp 10
jr z, .bcd10
@@ -143,9 +143,9 @@ DroppedHiddenCoinsText::
text_end
FindHiddenItemOrCoinsIndex:
- ld a, [wHiddenObjectY]
+ ld a, [wHiddenEventY]
ld d, a
- ld a, [wHiddenObjectX]
+ ld a, [wHiddenEventX]
ld e, a
ld a, [wCurMap]
ld b, a
diff --git a/engine/events/in_game_trades.asm b/engine/events/in_game_trades.asm
index 8c5f4e5c..fab80ada 100644
--- a/engine/events/in_game_trades.asm
+++ b/engine/events/in_game_trades.asm
@@ -106,7 +106,7 @@ InGameTrade_DoTrade:
jr nz, .tradeFailed ; jump if the selected mon's species is not the required one
ld a, [wWhichPokemon]
ld hl, wPartyMon1Level
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
ld [wCurEnemyLevel], a
@@ -178,7 +178,7 @@ InGameTrade_PrepareTradeData:
ld de, wLinkEnemyTrainerName
call InGameTrade_CopyData
ld hl, wPartyMon1OTID
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wWhichPokemon]
call AddNTimes
ld de, wTradedPlayerMonOTID
@@ -211,10 +211,10 @@ InGameTrade_CopyDataToReceivedMon:
ld bc, NAME_LENGTH
call CopyData
ld hl, wPartyMon1OTID
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call InGameTrade_GetReceivedMonPointer
ld hl, wTradedEnemyMonOTID
- ld bc, $2
+ ld bc, 2
jp CopyData
; the received mon's index is (partyCount - 1),
diff --git a/engine/events/pick_up_item.asm b/engine/events/pick_up_item.asm
index 8fbdcfa2..a55c604a 100644
--- a/engine/events/pick_up_item.asm
+++ b/engine/events/pick_up_item.asm
@@ -3,19 +3,19 @@ PickUpItem:
ldh a, [hSpriteIndex]
ld b, a
- ld hl, wMissableObjectList
-.missableObjectsListLoop
+ ld hl, wToggleableObjectList
+.toggleableObjectsListLoop
ld a, [hli]
cp $ff
ret z
cp b
- jr z, .isMissable
+ jr z, .isToggleable
inc hl
- jr .missableObjectsListLoop
+ jr .toggleableObjectsListLoop
-.isMissable
+.isToggleable
ld a, [hl]
- ldh [hMissableObjectIndex], a
+ ldh [hToggleableObjectIndex], a
ld hl, wMapSpriteExtraData
ldh a, [hSpriteIndex]
@@ -30,8 +30,8 @@ PickUpItem:
call GiveItem
jr nc, .BagFull
- ldh a, [hMissableObjectIndex]
- ld [wMissableObjectIndex], a
+ ldh a, [hToggleableObjectIndex]
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, 1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
diff --git a/engine/events/poison.asm b/engine/events/poison.asm
index 6dfe1376..3a26df8f 100644
--- a/engine/events/poison.asm
+++ b/engine/events/poison.asm
@@ -78,7 +78,7 @@ ApplyOutOfBattlePoisonDamage:
ld a, [de]
inc a
jr z, .applyDamageLoopDone
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
add hl, bc
push hl
ld hl, wWhichPokemon
@@ -95,7 +95,7 @@ ApplyOutOfBattlePoisonDamage:
and 1 << PSN
or e
ld e, a
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
add hl, bc
dec d
jr nz, .countPoisonedLoop
diff --git a/engine/events/pokemart.asm b/engine/events/pokemart.asm
index b280c711..cb25ab4c 100644
--- a/engine/events/pokemart.asm
+++ b/engine/events/pokemart.asm
@@ -99,7 +99,7 @@ DisplayPokemartDialogue_::
dec a
jr z, .sellMenuLoop
-.sellItem
+; sell item
ld a, [wBoughtOrSoldItemInMart]
and a
jr nz, .skipSettingFlag1
@@ -177,7 +177,7 @@ DisplayPokemartDialogue_::
dec a
jr z, .buyMenuLoop
-.buyItem
+; buy item
call .isThereEnoughMoney
jr c, .notEnoughMoney
ld hl, wNumBagItems
diff --git a/engine/events/prize_menu.asm b/engine/events/prize_menu.asm
index 16ada216..8f25f272 100644
--- a/engine/events/prize_menu.asm
+++ b/engine/events/prize_menu.asm
@@ -196,7 +196,7 @@ HandlePrizeChoice:
.getMonName
call GetMonName
.givePrize
- ld hl, SoYouWantPrizeTextPtr
+ ld hl, SoYouWantPrizeText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem] ; yes/no answer (Y=0, N=1)
@@ -244,25 +244,25 @@ HandlePrizeChoice:
predef SubBCDPredef
jp PrintPrizePrice
.bagFull
- ld hl, PrizeRoomBagIsFullTextPtr
+ ld hl, PrizeRoomBagIsFullText
jp PrintText
.notEnoughCoins
ld hl, SorryNeedMoreCoinsText
jp PrintText
.printOhFineThen
- ld hl, OhFineThenTextPtr
+ ld hl, OhFineThenText
jp PrintText
UnknownPrizeData:
; XXX what's this?
db $00,$01,$00,$01,$00,$01,$00,$00,$01
-HereYouGoTextPtr:
+HereYouGoText: ; unreferenced
text_far _HereYouGoText
text_waitbutton
text_end
-SoYouWantPrizeTextPtr:
+SoYouWantPrizeText:
text_far _SoYouWantPrizeText
text_end
@@ -271,12 +271,12 @@ SorryNeedMoreCoinsText:
text_waitbutton
text_end
-PrizeRoomBagIsFullTextPtr:
+PrizeRoomBagIsFullText:
text_far _OopsYouDontHaveEnoughRoomText
text_waitbutton
text_end
-OhFineThenTextPtr:
+OhFineThenText:
text_far _OhFineThenText
text_waitbutton
text_end
diff --git a/engine/flag_action.asm b/engine/flag_action.asm
index dc516887..150bebab 100644
--- a/engine/flag_action.asm
+++ b/engine/flag_action.asm
@@ -43,10 +43,10 @@ FlagAction:
ld a, b
and a
jr z, .reset
- cp 2
+ cp FLAG_TEST
jr z, .read
-.set
+; set
ld b, [hl]
ld a, d
or b
diff --git a/engine/gfx/load_pokedex_tiles.asm b/engine/gfx/load_pokedex_tiles.asm
index a3f69171..b0857137 100644
--- a/engine/gfx/load_pokedex_tiles.asm
+++ b/engine/gfx/load_pokedex_tiles.asm
@@ -3,7 +3,7 @@ LoadPokedexTilePatterns:
call LoadHpBarAndStatusTilePatterns
ld de, PokedexTileGraphics
ld hl, vChars2 tile $60
- lb bc, BANK(PokedexTileGraphics), (PokedexTileGraphicsEnd - PokedexTileGraphics) / $10
+ lb bc, BANK(PokedexTileGraphics), (PokedexTileGraphicsEnd - PokedexTileGraphics) / TILE_SIZE
call CopyVideoData
ld de, PokeballTileGraphics
ld hl, vChars2 tile $72
diff --git a/engine/gfx/mon_icons.asm b/engine/gfx/mon_icons.asm
index 4cc11284..4775084f 100644
--- a/engine/gfx/mon_icons.asm
+++ b/engine/gfx/mon_icons.asm
@@ -44,7 +44,7 @@ GetAnimationSpeed:
push bc
ld hl, wMonPartySpritesSavedOAM
ld de, wShadowOAM
- ld bc, $60
+ ld bc, OBJ_SIZE * 4 * PARTY_LENGTH
call CopyData
pop bc
xor a
@@ -52,7 +52,7 @@ GetAnimationSpeed:
.animateSprite
push bc
ld hl, wShadowOAMSprite00TileID
- ld bc, $10
+ ld bc, OBJ_SIZE * 4
ld a, [wCurrentMenuItem]
call AddNTimes
ld c, ICONOFFSET
@@ -68,8 +68,8 @@ GetAnimationSpeed:
ld c, $1 ; amount to increase the y coord by
; otherwise, load a second sprite frame
.editTileIDS
- ld b, $4
- ld de, $4
+ ld b, 4
+ ld de, OBJ_SIZE
.loop
ld a, [hl]
add c
@@ -266,7 +266,7 @@ WriteMonPartySpriteOAM:
.makeCopy
ld hl, wShadowOAM
ld de, wMonPartySpritesSavedOAM
- ld bc, $60
+ ld bc, OBJ_SIZE * 4 * PARTY_LENGTH
jp CopyData
GetPartyMonSpriteID:
diff --git a/engine/gfx/palettes.asm b/engine/gfx/palettes.asm
index e46c6715..359f235c 100644
--- a/engine/gfx/palettes.asm
+++ b/engine/gfx/palettes.asm
@@ -1071,7 +1071,7 @@ CopySGBBorderTiles:
ld b, 128
.tileLoop
; Copy bit planes 1 and 2 of the tile data.
- ld c, 16
+ ld c, TILE_SIZE
.copyLoop
ld a, [hli]
ld [de], a
diff --git a/engine/gfx/sprite_oam.asm b/engine/gfx/sprite_oam.asm
index a1549c6c..3b869394 100644
--- a/engine/gfx/sprite_oam.asm
+++ b/engine/gfx/sprite_oam.asm
@@ -141,12 +141,12 @@ PrepareOAMData::
.asm_4a41
ld a, [wMovementFlags]
bit BIT_LEDGE_OR_FISHING, a
- ld c, $a0
+ ld c, LOW(wShadowOAMEnd)
jr z, .clear
; Don't clear the last 4 entries because they are used for the shadow in the
; jumping down ledge animation and the rod in the fishing animation.
- ld c, $90
+ ld c, LOW(wShadowOAMSprite36)
.clear
ldh a, [hOAMBufferOffset]
diff --git a/engine/items/inventory.asm b/engine/items/inventory.asm
index 758c81d7..caa9dd22 100644
--- a/engine/items/inventory.asm
+++ b/engine/items/inventory.asm
@@ -119,7 +119,6 @@ RemoveItemFromInventory_::
jr nz, .skipMovingUpSlots
; if the remaining quantity is 0,
; remove the emptied item slot and move up all the following item slots
-.moveSlotsUp
ld e, l
ld d, h
inc de
diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm
index 31684719..0cbb0c48 100644
--- a/engine/items/item_effects.asm
+++ b/engine/items/item_effects.asm
@@ -669,7 +669,7 @@ ItemUseBicycle:
jp z, ItemUseNotTime
dec a ; is player already bicycling?
jr nz, .tryToGetOnBike
-.getOffBike
+; get off bike
call ItemUseReloadOverworldData
xor a
ld [wWalkBikeSurfState], a ; change player state to walking
@@ -702,13 +702,13 @@ ItemUseSurfboard:
ld [wWalkBikeSurfStateCopy], a
cp 2 ; is the player already surfing?
jr z, .tryToStopSurfing
-.tryToSurf
+; try to Surf
call IsNextTileShoreOrWater
jp nc, SurfingAttemptFailed
ld hl, TilePairCollisionsWater
call CheckForTilePairCollisions
jp c, SurfingAttemptFailed
-.surf
+; surfing
call .makePlayerMoveForward
ld hl, wStatusFlags5
set BIT_SCRIPTED_MOVEMENT_STATE, [hl]
@@ -923,7 +923,7 @@ ItemUseMedicine:
.getPartyMonDataAddress
jp c, .canceledItemUse
ld hl, wPartyMons
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wWhichPokemon]
call AddNTimes
ld a, [wWhichPokemon]
@@ -965,7 +965,7 @@ ItemUseMedicine:
jr nc, .healHP ; if it's a Full Restore or one of the potions
; fall through if it's one of the status-specific healing items
.cureStatusAilment
- ld bc, wPartyMon1Status - wPartyMon1
+ ld bc, MON_STATUS
add hl, bc ; hl now points to status
ld a, [wCurItem]
lb bc, ANTIDOTE_MSG, 1 << PSN
@@ -1003,7 +1003,7 @@ ItemUseMedicine:
ld hl, wPlayerBattleStatus3
res BADLY_POISONED, [hl] ; heal Toxic status
pop hl
- ld bc, wPartyMon1Stats - wPartyMon1Status
+ ld bc, MON_STATS - MON_STATUS
add hl, bc ; hl now points to party stats
ld de, wBattleMonStats
ld bc, NUM_STATS * 2
@@ -1021,7 +1021,7 @@ ItemUseMedicine:
ld [wHPBarOldHP], a ; current HP stored at wHPBarOldHP (2 bytes, big-endian)
or b
jr nz, .notFainted
-.fainted
+; fainted
ld a, [wCurItem]
cp REVIVE
jr z, .updateInBattleFaintedData
@@ -1078,7 +1078,7 @@ ItemUseMedicine:
.compareCurrentHPToMaxHP
push hl
push bc
- ld bc, wPartyMon1MaxHP - (wPartyMon1HP + 1)
+ ld bc, MON_MAXHP - (MON_HP + 1)
add hl, bc ; hl now points to max HP
pop bc
ld a, [hli]
@@ -1089,7 +1089,7 @@ ItemUseMedicine:
.skipComparingLSB
pop hl
jr nz, .notFullHP
-.fullHP ; if the pokemon's current HP equals its max HP
+; if the pokemon's current HP equals its max HP
ld a, [wCurItem]
cp FULL_RESTORE
jp nz, .healingItemNoEffect
@@ -1111,7 +1111,7 @@ ItemUseMedicine:
ld [wChannelSoundIDs + CHAN5], a
push hl
push de
- ld bc, wPartyMon1MaxHP - (wPartyMon1HP + 1)
+ ld bc, MON_MAXHP - (MON_HP + 1)
add hl, bc ; hl now points to max HP
ld a, [hli]
ld [wHPBarMaxHP+1], a
@@ -1132,7 +1132,7 @@ ItemUseMedicine:
push af
ld hl, wPartyMon1MaxHP
ld a, [wWhichPokemon]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
ld [wHPBarMaxHP + 1], a
@@ -1144,7 +1144,7 @@ ItemUseMedicine:
ldh [hDivisor], a
ld b, 2 ; number of bytes
call Divide ; get 1/5 of max HP of pokemon that used Softboiled
- ld bc, (wPartyMon1HP + 1) - (wPartyMon1MaxHP + 1)
+ ld bc, (MON_HP + 1) - (MON_MAXHP + 1)
add hl, bc ; hl now points to LSB of current HP of pokemon that used Softboiled
; subtract 1/5 of max HP from current HP of pokemon that used Softboiled
ldh a, [hQuotient + 3]
@@ -1224,7 +1224,7 @@ ItemUseMedicine:
inc hl
ld d, h
ld e, l ; de now points to current HP
- ld hl, (wPartyMon1MaxHP + 1) - (wPartyMon1HP + 1)
+ ld hl, (MON_MAXHP + 1) - (MON_HP + 1)
add hl, de ; hl now points to max HP
ld a, [wCurItem]
cp REVIVE
@@ -1273,7 +1273,7 @@ ItemUseMedicine:
ld a, [wCurItem]
cp FULL_RESTORE
jr nz, .updateInBattleData
- ld bc, wPartyMon1Status - (wPartyMon1MaxHP + 1)
+ ld bc, MON_STATUS - (MON_MAXHP + 1)
add hl, bc
xor a
ld [hl], a ; remove the status ailment in the party data
@@ -1381,7 +1381,7 @@ ItemUseMedicine:
ld a, [hl]
ld [wCurSpecies], a
ld [wPokedexNum], a
- ld bc, wPartyMon1Level - wPartyMon1
+ ld bc, MON_LEVEL
add hl, bc ; hl now points to level
ld a, [hl] ; a = level
ld [wCurEnemyLevel], a ; store level
@@ -1398,7 +1398,7 @@ ItemUseMedicine:
push hl
sub HP_UP
add a
- ld bc, wPartyMon1HPExp - wPartyMon1
+ ld bc, MON_HP_EXP
add hl, bc
add l
ld l, a
@@ -1427,14 +1427,14 @@ ItemUseMedicine:
.statNameInnerLoop
ld a, [hli]
ld b, a
- ld a, $50
+ ld a, '@'
cp b
jr nz, .statNameInnerLoop
jr .statNameLoop
.gotStatName
ld de, wStringBuffer
- ld bc, 10
+ ld bc, STAT_NAME_LENGTH
call CopyData ; copy the stat's name to wStringBuffer
ld a, SFX_HEAL_AILMENT
call PlaySound
@@ -1449,17 +1449,17 @@ ItemUseMedicine:
jp GBPalWhiteOut
.recalculateStats
- ld bc, wPartyMon1Stats - wPartyMon1
+ ld bc, MON_STATS
add hl, bc
ld d, h
ld e, l ; de now points to stats
- ld bc, (wPartyMon1Exp + 2) - wPartyMon1Stats
+ ld bc, (MON_EXP + 2) - MON_STATS
add hl, bc ; hl now points to LSB of experience
ld b, 1
jp CalcStats ; recalculate stats
.useRareCandy
push hl
- ld bc, wPartyMon1Level - wPartyMon1
+ ld bc, MON_LEVEL
add hl, bc ; hl now points to level
ld a, [hl] ; a = level
cp MAX_LEVEL
@@ -1473,7 +1473,7 @@ ItemUseMedicine:
callfar CalcExperience ; calculate experience for next level and store it at hExperience
pop de
pop hl
- ld bc, wPartyMon1Exp - wPartyMon1Level
+ ld bc, MON_EXP - MON_LEVEL
add hl, bc ; hl now points to MSB of experience
; update experience to minimum for new level
ldh a, [hExperience]
@@ -1489,7 +1489,7 @@ ItemUseMedicine:
push af
push de
push hl
- ld bc, wPartyMon1MaxHP - wPartyMon1
+ ld bc, MON_MAXHP
add hl, bc ; hl now points to MSB of max HP
ld a, [hli]
ld b, a
@@ -1499,7 +1499,7 @@ ItemUseMedicine:
push hl
call .recalculateStats
pop hl
- ld bc, (wPartyMon1MaxHP + 1) - wPartyMon1
+ ld bc, (MON_MAXHP + 1)
add hl, bc ; hl now points to LSB of max HP
pop bc
ld a, [hld]
@@ -1509,7 +1509,7 @@ ItemUseMedicine:
sbc b
ld b, a ; bc = the amount of max HP gained from leveling up
; add the amount gained to the current HP
- ld de, (wPartyMon1HP + 1) - wPartyMon1MaxHP
+ ld de, (MON_HP + 1) - MON_MAXHP
add hl, de ; hl now points to LSB of current HP
ld a, [hl]
add c
@@ -1528,12 +1528,12 @@ ItemUseMedicine:
xor a ; PLAYER_PARTY_DATA
ld [wMonDataLocation], a
call LoadMonData
- ld d, $01
- callfar PrintStatsBox ; display new stats text box
- call WaitForTextScrollButtonPress ; wait for button press
+ ld d, LEVEL_UP_STATS_BOX
+ callfar PrintStatsBox
+ call WaitForTextScrollButtonPress
xor a ; PLAYER_PARTY_DATA
ld [wMonDataLocation], a
- predef LearnMoveFromLevelUp ; learn level up move, if any
+ predef LearnMoveFromLevelUp
xor a
ld [wForceEvolution], a
@@ -1542,7 +1542,7 @@ ItemUseMedicine:
push af
ld a, [wUsedItemOnWhichPokemon]
ld [wWhichPokemon], a
- callfar RespawnOverworldPikachu ; evolve pokemon, if appropriate
+ callfar RespawnOverworldPikachu
pop af
ld [wWhichPokemon], a
@@ -1571,11 +1571,11 @@ INCLUDE "data/battle/stat_names.asm"
ItemUseBait:
ld hl, ThrewBaitText
call PrintText
- ld hl, wEnemyMonActualCatchRate ; catch rate
+ ld hl, wEnemyMonActualCatchRate
srl [hl] ; halve catch rate
ld a, BAIT_ANIM
- ld hl, wSafariBaitFactor ; bait factor
- ld de, wSafariEscapeFactor ; escape factor
+ ld hl, wSafariBaitFactor
+ ld de, wSafariEscapeFactor
jr BaitRockCommon
; for CASCADEBADGE when used from the
@@ -1584,7 +1584,7 @@ ItemUseBait:
ItemUseRock:
ld hl, ThrewRockText
call PrintText
- ld hl, wEnemyMonActualCatchRate ; catch rate
+ ld hl, wEnemyMonActualCatchRate
ld a, [hl]
add a ; double catch rate
jr nc, .noCarry
@@ -1592,8 +1592,8 @@ ItemUseRock:
.noCarry
ld [hl], a
ld a, ROCK_ANIM
- ld hl, wSafariEscapeFactor ; escape factor
- ld de, wSafariBaitFactor ; bait factor
+ ld hl, wSafariEscapeFactor
+ ld de, wSafariBaitFactor
BaitRockCommon:
ld [wAnimationID], a
@@ -1954,8 +1954,8 @@ ItemUsePokeFlute:
; OUTPUT:
; [wWereAnyMonsAsleep]: set to 1 if any pokemon were asleep
WakeUpEntireParty:
- ld de, 44
- ld c, 6
+ ld de, PARTYMON_STRUCT_LENGTH
+ ld c, PARTY_LENGTH
.loop
ld a, [hl]
push af
@@ -2221,7 +2221,7 @@ ItemUsePPRestore:
ld [wPlayerMoveListIndex], a
jr nz, .chooseMon
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call GetSelectedMoveOffset
push hl
ld a, [hl]
@@ -2232,8 +2232,8 @@ ItemUsePPRestore:
ld a, [wPPRestoreItem]
cp ETHER
jr nc, .useEther ; if Ether or Max Ether
-.usePPUp
- ld bc, wPartyMon1PP - wPartyMon1Moves
+; use PP Up
+ ld bc, MON_PP - MON_MOVES
add hl, bc
ld a, [hl] ; move PP
cp 3 << 6 ; have 3 PP Ups already been used?
@@ -2267,10 +2267,10 @@ ItemUsePPRestore:
cp b ; is the pokemon whose PP was restored active in battle?
jr nz, .skipUpdatingInBattleData
ld hl, wPartyMon1PP
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld de, wBattleMonPP
- ld bc, 4
+ ld bc, NUM_MOVES
call CopyData ; copy party data to in-battle data
.skipUpdatingInBattleData
ld a, SFX_HEAL_AILMENT
@@ -2291,9 +2291,9 @@ ItemUsePPRestore:
ld [wMonDataLocation], a
call GetMaxPP
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call GetSelectedMoveOffset
- ld bc, wPartyMon1PP - wPartyMon1Moves
+ ld bc, MON_PP - MON_MOVES
add hl, bc ; hl now points to move's PP
ld a, [wMaxPP]
ld b, a
@@ -2343,7 +2343,7 @@ ItemUsePPRestore:
.elixirLoop
push bc
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call GetSelectedMoveOffset
ld a, [hl]
and a ; does the current slot have a move?
@@ -2441,7 +2441,7 @@ ItemUseTMHM:
.chooseMon
ld hl, wStringBuffer
ld de, wTempMoveNameBuffer
- ld bc, ITEM_NAME_LENGTH + 1
+ ld bc, MOVE_NAME_LENGTH
call CopyData ; save the move name because DisplayPartyMenu will overwrite it
ld a, $ff
ld [wUpdateSpritesEnabled], a
@@ -2451,7 +2451,7 @@ ItemUseTMHM:
push af
ld hl, wTempMoveNameBuffer
ld de, wStringBuffer
- ld bc, ITEM_NAME_LENGTH + 1
+ ld bc, MOVE_NAME_LENGTH
call CopyData
pop af
jr nc, .checkIfAbleToLearnMove
@@ -2656,14 +2656,14 @@ GotOffBicycleText:
; [wCurrentMenuItem] = index of move (when using a PP Up)
RestoreBonusPP:
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wWhichPokemon]
call AddNTimes
push hl
ld de, wNormalMaxPPList - 1
predef LoadMovePPs ; loads the normal max PP of each of the pokemon's moves to wNormalMaxPPList
pop hl
- ld c, wPartyMon1PP - wPartyMon1Moves
+ ld c, MON_PP - MON_MOVES
ld b, 0
add hl, bc ; hl now points to move 1 PP
ld de, wNormalMaxPPList
@@ -2749,13 +2749,13 @@ GetMaxPP:
ld a, [wMonDataLocation]
and a
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
jr z, .sourceWithMultipleMon
ld hl, wEnemyMon1Moves
dec a
jr z, .sourceWithMultipleMon
ld hl, wBoxMon1Moves
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
dec a
jr z, .sourceWithMultipleMon
ld hl, wDayCareMonMoves
@@ -2783,7 +2783,7 @@ GetMaxPP:
ld b, a ; b = normal max PP
pop hl
push bc
- ld bc, wPartyMon1PP - wPartyMon1Moves ; PP offset if not player's in-battle pokemon data
+ ld bc, MON_PP - MON_MOVES ; PP offset if not player's in-battle pokemon data
ld a, [wMonDataLocation]
cp 4 ; player's in-battle pokemon?
jr nz, .addPPOffset
@@ -2928,29 +2928,33 @@ IsKeyItem_::
INCLUDE "data/items/key_items.asm"
+; store the new mon in the first slot, shifting all existing box data down
SendNewMonToBox:
ld de, wBoxCount
ld a, [de]
inc a
ld [de], a
+
ld a, [wCurPartySpecies]
ld [wCurSpecies], a
ld c, a
-.loop
+.shiftSpeciesLoop
inc de
ld a, [de]
ld b, a
ld a, c
ld c, b
ld [de], a
- cp $ff
- jr nz, .loop
+ cp -1
+ jr nz, .shiftSpeciesLoop
+
call GetMonHeader
ld hl, wBoxMonOT
ld bc, NAME_LENGTH
ld a, [wBoxCount]
dec a
- jr z, .skip
+ jr z, .skipOTshift ; if the box was empty, there is nothing to shift
+
dec a
call AddNTimes
push hl
@@ -2962,7 +2966,7 @@ SendNewMonToBox:
ld a, [wBoxCount]
dec a
ld b, a
-.loop2
+.shiftMonOTLoop
push bc
push hl
ld bc, NAME_LENGTH
@@ -2974,15 +2978,18 @@ SendNewMonToBox:
add hl, bc
pop bc
dec b
- jr nz, .loop2
-.skip
+ jr nz, .shiftMonOTLoop
+
+.skipOTshift
ld hl, wPlayerName
- ld de, wBoxMonOT
+ ld de, wBoxMon1OT
ld bc, NAME_LENGTH
call CopyData
+
ld a, [wBoxCount]
dec a
- jr z, .skip2
+ jr z, .skipNickShift
+
ld hl, wBoxMonNicks
ld bc, NAME_LENGTH
dec a
@@ -2996,7 +3003,7 @@ SendNewMonToBox:
ld a, [wBoxCount]
dec a
ld b, a
-.loop3
+.shiftNickLoop
push bc
push hl
ld bc, NAME_LENGTH
@@ -3008,21 +3015,24 @@ SendNewMonToBox:
add hl, bc
pop bc
dec b
- jr nz, .loop3
-.skip2
- ld hl, wBoxMonNicks
+ jr nz, .shiftNickLoop
+
+.skipNickShift
+ ld hl, wBoxMon1Nick
ld a, NAME_MON_SCREEN
ld [wNamingScreenType], a
predef AskName
+
ld a, [wBoxCount]
dec a
- jr z, .skip3
+ jr z, .skipMonDataShift
+
ld hl, wBoxMons
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
dec a
call AddNTimes
push hl
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
ld d, h
ld e, l
@@ -3030,20 +3040,21 @@ SendNewMonToBox:
ld a, [wBoxCount]
dec a
ld b, a
-.loop4
+.shiftMonDataLoop
push bc
push hl
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
call CopyData
pop hl
ld d, h
ld e, l
- ld bc, wBoxMon1 - wBoxMon2
+ ld bc, -BOXMON_STRUCT_LENGTH
add hl, bc
pop bc
dec b
- jr nz, .loop4
-.skip3
+ jr nz, .shiftMonDataLoop
+
+.skipMonDataShift
ld a, [wEnemyMonLevel]
ld [wEnemyMonBoxLevel], a
ld hl, wEnemyMon
@@ -3073,11 +3084,12 @@ SendNewMonToBox:
inc de
xor a
ld b, NUM_STATS * 2
-.loop5
+.statLoop
ld [de], a
inc de
dec b
- jr nz, .loop5
+ jr nz, .statLoop
+
ld hl, wEnemyMonDVs
ld a, [hli]
ld [de], a
@@ -3086,12 +3098,12 @@ SendNewMonToBox:
ld [de], a
ld hl, wEnemyMonPP
ld b, NUM_MOVES
-.loop6
+.movePPLoop
ld a, [hli]
inc de
ld [de], a
dec b
- jr nz, .loop6
+ jr nz, .movePPLoop
ld a, [wCurPartySpecies]
cp KADABRA
jr nz, .notKadabra
diff --git a/engine/items/tmhm.asm b/engine/items/tmhm.asm
index a11cd736..bac92f5d 100644
--- a/engine/items/tmhm.asm
+++ b/engine/items/tmhm.asm
@@ -2,7 +2,7 @@
CheckIfMoveIsKnown:
ld a, [wWhichPokemon]
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [wMoveNum]
ld b, a
diff --git a/engine/items/town_map.asm b/engine/items/town_map.asm
index a7093cfc..fe274579 100644
--- a/engine/items/town_map.asm
+++ b/engine/items/town_map.asm
@@ -20,11 +20,11 @@ DisplayTownMap:
call PlaceString
ld hl, wShadowOAMSprite00
ld de, wShadowOAMBackupSprite00
- ld bc, 4 * 4
+ ld bc, OBJ_SIZE * 4
call CopyData
ld hl, vSprites tile BIRD_BASE_TILE
ld de, TownMapCursor
- lb bc, BANK(TownMapCursor), (TownMapCursorEnd - TownMapCursor) / $8
+ lb bc, BANK(TownMapCursor), (TownMapCursorEnd - TownMapCursor) / TILE_1BPP_SIZE
call CopyVideoDataDouble
xor a
ld [wWhichTownMapLocation], a
@@ -64,7 +64,7 @@ DisplayTownMap:
call PlaceString
ld hl, wShadowOAMSprite04
ld de, wShadowOAMBackupSprite04
- ld bc, 4 * 4
+ ld bc, OBJ_SIZE * 4
call CopyData
.inputLoop
call TownMapSpriteBlinkingAnimation
@@ -159,7 +159,7 @@ LoadTownMap_Fly::
call CopyVideoData
ld de, TownMapUpArrow
ld hl, vChars1 tile $6d
- lb bc, BANK(TownMapUpArrow), (TownMapUpArrowEnd - TownMapUpArrow) / $8
+ lb bc, BANK(TownMapUpArrow), (TownMapUpArrowEnd - TownMapUpArrow) / TILE_1BPP_SIZE
call CopyVideoDataDouble
call BuildFlyLocationsList
ld hl, wUpdateSpritesEnabled
@@ -618,11 +618,11 @@ TownMapSpriteBlinkingAnimation::
xor a
jr .done
.hideSprites
- ld hl, wShadowOAM
+ ld hl, wShadowOAMSprite00YCoord
ld b, OAM_COUNT - 4
- ld de, $4
+ ld de, OBJ_SIZE
.hideSpritesLoop
- ld [hl], $a0
+ ld [hl], SCREEN_HEIGHT_PX + OAM_Y_OFS
add hl, de
dec b
jr nz, .hideSpritesLoop
diff --git a/engine/link/cable_club.asm b/engine/link/cable_club.asm
index d66dc608..716b1441 100644
--- a/engine/link/cable_club.asm
+++ b/engine/link/cable_club.asm
@@ -679,7 +679,7 @@ TradeCenter_PrintPartyListNames:
pop de
inc de
pop hl
- ld bc, 20
+ ld bc, SCREEN_WIDTH
add hl, bc
pop bc
inc c
@@ -766,9 +766,9 @@ TradeCenter_Trade:
call CopyData
ld hl, wPartyMon1Species
ld a, [wTradingWhichPlayerMon]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
- ld bc, wPartyMon1OTID - wPartyMon1
+ ld bc, MON_OTID
add hl, bc
ld a, [hli]
ld [wTradedPlayerMonOTID], a
@@ -782,9 +782,9 @@ TradeCenter_Trade:
call CopyData
ld hl, wEnemyMons
ld a, [wTradingWhichEnemyMon]
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
- ld bc, wEnemyMon1OTID - wEnemyMon1
+ ld bc, MON_OTID
add hl, bc
ld a, [hli]
ld [wTradedEnemyMonOTID], a
@@ -813,10 +813,10 @@ TradeCenter_Trade:
ld [wCurPartySpecies], a
ld hl, wEnemyMons
ld a, c
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld de, wLoadedMon
- ld bc, wEnemyMon2 - wEnemyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call CopyData
call AddEnemyMonToPlayerParty
ld a, [wPartyCount]
@@ -983,5 +983,5 @@ CableClub_DrawHorizontalLine:
LoadTrainerInfoTextBoxTiles:
ld de, TrainerInfoTextBoxTileGraphics
ld hl, vChars2 tile $76
- lb bc, BANK(TrainerInfoTextBoxTileGraphics), (TrainerInfoTextBoxTileGraphicsEnd - TrainerInfoTextBoxTileGraphics) / $10
+ lb bc, BANK(TrainerInfoTextBoxTileGraphics), (TrainerInfoTextBoxTileGraphicsEnd - TrainerInfoTextBoxTileGraphics) / TILE_SIZE
jp CopyVideoData
diff --git a/engine/menus/display_text_id_init.asm b/engine/menus/display_text_id_init.asm
index ca828006..1dda338d 100644
--- a/engine/menus/display_text_id_init.asm
+++ b/engine/menus/display_text_id_init.asm
@@ -40,8 +40,8 @@ DisplayTextIDInit::
; this is done because when you talk to an NPC, they turn to look your way
; the original direction they were facing must be restored after the dialogue is over
ld hl, wSprite01StateData1FacingDirection
- ld c, $0f
- ld de, $10
+ ld c, NUM_SPRITESTATEDATA_STRUCTS - 1
+ ld de, SPRITESTATEDATA1_LENGTH
.spriteFacingDirectionCopyLoop
ld a, [hl] ; x#SPRITESTATEDATA1_FACINGDIRECTION
inc h
@@ -53,7 +53,8 @@ DisplayTextIDInit::
; loop to force all the sprites in the middle of animation to stand still
; (so that they don't like they're frozen mid-step during the dialogue)
ld hl, wSpritePlayerStateData1ImageIndex
- ld de, $10
+ ld de, SPRITESTATEDATA1_LENGTH
+ ASSERT NUM_SPRITESTATEDATA_STRUCTS == SPRITESTATEDATA1_LENGTH
ld c, e
.spriteStandStillLoop
ld a, [hl]
diff --git a/engine/menus/naming_screen.asm b/engine/menus/naming_screen.asm
index 38da8afe..5b4b2415 100644
--- a/engine/menus/naming_screen.asm
+++ b/engine/menus/naming_screen.asm
@@ -239,11 +239,11 @@ DisplayNamingScreen:
cp NAME_MON_SCREEN
jr nc, .checkMonNameLength
ld a, [wNamingScreenNameLength]
- cp $7 ; max length of player/rival names
+ cp PLAYER_NAME_LENGTH - 1
jr .checkNameLength
.checkMonNameLength
ld a, [wNamingScreenNameLength]
- cp $a ; max length of pokemon nicknames
+ cp NAME_LENGTH - 1
.checkNameLength
jr c, .addLetter
ret
@@ -394,12 +394,13 @@ PrintNicknameAndUnderscores:
hlcoord 10, 3
ld a, [wNamingScreenType]
cp NAME_MON_SCREEN
- jr nc, .pokemon1
- ld b, 7 ; player or rival max name length
- jr .playerOrRival1
-.pokemon1
- ld b, 10 ; pokemon max name length
-.playerOrRival1
+ jr nc, .pokemon
+; player or rival
+ ld b, PLAYER_NAME_LENGTH - 1
+ jr .gotUnderscoreCount
+.pokemon
+ ld b, NAME_LENGTH - 1
+.gotUnderscoreCount
ld a, $76 ; underscore tile id
.placeUnderscoreLoop
ld [hli], a
@@ -409,13 +410,15 @@ PrintNicknameAndUnderscores:
cp NAME_MON_SCREEN
ld a, [wNamingScreenNameLength]
jr nc, .pokemon2
- cp 7 ; player or rival max name length
- jr .playerOrRival2
+; player or rival
+ cp PLAYER_NAME_LENGTH - 1
+ jr .checkEmptySpaces
.pokemon2
- cp 10 ; pokemon max name length
-.playerOrRival2
- jr nz, .emptySpacesRemaining
- ; when all spaces are filled, force the cursor onto the ED tile
+ cp NAME_LENGTH - 1
+.checkEmptySpaces
+ jr nz, .placeRaisedUnderscore ; jump if empty spaces remain
+ ; when all spaces are filled, force the cursor onto the ED tile,
+ ; and keep the last underscore raised
call EraseMenuCursor
ld a, $11 ; "ED" x coord
ld [wTopMenuItemX], a
@@ -423,11 +426,10 @@ PrintNicknameAndUnderscores:
ld [wCurrentMenuItem], a
ld a, [wNamingScreenType]
cp NAME_MON_SCREEN
- ld a, 9 ; keep the last underscore raised
- jr nc, .pokemon3
- ld a, 6 ; keep the last underscore raised
-.pokemon3
-.emptySpacesRemaining
+ ld a, NAME_LENGTH - 2
+ jr nc, .placeRaisedUnderscore
+ ld a, PLAYER_NAME_LENGTH - 2
+.placeRaisedUnderscore
ld c, a
ld b, $0
hlcoord 10, 3
diff --git a/engine/menus/party_menu.asm b/engine/menus/party_menu.asm
index d994c15f..24d2aa13 100644
--- a/engine/menus/party_menu.asm
+++ b/engine/menus/party_menu.asm
@@ -110,7 +110,7 @@ RedrawPartyMenu_::
pop hl
pop de
inc de
- ld bc, 2 * 20
+ ld bc, 2 * SCREEN_WIDTH
add hl, bc
pop bc
inc c
diff --git a/engine/menus/pokedex.asm b/engine/menus/pokedex.asm
index 48c5ab01..dcf55820 100644
--- a/engine/menus/pokedex.asm
+++ b/engine/menus/pokedex.asm
@@ -118,7 +118,7 @@ ELSE
jr z, .chosePrint
ENDC
vc_patch_end
-.choseQuit
+; chose Quit
ld b, 1
.exitSideMenu
pop af
@@ -484,8 +484,8 @@ HeightWeightText:
db "HT ?′??″"
next "WT ???lb@"
-; XXX does anything point to this?
-PokeText:
+; leftover from JPN Pokedex, where species have the suffix "Pokemon"
+PokeText: ; unreferenced
db "#@"
; horizontal line that divides the pokedex text description from the rest of the data
diff --git a/engine/menus/save.asm b/engine/menus/save.asm
index 768b6e8b..bc427936 100644
--- a/engine/menus/save.asm
+++ b/engine/menus/save.asm
@@ -214,15 +214,15 @@ SaveMainData:
ld de, sSpriteData
ld bc, wSpriteDataEnd - wSpriteDataStart
call CopyData
- ld hl, wBoxDataStart
; this part is redundant, SaveCurrentBoxData is always called next
+ ld hl, wBoxDataStart
ld de, sCurBoxData
ld bc, wBoxDataEnd - wBoxDataStart
call CopyData
+
ldh a, [hTileAnimations]
ld [sTileAnimations], a
-
ld hl, sGameData
ld bc, sGameDataEnd - sGameData
call CalcCheckSum
diff --git a/engine/menus/start_sub_menus.asm b/engine/menus/start_sub_menus.asm
index 7e801068..dfbb0f13 100644
--- a/engine/menus/start_sub_menus.asm
+++ b/engine/menus/start_sub_menus.asm
@@ -253,7 +253,7 @@ StartMenu_Pokemon::
.softboiled
ld hl, wPartyMon1MaxHP
ld a, [wWhichPokemon]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
ldh [hDividend], a
@@ -263,7 +263,7 @@ StartMenu_Pokemon::
ldh [hDivisor], a
ld b, 2 ; number of bytes
call Divide
- ld bc, wPartyMon1HP - wPartyMon1MaxHP
+ ld bc, MON_HP - MON_MAXHP
add hl, bc
ld a, [hld]
ld b, a
@@ -357,7 +357,7 @@ StartMenu_Item::
ld a, [wCurItem]
cp BICYCLE
jp z, .useOrTossItem
-.notBicycle1
+; not Bicycle
ld a, USE_TOSS_MENU_TEMPLATE
ld [wTextBoxID], a
call DisplayTextBoxID
@@ -387,14 +387,14 @@ StartMenu_Item::
call CopyToStringBuffer
ld a, [wCurItem]
cp BICYCLE
- jr nz, .notBicycle2
+ jr nz, .notBicycle
ld a, [wStatusFlags6]
bit BIT_ALWAYS_ON_BIKE, a
jr z, .useItem_closeMenu
ld hl, CannotGetOffHereText
call PrintText
jp ItemMenuLoop
-.notBicycle2
+.notBicycle
ld a, [wCurrentMenuItem]
and a
jr nz, .tossItem
@@ -529,7 +529,7 @@ DrawTrainerInfo:
ld de, 13 tiles
add hl, de ; hl = colon tile pattern
ld de, vChars1 tile $56
- ld bc, 1 tiles
+ ld bc, TILE_SIZE
ld a, BANK(TextBoxGraphics)
push bc
call FarCopyData
@@ -695,13 +695,13 @@ SwitchPartyMon_ClearGfx:
dec c
jr nz, .clearMonBGLoop
pop af
- ld hl, wShadowOAM
- ld bc, $10
+ ld hl, wShadowOAMSprite00YCoord
+ ld bc, OBJ_SIZE * 4
call AddNTimes
- ld de, $4
+ ld de, OBJ_SIZE
ld c, e
.clearMonOAMLoop
- ld [hl], $a0
+ ld [hl], SCREEN_HEIGHT_PX + OAM_Y_OFS
add hl, de
dec c
jr nz, .clearMonOAMLoop
@@ -761,24 +761,24 @@ SwitchPartyMon_InitVarOrSwapData:
ldh a, [hSwapTemp]
ld [de], a
ld hl, wPartyMons
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wCurrentMenuItem]
call AddNTimes
push hl
ld de, wSwitchPartyMonTempBuffer
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call CopyData
ld hl, wPartyMons
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wMenuItemToSwap]
call AddNTimes
pop de
push hl
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call CopyData
pop de
ld hl, wSwitchPartyMonTempBuffer
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call CopyData
ld hl, wPartyMonOT
ld a, [wCurrentMenuItem]
diff --git a/engine/menus/swap_items.asm b/engine/menus/swap_items.asm
index 2d506ce2..dc54b645 100644
--- a/engine/menus/swap_items.asm
+++ b/engine/menus/swap_items.asm
@@ -76,7 +76,7 @@ HandleItemListSwapping::
ld a, [hli]
cp b
jr z, .swapSameItemType
-.swapDifferentItems
+; swap different items
ldh [hSwapItemID], a ; save second item ID
ld a, [hld]
ldh [hSwapItemQuantity], a ; save second item quantity
diff --git a/engine/menus/text_box.asm b/engine/menus/text_box.asm
index a9d5b4c9..d3144386 100644
--- a/engine/menus/text_box.asm
+++ b/engine/menus/text_box.asm
@@ -481,7 +481,7 @@ PokemonMenuEntries:
GetMonFieldMoves:
ld a, [wWhichPokemon]
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld d, h
ld e, l
diff --git a/engine/movie/credits.asm b/engine/movie/credits.asm
index 149f51a7..dd8050bf 100644
--- a/engine/movie/credits.asm
+++ b/engine/movie/credits.asm
@@ -38,7 +38,7 @@ HallOfFamePC:
ld [wNumCreditsMonsDisplayed], a
jp Credits
-FadeInCreditsText:
+FadeInCredits:
ld a, 1
ldh [hAutoBGTransferEnabled], a
ld hl, HoFGBPalettes
@@ -137,30 +137,33 @@ CreditsCopyTileMapToVRAM:
CreditsLoadFont:
call LoadFontTilePatterns
- ld hl, vChars1
+ ld hl, vFont
ld bc, ($80 tiles) / 2
- call ZeroMemory
+ call ShiftFontColorIndex
call LoadTextBoxTilePatterns
ld hl, vChars2 tile $60
ld bc, ($20 tiles) / 2
- call ZeroMemory
+ call ShiftFontColorIndex
ld hl, vChars2 tile $7e
- ld bc, 1 tiles
+ ld bc, TILE_SIZE
ld a, $ff ; solid black
call FillMemory
ret
-ZeroMemory:
-; zero bc bytes at hl
+ShiftFontColorIndex:
+; Zero every second byte at hl, writing a total of bc bytes.
+; When used on VRAM font characters that contain only black and white shades,
+; it shifts the color index: black -> light gray, allowing palette-controlled
+; text fade-in during the Credits roll, while the black bars remain solid.
ld [hl], 0
inc hl
inc hl
dec bc
ld a, b
or c
- jr nz, ZeroMemory
+ jr nz, ShiftFontColorIndex
ret
FillFourRowsWithBlack:
@@ -243,7 +246,7 @@ Credits: ; Roll credits
.fadeInTextAndShowMon
- call FadeInCreditsText
+ call FadeInCredits
ld c, 102
jr .next1
@@ -255,7 +258,7 @@ Credits: ; Roll credits
jr .nextCreditsScreen
.fadeInText
- call FadeInCreditsText
+ call FadeInCredits
ld c, 132
jr .next2
@@ -275,7 +278,7 @@ ShowTheEndGFX:
call FillMiddleOfScreenWithWhite
ld de, TheEndGfx
ld hl, vChars2 tile $60
- lb bc, BANK(TheEndGfx), (TheEndGfxEnd - TheEndGfx) / $10
+ lb bc, BANK(TheEndGfx), (TheEndGfxEnd - TheEndGfx) / TILE_SIZE
call CopyVideoData
hlcoord 4, 8
ld de, TheEndTextString
@@ -283,7 +286,7 @@ ShowTheEndGFX:
hlcoord 4, 9
inc de
call PlaceString
- jp FadeInCreditsText
+ jp FadeInCredits
TheEndTextString:
; "T H E E N D"
diff --git a/engine/movie/evolution.asm b/engine/movie/evolution.asm
index 9d24c0d5..d3b91b4f 100644
--- a/engine/movie/evolution.asm
+++ b/engine/movie/evolution.asm
@@ -28,7 +28,7 @@ EvolveMon:
call Evolution_LoadPic
ld de, vFrontPic
ld hl, vBackPic
- ld bc, 7 * 7
+ ld bc, PIC_SIZE
call CopyVideoData
ld a, [wEvoOldSpecies]
ld [wCurPartySpecies], a
diff --git a/engine/movie/hall_of_fame.asm b/engine/movie/hall_of_fame.asm
index 4afb23d3..7e0a419a 100644
--- a/engine/movie/hall_of_fame.asm
+++ b/engine/movie/hall_of_fame.asm
@@ -49,7 +49,7 @@ AnimateHallOfFame:
ld a, c
ld [wHoFPartyMonIndex], a
ld hl, wPartyMon1Level
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
ld [wHoFMonLevel], a
diff --git a/engine/movie/intro.asm b/engine/movie/intro.asm
index f018d860..1381d396 100644
--- a/engine/movie/intro.asm
+++ b/engine/movie/intro.asm
@@ -158,5 +158,5 @@ LoadPresentsGraphic: ; unreferenced
GameFreakIntro:
INCBIN "gfx/splash/gamefreak_presents.2bpp"
INCBIN "gfx/splash/gamefreak_logo.2bpp"
- ds 16, $00 ; blank tile
+ ds TILE_SIZE, $00 ; blank tile
GameFreakIntroEnd:
diff --git a/engine/movie/oak_speech/init_player_data.asm b/engine/movie/oak_speech/init_player_data.asm
index 9994be51..90fb8f0e 100644
--- a/engine/movie/oak_speech/init_player_data.asm
+++ b/engine/movie/oak_speech/init_player_data.asm
@@ -50,7 +50,7 @@ DEF START_MONEY EQU $3000
ld bc, wGameProgressFlagsEnd - wGameProgressFlags
call FillMemory ; clear all game progress flags
- jp InitializeMissableObjectsFlags
+ jp InitializeToggleableObjectsFlags
InitializeEmptyList:
xor a ; count
diff --git a/engine/movie/oak_speech/oak_speech.asm b/engine/movie/oak_speech/oak_speech.asm
index 5cc80745..4d615126 100644
--- a/engine/movie/oak_speech/oak_speech.asm
+++ b/engine/movie/oak_speech/oak_speech.asm
@@ -125,6 +125,9 @@ OakSpeech:
ld a, SFX_SHRINK
call PlaySound
pop af
+; bug: switching ROM Bank should not happen outside of Home Bank
+; This code does nothing, as PlaySound does all necessary Bank switch
+; It looks like a leftover from an early development stage
call BankswitchCommon
ld c, 4
call DelayFrames
@@ -151,6 +154,7 @@ OakSpeech:
ld [wAudioFadeOutControl], a
call StopAllMusic
pop af
+; bug: switching ROM Bank should not happen outside of Home Bank
call BankswitchCommon
ld c, 20
call DelayFrames
@@ -163,23 +167,27 @@ OakSpeech:
ld c, 50
call DelayFrames
call GBFadeOutToWhite
- call ClearScreen ; rip more tail-end optimizations
+ call ClearScreen
ret
OakSpeechText1:
text_far _OakSpeechText1
text_end
+
OakSpeechText2:
text_far _OakSpeechText2A
sound_cry_pikachu
text_far _OakSpeechText2B
text_end
+
IntroducePlayerText:
text_far _IntroducePlayerText
text_end
+
IntroduceRivalText:
text_far _IntroduceRivalText
text_end
+
OakSpeechText3:
text_far _OakSpeechText3
text_end
diff --git a/engine/movie/oak_speech/oak_speech2.asm b/engine/movie/oak_speech/oak_speech2.asm
index cedc8be7..9beb4945 100644
--- a/engine/movie/oak_speech/oak_speech2.asm
+++ b/engine/movie/oak_speech/oak_speech2.asm
@@ -187,7 +187,7 @@ DisplayIntroNameTextBox:
.namestring
db "NAME@"
-INCLUDE "data/player_names.asm"
+INCLUDE "data/player/names.asm"
GetDefaultName:
; a = name index
@@ -213,7 +213,7 @@ GetDefaultName:
ld bc, NAME_BUFFER_LENGTH
jp CopyData
-INCLUDE "data/player_names_list.asm"
+INCLUDE "data/player/names_list.asm"
LinkMenuEmptyText:
text_end
diff --git a/engine/movie/splash.asm b/engine/movie/splash.asm
index 5b837591..8ac0c26e 100644
--- a/engine/movie/splash.asm
+++ b/engine/movie/splash.asm
@@ -15,7 +15,7 @@ LoadShootingStarGraphics:
call CopyVideoData
ld de, FallingStar
ld hl, vChars1 tile $22
- lb bc, BANK(FallingStar), (FallingStarEnd - FallingStar) / $10
+ lb bc, BANK(FallingStar), (FallingStarEnd - FallingStar) / TILE_SIZE
call CopyVideoData
ld hl, GameFreakLogoOAMData
ld de, wShadowOAMSprite24
@@ -62,11 +62,11 @@ AnimateShootingStar:
jr nz, .bigStarLoop
; Clear big star OAM.
- ld hl, wShadowOAM
+ ld hl, wShadowOAMSprite00YCoord
ld c, 4
- ld de, 4
+ ld de, OBJ_SIZE
.clearOAMLoop
- ld [hl], 160
+ ld [hl], SCREEN_HEIGHT_PX + OAM_Y_OFS
add hl, de
dec c
jr nz, .clearOAMLoop
@@ -145,7 +145,7 @@ AnimateShootingStar:
; shift the existing OAM entries down to make room for the next wave
ld hl, wShadowOAMSprite04
ld de, wShadowOAM
- ld bc, $50
+ ld bc, OBJ_SIZE * 20
call CopyData
pop af
diff --git a/engine/movie/title.asm b/engine/movie/title.asm
index 0e9b651e..4ff22800 100644
--- a/engine/movie/title.asm
+++ b/engine/movie/title.asm
@@ -253,7 +253,7 @@ LoadCopyrightAndTextBoxTiles:
LoadCopyrightTiles:
ld de, NintendoCopyrightLogoGraphics
ld hl, vChars2 tile $60
- lb bc, BANK(NintendoCopyrightLogoGraphics), (TextBoxGraphics + $10 - NintendoCopyrightLogoGraphics) / $10 ; bug: overflows into text box graphics and copies the "A" tile
+ lb bc, BANK(NintendoCopyrightLogoGraphics), (TextBoxGraphics + $10 - NintendoCopyrightLogoGraphics) / TILE_SIZE ; bug: overflows into text box graphics and copies the "A" tile
call CopyVideoData
hlcoord 2, 7
ld de, CopyrightTextString
diff --git a/engine/movie/trade.asm b/engine/movie/trade.asm
index 1af97969..f0c813bc 100644
--- a/engine/movie/trade.asm
+++ b/engine/movie/trade.asm
@@ -319,7 +319,7 @@ Trade_AnimateBallEnteringLinkCable:
ld [wLinkCableAnimBulgeToggle], a
add $7e
ld hl, wShadowOAMSprite00TileID
- ld de, 4
+ ld de, OBJ_SIZE
ld c, e
.cycleLinkCableBulgeTile
ld [hl], a
@@ -606,7 +606,7 @@ Trade_AnimCircledMon:
ldh [rBGP], a
call UpdateCGBPal_BGP
ld hl, wShadowOAMSprite00TileID
- ld de, $4
+ ld de, OBJ_SIZE
ld c, $14
.loop
ld a, [hl]
diff --git a/engine/overworld/advance_player_sprite.asm b/engine/overworld/advance_player_sprite.asm
index 4ebdac84..314883dd 100644
--- a/engine/overworld/advance_player_sprite.asm
+++ b/engine/overworld/advance_player_sprite.asm
@@ -3,7 +3,7 @@ _AdvancePlayerSprite::
ld b, a
ld a, [wSpritePlayerStateData1XStepVector]
ld c, a
- ld hl, wWalkCounter ; walking animation counter
+ ld hl, wWalkCounter
dec [hl]
jr nz, .afterUpdateMapCoords
; if it's the end of the animation, update the player's map coordinates
@@ -16,7 +16,7 @@ _AdvancePlayerSprite::
add c
ld [wXCoord], a
.afterUpdateMapCoords
- ld a, [wWalkCounter] ; walking animation counter
+ ld a, [wWalkCounter]
cp $07
jp nz, .scrollBackgroundAndSprites
; if this is the first iteration of the animation
diff --git a/engine/overworld/auto_movement.asm b/engine/overworld/auto_movement.asm
index cdc7e28a..2266e866 100644
--- a/engine/overworld/auto_movement.asm
+++ b/engine/overworld/auto_movement.asm
@@ -1,6 +1,6 @@
PlayerStepOutFromDoor::
- ld hl, wStatusFlags5 ; should this be wMovementFlags?
- res BIT_EXITING_DOOR, [hl]
+ ld hl, wStatusFlags5
+ res BIT_UNKNOWN_5_1, [hl]
call IsPlayerStandingOnDoorTile
jr nc, .notStandingOnDoor
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
@@ -153,8 +153,8 @@ PalletMovementScript_Done:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
- ld a, HS_PALLET_TOWN_OAK
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_PALLET_TOWN_OAK
+ ld [wToggleableObjectIndex], a
predef HideObject
ld hl, wStatusFlags5
res BIT_SCRIPTED_MOVEMENT_STATE, [hl]
diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm
index 1b5b85bd..dea23cc5 100644
--- a/engine/overworld/cut.asm
+++ b/engine/overworld/cut.asm
@@ -101,13 +101,13 @@ InitCutAnimOAM:
call LoadCutGrassAnimationTilePattern
call WriteCutOrBoulderDustAnimationOAMBlock
ld hl, wShadowOAMSprite36Attributes
- ld de, 4
- ld a, $30
+ ld de, OBJ_SIZE
+ ld a, OAM_XFLIP | OAM_PAL1
ld c, e
.loop
ld [hl], a
add hl, de
- xor $60
+ xor OAM_YFLIP | OAM_XFLIP
dec c
jr nz, .loop
ret
diff --git a/engine/overworld/cut2.asm b/engine/overworld/cut2.asm
index a6effff5..9d6124e4 100644
--- a/engine/overworld/cut2.asm
+++ b/engine/overworld/cut2.asm
@@ -79,13 +79,13 @@ AnimCutGrass_UpdateOAMEntries:
AnimCutGrass_SwapOAMEntries:
ld hl, wShadowOAMSprite36
ld de, wBuffer
- ld bc, $8
+ ld bc, 2 * OBJ_SIZE
call CopyData
ld hl, wShadowOAMSprite38
ld de, wShadowOAMSprite36
- ld bc, $8
+ ld bc, 2 * OBJ_SIZE
call CopyData
ld hl, wBuffer
ld de, wShadowOAMSprite38
- ld bc, $8
+ ld bc, 2 * OBJ_SIZE
jp CopyData
diff --git a/engine/overworld/dust_smoke.asm b/engine/overworld/dust_smoke.asm
index 669e1166..2e6576a8 100644
--- a/engine/overworld/dust_smoke.asm
+++ b/engine/overworld/dust_smoke.asm
@@ -72,7 +72,7 @@ LoadSmokeTileFourTimes::
push hl
call LoadSmokeTile
pop hl
- ld bc, 1 tiles
+ ld bc, TILE_SIZE
add hl, bc
pop bc
dec c
@@ -81,7 +81,7 @@ LoadSmokeTileFourTimes::
LoadSmokeTile:
ld de, SSAnneSmokePuffTile
- lb bc, BANK(SSAnneSmokePuffTile), (SSAnneSmokePuffTileEnd - SSAnneSmokePuffTile) / $10
+ lb bc, BANK(SSAnneSmokePuffTile), (SSAnneSmokePuffTileEnd - SSAnneSmokePuffTile) / TILE_SIZE
jp CopyVideoData
SSAnneSmokePuffTile:
diff --git a/engine/overworld/hidden_objects.asm b/engine/overworld/hidden_events.asm
index 84108986..b7c803e5 100644
--- a/engine/overworld/hidden_objects.asm
+++ b/engine/overworld/hidden_events.asm
@@ -1,12 +1,12 @@
-; if a hidden object was found, stores $00 in [hDidntFindAnyHiddenObject], else stores $ff
-CheckForHiddenObject::
+; if a hidden event was found, stores $00 in [hDidntFindAnyHiddenEvent], else stores $ff
+CheckForHiddenEvent::
ld hl, hItemAlreadyFound
xor a
ld [hli], a ; [hItemAlreadyFound]
ld [hli], a ; [hSavedMapTextPtr]
ld [hli], a ; [hSavedMapTextPtr + 1]
- ld [hl], a ; [hDidntFindAnyHiddenObject]
- ld hl, HiddenObjectMaps
+ ld [hl], a ; [hDidntFindAnyHiddenEvent]
+ ld hl, HiddenEventMaps
ld de, 3
ld a, [wCurMap]
call IsInArray
@@ -16,46 +16,46 @@ CheckForHiddenObject::
ld h, [hl]
ld l, a
push hl
- ld hl, wHiddenObjectFunctionArgument
+ ld hl, wHiddenEventFunctionArgument
xor a
ld [hli], a
ld [hli], a
ld [hl], a
pop hl
-.hiddenObjectLoop
+.hiddenEventLoop
ld a, [hli]
cp $ff
jr z, .noMatch
- ld [wHiddenObjectY], a
+ ld [wHiddenEventY], a
ld b, a
ld a, [hli]
- ld [wHiddenObjectX], a
+ ld [wHiddenEventX], a
ld c, a
call CheckIfCoordsInFrontOfPlayerMatch
ldh a, [hCoordsInFrontOfPlayerMatch]
and a
- jr z, .foundMatchingObject
+ jr z, .foundMatchingEvent
inc hl
inc hl
inc hl
inc hl
push hl
- ld hl, wHiddenObjectIndex
+ ld hl, wHiddenEventIndex
inc [hl]
pop hl
- jr .hiddenObjectLoop
-.foundMatchingObject
+ jr .hiddenEventLoop
+.foundMatchingEvent
ld a, [hli]
- ld [wHiddenObjectFunctionArgument], a
+ ld [wHiddenEventFunctionArgument], a
ld a, [hli]
- ld [wHiddenObjectFunctionRomBank], a
+ ld [wHiddenEventFunctionRomBank], a
ld a, [hli]
ld h, [hl]
ld l, a
ret
.noMatch
ld a, $ff
- ldh [hDidntFindAnyHiddenObject], a
+ ldh [hDidntFindAnyHiddenEvent], a
ret
; checks if the coordinates in front of the player's sprite match Y in b and X in c
@@ -104,4 +104,4 @@ CheckIfCoordsInFrontOfPlayerMatch:
ldh [hCoordsInFrontOfPlayerMatch], a
ret
-INCLUDE "data/events/hidden_objects.asm"
+INCLUDE "data/events/hidden_events.asm"
diff --git a/engine/overworld/ledges.asm b/engine/overworld/ledges.asm
index 9f8de983..5cb2d5fc 100644
--- a/engine/overworld/ledges.asm
+++ b/engine/overworld/ledges.asm
@@ -59,7 +59,7 @@ INCLUDE "data/tilesets/ledge_tiles.asm"
LoadHoppingShadowOAM:
ld hl, vChars1 tile $7f
ld de, LedgeHoppingShadow
- lb bc, BANK(LedgeHoppingShadow), (LedgeHoppingShadowEnd - LedgeHoppingShadow) / $8
+ lb bc, BANK(LedgeHoppingShadow), (LedgeHoppingShadowEnd - LedgeHoppingShadow) / TILE_1BPP_SIZE
call CopyVideoDataDouble
ld hl, LedgeHoppingShadowOAM
ld de, wShadowOAMSprite36
diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm
index fbe8e5df..165208eb 100644
--- a/engine/overworld/movement.asm
+++ b/engine/overworld/movement.asm
@@ -125,7 +125,7 @@ UpdateNPCSprite:
ld b, a
ld a, [wFontLoaded]
bit BIT_FONT_LOADED, a
- jp nz, notYetMoving
+ jp nz, NotYetMoving
ld a, b
cp $2
jp z, UpdateSpriteMovementDelay ; [x#SPRITESTATEDATA1_MOVEMENTSTATUS] == 2
@@ -347,14 +347,15 @@ UpdateSpriteMovementDelay:
jr .moving
.tickMoveCounter
dec [hl] ; x#SPRITESTATEDATA2_MOVEMENTDELAY
- jr nz, notYetMoving
+ jr nz, NotYetMoving
.moving
dec h
ldh a, [hCurrentSpriteOffset]
inc a
ld l, a
ld [hl], $1 ; [x#SPRITESTATEDATA1_MOVEMENTSTATUS] = 1 (mark as ready to move)
-notYetMoving:
+ ; fallthrough
+NotYetMoving:
ld h, HIGH(wSpriteStateData1)
ldh a, [hCurrentSpriteOffset]
add SPRITESTATEDATA1_ANIMFRAMECOUNTER
@@ -369,7 +370,7 @@ MakeNPCFacePlayer:
; disabled. This is only done when rubbing the S.S. Anne captain's back.
ld a, [wStatusFlags3]
bit BIT_NO_NPC_FACE_PLAYER, a
- jr nz, notYetMoving
+ jr nz, NotYetMoving
res BIT_FACE_PLAYER, [hl]
ld a, [wPlayerDirection]
bit PLAYER_DIR_BIT_UP, a
@@ -393,7 +394,7 @@ MakeNPCFacePlayer:
add $9
ld l, a
ld [hl], c ; [x#SPRITESTATEDATA1_FACINGDIRECTION]: set facing direction
- jr notYetMoving
+ jr NotYetMoving
InitializeSpriteStatus:
ld [hl], $1 ; [x#SPRITESTATEDATA1_MOVEMENTSTATUS] = ready
@@ -448,7 +449,7 @@ Func_5033:
; tests if sprite is off screen or otherwise unable to do anything
CheckSpriteAvailability:
predef IsObjectHidden
- ldh a, [hIsHiddenMissableObject]
+ ldh a, [hIsToggleableObjectOff]
and a
jp nz, .spriteInvisible
ld h, HIGH(wSpriteStateData2)
diff --git a/engine/overworld/pathfinding.asm b/engine/overworld/pathfinding.asm
index 878ca07d..d6e0d009 100644
--- a/engine/overworld/pathfinding.asm
+++ b/engine/overworld/pathfinding.asm
@@ -94,7 +94,7 @@ CalcPositionOfPlayerRelativeToNPC:
ld a, [hli] ; NPC sprite screen Y position in pixels
call CalcDifference
jr nc, .NPCSouthOfOrAlignedWithPlayer
-.NPCNorthOfPlayer
+; NPC north of player
push hl
ld hl, hNPCPlayerRelativePosFlags
bit BIT_PLAYER_LOWER_Y, [hl]
@@ -122,7 +122,7 @@ CalcPositionOfPlayerRelativeToNPC:
ld a, [hl] ; NPC sprite screen X position in pixels
call CalcDifference
jr nc, .NPCEastOfOrAlignedWithPlayer
-.NPCWestOfPlayer
+; NPC west of player
push hl
ld hl, hNPCPlayerRelativePosFlags
bit BIT_PLAYER_LOWER_X, [hl]
diff --git a/engine/overworld/player_animations.asm b/engine/overworld/player_animations.asm
index b63b12cc..1948f68d 100644
--- a/engine/overworld/player_animations.asm
+++ b/engine/overworld/player_animations.asm
@@ -213,13 +213,13 @@ LeaveMapThroughHoleAnim:
ld [wShadowOAMSprite02TileID], a
ld a, [wShadowOAMSprite01TileID]
ld [wShadowOAMSprite03TileID], a
- ld a, $a0
+ ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS
ld [wShadowOAMSprite00YCoord], a
ld [wShadowOAMSprite01YCoord], a
ld c, 2
call DelayFrames
; hide upper half of player's sprite
- ld a, $a0
+ ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS
ld [wShadowOAMSprite02YCoord], a
ld [wShadowOAMSprite03YCoord], a
call GBFadeOutToWhite
@@ -270,7 +270,7 @@ InitFacingDirectionList:
ld [wSavedPlayerScreenY], a
ld hl, PlayerSpinningFacingOrder
ld de, wFacingDirectionList
- ld bc, 4
+ ld bc, OBJ_SIZE
call CopyData
ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
ld hl, wFacingDirectionList
@@ -294,7 +294,7 @@ SpinPlayerSprite:
push hl
ld hl, wFacingDirectionList
ld de, wFacingDirectionList - 1
- ld bc, 4
+ ld bc, OBJ_SIZE
call CopyData
ld a, [wFacingDirectionList - 1]
ld [wFacingDirectionList + 3], a
@@ -400,7 +400,7 @@ FishingAnim:
ld hl, FishingRodOAM
add hl, bc
ld de, wShadowOAMSprite39
- ld bc, $4
+ ld bc, OBJ_SIZE
call CopyData
ld c, 100
call DelayFrames
@@ -430,7 +430,7 @@ FishingAnim:
ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
cp SPRITE_FACING_UP
jr nz, .skipHidingFishingRod
- ld a, $a0
+ ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS
ld [wShadowOAMSprite39YCoord], a
.skipHidingFishingRod
diff --git a/engine/overworld/push_boulder.asm b/engine/overworld/push_boulder.asm
index 2328b07a..5e7393d2 100644
--- a/engine/overworld/push_boulder.asm
+++ b/engine/overworld/push_boulder.asm
@@ -43,7 +43,7 @@ TryPushingBoulder::
jr z, .pushBoulderLeft
cp SPRITE_FACING_RIGHT
jr z, .pushBoulderRight
-.pushBoulderDown
+; push boulder down
bit B_PAD_DOWN, b
ret z
ld de, PushBoulderDownMovementData
diff --git a/engine/overworld/missable_objects.asm b/engine/overworld/toggleable_objects.asm
index bcaa731b..a97f2bd2 100644
--- a/engine/overworld/missable_objects.asm
+++ b/engine/overworld/toggleable_objects.asm
@@ -1,4 +1,4 @@
-MarkTownVisitedAndLoadMissableObjects::
+MarkTownVisitedAndLoadToggleableObjects::
ld a, [wCurMap]
cp FIRST_ROUTE_MAP
jr nc, .notInTown
@@ -7,22 +7,23 @@ MarkTownVisitedAndLoadMissableObjects::
ld hl, wTownVisitedFlag ; mark town as visited (for flying)
predef FlagActionPredef
.notInTown
- ld hl, MapHSPointers
+ ld hl, ToggleableObjectMapPointers
ld a, [wCurMap]
ld b, $0
ld c, a
add hl, bc
add hl, bc
- ld a, [hli] ; load missable objects pointer in hl
+ ld a, [hli] ; load toggleable objects pointer in hl
ld h, [hl]
ld l, a
push hl
ld a, l
- sub LOW(MissableObjects) ; calculate difference between out pointer and the base pointer
+ sub LOW(ToggleableObjectStates) ; calculate difference between out pointer and the base pointer
ld l, a
ld a, h
- sbc HIGH(MissableObjects)
+ sbc HIGH(ToggleableObjectStates)
ld h, a
+ ; divide difference by 3, resulting in the global offset (number of toggleable items before ours)
ld a, h
ldh [hDividend], a
ld a, l
@@ -33,14 +34,14 @@ MarkTownVisitedAndLoadMissableObjects::
ld a, $3
ldh [hDivisor], a
ld b, $2
- call Divide ; divide difference by 3, resulting in the global offset (number of missable items before ours)
+ call Divide
ld a, [wCurMap]
ld b, a
ldh a, [hDividend+3]
ld c, a ; store global offset in c
- ld de, wMissableObjectList
+ ld de, wToggleableObjectList
pop hl
-.writeMissableObjectsListLoop
+.writeToggleableObjectsListLoop
ld a, [hli]
cp -1
jr z, .done ; end of list
@@ -52,92 +53,92 @@ MarkTownVisitedAndLoadMissableObjects::
inc de
ld a, c
inc c
- ld [de], a ; write (global) missable object index
+ ld [de], a ; write (global) toggleable object index
inc de
- jr .writeMissableObjectsListLoop
+ jr .writeToggleableObjectsListLoop
.done
ld a, -1
ld [de], a ; write sentinel
ret
-InitializeMissableObjectsFlags:
- ld hl, wMissableObjectFlags
- ld bc, wMissableObjectFlagsEnd - wMissableObjectFlags
+InitializeToggleableObjectsFlags:
+ ld hl, wToggleableObjectFlags
+ ld bc, wToggleableObjectFlagsEnd - wToggleableObjectFlags
xor a
- call FillMemory ; clear missable objects flags
- ld hl, MissableObjects
+ call FillMemory ; clear toggleable objects flags
+ ld hl, ToggleableObjectStates
xor a
- ld [wMissableObjectCounter], a
-.missableObjectsLoop
+ ld [wToggleableObjectCounter], a
+.toggleableObjectsLoop
ld a, [hli]
- cp -1 ; end of list
+ cp -1 ; end of list
ret z
push hl
inc hl
ld a, [hl]
- cp HIDE
+ cp OFF
jr nz, .skip
- ld hl, wMissableObjectFlags
- ld a, [wMissableObjectCounter]
+ ld hl, wToggleableObjectFlags
+ ld a, [wToggleableObjectCounter]
ld c, a
ld b, FLAG_SET
- call MissableObjectFlagAction ; set flag if Item is hidden
+ call ToggleableObjectFlagAction ; set flag if object is toggled off
.skip
- ld hl, wMissableObjectCounter
+ ld hl, wToggleableObjectCounter
inc [hl]
pop hl
inc hl
inc hl
- jr .missableObjectsLoop
+ jr .toggleableObjectsLoop
-; tests if current sprite is a missable object that is hidden/has been removed
+; tests if current object is toggled off/has been hidden
IsObjectHidden:
ldh a, [hCurrentSpriteOffset]
swap a
ld b, a
- ld hl, wMissableObjectList
+ ld hl, wToggleableObjectList
.loop
ld a, [hli]
cp -1
- jr z, .notHidden ; not missable -> not hidden
+ jr z, .notHidden ; not toggleable -> not hidden
cp b
ld a, [hli]
jr nz, .loop
ld c, a
ld b, FLAG_TEST
- ld hl, wMissableObjectFlags
- call MissableObjectFlagAction
+ ld hl, wToggleableObjectFlags
+ call ToggleableObjectFlagAction
ld a, c
and a
jr nz, .hidden
.notHidden
xor a
.hidden
- ldh [hIsHiddenMissableObject], a
+ ldh [hIsToggleableObjectOff], a
ret
-; adds missable object (items, leg. pokemon, etc.) to the map
-; [wMissableObjectIndex]: index of the missable object to be added (global index)
+; adds toggleable object (items, leg. pokemon, etc.) to the map
+; [wToggleableObjectIndex]: index of the toggleable object to be added (global index)
ShowObject:
ShowObject2:
- ld hl, wMissableObjectFlags
- ld a, [wMissableObjectIndex]
+ ld hl, wToggleableObjectFlags
+ ld a, [wToggleableObjectIndex]
ld c, a
ld b, FLAG_RESET
- call MissableObjectFlagAction ; reset "removed" flag
+ call ToggleableObjectFlagAction ; reset "removed" flag
jp UpdateSprites
-; removes missable object (items, leg. pokemon, etc.) from the map
-; [wMissableObjectIndex]: index of the missable object to be removed (global index)
+; removes toggleable object (items, leg. pokemon, etc.) from the map
+; [wToggleableObjectIndex]: index of the toggleable object to be removed (global index)
HideObject:
- ld hl, wMissableObjectFlags
- ld a, [wMissableObjectIndex]
+ ld hl, wToggleableObjectFlags
+ ld a, [wToggleableObjectIndex]
ld c, a
ld b, FLAG_SET
- call MissableObjectFlagAction ; set "removed" flag
+ call ToggleableObjectFlagAction ; set "removed" flag
jp UpdateSprites
-MissableObjectFlagAction:
+ToggleableObjectFlagAction:
; identical to FlagAction
push hl
@@ -174,10 +175,10 @@ MissableObjectFlagAction:
ld a, b
and a
jr z, .reset
- cp 2
+ cp FLAG_TEST
jr z, .read
-.set
+; set
ld a, [hl]
ld b, a
ld a, d
diff --git a/engine/overworld/unused_load_missable_object_data.asm b/engine/overworld/unused_load_toggleable_object_data.asm
index 8a519350..cf53f80a 100644
--- a/engine/overworld/unused_load_missable_object_data.asm
+++ b/engine/overworld/unused_load_toggleable_object_data.asm
@@ -1,9 +1,9 @@
Func_f0a54: ; unreferenced
ret
-LoadMissableObjectData::
+LoadToggleableObjectData::
; farcalled by an unreferenced function
- ld hl, .MissableObjectsMaps
+ ld hl, .ToggleableObjectsMaps
.loop
ld a, [hli]
cp -1
@@ -24,23 +24,23 @@ LoadMissableObjectData::
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, wMissableObjectList
+ ld de, wToggleableObjectList
call CopyData
ret
-MACRO missable_object_map
+MACRO toggleable_object_map
db \1
db \3 - \2
dw \2
ENDM
-.MissableObjectsMaps:
- missable_object_map BLUES_HOUSE, .BluesHouse, .BluesHouseEnd
+.ToggleableObjectsMaps:
+ toggleable_object_map BLUES_HOUSE, .BluesHouse, .BluesHouseEnd
db -1 ; end
.BluesHouse:
- db 1, HS_DAISY_SITTING_COPY
- db 2, HS_DAISY_WALKING_COPY
- db 3, HS_TOWN_MAP_COPY
+ db 1, TOGGLE_DAISY_SITTING_COPY
+ db 2, TOGGLE_DAISY_WALKING_COPY
+ db 3, TOGGLE_TOWN_MAP_COPY
db -1 ; end
.BluesHouseEnd:
diff --git a/engine/pokemon/add_mon.asm b/engine/pokemon/add_mon.asm
index a0b1ef0a..24d360b2 100644
--- a/engine/pokemon/add_mon.asm
+++ b/engine/pokemon/add_mon.asm
@@ -59,7 +59,7 @@ _AddPartyMon::
.next3
ldh a, [hNewPartyLength]
dec a
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld e, l
ld d, h
@@ -117,12 +117,12 @@ _AddPartyMon::
.next4
push bc
- ld bc, wPartyMon1DVs - wPartyMon1
+ ld bc, MON_DVS
add hl, bc
pop bc
ld [hli], a
ld [hl], b ; write IVs
- ld bc, (wPartyMon1HPExp - 1) - (wPartyMon1DVs + 1)
+ ld bc, (MON_HP_EXP - 1) - (MON_DVS + 1)
add hl, bc
ld a, 1
ld c, a
@@ -142,7 +142,7 @@ _AddPartyMon::
inc de
jr .copyMonTypesAndMoves
.copyEnemyMonData
- ld bc, wEnemyMon1DVs - wEnemyMon1
+ ld bc, MON_DVS
add hl, bc
ld a, [wEnemyMonDVs] ; copy IVs from cur enemy mon
ld [hli], a
@@ -237,13 +237,13 @@ _AddPartyMon::
dec a
jr nz, .calcFreshStats
ld hl, wEnemyMonMaxHP
- ld bc, $a
+ ld bc, NUM_STATS * 2
call CopyData ; copy stats of cur enemy mon
pop hl
jr .done
.calcFreshStats
pop hl
- ld bc, wPartyMon1HPExp - 1 - wPartyMon1
+ ld bc, MON_HP_EXP - 1
add hl, bc
ld b, $0
call CalcStats ; calculate fresh set of stats
@@ -300,7 +300,7 @@ _AddEnemyMonToPlayerParty::
ld hl, wPartyMons
ld a, [wPartyCount]
dec a
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld e, l
ld d, h
@@ -381,16 +381,16 @@ _MoveMon::
.copySpecies
ld [hli], a ; write new mon ID
ld [hl], $ff ; write new sentinel
-.findMonDataDest
+; find mon data dest
ld a, [wMoveMonType]
dec a
ld hl, wPartyMons
- ld bc, wPartyMon2 - wPartyMon1 ; $2c
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wPartyCount]
jr nz, .addMonOffset
; if it's PARTY_TO_BOX
ld hl, wBoxMons
- ld bc, wBoxMon2 - wBoxMon1 ; $21
+ ld bc, BOXMON_STRUCT_LENGTH
ld a, [wBoxCount]
.addMonOffset
dec a
@@ -402,20 +402,20 @@ _MoveMon::
ld a, [wMoveMonType]
and a
ld hl, wBoxMons
- ld bc, wBoxMon2 - wBoxMon1 ; $21
+ ld bc, BOXMON_STRUCT_LENGTH
jr z, .addMonOffset2
cp DAYCARE_TO_PARTY
ld hl, wDayCareMon
jr z, .copyMonData
ld hl, wPartyMons
- ld bc, wPartyMon2 - wPartyMon1 ; $2c
+ ld bc, PARTYMON_STRUCT_LENGTH
.addMonOffset2
ld a, [wWhichPokemon]
call AddNTimes
.copyMonData
push hl
push de
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
call CopyData
pop de
pop hl
@@ -424,7 +424,7 @@ _MoveMon::
jr z, .findOTdest
cp DAYCARE_TO_PARTY
jr z, .findOTdest
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
ld a, [hl] ; hl = Level
inc de
@@ -463,7 +463,7 @@ _MoveMon::
ld bc, NAME_LENGTH
call CopyData
ld a, [wMoveMonType]
-.findNickDest
+; find nick dest
cp PARTY_TO_DAYCARE
ld de, wDayCareMonName
jr z, .findNickSrc
@@ -499,6 +499,7 @@ _MoveMon::
jr z, .done
cp PARTY_TO_DAYCARE
jr z, .done
+ ; returning mon to party, compute level and stats
push hl
srl a
add $2
@@ -508,13 +509,13 @@ _MoveMon::
ld a, d
ld [wCurEnemyLevel], a
pop hl
- ld bc, wBoxMon2 - wBoxMon1
- add hl, bc
+ ld bc, BOXMON_STRUCT_LENGTH
+ add hl, bc ; hl = wPartyMon*Level
ld [hli], a
ld d, h
ld e, l
- ld bc, -18
- add hl, bc
+ ld bc, (MON_HP_EXP - 1) - MON_STATS
+ add hl, bc ; hl = wPartyMon*HPExp - 1
ld b, $1
call CalcStats
.done
diff --git a/engine/pokemon/bills_pc.asm b/engine/pokemon/bills_pc.asm
index e82b41b0..c8f24560 100644
--- a/engine/pokemon/bills_pc.asm
+++ b/engine/pokemon/bills_pc.asm
@@ -393,11 +393,11 @@ BoxNoPCText:
KnowsHMMove::
; returns whether mon with party index [wWhichPokemon] knows an HM move
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
jr .next
; unreachable
ld hl, wBoxMon1Moves
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
.next
ld a, [wWhichPokemon]
call AddNTimes
diff --git a/engine/pokemon/evos_moves.asm b/engine/pokemon/evos_moves.asm
index 1f0d265f..f4d5039a 100644
--- a/engine/pokemon/evos_moves.asm
+++ b/engine/pokemon/evos_moves.asm
@@ -179,13 +179,13 @@ Evolution_PartyMonLoop: ; loop over party mons
call CalcStats
ld a, [wWhichPokemon]
ld hl, wPartyMon1
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld e, l
ld d, h
push hl
push bc
- ld bc, wPartyMon1MaxHP - wPartyMon1
+ ld bc, MON_MAXHP
add hl, bc
ld a, [hli]
ld b, a
@@ -345,7 +345,7 @@ LearnMoveFromLevelUp:
; If it is not 0, this function will not work properly.
ld hl, wPartyMon1Moves
ld a, [wWhichPokemon]
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
.next
ld b, NUM_MOVES
@@ -559,7 +559,7 @@ WriteMonMoves:
; shift PP as well if learning moves from day care
push de
- ld bc, wPartyMon1PP - (wPartyMon1Moves + 3)
+ ld bc, MON_PP - (MON_MOVES + 3)
add hl, bc
ld d, h
ld e, l
@@ -578,7 +578,7 @@ WriteMonMoves:
; write move PP value if learning moves from day care
push hl
ld a, [hl]
- ld hl, wPartyMon1PP - wPartyMon1Moves
+ ld hl, MON_PP - MON_MOVES
add hl, de
push hl
dec a
diff --git a/engine/pokemon/learn_move.asm b/engine/pokemon/learn_move.asm
index e40b3573..7843cc59 100644
--- a/engine/pokemon/learn_move.asm
+++ b/engine/pokemon/learn_move.asm
@@ -10,7 +10,7 @@ LearnMove:
DontAbandonLearning:
ld hl, wPartyMon1Moves
- ld bc, wPartyMon2Moves - wPartyMon1Moves
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wWhichPokemon]
call AddNTimes
ld d, h
@@ -38,7 +38,7 @@ DontAbandonLearning:
.next
ld a, [wMoveNum]
ld [hl], a
- ld bc, wPartyMon1PP - wPartyMon1Moves
+ ld bc, MON_PP - MON_MOVES
add hl, bc
push hl
push de
@@ -66,7 +66,7 @@ DontAbandonLearning:
ld de, wBattleMonMoves
ld bc, NUM_MOVES
call CopyData
- ld bc, wPartyMon1PP - wPartyMon1OTID
+ ld bc, MON_PP - MON_OTID
add hl, bc
ld de, wBattleMonPP
ld bc, NUM_MOVES
diff --git a/engine/pokemon/load_mon_data.asm b/engine/pokemon/load_mon_data.asm
index 964db2e4..e46dc2db 100644
--- a/engine/pokemon/load_mon_data.asm
+++ b/engine/pokemon/load_mon_data.asm
@@ -23,7 +23,7 @@ LoadMonData_::
call GetMonHeader
ld hl, wPartyMons
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wMonDataLocation]
cp ENEMY_PARTY_DATA
jr c, .getMonEntry
@@ -31,9 +31,9 @@ LoadMonData_::
ld hl, wEnemyMons
jr z, .getMonEntry
- cp 2
+ cp BOX_DATA
ld hl, wBoxMons
- ld bc, wBoxMon2 - wBoxMon1
+ ld bc, BOXMON_STRUCT_LENGTH
jr z, .getMonEntry
ld hl, wDayCareMon
@@ -45,7 +45,7 @@ LoadMonData_::
.copyMonData
ld de, wLoadedMon
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
jp CopyData
; get species of mon e in list [wMonDataLocation] for LoadMonData
diff --git a/engine/pokemon/remove_mon.asm b/engine/pokemon/remove_mon.asm
index 60ec8c27..ee47f0c8 100644
--- a/engine/pokemon/remove_mon.asm
+++ b/engine/pokemon/remove_mon.asm
@@ -2,15 +2,16 @@ _RemovePokemon::
ld hl, wPartyCount
ld a, [wRemoveMonFromBox]
and a
- jr z, .usePartyCount
+ jr z, .gotCount
ld hl, wBoxCount
-.usePartyCount
+.gotCount
ld a, [hl]
dec a
ld [hli], a
+
ld a, [wWhichPokemon]
ld c, a
- ld b, $0
+ ld b, 0
add hl, bc
ld e, l
ld d, h
@@ -21,21 +22,27 @@ _RemovePokemon::
ld [hli], a
inc a ; reached terminator?
jr nz, .shiftMonSpeciesLoop ; if not, continue shifting species
+
ld hl, wPartyMonOT
ld d, PARTY_LENGTH - 1 ; max number of pokemon to shift
ld a, [wRemoveMonFromBox]
and a
- jr z, .usePartyMonOTs
+ jr z, .gotOTsPointer
ld hl, wBoxMonOT
ld d, MONS_PER_BOX - 1
-.usePartyMonOTs
+.gotOTsPointer
ld a, [wWhichPokemon]
call SkipFixedLengthTextEntries
ld a, [wWhichPokemon]
cp d ; are we removing the last pokemon?
jr nz, .notRemovingLastMon ; if not, shift the pokemon below
- ld [hl], $ff ; else, write the terminator and return
+
+ ; bug: to erase a string, this should be ld [hl], '@'
+ ; This is not needed, as wBoxSpecies/wPartySpecies determine if a slot is used.
+ ; Besides, existing mon nick is left untouched
+ ld [hl], $ff
ret
+
.notRemovingLastMon
ld d, h
ld e, l
@@ -44,44 +51,49 @@ _RemovePokemon::
ld bc, wPartyMonNicks
ld a, [wRemoveMonFromBox]
and a
- jr z, .usePartyMonNicks
+ jr z, .gotNicksPointer
ld bc, wBoxMonNicks
-.usePartyMonNicks
+.gotNicksPointer
call CopyDataUntil
+
ld hl, wPartyMons
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wRemoveMonFromBox]
and a
- jr z, .usePartyMonStructs
+ jr z, .gotMonStructs
ld hl, wBoxMons
- ld bc, wBoxMon2 - wBoxMon1
-.usePartyMonStructs
+ ld bc, BOXMON_STRUCT_LENGTH
+.gotMonStructs
ld a, [wWhichPokemon]
call AddNTimes ; get address of the pokemon removed
- ld d, h ; store in de for CopyDataUntil
+
+ ld d, h ; de = start address for CopyDataUntil
ld e, l
ld a, [wRemoveMonFromBox]
and a
- jr z, .copyUntilPartyMonOTs
- ld bc, wBoxMon2 - wBoxMon1
- add hl, bc ; get address of pokemon after the pokemon removed
- ld bc, wBoxMonOT ; address of when to stop copying
- jr .continue
-.copyUntilPartyMonOTs
- ld bc, wPartyMon2 - wPartyMon1
- add hl, bc ; get address of pokemon after the pokemon removed
- ld bc, wPartyMonOT ; address of when to stop copying
-.continue
- call CopyDataUntil ; shift all pokemon data after the removed mon to the removed mon's location
+ jr z, .copyUntilPartyMonOT
+; copy until wBoxMonOT
+ ld bc, BOXMON_STRUCT_LENGTH
+ add hl, bc ; get address of next slot
+ ld bc, wBoxMonOT
+ jr .shiftOTs
+.copyUntilPartyMonOT
+ ld bc, PARTYMON_STRUCT_LENGTH
+ add hl, bc ; get address of next slot
+ ld bc, wPartyMonOT
+.shiftOTs
+ call CopyDataUntil ; shift all pokemon data up one slot
+
ld hl, wPartyMonNicks
ld a, [wRemoveMonFromBox]
and a
- jr z, .usePartyMonNicks2
+ jr z, .gotNicksPointer2
ld hl, wBoxMonNicks
-.usePartyMonNicks2
+.gotNicksPointer2
ld bc, NAME_LENGTH
ld a, [wWhichPokemon]
call AddNTimes
+
ld d, h
ld e, l
ld bc, NAME_LENGTH
@@ -89,7 +101,7 @@ _RemovePokemon::
ld bc, wPartyMonNicksEnd
ld a, [wRemoveMonFromBox]
and a
- jr z, .copyUntilPartyMonNicksEnd
+ jr z, .shiftMonNicks
ld bc, wBoxMonNicksEnd
-.copyUntilPartyMonNicksEnd
- jp CopyDataUntil
+.shiftMonNicks
+ jp CopyDataUntil ; shift all pokemon nicknames up one slot
diff --git a/engine/pokemon/set_types.asm b/engine/pokemon/set_types.asm
index 2cf8f14c..d42c3cf3 100644
--- a/engine/pokemon/set_types.asm
+++ b/engine/pokemon/set_types.asm
@@ -1,7 +1,7 @@
; updates the types of a party mon (pointed to in hl) to the ones of the mon specified in [wPokedexNum]
SetPartyMonTypes:
call GetPredefRegisters
- ld bc, wPartyMon1Type - wPartyMon1 ; $5
+ ld bc, MON_TYPE
add hl, bc
ld a, [wPokedexNum]
ld [wCurSpecies], a
diff --git a/engine/pokemon/status_ailments.asm b/engine/pokemon/status_ailments.asm
index 2c5b3bcd..3cc2d490 100644
--- a/engine/pokemon/status_ailments.asm
+++ b/engine/pokemon/status_ailments.asm
@@ -10,37 +10,17 @@ PrintStatusAilment::
jr nz, .par
and SLP_MASK
ret z
- ld a, 'S'
- ld [hli], a
- ld a, 'L'
- ld [hli], a
- ld [hl], 'P'
+ ld_hli_a_string "SLP"
ret
.psn
- ld a, 'P'
- ld [hli], a
- ld a, 'S'
- ld [hli], a
- ld [hl], 'N'
+ ld_hli_a_string "PSN"
ret
.brn
- ld a, 'B'
- ld [hli], a
- ld a, 'R'
- ld [hli], a
- ld [hl], 'N'
+ ld_hli_a_string "BRN"
ret
.frz
- ld a, 'F'
- ld [hli], a
- ld a, 'R'
- ld [hli], a
- ld [hl], 'Z'
+ ld_hli_a_string "FRZ"
ret
.par
- ld a, 'P'
- ld [hli], a
- ld a, 'A'
- ld [hli], a
- ld [hl], 'R'
+ ld_hli_a_string "PAR"
ret
diff --git a/engine/pokemon/status_screen.asm b/engine/pokemon/status_screen.asm
index 638f4c41..7e8ad615 100644
--- a/engine/pokemon/status_screen.asm
+++ b/engine/pokemon/status_screen.asm
@@ -61,8 +61,6 @@ DrawHP_:
pop de
ret
-
-; Predef 0x37
StatusScreen:
call LoadMonData
ld a, [wMonDataLocation]
@@ -75,7 +73,7 @@ StatusScreen:
ld hl, wLoadedMonHPExp - 1
ld de, wLoadedMonStats
ld b, $1
- call CalcStats ; Recalculate stats
+ call CalcStats
.DontRecalculate
ld hl, wStatusFlags2
set BIT_NO_AUDIO_FADE_OUT, [hl]
@@ -117,8 +115,8 @@ StatusScreen:
lb bc, 8, 6
call DrawLineBox ; Draws the box around types, ID No. and OT
hlcoord 10, 9
- ld de, Type1Text
- call PlaceString ; "TYPE1/"
+ ld de, TypesIDNoOTText
+ call PlaceString
hlcoord 11, 3
predef DrawHP
ld hl, wStatusScreenHPBarColor
@@ -137,7 +135,7 @@ StatusScreen:
ld de, StatusText
call PlaceString ; "STATUS/"
hlcoord 14, 2
- call PrintLevel ; Pokémon level
+ call PrintLevel
ld a, [wMonHIndex]
ld [wPokedexNum], a
ld [wCurSpecies], a
@@ -164,7 +162,7 @@ StatusScreen:
ld de, wLoadedMonOTID
lb bc, LEADING_ZEROES | 2, 5
call PrintNumber ; ID Number
- ld d, $0
+ ld d, STATUS_SCREEN_STATS_BOX
call PrintStatsBox
call Delay3
call GBPalNormal
@@ -221,20 +219,11 @@ NamePointers2:
dw wBoxMonNicks
dw wDayCareMonName
-Type1Text:
+TypesIDNoOTText:
db "TYPE1/"
- next ""
- ; fallthrough
-Type2Text:
- db "TYPE2/"
- next ""
- ; fallthrough
-IDNoText:
- db "<ID>№/"
- next ""
- ; fallthrough
-OTText:
- db "OT/"
+ next "TYPE2/"
+ next "<ID>№/"
+ next "OT/"
next "@"
StatusText:
@@ -265,38 +254,40 @@ PTile: INCBIN "gfx/font/P.1bpp"
PrintStatsBox:
ld a, d
- and a ; a is 0 from the status screen
- jr nz, .DifferentBox
+ ASSERT STATUS_SCREEN_STATS_BOX == 0
+ and a
+ jr nz, .LevelUpStatsBox ; battle or Rare Candy
hlcoord 0, 8
lb bc, 8, 8
- call TextBoxBorder ; Draws the box
- hlcoord 1, 9 ; Start printing stats from here
- ld bc, $19 ; Number offset
+ call TextBoxBorder
+ hlcoord 1, 9
+ ld bc, SCREEN_WIDTH + 5 ; one row down and 5 columns right
jr .PrintStats
-.DifferentBox
+.LevelUpStatsBox
hlcoord 9, 2
lb bc, 8, 9
call TextBoxBorder
hlcoord 11, 3
- ld bc, $18
+ ld bc, SCREEN_WIDTH + 4 ; one row down and 4 columns right
.PrintStats
push bc
push hl
- ld de, StatsText
+ ld de, .StatsText
call PlaceString
pop hl
pop bc
add hl, bc
ld de, wLoadedMonAttack
lb bc, 2, 3
- call PrintStat
+ call .PrintStat
ld de, wLoadedMonDefense
- call PrintStat
+ call .PrintStat
ld de, wLoadedMonSpeed
- call PrintStat
+ call .PrintStat
ld de, wLoadedMonSpecial
jp PrintNumber
-PrintStat:
+
+.PrintStat:
push hl
call PrintNumber
pop hl
@@ -304,7 +295,7 @@ PrintStat:
add hl, de
ret
-StatsText:
+.StatsText:
db "ATTACK"
next "DEFENSE"
next "SPEED"
@@ -337,10 +328,10 @@ StatusScreen2:
call PlaceString ; Print moves
ld a, [wNumMovesMinusOne]
inc a
- ld c, a
- ld a, $4
+ ld c, a ; number of known moves
+ ld a, NUM_MOVES
sub c
- ld b, a ; Number of moves ?
+ ld b, a ; number of blank moves
hlcoord 11, 10
ld de, SCREEN_WIDTH * 2
ld a, '<BOLD_P>'
@@ -375,7 +366,7 @@ StatusScreen2:
pop de
pop hl
push hl
- ld bc, wPartyMon1PP - wPartyMon1Moves - 1
+ ld bc, MON_PP - MON_MOVES - 1
add hl, bc
ld a, [hl]
and PP_MASK
@@ -400,7 +391,7 @@ StatusScreen2:
pop bc
inc b
ld a, b
- cp $4
+ cp NUM_MOVES
jr nz, .PrintPP
.PPDone
hlcoord 9, 3
@@ -429,8 +420,11 @@ StatusScreen2:
hlcoord 7, 6
lb bc, 3, 7
call PrintNumber ; exp needed to level up
+
+ ; unneeded, this clears the diacritic characters in JPN versions
hlcoord 9, 0
call StatusScreen_ClearName
+
hlcoord 9, 1
call StatusScreen_ClearName
ld a, [wMonHIndex]
@@ -482,7 +476,7 @@ StatusScreenExpText:
next "LEVEL UP@"
StatusScreen_ClearName:
- ld bc, 10
+ ld bc, NAME_LENGTH - 1
ld a, ' '
jp FillMemory
diff --git a/engine/slots/game_corner_slots.asm b/engine/slots/game_corner_slots.asm
index 48321974..d83d9d6a 100644
--- a/engine/slots/game_corner_slots.asm
+++ b/engine/slots/game_corner_slots.asm
@@ -1,5 +1,5 @@
StartSlotMachine:
- ld a, [wHiddenObjectFunctionArgument]
+ ld a, [wHiddenEventFunctionArgument]
cp SLOTS_OUTOFORDER
jr z, .printOutOfOrder
cp SLOTS_OUTTOLUNCH
@@ -10,9 +10,9 @@ StartSlotMachine:
ld a, [wCanPlaySlots]
and a
ret z
- ld a, [wLuckySlotHiddenObjectIndex]
+ ld a, [wLuckySlotHiddenEventIndex]
ld b, a
- ld a, [wHiddenObjectIndex]
+ ld a, [wHiddenEventIndex]
inc a
cp b
jr z, .match
diff --git a/engine/slots/slot_machine.asm b/engine/slots/slot_machine.asm
index e3363db3..fbbdbcb6 100644
--- a/engine/slots/slot_machine.asm
+++ b/engine/slots/slot_machine.asm
@@ -448,7 +448,7 @@ SlotMachine_CheckForMatches:
ld h, [hl]
ld l, a
ld de, wStringBuffer
- ld bc, 4
+ ld bc, 4 ; every SlotReward*Text is at most 4 bytes
call CopyData
pop hl
ld de, .flashScreenLoop
diff --git a/home.asm b/home.asm
index 2d144e7a..b6de7335 100644
--- a/home.asm
+++ b/home.asm
@@ -81,5 +81,5 @@ INCLUDE "home/give.asm"
INCLUDE "home/random.asm"
INCLUDE "home/bankswitch2.asm"
INCLUDE "home/predef.asm"
-INCLUDE "home/hidden_objects.asm"
+INCLUDE "home/hidden_events.asm"
INCLUDE "home/predef_text.asm"
diff --git a/home/clear_sprites.asm b/home/clear_sprites.asm
index 6d1066fa..c18b1ff3 100644
--- a/home/clear_sprites.asm
+++ b/home/clear_sprites.asm
@@ -9,10 +9,10 @@ ClearSprites::
ret
HideSprites::
- ld a, 160
- ld hl, wShadowOAM
- ld de, 4
- ld b, 40
+ ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS
+ ld hl, wShadowOAMSprite00YCoord
+ ld de, OBJ_SIZE
+ ld b, OAM_COUNT
.loop
ld [hl], a
add hl, de
diff --git a/home/hidden_objects.asm b/home/hidden_events.asm
index c1e1c9d3..ae8ee439 100644
--- a/home/hidden_objects.asm
+++ b/home/hidden_events.asm
@@ -2,27 +2,27 @@ UpdateCinnabarGymGateTileBlocks::
farcall UpdateCinnabarGymGateTileBlocks_
ret
-CheckForHiddenObjectOrBookshelfOrCardKeyDoor::
+CheckForHiddenEventOrBookshelfOrCardKeyDoor::
ldh a, [hLoadedROMBank]
push af
ldh a, [hJoyHeld]
bit B_PAD_A, a
jr z, .nothingFound
; A button is pressed
- ld a, BANK(CheckForHiddenObject)
+ ld a, BANK(CheckForHiddenEvent)
call BankswitchCommon
- call CheckForHiddenObject
- ldh a, [hDidntFindAnyHiddenObject]
+ call CheckForHiddenEvent
+ ldh a, [hDidntFindAnyHiddenEvent]
and a
- jr nz, .hiddenObjectNotFound
+ jr nz, .hiddenEventNotFound
xor a
ldh [hItemAlreadyFound], a
- ld a, [wHiddenObjectFunctionRomBank]
+ ld a, [wHiddenEventFunctionRomBank]
call BankswitchCommon
call JumpToAddress
ldh a, [hItemAlreadyFound]
jr .done
-.hiddenObjectNotFound
+.hiddenEventNotFound
predef GetTileAndCoordsInFrontOfPlayer
farcall PrintBookshelfText
ldh a, [hInteractedWithBookshelf]
diff --git a/home/joypad2.asm b/home/joypad2.asm
index da824797..a2860b02 100644
--- a/home/joypad2.asm
+++ b/home/joypad2.asm
@@ -25,7 +25,7 @@ JoypadLowSensitivity::
ldh a, [hJoyPressed] ; newly pressed buttons
and a ; have any buttons been newly pressed since last check?
jr z, .noNewlyPressedButtons
-.newlyPressedButtons
+; newly pressed buttons
ld a, 30 ; half a second delay
ldh [hFrameCounter], a
ret
@@ -33,7 +33,7 @@ JoypadLowSensitivity::
ldh a, [hFrameCounter]
and a ; is the delay over?
jr z, .delayOver
-.delayNotOver
+; delay not over
xor a
ldh [hJoy5], a ; report no buttons as pressed
ret
diff --git a/home/list_menu.asm b/home/list_menu.asm
index cae0a1d5..4faa738f 100644
--- a/home/list_menu.asm
+++ b/home/list_menu.asm
@@ -65,7 +65,7 @@ DisplayListMenuIDLoop::
ld a, [wBattleType]
and a ; is it the Old Man battle?
jr z, .notOldManBattle
-.oldManBattle
+; Old Man battle
ld a, '▶'
ldcoord_a 5, 4 ; place menu cursor in front of first menu entry
ld c, 20
@@ -178,7 +178,7 @@ DisplayListMenuIDLoop::
bit B_PAD_DOWN, b
ld hl, wListScrollOffset
jr z, .upPressed
-.downPressed
+; Down pressed
ld a, [hl]
add 3
ld b, a
@@ -377,7 +377,7 @@ PrintListMenuEntries::
jr z, .pokemonPCMenu
cp MOVESLISTMENU
jr z, .movesMenu
-.itemMenu
+; item menu
call GetItemName
jr .placeNameString
.pokemonPCMenu
@@ -408,7 +408,7 @@ PrintListMenuEntries::
ld a, [wPrintItemPrices]
and a ; should prices be printed?
jr z, .skipPrintingItemPrice
-.printItemPrice
+; print item price
push hl
ld a, [de]
ld de, ItemPrices
@@ -423,7 +423,7 @@ PrintListMenuEntries::
ld a, [wListMenuID]
and a ; PCPOKEMONLISTMENU?
jr nz, .skipPrintingPokemonLevel
-.printPokemonLevel
+; print Pokemon level
ld a, [wNamedObjectIndex]
push af
push hl
@@ -448,12 +448,12 @@ PrintListMenuEntries::
ld a, [wMonDataLocation]
and a ; is it a list of party pokemon or box pokemon?
jr z, .skipCopyingLevel
-.copyLevel
+; copy level
ld a, [wLoadedMonBoxLevel]
ld [wLoadedMonLevel], a
.skipCopyingLevel
pop hl
- ld bc, $1c
+ ld bc, SCREEN_WIDTH + 8 ; 1 row down and 8 columns right
add hl, bc
call PrintLevel
pop af
@@ -465,7 +465,7 @@ PrintListMenuEntries::
ld a, [wListMenuID]
cp ITEMLISTMENU
jr nz, .nextListEntry
-.printItemQuantity
+; print item quantity
ld a, [wNamedObjectIndex]
ld [wCurItem], a
call IsKeyItem ; check if item is unsellable
diff --git a/home/load_font.asm b/home/load_font.asm
index c9a009f7..bb1b1492 100644
--- a/home/load_font.asm
+++ b/home/load_font.asm
@@ -2,7 +2,7 @@ LoadFontTilePatterns::
ldh a, [rLCDC]
bit B_LCDC_ENABLE, a
jr nz, .on
-.off
+; off
ld hl, FontGraphics
ld de, vFont
ld bc, FontGraphicsEnd - FontGraphics
@@ -11,14 +11,14 @@ LoadFontTilePatterns::
.on
ld de, FontGraphics
ld hl, vFont
- lb bc, BANK(FontGraphics), (FontGraphicsEnd - FontGraphics) / $8
+ lb bc, BANK(FontGraphics), (FontGraphicsEnd - FontGraphics) / TILE_1BPP_SIZE
jp CopyVideoDataDouble ; if LCD is on, transfer during V-blank
LoadTextBoxTilePatterns::
ldh a, [rLCDC]
bit B_LCDC_ENABLE, a
jr nz, .on
-.off
+; off
ld hl, TextBoxGraphics
ld de, vChars2 tile $60
ld bc, TextBoxGraphicsEnd - TextBoxGraphics
@@ -27,14 +27,14 @@ LoadTextBoxTilePatterns::
.on
ld de, TextBoxGraphics
ld hl, vChars2 tile $60
- lb bc, BANK(TextBoxGraphics), (TextBoxGraphicsEnd - TextBoxGraphics) / $10
+ lb bc, BANK(TextBoxGraphics), (TextBoxGraphicsEnd - TextBoxGraphics) / TILE_SIZE
jp CopyVideoData ; if LCD is on, transfer during V-blank
LoadHpBarAndStatusTilePatterns::
ldh a, [rLCDC]
bit B_LCDC_ENABLE, a
jr nz, .on
-.off
+; off
ld hl, HpBarAndStatusGraphics
ld de, vChars2 tile $62
ld bc, HpBarAndStatusGraphicsEnd - HpBarAndStatusGraphics
@@ -43,5 +43,5 @@ LoadHpBarAndStatusTilePatterns::
.on
ld de, HpBarAndStatusGraphics
ld hl, vChars2 tile $62
- lb bc, BANK(HpBarAndStatusGraphics), (HpBarAndStatusGraphicsEnd - HpBarAndStatusGraphics) / $10
+ lb bc, BANK(HpBarAndStatusGraphics), (HpBarAndStatusGraphicsEnd - HpBarAndStatusGraphics) / TILE_SIZE
jp CopyVideoData ; if LCD is on, transfer during V-blank
diff --git a/home/map_objects.asm b/home/map_objects.asm
index 2e553371..3b1a1f08 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -190,7 +190,7 @@ CheckCoords::
ld hl, wCoordIndex
inc [hl]
pop hl
-.compareYCoord
+; compare Y coord
cp b
jr z, .compareXCoord
inc hl
@@ -199,7 +199,7 @@ CheckCoords::
ld a, [hli]
cp c
jr nz, .loop
-.inArray
+; in array
scf
ret
.notInArray
diff --git a/home/move_mon.asm b/home/move_mon.asm
index 45b10322..def60bc1 100644
--- a/home/move_mon.asm
+++ b/home/move_mon.asm
@@ -94,7 +94,7 @@ CalcStat::
srl c
pop hl
push bc
- ld bc, wPartyMon1DVs - (wPartyMon1HPExp - 1) ; also wEnemyMonDVs - wEnemyMonHP
+ ld bc, MON_DVS - (MON_HP_EXP - 1)
add hl, bc
pop bc
ld a, c
@@ -106,7 +106,7 @@ CalcStat::
jr z, .getSpeedIV
cp $5
jr z, .getSpecialIV
-.getHpIV
+; get HP IV
push bc
ld a, [hl] ; Atk IV
swap a
diff --git a/home/overworld.asm b/home/overworld.asm
index b5625e9d..6fafe717 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -88,10 +88,10 @@ OverworldLoopLessDelay::
jp nz, .noDirectionButtonsPressed
call IsPlayerCharacterBeingControlledByGame
jr nz, .checkForOpponent
- call CheckForHiddenObjectOrBookshelfOrCardKeyDoor
+ call CheckForHiddenEventOrBookshelfOrCardKeyDoor
ldh a, [hItemAlreadyFound]
and a
- jp z, OverworldLoop ; jump if a hidden object or bookshelf was found, but not if a card key door was found
+ jp z, OverworldLoop ; jump if a hidden event or bookshelf was found, but not if a card key door was found
xor a
ld [wd435], a ; new yellow address
call IsSpriteOrSignInFrontOfPlayer
@@ -114,7 +114,7 @@ OverworldLoopLessDelay::
and a
jr z, .checkForOpponent
xor a
- ld [wLinkTimeoutCounter], a
+ ld [wEnteringCableClub], a
jp EnterMap
.checkForOpponent
ld a, [wCurOpponent]
@@ -480,7 +480,7 @@ WarpFound2::
; for maps that can have the 0xFF destination map, which means to return to the outside map
; not all these maps are necessarily indoors, though
.indoorMaps
- ldh a, [hWarpDestinationMap] ; destination map
+ ldh a, [hWarpDestinationMap]
cp LAST_MAP
jr z, .goBackOutside
; if not going back to the previous map
@@ -518,7 +518,7 @@ WarpFound2::
; if no matching warp was found
CheckMapConnections::
-.checkWestMap
+; check west map
ld a, [wXCoord]
cp $ff
jr nz, .checkEastMap
@@ -539,7 +539,7 @@ CheckMapConnections::
srl c
jr z, .savePointer1
.pointerAdjustmentLoop1
- ld a, [wWestConnectedMapWidth] ; width of connected map
+ ld a, [wWestConnectedMapWidth]
add MAP_BORDER * 2
ld e, a
ld d, 0
@@ -556,7 +556,7 @@ CheckMapConnections::
.checkEastMap
ld b, a
- ld a, [wCurrentMapWidth2] ; map width
+ ld a, [wCurrentMapWidth2]
cp b
jr nz, .checkNorthMap
ld a, [wEastConnectedMap]
@@ -1125,7 +1125,7 @@ IsSpriteInFrontOfPlayer2::
.doneCheckingDirection
ld [wPlayerDirection], a
ld hl, wSprite01StateData1
-; yellow does not have the "if sprites are existant" check
+; yellow does not have the "if sprites are existent" check
ld e, $01
ld d, $f
.spriteLoop
@@ -1148,7 +1148,7 @@ IsSpriteInFrontOfPlayer2::
.nextSprite
pop hl
ld a, l
- add $10
+ add SPRITESTATEDATA1_LENGTH
ld l, a
inc e
dec d
@@ -1176,10 +1176,10 @@ IsSpriteInFrontOfPlayer2::
SignLoop::
; search if a player is facing a sign
- ld hl, wSignCoords ; start of sign coordinates
- ld a, [wNumSigns] ; number of signs in the map
+ ld hl, wSignCoords
+ ld a, [wNumSigns]
ld b, a
- ld c, $00
+ ld c, 0
.signLoop
inc c
ld a, [hli] ; sign Y
@@ -1187,17 +1187,15 @@ SignLoop::
jr z, .yCoordMatched
inc hl
jr .retry
-
.yCoordMatched
ld a, [hli] ; sign X
cp e
jr nz, .retry
-.xCoordMatched
-; found sign
+; X coord matched: found sign
push hl
push bc
- ld hl, wSignTextIDs ; start of sign text ID's
- ld b, $00
+ ld hl, wSignTextIDs
+ ld b, 0
dec c
add hl, bc
ld a, [hl]
@@ -1206,7 +1204,6 @@ SignLoop::
pop hl
scf
ret
-
.retry
dec b
jr nz, .signLoop
@@ -1272,8 +1269,8 @@ CollisionCheckOnLand::
; function that checks if the tile in front of the player is passable
; clears carry if it is, sets carry if not
CheckTilePassable::
- predef GetTileAndCoordsInFrontOfPlayer ; get tile in front of player
- ld a, [wTileInFrontOfPlayer] ; tile in front of player
+ predef GetTileAndCoordsInFrontOfPlayer
+ ld a, [wTileInFrontOfPlayer]
ld c, a
call IsTilePassable
ret
@@ -1284,7 +1281,7 @@ CheckTilePassable::
; sets carry if there is a collision and unsets carry if not
CheckForJumpingAndTilePairCollisions::
push hl
- predef GetTileAndCoordsInFrontOfPlayer ; get the tile in front of the player
+ predef GetTileAndCoordsInFrontOfPlayer
push de
push bc
farcall HandleLedges ; check if the player is trying to jump a ledge
@@ -1317,7 +1314,7 @@ CheckForTilePairCollisions::
inc hl
jr .tilePairCollisionLoop
.tilesetMatches
- ld a, [wTilePlayerStandingOn] ; tile the player is on
+ ld a, [wTilePlayerStandingOn]
ld b, a
ld a, [hl]
cp b
@@ -1352,8 +1349,8 @@ INCLUDE "data/tilesets/pair_collision_tile_ids.asm"
LoadCurrentMapView::
ldh a, [hLoadedROMBank]
push af
- ld a, [wTilesetBank] ; tile data ROM bank
- call BankswitchCommon ; switch to ROM bank that contains tile data
+ ld a, [wTilesetBank]
+ call BankswitchCommon
ld a, [wCurrentTileBlockMapViewPointer] ; address of upper left corner of current map view
ld e, a
ld a, [wCurrentTileBlockMapViewPointer + 1]
@@ -1434,7 +1431,7 @@ LoadCurrentMapView::
dec b
jr nz, .rowLoop2
pop af
- call BankswitchCommon ; restore previous ROM bank
+ call BankswitchCommon
ret
AdvancePlayerSprite::
@@ -1794,11 +1791,11 @@ LoadPlayerSpriteGraphicsCommon::
; function to load data from the map header
LoadMapHeader::
- farcall MarkTownVisitedAndLoadMissableObjects
+ farcall MarkTownVisitedAndLoadToggleableObjects
jr asm_0dbd
-Func_0db5:: ; XXX
- farcall LoadMissableObjectData
+Func_0db5:: ; unreferenced
+ farcall LoadToggleableObjectData
asm_0dbd:
ld a, [wCurMapTileset]
ld [wUnusedCurMapTilesetCopy], a
@@ -1829,7 +1826,7 @@ asm_0dbd:
; copy connection data (if any) to WRAM
ld a, [wCurMapConnections]
ld b, a
-.checkNorth
+; check north
bit NORTH_F, b
jr z, .checkSouth
ld de, wNorthConnectionHeader
@@ -1862,7 +1859,7 @@ asm_0dbd:
ld de, wMapBackgroundTile
ld a, [hli]
ld [de], a
-.loadWarpData
+; load warp data
ld a, [hli]
ld [wNumberOfWarps], a
and a
@@ -1978,8 +1975,8 @@ LoadMapData::
ld a, [wStatusFlags7]
bit BIT_NO_MAP_MUSIC, a
jr nz, .restoreRomBank
- call UpdateMusic6Times ; music related
- call PlayDefaultMusicFadeOutCurrent ; music related
+ call UpdateMusic6Times
+ call PlayDefaultMusicFadeOutCurrent
.restoreRomBank
pop af
call BankswitchCommon
@@ -2021,7 +2018,7 @@ FinishReloadingMap:
ret ; useless
ResetMapVariables::
- ld a, $98
+ ld a, HIGH(vBGMap0)
ld [wMapViewVRAMPointer + 1], a
xor a
ld [wMapViewVRAMPointer], a
@@ -2150,7 +2147,7 @@ InitSprites::
pop de
pop hl
ld a, [wNumSprites]
- and a ; are sprites existant?
+ and a ; are there any sprites?
ret z ; don't copy sprite data if not
ld b, a
ld c, $0
diff --git a/home/pics.asm b/home/pics.asm
index 18d86f2e..b4e923c8 100644
--- a/home/pics.asm
+++ b/home/pics.asm
@@ -123,8 +123,8 @@ AlignSpriteDataCentered::
dec c
jr nz, .columnInnerLoop
pop hl
- ld bc, 7 * 8 ; 7 tiles
- add hl, bc ; advance one full column
+ ld bc, 7 * TILE_1BPP_SIZE
+ add hl, bc ; advance one full column
pop af
dec a
jr nz, .columnLoop
@@ -152,7 +152,7 @@ InterlaceMergeSpriteBuffers::
ld hl, sSpriteBuffer2 + (SPRITEBUFFERSIZE - 1) ; destination: end of buffer 2
ld de, sSpriteBuffer1 + (SPRITEBUFFERSIZE - 1) ; source 2: end of buffer 1
ld bc, sSpriteBuffer0 + (SPRITEBUFFERSIZE - 1) ; source 1: end of buffer 0
- ld a, SPRITEBUFFERSIZE / 2 ; $c4
+ ld a, SPRITEBUFFERSIZE / 2
ldh [hSpriteInterlaceCounter], a
.interlaceLoop
ld a, [de]
@@ -184,9 +184,9 @@ InterlaceMergeSpriteBuffers::
or c
jr nz, .swapLoop
.notFlipped
- pop hl
+ pop hl ; hl = output address
ld de, sSpriteBuffer1
- ld c, (2 * SPRITEBUFFERSIZE) / 16 ; $31, number of 16 byte chunks to be copied
+ ld c, PIC_SIZE ; tiles
ldh a, [hLoadedROMBank]
ld b, a
call CopyVideoData
diff --git a/home/pokemon.asm b/home/pokemon.asm
index 2246e383..4c248064 100644
--- a/home/pokemon.asm
+++ b/home/pokemon.asm
@@ -349,11 +349,7 @@ PrintStatusCondition::
pop de
jr nz, PrintStatusConditionNotFainted
; if the pokemon's HP is 0, print "FNT"
- ld a, 'F'
- ld [hli], a
- ld a, 'N'
- ld [hli], a
- ld [hl], 'T'
+ ld_hli_a_string "FNT"
and a
ret
diff --git a/home/print_bcd.asm b/home/print_bcd.asm
index 2e501be5..cac6aba3 100644
--- a/home/print_bcd.asm
+++ b/home/print_bcd.asm
@@ -31,9 +31,9 @@ PrintBCDNumber::
inc de
dec c
jr nz, .loop
- bit BIT_LEADING_ZEROES, b
+ bit BIT_LEADING_ZEROES, b ; were any non-zero digits printed?
jr z, .done ; if so, we are done
-.numberEqualsZero ; if every digit of the BCD number is zero
+; if every digit of the BCD number is zero, print the last 0
bit BIT_LEFT_ALIGN, b
jr nz, .skipRightAlignmentAdjustment
dec hl ; if the string is right-aligned, it needs to be moved back one space
diff --git a/home/print_num.asm b/home/print_num.asm
index e0af0a4e..0280da8d 100644
--- a/home/print_num.asm
+++ b/home/print_num.asm
@@ -93,11 +93,16 @@ MACRO print_digit
call .NextDigit
ENDM
-.millions print_digit 1000000
-.hundred_thousands print_digit 100000
-.ten_thousands print_digit 10000
-.thousands print_digit 1000
-.hundreds print_digit 100
+; millions
+ print_digit 1000000
+.hundred_thousands
+ print_digit 100000
+.ten_thousands
+ print_digit 10000
+.thousands
+ print_digit 1000
+.hundreds
+ print_digit 100
.tens
ld c, 0
@@ -124,7 +129,7 @@ ENDM
.next
call .NextDigit
-.ones
+; ones
ld a, '0'
add b
ld [hli], a
diff --git a/home/print_text.asm b/home/print_text.asm
index fe784350..8e351ba3 100644
--- a/home/print_text.asm
+++ b/home/print_text.asm
@@ -24,7 +24,7 @@ PrintLetterDelay::
.checkButtons
call Joypad
ldh a, [hJoyHeld]
-.checkAButton
+; check A button
bit B_PAD_A, a
jr z, .checkBButton
jr .endWait
diff --git a/home/reset_player_sprite.asm b/home/reset_player_sprite.asm
index 2765d613..6e341363 100644
--- a/home/reset_player_sprite.asm
+++ b/home/reset_player_sprite.asm
@@ -15,7 +15,8 @@ ResetPlayerSpriteData::
; overwrites sprite data with zeroes
ResetPlayerSpriteData_ClearSpriteData::
- ld bc, $10
+ ld bc, SPRITESTATEDATA1_LENGTH
+ ASSERT SPRITESTATEDATA2_LENGTH == SPRITESTATEDATA1_LENGTH
xor a
call FillMemory
ret
diff --git a/home/start_menu.asm b/home/start_menu.asm
index b1bc0539..f2aae5dd 100644
--- a/home/start_menu.asm
+++ b/home/start_menu.asm
@@ -14,7 +14,7 @@ RedisplayStartMenu_DoNotDrawStartMenu::
.loop
call HandleMenuInput
ld b, a
-.checkIfUpPressed
+; check if Up pressed
bit B_PAD_UP, a
jr z, .checkIfDownPressed
ld a, [wCurrentMenuItem] ; menu selection
diff --git a/home/text_script.asm b/home/text_script.asm
index 44ba4567..96a6b11d 100644
--- a/home/text_script.asm
+++ b/home/text_script.asm
@@ -112,8 +112,8 @@ CloseTextDisplay::
ldh [hAutoBGTransferEnabled], a ; disable continuous WRAM to VRAM transfer each V-blank
; loop to make sprites face the directions they originally faced before the dialogue
ld hl, wSprite01StateData2OrigFacingDirection
- ld c, $0f
- ld de, $10
+ ld c, NUM_SPRITESTATEDATA_STRUCTS - 1
+ ld de, SPRITESTATEDATA1_LENGTH
.restoreSpriteFacingDirectionLoop
ld a, [hl] ; x#SPRITESTATEDATA2_ORIGFACINGDIRECTION
dec h
diff --git a/home/trainers.asm b/home/trainers.asm
index fa9167fc..6e007a95 100644
--- a/home/trainers.asm
+++ b/home/trainers.asm
@@ -19,7 +19,7 @@ ExecuteCurMapScriptInTable::
ld hl, wStatusFlags7
bit BIT_USE_CUR_MAP_SCRIPT, [hl]
res BIT_USE_CUR_MAP_SCRIPT, [hl]
- jr z, .useProvidedIndex ; test if map script index was overridden manually
+ jr z, .useProvidedIndex ; test if map script index was overridden manually
ld a, [wCurMapScript]
.useProvidedIndex
pop hl
@@ -31,12 +31,12 @@ ExecuteCurMapScriptInTable::
LoadGymLeaderAndCityName::
push de
ld de, wGymCityName
- ld bc, $11
- call CopyData ; load city name
+ ld bc, GYM_CITY_LENGTH
+ call CopyData ; load city name
pop hl
ld de, wGymLeaderName
ld bc, NAME_LENGTH
- jp CopyData ; load gym leader name
+ jp CopyData ; load gym leader name
; reads specific information from trainer header (pointed to at wTrainerHeaderPtr)
; a: offset in header data
@@ -155,7 +155,7 @@ ENDC
ldh [hJoyHeld], a
call TrainerWalkUpToPlayer_Bank0
ld hl, wCurMapScript
- inc [hl] ; increment map script index (next script function is usually DisplayEnemyTrainerTextAndStartBattle)
+ inc [hl] ; increment map script index (next script function is usually DisplayEnemyTrainerTextAndStartBattle)
ret
; display the before battle text after the enemy trainer has walked up to the player's sprite
@@ -179,7 +179,7 @@ StartTrainerBattle::
ld hl, wStatusFlags4
set BIT_UNKNOWN_4_1, [hl]
ld hl, wCurMapScript
- inc [hl] ; increment map script index (next script function is usually EndTrainerBattle)
+ inc [hl] ; increment map script index (next script function is usually EndTrainerBattle)
ret
EndTrainerBattle::
@@ -201,14 +201,14 @@ EndTrainerBattle::
call TrainerFlagAction ; flag trainer as fought
ld a, [wEnemyMonOrTrainerClass]
cp OPP_ID_OFFSET
- jr nc, .skipRemoveSprite ; test if trainer was fought (in that case skip removing the corresponding sprite)
- ld hl, wMissableObjectList
+ jr nc, .skipRemoveSprite ; test if trainer was fought (in that case skip removing the corresponding sprite)
+ ld hl, wToggleableObjectList
ld de, $2
ld a, [wSpriteIndex]
- call IsInArray ; search for sprite ID
+ call IsInArray ; search for sprite ID
inc hl
ld a, [hl]
- ld [wMissableObjectIndex], a ; load corresponding missable object index and remove it
+ ld [wToggleableObjectIndex], a ; load corresponding toggleable object index and remove it
predef HideObject
.skipRemoveSprite
ld hl, wStatusFlags5
@@ -269,7 +269,7 @@ CheckForEngagingTrainers::
.trainerLoop
call StoreTrainerHeaderPointer ; set trainer header pointer to current trainer
ld a, [de]
- ld [wSpriteIndex], a ; store trainer flag's bit
+ ld [wSpriteIndex], a ; store trainer flag's bit
ld [wTrainerHeaderFlagBit], a
cp -1
ret z
@@ -278,7 +278,7 @@ CheckForEngagingTrainers::
ld b, FLAG_TEST
ld a, [wTrainerHeaderFlagBit]
ld c, a
- call TrainerFlagAction ; read trainer flag
+ call TrainerFlagAction ; read trainer flag
ld a, c
and a ; has the trainer already been defeated?
jr nz, .continue
@@ -299,7 +299,7 @@ CheckForEngagingTrainers::
pop hl
ld a, [wTrainerSpriteOffset]
and a
- ret nz ; break if the trainer is engaging
+ ret nz ; break if the trainer is engaging
.continue
ld hl, $c
add hl, de
@@ -364,8 +364,8 @@ PrintEndBattleText::
GetSavedEndBattleTextPointer::
ld a, [wBattleResult]
and a
-; won battle
jr nz, .lostBattle
+; won battle
ld a, [wEndBattleWinTextPointer]
ld h, a
ld a, [wEndBattleWinTextPointer + 1]
diff --git a/home/vcopy.asm b/home/vcopy.asm
index 1a67cdb5..c9fcfb34 100644
--- a/home/vcopy.asm
+++ b/home/vcopy.asm
@@ -20,9 +20,14 @@ GetRowColAddressBgMap::
; INPUT: h - high byte of background tile map address in VRAM
ClearBgMap::
ld a, ' '
- jr .next
+ jr FillBgMapCommon
+
+; fills a VRAM background map with tile index in register l
+; INPUT: h - high byte of background tile map address in VRAM
+FillBgMap:: ; unreferenced
ld a, l
-.next
+
+FillBgMapCommon:
ld de, TILEMAP_AREA
ld l, e
.loop
@@ -69,8 +74,8 @@ RedrawRowOrColumn::
.noCarry
; the following 4 lines wrap us from bottom to top if necessary
ld a, d
- and $3
- or $98
+ and HIGH(TILEMAP_AREA - 1)
+ or HIGH(vBGMap0)
ld d, a
dec c
jr nz, .loop1
@@ -86,7 +91,7 @@ RedrawRowOrColumn::
push de
call .DrawHalf ; draw upper half
pop de
- ld a, TILEMAP_WIDTH ; width of VRAM background map
+ ld a, TILEMAP_WIDTH
add e
ld e, a
; fall through and draw lower half
@@ -102,10 +107,10 @@ RedrawRowOrColumn::
ld a, e
inc a
; the following 6 lines wrap us from the right edge to the left edge if necessary
- and $1f
+ and %11111
ld b, a
ld a, e
- and $e0
+ and %11100000
or b
ld e, a
dec c
@@ -130,7 +135,7 @@ AutoBgMapTransfer::
dec a
jr z, .transferMiddleThird
.transferBottomThird
- hlcoord 0, 12
+ hlcoord 0, 2 * SCREEN_HEIGHT / 3
ld sp, hl
ldh a, [hAutoBGTransferDest + 1]
ld h, a
@@ -150,7 +155,7 @@ AutoBgMapTransfer::
ld a, TRANSFERMIDDLE
jr .doTransfer
.transferMiddleThird
- hlcoord 0, 6
+ hlcoord 0, SCREEN_HEIGHT / 3
ld sp, hl
ldh a, [hAutoBGTransferDest + 1]
ld h, a
@@ -161,7 +166,7 @@ AutoBgMapTransfer::
ld a, TRANSFERBOTTOM
.doTransfer
ldh [hAutoBGTransferPortion], a ; store next portion
- ld b, 6
+ ld b, SCREEN_HEIGHT / 3
TransferBgRows::
; unrolled loop and using pop for speed
@@ -364,7 +369,7 @@ UpdateMovingBgTiles::
; water
ld hl, vTileset tile $14
- ld c, $10
+ ld c, TILE_SIZE
ld a, [wMovingBGTilesCounter2]
inc a
@@ -409,7 +414,7 @@ UpdateMovingBgTiles::
ld hl, FlowerTile3
.copy
ld de, vTileset tile $03
- ld c, $10
+ ld c, TILE_SIZE
.loop
ld a, [hli]
ld [de], a
diff --git a/home/window.asm b/home/window.asm
index c34b4f69..fcc048ec 100644
--- a/home/window.asm
+++ b/home/window.asm
@@ -54,11 +54,11 @@ HandleMenuInput_::
jr nz, .checkOtherKeys
bit B_PAD_UP, a
jr z, .checkIfDownPressed
-.upPressed
+; Up pressed
ld a, [wCurrentMenuItem] ; selected menu item
and a ; already at the top of the menu?
jr z, .alreadyAtTop
-.notAtTop
+; not at top
dec a
ld [wCurrentMenuItem], a ; move selected menu item up one space
jr .checkOtherKeys
@@ -72,14 +72,14 @@ HandleMenuInput_::
.checkIfDownPressed
bit B_PAD_DOWN, a
jr z, .checkOtherKeys
-.downPressed
+; Down pressed
ld a, [wCurrentMenuItem]
inc a
ld c, a
ld a, [wMaxMenuItem]
cp c
jr nc, .notAtBottom
-.alreadyAtBottom
+; already at bottom
ld a, [wMenuWrappingEnabled]
and a ; is wrapping around enabled?
jr z, .noWrappingAround
@@ -95,7 +95,7 @@ HandleMenuInput_::
ldh a, [hJoy5]
and PAD_A | PAD_B
jr z, .skipPlayingSound
-.AButtonOrBButtonPressed
+; A or B pressed
push hl
ld hl, wMiscFlags
bit BIT_NO_MENU_BUTTON_SOUND, [hl]
@@ -153,7 +153,7 @@ PlaceMenuCursor::
ld a, [hl]
cp '▶' ; was an arrow next to the previously selected menu item?
jr nz, .skipClearingArrow
-.clearArrow
+; clear arrow
ld a, [wTileBehindCursor]
ld [hl], a
.skipClearingArrow
diff --git a/includes.asm b/includes.asm
index 71f4a9b8..d677df59 100644
--- a/includes.asm
+++ b/includes.asm
@@ -32,6 +32,7 @@ INCLUDE "constants/item_constants.asm"
INCLUDE "constants/pokemon_constants.asm"
INCLUDE "constants/pokedex_constants.asm"
INCLUDE "constants/pokemon_data_constants.asm"
+INCLUDE "constants/player_constants.asm"
INCLUDE "constants/trainer_constants.asm"
INCLUDE "constants/icon_constants.asm"
INCLUDE "constants/sprite_constants.asm"
@@ -41,7 +42,7 @@ INCLUDE "constants/list_constants.asm"
INCLUDE "constants/map_constants.asm"
INCLUDE "constants/map_data_constants.asm"
INCLUDE "constants/map_object_constants.asm"
-INCLUDE "constants/hide_show_constants.asm"
+INCLUDE "constants/toggle_constants.asm"
INCLUDE "constants/sprite_set_constants.asm"
INCLUDE "constants/credits_constants.asm"
INCLUDE "constants/audio_constants.asm"
diff --git a/layout.link b/layout.link
index cbef589b..a035e744 100644
--- a/layout.link
+++ b/layout.link
@@ -59,7 +59,7 @@ ROMX $7
"Maps 3"
"bank7"
"Maps 4"
- "Hidden Objects 1"
+ "Hidden Events 1"
ROMX $8
"Sound Effect Headers 2"
"Music Headers 2"
@@ -101,7 +101,7 @@ ROMX $13
"Maps 9"
ROMX $14
"Maps 10"
- "Hidden Objects 2"
+ "Hidden Events 2"
ROMX $15
"Maps 11"
"Battle Engine 7"
@@ -117,12 +117,12 @@ ROMX $17
"Maps 15"
"Starter Dex"
"Maps 16"
- "Hidden Objects 3"
+ "Hidden Events 3"
ROMX $18
"Maps 17"
"Cinnabar Lab Fossils"
"Maps 18"
- "Hidden Objects 4"
+ "Hidden Events 4"
ROMX $19
"Tilesets 1"
ROMX $1A
@@ -217,7 +217,7 @@ ROMX $3C
"Pikachu Graphics 2"
"Credits"
"Maps 22"
- "Hidden Objects Core"
+ "Hidden Events Core"
ROMX $3D
"Battle Engine 8"
"Pics 7"
diff --git a/macros/asserts.asm b/macros/asserts.asm
index e2de1505..11e0ee99 100644
--- a/macros/asserts.asm
+++ b/macros/asserts.asm
@@ -4,8 +4,8 @@ MACRO? _redef_current_label
IF DEF(\1)
PURGE \1
ENDC
- IF _NARG == 3 + (\3)
- DEF \1 EQUS "\<_NARG>"
+ IF _NARG > 2
+ DEF \1 EQUS "\3"
ELIF STRLEN(#__SCOPE__)
IF {{__SCOPE__}} - @ == 0
DEF \1 EQUS #{__SCOPE__}
@@ -19,7 +19,8 @@ ENDM
MACRO? table_width
DEF CURRENT_TABLE_WIDTH = \1
- _redef_current_label CURRENT_TABLE_START, "._table_width\@", 2, \#
+ SHIFT
+ _redef_current_label CURRENT_TABLE_START, "._table_width\@", \#
ENDM
MACRO? assert_table_length
@@ -40,11 +41,20 @@ ENDM
MACRO? list_start
DEF list_index = 0
- _redef_current_label CURRENT_LIST_START, "._list_start\@", 1, \#
+ DEF list_item_length = 0
+ IF _NARG > 0
+ DEF list_item_length = \1
+ SHIFT
+ ENDC
+ _redef_current_label CURRENT_LIST_START, "._list_start\@", \#
ENDM
MACRO? li
ASSERT STRFIND(\1, "@") == -1, "String terminator \"@\" in list entry: \1"
+ IF list_item_length
+ ASSERT CHARLEN(\1) <= list_item_length, \
+ "List entry longer than {d:list_item_length} characters: \1"
+ ENDC
db \1, "@"
DEF list_index += 1
ENDM
diff --git a/macros/code.asm b/macros/code.asm
index c972f97e..70ff4249 100644
--- a/macros/code.asm
+++ b/macros/code.asm
@@ -10,6 +10,14 @@ ENDM
; Design patterns
+MACRO ld_hli_a_string
+ FOR n, CHARLEN(\1) - 1
+ ld a, CHARVAL(STRCHAR(\1, n))
+ ld [hli], a
+ ENDR
+ ld [hl], CHARVAL(STRCHAR(\1, CHARLEN(\1) - 1))
+ENDM
+
MACRO dict
IF \1 == 0
and a
diff --git a/macros/farcall.asm b/macros/farcall.asm
index e8bf8e9c..e3e11a0f 100644
--- a/macros/farcall.asm
+++ b/macros/farcall.asm
@@ -1,3 +1,10 @@
+; Far calls to another bank
+
+; There is no difference between `farcall` and `callfar`, except the arbitrary
+; order in which they set `b` and `hl` before calling `FarCall`.
+; We use the more natural name "farcall" for the more common order.
+; The same goes for `farjp` and `jpfar`.
+
MACRO farcall
ld b, BANK(\1)
ld hl, \1
diff --git a/macros/ram.asm b/macros/ram.asm
index a8deac76..24a3a9bd 100644
--- a/macros/ram.asm
+++ b/macros/ram.asm
@@ -4,8 +4,6 @@ MACRO? flag_array
ds ((\1) + 7) / 8
ENDM
-DEF BOX_STRUCT_LENGTH EQU 25 + NUM_MOVES * 2
-
MACRO box_struct
\1Species:: db
\1HP:: dw
diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm
index c5b494dd..ed01c0c7 100644
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -374,7 +374,7 @@ MACRO ResetEventRange
IF event_fill_count > 1
ld hl, wEventFlags + event_fill_start
- ; force xor a if we just to wrote to it above
+ ; force xor a if we just wrote to it above
IF (_NARG < 3) || (((\1) % 8) != 0)
xor a
ENDC
diff --git a/main.asm b/main.asm
index a242fcbd..b10fc7e0 100644
--- a/main.asm
+++ b/main.asm
@@ -43,13 +43,13 @@ INCLUDE "engine/overworld/player_state.asm"
INCLUDE "engine/events/poison.asm"
INCLUDE "engine/overworld/tilesets.asm"
INCLUDE "engine/overworld/daycare_exp.asm"
-INCLUDE "data/maps/hide_show_data.asm"
+INCLUDE "data/maps/toggleable_objects.asm"
INCLUDE "engine/overworld/wild_mons.asm"
INCLUDE "engine/items/item_effects.asm"
INCLUDE "engine/menus/draw_badges.asm"
INCLUDE "engine/overworld/update_map.asm"
INCLUDE "engine/overworld/cut.asm"
-INCLUDE "engine/overworld/missable_objects.asm"
+INCLUDE "engine/overworld/toggleable_objects.asm"
INCLUDE "engine/overworld/push_boulder.asm"
INCLUDE "engine/pokemon/add_mon.asm"
INCLUDE "engine/flag_action.asm"
@@ -59,12 +59,12 @@ INCLUDE "engine/movie/oak_speech/init_player_data.asm"
INCLUDE "engine/items/get_bag_item_quantity.asm"
INCLUDE "engine/overworld/pathfinding.asm"
INCLUDE "engine/gfx/hp_bar.asm"
-INCLUDE "engine/events/hidden_objects/bookshelves.asm"
-INCLUDE "engine/events/hidden_objects/indigo_plateau_statues.asm"
-INCLUDE "engine/events/hidden_objects/book_or_sculpture.asm"
-INCLUDE "engine/events/hidden_objects/elevator.asm"
-INCLUDE "engine/events/hidden_objects/town_map.asm"
-INCLUDE "engine/events/hidden_objects/pokemon_stuff.asm"
+INCLUDE "engine/events/hidden_events/bookshelves.asm"
+INCLUDE "engine/events/hidden_events/indigo_plateau_statues.asm"
+INCLUDE "engine/events/hidden_events/book_or_sculpture.asm"
+INCLUDE "engine/events/hidden_events/elevator.asm"
+INCLUDE "engine/events/hidden_events/town_map.asm"
+INCLUDE "engine/events/hidden_events/pokemon_stuff.asm"
SECTION "bank4", ROMX
@@ -111,16 +111,16 @@ INCLUDE "engine/movie/oak_speech/clear_save.asm"
INCLUDE "engine/events/elevator.asm"
-SECTION "Hidden Objects 1", ROMX
+SECTION "Hidden Events 1", ROMX
INCLUDE "engine/menus/oaks_pc.asm"
-INCLUDE "engine/events/hidden_objects/new_bike.asm"
-INCLUDE "engine/events/hidden_objects/oaks_lab_posters.asm"
-INCLUDE "engine/events/hidden_objects/safari_game.asm"
-INCLUDE "engine/events/hidden_objects/cinnabar_gym_quiz.asm"
-INCLUDE "engine/events/hidden_objects/magazines.asm"
-INCLUDE "engine/events/hidden_objects/bills_house_pc.asm"
-INCLUDE "engine/events/hidden_objects/oaks_lab_email.asm"
+INCLUDE "engine/events/hidden_events/new_bike.asm"
+INCLUDE "engine/events/hidden_events/oaks_lab_posters.asm"
+INCLUDE "engine/events/hidden_events/safari_game.asm"
+INCLUDE "engine/events/hidden_events/cinnabar_gym_quiz.asm"
+INCLUDE "engine/events/hidden_events/magazines.asm"
+INCLUDE "engine/events/hidden_events/bills_house_pc.asm"
+INCLUDE "engine/events/hidden_events/oaks_lab_email.asm"
SECTION "Bill's PC", ROMX
@@ -193,13 +193,13 @@ SECTION "Dungeon Warps", ROMX
INCLUDE "engine/overworld/dungeon_warps.asm"
-SECTION "Hidden Objects 2", ROMX
+SECTION "Hidden Events 2", ROMX
INCLUDE "engine/events/card_key.asm"
INCLUDE "engine/events/prize_menu.asm"
-INCLUDE "engine/events/hidden_objects/school_notebooks.asm"
-INCLUDE "engine/events/hidden_objects/fighting_dojo.asm"
-INCLUDE "engine/events/hidden_objects/indigo_plateau_hq.asm"
+INCLUDE "engine/events/hidden_events/school_notebooks.asm"
+INCLUDE "engine/events/hidden_events/fighting_dojo.asm"
+INCLUDE "engine/events/hidden_events/indigo_plateau_hq.asm"
SECTION "Battle Engine 7", ROMX
@@ -234,17 +234,17 @@ SECTION "Starter Dex", ROMX
INCLUDE "engine/events/starter_dex.asm"
-SECTION "Hidden Objects 3", ROMX
+SECTION "Hidden Events 3", ROMX
INCLUDE "engine/movie/evolution.asm"
INCLUDE "engine/pokemon/set_types.asm"
-INCLUDE "engine/events/hidden_objects/reds_room.asm"
-INCLUDE "engine/events/hidden_objects/route_15_binoculars.asm"
-INCLUDE "engine/events/hidden_objects/museum_fossils.asm"
-INCLUDE "engine/events/hidden_objects/fanclub_pictures.asm"
-INCLUDE "engine/events/hidden_objects/museum_fossils2.asm"
-INCLUDE "engine/events/hidden_objects/school_blackboard.asm"
-INCLUDE "engine/events/hidden_objects/vermilion_gym_trash.asm"
+INCLUDE "engine/events/hidden_events/reds_room.asm"
+INCLUDE "engine/events/hidden_events/route_15_binoculars.asm"
+INCLUDE "engine/events/hidden_events/museum_fossils.asm"
+INCLUDE "engine/events/hidden_events/fanclub_pictures.asm"
+INCLUDE "engine/events/hidden_events/museum_fossils2.asm"
+INCLUDE "engine/events/hidden_events/school_blackboard.asm"
+INCLUDE "engine/events/hidden_events/vermilion_gym_trash.asm"
SECTION "Cinnabar Lab Fossils", ROMX
@@ -252,12 +252,12 @@ SECTION "Cinnabar Lab Fossils", ROMX
INCLUDE "engine/events/cinnabar_lab.asm"
-SECTION "Hidden Objects 4", ROMX
+SECTION "Hidden Events 4", ROMX
-INCLUDE "engine/events/hidden_objects/gym_statues.asm"
-INCLUDE "engine/events/hidden_objects/bench_guys.asm"
-INCLUDE "engine/events/hidden_objects/blues_room.asm"
-INCLUDE "engine/events/hidden_objects/pokecenter_pc.asm"
+INCLUDE "engine/events/hidden_events/gym_statues.asm"
+INCLUDE "engine/events/hidden_events/bench_guys.asm"
+INCLUDE "engine/events/hidden_events/blues_room.asm"
+INCLUDE "engine/events/hidden_events/pokecenter_pc.asm"
SECTION "Version Graphics", ROMX
@@ -352,7 +352,7 @@ INCLUDE "engine/overworld/specific_script_flags.asm"
SECTION "Try Pikachu Movement", ROMX
-INCLUDE "engine/overworld/unused_load_missable_object_data.asm"
+INCLUDE "engine/overworld/unused_load_toggleable_object_data.asm"
INCLUDE "engine/events/try_pikachu_movement.asm"
@@ -362,10 +362,10 @@ INCLUDE "engine/events/pokecenter_chansey.asm"
INCLUDE "engine/movie/credits.asm"
-SECTION "Hidden Objects Core", ROMX
+SECTION "Hidden Events Core", ROMX
-INCLUDE "engine/overworld/hidden_objects.asm"
-INCLUDE "engine/events/hidden_objects/vermilion_gym_trash2.asm"
+INCLUDE "engine/overworld/hidden_events.asm"
+INCLUDE "engine/events/hidden_events/vermilion_gym_trash2.asm"
SECTION "Battle Engine 8", ROMX
diff --git a/ram/hram.asm b/ram/hram.asm
index 7c38d138..a827e652 100644
--- a/ram/hram.asm
+++ b/ram/hram.asm
@@ -325,7 +325,7 @@ hItemToRemoveIndex:: db
NEXTU
hItemCounter::
hSavedCoordIndex::
-hMissableObjectIndex::
+hToggleableObjectIndex::
hGymTrashCanRandNumMask::
hInteractedWithBookshelf::
db
@@ -353,7 +353,7 @@ hDivisor2:: db
hQuotient2:: db
NEXTU
-hIsHiddenMissableObject:: db
+hIsToggleableObjectOff:: db
ENDU
hMapROMBank:: db
@@ -373,7 +373,7 @@ hSpriteMapXCoord:: db
NEXTU
hItemAlreadyFound:: db
ds 2
-hDidntFindAnyHiddenObject:: db
+hDidntFindAnyHiddenEvent:: db
NEXTU
ds 1
diff --git a/ram/vram.asm b/ram/vram.asm
index fafb5d8e..0819fe0a 100644
--- a/ram/vram.asm
+++ b/ram/vram.asm
@@ -12,8 +12,8 @@ NEXTU
; battle/menu
vSprites:: ds $80 tiles
vFont:: ds $80 tiles
-vFrontPic:: ds 7 * 7 tiles
-vBackPic:: ds 7 * 7 tiles
+vFrontPic:: ds PIC_SIZE tiles
+vBackPic:: ds PIC_SIZE tiles
NEXTU
; overworld
@@ -25,7 +25,7 @@ NEXTU
; title
ds $80 tiles
vTitleLogo:: ds $80 tiles
- ds 7 * 7 tiles
+ ds PIC_SIZE tiles
vTitleLogo2:: ds 30 tiles
ENDU
diff --git a/ram/wram.asm b/ram/wram.asm
index b3d5dd5e..817b6b28 100644
--- a/ram/wram.asm
+++ b/ram/wram.asm
@@ -272,7 +272,7 @@ wOverworldMap:: ds 1300
wOverworldMapEnd::
NEXTU
-wTempPic:: ds 7 * 7 tiles
+wTempPic:: ds PIC_SIZE tiles
NEXTU
wPrinterData::
@@ -467,7 +467,7 @@ wCheckFor180DegreeTurn:: db
ds 1
-wMissableObjectIndex:: db
+wToggleableObjectIndex:: db
wPredefID:: db
wPredefHL:: dw
@@ -506,7 +506,7 @@ wFilteredBagItems:: ds 4
NEXTU
; Saved copy of OAM for the first frame of the animation to make it easy to
; flip back from the second frame.
-wMonPartySpritesSavedOAM:: ds $60
+wMonPartySpritesSavedOAM:: ds OBJ_SIZE * 4 * PARTY_LENGTH
NEXTU
wTrainerCardBlkPacket:: ds $40
@@ -533,7 +533,7 @@ wSlotMachineSevenAndBarModeChance:: db
; ROM back to return to when the player is done with the slot machine
wSlotMachineSavedROMBank:: db
ds 166
-wLuckySlotHiddenObjectIndex:: db
+wLuckySlotHiddenEventIndex:: db
NEXTU
; values between 0-6. Shake screen horizontally, shake screen vertically, blink Pokemon...
@@ -544,7 +544,7 @@ wAnimPalette:: db
NEXTU
ds 60
; temporary buffer when swapping party mon data
-wSwitchPartyMonTempBuffer:: ds 44 ; party_struct size
+wSwitchPartyMonTempBuffer:: ds PARTYMON_STRUCT_LENGTH
NEXTU
ds 120
@@ -857,7 +857,11 @@ NEXTU
ds 1
; difference in X between the next ball and the current one
wHUDPokeballGfxOffsetX:: db
-wHUDGraphicsTiles:: ds 3
+wHUDGraphicsTiles::
+wHUDUnusedTopTile:: db
+wHUDCornerTile:: db
+wHUDTriangleTile:: db
+wHUDGraphicsTilesEnd::
NEXTU
; the level of the mon at the time it entered day care
@@ -909,12 +913,12 @@ wTempCoins1:: dw
wTempCoins2:: dw
NEXTU
-wHiddenObjectFunctionArgument:: db
-wHiddenObjectFunctionRomBank:: db
-wHiddenObjectIndex:: db
-wHiddenObjectY:: db
+wHiddenEventFunctionArgument:: db
+wHiddenEventFunctionRomBank:: db
+wHiddenEventIndex:: db
+wHiddenEventY:: db
wHiddenItemOrCoinsIndex::
-wHiddenObjectX:: db
+wHiddenEventX:: db
NEXTU
wPlayerSpinInPlaceAnimFrameDelay:: db
@@ -1254,7 +1258,7 @@ NEXTU
wPartyHPBarAttributes:: ds PARTY_LENGTH
ENDU
-wGymCityName:: ds 17
+wGymCityName:: ds GYM_CITY_LENGTH
wGymLeaderName:: ds NAME_LENGTH
@@ -1383,7 +1387,7 @@ wTrainerPicPointer:: dw
ds 1
UNION
-wTempMoveNameBuffer:: ds ITEM_NAME_LENGTH + 1
+wTempMoveNameBuffer:: ds MOVE_NAME_LENGTH
NEXTU
; The name of the mon that is learning a move.
@@ -1395,7 +1399,7 @@ ENDU
; money received after battle = base money × level of last enemy mon
wTrainerBaseMoney:: dw ; BCD
-wMissableObjectCounter:: db
+wToggleableObjectCounter:: db
ds 1
@@ -1445,6 +1449,7 @@ wCriticalHitOrOHKO:: db
wMoveMissed:: db
+wBattleStatusData::
; always 0
wPlayerStatsToDouble:: db
; always 0
@@ -1502,6 +1507,7 @@ wPlayerNumHits:: db
ENDU
ds 2
+wBattleStatusDataEnd::
; non-zero when an item or move that allows escape from battle was used
wEscapedFromBattle:: db
@@ -1731,7 +1737,8 @@ wMoves:: ds NUM_MOVES
wMoveNum:: db
-wMovesString:: ds 56
+; concatenated move name list where intermediate '@' are replaced with '<NEXT>'
+wMovesString:: ds NUM_MOVES * MOVE_NAME_LENGTH
wUnusedCurMapTilesetCopy:: db
@@ -1981,7 +1988,7 @@ wWestConnectionHeader:: map_connection_struct wWest
wEastConnectionHeader:: map_connection_struct wEast
; sprite set for the current map (11 sprite picture ID's)
-wSpriteSet:: ds 11
+wSpriteSet:: ds SPRITE_SET_LENGTH
; sprite set ID for the current map
wSpriteSetID:: db
@@ -2154,9 +2161,9 @@ wUnusedMapVariable:: db
wPlayerCoins:: dw ; BCD
-; bit array of missable objects. set = removed
-wMissableObjectFlags:: flag_array $100
-wMissableObjectFlagsEnd::
+; bit array of toggleable objects; bit set = toggled off
+wToggleableObjectFlags:: flag_array $100
+wToggleableObjectFlagsEnd::
ds 7
@@ -2165,9 +2172,9 @@ wSavedSpriteImageIndex:: db
; each entry consists of 2 bytes
; * the sprite ID (depending on the current map)
-; * the missable object index (global, used for wMissableObjectFlags)
+; * the toggleable object index (global, used for wToggleableObjectFlags)
; terminated with $FF
-wMissableObjectList:: ds 16 * 2 + 1
+wToggleableObjectList:: ds 16 * 2 + 1
ds 1
diff --git a/scripts/BillsHouse.asm b/scripts/BillsHouse.asm
index cb1afbdd..8582e397 100644
--- a/scripts/BillsHouse.asm
+++ b/scripts/BillsHouse.asm
@@ -94,8 +94,8 @@ BillsHouseScript3:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_BILL_POKEMON
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_BILL_POKEMON
+ ld [wToggleableObjectIndex], a
predef HideObject
call CheckPikachuFollowingPlayer
jr z, .asm_1e13e
@@ -153,8 +153,8 @@ BillsHouseScript5:
ld a, 5
ldh [hSpriteMapXCoord], a
call SetSpritePosition1
- ld a, HS_BILL_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_BILL_1
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld c, 8
call DelayFrames
@@ -179,13 +179,13 @@ BillsHouseScript5:
.asm_1e1c6
ld a, BILLSHOUSE_BILL1
ldh [hSpriteIndex], a
- ld de, MovementData_1e807
+ ld de, .BillExitMachineMovement
call MoveSprite
ld a, SCRIPT_BILLSHOUSE_SCRIPT6
ld [wBillsHouseCurScript], a
ret
-MovementData_1e807:
+.BillExitMachineMovement:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
diff --git a/scripts/BillsHouse_2.asm b/scripts/BillsHouse_2.asm
index f75ab204..4a897d87 100644
--- a/scripts/BillsHouse_2.asm
+++ b/scripts/BillsHouse_2.asm
@@ -39,11 +39,11 @@ BillsHousePrintBillSSTicketText::
ld hl, .SSTicketReceivedText
call PrintText
SetEvent EVENT_GOT_SS_TICKET
- ld a, HS_CERULEAN_GUARD_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_GUARD_1
+ ld [wToggleableObjectIndex], a
predef ShowObject
- ld a, HS_CERULEAN_GUARD_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_GUARD_2
+ ld [wToggleableObjectIndex], a
predef HideObject
.got_ss_ticket
ld hl, .WhyDontYouGoInsteadOfMeText
diff --git a/scripts/BluesHouse.asm b/scripts/BluesHouse.asm
index 834a24e4..2d7f19dc 100644
--- a/scripts/BluesHouse.asm
+++ b/scripts/BluesHouse.asm
@@ -39,8 +39,8 @@ BluesHouseDaisySittingText:
lb bc, TOWN_MAP, 1
call GiveItem
jr nc, .bag_full
- ld a, HS_TOWN_MAP
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_TOWN_MAP
+ ld [wToggleableObjectIndex], a
predef HideObject
ld hl, GotMapText
call PrintText
diff --git a/scripts/CeladonMansionRoofHouse.asm b/scripts/CeladonMansionRoofHouse.asm
index e71d14d5..330efe0c 100644
--- a/scripts/CeladonMansionRoofHouse.asm
+++ b/scripts/CeladonMansionRoofHouse.asm
@@ -16,8 +16,8 @@ CeladonMansionRoofHouseEeveePokeballText:
lb bc, EEVEE, 25
call GivePokemon
jr nc, .party_full
- ld a, HS_CELADON_MANSION_EEVEE_GIFT
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CELADON_MANSION_EEVEE_GIFT
+ ld [wToggleableObjectIndex], a
predef HideObject
.party_full
jp TextScriptEnd
diff --git a/scripts/CeruleanCity.asm b/scripts/CeruleanCity.asm
index 0bc77b42..8f26cb43 100644
--- a/scripts/CeruleanCity.asm
+++ b/scripts/CeruleanCity.asm
@@ -8,8 +8,8 @@ CeruleanCityClearScripts:
xor a ; SCRIPT_CERULEANCITY_DEFAULT
ld [wJoyIgnore], a
ld [wCeruleanCityCurScript], a
- ld a, HS_CERULEAN_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_RIVAL
+ ld [wToggleableObjectIndex], a
predef_jump HideObject
CeruleanCity_ScriptPointers:
@@ -88,8 +88,8 @@ ENDC
call GetPointerWithinSpriteStateData2
ld [hl], 25
.playerOnRightSideOfBridge
- ld a, HS_CERULEAN_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_RIVAL
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld de, CeruleanCityMovement1
ld a, CERULEANCITY_RIVAL
@@ -203,8 +203,8 @@ CeruleanCityRivalCleanupScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_CERULEAN_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_RIVAL
+ ld [wToggleableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
diff --git a/scripts/CeruleanCity_2.asm b/scripts/CeruleanCity_2.asm
index 53ace5c8..85986a7a 100644
--- a/scripts/CeruleanCity_2.asm
+++ b/scripts/CeruleanCity_2.asm
@@ -3,14 +3,14 @@ CeruleanHideRocket:
; one is called after you beat the Rocket that gives you TM28 DIG.
; the screen then fades out, he disappears, and fades back in
call GBFadeOutToBlack
- ld a, HS_CERULEAN_GUARD_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_GUARD_1
+ ld [wToggleableObjectIndex], a
predef ShowObject
- ld a, HS_CERULEAN_GUARD_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_GUARD_2
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_CERULEAN_ROCKET
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_ROCKET
+ ld [wToggleableObjectIndex], a
predef HideObject
call GBFadeInFromBlack
ret
diff --git a/scripts/CeruleanMelaniesHouse.asm b/scripts/CeruleanMelaniesHouse.asm
index 1d2b817d..8b8095e0 100644
--- a/scripts/CeruleanMelaniesHouse.asm
+++ b/scripts/CeruleanMelaniesHouse.asm
@@ -44,8 +44,8 @@ CeruleanMelanieHouseMelanieText:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, CeruleanHouse1Text_1cfd3
call PrintText
- ld a, HS_CERULEAN_BULBASAUR
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_BULBASAUR
+ ld [wToggleableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_BULBASAUR_IN_CERULEAN
.asm_1cfb3
diff --git a/scripts/ChampionsRoom.asm b/scripts/ChampionsRoom.asm
index 8db95e56..42b9e7be 100644
--- a/scripts/ChampionsRoom.asm
+++ b/scripts/ChampionsRoom.asm
@@ -110,8 +110,8 @@ ChampionsRoomOakArrivesScript:
ld a, CHAMPIONSROOM_OAK
ldh [hSpriteIndex], a
call MoveSprite
- ld a, HS_CHAMPIONS_ROOM_OAK
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CHAMPIONS_ROOM_OAK
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld a, SCRIPT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
ld [wChampionsRoomCurScript], a
@@ -187,8 +187,8 @@ ChampionsRoomOakExitsScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_CHAMPIONS_ROOM_OAK
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CHAMPIONS_ROOM_OAK
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, SCRIPT_CHAMPIONSROOM_PLAYER_FOLLOWS_OAK
ld [wChampionsRoomCurScript], a
diff --git a/scripts/Colosseum.asm b/scripts/Colosseum.asm
index 4aaa4236..1489fd2c 100644
--- a/scripts/Colosseum.asm
+++ b/scripts/Colosseum.asm
@@ -1,4 +1,5 @@
Colosseum_Script:
+ ASSERT TRADECENTER_OPPONENT == COLOSSEUM_OPPONENT
jp TradeCenter_Script
Colosseum_TextPointers:
diff --git a/scripts/Daycare.asm b/scripts/Daycare.asm
index f9c41edf..f7544c7f 100644
--- a/scripts/Daycare.asm
+++ b/scripts/Daycare.asm
@@ -183,7 +183,7 @@ DaycareGentlemanText:
ld a, [wPartyCount]
dec a
push af
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
push bc
ld hl, wPartyMon1Moves
call AddNTimes
@@ -200,7 +200,7 @@ DaycareGentlemanText:
call AddNTimes
ld d, h
ld e, l
- ld bc, wPartyMon1MaxHP - wPartyMon1HP
+ ld bc, MON_MAXHP - MON_HP
add hl, bc
ld a, [hli]
ld [de], a
diff --git a/scripts/FightingDojo.asm b/scripts/FightingDojo.asm
index 04b35e82..cf822d1f 100644
--- a/scripts/FightingDojo.asm
+++ b/scripts/FightingDojo.asm
@@ -246,8 +246,8 @@ FightingDojoHitmonleePokeBallText:
jr nc, .done
; once Poké Ball is taken, hide sprite
- ld a, HS_FIGHTING_DOJO_GIFT_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_FIGHTING_DOJO_GIFT_1
+ ld [wToggleableObjectIndex], a
predef HideObject
SetEvents EVENT_GOT_HITMONLEE, EVENT_DEFEATED_FIGHTING_DOJO
.done
@@ -281,8 +281,8 @@ FightingDojoHitmonchanPokeBallText:
SetEvents EVENT_GOT_HITMONCHAN, EVENT_DEFEATED_FIGHTING_DOJO
; once Poké Ball is taken, hide sprite
- ld a, HS_FIGHTING_DOJO_GIFT_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_FIGHTING_DOJO_GIFT_2
+ ld [wToggleableObjectIndex], a
predef HideObject
.done
jp TextScriptEnd
diff --git a/scripts/GameCorner.asm b/scripts/GameCorner.asm
index 5aaa998c..4a4ce3ed 100644
--- a/scripts/GameCorner.asm
+++ b/scripts/GameCorner.asm
@@ -20,7 +20,7 @@ GameCornerSelectLuckySlotMachine:
srl a
srl a
srl a
- ld [wLuckySlotHiddenObjectIndex], a
+ ld [wLuckySlotHiddenEventIndex], a
ret
GameCornerSetRocketHideoutDoorTile:
@@ -111,8 +111,8 @@ GameCornerRocketExitScript:
ret nz
xor a
ld [wJoyIgnore], a
- ld a, HS_GAME_CORNER_ROCKET
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_GAME_CORNER_ROCKET
+ ld [wToggleableObjectIndex], a
predef HideObject
ld hl, wCurrentMapScriptFlags
set BIT_CUR_MAP_LOADED_1, [hl]
diff --git a/scripts/HallOfFame.asm b/scripts/HallOfFame.asm
index 31d56022..8e4f1275 100644
--- a/scripts/HallOfFame.asm
+++ b/scripts/HallOfFame.asm
@@ -96,8 +96,8 @@ HallOfFameOakCongratulationsScript:
call DisplayTextID
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
- ld a, HS_CERULEAN_CAVE_GUY
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_CERULEAN_CAVE_GUY
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, SCRIPT_HALLOFFAME_RESET_EVENTS_AND_SAVE
ld [wHallOfFameCurScript], a
diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm
index 4b82ea12..7890c88e 100644
--- a/scripts/MtMoonB2F.asm
+++ b/scripts/MtMoonB2F.asm
@@ -48,9 +48,9 @@ MtMoonB2FSetScript:
ret
MtMoonB2FScript_HideJessieJames:
- ld a, HS_MT_MOON_B2F_JESSIE
+ ld a, TOGGLE_MT_MOON_B2F_JESSIE
call MtMoonB2FScript_HideObject
- ld a, HS_MT_MOON_B2F_JAMES
+ ld a, TOGGLE_MT_MOON_B2F_JAMES
call MtMoonB2FScript_HideObject
ret
@@ -208,13 +208,13 @@ MtMoonB2FSuperNerdTakesOtherFossilScript:
ldh [hTextID], a
call DisplayTextID
CheckEvent EVENT_GOT_HELIX_FOSSIL
- jr z, .asm_49e1d
- ld a, HS_MT_MOON_B2F_FOSSIL_1
- jr .asm_49e1f
-.asm_49e1d
- ld a, HS_MT_MOON_B2F_FOSSIL_2
-.asm_49e1f
- ld [wMissableObjectIndex], a
+ jr z, .got_helix_fossil
+ ld a, TOGGLE_MT_MOON_B2F_FOSSIL_1
+ jr .continue
+.got_helix_fossil
+ ld a, TOGGLE_MT_MOON_B2F_FOSSIL_2
+.continue
+ ld [wToggleableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
@@ -237,9 +237,9 @@ MtMoonB2FScript_49e15:
ldh [hJoyHeld], a
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
- ld a, HS_MT_MOON_B2F_JESSIE
+ ld a, TOGGLE_MT_MOON_B2F_JESSIE
call MtMoonB2FScript_ShowObject
- ld a, HS_MT_MOON_B2F_JAMES
+ ld a, TOGGLE_MT_MOON_B2F_JAMES
call MtMoonB2FScript_ShowObject
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
@@ -379,9 +379,9 @@ MtMoonB2FScript14:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
call GBFadeOutToBlack
- ld a, HS_MT_MOON_B2F_JESSIE
+ ld a, TOGGLE_MT_MOON_B2F_JESSIE
call MtMoonB2FScript_HideObject
- ld a, HS_MT_MOON_B2F_JAMES
+ ld a, TOGGLE_MT_MOON_B2F_JAMES
call MtMoonB2FScript_HideObject
call UpdateSprites
call Delay3
@@ -402,14 +402,14 @@ MtMoonB2FScript15:
ret
MtMoonB2FScript_ShowObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
ret
MtMoonB2FScript_HideObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ret
@@ -536,8 +536,8 @@ MtMoonB2FDomeFossilText:
call GiveItem
jp nc, MtMoonB2FYouHaveNoRoomText
call MtMoonB2FReceivedFossilText
- ld a, HS_MT_MOON_B2F_FOSSIL_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_MT_MOON_B2F_FOSSIL_1
+ ld [wToggleableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_DOME_FOSSIL
ld a, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD
@@ -563,8 +563,8 @@ MtMoonB2FHelixFossilText:
call GiveItem
jp nc, MtMoonB2FYouHaveNoRoomText
call MtMoonB2FReceivedFossilText
- ld a, HS_MT_MOON_B2F_FOSSIL_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_MT_MOON_B2F_FOSSIL_2
+ ld [wToggleableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_HELIX_FOSSIL
ld a, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD
diff --git a/scripts/Museum1F_2.asm b/scripts/Museum1F_2.asm
index 9a848f50..502dec5c 100644
--- a/scripts/Museum1F_2.asm
+++ b/scripts/Museum1F_2.asm
@@ -152,8 +152,8 @@ Museum1FPrintScientist2Text::
call GiveItem
jr nc, .bag_full
SetEvent EVENT_GOT_OLD_AMBER
- ld a, HS_OLD_AMBER
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OLD_AMBER
+ ld [wToggleableObjectIndex], a
predef HideObject
ld hl, .ReceivedOldAmberText
jr .done
diff --git a/scripts/NameRatersHouse.asm b/scripts/NameRatersHouse.asm
index 61b10a3e..b1e3bf95 100644
--- a/scripts/NameRatersHouse.asm
+++ b/scripts/NameRatersHouse.asm
@@ -19,7 +19,7 @@ NameRatersHouseCheckMonOTScript:
call .check_match_loop
jr c, .no_match
ld hl, wPartyMon1OTID
- ld bc, wPartyMon2 - wPartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wWhichPokemon]
call AddNTimes
ld de, wPlayerID
diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm
index c7197cb9..2fff09f6 100644
--- a/scripts/OaksLab.asm
+++ b/scripts/OaksLab.asm
@@ -14,7 +14,7 @@ OaksLab_ScriptPointers:
def_script_pointers
dw_const OaksLabDefaultScript, SCRIPT_OAKSLAB_DEFAULT
dw_const OaksLabOakEntersLabScript, SCRIPT_OAKSLAB_OAK_ENTERS_LAB
- dw_const OaksLabHideShowOaksScript, SCRIPT_OAKSLAB_HIDE_SHOW_OAKS
+ dw_const OaksLabToggleOaksScript, SCRIPT_OAKSLAB_TOGGLE_OAKS
dw_const OaksLabPlayerEntersLabScript, SCRIPT_OAKSLAB_PLAYER_ENTERS_LAB
dw_const OaksLabFollowedOakScript, SCRIPT_OAKSLAB_FOLLOWED_OAK
dw_const OaksLabOakChooseMonSpeechScript, SCRIPT_OAKSLAB_OAK_CHOOSE_MON_SPEECH
@@ -42,8 +42,8 @@ OaksLabDefaultScript:
ld a, [wNPCMovementScriptFunctionNum]
and a
ret nz
- ld a, HS_OAKS_LAB_OAK_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OAKS_LAB_OAK_2
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld hl, wStatusFlags4
res BIT_NO_BATTLES, [hl]
@@ -58,7 +58,7 @@ OaksLabOakEntersLabScript:
ld de, OakEntryMovement
call MoveSprite
- ld a, SCRIPT_OAKSLAB_HIDE_SHOW_OAKS
+ ld a, SCRIPT_OAKSLAB_TOGGLE_OAKS
ld [wOaksLabCurScript], a
ret
@@ -68,15 +68,15 @@ OakEntryMovement:
db NPC_MOVEMENT_UP
db -1 ; end
-OaksLabHideShowOaksScript:
+OaksLabToggleOaksScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_OAKS_LAB_OAK_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OAKS_LAB_OAK_2
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_OAKS_LAB_OAK_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OAKS_LAB_OAK_1
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld a, SCRIPT_OAKSLAB_PLAYER_ENTERS_LAB
@@ -219,8 +219,8 @@ OaksLabRivalTakesPokeballScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
jr nz, .asm_1c564
- ld a, HS_STARTER_BALL_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_STARTER_BALL_1
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, OAKSLAB_RIVAL
ldh [hSpriteIndex], a
@@ -441,8 +441,8 @@ OaksLabPlayerWatchRivalExitScript:
jr nz, .checkRivalPosition
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
- ld a, HS_OAKS_LAB_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OAKS_LAB_RIVAL
+ ld [wToggleableObjectIndex], a
predef HideObject
call PlayDefaultMusic
ld a, SCRIPT_OAKSLAB_PIKACHU_ESCAPES_POKEBALL
@@ -505,8 +505,8 @@ OaksLabRivalArrivesAtOaksRequestScript:
call DisplayTextID
callfar OaksLabPikachuMovementScript
call OaksLabCalcRivalMovementScript
- ld a, HS_OAKS_LAB_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OAKS_LAB_RIVAL
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld a, [wNPCMovementDirections2Index]
ld [wSavedNPCMovementDirections2Index], a
@@ -565,11 +565,11 @@ OaksLabOakGivesPokedexScript:
ldh [hTextID], a
call DisplayTextID
call Delay3
- ld a, HS_POKEDEX_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_POKEDEX_1
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_POKEDEX_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_POKEDEX_2
+ ld [wToggleableObjectIndex], a
predef HideObject
call OaksLabRivalFaceUpOakFaceDownScript
ld a, TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM
@@ -588,11 +588,11 @@ OaksLabOakGivesPokedexScript:
ld a, SCRIPT_VIRIDIANCITY_AFTER_POKEDEX
ld [wViridianCityCurScript], a
SetEvent EVENT_OAK_GOT_PARCEL
- ld a, HS_LYING_OLD_MAN
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_LYING_OLD_MAN
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_OLD_MAN_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OLD_MAN_2
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld a, [wSavedNPCMovementDirections2Index]
ld b, 0
@@ -617,14 +617,14 @@ OaksLabRivalLeavesWithPokedexScript:
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
call PlayDefaultMusic
- ld a, HS_OAKS_LAB_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OAKS_LAB_RIVAL
+ ld [wToggleableObjectIndex], a
predef HideObject
SetEvent EVENT_1ST_ROUTE22_RIVAL_BATTLE
ResetEventReuseHL EVENT_2ND_ROUTE22_RIVAL_BATTLE
SetEventReuseHL EVENT_ROUTE22_RIVAL_WANTS_BATTLE
- ld a, HS_ROUTE_22_RIVAL_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROUTE_22_RIVAL_1
+ ld [wToggleableObjectIndex], a
predef ShowObject
xor a
ld [wJoyIgnore], a
diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm
index 42e3ea3e..0932ff56 100644
--- a/scripts/PalletTown.asm
+++ b/scripts/PalletTown.asm
@@ -66,8 +66,8 @@ PalletTownOakHeyWaitScript:
ld [hli], a ; SPRITESTATEDATA2_MAPY
ld a, 14
ld [hl], a ; SPRITESTATEDATA2_MAPX
- ld a, HS_PALLET_TOWN_OAK
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_PALLET_TOWN_OAK
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld a, $2
ld [wSprite01StateData1MovementStatus], a
@@ -206,11 +206,11 @@ PalletTownDaisyScript:
CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1
jr nz, .next
SetEvent EVENT_DAISY_WALKING
- ld a, HS_DAISY_SITTING
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_DAISY_SITTING
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_DAISY_WALKING
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_DAISY_WALKING
+ ld [wToggleableObjectIndex], a
predef_jump ShowObject
.next
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
diff --git a/scripts/PewterCity.asm b/scripts/PewterCity.asm
index ffe546ca..4d4cdb1a 100644
--- a/scripts/PewterCity.asm
+++ b/scripts/PewterCity.asm
@@ -95,8 +95,8 @@ PewterCityHideSuperNerd1Script:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_MUSEUM_GUY
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_MUSEUM_GUY
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, SCRIPT_PEWTERCITY_RESET_SUPER_NERD1
ld [wPewterCityCurScript], a
@@ -106,8 +106,8 @@ PewterCityResetSuperNerd1Script:
ld a, PEWTERCITY_SUPER_NERD1
ld [wSpriteIndex], a
call SetSpritePosition2
- ld a, HS_MUSEUM_GUY
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_MUSEUM_GUY
+ ld [wToggleableObjectIndex], a
predef ShowObject
xor a
ld [wJoyIgnore], a
@@ -161,8 +161,8 @@ PewterCityHideYoungsterScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_GYM_GUY
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_GYM_GUY
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, SCRIPT_PEWTERCITY_RESET_YOUNGSTER
ld [wPewterCityCurScript], a
@@ -172,8 +172,8 @@ PewterCityResetYoungsterScript:
ld a, PEWTERCITY_YOUNGSTER
ld [wSpriteIndex], a
call SetSpritePosition2
- ld a, HS_GYM_GUY
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_GYM_GUY
+ ld [wToggleableObjectIndex], a
predef ShowObject
xor a
ld [wJoyIgnore], a
diff --git a/scripts/PewterGym.asm b/scripts/PewterGym.asm
index 4cb13fa4..dcda6e16 100644
--- a/scripts/PewterGym.asm
+++ b/scripts/PewterGym.asm
@@ -67,11 +67,11 @@ PewterGymScriptReceiveTM34:
ld hl, wBeatGymFlags
set BIT_BOULDERBADGE, [hl]
- ld a, HS_GYM_GUY
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_GYM_GUY
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_ROUTE_22_RIVAL_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROUTE_22_RIVAL_1
+ ld [wToggleableObjectIndex], a
predef HideObject
ResetEvents EVENT_1ST_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
diff --git a/scripts/PokemonTower2F.asm b/scripts/PokemonTower2F.asm
index d5fbd932..871c9e4d 100644
--- a/scripts/PokemonTower2F.asm
+++ b/scripts/PokemonTower2F.asm
@@ -113,8 +113,8 @@ PokemonTower2FRivalExitsScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_POKEMON_TOWER_2F_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_POKEMON_TOWER_2F_RIVAL
+ ld [wToggleableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm
index 3e30db56..bf7ad30d 100644
--- a/scripts/PokemonTower7F.asm
+++ b/scripts/PokemonTower7F.asm
@@ -57,9 +57,9 @@ PokemonTower7FScript_60d2a:
ldh [hJoyHeld], a
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
- ld a, HS_POKEMON_TOWER_7F_JESSIE
+ ld a, TOGGLE_POKEMON_TOWER_7F_JESSIE
call PokemonTower7FScript_ShowObject
- ld a, HS_POKEMON_TOWER_7F_JAMES
+ ld a, TOGGLE_POKEMON_TOWER_7F_JAMES
call PokemonTower7FScript_ShowObject
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
@@ -201,9 +201,9 @@ PokemonTower7FScript9:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
call GBFadeOutToBlack
- ld a, HS_POKEMON_TOWER_7F_JESSIE
+ ld a, TOGGLE_POKEMON_TOWER_7F_JESSIE
call PokemonTower7FScript_HideObject
- ld a, HS_POKEMON_TOWER_7F_JAMES
+ ld a, TOGGLE_POKEMON_TOWER_7F_JAMES
call PokemonTower7FScript_HideObject
call UpdateSprites
call Delay3
@@ -223,22 +223,22 @@ PokemonTower7FScript10:
ret
PokemonTower7FScript_ShowObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
ret
PokemonTower7FScript_HideObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ret
PokemonTower7FWarpToMrFujiHouseScript:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
- ld a, HS_POKEMON_TOWER_7F_MR_FUJI
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_POKEMON_TOWER_7F_MR_FUJI
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, SPRITE_FACING_UP
ld [wSpritePlayerStateData1FacingDirection], a
@@ -303,14 +303,14 @@ PokemonTower7FMrFujiText:
call PrintText
SetEvent EVENT_RESCUED_MR_FUJI
SetEvent EVENT_RESCUED_MR_FUJI_2
- ld a, HS_MR_FUJIS_HOUSE_MR_FUJI
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_MR_FUJIS_HOUSE_MR_FUJI
+ ld [wToggleableObjectIndex], a
predef ShowObject
- ld a, HS_SAFFRON_CITY_E
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_SAFFRON_CITY_E
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_SAFFRON_CITY_F
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_SAFFRON_CITY_F
+ ld [wToggleableObjectIndex], a
predef ShowObject
ld a, SCRIPT_POKEMONTOWER7F_WARP_TO_MR_FUJI_HOUSE
ld [wPokemonTower7FCurScript], a
diff --git a/scripts/RocketHideoutB1F.asm b/scripts/RocketHideoutB1F.asm
index 9354a0c7..fc107001 100644
--- a/scripts/RocketHideoutB1F.asm
+++ b/scripts/RocketHideoutB1F.asm
@@ -13,7 +13,7 @@ RocketHideoutB1FDoorCallbackScript:
bit BIT_CUR_MAP_LOADED_1, [hl]
res BIT_CUR_MAP_LOADED_1, [hl]
ret z
- CheckEvent EVENT_677
+ CheckEvent EVENT_ENTERED_ROCKET_HIDEOUT
jr nz, .door_open
CheckEventReuseA EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4
jr nz, .play_sound_door_open
@@ -22,7 +22,8 @@ RocketHideoutB1FDoorCallbackScript:
.play_sound_door_open
ld a, SFX_GO_INSIDE
call PlaySound
- CheckEventHL EVENT_677
+ ; BUG: should be SetEvent to avoid the SFX playing every time you enter the map
+ CheckEventHL EVENT_ENTERED_ROCKET_HIDEOUT
.door_open
ld a, $e ; Floor Block
.set_door_block
diff --git a/scripts/RocketHideoutB4F.asm b/scripts/RocketHideoutB4F.asm
index 15a98853..118ebf89 100644
--- a/scripts/RocketHideoutB4F.asm
+++ b/scripts/RocketHideoutB4F.asm
@@ -18,9 +18,9 @@ RocketHideoutB4FSetScript:
ret
RocketHideoutB4FScript_HideJessieJames:
- ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_JAMES
call RocketHideoutB4FScript_HideObject
- ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_JESSIE
call RocketHideoutB4FScript_HideObject
ret
@@ -52,11 +52,11 @@ RocketHideoutB4FBeatGiovanniScript:
ldh [hTextID], a
call DisplayTextID
call GBFadeOutToBlack
- ld a, HS_ROCKET_HIDEOUT_B4F_GIOVANNI
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_GIOVANNI
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_4
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_4
+ ld [wToggleableObjectIndex], a
predef ShowObject
call UpdateSprites
call GBFadeInFromBlack
@@ -114,9 +114,9 @@ RocketHideoutB4FScript_455a5:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
- ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_JAMES
call RocketHideoutB4FScript_ShowObject
- ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_JESSIE
call RocketHideoutB4FScript_ShowObject
ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT4
call RocketHideoutB4FSetScript
@@ -255,9 +255,9 @@ RocketHideoutB4FScript12:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
call GBFadeOutToBlack
- ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_JAMES
call RocketHideoutB4FScript_HideObject
- ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_JESSIE
call RocketHideoutB4FScript_HideObject
call UpdateSprites
call Delay3
@@ -277,14 +277,14 @@ RocketHideoutB4FScript13:
ret
RocketHideoutB4FScript_ShowObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
ret
RocketHideoutB4FScript_HideObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ret
@@ -399,8 +399,8 @@ RocketHideoutB4FRocketEndBattleText:
text_promptbutton
text_asm
SetEvent EVENT_ROCKET_DROPPED_LIFT_KEY
- ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROCKET_HIDEOUT_B4F_ITEM_5
+ ld [wToggleableObjectIndex], a
predef ShowObject
jp TextScriptEnd
diff --git a/scripts/Route12.asm b/scripts/Route12.asm
index ea9fc567..a6984f87 100644
--- a/scripts/Route12.asm
+++ b/scripts/Route12.asm
@@ -34,8 +34,8 @@ Route12DefaultScript:
ld [wCurOpponent], a
ld a, 30
ld [wCurEnemyLevel], a
- ld a, HS_ROUTE_12_SNORLAX
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROUTE_12_SNORLAX
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, SCRIPT_ROUTE12_SNORLAX_POST_BATTLE
ld [wRoute12CurScript], a
diff --git a/scripts/Route16.asm b/scripts/Route16.asm
index 6e3da97c..a1eb6e85 100644
--- a/scripts/Route16.asm
+++ b/scripts/Route16.asm
@@ -34,8 +34,8 @@ Route16DefaultScript:
ld [wCurOpponent], a
ld a, 30
ld [wCurEnemyLevel], a
- ld a, HS_ROUTE_16_SNORLAX
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROUTE_16_SNORLAX
+ ld [wToggleableObjectIndex], a
predef HideObject
call UpdateSprites
ld a, SCRIPT_ROUTE16_SNORLAX_POST_BATTLE
diff --git a/scripts/Route20.asm b/scripts/Route20.asm
index 5230858e..3c528b09 100644
--- a/scripts/Route20.asm
+++ b/scripts/Route20.asm
@@ -12,48 +12,48 @@ Route20_Script:
Route20BoulderScript:
CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
jr z, .next_boulder_check
- ld a, HS_SEAFOAM_ISLANDS_1F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_1
call Route20ShowObjectScript
- ld a, HS_SEAFOAM_ISLANDS_1F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_2
call Route20ShowObjectScript
- ld hl, .MissableObjectIDs
-.hide_missable_objects
+ ld hl, .ToggleableObjectIDs
+.hide_toggleable_objects
ld a, [hli]
cp $ff
jr z, .next_boulder_check
push hl
call Route20HideObjectScript
pop hl
- jr .hide_missable_objects
+ jr .hide_toggleable_objects
-.MissableObjectIDs:
- db HS_SEAFOAM_ISLANDS_B1F_BOULDER_1
- db HS_SEAFOAM_ISLANDS_B1F_BOULDER_2
- db HS_SEAFOAM_ISLANDS_B2F_BOULDER_1
- db HS_SEAFOAM_ISLANDS_B2F_BOULDER_2
- db HS_SEAFOAM_ISLANDS_B3F_BOULDER_3
- db HS_SEAFOAM_ISLANDS_B3F_BOULDER_4
+.ToggleableObjectIDs:
+ db TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_1
+ db TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_2
+ db TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_1
+ db TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_2
+ db TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_3
+ db TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_4
db -1 ; end
.next_boulder_check
CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE
ret z
- ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_1
call Route20ShowObjectScript
- ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_2
call Route20ShowObjectScript
- ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_1
call Route20HideObjectScript
- ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_2
call Route20HideObjectScript
ret
Route20ShowObjectScript:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef_jump ShowObject
Route20HideObjectScript:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef_jump HideObject
Route20_ScriptPointers:
diff --git a/scripts/Route22.asm b/scripts/Route22.asm
index 77ad1ad0..4e10f7fa 100644
--- a/scripts/Route22.asm
+++ b/scripts/Route22.asm
@@ -226,8 +226,8 @@ Route22Rival1ExitScript:
ret nz
xor a
ld [wJoyIgnore], a
- ld a, HS_ROUTE_22_RIVAL_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROUTE_22_RIVAL_1
+ ld [wToggleableObjectIndex], a
predef HideObject
call PlayDefaultMusic
ResetEvents EVENT_1ST_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
@@ -364,8 +364,8 @@ Route22Rival2ExitScript:
ret nz
xor a
ld [wJoyIgnore], a
- ld a, HS_ROUTE_22_RIVAL_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROUTE_22_RIVAL_2
+ ld [wToggleableObjectIndex], a
predef HideObject
call PlayDefaultMusic
ResetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
diff --git a/scripts/Route23.asm b/scripts/Route23.asm
index 911a2ef3..07558996 100644
--- a/scripts/Route23.asm
+++ b/scripts/Route23.asm
@@ -12,11 +12,11 @@ Route23SetVictoryRoadBoulders:
ret z
ResetEvents EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH2
ResetEvents EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1, EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH2
- ld a, HS_VICTORY_ROAD_3F_BOULDER
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_VICTORY_ROAD_3F_BOULDER
+ ld [wToggleableObjectIndex], a
predef ShowObject
- ld a, HS_VICTORY_ROAD_2F_BOULDER
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_VICTORY_ROAD_2F_BOULDER
+ ld [wToggleableObjectIndex], a
predef_jump HideObject
Route23_ScriptPointers:
diff --git a/scripts/Route25.asm b/scripts/Route25.asm
index 8cb59c30..23faa396 100644
--- a/scripts/Route25.asm
+++ b/scripts/Route25.asm
@@ -5,10 +5,10 @@ Route25_Script:
ld a, [wRoute25CurScript]
call ExecuteCurMapScriptInTable
ld [wRoute25CurScript], a
- call Route25ShowHideBillScript
+ call Route25ToggleBillsScript
ret
-Route25ShowHideBillScript:
+Route25ToggleBillsScript:
ld hl, wd492
res 2, [hl]
res 3, [hl]
@@ -25,22 +25,22 @@ Route25ShowHideBillScript:
CheckEventReuseHL EVENT_MET_BILL_2
jr nz, .met_bill
ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR
- ld a, HS_BILL_POKEMON
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_BILL_POKEMON
+ ld [wToggleableObjectIndex], a
predef ShowObject
jr .done
.met_bill
CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2
jr z, .done
SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
- ld a, HS_NUGGET_BRIDGE_GUY
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_NUGGET_BRIDGE_GUY
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_BILL_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_BILL_1
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_BILL_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_BILL_2
+ ld [wToggleableObjectIndex], a
predef ShowObject
.done
ret
diff --git a/scripts/SSAnne2F.asm b/scripts/SSAnne2F.asm
index 2d98c513..23594d48 100644
--- a/scripts/SSAnne2F.asm
+++ b/scripts/SSAnne2F.asm
@@ -31,8 +31,8 @@ SSAnne2FDefaultScript:
call PlayMusic
ld a, [wCoordIndex]
ldh [hSavedCoordIndex], a
- ld a, HS_SS_ANNE_2F_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_SS_ANNE_2F_RIVAL
+ ld [wToggleableObjectIndex], a
predef ShowObject
call Delay3
ld a, SSANNE2F_RIVAL
@@ -150,8 +150,8 @@ SSAnne2FRivalExitScript:
ret nz
xor a
ld [wJoyIgnore], a
- ld a, HS_SS_ANNE_2F_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_SS_ANNE_2F_RIVAL
+ ld [wToggleableObjectIndex], a
predef HideObject
call PlayDefaultMusic
ld a, SCRIPT_SSANNE2F_NOOP
diff --git a/scripts/SafariZoneGate.asm b/scripts/SafariZoneGate.asm
index 0e1a05bf..e4830b06 100644
--- a/scripts/SafariZoneGate.asm
+++ b/scripts/SafariZoneGate.asm
@@ -14,7 +14,7 @@ SafariZoneGate_ScriptPointers:
dw_const SafariZoneGatePlayerMovingDownScript, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN
dw_const SafariZoneGateLeavingSafariScript, SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI
dw_const SafariZoneGateSetScriptAfterMoveScript, SCRIPT_SAFARIZONEGATE_SET_SCRIPT_AFTER_MOVE
- EXPORT SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI ; used by engine/events/hidden_objects/safari_game.asm
+ EXPORT SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI ; used by engine/events/hidden_events/safari_game.asm
SafariZoneGateDefaultScript:
ld hl, .PlayerNextToSafariZoneWorker1CoordsArray
diff --git a/scripts/SeafoamIslands1F.asm b/scripts/SeafoamIslands1F.asm
index a3ec3c99..1e099f76 100644
--- a/scripts/SeafoamIslands1F.asm
+++ b/scripts/SeafoamIslands1F.asm
@@ -13,23 +13,23 @@ SeafoamIslands1F_Script:
cp $1
jr nz, .boulder2FellDownHole
SetEventReuseHL EVENT_SEAFOAM1_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_1F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_1
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B1F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_1
ld [wObjectToShow], a
jr .hideAndShowBoulderObjects
.boulder2FellDownHole
SetEventAfterBranchReuseHL EVENT_SEAFOAM1_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM1_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_1F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_1F_BOULDER_2
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B1F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_2
ld [wObjectToShow], a
.hideAndShowBoulderObjects
ld a, [wObjectToHide]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, [wObjectToShow]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef_jump ShowObject
.noBoulderWasPushed
ld a, SEAFOAM_ISLANDS_B1F
diff --git a/scripts/SeafoamIslandsB1F.asm b/scripts/SeafoamIslandsB1F.asm
index 0bc2ee18..7558e95b 100644
--- a/scripts/SeafoamIslandsB1F.asm
+++ b/scripts/SeafoamIslandsB1F.asm
@@ -12,23 +12,23 @@ SeafoamIslandsB1F_Script:
cp $1
jr nz, .boulder2FellDownHole
SetEventReuseHL EVENT_SEAFOAM2_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_B1F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_1
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B2F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_1
ld [wObjectToShow], a
jr .hideAndShowBoulderObjects
.boulder2FellDownHole
SetEventAfterBranchReuseHL EVENT_SEAFOAM2_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM2_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_B1F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B1F_BOULDER_2
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B2F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_2
ld [wObjectToShow], a
.hideAndShowBoulderObjects
ld a, [wObjectToHide]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, [wObjectToShow]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef_jump ShowObject
.noBoulderWasPushed
ld a, SEAFOAM_ISLANDS_B2F
diff --git a/scripts/SeafoamIslandsB2F.asm b/scripts/SeafoamIslandsB2F.asm
index 48b7979d..2cdb705e 100644
--- a/scripts/SeafoamIslandsB2F.asm
+++ b/scripts/SeafoamIslandsB2F.asm
@@ -12,23 +12,23 @@ SeafoamIslandsB2F_Script:
cp $1
jr nz, .boulder2FellDownHole
SetEventReuseHL EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_B2F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_1
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_3
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_3
ld [wObjectToShow], a
jr .hideAndShowBoulderObjects
.boulder2FellDownHole
SetEventAfterBranchReuseHL EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_B2F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B2F_BOULDER_2
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_4
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_4
ld [wObjectToShow], a
.hideAndShowBoulderObjects
ld a, [wObjectToHide]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, [wObjectToShow]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef_jump ShowObject
.noBoulderWasPushed
ld a, SEAFOAM_ISLANDS_B3F
diff --git a/scripts/SeafoamIslandsB3F.asm b/scripts/SeafoamIslandsB3F.asm
index 671d7719..d8e253b6 100644
--- a/scripts/SeafoamIslandsB3F.asm
+++ b/scripts/SeafoamIslandsB3F.asm
@@ -12,23 +12,23 @@ SeafoamIslandsB3F_Script:
cp $1
jr nz, .boulder2FellDownHole
SetEventReuseHL EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_1
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_1
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_1
ld [wObjectToShow], a
jr .hideAndShowBoulderObjects
.boulder2FellDownHole
SetEventAfterBranchReuseHL EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
- ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B3F_BOULDER_2
ld [wObjectToHide], a
- ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_2
+ ld a, TOGGLE_SEAFOAM_ISLANDS_B4F_BOULDER_2
ld [wObjectToShow], a
.hideAndShowBoulderObjects
ld a, [wObjectToHide]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ld a, [wObjectToShow]
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef ShowObject
jr .runCurrentMapScript
.noBoulderWasPushed
diff --git a/scripts/SilphCo11F.asm b/scripts/SilphCo11F.asm
index 5b72e3f8..38c674f4 100644
--- a/scripts/SilphCo11F.asm
+++ b/scripts/SilphCo11F.asm
@@ -435,9 +435,9 @@ SilphCo11FScript13:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
call GBFadeOutToBlack
- ld a, HS_SILPH_CO_11F_JAMES
+ ld a, TOGGLE_SILPH_CO_11F_JAMES
call SilphCo11FScript_HideObject
- ld a, HS_SILPH_CO_11F_JESSIE
+ ld a, TOGGLE_SILPH_CO_11F_JESSIE
call SilphCo11FScript_HideObject
call UpdateSprites
call Delay3
@@ -458,14 +458,14 @@ SilphCo11FScript14:
ret
SilphCo11FScript_ShowObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
ret
SilphCo11FScript_HideObject:
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
ret
diff --git a/scripts/SilphCo11F_2.asm b/scripts/SilphCo11F_2.asm
index fbc5bb1b..94ea2c5b 100644
--- a/scripts/SilphCo11F_2.asm
+++ b/scripts/SilphCo11F_2.asm
@@ -1,75 +1,75 @@
SilphCo11FTeamRocketLeavesScript::
- ld hl, .HideMissableObjectIDs
+ ld hl, .HideToggleableObjectIDs
.hide_loop
ld a, [hli]
cp $ff
jr z, .done_hiding
push hl
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef HideObject
pop hl
jr .hide_loop
.done_hiding
- ld hl, .ShowMissableObjectIDs
+ ld hl, .ShowToggleableObjectIDs
.show_loop
ld a, [hli]
cp -1
ret z
push hl
- ld [wMissableObjectIndex], a
+ ld [wToggleableObjectIndex], a
predef ShowObject
pop hl
jr .show_loop
-.ShowMissableObjectIDs:
- db HS_SAFFRON_CITY_8
- db HS_SAFFRON_CITY_9
- db HS_SAFFRON_CITY_A
- db HS_SAFFRON_CITY_B
- db HS_SAFFRON_CITY_C
- db HS_SAFFRON_CITY_D
+.ShowToggleableObjectIDs:
+ db TOGGLE_SAFFRON_CITY_8
+ db TOGGLE_SAFFRON_CITY_9
+ db TOGGLE_SAFFRON_CITY_A
+ db TOGGLE_SAFFRON_CITY_B
+ db TOGGLE_SAFFRON_CITY_C
+ db TOGGLE_SAFFRON_CITY_D
db -1 ; end
-.HideMissableObjectIDs:
- db HS_SAFFRON_CITY_1
- db HS_SAFFRON_CITY_2
- db HS_SAFFRON_CITY_3
- db HS_SAFFRON_CITY_4
- db HS_SAFFRON_CITY_5
- db HS_SAFFRON_CITY_6
- db HS_SAFFRON_CITY_7
- db HS_SAFFRON_CITY_E
- db HS_SAFFRON_CITY_F
- db HS_SILPH_CO_2F_2
- db HS_SILPH_CO_2F_3
- db HS_SILPH_CO_2F_4
- db HS_SILPH_CO_2F_5
- db HS_SILPH_CO_3F_1
- db HS_SILPH_CO_3F_2
- db HS_SILPH_CO_4F_1
- db HS_SILPH_CO_4F_2
- db HS_SILPH_CO_4F_3
- db HS_SILPH_CO_5F_1
- db HS_SILPH_CO_5F_2
- db HS_SILPH_CO_5F_3
- db HS_SILPH_CO_5F_4
- db HS_SILPH_CO_6F_1
- db HS_SILPH_CO_6F_2
- db HS_SILPH_CO_6F_3
- db HS_SILPH_CO_7F_1
- db HS_SILPH_CO_7F_2
- db HS_SILPH_CO_7F_3
- db HS_SILPH_CO_7F_4
- db HS_SILPH_CO_8F_1
- db HS_SILPH_CO_8F_2
- db HS_SILPH_CO_8F_3
- db HS_SILPH_CO_9F_1
- db HS_SILPH_CO_9F_2
- db HS_SILPH_CO_9F_3
- db HS_SILPH_CO_10F_1
- db HS_SILPH_CO_10F_2
- db HS_SILPH_CO_11F_1
- db HS_SILPH_CO_11F_JAMES
- db HS_SILPH_CO_11F_2
- db HS_SILPH_CO_11F_JESSIE
+.HideToggleableObjectIDs:
+ db TOGGLE_SAFFRON_CITY_1
+ db TOGGLE_SAFFRON_CITY_2
+ db TOGGLE_SAFFRON_CITY_3
+ db TOGGLE_SAFFRON_CITY_4
+ db TOGGLE_SAFFRON_CITY_5
+ db TOGGLE_SAFFRON_CITY_6
+ db TOGGLE_SAFFRON_CITY_7
+ db TOGGLE_SAFFRON_CITY_E
+ db TOGGLE_SAFFRON_CITY_F
+ db TOGGLE_SILPH_CO_2F_2
+ db TOGGLE_SILPH_CO_2F_3
+ db TOGGLE_SILPH_CO_2F_4
+ db TOGGLE_SILPH_CO_2F_5
+ db TOGGLE_SILPH_CO_3F_1
+ db TOGGLE_SILPH_CO_3F_2
+ db TOGGLE_SILPH_CO_4F_1
+ db TOGGLE_SILPH_CO_4F_2
+ db TOGGLE_SILPH_CO_4F_3
+ db TOGGLE_SILPH_CO_5F_1
+ db TOGGLE_SILPH_CO_5F_2
+ db TOGGLE_SILPH_CO_5F_3
+ db TOGGLE_SILPH_CO_5F_4
+ db TOGGLE_SILPH_CO_6F_1
+ db TOGGLE_SILPH_CO_6F_2
+ db TOGGLE_SILPH_CO_6F_3
+ db TOGGLE_SILPH_CO_7F_1
+ db TOGGLE_SILPH_CO_7F_2
+ db TOGGLE_SILPH_CO_7F_3
+ db TOGGLE_SILPH_CO_7F_4
+ db TOGGLE_SILPH_CO_8F_1
+ db TOGGLE_SILPH_CO_8F_2
+ db TOGGLE_SILPH_CO_8F_3
+ db TOGGLE_SILPH_CO_9F_1
+ db TOGGLE_SILPH_CO_9F_2
+ db TOGGLE_SILPH_CO_9F_3
+ db TOGGLE_SILPH_CO_10F_1
+ db TOGGLE_SILPH_CO_10F_2
+ db TOGGLE_SILPH_CO_11F_1
+ db TOGGLE_SILPH_CO_11F_JAMES
+ db TOGGLE_SILPH_CO_11F_2
+ db TOGGLE_SILPH_CO_11F_JESSIE
db -1 ; end
diff --git a/scripts/SilphCo1F.asm b/scripts/SilphCo1F.asm
index fbc70d77..acb506fc 100644
--- a/scripts/SilphCo1F.asm
+++ b/scripts/SilphCo1F.asm
@@ -4,8 +4,8 @@ SilphCo1F_Script:
ret z
CheckAndSetEvent EVENT_SILPH_CO_RECEPTIONIST_AT_DESK
ret nz
- ld a, HS_SILPH_CO_1F_RECEPTIONIST
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_SILPH_CO_1F_RECEPTIONIST
+ ld [wToggleableObjectIndex], a
predef_jump ShowObject
SilphCo1F_TextPointers:
diff --git a/scripts/SilphCo7F.asm b/scripts/SilphCo7F.asm
index dd67a6a2..5e917f05 100644
--- a/scripts/SilphCo7F.asm
+++ b/scripts/SilphCo7F.asm
@@ -241,8 +241,8 @@ SilphCo7FRivalExitScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_SILPH_CO_7F_RIVAL
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_SILPH_CO_7F_RIVAL
+ ld [wToggleableObjectIndex], a
predef HideObject
call PlayDefaultMusic
xor a
diff --git a/scripts/VermilionDock.asm b/scripts/VermilionDock.asm
index 3cd26619..66688c42 100644
--- a/scripts/VermilionDock.asm
+++ b/scripts/VermilionDock.asm
@@ -128,7 +128,7 @@ VermilionDock_AnimSmokePuffDriftRight:
ld a, [wSSAnneSmokeDriftAmount]
swap a
ld c, a
- ld de, 4
+ ld de, OBJ_SIZE
.drift_loop
inc [hl]
inc [hl]
diff --git a/scripts/VictoryRoad3F.asm b/scripts/VictoryRoad3F.asm
index fc148c0d..ec081642 100644
--- a/scripts/VictoryRoad3F.asm
+++ b/scripts/VictoryRoad3F.asm
@@ -47,11 +47,11 @@ VictoryRoad3FDefaultScript:
.handle_hole
CheckAndSetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH2
jr nz, .check_switch_hole
- ld a, HS_VICTORY_ROAD_3F_BOULDER
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_VICTORY_ROAD_3F_BOULDER
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_VICTORY_ROAD_2F_BOULDER
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_VICTORY_ROAD_2F_BOULDER
+ ld [wToggleableObjectIndex], a
predef_jump ShowObject
.SwitchOrHoleCoords:
diff --git a/scripts/ViridianCity.asm b/scripts/ViridianCity.asm
index 07646f1a..8eb020f5 100644
--- a/scripts/ViridianCity.asm
+++ b/scripts/ViridianCity.asm
@@ -246,8 +246,8 @@ ViridianCityOldManMovingDownScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld a, HS_OLD_MAN_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OLD_MAN_2
+ ld [wToggleableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
diff --git a/scripts/ViridianGym.asm b/scripts/ViridianGym.asm
index 6f195037..c2b8c362 100644
--- a/scripts/ViridianGym.asm
+++ b/scripts/ViridianGym.asm
@@ -161,8 +161,8 @@ ViridianGymReceiveTM27:
; deactivate gym trainers
SetEventRange EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0, EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7
- ld a, HS_ROUTE_22_RIVAL_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_ROUTE_22_RIVAL_2
+ ld [wToggleableObjectIndex], a
predef ShowObject
SetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
jp ViridianGymResetScripts
@@ -219,8 +219,8 @@ ViridianGymGiovanniText:
ld hl, .PostBattleAdviceText
call PrintText
call GBFadeOutToBlack
- ld a, HS_VIRIDIAN_GYM_GIOVANNI
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_VIRIDIAN_GYM_GIOVANNI
+ ld [wToggleableObjectIndex], a
predef HideObject
call UpdateSprites
call Delay3
diff --git a/scripts/ViridianMart.asm b/scripts/ViridianMart.asm
index f118b475..7dddd434 100644
--- a/scripts/ViridianMart.asm
+++ b/scripts/ViridianMart.asm
@@ -66,11 +66,11 @@ ViridianMartScript2:
ret z
CheckAndSetEventReuseHL EVENT_SPAWNED_OLD_MAN_1
ret nz
- ld a, HS_OLD_MAN_2
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OLD_MAN_2
+ ld [wToggleableObjectIndex], a
predef HideObject
- ld a, HS_OLD_MAN_1
- ld [wMissableObjectIndex], a
+ ld a, TOGGLE_OLD_MAN_1
+ ld [wToggleableObjectIndex], a
predef ShowObject
ret
diff --git a/tools/Makefile b/tools/Makefile
index 8bc6ff71..b6235973 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -1,7 +1,7 @@
.PHONY: all clean
CC := gcc
-CFLAGS := -O3 -flto -std=c11 -Wall -Wextra -pedantic
+CFLAGS := -O3 -std=c11 -Wall -Wextra -pedantic
tools := \
gfx \