Merge branch 'master' of https://github.com/pret/pokeemerald into entry_json
1
.gitignore
vendored
@@ -31,6 +31,7 @@ build/
|
||||
*.ddump
|
||||
.idea/
|
||||
porymap.project.cfg
|
||||
prefabs.json
|
||||
.vscode/
|
||||
*.a
|
||||
.fuse_hidden*
|
||||
|
||||
90
INSTALL.md
@@ -44,15 +44,15 @@ WSL1 is the preferred terminal to build **pokeemerald**. The following instructi
|
||||
3. The next step is to choose and install a Linux distribution from the Microsoft Store. The following instructions will assume Ubuntu as the Linux distribution of choice.
|
||||
<details>
|
||||
<summary><i>Note for advanced users...</i></summary>
|
||||
|
||||
> You can pick a preferred Linux distribution, but setup instructions may differ. Debian should work with the given instructions, but has not been tested.
|
||||
|
||||
> You can pick a preferred Linux distribution, but setup instructions may differ. Debian should work with the given instructions, but has not been tested.
|
||||
</details>
|
||||
|
||||
4. Open the [Microsoft Store Linux Selection](https://aka.ms/wslstore), click Ubuntu, then click Get, which will install the Ubuntu distribution.
|
||||
<details>
|
||||
<summary><i>Notes...</i></summary>
|
||||
|
||||
> Note 1: If a dialog pops up asking for you to sign into a Microsoft Account, then just close the dialog.
|
||||
> Note 1: If a dialog pops up asking for you to sign into a Microsoft Account, then just close the dialog.
|
||||
> Note 2: If the link does not work, then open the Microsoft Store manually, and search for the Ubuntu app (choose the one with no version number).
|
||||
</details>
|
||||
|
||||
@@ -102,11 +102,11 @@ cd /mnt/c/Users/<user>/Desktop/decomps
|
||||
<details>
|
||||
<summary><i>Notes...</i></summary>
|
||||
|
||||
> Note 1: The Windows C:\ drive is called /mnt/c/ in WSL.
|
||||
> Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "/mnt/c/users/<user>/Desktop/decomp folder"`.
|
||||
> Note 1: The Windows C:\ drive is called /mnt/c/ in WSL.
|
||||
> Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "/mnt/c/users/<user>/Desktop/decomp folder"`.
|
||||
> Note 3: Windows path names are case-insensitive so adhering to capitalization isn't needed
|
||||
</details>
|
||||
|
||||
|
||||
If this works, then proceed to [Installation](#installation).
|
||||
|
||||
Otherwise, ask for help on Discord or IRC (see [README.md](README.md)), or continue reading below for [Windows instructions using msys2](#windows-msys2).
|
||||
@@ -213,10 +213,10 @@ Note that the directory **must exist** in Windows. If you want to store pokeemer
|
||||
<details>
|
||||
<summary><i>Notes...</i></summary>
|
||||
|
||||
> Note 1: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "c:/users/<user>/Desktop/decomp folder"`.
|
||||
> Note 2: Windows path names are case-insensitive so adhering to capitalization isn't needed
|
||||
> Note 1: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "c:/users/<user>/Desktop/decomp folder"`.
|
||||
> Note 2: Windows path names are case-insensitive so adhering to capitalization isn't needed
|
||||
</details>
|
||||
|
||||
|
||||
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Discord or IRC (see [README.md](README.md)).
|
||||
|
||||
## macOS
|
||||
@@ -283,8 +283,8 @@ Note that the directory **must exist** in the folder system. If you want to stor
|
||||
|
||||
<details>
|
||||
<summary><i>Note..</i>.</summary>
|
||||
|
||||
> Note: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Desktop/decomp folder"`
|
||||
|
||||
> Note: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Desktop/decomp folder"`
|
||||
</details>
|
||||
|
||||
If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Discord or IRC (see [README.md](README.md)).
|
||||
@@ -306,6 +306,20 @@ Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to
|
||||
> [install devkitARM on Debian/Ubuntu-based distributions](#installing-devkitarm-on-debianubuntu-based-distributions).
|
||||
</details>
|
||||
|
||||
### Arch Linux
|
||||
Run this command as root to install the necessary packages:
|
||||
```bash
|
||||
pacman -S base-devel arm-none-eabi-binutils git libpng
|
||||
```
|
||||
Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
|
||||
<details>
|
||||
<summary><i>Note for legacy repos...</i></summary>
|
||||
|
||||
> If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
|
||||
> then you will have to install devkitARM. Install all the above packages except binutils-arm-none-eabi, and follow the instructions to
|
||||
> [install devkitARM on Arch Linux](#installing-devkitarm-on-arch-linux).
|
||||
</details>
|
||||
|
||||
### Other distributions
|
||||
_(Specific instructions for other distributions would be greatly appreciated!)_
|
||||
|
||||
@@ -404,21 +418,16 @@ If you aren't in the pokeemerald directory already, then **change directory** to
|
||||
```bash
|
||||
cd pokeemerald
|
||||
```
|
||||
To build **pokeemerald.gba** for the first time and confirm it matches the official ROM image (Note: to speed up builds, see [Parallel builds](#parallel-builds)):
|
||||
To build **pokeemerald.gba** (Note: to speed up builds, see [Parallel builds](#parallel-builds)):
|
||||
```bash
|
||||
make compare
|
||||
make
|
||||
```
|
||||
If an OK is returned, then the installation went smoothly.
|
||||
If it has built successfully you will have the output file **pokeemerald.gba** in your project folder.
|
||||
<details>
|
||||
<summary>Note for Windows...</summary>
|
||||
> If you switched terminals since the last build (e.g. from msys2 to WSL1), you must run `make clean-tools` once before any subsequent `make` commands.
|
||||
</details>
|
||||
|
||||
To build **pokeemerald.gba** with your changes:
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
# Building guidance
|
||||
|
||||
## Parallel builds
|
||||
@@ -437,11 +446,20 @@ Replace `<output of nproc>` with the number that the `nproc` command returned.
|
||||
|
||||
`nproc` is not available on macOS. The alternative is `sysctl -n hw.ncpu` ([relevant Stack Overflow thread](https://stackoverflow.com/questions/1715580)).
|
||||
|
||||
## Debug info
|
||||
## Compare ROM to the original
|
||||
|
||||
To build **pokeemerald.elf** with enhanced debug info:
|
||||
For contributing, or if you'd simply like to verify that your ROM is identical to the original game, run:
|
||||
```bash
|
||||
make DINFO=1
|
||||
make compare
|
||||
```
|
||||
If it matches, you will see the following at the end of the output:
|
||||
```bash
|
||||
pokeemerald.gba: OK
|
||||
```
|
||||
If there are any changes from the original game, you will instead see:
|
||||
```bash
|
||||
pokeemerald.gba: FAILED
|
||||
shasum: WARNING: 1 computed checksum did NOT match
|
||||
```
|
||||
|
||||
## devkitARM's C compiler
|
||||
@@ -520,7 +538,25 @@ devkitARM is now installed.
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
## Other toolchains
|
||||
### Installing devkitARM on Arch Linux
|
||||
|
||||
1. Follow [devkitPro's instructions](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) to configure `pacman` to download devkitPro packages.
|
||||
2. Install `gba-dev`: run the following command as root.
|
||||
|
||||
```console
|
||||
pacman -S gba-dev
|
||||
```
|
||||
This will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.
|
||||
|
||||
3. Run the following command to set devkitPro related environment variables (alternatively, close and re-open the Terminal):
|
||||
|
||||
```bash
|
||||
source /etc/profile.d/devkit-env.sh
|
||||
```
|
||||
|
||||
devkitARM is now installed.
|
||||
|
||||
### Other toolchains
|
||||
|
||||
To build using a toolchain other than devkitARM, override the `TOOLCHAIN` environment variable with the path to your toolchain, which must contain the subdirectory `bin`.
|
||||
```bash
|
||||
@@ -532,6 +568,14 @@ make TOOLCHAIN="/usr/local/arm-none-eabi"
|
||||
```
|
||||
To compile the `modern` target with this toolchain, the subdirectories `lib`, `include`, and `arm-none-eabi` must also be present.
|
||||
|
||||
### Building with debug info under a modern toolchain
|
||||
|
||||
To build **pokeemerald.elf** with debug symbols under a modern toolchain:
|
||||
```bash
|
||||
make modern DINFO=1
|
||||
```
|
||||
Note that this is not necessary for a non-modern build since those are built with debug symbols by default.
|
||||
|
||||
# Useful additional tools
|
||||
|
||||
* [porymap](https://github.com/huderlem/porymap) for viewing and editing maps
|
||||
|
||||
6
Makefile
@@ -107,7 +107,7 @@ LIBPATH := -L ../../tools/agbcc/lib
|
||||
LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall
|
||||
else
|
||||
CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
|
||||
ROM := $(MODERN_ROM_NAME)
|
||||
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
|
||||
LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))"
|
||||
@@ -254,7 +254,7 @@ tidynonmodern:
|
||||
tidymodern:
|
||||
rm -f $(MODERN_ROM_NAME) $(MODERN_ELF_NAME) $(MODERN_MAP_NAME)
|
||||
rm -rf $(MODERN_OBJ_DIR_NAME)
|
||||
|
||||
|
||||
ifneq ($(MODERN),0)
|
||||
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
|
||||
endif
|
||||
@@ -410,7 +410,7 @@ LD_SCRIPT := ld_script.txt
|
||||
LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
|
||||
else
|
||||
LD_SCRIPT := ld_script_modern.txt
|
||||
LD_SCRIPT_DEPS :=
|
||||
LD_SCRIPT_DEPS :=
|
||||
endif
|
||||
|
||||
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
||||
|
||||
@@ -550,38 +550,38 @@
|
||||
.2byte \param1
|
||||
.4byte \param2
|
||||
.endm
|
||||
|
||||
|
||||
@ useful script macros
|
||||
.macro get_curr_move_type
|
||||
get_type AI_TYPE_MOVE
|
||||
.endm
|
||||
|
||||
|
||||
.macro get_user_type1
|
||||
get_type AI_TYPE1_USER
|
||||
.endm
|
||||
|
||||
|
||||
.macro get_user_type2
|
||||
get_type AI_TYPE2_USER
|
||||
.endm
|
||||
|
||||
|
||||
.macro get_target_type1
|
||||
get_type AI_TYPE1_TARGET
|
||||
.endm
|
||||
|
||||
|
||||
.macro get_target_type2
|
||||
get_type AI_TYPE2_TARGET
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_ability battler:req, ability:req, ptr:req
|
||||
check_ability \battler, \ability
|
||||
if_equal 1, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_no_ability battler:req, ability:req, ptr:req
|
||||
check_ability \battler, \ability
|
||||
if_equal 0, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_type battler:req, type:req, ptr:req
|
||||
is_of_type \battler, \type
|
||||
if_equal 1, \ptr
|
||||
@@ -591,20 +591,20 @@
|
||||
is_of_type \battler, \type
|
||||
if_equal 0, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_target_faster ptr:req
|
||||
if_user_goes 1, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_user_faster ptr:req
|
||||
if_user_goes 0, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_double_battle ptr:req
|
||||
is_double_battle
|
||||
if_equal 1, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_not_double_battle ptr:req
|
||||
is_double_battle
|
||||
if_equal 0, \ptr
|
||||
@@ -613,7 +613,7 @@
|
||||
.macro if_any_move_disabled battler:req, ptr:req
|
||||
if_any_move_disabled_or_encored \battler, 0, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro if_any_move_encored battler:req, ptr:req
|
||||
if_any_move_disabled_or_encored \battler, 1, \ptr
|
||||
.endm
|
||||
|
||||
@@ -270,16 +270,16 @@
|
||||
.macro stopsound
|
||||
.byte 0x2f
|
||||
.endm
|
||||
|
||||
|
||||
@ useful macros
|
||||
.macro jumpreteq value:req, ptr:req
|
||||
jumpargeq ARG_RET_ID, \value, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumprettrue ptr:req
|
||||
jumpreteq TRUE, \ptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpretfalse ptr:req
|
||||
jumpreteq FALSE, \ptr
|
||||
.endm
|
||||
|
||||
@@ -410,33 +410,33 @@
|
||||
.byte \endMode
|
||||
.byte \endState
|
||||
.endm
|
||||
|
||||
|
||||
@ Help macros for 5 uses of moveend command
|
||||
|
||||
|
||||
@ All cases
|
||||
.macro moveendall
|
||||
setbyte sMOVEEND_STATE, 0
|
||||
moveend 0, 0
|
||||
.endm
|
||||
|
||||
|
||||
@ Chosen case
|
||||
.macro moveendcase case:req
|
||||
setbyte sMOVEEND_STATE, \case
|
||||
moveend 1, 0
|
||||
.endm
|
||||
|
||||
|
||||
@ All cases from (inclusive)
|
||||
.macro moveendfrom from:req
|
||||
setbyte sMOVEEND_STATE, \from
|
||||
moveend 0, 0
|
||||
.endm
|
||||
|
||||
|
||||
@ All cases from 0 to (not inclusive)
|
||||
.macro moveendto to:req
|
||||
setbyte sMOVEEND_STATE, 0
|
||||
moveend 2, \to
|
||||
.endm
|
||||
|
||||
|
||||
@ Cases from (inclusive) to (not inclusive)
|
||||
.macro moveendfromto from:req, to:req
|
||||
setbyte sMOVEEND_STATE, \from
|
||||
@@ -668,7 +668,7 @@
|
||||
.byte 0x77
|
||||
.endm
|
||||
|
||||
.macro faintifabilitynotdamp
|
||||
.macro tryexplosion
|
||||
.byte 0x78
|
||||
.endm
|
||||
|
||||
@@ -1031,7 +1031,7 @@
|
||||
.byte 0xc8
|
||||
.endm
|
||||
|
||||
.macro jumpifattackandspecialattackcannotfall ptr:req
|
||||
.macro trymemento ptr:req
|
||||
.byte 0xc9
|
||||
.4byte \ptr
|
||||
.endm
|
||||
@@ -1252,165 +1252,165 @@
|
||||
.byte 0xf8
|
||||
.byte \position
|
||||
.endm
|
||||
|
||||
|
||||
@ various command changed to more readable macros
|
||||
.macro cancelmultiturnmoves battler:req
|
||||
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
||||
.endm
|
||||
|
||||
|
||||
.macro setmagiccoattarget battler:req
|
||||
various \battler, VARIOUS_SET_MAGIC_COAT_TARGET
|
||||
.endm
|
||||
|
||||
|
||||
.macro getifcantrunfrombattle battler:req
|
||||
various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE
|
||||
.endm
|
||||
|
||||
|
||||
.macro getmovetarget battler:req
|
||||
various \battler, VARIOUS_GET_MOVE_TARGET
|
||||
.endm
|
||||
|
||||
|
||||
.macro getbattlerfainted battler:req
|
||||
various \battler, VARIOUS_GET_BATTLER_FAINTED
|
||||
.endm
|
||||
|
||||
|
||||
.macro resetintimidatetracebits battler:req
|
||||
various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS
|
||||
.endm
|
||||
|
||||
|
||||
.macro updatechoicemoveonlvlup battler:req
|
||||
various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP
|
||||
.endm
|
||||
|
||||
|
||||
.macro resetplayerfainted
|
||||
various BS_ATTACKER, VARIOUS_RESET_PLAYER_FAINTED
|
||||
.endm
|
||||
|
||||
|
||||
.macro palaceflavortext battler:req
|
||||
various \battler, VARIOUS_PALACE_FLAVOR_TEXT
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenajudgmentwindow
|
||||
various BS_ATTACKER, VARIOUS_ARENA_JUDGMENT_WINDOW
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenaopponentmonlost
|
||||
various BS_ATTACKER, VARIOUS_ARENA_OPPONENT_MON_LOST
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenaplayermonlost
|
||||
various BS_ATTACKER, VARIOUS_ARENA_PLAYER_MON_LOST
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenabothmonlost
|
||||
various BS_ATTACKER, VARIOUS_ARENA_BOTH_MONS_LOST
|
||||
.endm
|
||||
|
||||
|
||||
.macro forfeityesnobox battler:req
|
||||
various \battler, VARIOUS_EMIT_YESNOBOX
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenadrawreftextbox
|
||||
various BS_ATTACKER, VARIOUS_DRAW_ARENA_REF_TEXT_BOX
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenaerasereftextbox
|
||||
various BS_ATTACKER, VARIOUS_ERASE_ARENA_REF_TEXT_BOX
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenajudgmentstring id:req
|
||||
various \id, VARIOUS_ARENA_JUDGMENT_STRING
|
||||
.endm
|
||||
|
||||
|
||||
.macro arenawaitmessage id:req
|
||||
various \id, VARIOUS_ARENA_WAIT_STRING
|
||||
.endm
|
||||
|
||||
|
||||
.macro waitcry battler:req
|
||||
various \battler, VARIOUS_WAIT_CRY
|
||||
.endm
|
||||
|
||||
|
||||
.macro returnopponentmon1toball battler:req
|
||||
various \battler, VARIOUS_RETURN_OPPONENT_MON1
|
||||
.endm
|
||||
|
||||
|
||||
.macro returnopponentmon2toball battler:req
|
||||
various \battler, VARIOUS_RETURN_OPPONENT_MON2
|
||||
.endm
|
||||
|
||||
|
||||
.macro volumedown
|
||||
various BS_ATTACKER, VARIOUS_VOLUME_DOWN
|
||||
.endm
|
||||
|
||||
|
||||
.macro volumeup
|
||||
various BS_ATTACKER, VARIOUS_VOLUME_UP
|
||||
.endm
|
||||
|
||||
|
||||
.macro setalreadystatusedmoveattempt battler:req
|
||||
various \battler, VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT
|
||||
.endm
|
||||
|
||||
|
||||
.macro palacetryescapestatus battler:req
|
||||
various \battler, VARIOUS_PALACE_TRY_ESCAPE_STATUS
|
||||
.endm
|
||||
|
||||
|
||||
.macro setoutcomeonteleport battler:req
|
||||
various \battler, VARIOUS_SET_TELEPORT_OUTCOME
|
||||
.endm
|
||||
|
||||
|
||||
.macro playtrainerdefeatbgm battler:req
|
||||
various \battler, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC
|
||||
.endm
|
||||
|
||||
|
||||
@ helpful macros
|
||||
.macro setstatchanger stat:req, stages:req, down:req
|
||||
setbyte sSTATCHANGER, \stat | \stages << 4 | \down << 7
|
||||
.endm
|
||||
|
||||
|
||||
.macro setmoveeffect effect:req
|
||||
setbyte cEFFECT_CHOOSER, \effect
|
||||
.endm
|
||||
|
||||
|
||||
.macro chosenstatus1animation battler:req, status:req
|
||||
chosenstatusanimation \battler, 0x0, \status
|
||||
.endm
|
||||
|
||||
|
||||
.macro chosenstatus2animation battler:req, status:req
|
||||
chosenstatusanimation \battler, 0x1, \status
|
||||
.endm
|
||||
|
||||
|
||||
.macro sethword dst:req, value:req
|
||||
setbyte \dst, (\value) & 0xFF
|
||||
setbyte \dst + 1, ((\value) >> 8) & 0xFF
|
||||
.endm
|
||||
|
||||
|
||||
.macro setword dst:req, value:req
|
||||
setbyte \dst, (\value) & 0xFF
|
||||
setbyte \dst + 1, ((\value) >> 8) & 0xFF
|
||||
setbyte \dst + 2, ((\value) >> 16) & 0xFF
|
||||
setbyte \dst + 3, ((\value) >> 24) & 0xFF
|
||||
.endm
|
||||
|
||||
|
||||
.macro copybyte dst:req, src:req
|
||||
copyarray \dst, \src, 0x1
|
||||
.endm
|
||||
|
||||
|
||||
.macro copyhword dst:req, src:req
|
||||
copyarray \dst, \src, 0x2
|
||||
.endm
|
||||
|
||||
|
||||
.macro copyword dst:req, src:req
|
||||
copyarray \dst, \src, 0x4
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req
|
||||
jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req
|
||||
jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifmove move:req, jumpptr:req
|
||||
jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr
|
||||
.endm
|
||||
@@ -1418,23 +1418,23 @@
|
||||
.macro jumpifnotmove move:req, jumpptr:req
|
||||
jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifstatus3 battler:req, status:req, jumpptr:req
|
||||
jumpifstatus3condition \battler, \status, FALSE, \jumpptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifnostatus3 battler:req, status:req, jumpptr:req
|
||||
jumpifstatus3condition \battler, \status, TRUE, \jumpptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifmovehadnoeffect jumpptr:req
|
||||
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifbattletype flags:req, jumpptr:req
|
||||
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
|
||||
.endm
|
||||
|
||||
|
||||
.macro jumpifnotbattletype flags:req, jumpptr:req
|
||||
jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
|
||||
.endm
|
||||
|
||||
@@ -276,8 +276,8 @@
|
||||
.2byte SPECIAL_\function
|
||||
.endm
|
||||
|
||||
@ Blocks script execution until a command or C code manually unblocks it. Generally used with specific
|
||||
@ commands and specials. Calling EnableBothScriptContexts for instance will allow execution to continue.
|
||||
@ Blocks script execution until a command or C code manually unblocks it. Generally used with specific
|
||||
@ commands and specials. Calling ScriptContext_Enable for instance will allow execution to continue.
|
||||
.macro waitstate
|
||||
.byte 0x27
|
||||
.endm
|
||||
@@ -985,7 +985,7 @@
|
||||
.endm
|
||||
|
||||
@ Gives the player a Pokémon of the specified species and level, holding the specified item. The trailing 0s are unused parameters.
|
||||
@ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome.
|
||||
@ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome.
|
||||
.macro givemon species:req, level:req, item=ITEM_NONE
|
||||
.byte 0x79
|
||||
.2byte \species
|
||||
@@ -997,7 +997,7 @@
|
||||
.endm
|
||||
|
||||
@ Gives the player an Egg of the specified species.
|
||||
@ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome.
|
||||
@ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome.
|
||||
.macro giveegg species:req
|
||||
.byte 0x7a
|
||||
.2byte \species
|
||||
@@ -1415,7 +1415,7 @@
|
||||
.2byte \out
|
||||
.endm
|
||||
|
||||
@ Gives 'count' coins to the player, up to a total of MAX_COINS.
|
||||
@ Gives 'count' coins to the player, up to a total of MAX_COINS.
|
||||
@ If the player already has MAX_COINS then VAR_RESULT is set to TRUE, otherwise it is set to FALSE.
|
||||
.macro addcoins count:req
|
||||
.byte 0xb4
|
||||
@@ -1887,7 +1887,7 @@
|
||||
|
||||
@ Gives 'amount' of the specified 'item' to the player and prints a message with fanfare.
|
||||
@ If the player doesn't have space for all the items then as many are added as possible, the
|
||||
@ message indicates there is no room, and VAR_RESULT is set to FALSE.
|
||||
@ message indicates there is no room, and VAR_RESULT is set to FALSE.
|
||||
@ Otherwise VAR_RESULT is set to TRUE, and the message indicates they have received the item(s).
|
||||
.macro giveitem item:req, amount=1
|
||||
setorcopyvar VAR_0x8000, \item
|
||||
|
||||
@@ -152,8 +152,8 @@
|
||||
create_movement_action walk_slow_diag_northeast, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT
|
||||
create_movement_action walk_slow_diag_southwest, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT
|
||||
create_movement_action walk_slow_diag_southeast, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT
|
||||
create_movement_action store_lock_anim, MOVEMENT_ACTION_STORE_AND_LOCK_ANIM
|
||||
create_movement_action free_unlock_anim, MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM
|
||||
create_movement_action lock_anim, MOVEMENT_ACTION_LOCK_ANIM
|
||||
create_movement_action unlock_anim, MOVEMENT_ACTION_UNLOCK_ANIM
|
||||
create_movement_action walk_left_affine, MOVEMENT_ACTION_WALK_LEFT_AFFINE
|
||||
create_movement_action walk_right_affine, MOVEMENT_ACTION_WALK_RIGHT_AFFINE
|
||||
create_movement_action levitate, MOVEMENT_ACTION_LEVITATE
|
||||
|
||||
@@ -100,9 +100,9 @@
|
||||
special CallTrainerHillFunction
|
||||
.endm
|
||||
|
||||
@ Set the challenge mode to HILL_TAG_* (Normal, Variety, Unique, or Expert)
|
||||
.macro trainerhill_settag tag:req
|
||||
setvar VAR_0x8004, TRAINER_HILL_FUNC_SET_TAG
|
||||
copyvar VAR_0x8005, \tag
|
||||
@ Set the challenge mode to HILL_MODE_* (Normal, Variety, Unique, or Expert)
|
||||
.macro trainerhill_setmode mode:req
|
||||
setvar VAR_0x8004, TRAINER_HILL_FUNC_SET_MODE
|
||||
copyvar VAR_0x8005, \mode
|
||||
special CallTrainerHillFunction
|
||||
.endm
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "constants/global.h"
|
||||
#include "constants/battle.h"
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/battle_arena.h"
|
||||
#include "constants/battle_script_commands.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/battle_string_ids.h"
|
||||
@@ -14,7 +15,7 @@
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section script_data, "aw", %progbits
|
||||
|
||||
|
||||
.align 2
|
||||
gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectHit @ EFFECT_HIT
|
||||
@@ -374,7 +375,8 @@ BattleScript_EffectExplosion::
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
faintifabilitynotdamp
|
||||
@ Below jumps to BattleScript_DampStopsExplosion if it fails (only way it can)
|
||||
tryexplosion
|
||||
setatkhptozero
|
||||
waitstate
|
||||
jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionDoAnimStartLoop
|
||||
@@ -489,7 +491,7 @@ BattleScript_EffectStatUp::
|
||||
BattleScript_EffectStatUpAfterAtkCanceler::
|
||||
attackstring
|
||||
ppreduce
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_StatUpEnd
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_StatUpEnd
|
||||
jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_StatUpAttackAnim
|
||||
pause B_WAIT_TIME_SHORT
|
||||
goto BattleScript_StatUpPrintString
|
||||
@@ -535,7 +537,7 @@ BattleScript_EffectStatDown::
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
attackstring
|
||||
ppreduce
|
||||
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_StatDownEnd
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_StatDownEnd
|
||||
jumpifbyte CMP_LESS_THAN, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_StatDownDoAnim
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_FELL_EMPTY, BattleScript_StatDownEnd
|
||||
pause B_WAIT_TIME_SHORT
|
||||
@@ -1491,17 +1493,17 @@ BattleScript_CurseTrySpeed::
|
||||
attackanimation
|
||||
waitanimation
|
||||
setstatchanger STAT_SPEED, 1, TRUE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_CurseTryAttack
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CurseTryAttack
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_CurseTryAttack::
|
||||
setstatchanger STAT_ATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_CurseTryDefense
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CurseTryDefense
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_CurseTryDefense::
|
||||
setstatchanger STAT_DEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_CurseEnd
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CurseEnd
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_CurseEnd::
|
||||
@@ -1613,7 +1615,7 @@ BattleScript_EffectSwagger::
|
||||
attackanimation
|
||||
waitanimation
|
||||
setstatchanger STAT_ATK, 2, FALSE
|
||||
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_SwaggerTryConfuse
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_SwaggerTryConfuse
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_SwaggerTryConfuse
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
@@ -1812,7 +1814,7 @@ BattleScript_EffectSkullBash::
|
||||
setbyte sTWOTURN_STRINGID, B_MSG_TURN1_SKULL_BASH
|
||||
call BattleScriptFirstChargingTurn
|
||||
setstatchanger STAT_DEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_SkullBashEnd
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_SkullBashEnd
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_SkullBashEnd
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
@@ -1926,8 +1928,8 @@ BattleScript_EffectTeleport::
|
||||
ppreduce
|
||||
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed
|
||||
getifcantrunfrombattle BS_ATTACKER
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, 1, BattleScript_ButItFailed
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, 2, BattleScript_PrintAbilityMadeIneffective
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, BATTLE_RUN_FORBIDDEN, BattleScript_ButItFailed
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, BATTLE_RUN_FAILURE, BattleScript_PrintAbilityMadeIneffective
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNFLEDFROMBATTLE
|
||||
@@ -2015,7 +2017,7 @@ BattleScript_EffectDefenseCurl::
|
||||
ppreduce
|
||||
setdefensecurlbit
|
||||
setstatchanger STAT_DEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_DefenseCurlDoStatUpAnim
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_DefenseCurlDoStatUpAnim
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_StatUpPrintString
|
||||
attackanimation
|
||||
waitanimation
|
||||
@@ -2156,7 +2158,7 @@ BattleScript_EffectFlatter::
|
||||
attackanimation
|
||||
waitanimation
|
||||
setstatchanger STAT_SPATK, 1, FALSE
|
||||
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_FlatterTryConfuse
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_FlatterTryConfuse
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_FlatterTryConfuse
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
@@ -2201,10 +2203,10 @@ BattleScript_AlreadyBurned::
|
||||
|
||||
BattleScript_EffectMemento::
|
||||
attackcanceler
|
||||
jumpifbyte CMP_EQUAL, cMISS_TYPE, B_MSG_PROTECTED, BattleScript_MementoFailProtect
|
||||
jumpifbyte CMP_EQUAL, cMISS_TYPE, B_MSG_PROTECTED, BattleScript_MementoTargetProtect
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifattackandspecialattackcannotfall BattleScript_ButItFailed
|
||||
trymemento BattleScript_ButItFailed
|
||||
setatkhptozero
|
||||
attackanimation
|
||||
waitanimation
|
||||
@@ -2213,16 +2215,16 @@ BattleScript_EffectMemento::
|
||||
playstatchangeanimation BS_TARGET, BIT_ATK | BIT_SPATK, STAT_CHANGE_NEGATIVE | STAT_CHANGE_BY_TWO | STAT_CHANGE_MULTIPLE_STATS
|
||||
playstatchangeanimation BS_TARGET, BIT_ATK, STAT_CHANGE_NEGATIVE | STAT_CHANGE_BY_TWO
|
||||
setstatchanger STAT_ATK, 2, TRUE
|
||||
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_EffectMementoTrySpAtk
|
||||
@ Greater than STAT_FELL is checking if the stat cannot decrease
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_EffectMementoTrySpAtk
|
||||
@ Greater than B_MSG_DEFENDER_STAT_FELL is checking if the stat cannot decrease
|
||||
jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, B_MSG_DEFENDER_STAT_FELL, BattleScript_EffectMementoTrySpAtk
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_EffectMementoTrySpAtk:
|
||||
playstatchangeanimation BS_TARGET, BIT_SPATK, STAT_CHANGE_NEGATIVE | STAT_CHANGE_BY_TWO
|
||||
setstatchanger STAT_SPATK, 2, TRUE
|
||||
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_EffectMementoTryFaint
|
||||
@ Greater than STAT_FELL is checking if the stat cannot decrease
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_EffectMementoTryFaint
|
||||
@ Greater than B_MSG_DEFENDER_STAT_FELL is checking if the stat cannot decrease
|
||||
jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, B_MSG_DEFENDER_STAT_FELL, BattleScript_EffectMementoTryFaint
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -2233,11 +2235,12 @@ BattleScript_EffectMementoPrintNoEffect:
|
||||
printstring STRINGID_BUTNOEFFECT
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_EffectMementoTryFaint
|
||||
BattleScript_MementoFailProtect:
|
||||
@ If the target is protected there's no need to check the target's stats or animate, the user will just faint
|
||||
BattleScript_MementoTargetProtect:
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifattackandspecialattackcannotfall BattleScript_MementoFailEnd
|
||||
BattleScript_MementoFailEnd:
|
||||
trymemento BattleScript_MementoTargetProtectEnd
|
||||
BattleScript_MementoTargetProtectEnd:
|
||||
setatkhptozero
|
||||
pause B_WAIT_TIME_LONG
|
||||
effectivenesssound
|
||||
@@ -2660,14 +2663,14 @@ BattleScript_TickleDoMoveAnim::
|
||||
playstatchangeanimation BS_TARGET, BIT_ATK | BIT_DEF, STAT_CHANGE_NEGATIVE | STAT_CHANGE_MULTIPLE_STATS
|
||||
playstatchangeanimation BS_TARGET, BIT_ATK, STAT_CHANGE_NEGATIVE
|
||||
setstatchanger STAT_ATK, 1, TRUE
|
||||
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_TickleTryLowerDef
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_TickleTryLowerDef
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_TickleTryLowerDef
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_TickleTryLowerDef::
|
||||
playstatchangeanimation BS_TARGET, BIT_DEF, STAT_CHANGE_NEGATIVE
|
||||
setstatchanger STAT_DEF, 1, TRUE
|
||||
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_TickleEnd
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_TickleEnd
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_TickleEnd
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -2693,13 +2696,13 @@ BattleScript_CosmicPowerDoMoveAnim::
|
||||
setbyte sSTAT_ANIM_PLAYED, FALSE
|
||||
playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, 0
|
||||
setstatchanger STAT_DEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_CosmicPowerTrySpDef
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CosmicPowerTrySpDef
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CosmicPowerTrySpDef
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_CosmicPowerTrySpDef::
|
||||
setstatchanger STAT_SPDEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_CosmicPowerEnd
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CosmicPowerEnd
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CosmicPowerEnd
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -2722,13 +2725,13 @@ BattleScript_BulkUpDoMoveAnim::
|
||||
setbyte sSTAT_ANIM_PLAYED, FALSE
|
||||
playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF, 0
|
||||
setstatchanger STAT_ATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_BulkUpTryDef
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_BulkUpTryDef
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_BulkUpTryDef
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_BulkUpTryDef::
|
||||
setstatchanger STAT_DEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_BulkUpEnd
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_BulkUpEnd
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_BulkUpEnd
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -2747,13 +2750,13 @@ BattleScript_CalmMindDoMoveAnim::
|
||||
setbyte sSTAT_ANIM_PLAYED, FALSE
|
||||
playstatchangeanimation BS_ATTACKER, BIT_SPATK | BIT_SPDEF, 0
|
||||
setstatchanger STAT_SPATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_CalmMindTrySpDef
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CalmMindTrySpDef
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CalmMindTrySpDef
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_CalmMindTrySpDef::
|
||||
setstatchanger STAT_SPDEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_CalmMindEnd
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CalmMindEnd
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CalmMindEnd
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -2779,13 +2782,13 @@ BattleScript_DragonDanceDoMoveAnim::
|
||||
setbyte sSTAT_ANIM_PLAYED, FALSE
|
||||
playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_SPEED, 0
|
||||
setstatchanger STAT_ATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_DragonDanceTrySpeed
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_DragonDanceTrySpeed
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_DragonDanceTrySpeed
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_DragonDanceTrySpeed::
|
||||
setstatchanger STAT_SPEED, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_DragonDanceEnd
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_DragonDanceEnd
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_DragonDanceEnd
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -2823,7 +2826,7 @@ BattleScript_GiveExp::
|
||||
setbyte sGIVEEXP_STATE, 0
|
||||
getexp BS_TARGET
|
||||
end2
|
||||
|
||||
|
||||
BattleScript_HandleFaintedMon::
|
||||
checkteamslost BattleScript_LinkHandleFaintedMonMultiple
|
||||
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
|
||||
@@ -3456,27 +3459,27 @@ BattleScript_AllStatsUpAtk::
|
||||
setbyte sSTAT_ANIM_PLAYED, FALSE
|
||||
playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF | BIT_SPEED | BIT_SPATK | BIT_SPDEF, 0
|
||||
setstatchanger STAT_ATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_AllStatsUpDef
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_AllStatsUpDef
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_AllStatsUpDef::
|
||||
setstatchanger STAT_DEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_AllStatsUpSpeed
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_AllStatsUpSpeed
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_AllStatsUpSpeed::
|
||||
setstatchanger STAT_SPEED, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_AllStatsUpSpAtk
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_AllStatsUpSpAtk
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_AllStatsUpSpAtk::
|
||||
setstatchanger STAT_SPATK, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_AllStatsUpSpDef
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_AllStatsUpSpDef
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_AllStatsUpSpDef::
|
||||
setstatchanger STAT_SPDEF, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_AllStatsUpRet
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_AllStatsUpRet
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_AllStatsUpRet::
|
||||
@@ -3623,14 +3626,14 @@ BattleScript_AtkDefDown::
|
||||
playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_ATK, STAT_CHANGE_CANT_PREVENT | STAT_CHANGE_NEGATIVE | STAT_CHANGE_MULTIPLE_STATS
|
||||
playstatchangeanimation BS_ATTACKER, BIT_ATK, STAT_CHANGE_CANT_PREVENT | STAT_CHANGE_NEGATIVE
|
||||
setstatchanger STAT_ATK, 1, TRUE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | STAT_BUFF_ALLOW_PTR, BattleScript_AtkDefDown_TryDef
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_AtkDefDown_TryDef
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_AtkDefDown_TryDef
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_AtkDefDown_TryDef::
|
||||
playstatchangeanimation BS_ATTACKER, BIT_DEF, STAT_CHANGE_CANT_PREVENT | STAT_CHANGE_NEGATIVE
|
||||
setstatchanger STAT_DEF, 1, TRUE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | STAT_BUFF_ALLOW_PTR, BattleScript_AtkDefDown_End
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_AtkDefDown_End
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_AtkDefDown_End
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -3696,7 +3699,7 @@ BattleScript_SAtkDown2::
|
||||
setbyte sSTAT_ANIM_PLAYED, FALSE
|
||||
playstatchangeanimation BS_ATTACKER, BIT_SPATK, STAT_CHANGE_CANT_PREVENT | STAT_CHANGE_NEGATIVE | STAT_CHANGE_BY_TWO
|
||||
setstatchanger STAT_SPATK, 2, TRUE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | STAT_BUFF_ALLOW_PTR, BattleScript_SAtkDown2End
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_SAtkDown2End
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_SAtkDown2End
|
||||
printfromtable gStatDownStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@@ -4027,7 +4030,7 @@ BattleScript_IntimidateActivatesLoop:
|
||||
jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_IntimidatePrevented
|
||||
jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented
|
||||
jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_IntimidatePrevented
|
||||
statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | STAT_BUFF_ALLOW_PTR, BattleScript_IntimidateActivatesLoopIncrement
|
||||
statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_IntimidateActivatesLoopIncrement
|
||||
jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 1, BattleScript_IntimidateActivatesLoopIncrement
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
@@ -4043,7 +4046,7 @@ BattleScript_IntimidatePrevented:
|
||||
printstring STRINGID_PREVENTEDFROMWORKING
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_IntimidateActivatesLoopIncrement
|
||||
|
||||
|
||||
BattleScript_DroughtActivates::
|
||||
pause B_WAIT_TIME_SHORT
|
||||
printstring STRINGID_PKMNSXINTENSIFIEDSUN
|
||||
@@ -4406,7 +4409,7 @@ BattleScript_BerryConfuseHealEnd2::
|
||||
|
||||
BattleScript_BerryStatRaiseEnd2::
|
||||
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_BerryStatRaiseDoStatUp
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_BerryStatRaiseDoStatUp
|
||||
BattleScript_BerryStatRaiseDoStatUp::
|
||||
setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
|
||||
call BattleScript_StatUp
|
||||
@@ -4480,7 +4483,7 @@ BattleScript_ArenaDoJudgment::
|
||||
arenajudgmentstring B_MSG_REF_THATS_IT
|
||||
arenawaitmessage B_MSG_REF_THATS_IT
|
||||
pause B_WAIT_TIME_LONG
|
||||
setbyte gBattleCommunication, 0
|
||||
setbyte gBattleCommunication, 0 @ Reset state for arenajudgmentwindow
|
||||
arenajudgmentwindow
|
||||
pause B_WAIT_TIME_LONG
|
||||
arenajudgmentwindow
|
||||
@@ -4493,8 +4496,9 @@ BattleScript_ArenaDoJudgment::
|
||||
arenajudgmentstring B_MSG_REF_JUDGE_BODY
|
||||
arenawaitmessage B_MSG_REF_JUDGE_BODY
|
||||
arenajudgmentwindow
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 3, BattleScript_ArenaJudgmentPlayerLoses
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 4, BattleScript_ArenaJudgmentDraw
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_PLAYER_LOST, BattleScript_ArenaJudgmentPlayerLoses
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_TIE, BattleScript_ArenaJudgmentDraw
|
||||
@ ARENA_RESULT_PLAYER_WON
|
||||
arenajudgmentstring B_MSG_REF_PLAYER_WON
|
||||
arenawaitmessage B_MSG_REF_PLAYER_WON
|
||||
arenajudgmentwindow
|
||||
|
||||
@@ -435,11 +435,15 @@ AI_CGM_BetterWhenAudienceExcited:
|
||||
AI_CGM_BetterWhenAudienceExcited_1stUp:
|
||||
@ BUG: Should be if_appeal_num_eq 0
|
||||
@ 1st up on 1st appeal excitement will always be 0
|
||||
if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_Not1stAppeal
|
||||
.ifdef BUGFIX
|
||||
if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
|
||||
.else
|
||||
if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
|
||||
.endif
|
||||
if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax
|
||||
if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax
|
||||
end
|
||||
AI_CGM_BetterWhenAudienceExcited_Not1stAppeal:
|
||||
AI_CGM_BetterWhenAudienceExcited_1stAppeal:
|
||||
if_random_less_than 125, AI_CGM_End
|
||||
score -15
|
||||
end
|
||||
@@ -542,7 +546,11 @@ AI_CGM_TargetMonWithJudgesAttention:
|
||||
end
|
||||
AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
|
||||
if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
.ifdef BUGFIX
|
||||
if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
.else
|
||||
if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
.endif
|
||||
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
score +2
|
||||
if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
|
||||
@@ -551,7 +559,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
|
||||
AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
|
||||
if_user_order_eq MON_2, AI_CGM_End
|
||||
if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
.ifdef BUGFIX
|
||||
if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
.else
|
||||
if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
.endif
|
||||
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
score +2
|
||||
if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
|
||||
@@ -560,7 +572,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
|
||||
AI_CGM_TargetMonWithJudgesAttention_CheckMon3:
|
||||
if_user_order_eq MON_3, AI_CGM_End
|
||||
if_cannot_participate MON_3, AI_CGM_End
|
||||
.ifdef BUGFIX
|
||||
if_not_used_combo_starter MON_3, AI_CGM_End
|
||||
.else
|
||||
if_used_combo_starter MON_3, AI_CGM_End
|
||||
.endif
|
||||
if_random_less_than 125, AI_CGM_End
|
||||
score +2
|
||||
if_not_completed_combo MON_3, AI_CGM_End
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemTM18",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM_18"
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM18"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "AbandonedShip_Room_B1F_EventScript_ItemTM13",
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM_13"
|
||||
"flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM13"
|
||||
}
|
||||
],
|
||||
"warp_events": [
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
.set LOCALID_PLAYER, 13
|
||||
.set LOCALID_OPPONENT, 15
|
||||
|
||||
.set NO_DRAW, 0
|
||||
.set DRAW_TRAINER, 1
|
||||
.set DRAW_TUCKER, 2
|
||||
|
||||
BattleFrontier_BattleDomeBattleRoom_MapScripts::
|
||||
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleDomeBattleRoom_OnTransition
|
||||
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeBattleRoom_OnFrame
|
||||
@@ -12,10 +16,6 @@ BattleFrontier_BattleDomeBattleRoom_MapScripts::
|
||||
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeBattleRoom_OnResume
|
||||
.byte 0
|
||||
|
||||
.set NO_DRAW, 0
|
||||
.set DRAW_TRAINER, 1
|
||||
.set DRAW_TUCKER, 2
|
||||
|
||||
BattleFrontier_BattleDomeBattleRoom_OnTransition:
|
||||
dome_setopponentgfx
|
||||
frontier_get FRONTIER_DATA_BATTLE_NUM
|
||||
|
||||
@@ -472,8 +472,8 @@ BattleFrontier_BattlePalaceLobby_Text_FeatWillBeRecorded:
|
||||
|
||||
@ Unused
|
||||
BattleFrontier_BattlePalaceLobby_Text_BattlePointsFor7WinStreak:
|
||||
.string "For the feat of your 7-win streak,\n"
|
||||
.string "we present you with Battle Point(s).$"
|
||||
.string "For the feat of your 7-win streak,\n"
|
||||
.string "we present you with Battle Point(s).$"
|
||||
|
||||
BattleFrontier_BattlePalaceLobby_Text_NoSpaceForPrize:
|
||||
.string "You seem to have no space for\n"
|
||||
|
||||
@@ -364,7 +364,8 @@ BattleFrontier_BattlePikeLobby_Text_AwardYouTheseBattlePoints2:
|
||||
@ Unused
|
||||
BattleFrontier_BattlePikeLobby_Text_ReachedBattlePointLimit:
|
||||
.string "You appear to have reached the limit\n"
|
||||
.string "for Battle Points…\pPlease exchange some Battle Points\n"
|
||||
.string "for Battle Points…\p"
|
||||
.string "Please exchange some Battle Points\n"
|
||||
.string "for prizes, then return…$"
|
||||
|
||||
BattleFrontier_BattlePikeLobby_Text_FailedToSaveBeforeQuitting:
|
||||
|
||||
@@ -22,18 +22,20 @@ BattleFrontier_Lounge2_EventScript_AlreadyMetManiac::
|
||||
end
|
||||
|
||||
BattleFrontier_Lounge2_EventScript_GiveAdvice::
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 0, BattleFrontier_Lounge2_EventScript_BufferSingle
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 1, BattleFrontier_Lounge2_EventScript_BufferDouble
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 2, BattleFrontier_Lounge2_EventScript_BufferMulti
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 3, BattleFrontier_Lounge2_EventScript_BufferMultiLink
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 4, BattleFrontier_Lounge2_EventScript_BufferBattleDome
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 5, BattleFrontier_Lounge2_EventScript_BufferBattleFactory
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 6, BattleFrontier_Lounge2_EventScript_BufferBattlePalace
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 7, BattleFrontier_Lounge2_EventScript_BufferBattleArena
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 8, BattleFrontier_Lounge2_EventScript_BufferBattlePike
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 9, BattleFrontier_Lounge2_EventScript_BufferBattlePyramid
|
||||
call_if_le VAR_FRONTIER_MANIAC_FACILITY, 3, BattleFrontier_Lounge2_EventScript_BattleTowerNews
|
||||
call_if_ge VAR_FRONTIER_MANIAC_FACILITY, 4, BattleFrontier_Lounge2_EventScript_FacilityNews
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_SINGLES, BattleFrontier_Lounge2_EventScript_BufferSingle
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_DOUBLES, BattleFrontier_Lounge2_EventScript_BufferDouble
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_MULTIS, BattleFrontier_Lounge2_EventScript_BufferMulti
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_LINK, BattleFrontier_Lounge2_EventScript_BufferMultiLink
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_DOME, BattleFrontier_Lounge2_EventScript_BufferBattleDome
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_FACTORY, BattleFrontier_Lounge2_EventScript_BufferBattleFactory
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PALACE, BattleFrontier_Lounge2_EventScript_BufferBattlePalace
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_ARENA, BattleFrontier_Lounge2_EventScript_BufferBattleArena
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PIKE, BattleFrontier_Lounge2_EventScript_BufferBattlePike
|
||||
call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PYRAMID, BattleFrontier_Lounge2_EventScript_BufferBattlePyramid
|
||||
@ <= FRONTIER_MANIAC_TOWER_LINK is any Battle Tower mode
|
||||
call_if_le VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_LINK, BattleFrontier_Lounge2_EventScript_BattleTowerNews
|
||||
@ >= FRONTIER_MANIAC_DOME is any facility other than Battle Tower
|
||||
call_if_ge VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_DOME, BattleFrontier_Lounge2_EventScript_FacilityNews
|
||||
special ShowFrontierManiacMessage
|
||||
waitmessage
|
||||
waitbuttonpress
|
||||
|
||||
@@ -33,8 +33,8 @@ EverGrandeCity_ChampionsRoom_EventScript_EnterRoom::
|
||||
waitmovement 0
|
||||
setvar VAR_TEMP_1, 1
|
||||
goto EverGrandeCity_ChampionsRoom_EventScript_Wallace
|
||||
releaseall
|
||||
end
|
||||
releaseall
|
||||
end
|
||||
|
||||
EverGrandeCity_ChampionsRoom_Movement_PlayerApproachWallace:
|
||||
walk_up
|
||||
|
||||
@@ -19,7 +19,7 @@ FortreeCity_DecorationShop_EventScript_ClerkDesks::
|
||||
release
|
||||
end
|
||||
|
||||
.align 2
|
||||
.align 2
|
||||
FortreeCity_DecorationShop_PokemartDecor_Desks:
|
||||
.2byte DECOR_SMALL_DESK
|
||||
.2byte DECOR_POKEMON_DESK
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MeteorFalls_1F_1R_EventScript_ItemTM23",
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_TM_23"
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_TM23"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MeteorFalls_B1F_2R_EventScript_ItemTM02",
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_B1F_2R_TM_02"
|
||||
"flag": "FLAG_ITEM_METEOR_FALLS_B1F_2R_TM02"
|
||||
}
|
||||
],
|
||||
"warp_events": [
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_6F_EventScript_ItemTM30",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_6F_TM_30"
|
||||
"flag": "FLAG_ITEM_MT_PYRE_6F_TM30"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_PSYCHIC_M",
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "MtPyre_Exterior_EventScript_ItemTM48",
|
||||
"flag": "FLAG_ITEM_MT_PYRE_EXTERIOR_TM_48"
|
||||
"flag": "FLAG_ITEM_MT_PYRE_EXTERIOR_TM48"
|
||||
}
|
||||
],
|
||||
"warp_events": [
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
"y": 9,
|
||||
"elevation": 0,
|
||||
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
|
||||
"script": "OldaleTown_EventScript_CitySign"
|
||||
"script": "OldaleTown_EventScript_TownSign"
|
||||
},
|
||||
{
|
||||
"type": "sign",
|
||||
|
||||
@@ -29,8 +29,8 @@ OldaleTown_EventScript_MoveMartEmployee::
|
||||
setobjectmovementtype LOCALID_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN
|
||||
return
|
||||
|
||||
OldaleTown_EventScript_CitySign::
|
||||
msgbox OldaleTown_Text_CitySign, MSGBOX_SIGN
|
||||
OldaleTown_EventScript_TownSign::
|
||||
msgbox OldaleTown_Text_TownSign, MSGBOX_SIGN
|
||||
end
|
||||
|
||||
OldaleTown_EventScript_Girl::
|
||||
@@ -395,7 +395,7 @@ OldaleTown_Text_BrendanLetsGoBack:
|
||||
.string "LAB now.\l"
|
||||
.string "{PLAYER}, you should hustle back, too.$"
|
||||
|
||||
OldaleTown_Text_CitySign:
|
||||
OldaleTown_Text_TownSign:
|
||||
.string "OLDALE TOWN\n"
|
||||
.string "“Where things start off scarce.”$"
|
||||
|
||||
|
||||
@@ -11,9 +11,9 @@ PacifidlogTown_House2_EventScript_FanClubYoungerBrother::
|
||||
call_if_unset FLAG_MET_FANCLUB_YOUNGER_BROTHER, PacifidlogTown_House2_EventScript_FirstMonAssessment
|
||||
setflag FLAG_MET_FANCLUB_YOUNGER_BROTHER
|
||||
specialvar VAR_RESULT, GetLeadMonFriendshipScore
|
||||
goto_if_ge VAR_RESULT, 4, PacifidlogTown_House2_EventScript_GiveReturn
|
||||
goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, PacifidlogTown_House2_EventScript_GiveReturn
|
||||
specialvar VAR_RESULT, GetLeadMonFriendshipScore
|
||||
goto_if_ge VAR_RESULT, 2, PacifidlogTown_House2_EventScript_PutInEffort
|
||||
goto_if_ge VAR_RESULT, FRIENDSHIP_50_TO_99, PacifidlogTown_House2_EventScript_PutInEffort
|
||||
goto PacifidlogTown_House2_EventScript_GiveFrustration
|
||||
end
|
||||
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route111_EventScript_ItemTM37",
|
||||
"flag": "FLAG_ITEM_ROUTE_111_TM_37"
|
||||
"flag": "FLAG_ITEM_ROUTE_111_TM37"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_BERRY_TREE",
|
||||
|
||||
@@ -144,7 +144,7 @@ Route111_EventScript_RootFossilDisappeared::
|
||||
|
||||
@ Unused
|
||||
Route111_Movement_PlayerFall::
|
||||
store_lock_anim
|
||||
lock_anim
|
||||
walk_fast_down
|
||||
walk_fast_down
|
||||
walk_fast_down
|
||||
|
||||
@@ -451,7 +451,7 @@
|
||||
"y": 5,
|
||||
"elevation": 3,
|
||||
"item": "ITEM_TM32",
|
||||
"flag": "FLAG_HIDDEN_ITEM_ROUTE_113_TM_32"
|
||||
"flag": "FLAG_HIDDEN_ITEM_ROUTE_113_TM32"
|
||||
},
|
||||
{
|
||||
"type": "hidden_item",
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route115_EventScript_ItemTM01",
|
||||
"flag": "FLAG_ITEM_ROUTE_115_TM_01"
|
||||
"flag": "FLAG_ITEM_ROUTE_115_TM01"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "SafariZone_Northwest_EventScript_ItemTM22",
|
||||
"flag": "FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM_22"
|
||||
"flag": "FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM22"
|
||||
}
|
||||
],
|
||||
"warp_events": [],
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "ScorchedSlab_EventScript_ItemTM11",
|
||||
"flag": "FLAG_ITEM_SCORCHED_SLAB_TM_11"
|
||||
"flag": "FLAG_ITEM_SCORCHED_SLAB_TM11"
|
||||
}
|
||||
],
|
||||
"warp_events": [
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "SeafloorCavern_Room9_EventScript_ItemTM26",
|
||||
"flag": "FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM_26"
|
||||
"flag": "FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM26"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KYOGRE_ASLEEP",
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "ShoalCave_LowTideIceRoom_EventScript_ItemTM07",
|
||||
"flag": "FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM_07"
|
||||
"flag": "FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM07"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
"x": 14,
|
||||
"y": 9,
|
||||
"elevation": 3,
|
||||
"var": "VAR_SKY_PILLAR_RAQUAZA_CRY_DONE",
|
||||
"var": "VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE",
|
||||
"var_value": "0",
|
||||
"script": "SkyPillar_Top_EventScript_AwakenRayquaza"
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ SkyPillar_Top_EventScript_AwakenRayquaza::
|
||||
special RemoveCameraObject
|
||||
setvar VAR_SOOTOPOLIS_CITY_STATE, 5
|
||||
setvar VAR_SKY_PILLAR_STATE, 1
|
||||
setvar VAR_SKY_PILLAR_RAQUAZA_CRY_DONE, 1
|
||||
setvar VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE, 1
|
||||
releaseall
|
||||
end
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ SlateportCity_PokemonFanClub_EventScript_SootheBellWoman::
|
||||
goto_if_set FLAG_RECEIVED_SOOTHE_BELL, SlateportCity_PokemonFanClub_EventScript_ReceivedSootheBell
|
||||
msgbox SlateportCity_PokemonFanClub_Text_ShowMePokemonThatLoveYou, MSGBOX_DEFAULT
|
||||
specialvar VAR_RESULT, GetLeadMonFriendshipScore
|
||||
goto_if_ge VAR_RESULT, 4, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell
|
||||
goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell
|
||||
release
|
||||
end
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ TrainerHill_Entrance_EventScript_ChooseChallenge::
|
||||
switch VAR_RESULT
|
||||
case 4, TrainerHill_Entrance_EventScript_CancelEntry
|
||||
case MULTI_B_PRESSED, TrainerHill_Entrance_EventScript_CancelEntry
|
||||
trainerhill_settag VAR_RESULT
|
||||
trainerhill_setmode VAR_RESULT
|
||||
setvar VAR_TRAINER_HILL_IS_ACTIVE, 1
|
||||
setvar VAR_TEMP_5, 0
|
||||
special HealPlayerParty
|
||||
|
||||
@@ -7,13 +7,13 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_FriendshipRater::
|
||||
msgbox VerdanturfTown_FriendshipRatersHouse_Text_SeeHowMuchPokemonLikesYou, MSGBOX_DEFAULT
|
||||
specialvar VAR_RESULT, GetLeadMonFriendshipScore
|
||||
switch VAR_RESULT
|
||||
case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou
|
||||
case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary
|
||||
case 2, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou
|
||||
case 3, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou
|
||||
case 4, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot
|
||||
case 5, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy
|
||||
case 6, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou
|
||||
case FRIENDSHIP_NONE, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou
|
||||
case FRIENDSHIP_1_TO_49, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary
|
||||
case FRIENDSHIP_50_TO_99, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou
|
||||
case FRIENDSHIP_100_TO_149, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou
|
||||
case FRIENDSHIP_150_TO_199, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot
|
||||
case FRIENDSHIP_200_TO_254, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy
|
||||
case FRIENDSHIP_MAX, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou
|
||||
release
|
||||
end
|
||||
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "VictoryRoad_B1F_EventScript_ItemTM29",
|
||||
"flag": "FLAG_ITEM_VICTORY_ROAD_B1F_TM_29"
|
||||
"flag": "FLAG_ITEM_VICTORY_ROAD_B1F_TM29"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
|
||||
|
||||
@@ -12,7 +12,7 @@ MysteryGiftScript_AlteringCave_:
|
||||
release
|
||||
end
|
||||
|
||||
sText_MysteryGiftAlteringCave::
|
||||
sText_MysteryGiftAlteringCave:
|
||||
.string "Thank you for using the MYSTERY\n"
|
||||
.string "GIFT System.\p"
|
||||
.string "There appears to be a rumor about\n"
|
||||
|
||||
@@ -315,7 +315,7 @@ MauvilleCity_PokemonCenter_1F_Text_TrendsStartedStory::
|
||||
.string "the HOENN region!$"
|
||||
|
||||
MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedTitle::
|
||||
.string "The BERRY-Planting TRAINER$"
|
||||
.string "The BERRY-Planting TRAINER$"
|
||||
|
||||
MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedAction::
|
||||
.string "Planted BERRIES$"
|
||||
|
||||
@@ -38,7 +38,7 @@ EventScript_ResetAllBerries::
|
||||
setberrytree BERRY_TREE_ROUTE_117_WEPEAR_3, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree BERRY_TREE_ROUTE_117_WEPEAR_2, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree BERRY_TREE_ROUTE_117_WEPEAR_1, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
|
||||
@ Route 112
|
||||
setberrytree BERRY_TREE_ROUTE_112_RAWST_2, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree BERRY_TREE_ROUTE_112_PECHA_2, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@@ -22,7 +22,7 @@ Roulette_EventScript_Play::
|
||||
special PlayRoulette
|
||||
waitstate
|
||||
end
|
||||
|
||||
|
||||
Roulette_Text_PlayMinimumWagerIsX::
|
||||
.string "The minimum wager at this table\n"
|
||||
.string "is {STR_VAR_1}. Do you want to play?$"
|
||||
|
||||
@@ -4,145 +4,192 @@ gText_HighlyAppealingMove::
|
||||
.string "A highly appealing move.$"
|
||||
|
||||
gText_UserMoreEasilyStartled::
|
||||
.string "After this move, the user is\nmore easily startled.$"
|
||||
.string "After this move, the user is\n"
|
||||
.string "more easily startled.$"
|
||||
|
||||
gText_GreatAppealButNoMoreToEnd::
|
||||
.string "Makes a great appeal, but\nallows no more to the end.$"
|
||||
.string "Makes a great appeal, but\n"
|
||||
.string "allows no more to the end.$"
|
||||
|
||||
gText_UsedRepeatedlyWithoutBoringJudge::
|
||||
.string "Can be repeatedly used\nwithout boring the JUDGE.$"
|
||||
.string "Can be repeatedly used\n"
|
||||
.string "without boring the JUDGE.$"
|
||||
|
||||
gText_AvoidStartledByOthersOnce::
|
||||
.string "Can avoid being startled\nby others once.$"
|
||||
.string "Can avoid being startled\n"
|
||||
.string "by others once.$"
|
||||
|
||||
gText_AvoidStartledByOthers::
|
||||
.string "Can avoid being startled\nby others.$"
|
||||
.string "Can avoid being startled\n"
|
||||
.string "by others.$"
|
||||
|
||||
gText_AvoidStartledByOthersLittle::
|
||||
.string "Can avoid being startled\nby others a little.$"
|
||||
.string "Can avoid being startled\n"
|
||||
.string "by others a little.$"
|
||||
|
||||
gText_UserLessLikelyStartled::
|
||||
.string "After this move, the user is\nless likely to be startled.$"
|
||||
.string "After this move, the user is\n"
|
||||
.string "less likely to be startled.$"
|
||||
|
||||
gText_SlightlyStartleFrontMon::
|
||||
.string "Slightly startles the\nPOKéMON in front.$"
|
||||
.string "Slightly startles the\n"
|
||||
.string "POKéMON in front.$"
|
||||
|
||||
gText_SlightlyStartleAppealed::
|
||||
.string "Slightly startles those\nthat have made appeals.$"
|
||||
.string "Slightly startles those\n"
|
||||
.string "that have made appeals.$"
|
||||
|
||||
gText_StartleAppealedBeforeUser::
|
||||
.string "Startles the POKéMON that\nappealed before the user.$"
|
||||
.string "Startles the POKéMON that\n"
|
||||
.string "appealed before the user.$"
|
||||
|
||||
gText_StartleAllAppealed::
|
||||
.string "Startles all POKéMON that\nhave done their appeals.$"
|
||||
.string "Startles all POKéMON that\n"
|
||||
.string "have done their appeals.$"
|
||||
|
||||
gText_BadlyStartleFrontMon::
|
||||
.string "Badly startles the\nPOKéMON in front.$"
|
||||
.string "Badly startles the\n"
|
||||
.string "POKéMON in front.$"
|
||||
|
||||
gText_BadlyStartleAppealed::
|
||||
.string "Badly startles those that\nhave made appeals.$"
|
||||
.string "Badly startles those that\n"
|
||||
.string "have made appeals.$"
|
||||
|
||||
gText_StartleAppealedBeforeUser2::
|
||||
.string "Startles the POKéMON that\nappealed before the user.$"
|
||||
.string "Startles the POKéMON that\n"
|
||||
.string "appealed before the user.$"
|
||||
|
||||
gText_StartleAllAppealed2::
|
||||
.string "Startles all POKéMON that\nhave done their appeals.$"
|
||||
.string "Startles all POKéMON that\n"
|
||||
.string "have done their appeals.$"
|
||||
|
||||
gText_ShiftJudgesAttentionFromOthers::
|
||||
.string "Shifts the JUDGE's\nattention from others.$"
|
||||
.string "Shifts the JUDGE's\n"
|
||||
.string "attention from others.$"
|
||||
|
||||
gText_StartleMonHasJudgesAttention::
|
||||
.string "Startles the POKéMON that\nhas the JUDGE's attention.$"
|
||||
.string "Startles the POKéMON that\n"
|
||||
.string "has the JUDGE's attention.$"
|
||||
|
||||
gText_JamOthersMissesTurn::
|
||||
.string "Jams the others, and misses\none turn of appeals.$"
|
||||
.string "Jams the others, and misses\n"
|
||||
.string "one turn of appeals.$"
|
||||
|
||||
gText_StartleMonsMadeSameTypeAppeal::
|
||||
.string "Startles POKéMON that\nmade a same-type appeal.$"
|
||||
.string "Startles POKéMON that\n"
|
||||
.string "made a same-type appeal.$"
|
||||
|
||||
gText_BadlyStartleCoolAppeals::
|
||||
.string "Badly startles POKéMON\nthat made COOL appeals.$"
|
||||
.string "Badly startles POKéMON\n"
|
||||
.string "that made COOL appeals.$"
|
||||
|
||||
gText_BadlyStartleBeautyAppeals::
|
||||
.string "Badly startles POKéMON\nthat made BEAUTY appeals.$"
|
||||
.string "Badly startles POKéMON\n"
|
||||
.string "that made BEAUTY appeals.$"
|
||||
|
||||
gText_BadlyStartleCuteAppeals::
|
||||
.string "Badly startles POKéMON\nthat made CUTE appeals.$"
|
||||
.string "Badly startles POKéMON\n"
|
||||
.string "that made CUTE appeals.$"
|
||||
|
||||
gText_BadlyStartleSmartAppeals::
|
||||
.string "Badly startles POKéMON\nthat made SMART appeals.$"
|
||||
.string "Badly startles POKéMON\n"
|
||||
.string "that made SMART appeals.$"
|
||||
|
||||
gText_BadlyStartleToughAppeals::
|
||||
.string "Badly startles POKéMON\nthat made TOUGH appeals.$"
|
||||
.string "Badly startles POKéMON\n"
|
||||
.string "that made TOUGH appeals.$"
|
||||
|
||||
gText_MakeMonAfterUserNervous::
|
||||
.string "Makes one POKéMON after\nthe user nervous.$"
|
||||
.string "Makes one POKéMON after\n"
|
||||
.string "the user nervous.$"
|
||||
|
||||
gText_MakeAllMonsAfterUserNervous::
|
||||
.string "Makes all POKéMON after\nthe user nervous.$"
|
||||
.string "Makes all POKéMON after\n"
|
||||
.string "the user nervous.$"
|
||||
|
||||
gText_WorsenConditionOfThoseMadeAppeals::
|
||||
.string "Worsens the condition of\nthose that made appeals.$"
|
||||
.string "Worsens the condition of\n"
|
||||
.string "those that made appeals.$"
|
||||
|
||||
gText_BadlyStartleMonsGoodCondition::
|
||||
.string "Badly startles POKéMON in\ngood condition.$"
|
||||
.string "Badly startles POKéMON in\n"
|
||||
.string "good condition.$"
|
||||
|
||||
gText_AppealGreatIfPerformedFirst::
|
||||
.string "The appeal works great if\nperformed first.$"
|
||||
.string "The appeal works great if\n"
|
||||
.string "performed first.$"
|
||||
|
||||
gText_AppealGreatIfPerformedLast::
|
||||
.string "The appeal works great if\nperformed last.$"
|
||||
.string "The appeal works great if\n"
|
||||
.string "performed last.$"
|
||||
|
||||
gText_AppealAsGoodAsThoseBeforeIt::
|
||||
.string "Makes the appeal as good\nas those before it.$"
|
||||
.string "Makes the appeal as good\n"
|
||||
.string "as those before it.$"
|
||||
|
||||
gText_AppealAsGoodAsOneBeforeIt::
|
||||
.string "Makes the appeal as good\nas the one before it.$"
|
||||
.string "Makes the appeal as good\n"
|
||||
.string "as the one before it.$"
|
||||
|
||||
gText_AppealBetterLaterItsPerformed::
|
||||
.string "The appeal works better\nthe later it is performed.$"
|
||||
.string "The appeal works better\n"
|
||||
.string "the later it is performed.$"
|
||||
|
||||
gText_AppealVariesDependingOnTiming::
|
||||
.string "The appeal's quality varies\ndepending on its timing.$"
|
||||
.string "The appeal's quality varies\n"
|
||||
.string "depending on its timing.$"
|
||||
|
||||
gText_WorksWellIfSameTypeAsBefore::
|
||||
.string "Works well if it's the same\ntype as the one before.$"
|
||||
.string "Works well if it's the same\n"
|
||||
.string "type as the one before.$"
|
||||
|
||||
gText_WorksWellIfDifferentTypeAsBefore::
|
||||
.string "Works well if different in\ntype than the one before.$"
|
||||
.string "Works well if different in\n"
|
||||
.string "type than the one before.$"
|
||||
|
||||
gText_AffectedByAppealInFront::
|
||||
.string "Affected by how well the\nappeal in front goes.$"
|
||||
.string "Affected by how well the\n"
|
||||
.string "appeal in front goes.$"
|
||||
|
||||
gText_UpsConditionHelpsPreventNervousness::
|
||||
.string "Ups the user's condition.\nHelps prevent nervousness.$"
|
||||
.string "Ups the user's condition.\n"
|
||||
.string "Helps prevent nervousness.$"
|
||||
|
||||
gText_AppealWorksWellIfConditionGood::
|
||||
.string "The appeal works well if the\nuser's condition is good.$"
|
||||
.string "The appeal works well if the\n"
|
||||
.string "user's condition is good.$"
|
||||
|
||||
gText_NextAppealMadeEarlier::
|
||||
.string "The next appeal can be\nmade earlier next turn.$"
|
||||
.string "The next appeal can be\n"
|
||||
.string "made earlier next turn.$"
|
||||
|
||||
gText_NextAppealMadeLater::
|
||||
.string "The next appeal can be\nmade later next turn.$"
|
||||
.string "The next appeal can be\n"
|
||||
.string "made later next turn.$"
|
||||
|
||||
gText_TurnOrderMoreEasilyScrambled::
|
||||
.string "Makes the next turn's order\nmore easily scrambled.$"
|
||||
.string "Makes the next turn's order\n"
|
||||
.string "more easily scrambled.$"
|
||||
|
||||
gText_ScrambleOrderOfNextAppeals::
|
||||
.string "Scrambles the order of\nappeals on the next turn.$"
|
||||
.string "Scrambles the order of\n"
|
||||
.string "appeals on the next turn.$"
|
||||
|
||||
gText_AppealExcitesAudienceInAnyContest::
|
||||
.string "An appeal that excites the\naudience in any CONTEST.$"
|
||||
.string "An appeal that excites the\n"
|
||||
.string "audience in any CONTEST.$"
|
||||
|
||||
gText_BadlyStartlesMonsGoodAppeals::
|
||||
.string "Badly startles all POKéMON\nthat made good appeals.$"
|
||||
.string "Badly startles all POKéMON\n"
|
||||
.string "that made good appeals.$"
|
||||
|
||||
gText_AppealBestMoreCrowdExcited::
|
||||
.string "The appeal works best the\nmore the crowd is excited.$"
|
||||
.string "The appeal works best the\n"
|
||||
.string "more the crowd is excited.$"
|
||||
|
||||
gText_TemporarilyStopCrowdExcited::
|
||||
.string "Temporarily stops the\ncrowd from growing excited.$"
|
||||
.string "Temporarily stops the\n"
|
||||
.string "crowd from growing excited.$"
|
||||
|
||||
@ Unused move names
|
||||
|
||||
|
||||
@@ -1,71 +1,71 @@
|
||||
EventTicket_Text_OldSeaMapTooFar:
|
||||
.string "What's up, youngster?\p"
|
||||
.string "What, it's you who's supposed to have\n"
|
||||
.string "a tattered old map?\p"
|
||||
.string "Let's have a look.\n"
|
||||
.string "… … … … … …\p"
|
||||
.string "Boy, this is quite a ways away.\n"
|
||||
.string "I'm afraid I can't help you…$"
|
||||
.string "What's up, youngster?\p"
|
||||
.string "What, it's you who's supposed to have\n"
|
||||
.string "a tattered old map?\p"
|
||||
.string "Let's have a look.\n"
|
||||
.string "… … … … … …\p"
|
||||
.string "Boy, this is quite a ways away.\n"
|
||||
.string "I'm afraid I can't help you…$"
|
||||
|
||||
EventTicket_Text_BrineyHoldOnASecond:
|
||||
.string "BRINEY: Hold on a second!\p"
|
||||
.string "What's the idea of turning down\n"
|
||||
.string "someone that I owe so much to?$"
|
||||
.string "BRINEY: Hold on a second!\p"
|
||||
.string "What's the idea of turning down\n"
|
||||
.string "someone that I owe so much to?$"
|
||||
|
||||
EventTicket_Text_BrineyLetsSail:
|
||||
.string "{PLAYER}{KUN}, I'm terribly sorry.\p"
|
||||
.string "You came to me seeking my help,\n"
|
||||
.string "and we almost turned you away.\p"
|
||||
.string "Well, let me make things right.\p"
|
||||
.string "We'll sail right away, of course!\p"
|
||||
.string "Let's find this island on\n"
|
||||
.string "this OLD SEA MAP!$"
|
||||
.string "{PLAYER}{KUN}, I'm terribly sorry.\p"
|
||||
.string "You came to me seeking my help,\n"
|
||||
.string "and we almost turned you away.\p"
|
||||
.string "Well, let me make things right.\p"
|
||||
.string "We'll sail right away, of course!\p"
|
||||
.string "Let's find this island on\n"
|
||||
.string "this OLD SEA MAP!$"
|
||||
|
||||
EventTicket_Text_OddTicketGetOnBoard:
|
||||
.string "Is it you who brought that odd\n"
|
||||
.string "ticket?\p"
|
||||
.string "Where you're trying to go is an island\n"
|
||||
.string "that's far, far away.\p"
|
||||
.string "No one knows what awaits there…\p"
|
||||
.string "The very thought excites my blood\n"
|
||||
.string "as a sailing man!\p"
|
||||
.string "Get on board, youngster!$"
|
||||
.string "Is it you who brought that odd\n"
|
||||
.string "ticket?\p"
|
||||
.string "Where you're trying to go is an island\n"
|
||||
.string "that's far, far away.\p"
|
||||
.string "No one knows what awaits there…\p"
|
||||
.string "The very thought excites my blood\n"
|
||||
.string "as a sailing man!\p"
|
||||
.string "Get on board, youngster!$"
|
||||
|
||||
FarawayIsland_Entrance_Text_SailorReturn:
|
||||
.string "CAPT. BRINEY can be so maddeningly\n"
|
||||
.string "fickle…\p"
|
||||
.string "Do you want to return to LILYCOVE?$"
|
||||
.string "CAPT. BRINEY can be so maddeningly\n"
|
||||
.string "fickle…\p"
|
||||
.string "Do you want to return to LILYCOVE?$"
|
||||
|
||||
BirthIsland_Harbor_Text_SailorReturn:
|
||||
.string "What an oddly shaped island, eh?\n"
|
||||
.string "Do you want to return to LILYCOVE?$"
|
||||
.string "What an oddly shaped island, eh?\n"
|
||||
.string "Do you want to return to LILYCOVE?$"
|
||||
|
||||
EventTicket_Text_OddTicketsWhereTo:
|
||||
.string "Is it you who brought those\n"
|
||||
.string "odd tickets?\p"
|
||||
.string "… … …Hm.\p"
|
||||
.string "These tickets will get you to islands\n"
|
||||
.string "that are far, far away.\p"
|
||||
.string "No one knows what awaits there,\n"
|
||||
.string "or what may happen there.\p"
|
||||
.string "The very thought excites my blood\n"
|
||||
.string "as a sailing man!\p"
|
||||
.string "Get on board, youngster!\n"
|
||||
.string "Where shall we sail first?$"
|
||||
.string "Is it you who brought those\n"
|
||||
.string "odd tickets?\p"
|
||||
.string "… … …Hm.\p"
|
||||
.string "These tickets will get you to islands\n"
|
||||
.string "that are far, far away.\p"
|
||||
.string "No one knows what awaits there,\n"
|
||||
.string "or what may happen there.\p"
|
||||
.string "The very thought excites my blood\n"
|
||||
.string "as a sailing man!\p"
|
||||
.string "Get on board, youngster!\n"
|
||||
.string "Where shall we sail first?$"
|
||||
|
||||
NavelRock_Harbor_Text_SailorReturn:
|
||||
.string "Did… Did you hear that?\n"
|
||||
.string "That low growling from deep in there.\p"
|
||||
.string "Are you sure it's safe?\n"
|
||||
.string "Do you think we should leave?$"
|
||||
.string "Did… Did you hear that?\n"
|
||||
.string "That low growling from deep in there.\p"
|
||||
.string "Are you sure it's safe?\n"
|
||||
.string "Do you think we should leave?$"
|
||||
|
||||
FarawayIsland_Entrance_Text_Sign:
|
||||
.string "The writing is fading as if it was\n"
|
||||
.string "written a long time ago…\p"
|
||||
.string "“…ber, 6th day\n"
|
||||
.string "If any human…sets foot here…\l"
|
||||
.string "again…et it be a kindhearted pers…\l"
|
||||
.string "…ith that hope, I depar…”$"
|
||||
.string "The writing is fading as if it was\n"
|
||||
.string "written a long time ago…\p"
|
||||
.string "“…ber, 6th day\n"
|
||||
.string "If any human…sets foot here…\l"
|
||||
.string "again…et it be a kindhearted pers…\l"
|
||||
.string "…ith that hope, I depar…”$"
|
||||
|
||||
FarawayIsland_Interior_Text_Mew:
|
||||
.string "Myuu…$"
|
||||
.string "Myuu…$"
|
||||
|
||||
@@ -5,7 +5,8 @@ gText_PkmnTransferredSomeonesPC::
|
||||
.string "BOX “{STR_VAR_1}.”$"
|
||||
|
||||
gText_PkmnTransferredLanettesPC::
|
||||
.string "{STR_VAR_2} was transferred to\nLANETTE'S PC.\p"
|
||||
.string "{STR_VAR_2} was transferred to\n"
|
||||
.string "LANETTE'S PC.\p"
|
||||
.string "It was placed in \n"
|
||||
.string "BOX “{STR_VAR_1}.”$"
|
||||
|
||||
|
||||
@@ -1,51 +1,51 @@
|
||||
gText_WouldYouLikeToRestYourPkmn::
|
||||
.string "Hello, and welcome to\n"
|
||||
.string "the POKéMON CENTER.\p"
|
||||
.string "We restore your tired POKéMON\n"
|
||||
.string "to full health.\p"
|
||||
.string "Would you like to rest your POKéMON?$"
|
||||
.string "Hello, and welcome to\n"
|
||||
.string "the POKéMON CENTER.\p"
|
||||
.string "We restore your tired POKéMON\n"
|
||||
.string "to full health.\p"
|
||||
.string "Would you like to rest your POKéMON?$"
|
||||
|
||||
gText_IllTakeYourPkmn::
|
||||
.string "Okay, I'll take your POKéMON\n"
|
||||
.string "for a few seconds.$"
|
||||
.string "Okay, I'll take your POKéMON\n"
|
||||
.string "for a few seconds.$"
|
||||
|
||||
gText_RestoredPkmnToFullHealth::
|
||||
.string "Thank you for waiting.\p"
|
||||
.string "We've restored your POKéMON\n"
|
||||
.string "to full health.$"
|
||||
.string "Thank you for waiting.\p"
|
||||
.string "We've restored your POKéMON\n"
|
||||
.string "to full health.$"
|
||||
|
||||
gText_WeHopeToSeeYouAgain::
|
||||
.string "We hope to see you again!$"
|
||||
.string "We hope to see you again!$"
|
||||
|
||||
gText_WelcomeCutShort::
|
||||
.string "Hello, and welcome to\n"
|
||||
.string "the POKéMON CENTER.\p"
|
||||
.string "We restore your tired POKéMON\n"
|
||||
.string "to full health.\p"
|
||||
.string "Would you like to…$"
|
||||
.string "Hello, and welcome to\n"
|
||||
.string "the POKéMON CENTER.\p"
|
||||
.string "We restore your tired POKéMON\n"
|
||||
.string "to full health.\p"
|
||||
.string "Would you like to…$"
|
||||
|
||||
gText_NoticesGoldCard::
|
||||
.string "Th-that card…\n"
|
||||
.string "Could it be… The GOLD CARD?!\p"
|
||||
.string "Oh, the gold color is brilliant!\n"
|
||||
.string "The four stars seem to sparkle!\p"
|
||||
.string "I've seen several TRAINERS with\n"
|
||||
.string "a SILVER CARD before, but, {PLAYER},\l"
|
||||
.string "you're the first TRAINER I've ever\l"
|
||||
.string "seen with a GOLD CARD!\p"
|
||||
.string "Okay, {PLAYER}, please allow me\n"
|
||||
.string "the honor of resting your POKéMON!$"
|
||||
.string "Th-that card…\n"
|
||||
.string "Could it be… The GOLD CARD?!\p"
|
||||
.string "Oh, the gold color is brilliant!\n"
|
||||
.string "The four stars seem to sparkle!\p"
|
||||
.string "I've seen several TRAINERS with\n"
|
||||
.string "a SILVER CARD before, but, {PLAYER},\l"
|
||||
.string "you're the first TRAINER I've ever\l"
|
||||
.string "seen with a GOLD CARD!\p"
|
||||
.string "Okay, {PLAYER}, please allow me\n"
|
||||
.string "the honor of resting your POKéMON!$"
|
||||
|
||||
gText_YouWantTheUsual::
|
||||
.string "I'm delighted to see you, {PLAYER}!\n"
|
||||
.string "You want the usual, am I right?$"
|
||||
.string "I'm delighted to see you, {PLAYER}!\n"
|
||||
.string "You want the usual, am I right?$"
|
||||
|
||||
gText_IllTakeYourPkmn2::
|
||||
.string "Okay, I'll take your POKéMON\n"
|
||||
.string "for a few seconds.$"
|
||||
.string "Okay, I'll take your POKéMON\n"
|
||||
.string "for a few seconds.$"
|
||||
|
||||
gText_ThankYouForWaiting::
|
||||
.string "Thank you for waiting.$"
|
||||
.string "Thank you for waiting.$"
|
||||
|
||||
gText_WeHopeToSeeYouAgain2::
|
||||
.string "We hope to see you again!$"
|
||||
.string "We hope to see you again!$"
|
||||
|
||||
@@ -3,7 +3,7 @@ gBirchDexRatingText_AreYouCurious::
|
||||
.string "Are you curious about how your\n"
|
||||
.string "POKéDEX is coming along?$"
|
||||
|
||||
gBirchDexRatingText_Cancel:
|
||||
gBirchDexRatingText_Cancel::
|
||||
.string "Hm? Oh, you haven't caught enough\n"
|
||||
.string "POKéMON to make it worthwhile.$"
|
||||
|
||||
|
||||
@@ -1,286 +1,286 @@
|
||||
SecretBase_Text_Trainer0Intro:
|
||||
.string "Have you made a SECRET BASE already?\p"
|
||||
.string "I went here, there, everywhere before\n"
|
||||
.string "choosing this place.\p"
|
||||
.string "Since you're already here, how would\n"
|
||||
.string "you like to battle?$"
|
||||
.string "Have you made a SECRET BASE already?\p"
|
||||
.string "I went here, there, everywhere before\n"
|
||||
.string "choosing this place.\p"
|
||||
.string "Since you're already here, how would\n"
|
||||
.string "you like to battle?$"
|
||||
|
||||
SecretBase_Text_Trainer0AcceptBattle:
|
||||
.string "Okay!\n"
|
||||
.string "Here we come!$"
|
||||
.string "Okay!\n"
|
||||
.string "Here we come!$"
|
||||
|
||||
SecretBase_Text_Trainer0DeclineBattle:
|
||||
.string "Hunh?\n"
|
||||
.string "Oh, you can't now…$"
|
||||
.string "Hunh?\n"
|
||||
.string "Oh, you can't now…$"
|
||||
|
||||
SecretBase_Text_Trainer0Defeated::
|
||||
.string "Waaargh! You're too strong!\n"
|
||||
.string "About me losing… Please keep it secret!$"
|
||||
.string "Waaargh! You're too strong!\n"
|
||||
.string "About me losing… Please keep it secret!$"
|
||||
|
||||
SecretBase_Text_Trainer0PostBattle:
|
||||
.string "What do you think of my SECRET BASE?\n"
|
||||
.string "Come visit me again tomorrow.$"
|
||||
.string "What do you think of my SECRET BASE?\n"
|
||||
.string "Come visit me again tomorrow.$"
|
||||
|
||||
SecretBase_Text_Trainer0PreChampion:
|
||||
.string "Have you made a SECRET BASE already?\p"
|
||||
.string "I went here, there, everywhere before\n"
|
||||
.string "choosing this place.\p"
|
||||
.string "Feel free to hang out!$"
|
||||
.string "Have you made a SECRET BASE already?\p"
|
||||
.string "I went here, there, everywhere before\n"
|
||||
.string "choosing this place.\p"
|
||||
.string "Feel free to hang out!$"
|
||||
|
||||
SecretBase_Text_Trainer5Intro:
|
||||
.string "There're a lot of places where\n"
|
||||
.string "you can make a SECRET BASE.\p"
|
||||
.string "But I like this spot best.\n"
|
||||
.string "Don't you think it's nice?\p"
|
||||
.string "Oh, would you like to have a battle?$"
|
||||
.string "There're a lot of places where\n"
|
||||
.string "you can make a SECRET BASE.\p"
|
||||
.string "But I like this spot best.\n"
|
||||
.string "Don't you think it's nice?\p"
|
||||
.string "Oh, would you like to have a battle?$"
|
||||
|
||||
SecretBase_Text_Trainer5AcceptBattle:
|
||||
.string "Okay, here goes!$"
|
||||
.string "Okay, here goes!$"
|
||||
|
||||
SecretBase_Text_Trainer5DeclineBattle:
|
||||
.string "Oh…\n"
|
||||
.string "You can't now, okay.$"
|
||||
.string "Oh…\n"
|
||||
.string "You can't now, okay.$"
|
||||
|
||||
SecretBase_Text_Trainer5Defeated::
|
||||
.string "Hmmm… It's our loss…\n"
|
||||
.string "But don't tell anyone!\l"
|
||||
.string "It's a confidential secret!$"
|
||||
.string "Hmmm… It's our loss…\n"
|
||||
.string "But don't tell anyone!\l"
|
||||
.string "It's a confidential secret!$"
|
||||
|
||||
SecretBase_Text_Trainer5PostBattle:
|
||||
.string "If you're in this area again,\n"
|
||||
.string "I hope you'll visit me.$"
|
||||
.string "If you're in this area again,\n"
|
||||
.string "I hope you'll visit me.$"
|
||||
|
||||
SecretBase_Text_Trainer5PreChampion:
|
||||
.string "There're a lot of places where you can\n"
|
||||
.string "make a SECRET BASE.\p"
|
||||
.string "But I like this spot best.\n"
|
||||
.string "Don't you think it's nice?$"
|
||||
.string "There're a lot of places where you can\n"
|
||||
.string "make a SECRET BASE.\p"
|
||||
.string "But I like this spot best.\n"
|
||||
.string "Don't you think it's nice?$"
|
||||
|
||||
SecretBase_Text_Trainer1Intro:
|
||||
.string "This is a popular spot.\n"
|
||||
.string "It's always taken.\p"
|
||||
.string "Oh! Were you thinking about\n"
|
||||
.string "taking this spot, too?\p"
|
||||
.string "I'll tell you what, you can have this\n"
|
||||
.string "spot if you can beat me.$"
|
||||
.string "This is a popular spot.\n"
|
||||
.string "It's always taken.\p"
|
||||
.string "Oh! Were you thinking about\n"
|
||||
.string "taking this spot, too?\p"
|
||||
.string "I'll tell you what, you can have this\n"
|
||||
.string "spot if you can beat me.$"
|
||||
|
||||
SecretBase_Text_Trainer1AcceptBattle:
|
||||
.string "Okay!\n"
|
||||
.string "I'm going to defend my SECRET BASE!$"
|
||||
.string "Okay!\n"
|
||||
.string "I'm going to defend my SECRET BASE!$"
|
||||
|
||||
SecretBase_Text_Trainer1DeclineBattle:
|
||||
.string "Hunh? Is that right?\n"
|
||||
.string "You're not interested in this spot?$"
|
||||
.string "Hunh? Is that right?\n"
|
||||
.string "You're not interested in this spot?$"
|
||||
|
||||
SecretBase_Text_Trainer1Defeated::
|
||||
.string "I can't keep going!\n"
|
||||
.string "I surrender!$"
|
||||
.string "I can't keep going!\n"
|
||||
.string "I surrender!$"
|
||||
|
||||
SecretBase_Text_Trainer1PostBattle:
|
||||
.string "Okay, when I move one day,\n"
|
||||
.string "this place will be yours!$"
|
||||
.string "Okay, when I move one day,\n"
|
||||
.string "this place will be yours!$"
|
||||
|
||||
SecretBase_Text_Trainer1PreChampion:
|
||||
.string "This is a popular spot.\n"
|
||||
.string "It's always taken.\p"
|
||||
.string "I waited a long time for it to open.\n"
|
||||
.string "I finally got to use it!$"
|
||||
.string "This is a popular spot.\n"
|
||||
.string "It's always taken.\p"
|
||||
.string "I waited a long time for it to open.\n"
|
||||
.string "I finally got to use it!$"
|
||||
|
||||
SecretBase_Text_Trainer6Intro:
|
||||
.string "Welcome to my POKéMON LAB.\p"
|
||||
.string "I carry out research on battling in\n"
|
||||
.string "secrecy.\p"
|
||||
.string "Would you like to see how strong I am?$"
|
||||
.string "Welcome to my POKéMON LAB.\p"
|
||||
.string "I carry out research on battling in\n"
|
||||
.string "secrecy.\p"
|
||||
.string "Would you like to see how strong I am?$"
|
||||
|
||||
SecretBase_Text_Trainer6AcceptBattle:
|
||||
.string "I'm going to go all out!$"
|
||||
.string "I'm going to go all out!$"
|
||||
|
||||
SecretBase_Text_Trainer6DeclineBattle:
|
||||
.string "Oh.\n"
|
||||
.string "Some other time, then!$"
|
||||
.string "Oh.\n"
|
||||
.string "Some other time, then!$"
|
||||
|
||||
SecretBase_Text_Trainer6Defeated::
|
||||
.string "Hmm… I've still got lots to learn.\n"
|
||||
.string "I have to study some more.$"
|
||||
.string "Hmm… I've still got lots to learn.\n"
|
||||
.string "I have to study some more.$"
|
||||
|
||||
SecretBase_Text_Trainer6PostBattle:
|
||||
.string "Thanks for battling with me.\n"
|
||||
.string "Please come back again tomorrow.$"
|
||||
.string "Thanks for battling with me.\n"
|
||||
.string "Please come back again tomorrow.$"
|
||||
|
||||
SecretBase_Text_Trainer6PreChampion:
|
||||
.string "Welcome to my POKéMON LAB.\p"
|
||||
.string "I carry out research on battling in\n"
|
||||
.string "secrecy.$"
|
||||
.string "Welcome to my POKéMON LAB.\p"
|
||||
.string "I carry out research on battling in\n"
|
||||
.string "secrecy.$"
|
||||
|
||||
SecretBase_Text_Trainer2Intro:
|
||||
.string "A big mansion is nice, but I like this\n"
|
||||
.string "sort of place more.\p"
|
||||
.string "I like it because all kinds of people\n"
|
||||
.string "come visit me.\p"
|
||||
.string "So, how would you like a battle?$"
|
||||
.string "A big mansion is nice, but I like this\n"
|
||||
.string "sort of place more.\p"
|
||||
.string "I like it because all kinds of people\n"
|
||||
.string "come visit me.\p"
|
||||
.string "So, how would you like a battle?$"
|
||||
|
||||
SecretBase_Text_Trainer2AcceptBattle:
|
||||
.string "That's the way!$"
|
||||
.string "That's the way!$"
|
||||
|
||||
SecretBase_Text_Trainer2DeclineBattle:
|
||||
.string "When you're ready, give me a shout!$"
|
||||
.string "When you're ready, give me a shout!$"
|
||||
|
||||
SecretBase_Text_Trainer2Defeated::
|
||||
.string "Aww! Done in!\n"
|
||||
.string "But it's still fun to battle!$"
|
||||
.string "Aww! Done in!\n"
|
||||
.string "But it's still fun to battle!$"
|
||||
|
||||
SecretBase_Text_Trainer2PostBattle:
|
||||
.string "Well, anyway, I should go buy some\n"
|
||||
.string "decorations and furniture.\p"
|
||||
.string "I want my SECRET BASE to be a place\n"
|
||||
.string "other people can enjoy.$"
|
||||
.string "Well, anyway, I should go buy some\n"
|
||||
.string "decorations and furniture.\p"
|
||||
.string "I want my SECRET BASE to be a place\n"
|
||||
.string "other people can enjoy.$"
|
||||
|
||||
SecretBase_Text_Trainer2PreChampion:
|
||||
.string "A big mansion is nice, but I like this\n"
|
||||
.string "sort of place more.\p"
|
||||
.string "I like it because all kinds of people\n"
|
||||
.string "come visit me.$"
|
||||
.string "A big mansion is nice, but I like this\n"
|
||||
.string "sort of place more.\p"
|
||||
.string "I like it because all kinds of people\n"
|
||||
.string "come visit me.$"
|
||||
|
||||
SecretBase_Text_Trainer7Intro:
|
||||
.string "I simply adore shopping for decorations\n"
|
||||
.string "and furniture.\p"
|
||||
.string "I also love raising POKéMON just\n"
|
||||
.string "as much.\p"
|
||||
.string "If you would be so kind, will you battle\n"
|
||||
.string "with my POKéMON?$"
|
||||
.string "I simply adore shopping for decorations\n"
|
||||
.string "and furniture.\p"
|
||||
.string "I also love raising POKéMON just\n"
|
||||
.string "as much.\p"
|
||||
.string "If you would be so kind, will you battle\n"
|
||||
.string "with my POKéMON?$"
|
||||
|
||||
SecretBase_Text_Trainer7AcceptBattle:
|
||||
.string "Thank you.\n"
|
||||
.string "Shall we begin?$"
|
||||
.string "Thank you.\n"
|
||||
.string "Shall we begin?$"
|
||||
|
||||
SecretBase_Text_Trainer7DeclineBattle:
|
||||
.string "Oh.\n"
|
||||
.string "How disappointing…$"
|
||||
.string "Oh.\n"
|
||||
.string "How disappointing…$"
|
||||
|
||||
SecretBase_Text_Trainer7Defeated::
|
||||
.string "I concede…$"
|
||||
.string "I concede…$"
|
||||
|
||||
SecretBase_Text_Trainer7PostBattle:
|
||||
.string "That was all in good fun!\n"
|
||||
.string "I should go enjoy shopping now.$"
|
||||
.string "That was all in good fun!\n"
|
||||
.string "I should go enjoy shopping now.$"
|
||||
|
||||
SecretBase_Text_Trainer7PreChampion:
|
||||
.string "I simply adore shopping for decorations\n"
|
||||
.string "and furniture.\p"
|
||||
.string "I also love raising POKéMON just\n"
|
||||
.string "as much.$"
|
||||
.string "I simply adore shopping for decorations\n"
|
||||
.string "and furniture.\p"
|
||||
.string "I also love raising POKéMON just\n"
|
||||
.string "as much.$"
|
||||
|
||||
SecretBase_Text_Trainer3Intro:
|
||||
.string "Some people make their SECRET BASES in\n"
|
||||
.string "hard-to-find places.\l"
|
||||
.string "Do they want to just lie low?\p"
|
||||
.string "But since you found me, how about we\n"
|
||||
.string "have a battle?$"
|
||||
.string "Some people make their SECRET BASES in\n"
|
||||
.string "hard-to-find places.\l"
|
||||
.string "Do they want to just lie low?\p"
|
||||
.string "But since you found me, how about we\n"
|
||||
.string "have a battle?$"
|
||||
|
||||
SecretBase_Text_Trainer3AcceptBattle:
|
||||
.string "I'm not going down easily!$"
|
||||
.string "I'm not going down easily!$"
|
||||
|
||||
SecretBase_Text_Trainer3DeclineBattle:
|
||||
.string "Oh… Are you maybe tired from searching\n"
|
||||
.string "for this place?$"
|
||||
.string "Oh… Are you maybe tired from searching\n"
|
||||
.string "for this place?$"
|
||||
|
||||
SecretBase_Text_Trainer3Defeated::
|
||||
.string "I went down…$"
|
||||
.string "I went down…$"
|
||||
|
||||
SecretBase_Text_Trainer3PostBattle:
|
||||
.string "Where's your SECRET BASE?\n"
|
||||
.string "I should go visit you there.$"
|
||||
.string "Where's your SECRET BASE?\n"
|
||||
.string "I should go visit you there.$"
|
||||
|
||||
SecretBase_Text_Trainer3PreChampion:
|
||||
.string "Some people make their SECRET BASES in\n"
|
||||
.string "hard-to-find places.\l"
|
||||
.string "Do they want to just lie low?$"
|
||||
.string "Some people make their SECRET BASES in\n"
|
||||
.string "hard-to-find places.\l"
|
||||
.string "Do they want to just lie low?$"
|
||||
|
||||
SecretBase_Text_Trainer8Intro:
|
||||
.string "People have told me that you can get\n"
|
||||
.string "decorations in several ways.\p"
|
||||
.string "We should have a race to see who can\n"
|
||||
.string "get nicer decorations and furniture!\p"
|
||||
.string "In the meantime, want to battle?$"
|
||||
.string "People have told me that you can get\n"
|
||||
.string "decorations in several ways.\p"
|
||||
.string "We should have a race to see who can\n"
|
||||
.string "get nicer decorations and furniture!\p"
|
||||
.string "In the meantime, want to battle?$"
|
||||
|
||||
SecretBase_Text_Trainer8AcceptBattle:
|
||||
.string "This is my SECRET BASE.\n"
|
||||
.string "I can't lose!$"
|
||||
.string "This is my SECRET BASE.\n"
|
||||
.string "I can't lose!$"
|
||||
|
||||
SecretBase_Text_Trainer8DeclineBattle:
|
||||
.string "I'll battle with you anytime.$"
|
||||
.string "I'll battle with you anytime.$"
|
||||
|
||||
SecretBase_Text_Trainer8Defeated::
|
||||
.string "Huh?\n"
|
||||
.string "Did I just lose?$"
|
||||
.string "Huh?\n"
|
||||
.string "Did I just lose?$"
|
||||
|
||||
SecretBase_Text_Trainer8PostBattle:
|
||||
.string "I won't lose at collecting decorations.\n"
|
||||
.string "Come visit again!$"
|
||||
.string "I won't lose at collecting decorations.\n"
|
||||
.string "Come visit again!$"
|
||||
|
||||
SecretBase_Text_Trainer8PreChampion:
|
||||
.string "People have told me that you can get\n"
|
||||
.string "decorations in several ways.\p"
|
||||
.string "We should have a race to see who can\n"
|
||||
.string "get nicer decorations and furniture!$"
|
||||
.string "People have told me that you can get\n"
|
||||
.string "decorations in several ways.\p"
|
||||
.string "We should have a race to see who can\n"
|
||||
.string "get nicer decorations and furniture!$"
|
||||
|
||||
SecretBase_Text_Trainer4Intro:
|
||||
.string "I found a spot I liked, and I did it up\n"
|
||||
.string "with my favorite decorations.\p"
|
||||
.string "I raise my favorite POKéMON and grow\n"
|
||||
.string "stronger with it.\p"
|
||||
.string "That's what I do.\n"
|
||||
.string "Want to battle with me?$"
|
||||
.string "I found a spot I liked, and I did it up\n"
|
||||
.string "with my favorite decorations.\p"
|
||||
.string "I raise my favorite POKéMON and grow\n"
|
||||
.string "stronger with it.\p"
|
||||
.string "That's what I do.\n"
|
||||
.string "Want to battle with me?$"
|
||||
|
||||
SecretBase_Text_Trainer4AcceptBattle:
|
||||
.string "Show me what you're made of!$"
|
||||
.string "Show me what you're made of!$"
|
||||
|
||||
SecretBase_Text_Trainer4DeclineBattle:
|
||||
.string "I guess there are times when you're not\n"
|
||||
.string "into it.$"
|
||||
.string "I guess there are times when you're not\n"
|
||||
.string "into it.$"
|
||||
|
||||
SecretBase_Text_Trainer4Defeated::
|
||||
.string "I know exactly what you're made of now.$"
|
||||
.string "I know exactly what you're made of now.$"
|
||||
|
||||
SecretBase_Text_Trainer4PostBattle:
|
||||
.string "We can both become stronger.\n"
|
||||
.string "Let's keep at it!$"
|
||||
.string "We can both become stronger.\n"
|
||||
.string "Let's keep at it!$"
|
||||
|
||||
SecretBase_Text_Trainer4PreChampion:
|
||||
.string "I found a spot I liked, and I did it up\n"
|
||||
.string "with my favorite decorations.\p"
|
||||
.string "I raise my favorite POKéMON and grow\n"
|
||||
.string "stronger with it.\p"
|
||||
.string "Every day is a great day.$"
|
||||
.string "I found a spot I liked, and I did it up\n"
|
||||
.string "with my favorite decorations.\p"
|
||||
.string "I raise my favorite POKéMON and grow\n"
|
||||
.string "stronger with it.\p"
|
||||
.string "Every day is a great day.$"
|
||||
|
||||
SecretBase_Text_Trainer9Intro:
|
||||
.string "You can learn a lot about the taste\n"
|
||||
.string "and sense of people by the kinds of\l"
|
||||
.string "decorations they have, and how they\l"
|
||||
.string "display them.\p"
|
||||
.string "What do you think of my taste?\n"
|
||||
.string "Are you speechless?\p"
|
||||
.string "Want to see my taste in battling?$"
|
||||
.string "You can learn a lot about the taste\n"
|
||||
.string "and sense of people by the kinds of\l"
|
||||
.string "decorations they have, and how they\l"
|
||||
.string "display them.\p"
|
||||
.string "What do you think of my taste?\n"
|
||||
.string "Are you speechless?\p"
|
||||
.string "Want to see my taste in battling?$"
|
||||
|
||||
SecretBase_Text_Trainer9AcceptBattle:
|
||||
.string "There's no holding back!$"
|
||||
.string "There's no holding back!$"
|
||||
|
||||
SecretBase_Text_Trainer9DeclineBattle:
|
||||
.string "I'll be happy to demonstrate my style\n"
|
||||
.string "anytime.$"
|
||||
.string "I'll be happy to demonstrate my style\n"
|
||||
.string "anytime.$"
|
||||
|
||||
SecretBase_Text_Trainer9Defeated::
|
||||
.string "You're supremely talented!\n"
|
||||
.string "Your power seems to be limitless…$"
|
||||
.string "You're supremely talented!\n"
|
||||
.string "Your power seems to be limitless…$"
|
||||
|
||||
SecretBase_Text_Trainer9PostBattle:
|
||||
.string "What did you think of my style?\n"
|
||||
.string "I'll keep on polishing it!$"
|
||||
.string "What did you think of my style?\n"
|
||||
.string "I'll keep on polishing it!$"
|
||||
|
||||
SecretBase_Text_Trainer9PreChampion:
|
||||
.string "You can learn a lot about the taste\n"
|
||||
.string "and sense of people by the kinds of\l"
|
||||
.string "decorations they have, and how they\l"
|
||||
.string "display them.\p"
|
||||
.string "What do you think of my taste?\n"
|
||||
.string "Are you speechless?$"
|
||||
.string "You can learn a lot about the taste\n"
|
||||
.string "and sense of people by the kinds of\l"
|
||||
.string "decorations they have, and how they\l"
|
||||
.string "display them.\p"
|
||||
.string "What do you think of my taste?\n"
|
||||
.string "Are you speechless?$"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
gText_WantToUseSurf::
|
||||
.string "The water is dyed a deep blue…\nWould you like to SURF?$"
|
||||
.string "The water is dyed a deep blue…\n"
|
||||
.string "Would you like to SURF?$"
|
||||
|
||||
gText_PlayerUsedSurf::
|
||||
.string "{STR_VAR_1} used SURF!$"
|
||||
|
||||
@@ -166,7 +166,7 @@ BattleFrontier_BattleTowerLobby_Text_LookingForwardToNextBattle::
|
||||
.string "I'll be looking forward to your\n"
|
||||
.string "next battle!$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText00::
|
||||
BravoTrainerBattleTower_Text_Intro::
|
||||
.string "Yeah!\n"
|
||||
.string "It's BRAVO TRAINER time!\p"
|
||||
.string "Today, we're going to profile {STR_VAR_1},\n"
|
||||
@@ -174,12 +174,12 @@ gTVBravoTrainerBattleTowerText00::
|
||||
.string "For the challenge, {STR_VAR_1} entered\n"
|
||||
.string "one wicked {STR_VAR_2}.$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText01::
|
||||
BravoTrainerBattleTower_Text_NewRecord::
|
||||
.string "The pair set a new record of {STR_VAR_2} wins\n"
|
||||
.string "in a row in {STR_VAR_1} competition!\l"
|
||||
.string "Bravo, TRAINER!$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText02::
|
||||
BravoTrainerBattleTower_Text_Lost::
|
||||
.string "The twosome finally succumbed to\n"
|
||||
.string "{STR_VAR_1} in match number {STR_VAR_2}.\l"
|
||||
.string "Nice try, TRAINER!\p"
|
||||
@@ -188,7 +188,7 @@ gTVBravoTrainerBattleTowerText02::
|
||||
.string "We asked the TRAINER for impressions\n"
|
||||
.string "on the match with {STR_VAR_1}.$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText03::
|
||||
BravoTrainerBattleTower_Text_Won::
|
||||
.string "The twosome won it all by defeating\n"
|
||||
.string "{STR_VAR_1}'s {STR_VAR_2} thoroughly.\l"
|
||||
.string "Bravo, TRAINER!\p"
|
||||
@@ -197,7 +197,7 @@ gTVBravoTrainerBattleTowerText03::
|
||||
.string "We asked the TRAINER for impressions\n"
|
||||
.string "on the moment of glory.$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText04::
|
||||
BravoTrainerBattleTower_Text_LostFinal::
|
||||
.string "After a string of wins, the pair finally\n"
|
||||
.string "succumbed to {STR_VAR_1}'s {STR_VAR_2},\l"
|
||||
.string "their final hurdle.\p"
|
||||
@@ -208,7 +208,7 @@ gTVBravoTrainerBattleTowerText04::
|
||||
.string "We asked the TRAINER for impressions\n"
|
||||
.string "on battling the celebrity pair.$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText05::
|
||||
BravoTrainerBattleTower_Text_Satisfied::
|
||||
.string "This is what the TRAINER had to say:\n"
|
||||
.string "“I'm satisfied!”\p"
|
||||
.string "Now isn't that a refreshing reply?\n"
|
||||
@@ -218,7 +218,7 @@ gTVBravoTrainerBattleTowerText05::
|
||||
.string "I found out exactly how satisfied\n"
|
||||
.string "when I heard the TRAINER say this:$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText06::
|
||||
BravoTrainerBattleTower_Text_Unsatisfied::
|
||||
.string "This is what the TRAINER had to say:\n"
|
||||
.string "“I'm not satisfied…”\p"
|
||||
.string "Our TRAINER was obviously a little down\n"
|
||||
@@ -228,22 +228,22 @@ gTVBravoTrainerBattleTowerText06::
|
||||
.string "Anyway, I found out how dissatisfied\n"
|
||||
.string "our TRAINER was when I heard this:$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText07::
|
||||
BravoTrainerBattleTower_Text_None1::
|
||||
.string "None$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText08::
|
||||
BravoTrainerBattleTower_Text_None2::
|
||||
.string "None$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText09::
|
||||
BravoTrainerBattleTower_Text_None3::
|
||||
.string "None$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText10::
|
||||
BravoTrainerBattleTower_Text_None4::
|
||||
.string "None$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText11::
|
||||
BravoTrainerBattleTower_Text_Response::
|
||||
.string "“{STR_VAR_1}.”$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText12::
|
||||
BravoTrainerBattleTower_Text_ResponseSatisfied::
|
||||
.string "“{STR_VAR_1}.”\n"
|
||||
.string "Now isn't that great?\p"
|
||||
.string "It really expresses {STR_VAR_2}'s joy,\n"
|
||||
@@ -252,7 +252,7 @@ gTVBravoTrainerBattleTowerText12::
|
||||
.string "end… It really was what you'd call\l"
|
||||
.string "“{STR_VAR_1}”!$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText13::
|
||||
BravoTrainerBattleTower_Text_ResponseUnsatisfied::
|
||||
.string "“{STR_VAR_1}.”\n"
|
||||
.string "Now isn't that fitting?\p"
|
||||
.string "That battle with {STR_VAR_3} at the\n"
|
||||
@@ -261,7 +261,7 @@ gTVBravoTrainerBattleTowerText13::
|
||||
.string "{STR_VAR_2}'s disappointment comes across\n"
|
||||
.string "loud and clear, I'd say!$"
|
||||
|
||||
gTVBravoTrainerBattleTowerText14::
|
||||
BravoTrainerBattleTower_Text_Outro::
|
||||
.string "Bravo, {STR_VAR_1}!\n"
|
||||
.string "Bravo, {STR_VAR_2}!\p"
|
||||
.string "I hope we can count on seeing\n"
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
|
||||
# Bugs and Glitches
|
||||
|
||||
These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash. Defining the `BUGFIX` and `UBFIX` preprocessor variables will fix some of these automatically. `UBFIX` will already be defined for MODERN builds.
|
||||
|
||||
Fixes are written in the `diff` format. If you've used Git before, this should look familiar:
|
||||
|
||||
```diff
|
||||
this is some code
|
||||
-delete red - lines
|
||||
+add green + lines
|
||||
```
|
||||
|
||||
## Contents
|
||||
|
||||
- [Scrolling through items in the bag causes the image to flicker](#scrolling-through-items-in-the-bag-causes-the-image-to-flicker)
|
||||
|
||||
|
||||
## Scrolling through items in the bag causes the image to flicker
|
||||
|
||||
**Fix:** Add the following function to [src/item_menu_icons.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu_icons.c):
|
||||
```diff
|
||||
+void HideBagItemIconSprite(u8 id)
|
||||
+{
|
||||
+ u8 *spriteId = &gBagMenu->spriteId[10];
|
||||
+ if (spriteId[id] != 0xFF)
|
||||
+ {
|
||||
+ gSprites[spriteId[id]].invisible = TRUE;
|
||||
+ }
|
||||
+}
|
||||
|
||||
```
|
||||
|
||||
and its corresponding declaration in [include/item_menu_icons.h](https://github.com/pret/pokeemerald/blob/master/include/item_menu_icons.h):
|
||||
|
||||
```diff
|
||||
+void HideBagItemIconSprite(u8 id);
|
||||
|
||||
```
|
||||
|
||||
Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu.c):
|
||||
|
||||
```diff
|
||||
...
|
||||
{
|
||||
- RemoveBagItemIconSprite(1 ^ gBagMenu->itemIconSlot);
|
||||
+ HideBagItemIconSprite(gBagMenu->itemIconSlot ^ 1);
|
||||
+ RemoveBagItemIconSprite(gBagMenu->itemIconSlot);
|
||||
if (itemIndex != LIST_CANCEL)
|
||||
...
|
||||
```
|
||||
@@ -17,8 +17,8 @@
|
||||
cd /mnt/c/Users/<user>/Downloads
|
||||
```
|
||||
|
||||
> Note 1: The Windows C:\ drive is called /mnt/c/ in WSL.
|
||||
> Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "/mnt/c/users/<user>/Downloads folder"`.
|
||||
> Note 1: The Windows C:\ drive is called /mnt/c/ in WSL.
|
||||
> Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "/mnt/c/users/<user>/Downloads folder"`.
|
||||
> Note 3: Windows path names are case-insensitive so adhering to capitalization isn't needed
|
||||
|
||||
4. Once the directory has been changed to the folder containing the devkitPro pacman package, run the following commands to install devkitARM.
|
||||
|
||||
30
gflib/bg.c
@@ -33,7 +33,7 @@ struct BgConfig2
|
||||
u32 basePalette:4;
|
||||
u32 unk_3:18;
|
||||
|
||||
void* tilemap;
|
||||
void *tilemap;
|
||||
s32 bg_x;
|
||||
s32 bg_y;
|
||||
};
|
||||
@@ -183,14 +183,14 @@ u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode)
|
||||
case 0x1:
|
||||
offset = sGpuBgConfigs.configs[bg].charBaseIndex * BG_CHAR_SIZE;
|
||||
offset = destOffset + offset;
|
||||
cursor = RequestDma3Copy(src, (void*)(offset + BG_VRAM), size, 0);
|
||||
cursor = RequestDma3Copy(src, (void *)(offset + BG_VRAM), size, 0);
|
||||
if (cursor == -1)
|
||||
return -1;
|
||||
break;
|
||||
case 0x2:
|
||||
offset = sGpuBgConfigs.configs[bg].mapBaseIndex * BG_SCREEN_SIZE;
|
||||
offset = destOffset + offset;
|
||||
cursor = RequestDma3Copy(src, (void*)(offset + BG_VRAM), size, 0);
|
||||
cursor = RequestDma3Copy(src, (void *)(offset + BG_VRAM), size, 0);
|
||||
if (cursor == -1)
|
||||
return -1;
|
||||
break;
|
||||
@@ -372,7 +372,7 @@ void SetBgMode(u8 bgMode)
|
||||
SetBgModeInternal(bgMode);
|
||||
}
|
||||
|
||||
u16 LoadBgTiles(u8 bg, const void* src, u16 size, u16 destOffset)
|
||||
u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset)
|
||||
{
|
||||
u16 tileOffset;
|
||||
u8 cursor;
|
||||
@@ -422,7 +422,7 @@ u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset)
|
||||
if (!IsInvalidBg32(bg))
|
||||
{
|
||||
u16 paletteOffset = (sGpuBgConfigs2[bg].basePalette * 0x20) + (destOffset * 2);
|
||||
cursor = RequestDma3Copy(src, (void*)(paletteOffset + BG_PLTT), size, 0);
|
||||
cursor = RequestDma3Copy(src, (void *)(paletteOffset + BG_PLTT), size, 0);
|
||||
|
||||
if (cursor == -1)
|
||||
{
|
||||
@@ -863,7 +863,7 @@ void UnsetBgTilemapBuffer(u8 bg)
|
||||
}
|
||||
}
|
||||
|
||||
void* GetBgTilemapBuffer(u8 bg)
|
||||
void *GetBgTilemapBuffer(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg))
|
||||
return NULL;
|
||||
@@ -906,7 +906,7 @@ void CopyBgTilemapBufferToVram(u8 bg)
|
||||
}
|
||||
}
|
||||
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height)
|
||||
{
|
||||
u16 destX16;
|
||||
u16 destY16;
|
||||
@@ -923,7 +923,7 @@ void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 wi
|
||||
{
|
||||
for (destX16 = destX; destX16 < (destX + width); destX16++)
|
||||
{
|
||||
((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
|
||||
((u16 *)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -936,7 +936,7 @@ void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 wi
|
||||
{
|
||||
for (destX16 = destX; destX16 < (destX + width); destX16++)
|
||||
{
|
||||
((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
|
||||
((u8 *)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -984,7 +984,7 @@ void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8
|
||||
{
|
||||
for (j = destX; j < (destX + rectWidth); j++)
|
||||
{
|
||||
*(u8*)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8*)(srcPtr) + tileOffset;
|
||||
*(u8 *)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8 *)(srcPtr) + tileOffset;
|
||||
srcPtr++;
|
||||
}
|
||||
srcPtr += (srcWidth - rectWidth);
|
||||
@@ -1009,7 +1009,7 @@ void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width,
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
((u16*)sGpuBgConfigs2[bg].tilemap)[((y16 * 0x20) + x16)] = tileNum;
|
||||
((u16 *)sGpuBgConfigs2[bg].tilemap)[((y16 * 0x20) + x16)] = tileNum;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1019,7 +1019,7 @@ void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width,
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
((u8*)sGpuBgConfigs2[bg].tilemap)[((y16 * mode) + x16)] = tileNum;
|
||||
((u8 *)sGpuBgConfigs2[bg].tilemap)[((y16 * mode) + x16)] = tileNum;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1052,7 +1052,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
CopyTileMapEntry(&firstTileNum, &((u16*)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0);
|
||||
CopyTileMapEntry(&firstTileNum, &((u16 *)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0);
|
||||
firstTileNum = (firstTileNum & (MAPGRID_COLLISION_MASK | MAPGRID_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & MAPGRID_METATILE_ID_MASK);
|
||||
}
|
||||
}
|
||||
@@ -1063,7 +1063,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
|
||||
{
|
||||
for (x16 = x; x16 < (x + width); x16++)
|
||||
{
|
||||
((u8*)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum;
|
||||
((u8 *)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum;
|
||||
firstTileNum = (firstTileNum & (MAPGRID_COLLISION_MASK | MAPGRID_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & MAPGRID_METATILE_ID_MASK);
|
||||
}
|
||||
}
|
||||
@@ -1240,7 +1240,7 @@ bool32 IsInvalidBg32(u8 bg)
|
||||
|
||||
bool32 IsTileMapOutsideWram(u8 bg)
|
||||
{
|
||||
if (sGpuBgConfigs2[bg].tilemap > (void*)IWRAM_END)
|
||||
if (sGpuBgConfigs2[bg].tilemap > (void *)IWRAM_END)
|
||||
return TRUE;
|
||||
else if (sGpuBgConfigs2[bg].tilemap == NULL)
|
||||
return TRUE;
|
||||
|
||||
40
gflib/bg.h
@@ -3,29 +3,29 @@
|
||||
|
||||
enum
|
||||
{
|
||||
BG_ATTR_CHARBASEINDEX = 1,
|
||||
BG_ATTR_MAPBASEINDEX,
|
||||
BG_ATTR_SCREENSIZE,
|
||||
BG_ATTR_PALETTEMODE,
|
||||
BG_ATTR_MOSAIC,
|
||||
BG_ATTR_WRAPAROUND,
|
||||
BG_ATTR_PRIORITY,
|
||||
BG_ATTR_METRIC,
|
||||
BG_ATTR_TYPE,
|
||||
BG_ATTR_BASETILE,
|
||||
BG_ATTR_CHARBASEINDEX = 1,
|
||||
BG_ATTR_MAPBASEINDEX,
|
||||
BG_ATTR_SCREENSIZE,
|
||||
BG_ATTR_PALETTEMODE,
|
||||
BG_ATTR_MOSAIC,
|
||||
BG_ATTR_WRAPAROUND,
|
||||
BG_ATTR_PRIORITY,
|
||||
BG_ATTR_METRIC,
|
||||
BG_ATTR_TYPE,
|
||||
BG_ATTR_BASETILE,
|
||||
};
|
||||
|
||||
enum {
|
||||
BG_TYPE_NORMAL,
|
||||
BG_TYPE_AFFINE,
|
||||
BG_TYPE_NONE = 0xFFFF
|
||||
BG_TYPE_NORMAL,
|
||||
BG_TYPE_AFFINE,
|
||||
BG_TYPE_NONE = 0xFFFF
|
||||
};
|
||||
|
||||
// Modes for ChangeBgX / ChangeBgY
|
||||
enum {
|
||||
BG_COORD_SET,
|
||||
BG_COORD_ADD,
|
||||
BG_COORD_SUB,
|
||||
BG_COORD_SET,
|
||||
BG_COORD_ADD,
|
||||
BG_COORD_SUB,
|
||||
};
|
||||
|
||||
// Modes for Unused_AdjustBgMosaic
|
||||
@@ -62,7 +62,7 @@ void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
|
||||
void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates);
|
||||
void InitBgFromTemplate(const struct BgTemplate *template);
|
||||
void SetBgMode(u8 bgMode);
|
||||
u16 LoadBgTiles(u8 bg, const void* src, u16 size, u16 destOffset);
|
||||
u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset);
|
||||
u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset);
|
||||
u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset);
|
||||
bool8 IsDma3ManagerBusyWithBgCopy(void);
|
||||
@@ -76,13 +76,13 @@ s32 ChangeBgY(u8 bg, s32 value, u8 op);
|
||||
s32 ChangeBgY_ScreenOff(u8 bg, s32 value, u8 op);
|
||||
s32 GetBgY(u8 bg);
|
||||
void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle);
|
||||
u8 Unused_AdjustBgMosaic(u8 a1, u8 a2);
|
||||
u8 Unused_AdjustBgMosaic(u8 val, u8 mode);
|
||||
void SetBgTilemapBuffer(u8 bg, void *tilemap);
|
||||
void UnsetBgTilemapBuffer(u8 bg);
|
||||
void* GetBgTilemapBuffer(u8 bg);
|
||||
void *GetBgTilemapBuffer(u8 bg);
|
||||
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
|
||||
void CopyBgTilemapBufferToVram(u8 bg);
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height);
|
||||
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
|
||||
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2);
|
||||
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
|
||||
|
||||
@@ -2,13 +2,10 @@
|
||||
#define GUARD_ALLOC_H
|
||||
|
||||
#define HEAP_SIZE 0x1C000
|
||||
#define malloc Alloc
|
||||
#define calloc(ct, sz) AllocZeroed((ct) * (sz))
|
||||
#define free Free
|
||||
|
||||
#define FREE_AND_SET_NULL(ptr) \
|
||||
{ \
|
||||
free(ptr); \
|
||||
Free(ptr); \
|
||||
ptr = NULL; \
|
||||
}
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC
|
||||
static u8 IndexOfSpriteTileTag(u16 tag);
|
||||
static void AllocSpriteTileRange(u16 tag, u16 start, u16 count);
|
||||
static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset);
|
||||
static void UpdateSpriteMatrixAnchorPos(struct Sprite* sprite, s32 a1, s32 a2);
|
||||
static void UpdateSpriteMatrixAnchorPos(struct Sprite *, s32, s32);
|
||||
|
||||
typedef void (*AnimFunc)(struct Sprite *);
|
||||
typedef void (*AnimCmdFunc)(struct Sprite *);
|
||||
@@ -103,9 +103,9 @@ typedef void (*AffineAnimCmdFunc)(u8 matrixNum, struct Sprite *);
|
||||
#define DUMMY_OAM_DATA \
|
||||
{ \
|
||||
.y = DISPLAY_HEIGHT, \
|
||||
.affineMode = 0, \
|
||||
.affineMode = ST_OAM_AFFINE_OFF, \
|
||||
.objMode = 0, \
|
||||
.mosaic = 0, \
|
||||
.mosaic = FALSE, \
|
||||
.bpp = 0, \
|
||||
.shape = SPRITE_SHAPE(8x8), \
|
||||
.x = DISPLAY_WIDTH + 64, \
|
||||
@@ -632,14 +632,11 @@ void DestroySprite(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void ResetOamRange(u8 a, u8 b)
|
||||
void ResetOamRange(u8 start, u8 end)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = a; i < b; i++)
|
||||
{
|
||||
for (i = start; i < end; i++)
|
||||
gMain.oamBuffer[i] = *(struct OamData *)&gDummyOamData;
|
||||
}
|
||||
}
|
||||
|
||||
void LoadOam(void)
|
||||
@@ -1204,7 +1201,7 @@ u8 GetSpriteMatrixNum(struct Sprite *sprite)
|
||||
|
||||
// Used to shift a sprite's position as it scales.
|
||||
// Only used by the minigame countdown, so that for instance the numbers don't slide up as they squish down before jumping.
|
||||
void SetSpriteMatrixAnchor(struct Sprite* sprite, s16 x, s16 y)
|
||||
void SetSpriteMatrixAnchor(struct Sprite *sprite, s16 x, s16 y)
|
||||
{
|
||||
sprite->sAnchorX = x;
|
||||
sprite->sAnchorY = y;
|
||||
|
||||
@@ -270,7 +270,7 @@ u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 sub
|
||||
u8 CreateInvisibleSprite(void (*callback)(struct Sprite *));
|
||||
u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
|
||||
void DestroySprite(struct Sprite *sprite);
|
||||
void ResetOamRange(u8 a, u8 b);
|
||||
void ResetOamRange(u8 start, u8 end);
|
||||
void LoadOam(void);
|
||||
void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d);
|
||||
void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode);
|
||||
@@ -282,7 +282,7 @@ void FreeSpritePalette(struct Sprite *sprite);
|
||||
void FreeSpriteOamMatrix(struct Sprite *sprite);
|
||||
void DestroySpriteAndFreeResources(struct Sprite *sprite);
|
||||
void AnimateSprite(struct Sprite *sprite);
|
||||
void SetSpriteMatrixAnchor(struct Sprite* sprite, s16 x, s16 y);
|
||||
void SetSpriteMatrixAnchor(struct Sprite *sprite, s16 x, s16 y);
|
||||
void StartSpriteAnim(struct Sprite *sprite, u8 animNum);
|
||||
void StartSpriteAnimIfDifferent(struct Sprite *sprite, u8 animNum);
|
||||
void SeekSpriteAnim(struct Sprite *sprite, u8 animCmdIndex);
|
||||
|
||||
@@ -387,7 +387,7 @@ u8 *StringBraille(u8 *dest, const u8 *src)
|
||||
const u8 setBrailleFont[] = {
|
||||
EXT_CTRL_CODE_BEGIN,
|
||||
EXT_CTRL_CODE_FONT,
|
||||
6,
|
||||
FONT_BRAILLE,
|
||||
EOS
|
||||
};
|
||||
const u8 gotoLine2[] = {
|
||||
|
||||
26
gflib/text.c
@@ -73,7 +73,7 @@ static const u8 sDarkDownArrowTiles[] = INCBIN_U8("graphics/fonts/down_arrow_alt
|
||||
static const u8 sUnusedFRLGBlankedDownArrow[] = INCBIN_U8("graphics/fonts/unused_frlg_blanked_down_arrow.4bpp");
|
||||
static const u8 sUnusedFRLGDownArrow[] = INCBIN_U8("graphics/fonts/unused_frlg_down_arrow.4bpp");
|
||||
static const u8 sDownArrowYCoords[] = { 0, 1, 2, 1 };
|
||||
static const u8 sWindowVerticalScrollSpeeds[] = {
|
||||
static const u8 sWindowVerticalScrollSpeeds[] = {
|
||||
[OPTIONS_TEXT_SPEED_SLOW] = 1,
|
||||
[OPTIONS_TEXT_SPEED_MID] = 2,
|
||||
[OPTIONS_TEXT_SPEED_FAST] = 4,
|
||||
@@ -299,7 +299,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, voi
|
||||
else
|
||||
{
|
||||
sTempTextPrinter.textSpeed = 0;
|
||||
|
||||
|
||||
// Render all text (up to limit) at once
|
||||
for (j = 0; j < 0x400; ++j)
|
||||
{
|
||||
@@ -326,14 +326,14 @@ void RunTextPrinters(void)
|
||||
{
|
||||
if (sTextPrinters[i].active)
|
||||
{
|
||||
u16 temp = RenderFont(&sTextPrinters[i]);
|
||||
switch (temp)
|
||||
u16 renderCmd = RenderFont(&sTextPrinters[i]);
|
||||
switch (renderCmd)
|
||||
{
|
||||
case RENDER_PRINT:
|
||||
CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, COPYWIN_GFX);
|
||||
case RENDER_UPDATE:
|
||||
if (sTextPrinters[i].callback != 0)
|
||||
sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, temp);
|
||||
if (sTextPrinters[i].callback != NULL)
|
||||
sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, renderCmd);
|
||||
break;
|
||||
case RENDER_FINISH:
|
||||
sTextPrinters[i].active = FALSE;
|
||||
@@ -652,7 +652,7 @@ void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
|
||||
struct Window *window;
|
||||
struct Bitmap pixels_data;
|
||||
struct TextGlyph *glyph;
|
||||
u8* glyphHeight;
|
||||
u8 *glyphHeight;
|
||||
|
||||
if (sLastTextBgColor != TEXT_COLOR_TRANSPARENT)
|
||||
{
|
||||
@@ -1684,7 +1684,7 @@ u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension)
|
||||
|
||||
static void DecompressGlyph_Small(u16 glyphId, bool32 isJapanese)
|
||||
{
|
||||
const u16* glyphs;
|
||||
const u16 *glyphs;
|
||||
|
||||
if (isJapanese == 1)
|
||||
{
|
||||
@@ -1726,7 +1726,7 @@ static u32 GetGlyphWidth_Small(u16 glyphId, bool32 isJapanese)
|
||||
|
||||
static void DecompressGlyph_Narrow(u16 glyphId, bool32 isJapanese)
|
||||
{
|
||||
const u16* glyphs;
|
||||
const u16 *glyphs;
|
||||
|
||||
if (isJapanese == TRUE)
|
||||
{
|
||||
@@ -1768,7 +1768,7 @@ static u32 GetGlyphWidth_Narrow(u16 glyphId, bool32 isJapanese)
|
||||
|
||||
static void DecompressGlyph_SmallNarrow(u16 glyphId, bool32 isJapanese)
|
||||
{
|
||||
const u16* glyphs;
|
||||
const u16 *glyphs;
|
||||
|
||||
if (isJapanese == TRUE)
|
||||
{
|
||||
@@ -1810,7 +1810,7 @@ static u32 GetGlyphWidth_SmallNarrow(u16 glyphId, bool32 isJapanese)
|
||||
|
||||
static void DecompressGlyph_Short(u16 glyphId, bool32 isJapanese)
|
||||
{
|
||||
const u16* glyphs;
|
||||
const u16 *glyphs;
|
||||
|
||||
if (isJapanese == TRUE)
|
||||
{
|
||||
@@ -1854,7 +1854,7 @@ static u32 GetGlyphWidth_Short(u16 glyphId, bool32 isJapanese)
|
||||
|
||||
static void DecompressGlyph_Normal(u16 glyphId, bool32 isJapanese)
|
||||
{
|
||||
const u16* glyphs;
|
||||
const u16 *glyphs;
|
||||
|
||||
if (isJapanese == TRUE)
|
||||
{
|
||||
@@ -1896,7 +1896,7 @@ static u32 GetGlyphWidth_Normal(u16 glyphId, bool32 isJapanese)
|
||||
|
||||
static void DecompressGlyph_Bold(u16 glyphId)
|
||||
{
|
||||
const u16* glyphs;
|
||||
const u16 *glyphs;
|
||||
|
||||
glyphs = sFontBoldJapaneseGlyphs + (0x100 * (glyphId >> 4)) + (0x8 * (glyphId & 0xF));
|
||||
DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop);
|
||||
|
||||
@@ -65,7 +65,7 @@ struct TextPrinterSubStruct
|
||||
|
||||
struct TextPrinterTemplate
|
||||
{
|
||||
const u8* currentChar;
|
||||
const u8 *currentChar;
|
||||
u8 windowId;
|
||||
u8 fontId;
|
||||
u8 x;
|
||||
@@ -148,7 +148,6 @@ void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor);
|
||||
void DecompressGlyphTile(const void *src_, void *dest_);
|
||||
void CopyGlyphToWindow(struct TextPrinter *x);
|
||||
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width);
|
||||
u8 GetMenuCursorDimensionByFont(u8, u8);
|
||||
|
||||
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
|
||||
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);
|
||||
|
||||
@@ -35,7 +35,7 @@ bool16 InitWindows(const struct WindowTemplate *templates)
|
||||
int j;
|
||||
u8 bgLayer;
|
||||
u16 attrib;
|
||||
u8* allocatedTilemapBuffer;
|
||||
u8 *allocatedTilemapBuffer;
|
||||
int allocatedBaseBlock;
|
||||
|
||||
for (i = 0; i < NUM_BACKGROUNDS; ++i)
|
||||
@@ -405,7 +405,7 @@ void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u
|
||||
struct Bitmap sourceRect;
|
||||
struct Bitmap destRect;
|
||||
|
||||
sourceRect.pixels = (u8*)pixels;
|
||||
sourceRect.pixels = (u8 *)pixels;
|
||||
sourceRect.width = srcWidth;
|
||||
sourceRect.height = srcHeight;
|
||||
|
||||
@@ -421,7 +421,7 @@ static void BlitBitmapRectToWindowWithColorKey(u8 windowId, const u8 *pixels, u1
|
||||
struct Bitmap sourceRect;
|
||||
struct Bitmap destRect;
|
||||
|
||||
sourceRect.pixels = (u8*)pixels;
|
||||
sourceRect.pixels = (u8 *)pixels;
|
||||
sourceRect.width = srcWidth;
|
||||
sourceRect.height = srcHeight;
|
||||
|
||||
@@ -463,9 +463,9 @@ void FillWindowPixelBuffer(u8 windowId, u8 fillValue)
|
||||
destOffset = i + (a); \
|
||||
srcOffset = i + (((width * (distanceLoop & ~7)) | (distanceLoop & 7)) * 4); \
|
||||
if (srcOffset < size) \
|
||||
*(u32*)(tileData + destOffset) = *(u32*)(tileData + srcOffset); \
|
||||
*(u32 *)(tileData + destOffset) = *(u32 *)(tileData + srcOffset); \
|
||||
else \
|
||||
*(u32*)(tileData + destOffset) = fillValue32; \
|
||||
*(u32 *)(tileData + destOffset) = fillValue32; \
|
||||
distanceLoop++; \
|
||||
}
|
||||
|
||||
@@ -474,9 +474,9 @@ void FillWindowPixelBuffer(u8 windowId, u8 fillValue)
|
||||
destOffset = i + (a); \
|
||||
srcOffset = i + (((width * (distanceLoop & ~7)) | (distanceLoop & 7)) * 4); \
|
||||
if (srcOffset < size) \
|
||||
*(u32*)(tileData - destOffset) = *(u32*)(tileData - srcOffset); \
|
||||
*(u32 *)(tileData - destOffset) = *(u32 *)(tileData - srcOffset); \
|
||||
else \
|
||||
*(u32*)(tileData - destOffset) = fillValue32; \
|
||||
*(u32 *)(tileData - destOffset) = fillValue32; \
|
||||
distanceLoop++; \
|
||||
}
|
||||
|
||||
@@ -550,7 +550,7 @@ bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value)
|
||||
gWindows[windowId].window.baseBlock = value;
|
||||
return FALSE;
|
||||
case WINDOW_TILE_DATA:
|
||||
gWindows[windowId].tileData = (u8*)(value);
|
||||
gWindows[windowId].tileData = (u8 *)(value);
|
||||
return TRUE;
|
||||
case WINDOW_BG:
|
||||
case WINDOW_WIDTH:
|
||||
@@ -605,7 +605,7 @@ static void DummyWindowBgTilemap8Bit(void)
|
||||
u16 AddWindow8Bit(const struct WindowTemplate *template)
|
||||
{
|
||||
u16 windowId;
|
||||
u8* memAddress;
|
||||
u8 *memAddress;
|
||||
u8 bgLayer;
|
||||
|
||||
for (windowId = 0; windowId < WINDOWS_MAX; windowId++)
|
||||
@@ -675,7 +675,7 @@ void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u
|
||||
struct Bitmap sourceRect;
|
||||
struct Bitmap destRect;
|
||||
|
||||
sourceRect.pixels = (u8*) pixels;
|
||||
sourceRect.pixels = (u8 *) pixels;
|
||||
sourceRect.width = srcWidth;
|
||||
sourceRect.height = srcHeight;
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u
|
||||
void CopyWindowToVram8Bit(u8 windowId, u8 mode);
|
||||
|
||||
extern struct Window gWindows[];
|
||||
extern void* gWindowBgTilemapBuffers[];
|
||||
extern void *gWindowBgTilemapBuffers[];
|
||||
extern u32 gUnusedWindowVar1;
|
||||
extern u32 gUnusedWindowVar2;
|
||||
extern u32 gUnusedWindowVar3;
|
||||
|
||||
|
Before Width: | Height: | Size: 277 B After Width: | Height: | Size: 277 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 420 B After Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 419 B After Width: | Height: | Size: 305 B |
|
Before Width: | Height: | Size: 509 B After Width: | Height: | Size: 394 B |
|
Before Width: | Height: | Size: 408 B After Width: | Height: | Size: 293 B |
|
Before Width: | Height: | Size: 394 B After Width: | Height: | Size: 279 B |
|
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 347 B |
|
Before Width: | Height: | Size: 486 B After Width: | Height: | Size: 374 B |
|
Before Width: | Height: | Size: 366 B After Width: | Height: | Size: 251 B |
|
Before Width: | Height: | Size: 421 B After Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 390 B After Width: | Height: | Size: 277 B |
|
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 319 B |
|
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 429 B |
|
Before Width: | Height: | Size: 504 B After Width: | Height: | Size: 389 B |
|
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 352 B |
|
Before Width: | Height: | Size: 404 B |
|
Before Width: | Height: | Size: 398 B After Width: | Height: | Size: 283 B |
|
Before Width: | Height: | Size: 554 B After Width: | Height: | Size: 413 B |
|
Before Width: | Height: | Size: 458 B After Width: | Height: | Size: 343 B |
|
Before Width: | Height: | Size: 402 B After Width: | Height: | Size: 287 B |
|
Before Width: | Height: | Size: 368 B After Width: | Height: | Size: 253 B |
|
Before Width: | Height: | Size: 452 B After Width: | Height: | Size: 337 B |
|
Before Width: | Height: | Size: 441 B After Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 425 B After Width: | Height: | Size: 310 B |
|
Before Width: | Height: | Size: 404 B After Width: | Height: | Size: 289 B |
|
Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 430 B After Width: | Height: | Size: 315 B |
|
Before Width: | Height: | Size: 401 B After Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 509 B After Width: | Height: | Size: 394 B |
|
Before Width: | Height: | Size: 452 B After Width: | Height: | Size: 337 B |