Merge branch 'master' into rme-update
86
INSTALL.md
@ -125,12 +125,12 @@ Otherwise, ask for help on Discord or IRC (see [README.md](README.md)), or conti
|
||||
|
||||
Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
|
||||
|
||||
1. Open msys2 at C:\devkitPro\msys2\msys2_shell.bat.
|
||||
1. Open msys2 at C:\devkitPro\msys2\mingw64.exe or run `C:\devkitPro\msys2\msys2_shell.bat -mingw64`.
|
||||
|
||||
2. Certain packages are required to build pokeemerald. Install these by running the following command:
|
||||
|
||||
```bash
|
||||
pacman -S make gcc zlib-devel git
|
||||
pacman -S make zlib-devel git mingw-w64-x86_64-gcc mingw-w64-x86_64-libpng
|
||||
```
|
||||
<details>
|
||||
<summary><i>Note...</i></summary>
|
||||
@ -138,39 +138,6 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
|
||||
> This command will ask for confirmation, just enter the yes action when prompted.
|
||||
</details>
|
||||
|
||||
3. Download [libpng](https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/libpng-1.6.37.tar.xz/download).
|
||||
|
||||
4. Change directory to where libpng was downloaded. By default, msys2 will start in the current user's profile folder, located at **C:\Users\\⁠_\<user>_**, where *\<user>* is your Windows username. In most cases, libpng should be saved within a subfolder of the profile folder. For example, if libpng was saved to **C:\Users\\_\<user>_\Downloads** (the Downloads location for most users), enter this command:
|
||||
|
||||
```bash
|
||||
cd Downloads
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary><i>Notes...</i></summary>
|
||||
|
||||
> Note 1: While not shown, msys uses forward slashes `/` instead of backwards slashes `\` as the directory separator.
|
||||
> Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "Downloads/My Downloads"`.
|
||||
> Note 3: Windows path names are case-insensitive so adhering to capitalization isn’t needed.
|
||||
> Note 4: If libpng was saved elsewhere, you will need to specify the full path to where libpng was downloaded, e.g. `cd c:/devkitpro/msys2` if it was saved there.
|
||||
</details>
|
||||
|
||||
5. Run the following commands to uncompress and install libpng.
|
||||
|
||||
```bash
|
||||
tar xf libpng-1.6.37.tar.xz
|
||||
cd libpng-1.6.37
|
||||
./configure --prefix=/usr
|
||||
make check
|
||||
make install
|
||||
```
|
||||
|
||||
6. Then finally, run the following command to change back to the user profile folder.
|
||||
|
||||
```bash
|
||||
cd
|
||||
```
|
||||
|
||||
### Choosing where to store pokeemerald (msys2)
|
||||
At this point, you can choose a folder to store pokeemerald into. If you're okay with storing pokeemerald in the user profile folder, then proceed to [Installation](#installation). Otherwise, you'll need to account for where pokeemerald is stored when changing directory to the pokeemerald folder.
|
||||
|
||||
@ -338,6 +305,20 @@ Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to
|
||||
> 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 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!)_
|
||||
@ -470,13 +451,6 @@ 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
|
||||
|
||||
To build **pokeemerald.elf** with enhanced debug info:
|
||||
```bash
|
||||
make DINFO=1
|
||||
```
|
||||
|
||||
## devkitARM's C compiler
|
||||
|
||||
This project supports the `arm-none-eabi-gcc` compiler included with devkitARM. If devkitARM (a.k.a. gba-dev) has already been installed as part of the platform-specific instructions, simply run:
|
||||
@ -553,7 +527,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
|
||||
@ -565,6 +557,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
|
||||
|
2
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))"
|
||||
|
@ -828,10 +828,10 @@
|
||||
.endm
|
||||
|
||||
@ Sets the movement type (MOVEMENT_TYPE_*) for an object's template.
|
||||
.macro setobjectmovementtype word:req, byte:req
|
||||
.macro setobjectmovementtype localId:req, movementType:req
|
||||
.byte 0x65
|
||||
.2byte \word
|
||||
.byte \byte
|
||||
.2byte \localId
|
||||
.byte \movementType
|
||||
.endm
|
||||
|
||||
@ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the
|
||||
@ -1451,48 +1451,48 @@
|
||||
.endm
|
||||
|
||||
@ Equivalent to goto using the relative address set by setvaddress.
|
||||
.macro vgoto pointer:req
|
||||
.macro vgoto destination:req
|
||||
.byte 0xb9
|
||||
.4byte \pointer
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
@ Equivalent to call using the relative address set by setvaddress.
|
||||
.macro vcall pointer:req
|
||||
.macro vcall destination:req
|
||||
.byte 0xba
|
||||
.4byte \pointer
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
@ Equivalent to goto_if using the relative address set by setvaddress.
|
||||
.macro vgoto_if byte:req, pointer:req
|
||||
.macro vgoto_if condition:req, destination:req
|
||||
.byte 0xbb
|
||||
.byte \byte
|
||||
.4byte \pointer
|
||||
.byte \condition
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
@ Equivalent to call_if using the relative address set by setvaddress.
|
||||
.macro vcall_if byte:req, pointer:req
|
||||
.macro vcall_if condition:req, destination:req
|
||||
.byte 0xbc
|
||||
.byte \byte
|
||||
.4byte \pointer
|
||||
.byte \condition
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
@ Equivalent to message using the relative address set by setvaddress.
|
||||
.macro vmessage pointer:req
|
||||
.macro vmessage text:req
|
||||
.byte 0xbd
|
||||
.4byte \pointer
|
||||
.4byte \text
|
||||
.endm
|
||||
|
||||
@ Expands the given text at the pointer (- the relative address set by setvaddress) into gStringVar4
|
||||
.macro vbuffermessage ptr:req
|
||||
.macro vbuffermessage text:req
|
||||
.byte 0xbe
|
||||
.4byte \ptr
|
||||
.4byte \text
|
||||
.endm
|
||||
|
||||
@ Equivalent to bufferstring using the relative address set by setvaddress.
|
||||
.macro vbufferstring stringVarIndex:req, pointer:req
|
||||
.macro vbufferstring stringVarIndex:req, text:req
|
||||
.byte 0xbf
|
||||
stringvar \stringVarIndex
|
||||
.4byte \pointer
|
||||
.4byte \text
|
||||
.endm
|
||||
|
||||
@ Create a window showing how many Coins the player has.
|
||||
@ -1549,9 +1549,9 @@
|
||||
.endm
|
||||
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro loadhelp pointer:req
|
||||
.macro loadhelp text:req
|
||||
.byte 0xc8
|
||||
.4byte \pointer
|
||||
.4byte \text
|
||||
.endm
|
||||
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -243,7 +243,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_PC::
|
||||
end
|
||||
|
||||
LittlerootTown_BrendansHouse_2F_EventScript_CheckPlayersPC::
|
||||
setvar VAR_0x8004, 1
|
||||
setvar VAR_0x8004, PC_LOCATION_BRENDANS_HOUSE
|
||||
special DoPCTurnOnEffect
|
||||
playse SE_PC_ON
|
||||
msgbox gText_PlayerHouseBootPC, MSGBOX_DEFAULT
|
||||
@ -253,7 +253,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_CheckPlayersPC::
|
||||
end
|
||||
|
||||
LittlerootTown_BrendansHouse_2F_EventScript_TurnOffPlayerPC::
|
||||
setvar VAR_0x8004, 1
|
||||
setvar VAR_0x8004, PC_LOCATION_BRENDANS_HOUSE
|
||||
playse SE_PC_OFF
|
||||
special DoPCTurnOffEffect
|
||||
releaseall
|
||||
|
@ -294,7 +294,7 @@ LittlerootTown_MaysHouse_2F_EventScript_CheckRivalsPC::
|
||||
end
|
||||
|
||||
LittlerootTown_MaysHouse_2F_EventScript_CheckPlayersPC::
|
||||
setvar VAR_0x8004, 2
|
||||
setvar VAR_0x8004, PC_LOCATION_MAYS_HOUSE
|
||||
special DoPCTurnOnEffect
|
||||
playse SE_PC_ON
|
||||
msgbox gText_PlayerHouseBootPC, MSGBOX_DEFAULT
|
||||
@ -304,7 +304,7 @@ LittlerootTown_MaysHouse_2F_EventScript_CheckPlayersPC::
|
||||
end
|
||||
|
||||
LittlerootTown_MaysHouse_2F_EventScript_TurnOffPlayerPC::
|
||||
setvar VAR_0x8004, 2
|
||||
setvar VAR_0x8004, PC_LOCATION_MAYS_HOUSE
|
||||
playse SE_PC_OFF
|
||||
special DoPCTurnOffEffect
|
||||
releaseall
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -1,6 +1,6 @@
|
||||
EventScript_PC::
|
||||
lockall
|
||||
setvar VAR_0x8004, 0
|
||||
setvar VAR_0x8004, PC_LOCATION_OTHER
|
||||
special DoPCTurnOnEffect
|
||||
playse SE_PC_ON
|
||||
msgbox Text_BootUpPC, MSGBOX_DEFAULT
|
||||
@ -51,7 +51,7 @@ EventScript_AccessLanettesPC::
|
||||
return
|
||||
|
||||
EventScript_TurnOffPC::
|
||||
setvar VAR_0x8004, 0
|
||||
setvar VAR_0x8004, PC_LOCATION_OTHER
|
||||
playse SE_PC_OFF
|
||||
special DoPCTurnOffEffect
|
||||
releaseall
|
||||
|
@ -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
|
||||
|
||||
|
@ -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}.”$"
|
||||
|
||||
|
@ -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,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)
|
||||
...
|
||||
```
|
@ -76,7 +76,7 @@ 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);
|
||||
|
@ -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 *);
|
||||
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
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 |
BIN
graphics/door_anims/petalburg_gym.png
Normal file
After Width: | Height: | Size: 289 B |
Before Width: | Height: | Size: 419 B After Width: | Height: | Size: 304 B |
Before Width: | Height: | Size: 445 B After Width: | Height: | Size: 332 B |
Before Width: | Height: | Size: 440 B After Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 440 B After Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 458 B After Width: | Height: | Size: 343 B |
Before Width: | Height: | Size: 435 B After Width: | Height: | Size: 322 B |
Before Width: | Height: | Size: 435 B After Width: | Height: | Size: 322 B |
Before Width: | Height: | Size: 348 B After Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 394 B After Width: | Height: | Size: 394 B |
Before Width: | Height: | Size: 567 B After Width: | Height: | Size: 567 B |
Before Width: | Height: | Size: 469 B After Width: | Height: | Size: 469 B |
Before Width: | Height: | Size: 189 B After Width: | Height: | Size: 189 B |
BIN
graphics/trainer_hill/maps_expert/floor_0/collision.bin
Executable file
1
graphics/trainer_hill/maps_expert/floor_0/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9989:;;;1;;;;;,99:;;;;;1;;;;isMMMMŃMMMMis@;UUUUŃUUUU1AiAĹŮŮŮšŮŮŮĆAsi;ÔŰ›sss›ŰĚ1si;Í›ssDss›Ő1si;ÔŰ›sss›ŰĚ1siAŃŰŰŰ›ŰŰŰŰAs@;ÇÇŰŰŰÇÇ1Ai;MMggŰŰŰggMM1si;UU××ŃŰŰ××UU1si;9999:;;9999:sissssssssssssss
|
BIN
graphics/trainer_hill/maps_expert/floor_1/collision.bin
Executable file
1
graphics/trainer_hill/maps_expert/floor_1/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9989:;;;‘FFFFFFFFFFFFFx‘F›|›››}›|›{›z›‘F}FFFFFFFFFFFF‘F›~›››}›~›ł›››‘FFFFFFFFFFFFF›‘F›}›|›{›z›|›››‘F›FFFFFFFFFFFF‘F›|›}›~›››}›~›‘FFFFFFFFFFFFFł‘Ö–››–ÖŰÖ–››–Ö›Ö–››–ÖŰŰŰÖ–››–Ö–››–ÖŰŰŰŰŰÖ–››–Ö–››–ÖŰŰŰÖ–››–Ö‘Ö–››–ÖŰÖ–››–Ö›
|
1
graphics/trainer_hill/maps_expert/floor_2/collision.bin
Executable file
@ -0,0 +1 @@
|
||||
<EFBFBD>áñù>ù>}~=x½=x}~y>ù>ñá
|
1
graphics/trainer_hill/maps_expert/floor_2/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
ムロロロルル<15>圀屁ムロロロユユテ<EFBE95>歯屁屁ムロロユヒヒヒ絜給副屁ムロユヒヒヒヒ絜給虚屁ムロヒヒヒヒヒ絜給給屁ムユヒヒヒヒヒ綷給給副ムヒヒヒヒフフ驎結給魚ムフフフフ顥顥絜給魚ムユユユユ隯隯絜給魚ムヒヒヒヒ<EFBE8B>驎<EFBFBD>給魚ムフヒヒヒヒヒ驎給給憲ムロヒヒヒヒヒ顥給給屁ムロフヒヒヒヒ絜給旧屁ムロロフヒヒヒ絜給憲屁ムロロロフフヒ綷血屁屁ムロロロロロフ蕙屁屁屁
|
BIN
graphics/trainer_hill/maps_expert/floor_3/collision.bin
Executable file
1
graphics/trainer_hill/maps_expert/floor_3/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9999:;;;<08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD>FF<46>FF<46><46><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD>F66<36>66F<36><46><EFBFBD><EFBFBD><08><><EFBFBD>F<EFBFBD>FF<46>FF<46>F<EFBFBD><46><EFBFBD><08><>F6F<36><46><EFBFBD>ۛF6F<36><46><08><>F6<46><36><EFBFBD><EFBFBD><EFBFBD>ۛ6F<36><46><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֖<EFBFBD><D696>ۛ<EFBFBD><DB9B><EFBFBD><08><>F6<46><36><EFBFBD><EFBFBD><EFBFBD>ۛ6F<36><46><08><>F6F<36><46><EFBFBD>ۛF6F<36><46><08><><EFBFBD>F<EFBFBD>FF<46>FF<46>F<EFBFBD><46><EFBFBD><08><><EFBFBD><EFBFBD>F66<36>66F<36><46><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD>FF<46>FF<46><46><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
1
graphics/trainer_hill/maps_jp/floor_0/collision.bin
Executable file
@ -0,0 +1 @@
|
||||
<EFBFBD>ÁoAcA`ADAUAUÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
|
1
graphics/trainer_hill/maps_jp/floor_0/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
155;&&%9:;;;1++;44++43????;1++;;;44;3???;;1++55555;3???;?1+444+44;,???;;1+;5;+;5;5;???;1+;+;+;+;+;???;14;+;4;+5+;;?;;1;;4;;;444?;;;?
|
BIN
graphics/trainer_hill/maps_jp/floor_1/collision.bin
Executable file
1
graphics/trainer_hill/maps_jp/floor_1/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;5;9&%9:;5;1;+;;+++++;;;+;1;+;;+++++>>;+;1;+;;+++++;;;+;?;+;;+++++;>>+;1;+;;++,++;;;+;1?+;;,,;,,>>;+;1;+5555;55555+;?;,,,,,;,,,,,,;1;??;55;55555551???;++5+++++++1??;;++++++++++1;;;?,,,,,,,,,,
|
1
graphics/trainer_hill/maps_normal/floor_0/collision.bin
Executable file
@ -0,0 +1 @@
|
||||
<EFBFBD>ĺ?í˝%„˝ß!~A } ÷Aůy˙˙
|
1
graphics/trainer_hill/maps_normal/floor_0/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;55&&%&:;5;1;,,,+$$$$,;;,;-;;;;+;;;;5;55;3;2!0+;2!0+;,+;35;;;,5;;;+;;+;4,;2!0+20;+20,;15;;5;,;;5,;;551,20+205;+2!0,,15;;+;;+;,;5;;;1,20+20+;20+20;1555+;;+;;5+;551+,,,20+20,,;,,1+;;5;;+;;5;;;;1,20+;;,20,20;51;;;,;;;;;;;;;,
|
1
graphics/trainer_hill/maps_normal/floor_1/collision.bin
Executable file
@ -0,0 +1 @@
|
||||
<EFBFBD><03>s@@<40>Q<EFBFBD>S<EFBFBD>Q<EFBFBD>Q<EFBFBD>Q<EFBFBD>Q<EFBFBD>QPP<10><>
|
1
graphics/trainer_hill/maps_normal/floor_1/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
ムユユユルルナニホユロユムヒトトロロトトトフフフヒロヒムヒロロロロロロロヒロヒムヒロユユユユユ゚ヒロヒムヒロヒヒヒトトロヒロヒムヒロヒロロトヒピユユヒロヒムヒロヒロロロヒヒロトトヒロヒムヒロヒロロロヒヒユユ゚ヒロヒムヒロヒロロロヒヒトトロヒロヒムヒロヒロロロヒピユユヒロヒムヒロヒロロロトトロトトトロヒムヒロヒ屁屁屁ロユユユヒムトロヒロロロロロ巒ヒヒヒヒムロロヒロロロロロ巒ヒヒヒヒムロロトロロロロロ巒トトトト
|
BIN
graphics/trainer_hill/maps_normal/floor_2/collision.bin
Executable file
1
graphics/trainer_hill/maps_normal/floor_2/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1555&&8&.55;icddddqqqrdddcsicssssssssssscsicssssssssssscsicCA@ABAAJBAAcsicsssssssdssscsicACKCCABB@A@csicssdsssssssscsicA@BBAABJBABcsicsssssssdssscsicABACKAAA@CAcsicssssdsssssscsicA@CABBAJBABcsidsssssssdsssdsiCCABBACAA@BABsiBsssssssssssBs
|
BIN
graphics/trainer_hill/maps_normal/floor_3/collision.bin
Executable file
1
graphics/trainer_hill/maps_normal/floor_3/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9&%9:;;;+$$$+;;;;;3+;;;+55;553+;;;+,,;,,3+;;;+4,+;;;,,;;;;;;;3+;;;54+;;;+,;;++;;;+,,+;;;+;;3+;;;+;+;3+555+;,;4,,,,,
|
BIN
graphics/trainer_hill/maps_unique/floor_0/collision.bin
Executable file
1
graphics/trainer_hill/maps_unique/floor_0/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۛ<EFBFBD><DB9B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BIN
graphics/trainer_hill/maps_unique/floor_1/collision.bin
Executable file
1
graphics/trainer_hill/maps_unique/floor_1/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9&%9:;;;-;;;5,#$#,5;;;;<08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BIN
graphics/trainer_hill/maps_unique/floor_2/collision.bin
Executable file
1
graphics/trainer_hill/maps_unique/floor_2/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9989:;;;iFFFFFFFFFFFF|FiFzsssysss}sssFiFsFFFFFFFFFFFFiFss{s|s{szsssFiFFFFFFFFFFFFzFiFsssss}|s|s{sFiFFFFFF|FFFFFFF詮屁妲;;;F屁屁F詮屁妲;;;F屁屁F詮屁妲;;;F屁屁F<08>FFFFFxFFFFFFF<08>驎驎驎z驎驎礰<08>FFFFFFFFFFFF<46>|硺硤硎﨤礼神礼
|
BIN
graphics/trainer_hill/maps_unique/floor_3/collision.bin
Executable file
1
graphics/trainer_hill/maps_unique/floor_3/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
ّ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>منَ<D986><D98E><EFBFBD>ٍ<><D98D><EFBFBD><EFBFBD><EFBFBD>ًٌٌٌٌٌٌ<D98C><D98C><08>ٌٌٌ<D98C><D98C><EFBFBD><EFBFBD><EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD>ّ<><D991><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD>ًًٌٌٌٌٌّ<D98C>ٌ<EFBFBD>ًٌٌٌٌّ<D991><D98B><EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ًّ<D991><D98B><EFBFBD>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD>ًّ<D991>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD>ًٌٌٌ<D98C><D98C>ًّ<D991>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD>ًّ<D991>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD>ًٌٌٌٌّ<D991>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD>ًّ<D991>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD>ٌّ<D991>ً<EFBFBD>ٌ<EFBFBD>ً<EFBFBD>ٌٌٌٌٌ<D98C>ّ<><D991>ً<EFBFBD><D98B><EFBFBD>ً<EFBFBD><D98B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ّ<><D991>ٌ<EFBFBD><D98C><EFBFBD>ٌ<EFBFBD><D98C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BIN
graphics/trainer_hill/maps_variety/floor_0/collision.bin
Executable file
1
graphics/trainer_hill/maps_variety/floor_0/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9989:;;;@AAAAABCCCCC@AA@ûCAAAB@CABBBûA@AûAAAB@CACCû@A@AAûCAB@CCCûA@A@AAABBB@CCCAA@A@AAAþþþûþþþAA@A@AAAþþþûþþþAA@A@ABAþûûûûûþAA@A@AAAþþþûþþþAA@A@AAAþþþûþþþAA@A@BACCCA@BBBBA@A@@AûAAAAAAAûA@A@@ûCCAAABBBBû@A@ûCCAACCCCCCCûA@BBBBBBBBBBBBBB
|
BIN
graphics/trainer_hill/maps_variety/floor_1/collision.bin
Executable file
1
graphics/trainer_hill/maps_variety/floor_1/metatiles.bin
Executable file
@ -0,0 +1 @@
|
||||
1;;;9989:;;;<08><><EFBFBD><EFBFBD>@@<40><><EFBFBD>@@<40><><EFBFBD><EFBFBD><08><><EFBFBD>@<40><>@<40>@<40><>B<EFBFBD><42><EFBFBD><08><>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><42><08>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><08>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><08>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><08>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><08>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><08><>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><42><08><><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><08><><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>֖<><D696><EFBFBD><EFBFBD>A<EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08>֖<EFBFBD><D696><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>֜
|