Merge branch 'master' of https://github.com/pret/pokered
Some checks failed
CI / build (push) Has been cancelled
CI / build-macos (push) Has been cancelled

This commit is contained in:
dannye 2026-01-17 22:38:33 -06:00
commit bc2354dd66
217 changed files with 3144 additions and 2825 deletions

8
.github/checkdiff.sh vendored Executable file
View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
1.0.0
1.0.1

View File

@ -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/
```

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -1,5 +1,5 @@
ItemNames::
list_start
list_start ITEM_NAME_LENGTH - 1
li "MASTER BALL"
li "ULTRA BALL"
li "GREAT BALL"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

15
data/player/names.asm Normal file
View File

@ -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 "@"

View File

@ -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

View File

@ -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 "@"

View File

@ -1,11 +0,0 @@
DefaultNamesPlayerList:
db "NEW NAME@"
db "YELLOW@"
db "ASH@"
db "JACK@"
DefaultNamesRivalList:
db "NEW NAME@"
db "BLUE@"
db "GARY@"
db "JOHN@"

View File

@ -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

View File

@ -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

View File

@ -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__}"

View File

@ -1,5 +1,5 @@
TrainerNames::
list_start
list_start TRAINER_NAME_LENGTH - 1
li "YOUNGSTER"
li "BUG CATCHER"
li "LASS"

View File

@ -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!"

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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?

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -20,5 +20,5 @@ GetTrainerName_::
ld hl, wNameBuffer
.foundName
ld de, wTrainerName
ld bc, ITEM_NAME_LENGTH
ld bc, TRAINER_NAME_LENGTH
jp CopyData

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
; Skip level and max HP
inc hl
inc hl
inc hl
inc de
inc de
inc de
; Attack, Defense, Speed, and Special stats
inc hl
inc hl
inc hl
inc de
inc de
inc de
ld bc, $8
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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -2,7 +2,7 @@ PrintBlackboardLinkCableText:
call EnableAutoTextBoxDrawing
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, [wHiddenObjectFunctionArgument]
ld a, [wHiddenEventFunctionArgument]
call PrintPredefTextID
ret

View File

@ -2,7 +2,7 @@ PrintNotebookText:
call EnableAutoTextBoxDrawing
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, [wHiddenObjectFunctionArgument]
ld a, [wHiddenEventFunctionArgument]
jp PrintPredefTextID
TMNotebook::

View File

@ -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.

View File

@ -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

View File

@ -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),

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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

Some files were not shown because too many files have changed in this diff Show More